07 Apr 2025
nginx
用docker
安装
nginx
服务安装,我是用docker
安装的,mac
系统编译nginx
源码安装有点问题。
docker pull nginx # 从docker仓库拉取nginx镜像
# nginx目录挂载参考此文章,https://blog.csdn.net/baidu_21349635/article/details/102738972
docker run --name nginx-0807 -v /Users/madong/software/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/madong/software/nginx/conf.d:/etc/nginx/conf.d \
-v /Users/madong/software/nginx/html:/usr/share/nginx/html \
-v /Users/madong/software/nginx/logs:/var/log/nginx -p 8080:80 -d nginx
# nginx服务验证,curl有返回html内容时,则表示nginx服务启动成功了; /etc/nginx存nginx配置、/usr/share/nginx存在html、/var/log/nginx/存放nginx的access_log
curl 'http://localhost:8080/'
nginx
也支持热更新,当修改nginx配置后,可使用nginx -s reload
使修改的配置生效,当access.log
文件特别大时,可使用nginx -s reopen
切割日志。
28 Mar 2025
Go语言GMP介绍
Go
语言相比Java
,有更好的并发能力(GMP
模型),同时其占用的服务器资源也较少,了解一下GMP
的理念。从操作系统层面来看,线程是指内核级线程,是操作系统最小调度单元,创建、销毁、调度交由内核完成,可充分利用多核。协程(用户线程)与线程存在M:1
的映射关系,从属于同一个内存级线程,无法并行,并且,一个协程阻塞会导致从属同一线程的所有协程无法执行。
Goroutine
经Golang
优化后的协程,其有如下特点:1)与线程存在映射关系,为M:N
;2)创建、销毁、调度在用户态完成,对内核透明,足够轻便;3)可利用多个线程,实现并行;4)通过调度器的斡旋,实现和线程间的动态绑定和灵活调度;5)栈空间大小可动态扩缩,因地制宜;
在/runtime/proc.go
的代码注释中,有对GMP
的解释,其核心数据结构在/runtime/runtime2.go
:
22 Mar 2025
golang sql标准库研究
抽象接口定义
database/sql/driver/driver.go
关于数据库驱动模块下各核心interface
主要包括:
Connector
: 抽象的数据库连接器,需要具备创建数据库连接以及返回从属的数据库驱动的能力;
Driver
: 抽象的数据库驱动,具备创建数据库连接的能力;
Conn
: 抽象的数据库连接,具备预处理sql
以及开启事务的能力;
Tx
: 抽象的事务,具备提交和回滚的能力;
Statement
: 抽象的请求预处理状态. 具备实际执行sql
并返回执行结果的能力;
Result/Row
: 抽象的sql
执行结果;
01 Nov 2022
在极客时间上学习elasticsearch
课程,主要关注点在query
的DSL
语句以及集群的管理,在本地基于es 7.1
来构建集群服务,启动脚本如下,同时在conf/elasticsearch.yml
中添加xpack.ml.enabled: false
、http.host: 0.0.0.0
的配置(禁用ml
及启用host
):
bash> bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -d
bash> bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -d
bash> bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data -d
bash> bin/elasticsearch -E node.name=node3 -E cluster.name=geektime -E path.data=node3_data -d
在docker
容器中启动cerebro
服务,用于监控elasticsearch
集群的状态,docker
启动命令如下:
bash> docker run -d --name cerebro -p 9100:9000 lmenezes/cerebro:latest
22 Jan 2022
在Hadoop
大数据平台及生态系统中,使用mapreduce
模型进行编程,对广大用户来说,仍然是具有挑战性的任务。人们希望使用熟悉的SQL
语言,对hadoop
平台上的数据进行分析处理,这就是SQL On Hadoop
系统诞的背景。
SQL on Hadoop
是一类系统的简称,这类系统利用Hadoop
实现大量数据的管理,具体是利用HDFS
实现高度可扩展的数据存储。在HDFS
之上,实现SQL
的查询引擎,使得用户可以使用SQL
语言,对存储在HDFS
上的数据进行分析。
Apache Hive
的产生
Hive
是基于Hadoop
的一个数仓工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的类SQL(HQL)
查询功能,可以将HQL
语句转换成为MapReduce
任务进行运行。使用类SQL
语句就可快速实现简单的MapReduce
统计,不必开发专门的MapReduce
应用。Apache Hive
是由Facebook
开发并开源,最后贡献给Apache
基金会。
Hive
系统整体3
个部分:用户接口、元数据存储、驱动器(Driver
)在Hadoop
上计算与存储。