工作中的一点小总结
来源:互联网 发布:燕京啤酒 知乎 编辑:程序博客网 时间:2024/04/28 11:30
1 中午同事过来问mysql里面插入二进制数据的问题。以前弄过,可惜都忘了,只好重新查了下邮件。这里还是记下来当时的调查:1) 利用api里面的prepare函数,这种方法我觉得比较适合于再程序里面批量插入数据;2) 将二进制数据转换成16进制,加上0x表示,这个因为要单个处理全部的二进制数据,但是不需要设置prepare函数的诸多参数,比较适合单个的插入。我记得当时我用的是prepare函数,设置bind的参数也是花了一定时间看mysql的reference doc和测试的。 3) convert和cast函数对我们的场景而言不合适,因为我们接收到的就是二进制数据,插入到表的列定义也是二进制的。
2 offload server上在多个服务进程存在的时候性能不是单个进程时的线性关系,差了很多。当时分析是多进程间争用FIFO的原因。今天想到一种方法可不可以这样:利用global data area来取代FIFO,在global data area中创建一个队列,里面保存有一系列node,node里面保存有一些内存空间。工作流程是这样:首先取得信号量,从队列中取出一个node,根据自己收到的数据长度,设置node,然后释放信号量,最后将数据填入到node指向的内存中。优点是尽量减少了信号量的持有时间。但是一个大缺点是读取的时候怎么办?reader得到了一个合适的node,但是此时可能node里面并没有放入全部的数据,难道还需要同步?因为有多个写者,数目还不确定,在list中设置缓冲也不明智啊。
3 我有一个类,封装了信号量的操作。构造之后,init函数需要接受一个key值作为信号量的key,init里面首先用不带IPC_CREATE去取信号量,如果发现没有则用IPC_CREATE去创建一个信号量,如果没有失败,则根据init的参数去初始化信号量。多个进程都会用同一个key值去创建信号量。外部调用init的,会判断errno是否为零。但是偶然情况下会有一个进程返回失败(init)。根据打印的错误消息,在IPC_CREATE创建这个信号量的调用并没有返回失败,那怎么会init返回失败呢?没大想明白。今天太忙,明天有时间查查原因。其实应该将创建和使用分开,在父进程里面创建好,子进程只要去根据key取信号量是最安全的。
- 工作中的一点小总结
- 工作中的一点总结[1]
- 工作中的一些小总结
- 【综合】工作中的小总结
- 0 ,'',[]小区别,工作中的一点小注意
- 工作中的总结 小技巧 等待
- 产品工作中的沟通注意事项小总结
- 工作中的一点心得
- struts1一点小总结
- 一点小总结
- 一点小总结
- 读google c++ 编程规范 中的一点小总结
- 用Java中的高精度的一点小总结
- 最近工作的一点总结
- 最近的一点小总结
- Ajax的一点小总结
- c++的一点小总结
- 糗事百科一点小总结
- Connect by实现树查询的妙用
- 关于手机短信(SMS)工作原理
- 为linux配置telnet服务
- 目标 2010.5.2
- hi,/(^o^)/~
- 工作中的一点小总结
- nokia的进步
- 我们正进入另一个黑暗和无知的时代----《三联生活周刊》 (转载)
- linux配置网络连接
- hibernate 一对多 添加问题
- 散射矩阵、协方差矩阵
- 如何让插入的usb设备不自动装载驱动,进而使用libusb成功向设备传送数据
- base64 编码
- Mapx开发目标轨迹显示核心代码(VC++)