TypeCodes

Python自动析构时出现Exception AttributeError: 'NoneType' object has no attribute的问题

昨晚在整理自己的python脚本的时候,想把其中一个脚本中的print函数全都改成logging包中的相关函数。改完后一运行却出现了Exception AttributeError: 'NoneType' object has no attribute的错误,网上搜了一下没找到相关答案。上午再想了想,原因应该是跟python对象的析构有关,具体分析过程如下:

- 阅读剩余部分 -

awk中符点型小数去掉小数点转换成整数的方法

在写shell脚本时,会遇到要把一个符点数转换成整数的情况。之前线上一个shell脚本在用awk从文本中读取出一个带两位小数的符点数后,是直接把它乘以100转换成整数的。脚本一直运行正常,直到后面遇到了一个符点数19004.44,它在乘以100后得到的不是1900444而是科学记数1.90044e+06,导致导入数据库失败。后面测试发现符点数19004.42也存在同样的问题,如果下图所示:

awk中符点型小数去掉小数点转换成整数的方法

- 阅读剩余部分 -

MySQL5.7中使用GROUP_CONCAT数据被截断的问题

前天在生产环境中遇到一个问题:使用GROUP_CONCAT函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题。后面故意重新INSERT了一个字段长度超1024字节的数据,但是navicat能完整展示出来,所以就排除了navicat的问题。

然后想到1024这个熟悉的数字,会不会是C++框架在接收MySQL通过socket传输过来的数据时被处理了呢?于是手工在日志中打印这个字段,发现即使数据长度超过1024字节仍然是可以完整显示的。

- 阅读剩余部分 -

分布式系统:一致性hash算法的应用

前段时间在了解分布式,发现firefoxbug在博客中写的这篇《一致性hash在分布式系统中的应用》对这个问题说明得比较清晰易懂,本文主要是自己的理解和实践。

在后端一般会遇到这样的场景:随着应用系统的访问量或者DB/文件存储系统的数据量增大,系统由于负载增大而出现响应延迟甚至down掉的情况。为了解决这个问题,往往会对系统采用垂直扩展和水平扩展的架构设计,而分布式系统正是水平扩展架构的一种应用实践。

- 阅读剩余部分 -

使用shell脚本解决Navicat导出excel数据不全的问题

月末需要对系统注册用户进行报表统计,在使用Navicat从MySQL数据库中导出数据到excel文件时,发现最大只能导出为65536(美好的数字)行的数据。按理说 Navicat应该是从数据库中读取一条记录会立即写到excel文件中,不应该只读取65536范围内的数据然后一次性写到文件里面。

- 阅读剩余部分 -

修复CentOS7升级Python到3.6版本后yum不能使用的问题(续)

上一篇文章中通过重装yum解决了无法使用Python3解释执行的问题,但是yum -y update后又会使得之前设置的软链接(ln -s /usr/local/bin/python3.6 /usr/bin/python)被替换成python2.7。为了把Python3设置为默认py解释器的同时保证yum能正常使用,还得从yum相关脚本下手。

不难猜测这些脚本都是使用py2语法,如果能把它们声明的解释器改成python2,那么问题就迎刃而解了。搜索了一下,发现在/usr/bin/目录有7个yum相关的脚本,再加上前文提到的/usr/libexec/urlgrabber-ext-down共8个。

yum相关脚本

- 阅读剩余部分 -

修复CentOS7升级Python到3.6版本后yum不能使用的问题

之前把现有这台阿里CentOS7.2系统的Python2.7.5升级成Python3.6后,yum工具就不能使用了。当时网上查了下原因,都说是Python3导致的,但是试了很多种方法还是没解决,后面也就一直没管了。因为最近要弄一个Nodejs微信小程序,需要用yum安装一些开发工具,就不得不修复这个问题了。

CentOS7.2中Python3版本导致yum不能使用

- 阅读剩余部分 -

Linux C/C++多进程同时写一个文件(三)

本文是这《Linux C/C++多进程同时写一个文件》系列文章的第三篇,上一篇文章演示了两个亲缘关系的进程(父子进程)同时写一个文件的情形,并得出了数据只会错乱但不会覆盖的结论。这篇文章主要是在第一篇文章的基础上,加上上篇文章的分析,更深下一步地探索两个非亲缘关系的进程同时写一个文件的问题。

- 阅读剩余部分 -