
编程算法
文章平均质量分 92
E等于MC平方
这个作者很懒,什么都没留下…
展开
-
一文讲透赫夫曼树算法
构造一棵赫夫曼树的步骤其实不复杂,简单来讲就是权值大的尽量靠近根结点,而且是越大的越靠近。这样得出的效果是权值越大的结点,可以经过相对较少的距离到达,从而使程序的效率提高。这里的所说的效率,即包括时间上也包括空间上,后面我会讲到两个应用例子,分别就是一个时间上的优化,一个空间上的优化。原创 2022-05-03 09:26:14 · 1372 阅读 · 0 评论 -
几个小细节帮你提升java代码运行效率
引言千万不要小看代码细节的优化,有时候一个很小的优化就要你的代码执行效率数倍提升,如果这个优化点调用比较频繁,甚至有可能解决你整个系统的性能瓶颈。orElse和orElseGet官方文档上是这么说的,orElse:Return the value if present, otherwise return other.orElseGet:Return the value if present, otherwise invoke other and return the result of that原创 2020-07-08 23:16:54 · 280 阅读 · 0 评论 -
ARM中断机制小述
根据自己的理解, 对lpc2xxx系列的ARM7的中断机制做一个简单的描述.中断是嵌入式系统很重要的一个功能. ARM提供IRQ和FIQ两种中断模式. 实际应用中,IRQ用的比较多. IRQ的中断响应过程(比如保存状态寄存器等)我在这里就不说了,随便找本介结ARM的书都可以找到. 当系统检测到一个中断时(中断源),首先去中断向量表找到对应中断源的中断服务程序的入口地址. ARM支持32个...原创 2010-01-29 17:00:00 · 1544 阅读 · 0 评论 -
2410 bootloader分析(二)
接下来几行一直到while循环就是打印公司log,设置led闪烁等操作,难度不大, 不分析.下面就直接进入bootloader菜单功能分析了. 如下图所示:Bootloader共有七个功能, 每一个功能都涉及到很多知识, 比如0号功能usb下载文件, 就涉及到usb的很多知识,如描述符,枚举等,每一个都可以专门写一篇文章来分析了. 我这里只分析加载操作系统这个功能. 以 加载w...原创 2010-02-03 12:04:00 · 1934 阅读 · 2 评论 -
KMP算法模式匹配
在一个长串中查找一个子串是较常用的操作。各种信息检索系统,文字处理系统都少不了。本文介绍一个非常著名的KMP模式匹配算法用于子串查找原创 2014-07-15 21:49:56 · 11154 阅读 · 1 评论 -
集合划分问题
转载请注明出处http://blog.youkuaiyun.com/pony_maggie/article/details/18048599作者:小马思考下面一个问题,给定正整数n和m,计算出n个元素的集合可以划分为多少个不同的由m(m 这类题可以叫做集合划分问题。面试题里经常出现。先来考虑一个问题,这个算法有实际的应用吗?可能用在类似资源分配的例子上,比如有n个资源,原创 2014-07-12 22:21:56 · 11606 阅读 · 1 评论 -
关于符号位扩展你又知道多少
先看两段代码, 一个是C,一个是java。int _tmain(int argc, _TCHAR* argv[]){ char b = 0x83; short s1 = (short)b; short s2 = (short)(b&0xff); printf("s1 = %d\n", s1); printf("s2 = %d\n", s2); r...原创 2014-07-07 21:48:16 · 17419 阅读 · 2 评论 -
关于栈及其应用示例
作为一种常用的数据结构, 了解栈对于算法的学习是非常必要的。栈有先进后出的特点,栈底指向数据表中的第一个元素,栈顶指向最后一个元素的下一个位置。如下图所示:栈和线性表类似,也是有两种存储结构,分别为顺序结构和链式结构。大部分情况下,栈使用前者,这和它的使用场景有关,因为通常情况下我们不会对栈进行频繁地,随机地插入,删除操作。下面是我用顺序结构实现的栈,这个栈有个特点就是...原创 2014-06-14 21:38:18 · 14170 阅读 · 0 评论 -
求一个集合的所有子集问题
一个包含n个元素的集合,求它的所有子集。比如集合A= {1,2,3}, 它的所有子集是:{ {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}, @}(@表示空集)。这种问题一般有两种思路,先说说第一种,递归。递归肯定要基于一个归纳法的思想,这个思想用到了二叉树的遍历,如下图所示:可以这样理解这张图,从集合A的每个元素自身分析...原创 2014-06-15 21:44:56 · 35325 阅读 · 5 评论 -
msxml dom 全解析
转载请注明出处作者:小马 从题目你应该获取到以下的信息:1 本文不讲xml,只讲msxml2 msxml又包括很多方面,比如DOM,SOM,XSLT等,本文只讲DOM好了,现在开始... 一 关于msxml DOM什么是msxmlMSX原创 2011-08-21 17:09:21 · 9530 阅读 · 3 评论 -
用一个示例讲解我如何一步步实现高并发服务(基于C++)
去年做了一个远程升级的服务。客户端连接此服务可以下载更新程序。简单点说就是个TCP sever。基于C++。运行环境是centOS 6.5。刚开始客户端数量少而且访问不频繁,所以没太关注并发的问题。当时用工具测试大概只能支持的40次/秒的并发访问,而且已经有数据串包的情况出现了。最近有空做了不少的优化并记录了笔记备忘。下面给出的代码都不是完整的项目源码,我只是截取了关键部分用于说明主题我选择的测试工原创 2017-03-29 11:33:39 · 13691 阅读 · 2 评论 -
Windows 下openssl安装与配置
网上方法很多,大部分是针对32位机的,自己的电脑因为是win7,64位,摸索了很久才安装成功. 环境WIN7, 64位, vs2005 下载ActivePerl配置过程中需要生成一些mak文件,这些生成代码用perl脚本生成,所以要安装一个ActivePerl. 网址: http://www.activestate.com/activeperl/ 我下载了两...原创 2013-02-18 19:03:17 · 167317 阅读 · 21 评论 -
Tinyhttpd源码剖析(一)
转载请注明出处http://blog.youkuaiyun.com/pony_maggie/article/details/49838107 作者:小马 一 介绍 Tinyhttpd是一个非常轻量级的http sever。代码不超过一千行。麻雀虽小,五脏俱全。反正我看完之后觉得很是畅快,收获很大。细心研究一下会对linux网络编程,http协议等概念有新的认识。 ...原创 2015-11-14 19:48:15 · 4100 阅读 · 0 评论 -
webbench源码分析
Webbench是一个在linux下使用的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。源码加起来不到600行。下载链接代码虽然不多,但是功能非常实用,通过阅读该代码对于学习linux下的socket, fork机制以及命令行参数解析都很有帮助。下面是我阅读该代码记录的笔记。源码文件就两个,一是so原创 2016-05-27 14:37:23 · 8267 阅读 · 0 评论 -
SSL socket 通讯详解
转载请注明出处 http://blog.youkuaiyun.com/pony_maggie/article/details/51315824作者:小马最近刚弄完一个ssl socket通讯,整理个笔记。SSL原理比如 A要和B互相通讯,为了安全他们希望双方发送的数据都是经过加密的。这就要求双方有一个共同的加解密密钥(一般加密都是基于对称加密算法)。如何才能让双方都拥有同一个密钥呢?有人...原创 2016-05-04 16:22:53 · 26882 阅读 · 2 评论 -
Tinyhttpd源码剖析(二)
转载请注明出处http://blog.youkuaiyun.com/pony_maggie/article/details/49838191 作者:小马 继续看execute_cgi函数, if (strcasecmp(method, "GET") ==0) { while ((numchars > 0) && strcmp("\n", buf...原创 2015-11-14 19:58:41 · 2489 阅读 · 2 评论 -
指针访问与数组访问的效率分析
转载请注明出处作者:小马 很多人都知道指针访问比数组访问效率高, 但很少人明白其中的原理, 这篇文章从汇编级别上分析一下原因.我用一个"reverse"函数来作为例子, 分别用指针和数组的形式来实现这个函数.//指针访问void reverse(cha原创 2011-09-05 09:49:27 · 6126 阅读 · 2 评论 -
看看斯坦福大学是如何教学生编程的
最近在看斯坦福大学的<<programming abstractions>>课程,觉得其中的一节课讲得特别好,大概50分钟左右的一节课的视频, 仅仅一节课,就让我深刻体会到国内大学的计算机教育跟美国的差别.可以回忆一下自己在学校读书时, 老师是怎么讲C或c++语言的. 反正我就记得几乎没见过老师自己敲过几行代码, 都是照着PPT读.斯坦福这节课主要是讲...原创 2010-06-18 13:15:00 · 3980 阅读 · 6 评论