MacOS编译NGINX1.17

使用Mac的开发者大多数的时候通过 brew 命令安装各类软件,比如 PHP、Python、Nodejs,Nginx 也不例外。

默认情况下Nginx安装在/usr/local/Cellar/nginx,通过brew link nginx加软连接到/usr/local/bin/nginx,虽然这样完全满足开发且符合 Mac 软件的管理,但是却不方便移植(比如想给不懂开发的用户一键部署部署的应用包,做私有化部署的同学应该对此不陌生)。

从源码编译 NGINX 程序比安装预编译的安装包要灵活很多,可以添加特定的模块(来自NGINX官方或者第三方的,比如给 Fastdfs 提供 HTTP 访问文件能力的 fastdfs-nginx 模块),当然自己编译源码拉取的可以是已修复 bug 和新增特性的最新分支。

继续阅读

JAVA中BIO、NIO、AIO的分析理解

本文分析阻塞、非阻塞、同步和异步概念上的区别以及各种IO模型的操作流程,同时分析BIO、 NIO、 AIO的通信机制,并通过demo深入比较三种IO的优缺点。

输入输出(IO)是指计算机同任何外部设备之间的数据传递。常见的输入输出设备有文件、键盘、打印机、屏幕等。数据可以按记录(或称数据块)的方式传递,也可以 流的方式传递 。

所谓记录,是指有着内部结构的数据块。记录内部除了有需要处理的实际数据之外,还可能包含附加信息,这些附加信息通常是对本记录数据的描述。

继续阅读

分布式FastDFS集群部署

FastDFS是一个轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

继续阅读

浅谈分布式锁

随着架构系统的演进,由纯真的单机架构到容器化编排的分布式架构,可以说是一个大型互联网企业发展的必然走向。在网站初创时,应用数量和用户较少,可以把Tomcat和Mysql部署在同一台机器上。随着用户数量增多,访问量增大,并发升高,Tomcat和MySQL竞争资源,此时,单机已经扛不住了,需要把Tomcat和MySQL分离在不同的机器上,用于提升单台机器的处理能力。业务从来没有减少,产品越做越大。应用也越来越复杂,原来的大应用,拆分成多个小应用,加入各级缓存,做了反向代理负责均衡,最后坠入分库分表的深渊。

继续阅读

git未跟踪文件通过合并覆盖错误的解决方法

在开发标注平台系统的时候,项目原同事将dubbo的注册缓存通过配置项的方式将其放在项目根目录,在 IDEA 中运行项目,每次都会生成该文件,导致项目目录有点乱,于是将其改变,放在当前用户目录的.dubbo-registry目录,且隐藏起来,减少人为操作引起的 RPC 调用问题。

经过这么已改造,保存项目并提交到 git 仓库,其他同事拉取项目之后,提交时出现如下错误:

error: The following untracked working tree files would be overwritten by merge:
~/.dubbo-registry/data-web-registry.properties
~/.dubbo-registry/data-web-registry.properties.lock
Please move or remove them before you merge.
Aborting

继续阅读