自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 epoll的一点思考(1)

最近在学习epoll用法,一直没太搞明白。网上提到 “ET(edge-triggered)是高速工作方式,只支持no-block socket。在这种模式下,当描述符从未就绪变为就绪时,内核通过epoll告诉你。然后它会假设你知道文件描述符已经就绪,并且不会再为那个文件描述符发送更多的就绪通知,直到你做了某些操作导致那个文件描述符不再为就绪状态了”。编写代码测试了一下:如果客户端发送1

2013-01-07 18:57:50 2235

原创 aarch64平台nopoll移植

0x01前言最近项目用到了websocket,websocket相对应的库比较多,但是大多数基于C++实现,有一些还需要C++11及以上特性,对于嵌入式的一些应用场景不是特别友好,在网上查阅后发现nopoll采用C语言实现,能够更好的支持老版本的GCC编译器和开发环境,因此暂时选择nopoll,大家有更好的欢迎推荐。下面进入正题,开始aarch64平台移植nopoll。0x02下载nopollnopoll官网提供编译好的二进制安装包,官网http://www.aspl.es/nopoll/dow

2021-01-12 14:42:46 796

原创 如何通过浏览器判断是否安装某软件

最近项目中遇到一个问题,需要通过浏览器判断是否安装某软件,当然软件是我们自身开发的,使用url protocol handler调用。通过一系列的资料查阅,针对不同的浏览器有不同实现,IE下相比较简单,可以是使用Activex或User agent来判断,其他浏览器貌似没有太好的方法。下面链接可供参考,有经验大侠请指教。http://stackoverflow.com/questions/

2013-09-30 15:04:58 2793 1

转载 如何判断电脑是否加入域 是否登陆到域

http://www.cites.illinois.edu/network/activedirectory.htmlThis page helps you tell whether your computer is connected to Active Directory (and, if so, which Active Directory you've conne

2013-09-29 11:14:41 11135

转载 LIB和DLL的区别与使用

共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅

2013-09-27 10:11:33 792

转载 编写DLL所学所思

动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。(1)       显式调用:使用LoadLibrayr载入动态链接库、使用GetProcAddress获取某函数地址。(2)       隐式调用:可以使用#pragma comment(lib, “XX.lib”)的方式,也可以直接将XX.lib加入到工程中。 DLL的编写编写dll时,有个重要的问题需要解决,那就

2013-09-26 14:19:59 1299

原创 php调用C/C++问题

最近在项目中使用php的调用C/C++实现的代码,分为两类一类是调用C/C++接口,使用php扩展实现另一类是调用C/C++程序,本文着重讲解调用程序问题。我直接使用的时popen函数调用外部程序,外部使用C++编写,结果发现如果外部程序连接动态库则可能失败,read返回空。第一种方法是不使用动态库,直接在代码中实现;第二中方法如果我们必须使用第三方的库,则需要配置环境变量。解

2013-09-14 11:42:13 4757

转载 C++类中定义线程

1. C++ 中如何定义线程函数     有两种方法:a. 定义线程函数为全局函数    b. 定义线程函数为类的静态成员函数2. C++中的线程函数如何访问类中的成员变量    针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程

2013-08-27 10:33:52 7287

原创 mysql_ping 阻塞问题

在日常开发过程中,为了解决Mysql has gone away问题使用了函数mysql_ping进行数据库的重连,不过在使用中发现mysql_ping有可能会永远阻塞,测试如下:首先建立好数据库连接,然后sleep(20),在20秒内添加iptables规则,如下:iptables -A INPUT -p tcp --dport 3306 -jDROP20秒后使用mysql_pi

2013-08-09 14:50:47 8606 2

转载 Linux gdb调试多线程

linux gdb 调试多线程 单独调试线程http://coolshell.cn/articles/3643.html一、多线程调试多线程调试可能是问得最多的。其实,重要就是下面几个命令:info thread 查看当前进程的线程。 thread 切换调试的线程为指定ID的线程。 break file.c:100 thread all  在file.c文

2013-08-03 09:03:09 2686

原创 文件描述符被耗尽问题排查

下面是自己遇到问题时的解决过程:编写的服务器程序出现提示解析文件失败,使用xml解析库为tinyxml,通过定位发现时loadfile函数问题,开始怀疑是文件被占用,因为此问题是过一段时间产生的,所以分析可能是文件描述符问题。1.查看进程的文件描述符ps -ef|grep abc得到abc进程ID,然后进入/proc/进程id/fd 查看文件描述符,发现暂用超过系统上线。ulimi

2013-06-28 13:16:25 4438

原创 Win 7为防火墙添加一条规则

代码如下,直接执行shellTCHAR szModulePath[MAX_PATH] = {0}; GetModuleFileName(GetModuleHandle(NULL), szModulePath, sizeof(szModulePath) / sizeof(TCHAR)); string strParameters = "firewall add allowedprogra

2013-04-16 16:37:02 1282 1

转载 Linux 常见死机原因

在排除了硬件故障/firmware版本/BIOS等等问题之外, Linux死机通常可能碰到如下几种情况1, 如果你的Linux死机的时候控制台上有乱七八糟的字符。恭喜你,这种情况叫做oops. 通常是Linux kernel认为自己发生了异常造成的。可以通过oops消息查找出错的地方。 2, 如果你的机器僵死,那么问题麻烦了。这种时候,通常是Kernel出现了死锁。Kern

2013-04-02 10:19:38 8263

原创 epoll的一点思考(5)

epoll 同时触发in与out通过测试发现out与in事件可以同时触发的,测试代码如下:#include #include #include #include #include #include #include #include #include #include using namespace std;#define MAXLINE 5#define OP

2013-01-10 08:47:44 988

原创 epoll一点思考(4)

epoll EPOLLONESHOTEPOLLONESHOT:只监听一次事件,当监听完这次事件之后,如果还需要继续监听这个socket的话,需要再次把这个socket加入到EPOLL队列里,这样IN事件会被保留。EPOLLONESHOT区别就是,每次IN事件都是串行进行,而不是多个in事件并行。ET模式与LT模式EPOLLONESHOT处理相同(1)设置EPOLLONESHOT,创

2013-01-09 18:59:50 2178

原创 epoll一点思考(3)

epoll in事件触发时机第一种情况,当设置了in,并且客户端发送数据到达会触发in事件第二种情况,设置in,但是客户端发送数据100字节,服务器读取20字节,不再触发in直到再次设置in或有新数据到达。第三种情况,设置in,如果client关闭(close socket或程序关闭),会触发in事件,recv返回0,如果没有del掉event,并且设置out事件,会触发out

2013-01-09 17:32:13 1461

原创 epoll的一点思考(2)

epoll out事件触发时机当epoll_ctl设置了out事件(add 或 mod),如果内核发送缓冲区有空闲,则会触发out事件,如果发送缓冲区满,则不会不会触发out事件,当发送缓冲区不再满时会触发out事件。如果在缓冲区由满变为不满之前不设置out事件(mod 修改out->in),在缓冲区不满之后不会触发out事件。第一种情况,设置out,测试代码如下:#include

2013-01-09 16:40:53 1063

转载 linux下使用TCP存活(keepalive)定时器

一、什么是keepalive定时器?[1]在一个空闲的(idle)TCP连接上,没有任何的数据流,许多TCP/IP的初学者都对此感到惊奇。也就是说,如果TCP连接两端没有任何一个进程在向对方发送数据,那么在这两个TCP模块之间没有任何的数据交换。你可能在其它的网络协议中发现有轮询(polling),但在TCP中它不存在。言外之意就是我们只要启动一个客户端进程,同服务器建立了TCP连接,不管你离

2013-01-09 10:00:00 2835

转载 linux下socket keep alive讲解

【需求】不影响服务器处理的前提下,检测客户端程序是否被强制终了。【现状】服务器端和客户端的Socket都设定了keepalive属性。服务器端设定了探测次数等参数,客户端、服务器只是打开了keepalive机能服务器端起了一个监视线程,利用select来检测socket是否被关闭。。。下面这是我的一点肤浅理解。1.关于keep alive无论window

2013-01-09 09:58:48 10940 2

原创 iptool模拟发包工具

有时候我们用wireshark或tcpdump抓取的数据包需要回放,我们现在使用的是iptool工具,可以打开pcap文件,然后模拟发送。我的测试环境:虚拟机配置网桥,iptool发送选择本地连接,注意需要是本地连接,无线连接我测试无效。

2012-11-21 09:14:09 8852

原创 libzdb数据库连接池

最近要做一个项目,数据库操作挺频繁,想着使用数据库连接池,在网上查到libzdb不错 http://www.tildeslash.com/libzdb/#api还没有用过,大家可以参考下。

2012-11-05 13:59:47 3258

原创 通过串口连接linux配置过程

在虚拟机下测试1、 修改文件/etc/inittab编辑文件inittab,增加tty:2345:respawn:/sbin/agetty ttyS0 9600 vt100的内容:# vi /etc/inittab# Run gettys in standard runlevels1:2345:respawn:/sbin/mingetty tty12:2345:respaw

2012-10-19 10:03:56 4336

转载 Linux修改网卡名称

实现步骤如下1,更改/etc/modprobe.conf文件中的模块alias比如 alias eth0 pcnet32修改为   alias lan pcnet32 2,更改网卡的配置文件的名字为ifcfg-lanmv /etc/sysconfig/network-scripts/ifcfg-eth0   /etc/sysconfig/network-scripts/ifcf

2012-09-07 13:23:14 8942

转载 一头驴的职场故事

像驴一样勤奋,工作却原地踏步;像驴一样劳累,得到的却是皮鞭,这是很多职场人真实的体验和感受。其实,摆脱驴的命运,变身职场千里马得到赏识并重用,并不是没可能。读读下面的文字,或许我们能从中找到突破口。  你是否只做一样工作?  寓言一:动物们要举行一场联谊会,领导秘书狐狸对驴说:“你的嗓门高,来曲独唱吧。”驴说:“我不去,我唱得很难听。”狐狸说:“那你去试试做主持人吧。”驴说:“我不

2012-08-17 17:23:10 774

转载 对技术的态度

文/陈皓  最近人品爆发,图灵社区,InfoQ,51CTO 相继对我做了采访,前两天我把InfoQ 对我的采访张贴了出来,今天,图灵社区和 51CTO 对我的采访发布了(图灵的访谈 ,51CTO 的访谈),我是一个有技术焦虑症的人,我的经历比较特殊,对大家来说可能也没有什么意思,这两个采都有一些重叠的部分,不过有些观点我想再加强一些,并放在这里和大家一起分享一下。  对于日

2012-08-17 13:22:14 891

原创 Linux调试技术

Linux程序错误主要有内存问题、程序异常。对于内存问题,如野指针、内存泄露,主要采用valgrind进行检查的,结合top等系统资源检查工具。对于程序其他异常,如输出结果不对等,这种问题一般使用gdb、strace、 输出进行调试对于内核调试总是感觉KGDB不好用,一般提示技术就是观察oops信息,结合printk,然后加逐步注释程序方式。参考:http://www.ibm.co

2012-08-16 10:51:37 764

转载 数据在磁盘上的分布

做存储和计算机架构的研发人员需要深入理解数据在磁盘上的分布,只有这样当系统出现故障的时候才能手动进行系统恢复。目前,磁盘的容量越来越大,故障率越来越高,当故障发生之后需要对磁盘数据进行恢复,磁盘数据的恢复不仅要了解分区等基本的磁盘数据布局,而且需要知道文件系统在磁盘上的数据分布。这里首先讨论分区等系统基本数据在磁盘上的分布。分区DOS分区 DOS分区是目前常用的一种分区方式,其磁盘

2012-08-16 09:13:02 3180

原创 LDD3字符设备驱动pipe提示No such device or address

在学习LDD3的时候,学习到字符设备驱动scull使用scull驱动的设备有三类设备文件,分别是scull、scullp、sculla,使用scul.init start加载驱动,创建设备文件后,cat /proc/devices如下:203 cpu/cpuid249 scull249 scullp249 sculla250 hidraw设备文件如下:crw-r

2012-07-26 11:24:01 5924

原创 2012 QQ协议 Analyzer分析结果

以下是复制的QQAnalyzer分析结果,中括号中为分析后结果,貌似有部分错误,大家有没有好的方法旁路阻断QQ,我测试另一台主机复制数据发送相同的数据包不可以。[NO.1 2012-05-31 08:47:20 091 SEND 87字节]02 2D 3D 00 91 00 15 48 1D 93 F9 02 00 00 00 0101 01 00 00 65 60 F2 16 D4

2012-05-31 10:26:44 46851 8

原创 libxml2解析xml文件记录

由于之前没怎么使用过xml,今天发现一个问题,直接使用子节点无法获取节点的属性,通过打印发现节点name为text,但是xml中不存在,通过上网查找由于xml对数据默认为text节点,虽然xml文档中看不到,但是在解析是存在,所以直接使用父节点的子节点可能会获取到text节点。解决方法是:在创建doc前调用xmlKeepBlanksDefault(0);,忽略空白字符,忽略了text节点,这样

2012-05-23 16:36:11 3569

转载 Linux 硬盘自读原因调查

以下是从网上查到:Linux机器硬盘自动变为只读(Read Only)的解决办法James Qi 2011年11月1日 - 10:24 发布  Linux机器的硬盘本来都是设置成读写(Read/Write)方式的,不过偶尔会发现自动变成了只读(Read Only),这半年来已经发生过好几次了,当时解决后忘记记录了,现在补记一下。

2012-04-20 16:13:31 1782

原创 关于Linux STL使用的一点总结

前两天发现Linux使用STL的程序内存占用比较大,通过valgrind检查没有发现内存泄露,分析可能与STL有关,所以单独对STL进行测试程序新建10个线程,采用分离方式,每隔2秒创建一个线程。1.对new 与 delete的测试在每个线程中new 很大一块内存,然后间隔20s后delete使用top查看DATA列与 VIRT列,发现内存一开始上涨到200多M,然后慢慢地随着de

2011-12-30 10:44:40 5216

转载 linux out of memory分析

Linux Out-of-Memory(OOM) Killer     Linux有一个特性:OOM Killer,一个保护机制,用于避免在内存不足的时候不至于出现严重问题,把一些无关的进程优先杀掉,即在内存严重不足时,系统为了继续运转,内核会挑选一个进程,将其杀掉,以释放内存,缓解内存不足情况,不过这种保护是有限的,不能完全的保护进程的运行。    在很多情况下,经常会看到还有剩

2011-06-10 17:17:00 31796

原创 解决commons.CommonsLogger (CommonsLogger.java:45) Could not find method

<br />将log4J.xxx.jar放在lib下,然后修改配置文件log4j.properties<br />提高优先级:log4j.rootLogger=ERROR, A1

2010-08-01 15:17:00 1881

原创 在视图或者子查询中查询rowid出错提示cannot select ROWID from a join view without a key-preserved table

<br />在视图或者子查询中查询rowid出错提示cannot select ROWID from a join view without a key-preserved table<br />比如<br />select * from ( select row_.*, rownum rownum_,rowid rowid_ from ( select t.*,u.user_companyname uname,u.user_mobile umobile,ceil((sysdate - fzrq)*24)

2010-08-01 14:04:00 4981

原创 jboss 和tomcat 下发布webservice客户端

第一次写文章,因问题没有在网上找到解决方法,所以打算写一下。有什么不对的地方还请大家指教。开发环境myeclipse 6.5 +jboss 5 最近由于工作需要,需要连接webservice,自己需要写客户端,服务器是开发好的。刚开始开发是用的jboss服务器。发现jboss 5对webservice不是很支持,一开始报 setpropty方法没有重载,后来在网上查到需要将jboss-5.1.0.GA/client目录下的四个jar文件(jbossws-native-jaxrpc.jar, jbossws-

2010-07-19 18:54:00 2938

epoll模型设计海量级连接服务器

在网上收集到的epoll 的使用,具体感觉不错,linux下epoll应该也是实现服务器比较好的模型了。希望对大家有帮助。

2011-06-24

linux 内存管理

linux 内存管理讲解的很好,个人感觉不错,希望对大家有帮助!

2011-06-10

空空如也

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

TA关注的人

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