2018年3月10日
摘要: 原文:理解 I/O Completion Port (IOCP完成端口)欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇 阅读全文
posted @ 2018-03-10 19:48 xmj 阅读(154) 评论(0) 推荐(0)
摘要: 原文:http://www.51see.com/asp/bbs/public/bp_show.asp?t_id=200308131152297103讲一下套接字模式和套接字I/O模型的区别。先说明一下,只针对Winsock,如果你要骨头里挑鸡蛋把UNIX下的套接字概念来往这里套,那就不关我的事。套接 阅读全文
posted @ 2018-03-10 19:48 xmj 阅读(202) 评论(0) 推荐(0)
摘要: IOCP的c++例子IOCP这个东西连续关注了将近3年的时间,这个代码从哪里找到的已经忘了,下面是作者的信息。感谢他提供的代码! /*++ Copyright (c) 2004 模块名: iomodel.cpp 模块描述: Winsock 完成端口类实现文件 作者: PPP elssann@hotm 阅读全文
posted @ 2018-03-10 19:47 xmj 阅读(162) 评论(0) 推荐(0)
摘要: 原文:IOCP模型的总结IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线 阅读全文
posted @ 2018-03-10 19:47 xmj 阅读(262) 评论(0) 推荐(0)
摘要: 作者的blog:猪)的网络编程世界几个网络模型的示例代码代码包括了下面几个模型的示例:BlockingModel(阻塞模式)、OverlappedModel(基于事件的重叠I/O)、WSAEventSelect(select模式的一种)、CompletionRoutine(基于完成例程的重叠I/O) 阅读全文
posted @ 2018-03-10 19:46 xmj 阅读(142) 评论(0) 推荐(0)
摘要: 在几年前曾经做过一个网络项目,当时对网络通信仅仅是有点基础。tcp/ip协议的基础还算不错,sockt的应用看起来也不算复杂。于是就用异步非阻塞的sockt通信实现了服务器端和客户端。但是项目在联合调试阶段就出现了重大的性能问题。项目的服务器端同时连入的连接数在几百左右,而服务器端的资源消耗非常厉害 阅读全文
posted @ 2018-03-10 19:46 xmj 阅读(361) 评论(0) 推荐(0)
摘要: 1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 (2)第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内存映射 将内核从Flash读取 阅读全文
posted @ 2018-03-10 19:45 xmj 阅读(370) 评论(0) 推荐(0)
摘要: http://www.kegel.com/c10k.html#topIt's time for web servers to handle ten thousand clients simultaneously, don't you think? After all, the web is a bi 阅读全文
posted @ 2018-03-10 19:45 xmj 阅读(190) 评论(0) 推荐(0)
摘要: 基于STM32的uCGUI移植和优化 首先在开始这个说明之前,要简要说明下具体的环境: 编译工具:MDK4.20 开发板:安富莱v2版开发板 调试器:JLink v8盗版 移植篇 相信大家有移植经验的都知道,移植确实是一件非常墨迹的事情,怎么说呢,代码都是别人的,风格也是别人的,文件结构,定义之类都 阅读全文
posted @ 2018-03-10 19:44 xmj 阅读(11725) 评论(1) 推荐(0)
摘要: 下载地址:http://www.micrium.com/ 它的特点: 1)开源, 2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写, 3可固化, 4)可剪裁,这通过条件编译实现,使用#define语句定义所需要的功能。 5)可剥夺性(总是运行就绪条件下优先级最高的任务), 6)多任务(可以管理 阅读全文
posted @ 2018-03-10 19:43 xmj 阅读(250) 评论(0) 推荐(0)
摘要: 来源: ChinaUnix博客 作者: ChinaUnix博客 发布时间:2007-01-01 16:29:00 摘 要:在基于linux的嵌入式仿真平台研发中,利用开源工具bootsplash能够定制启动logo、设定控制台背景和显隐启动时的字符信息,甚至能够支持开机进度条的动画显示。本文介绍利用 阅读全文
posted @ 2018-03-10 19:43 xmj 阅读(375) 评论(0) 推荐(0)
摘要: 首先来了解下实时系统的基本概念: 1) 临界区,共享资源,任务(类似于进程),任务切换,任务调度,可剥夺型内核,可重入函数,动态优先级调度, 2) 如何处理优先级反转问题。这个问题描述如下:有三个任务,优先级1高于2,2高于3,一开始1和2处于挂起,3在运行,3要使用某个共享资源,就P它的互斥信号量 阅读全文
posted @ 2018-03-10 19:42 xmj 阅读(132) 评论(0) 推荐(0)
摘要: 在真正开始分析源代码前,先来看使用uC/OS-II的三个例子 1)使用信号量 #define TASK_STK_SIZE 512 /* 每个任务堆栈的大小(以字计算)*/#define N_TASKS 10 /* 任务数*/OS_STK TaskStk[N_TASKS][TASK_STK_SIZE] 阅读全文
posted @ 2018-03-10 19:42 xmj 阅读(532) 评论(0) 推荐(0)
摘要: 每个任务被赋予不同的优先级等级,从0 级到最低优先级OS_LOWEST_PR1O,包括0 和 OS_LOWEST_PR1O 在内。当μC/OS-Ⅱ初始化的时候,最低优先级OS_LOWEST_PR1O 总是被赋给空闲任务idle task 。注意,最多任务数目OS_MAX_TASKS 和最低优先级数是 阅读全文
posted @ 2018-03-10 19:41 xmj 阅读(256) 评论(0) 推荐(0)
摘要: 内核结构 1, 临界区,OS_ENTER_CRITICAL和OS_EXIT_CRITICAL 为了处理临界区代码,必须关中断,等处理完毕后,再开中断。关中断可以避免其他任务或中断进入临界区代码。uC/OS-II定义了这两个宏来实现,但注意一条:调用uC/OS-II功能函数时,中断应该总是开着的。 1 阅读全文
posted @ 2018-03-10 19:41 xmj 阅读(367) 评论(0) 推荐(0)
摘要: MP4文件格式的解析,以及MP4文件的分割算法 mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime。以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的“媒体头”。当然,流媒体点播也可以采用flv格式来做,flv也可以 阅读全文
posted @ 2018-03-10 19:40 xmj 阅读(345) 评论(0) 推荐(0)
摘要: μC/OS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高, 下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。任务级的调度是由函数 OSSched()完成的。中断级的调度是由另一个函数OSIntExt() 完成的,这个函数将在以后描 述。OSSched() 的 阅读全文
posted @ 2018-03-10 19:40 xmj 阅读(184) 评论(0) 推荐(0)
摘要: c#实现P2P文件分享与传输系统 二、设计 在上一篇文章中,介绍了P2P网络的常用模型,并确定了EasyP2P系统的框架,本文将就此设计完成它的主要结构和运作流程。 1. 首先是Tracker Server和Peer这两个最重要的模块: Tracker Server负责Peer的信息的收集和跟踪,并 阅读全文
posted @ 2018-03-10 19:39 xmj 阅读(324) 评论(0) 推荐(0)
摘要: c#实现P2P文件分享与传输系统 一、模型 P2P的概念大家都不陌生,也就是所谓的“点对点传输”,即不直接通过服务器,在两台或多台客户端之间传输数据,实现信息交流和资源共享。P2P技术已经发展了很多年了,虽然理论上已经发展了很多的模型,但在实际的网络环境中(尤其是镇里这种环境),究竟怎样的网络结构才 阅读全文
posted @ 2018-03-10 19:39 xmj 阅读(314) 评论(0) 推荐(0)
摘要: 如何实现一个c/s模式的flv视频点播系统 一、写在前面 视频点播,是一个曾经很热,现如今依然很热的一项视频服务技术。本人最近致力于研究将各种视频格式应用于点播系统中,现已研究成功FLV, F4V, MP4, TS格式的视频点播解决方案,完全支持以上格式中存放H.264编码视频的情况,并将继续研究其 阅读全文
posted @ 2018-03-10 19:38 xmj 阅读(283) 评论(0) 推荐(0)
摘要: c#实现P2P文件分享与传输系统 二、设计 - 续(NAT穿透) 首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续。 上一篇文章介绍了p2p系统Tracker Server和Peer,以及文件描述符,本篇接着讲NAT Server的部分。由于p2p网络中使用udp报文,所以只 阅读全文
posted @ 2018-03-10 19:38 xmj 阅读(544) 评论(0) 推荐(0)
摘要: 用过QQ影音(或其他类似播放器)的可能都知道,QQ影音有一个功能叫“剧情连拍”,可以对一部影片在不同时段进行截图,然后把这些截图放在一张并生成单独的图片。通过剧情图,可以一目了然的看到整部影片的画面风格,也就能大致猜出这部影片的类型,再加上字幕,甚至可以大概猜出影片的故事梗概。本人前些日子针对这个功 阅读全文
posted @ 2018-03-10 19:37 xmj 阅读(574) 评论(0) 推荐(0)
摘要: 0、摘要 今天看到吉日嘎拉的一篇关于管理软件中信息加密和安全的文章,感觉非常有实际意义。文中作者从实践经验出发,讨论了信息管理软件中如何通过哈希和加密进行数据保护。但是从文章评论中也可以看出很多朋友对这个方面一些基本概念比较模糊,这样就容易“照葫芦画瓢”,不能根据自身具体情况灵活选择和使用各种哈希和 阅读全文
posted @ 2018-03-10 19:36 xmj 阅读(26553) 评论(0) 推荐(9)
摘要: 从斐波那契数列说起 我想几乎每一个程序员对斐波那契(Fibonacci)数列都不会陌生,在很多教科书或文章中涉及到递归或计算复杂性的地方都会将计算斐波那契数列的程序作为经典示例。如果现在让你以最快的速度用C#写出一个计算斐波那契数列第n个数的函数(不考虑参数小于1或结果溢出等异常情况),我不知你的程 阅读全文
posted @ 2018-03-10 19:36 xmj 阅读(594) 评论(0) 推荐(0)
摘要: 引言 最近在和同学讨论研究Six Sigma(六西格玛)软件开发方法及CMMI相关问题时,遇到了需要使用Monte-Carlo算法模拟分布未知的多元一次概率密度分布问题。于是花了几天时间,通过查询相关文献资料,深入研究了一下Monte-Carlo算法,并以实际应用为背景进行了一些实验。 在研究和实验 阅读全文
posted @ 2018-03-10 19:36 xmj 阅读(20208) 评论(2) 推荐(3)
摘要: 经常用到ffmpeg中的sws_scale来进行图像缩放和格式转换,该函数可以使用各种不同算法来对图像进行处理。以前一直很懒,懒得测试和甄别应该使用哪种算法,最近的工作时间,很多时候需要等待别人。忙里偷闲,对ffmpeg的这一组函数进行了一下封装,顺便测试了一下各种算法。 简单说一下测试环境,我使用 阅读全文
posted @ 2018-03-10 19:35 xmj 阅读(508) 评论(0) 推荐(0)
摘要: 在编写网络应用的时候数据缓冲区是应该比较常用的方式,主要用构建一个内存区用于存储发送的数据和接收的数据;为了更好的利用已有数据缓冲区所以构造一个缓冲池来存放相关数据方便不同连接更好地利用缓冲区,节省不停的构造新的缓冲区所带的损耗问题。 缓冲区 其实构造一个缓冲区非常简单,根据需分本相关大小的byte 阅读全文
posted @ 2018-03-10 19:34 xmj 阅读(438) 评论(0) 推荐(0)
摘要: 现在我们将在ESFramework Demo -- 文件传送Demo 的基础上,使用ESPlus提供的第四个武器,为其增加P2P通信的功能。在阅读本文之前,请务必先掌握ESFramework 开发手册(04) -- 可靠的P2P 一文中介绍的P2P的基础知识以及相关API的用法。 本Demo主要演示 阅读全文
posted @ 2018-03-10 19:34 xmj 阅读(556) 评论(0) 推荐(0)
摘要: 一、MAKE中的自动变量: $@: 表示target的名字 $%: 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是 "foo.a"。 $<: 表示第一个依赖条件的名字 $?: 表示所有比target更新 阅读全文
posted @ 2018-03-10 19:33 xmj 阅读(135) 评论(0) 推荐(0)
摘要: 零、shell中的内部变量: 1. $?: 表示shell命令的返回值.2. $$: 表示当前shell的pid.3. $!: 最后一个放入后台作业的PID值.4. $0: 表示脚本的名字.5. $1--$9,${10}: 表示脚本的第一到九个参数,和第十个参数.6. $#: 表示参数的个数.7. 阅读全文
posted @ 2018-03-10 19:33 xmj 阅读(208) 评论(0) 推荐(0)
摘要: 零、前言: 该篇博客的Title原计划是“在VC++中调用libmemcached的设计技巧”,可结果却事与原违,原因很简单,移植失败了。尽管结果如此,然而这3天的付出却是非常值得的,原因也很简单,收获非常大。事实上,我曾经在6月份的时候成功移植了当时的最新版本0.49,并写出了下面的博客: htt 阅读全文
posted @ 2018-03-10 19:32 xmj 阅读(498) 评论(0) 推荐(0)
摘要: 以前对压缩算法一无所知,只是知道哈弗曼编码能做这种事情,但是感觉这样的方法奇慢无比。昨天下午看了下号称世界上最快的压缩算法Quicklz,对压缩的基本思路有了一定的了解。一般的压缩程序的要求读入文件之后以便压缩一边输出,而不是去先分析整个文件中的情况之后才做决定采取哪种算法。 Quicklz也不例外 阅读全文
posted @ 2018-03-10 19:31 xmj 阅读(1563) 评论(0) 推荐(0)
摘要: 结果如何呢?我的VC++测试用例还是不能调用该接口的接口方法,只是这次的报错方式有所改变,提示是每个C/C++程序员最不愿意看到的“内存地址访问违规”,这一次我确实被郁闷了,这是为什么呢? 五、gcc和VC++对象模型的差异分析: 在VC++中,C++对象(含有虚函数)在编译后将生成属于自己的对象模 阅读全文
posted @ 2018-03-10 19:31 xmj 阅读(242) 评论(0) 推荐(0)
摘要: 【求职英语】一些英语面试题整理 SkySeraph Nov 3th 2011 HQU Email:zgzhaobo@gmail.com QQ:452728574 Latest Modified Date:Nov 3th 2011 HQU 【自我介绍】 Can you sell yourself in 阅读全文
posted @ 2018-03-10 19:30 xmj 阅读(626) 评论(0) 推荐(0)
摘要: 视频的时代终结了吗? 本文章绝大部分参考吴枫博士的一场报告会,感觉挺有意思,就整理并整合了自己的想法。 摘要: 此篇文章主要讲解了视频编码的流程,并且主要通过讲解H.264,然后并在此基础上讲解了下一代视频编码HEVC的现状,进而发出疑问,对未来视频处理的研究空间和前景的发出一个探讨。 首先简单介绍 阅读全文
posted @ 2018-03-10 19:30 xmj 阅读(135) 评论(0) 推荐(0)
摘要: http://www.cnblogs.com/zhxfl/archive/2011/11/03/2233846.html 这个是笔者之前写过的WriteFile HOOK代码 必须补充对这几个函数的HOOK,才能对WriteFile的所有操作做“比较彻底的拦截”,笔者知道应用层的拦截很容易出现遗漏的 阅读全文
posted @ 2018-03-10 19:29 xmj 阅读(193) 评论(0) 推荐(0)
摘要: 一. 特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null将会丢掉所有写入它的数据,换句换说,当程序将数据写入到此文件时,会认为它已经成功完成写入数据的操作,但实际上什么事都没有做。 阅读全文
posted @ 2018-03-10 19:29 xmj 阅读(151) 评论(0) 推荐(0)
摘要: 早几天,笼统地就经典感慨了一番,接着来个逐一点评,算是有始有终了。经典是用来阅读而非膜拜的道理,自然是明白的,虽然我是属于比较推崇经典那一类的。阅读大致就是一个和作者交流的过程,有兴致时无妨感慨点评一番,算是对作者的一种致敬吧。 1 Steve McConnell - Code Complete: 阅读全文
posted @ 2018-03-10 19:29 xmj 阅读(175) 评论(0) 推荐(0)
摘要: 采集音频和摄像头视频并实时H264编码及AAC编码 0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法。那种方法有一些局限性,不适合实时性质的应用,如:视频会议、视频聊天、视频监控等。本文所使用的技术,适用于这种实时性的应用,通过处理采集出来的音视频 阅读全文
posted @ 2018-03-10 19:28 xmj 阅读(1022) 评论(0) 推荐(0)
摘要: 昨天有一个博友回复,说他已经完成了android系统在windows上的移植,其中比较难的是binder系统的移植。下面是两个demo网址,我看了后倍有感触。 http://v.youku.com/v_show/id_XMzIwMDkxOTQ4.htmlhttp://v.youku.com/v_sh 阅读全文
posted @ 2018-03-10 19:28 xmj 阅读(106) 评论(0) 推荐(0)
摘要: 所有想学习ffmpeg的网友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部开源,编译环境为VC6+SP5+VCPP5。别忘记了顶贴哦。 移植ffmpeg到windows,主要的修改是ffmpeg中VC6不支持C99语法,简单移植步骤如下: 1:首先装好Linux、VMware和 阅读全文
posted @ 2018-03-10 19:27 xmj 阅读(172) 评论(0) 推荐(0)
摘要: H264解码器源码,移植ffmpeg中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过。 程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。 在这个版本中,从H264码流中分割出Nal是在java层做的, 阅读全文
posted @ 2018-03-10 19:27 xmj 阅读(152) 评论(0) 推荐(0)
摘要: 要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏于角落里的金子。本人研究图像至今也历时7年,在慢慢的摸索和累积中也找到了一些相关资料,共享给大家学习 阅读全文
posted @ 2018-03-10 19:26 xmj 阅读(144) 评论(0) 推荐(0)
摘要: C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增 阅读全文
posted @ 2018-03-10 19:23 xmj 阅读(296) 评论(0) 推荐(0)
摘要: 事先声明,本项目参考AOP in C#和园内大神张逸的文章,思路神马的都不是自己的! 为了让项目的代码看起来更干净,需要一个AOP! 于是就实现了一个非常简单的,非常轻量级,有多轻量级呢? 实现的AOP叫做Earthworm(蚯蚓,为什么叫这个?因为它小,它会疏通!,项目的本意也是这样,所以就叫这个 阅读全文
posted @ 2018-03-10 19:22 xmj 阅读(191) 评论(0) 推荐(0)
摘要: 开篇 今天,计算机系统结构的真正挑战不在于内存的容量,而是内存的速度。如果你的软件实际上受到磁盘和内存的等待时间(访问时间)的限制,那么就是再好的 芯片也无济于事。在内存和cpu之间存在着一道很深的鸿沟,而且是越来越深。在过去,每隔一两年,cpu的处理速度就会提升一倍,在相同的时间内,内存的容 量倒 阅读全文
posted @ 2018-03-10 19:21 xmj 阅读(155) 评论(0) 推荐(0)
摘要: 概述 项目接近尾声了,可是在运行时会有memory leak(内存泄露) bug.产品在运行一天后,内存增长致1.4G,而我们产品的初始内存才有70M,问题很严重,决定采用WinDbg工具来分析代码问题有原因到底在哪里. WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工 阅读全文
posted @ 2018-03-10 19:21 xmj 阅读(295) 评论(0) 推荐(0)
摘要: Some Basic Background Story of The Win32 APIs Win32 API背景故事/背景知识 The Win32 application programming interface (API) provides building blocks used by ap 阅读全文
posted @ 2018-03-10 19:20 xmj 阅读(287) 评论(0) 推荐(0)
摘要: 上一篇文章《DIY一个DNS查询器:了解DNS协议》中讲了DNS查询协议的原理和数据结构。经过两个星期的开发,完成了该查询器的编写。期间也遇到了一些问题,如: 1资源记录(Resource Record)中的RDData内容的格式。 2关于压缩编码的指针问题。 3代码冗余结构不清晰。 尤其是压缩编码 阅读全文
posted @ 2018-03-10 19:19 xmj 阅读(281) 评论(0) 推荐(0)
摘要: 最近一直在研究如何让asp.net实现上传大文件的功能,所以都没怎么写技术类的文章了。可惜的是至今还没研究出来,惭愧~~~。不过因为这样,也了解了一下http消息请求的大致过程。我就先简单介绍下,然后再来讲如何利用Telnet来模拟Http请求。讲得不对的地方还希望大家给我指出来。因为内容比较多,所 阅读全文
posted @ 2018-03-10 19:19 xmj 阅读(168) 评论(0) 推荐(0)
摘要: 1.4 光标移动 vi编辑器中的很多命令都是基于光标当前位置的,因此,如何移动光标定位到所需要的位置是一项十分重要的工作,下面进行详细介绍(如无特别说明,下面所讲的命令都是在普通模式下执行)。 1. 向前移动字符 将光标向前移动一个字符可以使用命令为:l、Space键或方向键→。如果在命令前加一个数 阅读全文
posted @ 2018-03-10 19:18 xmj 阅读(300) 评论(0) 推荐(0)
摘要: 要理解一个C程序,仅仅理解组成该程序的符号是不够的。程序员还必须理解这些符号是如何组合成声明、表达式、语句和程序的。 我们先来看看下面的一个语句: 1 ( *( void(*)())0)(); 1 ( *( void(*)())0)(); 1 ( *( void(*)())0)(); 1 ( *( 阅读全文
posted @ 2018-03-10 19:18 xmj 阅读(171) 评论(0) 推荐(0)
摘要: 一、前言 在规模稍微大点的项目中,为了方便快速找到bug的所在,我们往往需要在代码中加入一些调试用的代码,比如加入一些printf,打印出一些重点的信息;加入assert,进行断言判断。这些比较随意的调试代码会使整个系统显得比较凌乱。于是Fred Fish开发了一套用于嵌入代码中的库,开发人员只需要 阅读全文
posted @ 2018-03-10 19:17 xmj 阅读(540) 评论(0) 推荐(0)
摘要: 通常我们设计设计链表都是将数据域放在里面,这样每次需要使用链表的时候都需要实现一个链表,然后重新实现它的相关操作,这里参考Linux系统中的设计实现了一个通用的双向链表,只需要在你的结构里面有一个这个链表的域,就可以使用链表的相关操作了。 注意:这个通用的双向链表是参考Linux系统中的实现,它使用 阅读全文
posted @ 2018-03-10 19:16 xmj 阅读(347) 评论(0) 推荐(0)
摘要: 一、前言 上篇的Connection Manager中,曾提及对于一个新到来的Connection,服务器会创建一个新的线程来处理这个连接。 其实没那么简单,为了提高系统效率,减少频繁创建线程和中止线程的系统消耗,Mysql使用了线程缓冲区的概念,即如果 一个连接断开,则并不销毁承载其的线程,而是将 阅读全文
posted @ 2018-03-10 19:16 xmj 阅读(205) 评论(0) 推荐(0)
摘要: 目录: 1. 内存池 2. 栈 3. Hash表 1.内存池 在一些小的程序里,没什么必要添加内存管理模块在里面。但是对于比较复杂的代码,如果需要很多的内存操作,那么加入自己的内存管理是有必要的。至少有一些好处:能够加快内存的申请和释放;能够轻松的查找内存泄露问题;能够对整个软件的内存消耗做一个比较 阅读全文
posted @ 2018-03-10 19:15 xmj 阅读(118) 评论(0) 推荐(0)
摘要: 在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出“脚本运行时间过长“的提示框,如果出现这种情况说明你的脚本已经失控了。 一个浏览器至少存在三个线程:js引擎线程(处理js)、GUI渲染线程(渲染页面)、浏览器事件触发线程(控制交互)。 1:JavaScript引擎是基于事件驱动单线 阅读全文
posted @ 2018-03-10 19:15 xmj 阅读(578) 评论(0) 推荐(0)
摘要: 实验室最近用到nmi( Normalized Mutual information )评价聚类效果,在网上找了一下这个算法的实现,发现满意的不多. 浙江大学蔡登教授有一个,http://www.zjucadcg.cn/dengcai/Data/code/MutualInfo.m ,他在数据挖掘届地位 阅读全文
posted @ 2018-03-10 19:15 xmj 阅读(3588) 评论(0) 推荐(1)
摘要: [07] Unix进程环境 1、 进程终止 atexit()函数注册终止处理程序。 exit()或return语句: 终止处理程序->终止处理程序->标准I/O清除->_exit()->进入内核。 _exit()直接进入内核。2、 环境表 extern char **environ; 例: for( 阅读全文
posted @ 2018-03-10 19:14 xmj 阅读(132) 评论(0) 推荐(0)
摘要: RSA算法描述: 1) 选择两个大素数 p、q, 计算 n = p*q; 2) 产生 e, d 使: e*d = 1mod(p-1)(q-1) e 与 (p-1)(q-1) 互质 [公钥] e、n [私钥] d、n 3) 加密: c = m^d mod n 4) 解密: m = c^e mod n 阅读全文
posted @ 2018-03-10 18:33 xmj 阅读(1361) 评论(0) 推荐(0)
摘要: 【题 目】输入一个字符串,输出该字符串中最大对称子串的长度。例如输入字符串:“google”,该字符串中最长的子字符串是“goog”,长度为4,因而输出为4。 【思 路1】一看这题就是遍历!没错,我们最直观的往往也是最容易实现的,这里我们暂且不考虑效率的问题。我们的基本思路是:我们如果有一个判断一个 阅读全文
posted @ 2018-03-10 18:32 xmj 阅读(294) 评论(0) 推荐(0)
摘要: 前篇回顾 上篇介绍了linux下C编程基本环境配置以及相关工具使用选择。 不过10个大牛9个用vim,那么咱们就来玩vim。linux下玩c就别依靠图形界面。好吧告别Ide,命令行才是c的王道。 本篇文章感谢名为孙鹤同学的技术支持 感谢有爱的c大牛们 本文中多处使用vim插件(孙鹤提供),这些插件大 阅读全文
posted @ 2018-03-10 18:32 xmj 阅读(214) 评论(0) 推荐(0)
摘要: 设计并实现同时支持多种视频格式的流媒体点播系统 我之前有篇文章介绍过如果实现一个C/S模式的Flv点播系统,Flv格式简单,处理起来也比较轻松,不过,实际工作中,需要点播的影片,岂会只有Flv这一种格式。我们常见的几种视频格式,随便哪一个都要比Flv复杂的多,尤其是本身设计的时候就没有考虑到要通过网 阅读全文
posted @ 2018-03-10 18:31 xmj 阅读(278) 评论(0) 推荐(0)
摘要: 先说那两个让哥震惊的递归问题: 1:用递归实现单链表的倒序输出 2:从二叉查找树中删除节点,并保证还是二叉查找树 同学们可以开始思考这两个问题了,当然你可能N年前就遇到过这两个问题,那么不妨看看,看你是否真的理解了递归。实现这两个问题的代码当然很简单,就在下面。 百度百科中递归的名片:递归做为一种算 阅读全文
posted @ 2018-03-10 18:30 xmj 阅读(157) 评论(0) 推荐(0)
摘要: 今天来分享一下图,这是一种比较复杂的非线性数据结构,之所以复杂是因为他们的数据元素之间的关系是任意的,而不像树那样 被几个性质定理框住了,元素之间的关系还是比较明显的,图的使用范围很广的,比如网络爬虫,求最短路径等等,不过大家也不要胆怯, 越是复杂的东西越能体现我们码农的核心竞争力。 既然要学习图, 阅读全文
posted @ 2018-03-10 18:29 xmj 阅读(232) 评论(0) 推荐(0)
摘要: 一般情况下,IO操作的行为受两种因素的影响: IO操作对象的类型(阻塞还是非阻塞) 获取IO操作结果的方式(同步还是异步). 同步就是指操作的发起和操作结果的获取由调用者完成. 异步指操作发起由调用方完成,操作结果由服务方主动告知. IO操作一般可以分为4种: 同步阻塞IO :调用方调用IO函数,并 阅读全文
posted @ 2018-03-10 18:28 xmj 阅读(422) 评论(0) 推荐(0)
摘要: 本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在VS下编写和调试Win32应用程序和动态链接库(以下简称DLL)。 API钩子是一种高级编程技巧,常常用来完成一些特别的功能,比如词典软件的屏幕取 阅读全文
posted @ 2018-03-10 18:28 xmj 阅读(275) 评论(0) 推荐(0)
摘要: 在很多需要高性能的场合下,锁的设计一直是一个比较关键的问题。无锁队列、读写锁分离的队列在业界以及学术界都已经有很成熟的研究。在网上也有很多资料,但其实有很多实现都是错误的。最近在工作中帮忙追查一个线上问题时,就发现实现一个正确的版本是比较困难的事情。 背景:实现一个循环队列,队列长度已预先分配。支持 阅读全文
posted @ 2018-03-10 18:28 xmj 阅读(366) 评论(0) 推荐(0)
摘要: 搞了几个月的Android应用开发,勉强算是个Android开发者了吧,Android本就是开源的,还是把源代码下载下来自己编译一下,看看是个什么东西,出于好奇,和以后的职业发展,开始了无休止的Android研究过程。。。 这篇连载博客用来记录我从下载源代码到编译的整个过程,开始百度和谷歌了无数资料 阅读全文
posted @ 2018-03-10 18:27 xmj 阅读(207) 评论(0) 推荐(0)
摘要: 为了方便我们每个人的学习,这里将给出Linux Shell高级技巧五篇系列博客的目录以供大家在需要时参阅和查找。 Linux Shell高级技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/12/22/2271167.html一、将输入信 阅读全文
posted @ 2018-03-10 18:26 xmj 阅读(315) 评论(0) 推荐(1)
摘要: 对计算机方面课程有兴趣的同学推荐报名参加斯坦福大学全球计算机方面公开课,只需要填个邮箱报名即可。公开课的老师都是很牛的老师,在课上能学到不少东西,并且一般最后会有个以老师个人名义发的证书。刚过去的这学期我参加了Andrew Ng老师的 Machine Learning 这门课,收获很大,课上有老师的 阅读全文
posted @ 2018-03-10 18:25 xmj 阅读(138) 评论(0) 推荐(0)
摘要: vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO 阅读全文
posted @ 2018-03-10 18:25 xmj 阅读(210) 评论(0) 推荐(0)
摘要: OCCI简介 Oracle® C++ Call Interface (OCCI) 是一套应用程序编程接口,它允许C++程序与一个或者多个Oracle数据库进行交互.OCCI给予你强大的数据库操作能力,比如说执行SQL,处理存储过程等. OCCI主要是提供给有以下需求的用户: 希望借助系统内存和网络连 阅读全文
posted @ 2018-03-10 18:24 xmj 阅读(2134) 评论(0) 推荐(0)
摘要: 在阅读文章前,您应该具备基本的存储器层次结构知识,至少要了解局部性原理。要详细了解cache基本原理,可以参考本书《深入理解计算机系统》中存储器体系结构一章: 带着疑问来看文章,cache对于程序员是不可见的,它完全是由硬件控制的,为什么在linux内核中还有cache.h这个头文件,定义了一些关于 阅读全文
posted @ 2018-03-10 18:11 xmj 阅读(341) 评论(0) 推荐(0)
摘要: 我们的图片大部分都是可以转换成base64编码的data:image。 这个在将canvas保存为img的时候尤其有用。虽然除ie外,大部分现代浏览器都已经支持原生的基于base64的encode和decode,例如btoa和atob。(将canvas画布保存成img并强制改变mimetype进行下 阅读全文
posted @ 2018-03-10 18:08 xmj 阅读(193) 评论(0) 推荐(0)
摘要: 目录 前言 1. 对外语学习的主要误区 2. 造成“哑巴英语”的最主要原因 3. 英语环境的问题 4. 特殊群体 5. 语言关键期之争 6. 语言条件反射 7. 关于记忆力 8. 中国“英”雄 9. 二律背反? 10. 世纪之战 11. “学得”-“获得”之辩 12. 克氏理论 实践篇 第一阶段、早 阅读全文
posted @ 2018-03-10 18:07 xmj 阅读(687) 评论(0) 推荐(0)
摘要: 关于哈希表C实现,写了两篇学习笔记,不过似乎网上流传最具传奇色彩的莫过于暴雪公司的魔兽文件打包管理器里的hashTable的实现了;在冲突方面的处理方面,采用线性探测再散列。在添加和查找过程中进行了三次哈希,第一个哈希值用来查找,后两个哈希值用来校验,这样可以大大减少冲突的几率。 在网上找了相关代码 阅读全文
posted @ 2018-03-10 18:06 xmj 阅读(243) 评论(0) 推荐(0)
摘要: 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了; 哈希表在像Java、C#等语言中是与生俱来的。可是在C 阅读全文
posted @ 2018-03-10 18:05 xmj 阅读(381) 评论(0) 推荐(0)
摘要: 上次大致分析了一下哈希表的链地址法的实现,今天来分析一下另一种解决哈希冲突的做法,即为每个Hash值,建立一个Hash桶(Bucket),桶的容量是固定的,也就是只能处理固定次数的冲突,如1048576个Hash桶,每个桶中有4个表项(Entry),总计4M个表项。其实这两种的实现思路雷同,就是对H 阅读全文
posted @ 2018-03-10 18:05 xmj 阅读(170) 评论(0) 推荐(0)
摘要: 背景: 在做XXX编译器检证时经常需要区分是代码端错误,还是编译器端错误,因此对代码进行调试是必不可少的。但是狗日的甲方并没有提供对应的调试器XXXDB,而用GDB调试XXX生成的可执行程序很不稳定,经常出现异常,干脆自己动手,写mini调试器,顺便学习一下开发一个调试器到底需要哪些知识。 目标: 阅读全文
posted @ 2018-03-10 18:05 xmj 阅读(1049) 评论(0) 推荐(0)
摘要: 上一章解决了嵌入式Linux的“学什么”问题,这一章则具体来说一下“怎么学”。 只要做好以下3点: 1.学习顺序。学习任何东西都应该由浅入深,不能一口吃下一个大胖子,得循序渐进。很多刚开始想学习Linux内核开发的人,第一件事就是抱着内核的书使劲的啃,以为自己会一点C语言了就一定能看懂,甚至有的人连 阅读全文
posted @ 2018-03-10 18:04 xmj 阅读(167) 评论(0) 推荐(0)
摘要: 分享一些我在Ubuntu下常用的软件。 Goolge Chrome/Firefox/Thunderbird这些重量级的跨平台的软件虽然很强大,但大家应该都比较熟悉了,没有太多必要在这里介绍。本文涉及到的软件可能不是那么出名,但都非常出色。 截图工具Shutter 本文的截图均是采用Shutter,自 阅读全文
posted @ 2018-03-10 18:03 xmj 阅读(979) 评论(0) 推荐(0)
摘要: 今天看了一个帖子,win7系统通过笔记本的无线网卡,启用虚拟Wifi功能共享上网,自己尝试了一下,感觉很好用,至少没有无线路由的自己,手机可以上wifi了,更新软件玩微信等等,都方便多了,好了,废话不多说,先介绍下吧。 首先,先确定自己的笔记本网卡支持“启动承载网络”的功能,使用管理员运行cmd命令 阅读全文
posted @ 2018-03-10 18:03 xmj 阅读(117) 评论(0) 推荐(0)
摘要: 要想学好嵌入式Linux,首先要解决两个重要问题: 1. 学什么? 2. 怎么学? 首先解决第一个问题。 嵌入式Linux的系统架构包括软件和硬件两个部分,如下图: 再来看看一个成熟的嵌入式产品的开发流程是怎么一个过程: 1.硬件开发 责任人: 硬件工程师 负责部分:基于EVM板, 添加、修改、删除 阅读全文
posted @ 2018-03-10 18:03 xmj 阅读(230) 评论(0) 推荐(0)
摘要: 后天就要回老家了,除了团团年估计也没有其他好玩的,就琢磨下点经典文章带回去看看。 Google一番找到了老赵很早以前的文章: http://www.cnblogs.com/JeffreyZhao/archive/2009/03/02/1401259.html 说来惭愧,里面的十余篇文章我只看过一篇, 阅读全文
posted @ 2018-03-10 18:00 xmj 阅读(149) 评论(0) 推荐(0)
摘要: (一)基本概念 sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 (二)使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) ,如sizeof(int) 2、用于变量 sizeof使用形式:s 阅读全文
posted @ 2018-03-10 17:50 xmj 阅读(380) 评论(0) 推荐(0)
摘要: 一:C语言中的内存机制 在C语言中,内存主要分为如下5个存储区: (1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。 (2)堆(Heap):由程序员用malloc/calloc/realloc分配,free释放。如果程序员忘记free了,则会造 阅读全文
posted @ 2018-03-10 17:49 xmj 阅读(584) 评论(1) 推荐(1)
摘要: 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法。本文将带你深入了解协同过滤的秘密。下面直接进入正题 1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如 阅读全文
posted @ 2018-03-10 17:49 xmj 阅读(211) 评论(0) 推荐(0)
摘要: 慢启动定义 慢启动,是传输控制协议使用的一种阻塞控制机制。慢启动也叫做指数增长期。慢启动是指每次TCP接收窗口收到确认时都会增长。增加的大小就是已确认段的数目。这种情况一直保持到要么没有收到一些段,要么窗口大小到达预先定义的阈值。如果发生丢失事件,TCP就认为这是网络阻塞,就会采取措施减轻网络拥挤。 阅读全文
posted @ 2018-03-10 17:48 xmj 阅读(527) 评论(0) 推荐(0)
摘要: 前段时间接手了一个网络游戏前端连接服务器的开发工作,由于服务器需要在windows平台上部署,并且需要处理大量的客户端连接,因此采用IOCP来做为服务器端的编程模型就成了不二选择。虽然我对服务器开发并不陌生,但我一直以来对IOCP抱着不屑一顾的态度,感觉这个编程模型太过复杂,并不是一个良好的系统设计 阅读全文
posted @ 2018-03-10 17:47 xmj 阅读(202) 评论(0) 推荐(0)
摘要: 前言 虽然网络编程的socket大家很多都会操作,但是很多还是不熟悉socket编程中,底层TCP/IP协议的交互过程,本文会一个简单的客户端程序和服务端程序的交互过程,使用tcpdump抓包,实例讲解客户端和服务端的TCP/IP交互细节。 TCP/IP协议 IP头和TCP头格式如下: 单单看这些头 阅读全文
posted @ 2018-03-10 17:47 xmj 阅读(345) 评论(0) 推荐(0)
摘要: 网上有很多关于程序员必读的书单,感觉都不是很有代表性。今天无意看到了一篇总结还算不错的书单。和园友们分享。以下书单中提到的书看过一部分,给我的感觉是经典就是经典。读过之后确实得到了很多东西,它们都潜在的影响着我。透过书更能感受到的是一种思想,理性,透过经典,能得到质的升华。 另如果园友有好书、何不一 阅读全文
posted @ 2018-03-10 17:46 xmj 阅读(128) 评论(0) 推荐(0)
摘要: 博文技术有限,重在学习交流,有错误大家指正。 思路: 传统的方法调用 >委托的出现解决了什么问题 >委托的绑定方法 >总结 1.传统的方法调用 缺点:100个方法就要调用100次,如果每个人 对方法的需求不一样,就不能很好的处理了。有人想展示跳舞,有人想唱歌,更有想一起展示。 2.引入 枚举试试看 阅读全文
posted @ 2018-03-10 17:45 xmj 阅读(152) 评论(0) 推荐(0)
摘要: 上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧。 网络游戏前端服务器的需求和设计 首先介绍一下这个服务器的技术背景。在分布式网络游戏服务器中,前端连接服务器是一种很常见的设计。他的职责主要有: 1. 为客户端和后端的游戏逻辑服务器提供一个软件路由 —— 客户端一旦和前端服务器 阅读全文
posted @ 2018-03-10 17:45 xmj 阅读(178) 评论(0) 推荐(0)
摘要: 开篇 编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。 好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。 前两篇博文 局部性原理浅析 介绍了程序的局部性原理,如何写出局部性良好代码。 提高程序性能、何为缓存 讨论 阅读全文
posted @ 2018-03-10 17:44 xmj 阅读(166) 评论(0) 推荐(0)
摘要: 微软一站式示例代码库2012年2月新代码示例发布。我们发布了8个全新的示例代码,内容包含Windows Azure, Directory Services, Hyper-V, TFS, WDK和Windows SDK等技术。你可以通过示例代码浏览器,或示例代码浏览器Visual Studio扩展按需 阅读全文
posted @ 2018-03-10 17:44 xmj 阅读(162) 评论(0) 推荐(0)
摘要: 编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择。但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱。每个程序都 Copy / Parse 类似的代码再进行修改,实在有点情何以堪。因此本座利用一些闲暇 阅读全文
posted @ 2018-03-10 17:43 xmj 阅读(1124) 评论(0) 推荐(0)
摘要: 我的网络编程笔记, 因为最近又要做Linux下的网络编程,故重新修订, 其中一些内容参考了文末的链接及文章 1. 基本概念 2. 基本接口 2.1. 打开一个socket 2.2. 将socket绑定定指定的端口—bind 2.3. 侦听socket—listen (服务器端) 2.4. 等待接收请 阅读全文
posted @ 2018-03-10 17:42 xmj 阅读(275) 评论(0) 推荐(0)
摘要: KM算法的基本概念: http://baike.baidu.com/view/739278.htm http://baike.baidu.com/view/501092.htm 看这个算法之前,最好先看下匈牙利算法,KM算法 是建立在匈牙利算法基础上实现的 对于这个算法最有误区的地方,个人感觉还是在 阅读全文
posted @ 2018-03-10 17:41 xmj 阅读(209) 评论(0) 推荐(0)
摘要: 引言 “Oops,系统挂死了..." “Oops,程序崩溃了..." “Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。但现实情况,许多错误日志打印模凌两可, 阅读全文
posted @ 2018-03-10 17:37 xmj 阅读(285) 评论(0) 推荐(0)