自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (6)
  • 收藏
  • 关注

转载 UML类图与类的关系详解(转)

UML类图与类的关系详解虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association...

2018-12-15 22:59:16 282

原创 select / poll / epoll 差异

    众所周知,网络socket处理常见的三种方式是select / poll / epoll(linux) / 完成端口(windows),简单说一下各自的差异:    select:           1)每次轮循需要把监控的fd集合拷贝到内核           2)轮循fd数组查看fd是否可读写           3)最大fd值为1024,maxfd+1<=10...

2018-10-06 16:54:32 371

原创 指针数组与数组指针

    (1)数组指针:              int (*p)[5]:      ---->    本质上是一个指针,占用4个字节;              int a[4][5];      ---->    这里可以用 指针 p 来指向二维数组 a ,p=a;    (2)指针数组:              int *p[5]:        -----&...

2018-10-06 16:10:55 243

原创 live555堆栈溢出问题

live555 堆栈溢出

2017-06-11 20:42:15 1074 3

原创 QT支持XP

QT支持XPQT 5.7 开始不支持 XP系统,建议使用5.6.2,亲测有效需要在.pro中增加一行代码: QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01该形式函数无法打开对话框QString fileName = QFileDialog::getOpenFileName(parent, QObject::tr("open file"), "

2017-05-16 11:22:37 3245

原创 协议栈各层对收到的帧过滤过程

感觉提到帧过滤的帖子挺少的,写一个blog分享下,顺便备忘:        应用层,传输层,网络层其实挺清楚,主要是设备驱动层的的部分功能,可能会有混淆,比如说 多播地址的检测;还有就是 跟软件工程一样,越早发现问题成本越低,这里过滤帧也是越早发现无效数据包,主机的处理负荷越小;        参考文献:TCP/IP 详解(卷1)

2016-11-06 19:26:46 1172

原创 live555多线程实现

接触过live555的童鞋都知道,live555是单线程的,用的是select模型;前几天预研了下多线程改造的问题,select模型受限于FD_SETSIZE,然后看到 下面一段注释:/* * Select uses arrays of SOCKETs. These macros manipulate such * arrays. FD_SETSIZE may be defined b

2016-11-01 16:36:23 4446 5

原创 无锁实现线程间共享数据

这几天比较没那么忙,review了一下以前写的一个linux网络库,看得我略微有点纠结,大概流程如下图:        MainThread创建连接fd及处理相关的数据结构,然后加到链表ShareDataList中;        DataHandleThread有一个epoll处理fd的流程,一次处理完之后会去check ShareDataList,如果有数据,就把数据加到epo

2016-10-27 14:39:50 1129

原创 主机直连通信(扫盲贴)

两台PC机网线直连通信,对于初学者来说可能会很疑惑为什么能通信,或者为什么不能通信;其实主要是对主机通信原理不了解;刚好前几天遇到个网线直连的问题,顺便就写个blog,属于扫盲帖,老司机可以直接跳过...    我们知道一般主机都有三个参数:IP, 子网掩码,网关;平时应用层通信的时候好像只用到了IP,其他两个并不怎么涉及,下面就会讲到这子网掩码和网关到底有什么用,和本文的主题有什么关系;

2016-10-26 16:28:43 4331

原创 IP探测实现 ARP与设备发现

        前几天遇到个需求,要探测局域网内 PC机的 IP,有可能跨网段,但是在同一个交换机;于是果断从网上下载了一个DEMO,可以填写探测的IP地址范围,扫描出范围内的主机IP; 抓包看了下,发现一堆icmp包,看来是通过枚举ping实现的;        准备交差的时候被告知 负责探测的主机并不知道其他主机的IP,也不知道IP子网掩码和网关什么的,这样的话没法填写IP段,下载的这个D...

2016-10-23 21:32:38 10871 4

原创 live555读文件改为内存读取实现

live555视频直播

2016-10-15 21:30:58 5625 17

原创 关于TCP连接的三次握手和终止连接的四次握手

正常的TCP连接三次握手和终止连接的四次握手图(转自 TCP/IP 详解):        以前看到这个图一直有个疑问,就是 连接的时候需要分别需要两对SYN/ACK, 终止连接的时候也需要两对FIN/ACK,为什么TCP连接的时候可以合并成三次握手,而终止连接的时候要用四次握手,终止连接的时候 FIN/ACK 为什么不能合并?    今天终于大概明白一点,应该这样的:

2016-10-06 21:42:13 840

原创 live555 rtsp流丢包问题

live555使用过程中遇到一个问题,发送低分辨率的码流码流OK,发送高分辨率的码流会丢包,而且丢的大部分都是I帧;       两台设备网线直连测试是OK的;       开始怀疑是交换机的限制,但是个人对交换机原理并不是很了解,如果说大包进行过滤的话,到交换机的MTU应该都是一样的,不会说有I帧的包特别大,只是会拆包比较多而已,暂时排除交换机问题;       如果不是交换机问题,

2016-09-30 22:47:25 6617 1

原创 live555 场编码H264 帧率异常问题

最近在折腾live555 RTSP服务器,遇到一个码流帧率异常问题:用vlc客户端rtsp取流播放的时候 感觉像 慢放;    用elecard分析了码流,发现是场编码,帧率是25fps;  而帧编码的码流用vlc 取流播放 并没有发现异常;    单步调试live555源码后 发现live555框架 解析 场编码码流帧率 并没有出错,也是解析成25fps;    尝试修改解析代码,若

2016-09-20 21:34:27 3411 2

原创 C++ 无锁环形缓冲区实现

前段时间有个项目要实现一个基于live555的rtspserver,部分功能要用到环形缓冲区,网上看了一些blog,大部分是实验性质的,不太敢用,原理比较简单,所以就自己写了一个;实现环形缓冲区的关键点:  1. 一个线程读,一个线程写2. 读线程维护读指针,写线程维护写指针3. 数据一致性3.1 写线程写数据时,要先确定读指针;读线程读数据时,要先确定写指针;    这里

2016-06-26 20:38:28 6967

原创 orcl sql语句笔记(select成功,update/delete/insert失败问题)

四年多没有搞数据库了,前几天项目需要,折腾了下orcl,结果遇到一个奇葩的问题:把sql字符串拷贝到pl/sql里面执行,都能执行成功;放在程序里面,连接数据库进行执行就老是报执行失败,说是sqlcmd有错误; 开始一直觉得是权限的问题,毕竟select没有修改表操作,update/delete/insert都是会修改表数据的;但是检查账户已经是dba权限了,而且同一个账户在pl/sql里面执行又

2016-06-09 21:54:58 1476

原创 HTTPS加密--笔记

看TCP/IP 图解,看书上有个图画得挺好的,顺便摘下来了;主要是两种加密方式,一种对称加密,一种公钥加密;对称加密效率高,但是密钥不好管理;公钥加密相反,加密效率低,但是密钥好管理;而HTTPS通信就综合了两种方式,先用公钥A加密  “后续对称加密通信的私钥”(对称私钥B),发给WEB服务器,服务器用公钥A对应的私钥A+解密,得到“对称私钥B”,后续直接用对称私钥进行加密就可以了;

2016-05-02 23:52:19 392

转载 CramFS文件系统

转自http://blog.163.com/sunshine_linting/blog/static/44893323201191284510127CRAMFS文件系统是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2或EXT3.  如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先得把flash上的映像文件全

2016-02-25 21:09:01 1027

原创 cmd>file 2>&1与cmd 2>&1 >file

平时经常混淆这两个写法,一段时间不用就忘记了,写个简单的blog记一下:cmd>file 2>&1:1)cmd>file: stdout-->file,stdout重定向到file,将标准输出信息写入到file文件;2)2>&1:   1表示stdout,2表示stderr,stderr重定向到stdout,由于之前已经将stdout已经重定向到file,所以stderr信息也会写入到

2015-12-25 21:31:49 1556

原创 VS2008编译多种版本 文件问题

在编译DLL的时候经常要编译一个动态库,一个静态库,可能还要编译一个共享MFC或者静态MFC的库,这个时候一般会建两个工程,引用同一份代码,但多少总感觉有点不方便。今天在研究电驴源码的时候,发现ResizableLib里面有Debug Static/Debug 等多种编译版本,可以通过配置管理器来实现多版本编译。以前一直都不知道,下面是配置的截图。

2013-04-12 11:07:54 737

转载 MFC的规则DLL中资源使用的问题

今天刚刚做了一个静态链接到MFC的规则dll,即“Use MFC in a static library“,该dll用来显示一个窗体。然后在一个mfc可执行程序A.exe中调用这个dll文件,可以正常的显示窗体。但后来做了一点小小的改动,即把dll改成动态连接到MFC的dll,即“Use MFC in a shared dll ”,然后在A.exe中调用该dll,结果窗体怎么都不显示。后来,经

2013-04-12 10:36:54 944

原创 C++基础知识整理(一)

基础知识搜集整理下,以后查看复习什么的方便一点。 extern "C"使用        主要用于混合语言编程。比如说C语言调用C++开发的DLL,由于C++语言编译后的 函数符号表是带参数类型的,而C语言编译后函数符号表是不带参数类型的。所以要想在C语言中调用C++的DLL,DLL中导出的函数必须加上extern "C".        例:void foo(int,

2013-03-11 19:01:38 611

转载 VS2008使用宏记录来实现自动增加注释信息(转)

不管是做什么项目,代码里面的注释是必不可少的,其实一个好的程序员大部分的时间都是在给代码写注释,但是相同的注释不停的写也是件比较麻烦的事儿,在VS2008里面通过宏可以记录下注释信息,产生一个注释文件,每次需要的时候直接增加到类文件里面即可,方法如下: Sub AddComment() Dim DocSel As EnvDTE.TextSelection

2013-02-20 19:43:31 889

原创 C++ 防锁屏Demo

一般公司里面电脑都有锁屏程序,只要不操作电脑一段时间,就会自动锁屏。有段时间经常需要走开一小会,电脑就老是锁屏,每次都要输入密码,感觉比较麻烦,就想写一个防锁屏的程序。         自动锁屏程序原理应该是检测系统在规定时间内是否接收到消息,若未收到消息就自动锁屏。开始时用PostMessage试了一下,果然不行,看来锁屏程序检测的应该系统消息,而不是应用程序消息,所以只要间隔地给发送系

2013-02-20 16:55:58 2635

转载 栈区,堆区,全局区,文字常量区,程序代码区 详解

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2012-11-07 19:06:06 711

转载 结构体字节对齐问题

#include struct a { char no[10]; int p; long int pp; unsigned int ppp; char x; float y; double h; }xy; void main() {

2011-09-25 13:44:32 468

转载 SS_REALSIZECONTROL undefined 2104 和 heap curruption detected错误

今天遇到一个非常稀奇的问题,一个VS2008编好的MFC小程序,以前也能打开的,什么都是正常的。今天要在此基础上作点大的修改,然后就想复制一份。    可是复制完之后,想打开复制好的工程,发现.rc文件打不开了,出现了以下的提示:      error RC210

2011-09-21 23:31:59 2523 1

原创 先中后序递归非递归遍历二叉树(c#)

复习了下遍历二叉树,以前一直想写下递归非递归方式,老是给忘了,现在写了,以后就不用写了,忘了还可以看看。。。      下面代码是用数组模拟的一棵树做测试用例,测试还不是很全面。      using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace

2010-12-28 22:54:00 1030

原创 快排堆排笔记

今天复习了下快排和堆排 ,也上网查了下,随便写点,当笔记,以后忘记了就不用再百度了。      快排:就我理解,如果要从小到大排列,应该是把大数放到后面,然后把小数放前面,每放一个大数就high--;放一个小数low++;然后在high和low相交的时候把Key放在相交的索引上,其实key也就是大数小数的临界点。下面是代码: public static void Quick

2010-12-26 00:33:00 922

转载 鼠标事件侦听;

class MouseEventListener    {        private Control target = null;        public event MouseEventHandler MouseLeftButtonClick;

2010-08-31 18:52:00 726

转载 委托和事件的区别

在.NET中,委托和事件是直接相关的.如果你有C++的基础,就不难理解委托的作用,委托要达到的目的基本上同C++中的函数指针是一样的,只是委托是类型安全,具有保护机制的---不会指向一个无效的地址.委托主要有两个应用:回调和事件处理.事件是通过委托来定义的,定义事件之前要有相应的委托,处理事件的委托有严格规定:1, 必须有两个参数,2.第一个参数是一对象,表示是谁引发的事件,第

2010-03-30 22:16:00 909

live555读内存(直播)实现

读内存live555读内存(直播)实现,主要是两个修改的cpp文件

2016-10-15

无锁 环形缓冲区

无锁 环形缓冲区

2016-08-15

ASP.NET MVC 项目管理系统(VS2010)

ASP.NET MVC 项目管理系统(VS2010),写的时候MVC 2.0刚出来,看到网上都在说这东西,自己也就顺便去看了下,然后写点当毕设了,希望对童鞋们有帮助。。。

2011-09-25

C#版贪吃蛇(VS2010)

用C#写的贪吃蛇,简易版,还有许多地方需要完善,耦合扩展性等等,暂时不想写下去了,如果需要升级版到时候再写吧。

2010-12-26

学生信息管理学生信息管理

以前上课时写的,一个简易版. 以前上课时写的,一个简易版.

2010-04-28

C#通讯录C#通讯录C#通讯录

0000000000000000000000000000000000000000000000000000000000000000

2009-12-01

空空如也

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

TA关注的人

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