else
文章平均质量分 67
windmissing
喜欢编程,喜欢思考,方向明确
展开
-
linux中内存泄漏的检测(五)记录内存泄漏的代码
到目前为止,先后通过wrap malloc、new函数重载和计算指针内存大小的方法,基本上满足了对内存泄漏检测的需要。如果发现了内存泄漏,那么就要找到内存泄漏的地方并且修正它了。茫茫代码,如何去找?如果能根据未释放的内存找到申请它的地方就好了。我们今天就是要做这个事情。想要根据内存地址查出申请者的信息,那么在一开始申请的时候就要建立地址与申请者之间的映射。1.内存地址内存地址,是一个unsigned原创 2016-01-23 10:45:10 · 3142 阅读 · 0 评论 -
linux中内存泄漏的检测(一)最简单的方法
什么是内存泄漏内存泄漏是指程序动态申请的内存在使用完后没有释放,导致这段内存不能被操作系统回收再利用。 例如这段程序,申请了4个字节的空间但没有释放,有4个字节的内存泄漏。#include <iostream>using namespace std;int main(){ int *p = new int(1); cout <<*p<<endl; return 0原创 2016-01-21 09:12:36 · 10078 阅读 · 1 评论 -
天之道,权衡之道
损有余而补不足,天之道也。—《黄帝内经》有没有觉得这句话很熟悉?它其实出自黄帝内经。 而关于阴阳理论最重要的一点便是阴阳自和(现在通常译为“中庸”)。 正如健康的人是阴阳之间的平衡。 当某一方过于强盛,就损之,某一方过于虚弱,就补之。 怎样才算是平衡呢?关键就在于找准平衡点了。这便是玄机所在。 因为平衡点的位置因人而异、因时而异、因事而异动态调整的。并没有什么标准。 如果一定要说有什么原创 2015-10-27 11:18:09 · 2785 阅读 · 0 评论 -
持续迭代与持续集成
天有其时,地有其材,人有其治,夫是之谓能参。—《询子》读中国古代哲学,首先感受到的是它的整体思维。 例如天地人一体观,讲究在看待任何事物时,都要把它们放置于天、地、人三大要素构成的宇宙框架中去分析、衡量,以寻找他们的本质和规律,预测它们的未来变化。 基于中国古代哲学的中医也是如此,认为为医之道,应该上知天文,下知地理,中知人事,综合考虑自然环境、社会环境、个人气质,把人体地生理、病理变化放在天原创 2015-10-27 09:08:21 · 5113 阅读 · 3 评论 -
读哲学书笔记
最近看了一些关于中国古代哲学以及中医相关的书。竟然发现,中国古代哲学的思维方式在计算机领域无处不在。 虽然想法有点奇怪,但是遇到问题暂时没有想法时,或许也能成为一种启发。 以下是我的理解:整体与部分的对立统一:持续迭代与持续集成 阴阳交感万物化生:算法+算法=新算法 天之道权衡之道:无处不在的平衡 运动是绝对的:精确与模糊 抽象-哲学与计算机的共同点(之一)把几千年前的中国古代哲学与计原创 2015-10-27 19:35:48 · 1723 阅读 · 0 评论 -
抽象-哲学与计算机的共同点(之一)
在中国古代,阴阳最原始的含义就是指阳光的向背。随着其含义的不断扩展和衍化,最终上升到了哲学的高度,将阴阳理解为“相互对待的两端”。 然后从哲学的高度,分析“相互对待的两端”的关系与属性,将这一理论结果再用到具体的实践中。 根据实践的结果,对理论去糙取精,并进一步指导新的实践活动。我所理解的抽象,就是将具体事物上升到理论高度,从理论高论分析问题,再用于实践的过程。这一过程,不管在哲学及中医中,还是原创 2015-10-27 19:23:04 · 2575 阅读 · 1 评论 -
模糊与精确
背景:最近看了一些关于中国古代哲学以及中医相关的书。竟然发现,中国古代哲学的思维方式在计算机领域无处不在。中国古代哲学中,有一个非常经典的思想就是中和思想(现代书籍中译为中庸思想)。中和思想来源于阴阳理论。以下是关于阴阳理论的主要内容:以下是我的理解: 盖阴阳者,万物之终始,死生之本,逆之则灾害生,从之则苛疾不起,故能取法以和调。—《黄帝内经》我在读研时做过一些图像处理的研究原创 2015-10-24 12:15:25 · 3818 阅读 · 1 评论 -
算法 + 算法 = 新算法
道生一,一生二,二生三,三生万物。—道德经我们都知道,基础的搜索算法有深搜DFS和广搜BFS。它们的搜索效率都差不多,都是O(E)。只是对于不同的搜索特点,有各自适用场合。 假如有这样一棵树,在写搜索算法之前先分析一下。 如果目标结点在叶子上的可能性非常大,那么通常用深搜。 如果希望目标结点的位置尽可能地离根结点近,那么通常用广搜。 如果目标结点与位置无关,而是每条路径都有一个权值,权原创 2015-10-24 15:43:56 · 5810 阅读 · 5 评论 -
for what? so what?
每次,朋友得知我维护着这样一个博客,都会问这样的问题: 写这个有什么用?能让你出名吗?能让你赚钱吗?能被很多人用吗?我不知道怎么回答。 为名?为利?为改变全世界? 我只能说“呵呵”。从来没有期待过,能得到什么。只是感谢自己多年的坚持。原创 2015-10-20 15:53:54 · 1388 阅读 · 1 评论 -
APAC Day of Coderetreat 2015
时间:2015年6月11日 地点:杭州滨江诺基亚大厦 参与者:来自滨江各个IT公司的大牛与菜鸟们题目: 今年的题目还是game of life https://zh.wikipedia.org/wiki/%E5%BA%B7%E5%A8%81%E7%94%9F%E5%91%BD%E6%B8%B8%E6%88%8F 生命游戏是一個零玩家遊戲。它包括一个二维矩形世界,这个世界中的每个方格居住着原创 2015-06-16 20:15:02 · 923 阅读 · 1 评论 -
CSDN学院课程计划
计划五一之后在CSDN学院上放一些关于算法方面的课程。 为了课程更具针对性,关于课程的内容、形式、难度等方面想征求大家的意见,希望有兴趣的同学留言或者联系我。我这里列举了一些,供大家参考 内容: 1.以《算法导论》为主线,按章节讲解 2.以数据结构为主线,分别讲解以不同数据结构为基础的算法 3.以ACM常用算法为主线形式: 1.介绍基础算法 2.结合面试笔试题目 3.结合《算法导论》原创 2015-04-21 22:08:34 · 1514 阅读 · 2 评论 -
LychrelNumber题目分析
题目:Software Competition: Lychrel NumberA Lychrel number is a natural number that cannot form a palindrome through the iterative process of repeatedly reversing its digits and adding the resulting numb原创 2015-01-23 21:55:28 · 1485 阅读 · 5 评论 -
linux中内存泄漏的检测(二)定制化的malloc/free
《linux中内存泄漏的检测(一)最简单的方法》介绍了最简单的内存泄漏检测方法,这种方法虽然简单,却有很多现实的问题,导致它不能用于实际的生产中。直接使用这种方法肯定是不现实的,因为:(1)把整个工程里所有调用malloc/free的地方都改成my_malloc/my_free,代码改动很大。(2)通常动态库和静态库的代码是没有权限修改的。今天就来解决这个问题,动态地决定让程序使用自己的还是系统的内原创 2016-01-21 09:13:46 · 5468 阅读 · 2 评论 -
linux中内存泄漏的检测(三)定制化的new/delete
《linux中内存泄漏的检测(二)定制化的malloc/free》中的__wrap方法只解决了C的问题,这一节介绍怎么让C++中的new/delete也能方便地插入计数代码。wrap方法尝试可不可以使用__wrap_new/__wrap_delete?我们试试看。我写了这样的测试代码#include <iostream>using namespace std;int count = 0;void原创 2016-01-21 09:14:59 · 2946 阅读 · 0 评论 -
eclipse插件开发 - 打log
eclipse插件在开发过程中可以通过System.out.println(message)打log,测试时通过Console查看log。 插件到加载到真实环境中后,这些log就看不到了。解决方法IProject project = null; ILog log = Activator.getDefault().getLog();Status status = new Status(IS原创 2016-12-22 18:11:09 · 1569 阅读 · 0 评论 -
atom init文件
When Atom finishes loading, it will evaluate init.coffee in your %USERPROFILE%\.atom directory, giving you a chance to run CoffeeScript code to make customizations. Code in this file has full access to翻译 2016-11-30 08:57:54 · 1075 阅读 · 0 评论 -
eclipse实用技巧(整理)
读代码 快捷键 作用 tag F2 当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即Show Tooltip F3 跳转到定义处 F12 激活编辑器 CTRL + e/pg dn/pg up 快速转换Tab页面 CTRL + G 工作区中的声明 搜索 Ctrl+H 打开搜索对话原创 2016-11-30 08:55:48 · 707 阅读 · 2 评论 -
C语言开源项目-tinyhttpd
tinyhttpd 是一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。main |<--------------------^ V |start ----> start_up_port -原创 2016-11-16 21:04:00 · 773 阅读 · 0 评论 -
缓冲区溢出攻击
作者:Tang Zhemingstrcpy 是C语言中最常用的函数之一,今天我们将要看到的就是如何利用strcpy的错误而导致的一次匪夷所思的函数调用。实验例子如下:void copyString(char* s){ char buf[10]; strcpy(buf, s);}作为一个合格的C语言程序员,当然不应该出现这样的代码,因为这样的函数可能会导致数据溢出,但是很遗憾在现实原创 2016-03-31 14:57:49 · 1081 阅读 · 0 评论 -
一次单元测试讨论引发的奇想
作者:Zhang Yang近日,听了一段关于单元测试的讨论,在回家路上细细品味时产生了一些想法,这里记录下来,大家一起探讨。单元测试的讨论当时是这样一件事:项目上的一个子系统(subsystem)刚刚增加了单元测试的测试用例, 这些用例在开发人员那里编译是没有问题的,但是在CI中总是失败。原因是单元测试的makefile文件中,使用了产品工程中的一个环境变量${ENV_ROOT},该变量用于指示外部原创 2016-03-31 09:59:54 · 787 阅读 · 0 评论 -
linux中内存泄漏的检测(四)记录泄漏的大小
《linux中内存泄漏的检测(三)定制化的new/delete》讲到,利用C++的函数重载的特性,使C++的代码,也能方便地为new/delete加上用于检测内存泄漏的统计代码。然而,也因此引入的新的问题。目前的统计方式仅仅统计申请/释放内存的次数,并没有统计每次申请/释放内存的大小。 这种方法对于C来说是够用了,因为在C中申请和释放的大小是相同的,而在C++中就不一定了。 考虑以下两种情况:(原创 2016-01-23 10:42:16 · 4240 阅读 · 1 评论 -
logstash grok解析
在《本地搭建ELK系统》中,在本地搭建了一个非常简单的ELK系统。其中logstash从本地日志文件中读取信息并交给elasticsearch。然而直接把原始未加工的日志交给elasticsearch没有什么意义。logstash还有一个重要的工作就是解析日志。把解析出来的关键字与日志本身共同交给elasticsearch,elasticsearch才能很好地建立日志索引。logstash支持多种解原创 2016-01-24 11:51:39 · 18884 阅读 · 0 评论 -
本地搭建ELK系统
ELK系统主要由三部分组成,分别是elasticsearch、logstash、kibana。ELK系统收到推送过来的日志后,首先由logstash解析日志中的字段,分解成一个一个的关键字。elasticsearch将关键字与日志信息关联起来,以一种特定的格式化方式存储数据到硬盘。kibana提供与用户的交互界面,根据用户需求,从elasticsearch中读取信息并在网页上显示。本文以Redhat原创 2016-01-24 11:39:43 · 3315 阅读 · 1 评论 -
技术思想与技术细节
一本《算法导论》看了七年,这曾是我自豪的,也是我现在困惑的。 我花了那么多时间在算法,可是无论是上课或是工作,考研或是面试,都看不到它的价值。 要说学它没用,又似乎每次面试都比较顺利,为什么呢?为什么学了那么久的算法,却从未感觉它给我带来什么实际的价值? 其实,我从来没有真正学会过算法。 且不说算法的博大精深,千变万化。即使一本《算法导论》,也只是学习了其中几章中的几个基础算法,离学会还差得原创 2015-04-11 08:45:29 · 1444 阅读 · 2 评论 -
体验了一下CODE代码托管平台
优点: 1.在一个单独的网页上浏览代码,而不是在原来的博文界面看代码,这样可以同时看文章和代码,不用经常上下跳转 2.可以把许多文章的代码联系起来 3.不用担心文章被盗 4.本地代码修改之后,只需要提交一个读者就能看到最新的代码,而不用再去一个一个地更新文章 5.读者发现错误可以直接修改代码 缺点: 1.网页上的一个tab是8个字符,而我的代码里是4个字符,导致代码对齐不好看 2.只原创 2015-03-28 16:30:06 · 1193 阅读 · 1 评论 -
虚拟机中的Linux安装VMware Tools
操作过程如下:[root@localhost ~]# cd /[root@localhost /]# lsbin dev home lost+found misc net proc sbin srv tftpboot usrboot etc lib media mnt opt root selinux sys tmp转载 2012-06-13 13:39:40 · 9786 阅读 · 0 评论 -
二分图带权匹配-Kuhn-Munkres算法(有修改)
KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B[i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j), A[i]+B[j]>=w[i,j]始终成立。KM算法的正确性基于以下定理: * 若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j)构成的转载 2012-05-18 16:47:44 · 4418 阅读 · 1 评论 -
数据挖掘领域经典算法
偶见网页数据挖掘领域十大经典算法,心血来潮,在学习的同时也想验验有哪些知道哪些实现过。2006年12月,国际权威的学术组织the IEEE International Conference on Data Mining (ICDM)闲着没事或者为了提高点会议知名度评选了数据挖掘领域的十大经典算法。首先来看看参加评选的18个候选算法。1:C4.5C4.5就是一个决策树算法,它是决策树(决转载 2012-02-16 14:23:46 · 2303 阅读 · 0 评论 -
后缀数组
概述 在字符串处理当中,后缀树和后缀数组都是非常有力的工具,其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料。其实后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也不太逊色,并且,它比后缀树所占用的空间小很多。基本定义1.子串字符串 S 的子串 r[i..j] , i ≤ j ,表示 r 串中从 i 到 j 这一段,原创 2011-12-29 18:59:37 · 1011 阅读 · 0 评论 -
高斯消元法
高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。转载 2012-01-10 15:26:55 · 16021 阅读 · 0 评论 -
博弈问题及SG函数
转载自http://blog.csdn.net/logic_nut/archive/2009/10/22/4711489.aspx推荐看看:http://www.math.ucla.edu/~tom/学习理论在这里:http://www.math.ucla.edu/~tom/Game_Theory/Contents.html 博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大转载 2012-01-07 21:09:29 · 1109 阅读 · 0 评论 -
P04: 混合三种背包问题
P04: 混合三种背包问题问题如果将P01、P02、P03混合起来。也就是说,有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。应该怎么求解呢?01背包与完全背包的混合考虑到在P01和P02中给出的伪代码只有一处不同,故如果只有两类物品:一类物品只能取一次,另一类物品可以取无限次,那么只需在对每个物品应用转移方程时,根据转载 2012-01-07 16:17:09 · 1108 阅读 · 0 评论 -
P03: 多重背包问题
P03: 多重背包问题题目有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本算法这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种转载 2012-01-07 15:14:14 · 1050 阅读 · 0 评论 -
P05: 二维费用的背包问题
P05: 二维费用的背包问题问题二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。算法费用加了一转载 2012-01-07 18:45:29 · 1714 阅读 · 1 评论 -
P01: 01背包问题
P01: 01背包问题问题描述有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v]转载 2012-01-05 15:10:46 · 1473 阅读 · 0 评论 -
P02: 完全背包问题
P02: 完全背包问题题目有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路这个问题非常类似于01背包问题,所 不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。如果仍然转载 2012-01-05 15:19:22 · 1129 阅读 · 1 评论 -
10月7日梦
过程略。最后遇到了一个算命先生,对我说了三句话:第一、你对技术过于偏执,忘记了真正重要的东西第二、你过于谨慎,防御心太强。要尝试做一些大胆甚至出格的事情。第三、你一直在逃避。去面对它,你有很多朋友会帮你。同学都说三句话说得太好了,句句都在点上。不知道哪位贵人给我托梦,写在这里,为了让自己每天都能看见。原创 2012-10-08 10:04:30 · 4216 阅读 · 10 评论 -
P06: 分组的背包问题
问题 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 算法 这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有f[k转载 2013-04-06 09:41:34 · 1587 阅读 · 0 评论 -
随便记一下j
1.友元的定义与使用C++ Primer :P396 笔记本: P16 2.今天遇到这个问题,在网上看了一会资料后找到原因,即:switch 的 case 中不能定义变量,不然就会报错.可能是变量的初始化会因为有时候case条件不被执行而跳过.后来想到三个解决的方法:1:用if else 代替 switch 语句;2:在case中用{}将代码括起来,这样在{}中就能原创 2012-01-11 09:56:10 · 1470 阅读 · 0 评论 -
你想成为更好的程序员吗?
在某次clean code的培训开始之前,coach说,参加我们这个培训有两个前提,第一,我们是程序员,第二,我们想成为更好的程序员。很显然我们都是程序员。我们当中,有人不想成为更好的程序员吗?我们相视而笑,以为这句问话只不过是培训前幽默的调侃。既然我们都来参加这个培训,有谁会不想让自己更好呢?培训开始了,coach讲了很多关于clean code的东西。过程中不断有人提出反对意见。而反对的理由往原创 2014-11-15 20:42:41 · 1659 阅读 · 2 评论