phpor

2月 202021
 

golang程序如果build时不是static的话,Linux上基本会依赖glibc的动态库的,通常也不是啥问题,但是,如果你期望一个更高版本的glibc,但是目标机器上没有,就尴尬了,这时候,其实可以编译成一个静态链接的二进制程序的,这时候需要的就是编译环境上有glibc-static,centos上的安装方法为:

 

那么,静态链接和动态链接后的目标文件差别会非常大吗?

  1. 从目标文件大小上来看,应该会大一些,但是并不大的离谱:
  2. 或许这个差值基本比较固定,你的程序越大,这个差值的占比就越小;但是,和你使用到的glibc中的代码的多少有关系
  3. 从执行的角度来看,动态链接是会启动更快一些,也比较节省内存,因为底层的动态库在内存中只需要加载一次;但是,如果我们的程序是跑在容器中的,而且,通常容器中只有一个进程,那么,扩容器共享底层动态库的可能性就很小,因为它能不是同一个文件(或许有技术可以做到这一点)。
  4. 编译的时候,静态链接会比动态链接要慢一点点,应该差别也不会太明显
  5. 所以,过时的静态链接可能真的又可以回来了

 

静态链接只需要添加选项:

 Posted by at 下午 12:10
2月 092021
 

默认情况下:

使用的是普通代理,就是:

如果访问https地址,就是隧道代理:

如果要让http请求也是用隧道代理,则添加 -p 选项:

如果要让https请求使用普通代理呢?没有找到这个选项

 Posted by at 上午 10:37
2月 022021
 

c中就有typedef 就是定义一个类型别名。

typename是c++中的,只是名字上和typedef相似,有时候还挨着用,就会感觉显得啰嗦。

typename用来告诉编译器后面这个东西是个名字空间或类中定义的类型,而不是成员变量

参考:

 Posted by at 下午 12:08
1月 212021
 

上面的VIP专享栏,每一项都注明了VIP专享,从技术角度来看,这个属于重复的元素,很不简洁,多余的东西就得去掉;但是,从产品设计的角度来讲,重复是为了强调,就是要通过视觉来刺激你,买VIP吧,买VIP吧,买V….

 Posted by at 上午 2:02
1月 112021
 

 

脚本:

 

受jq的启发

这个parser很奇怪, 处理的是 value 嵌套value的情况,生产上有这种情况,但是很少见。

 Posted by at 上午 11:35
1月 062021
 

tcp的滑动窗口是用来流控的,但是,如果一方不遵守,会怎样呢?如下:

 

我们发现,虽然8085一直提示说win只有430,但是59822却完全无视,直接发送1448大小的数据; 8085也没有生气,也没有不ack,是不是很好玩。

好景不长,59822 觉得不好意思了,改发500大小的数据包了:

 

对于甲方来说,发送了一个小的win ,乙方未必按照小的win发送数据,只要甲方总能ack乙方发送的所有数据,乙方就可以总是发送一个很大的数据包;对于甲方来讲,其实可以通过不ack乙方,或者ack部分数据来制服乙方的。

 Posted by at 下午 4:15
12月 292020
 

自从雄飞提离职,我就开始了解lua版本的dmp,开始是性能优化,修补丢数据的情况,添加监控,分析指纹数据的流程,直到添加caid的支持。

最近这些事情不敢太随意,步步细心的去做,只是最近添加caid的事情,催的有些急,测试不到位,出了不少问题。

本来答应凯超那里做一些规则引擎的配置节目的事情,以及试金石的优化,都没时间做呢。

总结:

  • 程序总是要有bug的,写完就上线,一定就出错,欲速则不达。
  • 上完线不等于完事儿,必须多方面验证
  • 尤其对数据的写操作,要有如果写错了的预案
  • 有些时候,错误的认知会关上通往真理的大门,敢于否定自己,想办法来验证自己的想法,没有验证的结论就不一定对,就好比没有测试的程序就一定会出错一样
 Posted by at 下午 12:04
12月 212020
 

lua 的 require 会自动避免重复加载的,如:

hello.lua

要想重复加载也行:

由此也可以通过package.loaded 知道都load了哪些包了:

 Posted by at 下午 1:39