Recent Posts
-
April 30, 2015
Android 的音量控制代码
本来希望能够控制 电话 铃声和 短信通知铃声,分开设置的。但看上去android的 api没有单独控制通知铃声大小的了。 stream_ring 和 stream_notification 是一样的。文档adjustStreamVolume的说明确实没有提到可以设置stream_notification 的。android studio 的apk编译, 需要通过 build -》 Generate Signed Apk 生成。先创建一个keystore 文件,随便填个ca机构就...
-
April 24, 2015
Postgresql性能和tps相关的几个知识
性能测试工具 可以执行指定的sql脚本文件,做压力测试,不过自己本身也有TPC-B 测试apt-get install postgresql-contrib-9.4pgbenchpgbench -i -U smsc smsc先要初始化一下,它建几个用于测试的表,不过如果运行自定义sql脚本文件应该是用不上的pgbench -r -c 16 -T 30 -U smsc -f ./insert.sql smsc 参考文档关于配置说明的部分,搞懂postgre...
-
August 04, 2014
Linux 内核的tcp连接状态分析(systemtap的tcp_trace.stp和call_granh.stp脚本
下载LOFTER我的照片书 |做一个网络断开导致tcp连接错误的测试,程序本来是想依赖keepalive来探测到tcp死链接,结果测试中发现的情况有3种:1.如果网络断开时,tcp连接双方没有数据通讯,那么等tcp keepalive时间到了之后,keepalive timer生效发送几次keepalive探测包之后对方没有回应,内核会关闭连接。这个keepalive超时的总时间除了keepalive相关的几个选项之后,用户设置的TCP_USER_TIMEOUT选项的超时时间也起作用。这...
-
July 28, 2014
Windows 7 createthread创建线程个数限制
程序采用CreateThread 函数创建线程http://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspxcreatethread函数失败,调用 GetLastError获取错误,是内存不足。根据msdn的说明,这个线程个数只受可用内存限制。还有系统默认stacksize的大小有关。系统默认的stacksize是1M,所以32位系统最多可以创建2G/1M = 2000个左右的线程。 这个默认...
-
June 17, 2014
Google又开源了一个数据序列化的库flatbuffers
说是比protocol buffer这些要快,关键一点就是数据赋值和读取就是编解码了,不需要额外的编解码步骤了。 看上去基本的数据类型和复合数据类型非常丰富(structs, tables, vectors,..) ,看上比protocol buffer要简单的样子,使用起来也会方便一些?之前转了好多篇 “数据序列化的”各种新的开源库了, thrift , protocol buffer,Simple Binary Encoding (SBE)。Simple Binary Encodi...
-
June 16, 2014
信号安全函数(signal safe function)和死锁问题
下载LOFTER我的照片书 |看到微博上有人说到在signal handler里面使用localtime函数导致死锁的问题。http://idning.github.io/twemproxy-deadlock-on-signal_handler.html文章里面有一个总结:Reentrant:不使用全局变量.不调用non-reentrant函数.Thread-safe:要求较低,可以访问全局变量,不过需要加锁每次调用它返回不同的结果也没关系Async-Signal-Safe:...
-
June 05, 2014
Tcp的死连接检测(dead peer),重传计时器,各种timeout超时选项(tcp_user_timeout),keepalive,heartbeart心跳机制等
下载LOFTER我的照片书 |1.tcp超时重传设置--------------------root@debian02:/opt# cat /proc/sys/net/ipv4/tcp_retriestcp_retries1 tcp_retries2root@debian02:/opt# cat /proc/sys/net/ipv4/tcp_retriestcp_retries1 tcp_retries2root@debian02:/opt# cat /proc/sys/...
-
June 01, 2014
Gcc的链接选项 Llibrary 执行链接库是有顺序的
下载LOFTER我的照片书 |编译程序时,发现一个奇怪的错误,明明有 -lz 指定了 zlib的链接库了。就是找不到zlib里面函数。原来是因为 *.o *.a写在 -lz的后面了。 这恶 -l选项指定库时是有顺序的。 只对它前面的那些 *.o文件起作用。参考https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html-llibrary-l librarySearch the library named library when...
-
May 28, 2014
Lua代码性能优化之追加元素到数组结尾的写法
http://lua-users.org/wiki/OptimisationCodingTipsLua Performance Tipshttp://www.lua.org/gems/sample.pdf根据这里面常用的优化方式,1.比如使用local变量,避免直接引用global变量的多级hash查找等。甚至如果循环里面的引用各个模块的函数,都要在循环之前用本地变量先cache一下,因为在Lua里面函数也是table,也需要查找。比如,local table_insert = t...
-
May 28, 2014
Lua性能优化之c++ std sort替换table sort (luajit的ffi使用c代码的例子)
-- require('mobdebug').start("192.168.56.1")local os = require "os"local math = require "math"local string = require "string"local socket = require "socket"--[[Example:local statsd = require "statsd"local s = statsd.metric:new{name = "haha"}...