自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 资源 (8)
  • 收藏
  • 关注

原创 基于http的protobuf服务实现

 通常webapi实现通过http get/post请求,返回文本型的json,xml等字符串。本文以Tomcat8为web服务器,借助protobuf框架,响应二进制数据。由于protobuf协议能跨语言,我们可以用java servlet实现服务端,C/C++实现客户端,达到各模块解耦目的。双方需设置ContentType为application/x-protobuf。 1...

2017-05-28 10:34:35 3868

原创 protobuf 格式分析

 protobuf 是谷歌出品一款高性能序列化框架,优点序列化后报文数据小,支持多种多种编程语言(c/c++,java,php,python等主流语言),缺点二进制不可读这倒不重要。 一. 安装下载源码编译 二. 开发流程2.1 准备helloworld.proto文件package com;message helloworld{ requir...

2017-05-27 15:19:19 556

原创 Tomcat 启用gzip

1. 配置启用gzip vi conf/server.xml<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressionMinSiz..

2017-05-27 11:21:41 111

原创 expect自动登录

  expect是一个用来处理交互的命令,可通过expect实现ssh自动登录,ftp自动登录,不需要手动输入密码。 1. scp传输文件#将$SrcFile拷贝至$Host的$Work目录下#spawn 启动新进程expect -c " spawn scp $SrcFile yourname@${Host}:${Work} expect { \"(yes/n...

2017-05-24 10:13:08 110

原创 Linux 进程隐藏

 一. 说明windows下驱动可通过 Hook ZwQuerySystemInformation() 达到隐藏进程的目的,那么linux上如何实现该功能呢。 二. 原理Linux下有大量的进程监控命令,ps,top,htop,lsof 都可以显示资源占用情况。sudo sysdig proc.name=ps1489 14:39:30.258670474 1 ps ...

2017-03-14 08:53:27 902

原创 Linux 系统调用

1. 说明系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断陷入内核执行中断处理函数。2. 内嵌汇编下面以获取系统当前时间为例,探讨系统调用方式。1. glibc调用int tt = time(NULL);2. syscal...

2017-03-13 14:09:04 135

原创 DES加密

DES 对称加密方式,在通信过程中经常用到。DES有四种加密模式: 1. ECBElectronic Codebook最古老简单的模式,加密数据长度必须为8的倍数(不足8位添加padding),密钥必须为8位。不依赖向量,易受到字典攻击。不推荐。2. CBCCipher Block Chaining引入初始化vector,可以使用不同的Vector产生不同的密文。缺...

2017-01-25 10:13:09 295

原创 python打包成exe

    python丰富的第三方库可以很轻松实现复杂的功能,但脚本文件不利用在其它电脑上共享,对端需要安装python及依赖类库,不方便使用。所幸有很三方软件py2exe,可以将python打包成exe程序,直接点击就可运行。 一. 安装py2exe http://www.py2exe.org/  下载py2exe,运行python setup.py 安装。python 命令行...

2017-01-07 00:36:54 148

原创 QProcess 启动外部程序

1. 堵塞运行QProcess process;process.execute( "sub.exe", params ); process.waitForFinished(); execute 方法以堵塞方式执行程序,直到程序退出。 2. 异步运行process.start( "sub.exe", params );start 方法单独启动一个进程,hdbwrit...

2017-01-06 23:19:21 5936

原创 mac 搭建QT环境

一直在windows/linux下做QT开发,现在终于有了MAC,迫不及待的试下QT的跨平台性,体验下MAC界面的酷炫。一. 下载QT5 for mac图形化界面,点击下一步。二. 配置环境变量依旧更新~/.bash_profile文件,默认情况下该文件不存在。这与linux基本上一致。vi ~/.bash_profileexport QTDIR=/Us...

2016-12-22 22:30:01 954

原创 最小helloworld

hello world程序是学每种编程语言的启蒙程序,所谓麻雀虽小,五脏俱全。最近看《程序员的自我修养》最小helloworld程序章节,觉得甚是精彩,特此整理下。 一. 入门级helloworld[root@dev21 elf]# ll tinyhello-rwxr-xr-x 1 root root 4719 Dec 9 14:31 tinyhello[root@d...

2016-12-09 17:00:00 374 2

原创 Tomcat 配置多个监听端口

 在IIS上很方便配置多个端口,添加一个网站即可。Tomcat下通过配置也可以监听多个端口。 vi conf/server.xml <Service name="Catalina2"> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" red...

2016-12-05 20:32:29 951

原创 JS广告跳转

 在网上看到的一段广告代码/webkit/i.test(navigator.userAgent) ? (f = d.createElement('iframe'), f.style.width = 1, f.style.height = 1, f.frameBorder = 0, d.body.appendChild(f).src = 'javascript:"<script&g...

2016-12-05 19:46:13 807

原创 网络字节序

    虽说现在大部分x86服务器都是小端字节序,但在嵌入式设备上,由于芯片种类繁多,大小端序均有。需考虑程序的可移植性。 一.字节序判断int bigendian(){union{short value;char ubytes[ sizeof(short) ];}test; test.value = 0x0102; if( (test.uby...

2016-11-22 16:03:55 108

原创 代码技巧

1. 数据交换不借助第三方变量实现对两个数字的交换。void swap( int *a,int *b ){*a ^= *b ^= *a ^= *b;// 两两取反} 2.char[0]内核中,常见char[0]结构体字段的声明。struct MyData {    int nLen;    char data[0];// 不占空间}; ...

2016-10-31 19:52:24 79

原创 mysql 中文乱码

新安装的mysql服务器,由于默认的是latin编码,在linux服务器下经常出现乱码。mysql的编码设计的比较复杂,涉及到服务器,客户端,数据库,表及表字段编码。为了支持中文,需要将所有的编码设置为UTF8。 一. 配置 vi /etc/my.cnf [client]default-character-set = utf8 #客户端设置UTF8[m...

2016-10-20 19:25:47 123

原创 嵌入式设备文件传输

    嵌入式设备由于资源有限,很多组件都被阉割了,导致不能随意上传和下载文件。本文汇总路由器下常用的几种方式: 一.scp协议有些路由器没有启动sftp-server组件,导致无法通过sftp下载。可在winscp中选择scp协议(安全复制协议)进行下载。 二. wget下载远端启动webserver。在路由器上直接通过wget下载,wget http://x...

2016-10-20 16:03:08 1221

原创 libpcap 交叉编译

本文研究在openwrt的路由器(基于ARM架构)上用libpcap采集数据包。一. 安装ARM交叉编译环境下载openwrt源码,编译时勾取 Build OpenWrt Toolchain。编译过程参见:http://tcspecial.iteye.com/blog/2280873二. 下载源码libpcap只有同一套源码,支持嵌入式编译,没有单独的嵌入式版本。...

2016-09-10 19:27:42 1932 1

原创 zookeeper Session Expired

zookeeper 客户端封装比较优雅,当服务器中断或网络超时时,会自动重连服务器。但是当某些其它未知原因出现,例如网络超时导致的客户端报错:Session Expired,导致重连失败。 zookeeper客户端与服务器维持一个长连接,每个连接拥有唯一的session id。Session连接通常是一直有效,如果因为网络原因断开了连接,客户端会使用相同的session id进行重...

2016-08-07 21:53:41 2175

原创 无法收到redis订阅消息

    现网程序运行一段时间后,经常发现收不到redis订阅消息。输入client list查询redis连接信息,输出如下信息:id=2375018 addr=120.15.207.135:9159 fd=663 name=subarea age=3324 idle=563 flags=N db=0 sub=0 psub=1 multi=-1 qbuf=0 qbuf-free=0 obl...

2016-08-07 15:47:01 6268 1

原创 SendMessage 传递 CString

 1. CString作为参数传递MFC编程中,CString可以直接作为SendMessage()参数来传递。推荐用阻塞方式发送消息,这样能防止CString被析构,而引起内存访问错误。 CString str = _T("hello"); // 发送端SendMessage( m_pPhoneWnd->GetSafeHwnd(),MY_MSG,(WPARAM...

2016-06-18 16:48:55 718

原创 NSIS使用

NSIS使用 NSIS是一款很流行的开源安装程序制作工具,可以通过编写脚本生成功能丰富的安装程序。 一. NSIS语法语法结构与shell类似,支持函数定义,插件DLL调用,功能非常强大。NSIS脚本包括安装属性(Installer Attributes)和段(Sections)/函数(Functions)。 1.1 安装页安装页显示,可灵活选择其中几项进行定制...

2016-05-13 11:18:18 2086

原创 代码签名

 一. 说明 在浏览器上运行某些带控件的网站时,会跳出安全警告,杀毒软件也会误报病毒,这是由于未签名代码缘故,导致浏览器无法验证该ActiveX控件。因此代码签名尤为重要,既能保证软件代码在网络传输过程中不会被非法修改,同时也能让用户非常清楚地识别软件发行者的真实身份(软件真实来源)。软件代码数字签名仍然采用 PKI 双钥技术,简言之,软件发布时用私钥加密软件,在用户端通过公钥解密软件...

2016-05-09 16:14:52 517

原创 VS2012 开发驱动

VS12下开发wdk驱动,比较繁琐,要设置很多选项。本文在 win8 + visual studio2012 + wdk7600 下测试通过。  一. 项目属性配置常规    目标文件扩展名:.sys          // 必选 VC++目录  包含目录    C:\WinDDK\7600.16385.1\inc\wdf\kmdf\1.9  inc\ddk inc...

2016-04-01 11:03:15 529

原创 微信公众号开发

 现在微信越来越热门,大量的公众号涌现,为我们生活带来不少便利。让我们来了解一下这个公众号是怎么出来的。 一.申请域名服务器以前部署一个网站得准备硬件,申请域名,这对于小型网站来说是难以承受的,随着Amazon云服务,百度云,新浪云这些平台的兴起,我们可以直接在云端部署我们服务器,大大提高网站部署效率。在百度开发者中心,选择开放云 -- 应用引擎BAE -- 添加部署。...

2016-03-31 22:56:33 121

原创 虚拟机centos忘记root密码

虚拟机一段时间不用,很容易忘记root密码,幸好还可以找回。开机进入单用户模式进行修复,直接修改密码即可。 1. 开机出现如下显示,按"e"进入grub  2. 选择 kernel 行,按"e"进入参数编辑  3. 输入" 1"  4. 按"b"启动系统   ...

2016-03-31 16:10:08 249

原创 openwrt 下编译ipk

     openwrt插件都是以.ipk方式发布的,ipk可以直接通过opkg安装到系统。上文我们编译了简单的hello,本文探究hello.ipk的编译过程。一. 环境准备cd ~/openwrt/bin/ar71xxtar -xjvf OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.6-linaro_uClibc-0.9.33.2.ta...

2016-03-17 17:17:25 1574

原创 openwrt下的hello world

 一. 准备环境cd ~/openwrt/bin/ar71xxtar -xjvf OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2 #解压工具包cd OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9....

2016-03-17 15:49:55 799

原创 WIFI弹出广告

     使用公共WIFI时,经常会弹出授权页面,挺有意思的,到底怎么实现的呢。 我们现在有了智能路由器,使用nodogsplash插件可以很方便实现该功能。 1. 安装nodogsplash   在些就不使用管理平台了,点来点去,麻烦。直接用终端登录路由器操作:opkg update #更新软体包opkg install nodogsplash #安装nodogs...

2016-03-16 17:31:51 1285

原创 openwrt编译

    openwrt是嵌入式设备上运行的linux系统。OpenWrt 的文件系统是可写的,开发者无需在每一次修改后重新编译,是目前比较流行的路由器系统,编译后3-4M左右。编译服务器最好选用Ubuntu,以下在Ubuntu12.10下编译成功。 1. 安装基础软件sudo apt-get install subversion libtool autoconf automake ...

2016-03-16 17:14:44 1198

原创 C# 开发windows服务

 windows下无法像linux那样直接运行nohup等命令运行后台程序,只能调用相应api做成服务。服务可以在没有任何用户登录计算机的情况下运行。C# 建立windows 服务比较方便,直接派生 System.ServiceProcess.ServiceBase,但是只支持windows XP。  /// <summary>/// 1.建立windows服务类,派生...

2016-03-11 10:26:59 120

原创 Zookeeper

 Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务,比如同步,配置管理,集群管理,名空间。 集群搭建zookeeper集群组建需最少提供3台服务器,其中一台充当leader,负责写和数据同步,剩下的为follower,提供读服务。 数据存储zookeeper数据以key,value方式存储...

2016-02-27 16:09:35 79

原创 Log4Net 使用

Log4j是Java下强大的日志记录类库,各语言都有相应实现版本。C的log4c,C++的log4cxx,QT的log4QT,C#下的log4Net。不过还是Log4j和Log4Net比较常用。 一. 下载从 http://logging.apache.org/log4net/download_log4net.cgi 下载最新版本 log4net-1.2.15-bin-newkey...

2016-01-06 12:49:35 102

原创 1970年至今秒数转化为时间

当前系统时间,一般取自1970年以来秒数值(int),各种编程语言提供API处理方式不同,特汇总。 1.C/C++time_t seconds;time(&seconds); 2.QTQDateTime dt = QDateTime::currentDateTime();dt.toTime_t(); 3.C#C#没有直接提供获取1970年秒值...

2016-01-06 11:00:37 9796

原创 shell 自动执行sql

系统运维过程中,经常遇到向FTP上传下载数据,向DB读写数据等场景。FTP,SQLPLUS,MYSQL提供的都是交互式命令方式,在shell下也通过管道方式实现自动执行。 1. FTP1.1 -s参数指定文件名vi ftpcmd.txtopen 192.168.5.10myusermypassget 1.txt bye ftp -s:tpcmd.tx...

2016-01-06 10:20:15 469

原创 Java http get

一般在java处理Get/Post请求,用的比较多是apache的commons-httpclient.jar库,封装比较彻底,使用比较简单。有些简单应用场合,不需要使用httpclient库,可以直接使用Java内置URLConnection类。 客户端:public String getInfoFromServ( String path ){ BufferedReader ...

2015-12-11 12:30:37 108

原创 makefile 字符串分隔

makefile中提供了字符串查找,替换函数,却没有提供字符串分隔函数,可以通过shell表达式解决。 TEST=1.8.2MajorVer = $(shell $(TEST) | awk -F'.' '{print $$1}')注:上例中$$VAR就是获取shell中的变量,而$(VAR)是Makefile的中的变量,否则无法分割...

2015-12-09 17:56:32 2902

原创 readline 命令补全

    readline是linux下常用的CLI交互式开源库,readline可以实现命令编辑,自动命令补全,历史命令搜索等人性化的交互方式。系统实现了rl_filename_completion_function和rl_username_completion_function自动补全,实现自定义命令的自动补全需要实现rl_attemped_completion_function函数。...

2015-10-27 16:48:15 1007 1

原创 select用法

select用法  select为linux常用的非堵塞套接字API,原型为:int select(int nfds, fd_set *readfds, fd_set *writefds,              fd_set *exceptfds, struct timeval *timeout); select用于检测文件描述符的变化,参数五timeout:1....

2015-10-27 15:18:10 108

原创 Linux下杀死顽固进程

一. Linux 杀死顽固进程Linux进程状态成 Z(TASK_Zoombie),T(TASK_Stopped or Traced)时,无法用kill -9 杀死。1.一般情况下进程进入僵尸状态时,会被init进程接管,会自动消亡,可不用理会。2.当进程被调试状态时(当运行gdb或strace命令时),会向进程发送一个STOPPED信号,导致进程进入TASK_STOPPED状态。...

2015-09-23 22:31:19 892

RadAsm V2.2.1.6汉化版

RadAsm V2.2.1.6,汇编开发IDE,汉化版,支持masm,tsam,fasm等开发,并提供高亮显示,最好配合MASM32 SDK使用 ...

2013-04-17

跨平台进程间通信源码

跨平台进程间通信解决方案,可以向多个进程发送消息,windows/linux上实测通过 ...

2013-04-17

mysql for QT驱动

自己编译的QT版的mysql驱动,适用于QT.4.x系列版本.

2011-11-21

java RTSPClient

根据网上的资料改写的RTSPClient的改进版本, 绝对可以用, 显示整个RTSP报文的交互过程

2011-08-19

java clock 机械时钟

用java写的一个机械时钟表了, 一笔一画画出来的了, 下面显示日历了. 点击jar能直接运行

2011-08-19

java notepad

java写的一个功能完整的记事本, 学习java swing的资料. 可以字体选择排版. 点击notepad.jar可直接运行.

2011-08-19

java servlet分页

关于jsp分页的web工程, 里面有数据库文件,可以直接运行.

2011-08-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除