超凡魔力

君子善思,善假于物,而不物于物。

0%

大量数据存存在对比bitmap

这样的一个场景,数据库中大概有40万条记录,而csv文件中,大概相当于mysql中的数据+部分新增的数据。对于csv中的新记录(mysql没有的)要插入到mysql表中,如果存在,则忽略。在思考这样的脚本,崩溃的原因,执行时间长。在解决方式上:1、重复的数据让mysql来计算,使用insert ignore into,但是考虑到提交不宜过多,采用分批。(实际效果: 非常快,在数据库空的时候,12S,不为空的时候(就是重复数据不添加)的时候,只需要2S )2、在php层面上解决,一次从数据库中获取到所有主键,每次读取一行,判断是不是在数据中,如果在,忽略,最后将新增部分,分批插入。但是计算量都卡在存不存在。

关于存不存在,这个有两种算法可以优化,一个是bitmap,但是需要考虑到bit位存储的大小端问题。另外一种是布隆过滤。当然,40万没有大到那么大,所以也不一定要这样优化。

为啥40万的大数组,判断一个组件这么慢?底层是因为,数据存储的不连续?

阅读全文 »

nginx_host作用

nginx在做代理时,设置请求头的Host的作用是啥?进行探究。

重要:nginx作为反向代理时,比如转发给apache,如果没有指定Host的请求头,后端的apache工作可能不正常。具体表现在:登录时,在跳转时,可能因为缺少端口,而跳转后没有端口信息了。所以,需要添加Host请求头信息。 后端的apache在层层代理下,可能不清楚最外层的端口。

另外,在单点登录时,有个应用也是未正确设置Host时,导致登录成功后,跳转地址不正确。

阅读全文 »

分卷压缩split

利用管道符号,将压缩的数据传递给 split。或者cat 的数据传递给tar。由于输入输出之间,存在文件名,使用 - 符号来代理空缺的位置。

# 分隔
split -b 80M demo.tar.gz demo.tar.gz.
# 合并
cat demo.tar.gz.* > demo.tgz
阅读全文 »

bashrc

~/.bashrc文件,保存用户启动时必备脚本。比如ln -s命令,环境变量等,都可以加在这个文件末尾。

阅读全文 »

几种写文件对比

减少io,来提高写入的速度。另外,像mysql这种,还利用了固定大小,进一步减少io时间。

阅读全文 »

alias

alias 使用的一些例子及技巧。

阅读全文 »