- 博客(40)
- 资源 (16)
- 收藏
- 关注
原创 线程间同步实现--通过互斥锁和条件变量
信号量是一种用于提供不同进程或一个给定进程的不同线程间同步手段。在Posix中,已经有一套信号接口,用于同一个进程中不同线程同步,其接口为:int sem_init(sem_t *sem, int pshared, unsigned int value);int sem_wait(sem_t *sem);int sem_trywait(sem_t *sem);int sem_
2012-11-04 00:58:16 2149
原创 libev timer封装使用
libev是轻量级、高性能事件循环/事件模型的网络库,和他很相似的开源有libevent,libev开源代码很晦涩,较难读懂,里面可谓是把宏用到极致,代码很简练。libev提供非常全的功能,包含ev_ioev_timerev_periodicev_signalev_childev_statev_idleev_prepare and ev_checke
2012-04-15 12:56:33 11551
原创 Linux进程运行空间查看
在Linux下,当一个服务程序启动,如何查看这个服务进程内存占用情况?这里简单列出以下linux命令是如何查看的,查看出来的信息表示什么意思1、首先你要找到你所有查看进程id,方法很多,这里介绍本人常用的方法: 通过命令ps -ef查看当前系统所有进程信息,然后找到自己关系的那个进程即可,当系统进程很多时,比较麻烦,加上grep命令进行刷选root@dremi-desk
2012-02-12 12:08:35 4067
原创 Linux调用栈获取分析及实现
写一下关于函数调用栈的一些相关知识,对于在Linux下面进行c/c++开发,在问题定位时 查看调用栈信息是一个非常常用的定位方法,因为根据调用关系,可以知道程序的执行流程是什么样子。如果 不能查看调用栈,光知道程序在某个函数出错,还是比较难定位,假如这个函数在很多地方被调用,就很
2011-08-27 00:40:28 12026
原创 函数调用方式__stdecl _stdcall _fastcall __thiscall介绍
<br /> <br /> __cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。<br /> <br />_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这
2011-02-26 23:43:00 5083
原创 Linux下C程序检查内存是否可写
在linux编写程序的时候,对某对内存进行写操作时,需要确保该内存是可写,否则往里面写的话,就会出现内存写保护段错误,这样程序就崩溃了,所以为了对这个内存地址操作时安全的(即内存是可写的),可以通过下面方法进行检查。
2011-02-17 21:26:00 3831
原创 ELF文件格式
ELF文件格式 •目标文件有三种类型: – 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 – 可执行文件(Executable File) 包含适合于执行的一个程序,此文件规定了 exec()
2010-10-15 22:30:00 2098 1
原创 关于在多处理器suse11上中断处理中使用current宏的问题及解决方法
这是关于在suse11多核环境下,在中断处理过程中访问current->tgid导致机子死机问题,一些定位过程和。
2010-07-05 22:59:00 3437
原创 工作半年的感受
明天就要回家过年了,不知不觉工作就得了半年多,半年的工作生活,让我还是感触很多的。以前确实体会不到,也许这就是慢慢变成熟表现。 在工作,以前的都将是过去,学校里面学的东西,用到真正工作当中真的是“皮毛”,这里说的皮毛并不是说学校里面的东西没有用,恰恰相反,非常有用的,这里说的皮毛是指,学校很多学的东西都比较停留在理论层面,例如现在我的工作涉及较多的操作系统和cpu平台等底层的东西,
2010-02-11 00:12:00 1916 1
原创 2008-10-16日google面经
结果差多都知道,自己肯定没有戏,功底还没有到那么深厚。 10月13日晚上笔试的。和同学做了1个小时跑到复旦去笔试,笔试算法发挥正常,前面的基础题做的还行,后面3到编程题出了最后一道答的不算全,前面2道应该都没有问题。 结果10月15晚上接到通知,让我16日去面试,地点是来福士广场,google就是有米,办公地点都是在这么市中心。 在16日那边还打电话来确
2008-10-18 08:56:00 2204
转载 BM算法(更好的字符串匹配算法)
BM算法和KMP算法一样,也是构造一个辅助的模式函数来加速匹配的速度。和KMP的模式函数相比BM的模式函数更加的简单:void make_next(const char p[], int next[]){ for(int i = 0; i next[p[i]] = i;}next[] 是一个和ASCII数目一样大的数组256个数据吧。当然如
2008-10-11 21:46:00 1315 2
原创 腾讯智力笔试题(精)
题目:1-20的两个数把和告诉A,积告诉B,A说不知道是多少, B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 分析:这是一道逻辑性非常强,由于这两个数的范围是1-20所以他们的和记着S:S范围为2,积记着MA知道S,B知道M1. A说不知道,表明这个S可以拆成几组两个数的和,像4=1+3,2+2,这里可以排除掉S=2
2008-10-08 22:25:00 2713 2
原创 归并排序(Merge sort)
//merge the A[s...m] and A[m+1...t] to R[s...t] templatetypename typeT>void two_merge(typeT A[], typeT R[], int s, int m, int t){ int i, j, k; i = s; j = m+1; k = s;
2008-09-15 15:45:00 916 1
原创 组合函数递归和非递归实现
最近笔试了一个关于组合算法的非递归算法,以前写过递归的算法,http://blog.csdn.net/dremi/archive/2007/12/15/1940723.aspx但这次要用非递归去实现,在有限的时间里,确实没有想的太周到,只是大概的思想写了一下,可能也有点紧张了。现在再来把它完整的来实现, 包括算法思想:代码#include "stdafx.h"
2008-03-26 21:12:00 4320 2
原创 CppUint源码阅读与分析(1)
CppUint简介: CppUnit是xUnit系列中的c++实现版本,它是从JUnit移植过来的,第一个移植版本由Michael Feathers完成.CppUint可以分为下面几个部门: core:CppUnit的核心部分 output:掌管结果输出 helper:一些辅助类 extension:作为单元测试的延伸, lis
2007-12-17 22:39:00 1374
原创 组合算法
#include iostream>using namespace std;/**///////////////////////////////////////////////////////////////////////////// 功能 : 从0....m中选取n个的所有组合// idx[]: 用来记录一个组合, 如: 0,1,3表示选取的是第1,2,4个元素的组合//
2007-12-15 22:51:00 3121
转载 C++指向类成员的指针的使用(详细介绍)
1.首先普通函数指针不能被赋值为成员函数的地址,即使返回类型和参数完全匹配。例如:下面是的pfi是一个普通函数指针,它没有参数,返回类型为int: int (*pfi)();若有两个全局函数,HeightIs()和WidthIs(): int HeightIs(); int WidthIs();则下面的的赋值操作是合法的: pfi = HeightIs(); pfi =
2007-11-16 15:58:00 9071 2
原创 烧烤回来
昨天7:00就起来了,但看到外面在下小雨,有点失望了。担心去烧烤不成,到了7:30以后,大家都差不多起来了,班长说不管下不下雨,还是去,我们去赌一把,在那边不一定会下雨。就这样,大家一起上车了。 首先我们是去拿肉,前天在超市挑好了,只不过放在里面,肉不会变质。我这组有趣的是,前天晚上称好了18块钱的螃蟹,到昨天早上死了。我们就不要它了,再去称过,反正没有结
2007-10-31 13:10:00 1097
原创 SQL杂乱笔记
来源自互联网上的资源,整理的 用sql建立索引:CREATE INDEX mycolumn_index ON mytable (myclumn)这个语句建立了一个名为mycolumn_index的索引。你可以给一个索引起任何名字,但你应该在索引名中包含所索引的字段名,这对你将来弄清楚建立该索引的意图是有帮助的。索引mycolumn_index对表mytable的mycolumn字段进行。这是个非聚
2007-10-26 22:46:00 998
原创 指向函数的指针的使用
谈到这个话题,初学者可能在这方面较难看懂。不过对c/c++较熟悉的人来说,大家谈到指向函数的指针就会想到在排序中,那个以函数作为参数传递到排序函数中就是一个最典型的应用。1.指向函数的指针的类型指向函数的指针应该怎样声明?拿两个字符串的比较函数来说:int strCompare(const string & s1, const string & s2) ;如果两个字符串相等就返回0,否则
2007-10-18 01:01:00 11481
原创 堆排序(HeapSort)
堆的介绍:堆是一种数组,但是以树的结构形式来看待它,如下标 i 节点的求解Parent和Children节点如下: PARENT(i) return ⌊i/2⌋LEFT(i) return 2iRIGHT(i) return 2i + 1 堆分为MAX-堆和MIN-堆,MAX堆满足的条件为: A[PARENT(i)] ≥
2007-10-14 13:39:00 2703
原创 人机博弈之(五)---估值基础
估值是一个通过既有的棋类知识来评估一个局面的优劣的过程。这一过程对具体的棋类知识的依赖程度很深,但是仍有一般性的规律可循。1. 棋子的价值评估,简单的说就是评估双方都有哪些棋子在棋盘上。根据我们的经验,可以让一个车的价值为500,一个马的价值为300,一个兵的价值为100等等。将的价值为无限大。一方的棋子总值就是棋盘上存活的该方棋子乘以棋子的价值的和。用一个式子表示: sideValue =
2007-09-29 21:10:00 2170
原创 人机博弈之(六)------代码实现(4)估值
package eveluation;import constdata.ConstData;import java.awt.Point;public class Eveluation...{ // 存放棋子基本价值的数组 protected int m_baseValue[] = new int[15] ; // 存放棋子灵活价值的数组 protected
2007-09-24 22:49:00 1562
原创 人机博弈之(六)------代码实现(3)搜索引擎
package searchengine;import chessmovedata.ChessMoveData;import constdata.ConstData;import movegenerator.MoveGenerator;import eveluation.Eveluation;public class SearchEngine...{ //表示棋盘棋的分布 publ
2007-09-23 16:20:00 1668
原创 人机博弈之(六)------代码实现(2)走法产生器
package movegenerator;//走法产生器import constdata.ConstData;import chessmovedata.ChessMoveData;//一个走法的结构public class MoveGenerator...{ public ChessMoveData moveList[][] =new ChessMoveData[10][100];
2007-09-23 16:12:00 1945 2
原创 人机博弈之(六)------代码实现(1)常量数据
package constdata;//数据表示//public class ConstData...{ public final static byte NOCHESS = 0; //无子 //黑方 public final static byte B_KING = 1; //黑帅 public final static
2007-09-23 16:08:00 1669
原创 人机博弈之(四)------搜索技术
诸如下棋、打牌、竞技、战争等一类竞争性智能活动称为博弈。博弈有很多种,我们讨论最简单的"二人零和、全信息、非偶然"博弈,其特征如下: (1) 对垒的MAX、MIN双方轮流采取行动,博弈的结果只有三种情况:MAX方胜,MIN方败;MIN方胜,MAX方败;和局。 (2) 在对垒过程中,任何一方都了解当前的格局及过去的历史。 (3) 任何一方在采取行动前都要根据当前的实际情况,进行得失分析,选取对
2007-09-23 15:44:00 1928
原创 人机博弈之(三)------走法产生
走法产生是指将一个局面的所有可能的走法罗列出来的那一部分程序。是用来告诉其他部分下一步可以往哪里走的模块。走法产生的复杂程度也有很大的区别。例如在五子棋的棋盘上的任意空白点都是合法的下一步。这样五子棋的走法产生模块丽,只要扫描棋盘,寻找到所有的空白即可。而在中国象棋中,就要仔细地判断,因为不同的棋走的规则不一样,所有需要检测走法的合法性。那中国象棋为例,首先要扫描棋盘。如果某一个位置上是一
2007-09-23 15:42:00 2304
原创 人机博弈之(二)------棋盘表示
棋盘表示主要探讨的是使用什么数据结构来表示棋盘上的信息。一般来说与具体的棋类相关。通常,用来描述棋盘及其上棋子信息的是一个二维数组。中国象棋可以用9X10个字节的二维数组来表示中国象棋的棋盘,数组中每一个字节代表棋盘上的一个交点,其值表明这个交点上放置的是一个什么棋子或是没有棋子。但在中国象棋中,中国象棋有14种不同的棋子,红黑个7种,所以棋盘用下面的方式表示。『2, 3, 6, 5, 1
2007-09-23 15:39:00 2314 1
原创 人机博弈之(一)------博弈介绍
爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的一本《PC游戏编程-人机博弈》。应该说里面很多思想都是来自这本书上的,虽然思想不是源自我自己,但是可以通过自己亲手从头到尾把这个游戏编写出来,主要体会里面搜索技术和估值核心。1. 人机博弈的要点
2007-09-23 15:36:00 5770 1
原创 再见大学
时间真的好快!现在已经7月1日了。大学,再见了!昨天下午就送走了一个舍友!可惜的是我没有亲自送送他,由于去买票去了,想想现在真的很遗憾,为什么不能晚点去买呢?或是早点去呢? 虽然我没有亲自送他,但是在这里我要祝他一路顺风!旺财!一路顺风!还有,明天也要走了。在这校园里,留给我很多记忆,我想信这会是我生命中一段很珍贵的回忆。此时,我也不知道写些什么,只知道一定要称这个时候写出心里
2007-06-30 23:58:00 1157
原创 真的愛你
得知自己考上研已经有一个多月了,现在就等通知书了。可是在这一个多月里,我并没有像其他的一些考上研的人那么开心。并不是我上的研究生学校不好,我挺喜欢的,可惜就是学费贵了。为难的是我的父母啊,自从上了大学,读书的费用就给家里一直带来较大的压力。父母现在都是五十多岁的人了,还要辛苦的去地里干活,父母没有什么技能,完全就是地地道道的农民。上大学的费用对他们来说还好,不算太为难,因为我哥帮了
2007-05-29 21:28:00 1251
原创 怎样才能静下心来学习--迷茫...
还有一个月就要毕业了,毕业设计还没有做好了,最近又没有心思去做毕业设计。感觉最近好累,但又没有干什么。整天就是上上网,上一上计算机网站,看看电视剧和玩游戏。 感觉自己还是非常喜欢搞计算机的,每当看到一些较好的资料或一些非常好网站,如里面有比较好的源代码,有一些技术类的文章等。自己会非常兴奋,非常想去学。就拿现在做的毕业设计来说,其实JAVA学过,不过自从学了C
2007-05-26 22:06:00 4046 1
转载 做个有钱人之借鉴篇:成为富人是一种选择
关于财富与人的话题有人提出过这样的一个假说:在一个系统内,初始状态是有富人也有穷人。然后,我们让系统内的所有财富重新平均分配给系统内的每一个人。结果会怎样?只要一个小时以后这样的平均就会被打破。比如:有人拿着分到的钱去下馆子,而有的人用分到的钱去开馆子,一个小时之后,财富就又不平均了。一年以后,也许会长一点,五年以后,原来的富人还会是富人,原来的穷人还会是穷人,又回到了初始的状态。
2007-05-03 20:17:00 1293 1
原创 排列的非递归实现
这是在学离散数学时候书上的一个算法,翻出来看看,好像有点吃力,看到以前写的代码,注释这么少,真的较难看懂,就算是自己编的也一样。看来以后写一些程序一定要写注释或文档,先把下面没有注释的代码贴出来,有时间再把注释加上去。#include iostream.h>int n;int firmax(int a[]); //int lasmax(int a[],int
2007-05-03 17:02:00 873
原创 快速排序
最近比较有空,想熟悉一下算法,有一段时间没有写程序了。基本思想: 在当前无序区Array[1..H]中任取一个数据元素(这里用中间的元素)作为比较的"基准"(不妨记为X),用此基准将当前无序区划分为左右两个较小的无序区:Array[1..I-1]和Array[I+1..H],且左边的无序子区中数据元素均小于等于基准元素,右边的无序子区中数据元素均大于等于基准元素,而基准X则位于最终排序的
2007-04-22 22:36:00 1212
原创 模取幂运算 (a^b mod c)
这个算法的思想我是从一本书上看到的,对合法的输入能很快的计算出结果来,其思想是利用 数学公式: (a * b ) mod c = (( a mod c) * b) mod c;首先把 b 转化成二进制如: b0 b1 b2 b3..... b31 即 b = b0*231 + b1*230+......+ b31;也就是把 ab = a ^ (b0*231 + b1*230+......
2007-04-17 20:00:00 16439 7
转载 爱她,要甚于爱你自己
Those Childhood Days When you came into the world, she held you in her arms. You thanked her by weeping your eyes out. When you were 1 year old, she fed you and bathed you. You thanked
2007-04-17 19:14:00 1140
set_irq_affinity
2020-06-02
OfficeTabFreeEdition_7.00
2012-05-20
mysql-connector-c++-1.0.5-win32.msi
2011-03-10
iPhone SDK 3.1.3 with xCode 3.2.1 for SnowLeopard.torrent
2010-11-30
Linux高级技巧集.chm
2009-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人