参考:https://www.ctolib.com/greymd-tmux-xpanes.html
1 | brew install tmux-xpanes |
或者
1 | # Install `add-apt-repository` command, if necessary. |
使用
1 | xpanes -c "ssh {}" xxxx-{52..60} |
参考:https://www.ctolib.com/greymd-tmux-xpanes.html
1 | brew install tmux-xpanes |
或者
1 | # Install `add-apt-repository` command, if necessary. |
使用
1 | xpanes -c "ssh {}" xxxx-{52..60} |
项目中有一张表是记录人员,在每个新用户调用接口认证通过了之后,会有一个往该表插入这个新用户信息的操作。
但是在线上环境中,发现该表的自增id不连续,且间隔都是差了2,比如上一个人的id是10,下一个人的id就是12,而在前端页面中,一个用户认证通过后,会调用3个接口,初步排查是MySQL并发操作导致了自增id不连续的情况
在这篇文章中,列举了导致自增id不连续的几个原因,这次遇到的就是第一种情况,因为个人的信息中我设置了唯一索引,参考:MySQL实战45讲Day38—-自增主键不是连续的原因
<1>、唯一键冲突是导致自增主键id不连续的第一种原因
<2>、事务回滚是导致自增主键id不连续的第二种原因
<3>、批量申请自增id的策略是导致自增主键id不连续的第三种原因
在这篇文章中提到了MySQL默认的innodb_autoinc_lock_mode=1,当innodb_autoinc_lock_mode=1和innodb_autoinc_lock_mode=2的情况下,自增id可能会出现不连续
在innodb_autoinc_lock_mode=0的时候,自增id是连续的,但是会导致锁表,影响并发性能
1.git clone
1 | git clone git@github.com:DeemOpen/zkui.git |
2.打包
1 | mvn clean install |
3.复制config.cfg到target目录,并修改zk地址
4.配置 supervisor zkui.conf
1 | [program:zkui] |
5.启动zookeeper
6.启动zkui
hive是使用antlr来解析的
parser要做的事情,是从无结构的字符串里面,解码产生有结构的数据结构(a parser is a function accepting strings as input and returning some structure as output),参考 Parser_combinator wiki
parser分成两种,一种是parser combinator,一种是parser generator,区别可以参考 王垠的文章——对 Parser 的误解
1.parser combinator是需要手写parser,a parser combinator is a higher-order function that accepts several parsers as input and returns a new parser as its output,比如Thrift的Parser
1 | https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/main.cc |
2.parser generator是需要你用某种指定的描述语言来表示出语法,然后自动把他们转换成parser的代码,比如Antlr里面的g4语法文件,calcite的ftl语法文件,hue使用的jison以及flex和cup等,缺点是由于代码是生成的,排错比较困难
使用了Antlr的parser有Hive,Presto,Spark SQL
美团点评的文章
1 | https://tech.meituan.com/2014/02/12/hive-sql-to-mapreduce.html |
以及hive源码的测试用例
在索引模板里面,date类型的字段的format支持多种类型,在es中全部会转换成long类型进行存储,参考
1 | https://zhuanlan.zhihu.com/p/34240906 |
一个索引模板范例
1 | { |
参考
1 | https://github.com/NLPchina/elasticsearch-sql |
1.下载插件
1 | wget https://github.com/NLPchina/elasticsearch-sql/releases/download/6.2.1.0/elasticsearch-sql-6.2.1.0.zip |
2.安装
1 | ./bin/elasticsearch-plugin instal file:///home/lintong/下载/elasticsearch-sql-6.2.1.0.zip |
如果遇到 Exception in thread “main” java.lang.IllegalArgumentException: Unknown properties in plugin descriptor: [jvm, site]
解压zip文件,然后修改 plugin-descriptor.properties 文件
去掉下面两行后重新压缩成zip,然后再安装
1 | site= |
场景:两个用户同时读取了数据库中的一条记录,此时用户A对其中一个字段的值进行了修改操作并进行了提交,后来用户B也对这个字段进行了修改,用户B的提交将会覆盖用户A提交的值
每次去取数据,很悲观,都觉得会被别人修改,所以在拿数据的时候都会上锁。
简言之,共享资源每次都只给一个线程使用,其他线程阻塞,等第一个线程用完后再把资源转让给其他线程。
select … for update,synchronized和ReentranLock等都是悲观锁思想的体现。
每次去取数据,都很乐观,觉得不会被被人修改。
因此每次都不上锁,但是在更新的时候,就会看别人有没有在这期间去更新这个数据,如果有更新就重新获取,再进行判断,一直循环,直到拿到没有被修改过的数据。
CAS(Compare and Swap 比较并交换)就是乐观锁的一种实现方式,比如使用version字段或者修改时间字段来判断数据是否被修改,如果返回的受影响行数为 1,表示更新成功;如果返回的受影响行数为 0,表示更新失败(数据已被其他事务修改),可以选择重试或中断操作。
参考:
比如说我要将127.0.0.1/topics上的所有请求转发到xxx:xxx/上
修改 sudo vim /etc/nginx/nginx.conf
1 | server { |
正向代理:代理服务器位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。客户端需要配置代理服务器。
用途: 访问控制、内容过滤、匿名浏览、缓存。我们用来kexue上网的工具就属于正向代理。
反向代理:代理服务器位于客户端和目标服务器之间,代表服务器处理客户端请求。客户端不知道反向代理的存在。
用途: 负载均衡、安全防护、缓存、SSL加速。比如使用Nginx,HAProxy,Apache HTTP Server等作为反向代理。
透明代理和非透明代理都是正向代理,位于客户端和目标服务器之间,代理客户端向目标服务器发送请求。
透明代理:网络管理员在网络边界部署透明代理来过滤不良内容。用户浏览网站时,代理自动拦截和检查内容,而用户并不知道代理的存在。
非透明代理:用户配置浏览器使用非透明代理,以便匿名访问互联网。用户在浏览器中手动设置代理服务器地址和端口。
X-Forwarded-For通常用于标识通过 HTTP 代理或负载均衡器的原始客户端 IP 地址。X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。示例值: X-Forwarded-For: client1, proxy1, proxy2
**X-Real-IP **有些反向代理服务器(如 Nginx)会将原始客户端 IP 地址放在这个头字段中。X-Real-IP,这是一个自定义头部字段。X-Real-IP 通常被 HTTP 代理用来表示与它产生 TCP 连接的设备 IP,这个设备可能是其他代理,也可能是真正的请求端。需要注意的是,X-Real-IP 目前并不属于任何标准。示例值:X-Real-IP: 203.0.113.195
Remote Address 是指服务器端看到的客户端的IP地址,即发起请求的源 IP 地址。在网络通信中,remote address 通常用于识别和追踪请求的来源。在不同的代理和负载均衡场景中,remote address 的值可能会发生变化。
参考:聊聊HTTP的X-Forwarded-For 和 X-Real-IP
如果客户端直接访问服务器而没有经过任何代理或负载均衡器,remote address 将是客户端的 IP 地址。例如,如果客户端的 IP 地址是 203.0.113.195,服务器将看到:
1 | Remote Address: 203.0.113.195 |
当请求经过正向代理(包括透明代理和非透明代理)时,remote address 可能会有所不同:
经过非透明代理的请求:
1 | Remote Address: 198.51.100.1 (代理服务器 IP) |