C/C++(Linux)
文章平均质量分 85
CodeProject-Jerry
Jerry.Wang
展开
-
一个进程安全的日志类, Linux实现
项目中需要分类日志功能,且日志由多个进程产生,所以写了这个类。#ifndef CAPPLOG_H_#define CAPPLOG_H_#include "Generic.h"enum LOG_TYPE{ LOG_DEAGNOSTIC_MSG = 0x00000000, LOG_EVENT = 0x00000001,原创 2009-01-01 23:15:00 · 2246 阅读 · 0 评论 -
Nodejs Native AddOn的编写
如果要在nodejs中调用动态链接库中的导出方法,或者从动态链接库中回调nodejs中的某个方法,可以采用 node-ffi(https://github.com/rbranson/node-ffi )。不过我试了很久都没有成功,貌似ffi对于回调的支持有问题,无法正确区分 _stdcall 与 _cdecl。而另一种实现方式就非常简单直接了,通过编写nodejs addon的方式直接实现。nod原创 2014-02-05 17:22:55 · 16521 阅读 · 1 评论 -
OpenSSL RSA加解密 (.Net公钥加密/ Linux端私钥解密)
要求在.Net端生成公钥私钥对。然后在.Net端使用RSA公钥加密;在Linux端使用RSA私钥解密。最初的尝试是:.Net端使用RSACryptoServiceProvider; Linux端使用OpenSSL搞了整整5个小时,有木有啊,有木有啊! .Net的RSA和OpenSSL对不上,有木有啊,有木有啊!人都搞晕了就是对不上。最后解决方式换成了,.Net端使用 OpenSSL.Net. .原创 2011-11-06 19:27:03 · 5465 阅读 · 2 评论 -
终于成功了, 使用Flash进行实时视频监控
自从当爸后一直想弄个监控系统。市面上都是使用天视等客户端软件,不方便。 自己断断续续折腾了3个月,今天终于把Flash的实时视频监控代码都移植到了CentOS 大华的8路 H.264硬件压缩卡采集数据RTMP流发布,客户端无需安装任何插件,兼容所有Flash播放器平台CentOS实现,在ATOM CPU + 1G内存上完全不卡, 整机功耗只有30W, 还装了个rtorrent 下电影 下一步计划实原创 2011-05-15 21:02:00 · 11827 阅读 · 19 评论 -
将H.264采集卡的输出格式,转换为标准H.264
市面上有很多种H.264硬压采集, 海康/大华/等等等等找了半天发现所有的卡接口及其相似,在开发包中都是使用 RegisterStreamDirectReadCallback 注册回调函数来获取压缩后的数据流。 在它的回调函数中输出的码流不知道是啥子格式,而我需要标准的H.264码流,保存成flv并同时使用RTMP发布。如果解码后重新编码加重了CPU的负担,不符合要求。难道这就是传说中的海康码?原创 2011-03-12 23:14:00 · 5448 阅读 · 4 评论 -
修改memcached,让memcached主动从数据库读取数据进行缓存
memcached的一般应用场景是:1. 应用程序使用get指令根据key来查询cache是否hit 1.1 如果hit, 则使用缓存的值2. 如果没有hit, 应用程序查询数据库后再将查询到的内容使用store指令保存到cache中, 方便下次使用. 但有的时候需要将memcached作为一个数据库前端使用,即 当应用程序使用get指令查询某一条entry的时候,如果此时该key不在cache中, memcache主动地读取数据库并写入cache后,保证每次的get指令都能命中。对于这样的应用原创 2011-04-25 21:20:00 · 6588 阅读 · 2 评论 -
使用System V信号量实现多线程互斥
POSIX Thread中提供了非常强大的线程互斥机制, 如 pthread_mutex_XXXX / pthread_cond_XXXX 以及 semaphore(sem_wait/sem_post)等。在同一进程内的多线程编程非常方便灵活。但对于跨进程的线程互斥问题就变得麻烦了。其实主流的Linux在内核中也实现了System V的IPC, 在跨进程的线程互斥方面实现起来更加简单。当然,同一进程容器内的多线程也可以使用。信号量的创建semget的man page: http://linux.die.ne原创 2011-05-21 11:15:00 · 4150 阅读 · 15 评论 -
CentOS 安装 mysql-proxy笔记(1)
第一部分,mysql-proxy及其依赖项的安装。 LUA脚本 http://www.lua.org # wget http://www.lua.org/ftp/lua-5.1.4.tar.gz# tar zxvf lua-5.1.4.tar.gz# cd lua-5.1.4#make generic; make install;#export LUA_C原创 2009-11-11 13:28:00 · 3410 阅读 · 2 评论 -
将Fedora11 Live安装到2GB U盘上 以及初始配置
准备 下载 Fedora11 Live ISO 和 Fedora liveusb creator 制作启动盘 插入U盘,选择镜像和操作系统版本,就可以开始制作了。 网络配置 登陆Fedora11后,修改网络配置文件 etc/sysconfig/network-scripts/ifcfg-eth0下面是示例原创 2009-08-07 13:03:00 · 3052 阅读 · 5 评论 -
Fedora10下开启root的自动GUI登陆
Fedora10默认是不允许root账号进行GUI登陆的,下面是解决方式。首先以用户账号进入终端,允许root账号登陆:首先su然后vi /etc/pam.d/gdm删除其中的一行auth required pam_succeed_if.so user != root quiet然后wq保存并退出。这样就可以使用root进行GUI登陆了。原创 2008-12-20 17:34:00 · 1560 阅读 · 0 评论 -
发一个多线程通过 HTTP 下载文件的类(Linux下的实现)
多线程下载文件这个话题已经是老汤了。在HTTP协议1.1中,允许通过增加一个HTTP Header“Range”来指定下载文件的区间。所以一般的做法都是:首先获取到文件大小(通过Content-Length)开一个线程池在进行分块下载。而在具体怎么实现的流程上,还是有差别的。1. 标准的做法是:首先用一个线程发送HTTP GET指令,服务器会返回Content-Length,并原创 2008-12-19 20:27:00 · 2545 阅读 · 0 评论 -
在Linux Fedora10中,接受U盘设备挂接消息
在Fedora10等Linux操作系统中,如果用户插入U盘或者移动硬盘等USB存储设备,将会自动mount到文件系统中。当U盘插入后,如何收到U盘挂接的通知?挂接的U盘设备可能的名称是sdb sdc sdd ... 如果有多个U盘胡乱地插拔,如何知道当前插拔的是哪个设备?当设备被挂接后,如何获得被挂接后的文件系统路径呢?因为对Linux不够熟悉,解决这些问题我弄了1天,走了不少弯路,现在终于解决了原创 2009-01-03 21:27:00 · 2693 阅读 · 5 评论 -
利用backtrace诊断 Segment Fault 崩溃原因
利用backtrace诊断 Segment Fault 崩溃原因Linux的一个daemon进程在非常偶然的情况下导致Segment Fault崩溃,基本上要半年才会发生一次。对于这种很难重现的问题,幸好进程中有如下代码中在崩溃时导出堆栈原创 2015-03-27 20:26:49 · 3577 阅读 · 0 评论