- 博客(65)
- 资源 (13)
- 收藏
- 关注
转载 2007年版EI核心版收录的中国期刊
注:原URL为 http://www.gdmec.cn/web/kejichu/Article_Show.asp?ArticleID=243EI核心版(《Ei Compendex》)收录的中国期刊ISSN 期刊刊名0567-7718 Acta Mechanica Sinica/Lixue Xuebao1006-7191 Acta Metallurgica Sinica (Engli
2013-02-27 22:11:47 1538
原创 门禁系统 随想
忽然想起昨天进公寓时刷卡后,还没将卡放入钱包,门又自动锁上了。现在去驾校的一个半小时的班车上,忽然想用“意识流”的方法把整个门禁系统的背后原理过一遍。 首先是界面接口,这个活动图简单,把卡靠近感应器就行。感应器内部有一个不知疲倦为何物的晶振,加电后震荡,会产生周期变化的电流,是因为周期变化的阻抗和感抗,周期变化的原因应该是因为内部电流通过后晶体结构变化所致,结构变化的原因属于半导体
2013-02-27 11:10:09 705
转载 win7下重新分区或者使用一键还原后不能进入ubuntu系统
在win7和ubuntu共存的系统中,如果再win7系统下对磁盘重新分区或者使用一键还原工具对磁盘备份,都有可能导致系统不能正常引导,经常会提示:unknown filesystem。这篇文章详细说明了遇到这类问题的解决方法: http://wenku.baidu.com/view/c71a1812cc7931b765ce1563.html
2013-02-27 11:10:08 656
原创 【pthread系列-11】对Pthread线程进行简单的类封装
1.封装遇到的问题 将Pthreads线程封装为抽象类,这样用户在使用线程时,只需要继承一下这个抽象类,并实现相应的接口就可以了。这样做的好处是用户可以将注意力集中在线程所要执行的逻辑上,而不需要关注创建线程、销毁线程等细节问题上。这里给出两种简单的封装方法,以供参考。 我们抽象类的名称为Thread,其中有一个成员函数run,该函数为的声明形式为:
2013-02-27 11:10:06 657
原创 【pthread系列-10】pthread的属性对象
1.概述属性对象是为对象初始化提供额外参数的容器。可以简单的将属性对象想象为一个结构体,不过这个结构体的变量的读写需要通过提供的函数而不是用成员访问符直接操作其成员变量。属性对象具体可以实现为结构体的栈变量,然后将访问函数包装为各种宏。还可以实现为堆变量,然后使用真正的函数进行访问,这样的实现还可以进行有效性检查等其他功能。POSIX中的属性对象有pthread_t对应的属性对象pthre
2013-02-27 11:10:04 611
原创 【pthread系列-9】pthread_mutex_t的静态初始化
初始化phtread_mutex_t类型的变量时有两种方法:一种为使用宏PTHREAD_MUTEX_INITIALIZER进行初始化,另外一种是使用函数pthread_mutex_init函数。第一种方法仅局限于静态初始化的时候使用:将“声明”、“定义”、“初始化”一气呵成,除此之外的情况都只能使用pthread_mutex_init函数。下面是一段很简单的测试代码: /* * m
2013-02-27 11:09:55 1127
原创 【pthread系列-8】POSIX线程中的“一次初始化”
1.核心接口函数pthread_once_t once_control = PTHREAD_ONCE_INIT;int pthread_once(pthread_once_t * once_control,void (*init_routin)(void));2.问题和解决方案在正式开始进行计算之前,通常需要完成一些初始化工作,而且这些初始化在程序启动之后只允许进行一次。如果有主函
2013-02-27 11:09:54 625
原创 《UNIX网络编程》中第一个timer_server的例子
1.配置环境 在这里下载unpv13e.tar.gz,其中包含了《UNIX网络编程》第一卷的源代码。假设将其移到~/Unix/Network/目录下,以下为配置过程(假设当前目录为下载目录): mv ./unpv13e.tar.gz ~/Unix/Network cd ~/Unix/Network tar -zxvf unpv13e.tar.gz c
2013-02-27 11:09:52 718
原创 百度实习生招聘的一道大数据处理题目(上)
题目为:两个200G大小的文件A和B,AB文件里内容均为无序的一行一个正整数字(不超过2^63),请设计方案,输出两个文件中均出现过的数字,使用一台内存不超过16G、磁盘充足的机器。方案中指明使用java编程时使用到的关键工具类,以及为什么?对于这种大数据量问题(至少对于一台机器来说算是大数据了),使用MapReduce是最简单的方式了。现在开源的最好的支持MapReduce的分布式计算框
2013-02-27 11:09:44 769
原创 【pthread系列-7】条件变量的接口函数和使用原则
条件变量的接口、常量、数据类型1.静态创建一个条件变量(栈)pthread_cond_t cond;2.动态创建一个条件变量(堆)pthread_cond_t * pCond = (pthread_cond_t *)malloc(sizeof(pthread_cond_t));3.初始化静态条件变量(默认方式)使用宏 PTHREAD_COND_INITIALIZER4.
2013-02-27 11:09:38 533
原创 【pthread系列-6】条件变量基本概念和原理
条件变量的作用是用于多线程之间关于共享数据状态变化的通信。当一个动作需要另外一个动作完成时才能进行,即:当一个线程的行为依赖于另外一个线程对共享数据状态的改变时,这时候就可以使用条件变量假设没有条件变量,对于一个生产者消费者问题,消费线程在得知队列中没有产品时,将阻塞自己。生产线程给队列中放入产品,但是没有办法激活消费线程,而消费线程处于阻塞状态也没有办法自激活。如果消费线程使用忙等的方式,通
2013-02-27 11:09:36 721
原创 【pthread系列-5】Pthreads线程的基本常识
1.Pthreads中线程的接口函数与线程相关的头文件为pthread.h,编译时要连接的库为pthread。pthread_t thread;线程的数据类型为pthread_t。int pthread_equal(pthread t1,pthread t2);判断两个线程标识符是不是代表的是同一个线程。线程标识符只有相等和不等的关系,没有大小关系。int pthread_
2013-02-27 11:09:32 757
原创 【pthread系列-4】使用多线程的利弊
1.Amdahl定律 一个很简单的量化公式,用来计算一个程序中串行部分所占多少对程序加速比的影响或者用来计算计算机硬件配置中某个设备的速度提高能够将整个系统的速度提高多少。 假设一个串行程序执行的总时间为1,不能被并行化的部分占的时间比例为p,即串行化的部分为p,可并行化的时间为:1-p。如果用n个核用来加速的话,加速比为: 如果一个程序中只有50%部
2013-02-27 11:09:29 680
原创 【pthread系列-3】一个定时器的普通实现,多进程实现和多线程实现的对比
要求实现一个简单的定时器,该程序要求的输入格式为:N prompt message其中N表示时间,prompt message表示提示信息。即过了N秒之后要在终端上显示出提示信息。一共用了三种方式实现:(1)最普通的方式,阻塞I/0+同步。(2)使用进程实现。(3)使用线程实现。 /*alarm.c*/ #include "../error.h" #include int m
2013-02-27 11:09:26 992
原创 多线程编程有关的基本概念
概述 线程是保证机器内部指令执行的连续性和持续性的各种属性的集合,所以线程包含了各种有关机器状态的信息,如当前执行的指令的位置,数据段的地址,数据寄存器信息等等。 进程= N个线程+文件描述符+地址空间+其他数据信息(N>=1) 这里的关键是线程的数量是多个,所以进程和线程的实体对应关系为一对多。这样带来的显著好处就是:由于多个线
2013-02-27 11:09:24 378
原创 【pthread系列-2】检查Pthreads函数的返回值
一定要检查函数的返回值 《C/C++软件测试规范》上有很重要的一条就是要检查所有返回值不为空的函数的返回值来判断库函数或者系统调用的执行是否成功。如果读一些经典开源代码,你会发现几乎每一个函数的调用都会被放置在一个if语句中来检查被调用函数的执行情况。经常会看到超市收银台的电脑上或者学校的自助充值终端甚至是火车站购票的大屏幕上会弹出Windows的对话框显示“0xXXXXXXXX
2013-02-27 11:09:24 608
原创 Linux配置支持C/C++项目的eclipse和支持java项目的eclipse
eclipse是一款优秀的源代码编辑工具,和source insight一样支持符号表解析。除此之外,还支持词法分析,语法分析,外部符号,外部头文件引入,SVN,CVS项目管理等等功能,是Linux下软件开发的利器之一。 配置支持java的eclipse和支持C/C++的eclipse的过程类似,下面为具体的配置步骤: step1:在这儿下载最新版本的jdk。这是因为eclip
2013-02-27 11:09:21 503
原创 【pthread系列-1】同步异步线程进程的一些思考
同步与异步 同步与异步在生活中随处可见。同步和异步是描述不同事件发生的依赖关系,同步是指这两个事件的发生有一定的时间顺序,异步是指这两个事件的发生是相互独立的。 比如去食堂吃饭,你需要先去那餐具(事件A),然后去某个窗口前打饭(事件B),接着找到一个座位(事件C),最后开始享受食物(事件D)。事件A,B,C,D有一定的依赖关系,所以它们之间需要同步。处理器中的取指、译码、执行、
2013-02-27 11:09:21 873
原创 Linux 下从命令行打开pdf文件和html文件的命令
如果你经常工作在终端下,某个时刻需要查看一些文档的时候(比如pdf或者html文档),是不是经常需要切换到文件系统中打开这些文件。事实上,你只需要敲一个命令就可以打开这个文件了,完全没有必要必要离开终端。 比如,打开html文件时,就可一使用firefox命令。firefox是一个shell脚本写的命令,根据参数设置环境,为启动firefox-bin做好准备工作。 比如打开go
2013-02-27 11:09:18 1640
原创 让进程的运行不受终端影响的几个方法
有时候会往集群山发送一个运行时间很长的作业,但是有可能因为用户注销的原因或者网络断开的原因导致运行的作业终止。这是因为,这些事件发生的时候,系统会收到HUP(hangup)信号,然后将用户的所有进程都终止掉。 为了保证作业可靠的运行,有三种简单的方法:一种使用setsid命令,另外一种是使用nohup,还有就是使用(&) nohup使提交的进程忽略系统发送的HUP信号,用法
2013-02-27 11:09:16 529
原创 Linux 下从命令行打开pdf文件和html文件的命令
如果你经常工作在终端下,某个时刻需要查看一些文档的时候(比如pdf或者html文档),是不是经常需要切换到文件系统中打开这些文件。事实上,你只需要敲一个命令就可以打开这个文件了,完全没有必要必要离开终端。 比如,打开html文件时,就可一使用firefox命令。firefox是一个shell脚本写的命令,根据参数设置环境,为启动firefox-bin做好准备工作。 比如打开go
2013-02-27 11:09:09 1864
原创 ubuntu11.04下安装QQ2012
1.在这里下载QQ2012安装包。2.打开终端,进入下载目录。3.使用命令 sudo dpkg -i *.deb ,输入密码后开始安装。Ok.本文出自 “相信并热爱着” 博客,请务必保留此出处http://hipercomer.blog.51cto.com/4415661/895006
2013-02-27 11:09:06 257
原创 ubuntu11.04下配置中文输入法
1.按Windows徽键2.搜索'System Settings'3.单击后弹出'Control Center'对话框,在左侧的filter栏中输入 'Language Support'4.单击'Language Support'按钮5.在'Keyboard input method system'选择'ibus'6.重新再 ‘Control Center’对话框中输入'Key
2013-02-27 11:09:03 240
原创 查看硬件信息几种方法
查看内存,CPU信息之类的可以使用top或者free,但这都是查看运行时硬件运行状态的命令。要查看硬件本身的信息,就需要使用其他命令了。 查看处理器配置信息可以使用 cat /proc/cpuinfo 查看内存配置信息,可以使用 cat /proc/meminfo 对于其他硬件信息,可以使用dmidecode命令。 dmidecode最常用的选项为-t,-t的
2013-02-27 11:09:02 702
原创 分布式单词发音抓取机器人
摘要 网络编程实验课程要求必须写一个套接字的应用程序,考虑到之前写过的单词发音抓取程序的效率比较低下,就顺便结合套接字做一个分布式的抓取软件。其中涉及到动态任务领取,负载均衡,多线程,加锁解锁,简单的HTML代码解析,文件读写等功能。程序还是使用Python完成,对于学习Python、套接字编程、分布式编程甚至集群编程都有一定的意义。 另外,此软件具有一定的攻击性,如果启动的从
2013-02-27 11:08:57 880
原创 集群节点列表编辑程序
在集群上跑程序的人都知道要编辑一个节点列表文件来说明在哪些机器上启动进程,以及在某个机器上启动的进程的数量,最典型的情况是mpi。但是如果机器的数量过大,比如有500个节点的机群,这样要维护这个文件也是一件比较头疼的事情。 维护节点列表文件,主要是进行三个操作:创建列表,删除某些节点,修改某些节点。接下来就可以用C或者Python实现一个具备这三种功能的小程序了。今天上午实现了一个,代码
2013-02-27 11:08:50 452
原创 Python之Tkinter:动作
Python之Tkinter:动作进行界面编程,首先少不了以下几个重要部分:l 窗体l 控件l 动作窗体是容器,各式各样的控件放置在容器中,每种控件在触发之后都会执行一定的指令,即完成它的动作。 怎样将控件绑定到一个命令上?一般来说在创建控件的时候,使用参数command来指定要执行的动作,这个动作可以使以下几类情况:l 普通
2013-02-27 11:08:49 603
原创 Ubuntu下安装Python的Tkinter和Pmw库
在Linux下,如果需要编写界面应用,并且此界面应用对性能的要求不是很高,一般可以使用Python解决。Python中可以使用自带的Tkinter库或者是第三方的Wxpython库,当然Tkinter的移植性更好。 安装Tkinter非常简单,只需要输入下面命令即可:sudo apt-get install python-tk 即可安装成功Tkinter。 下
2013-02-27 11:08:44 2068
原创 Python之Tkinter:动作
Python之Tkinter:动作进行界面编程,首先少不了以下几个重要部分:l 窗体l 控件l 动作窗体是容器,各式各样的控件放置在容器中,每种控件在触发之后都会执行一定的指令,即完成它的动作。 怎样将控件绑定到一个命令上?一般来说在创建控件的时候,使用参数command来指定要执行的动作,这个动作可以使以下几类情况:l 普通
2013-02-27 11:08:42 792 2
原创 简单的map性能评测
map是编程中常用的数据结构之一,map在检索的时候的时间复杂度一般为logN,下面这个简单的测试程序能确实证实这一点。当二维数组的大小为6400时,二者的速度相差为15倍左右。 以下为测试代码:/************************************************************** * * Author: Chaos Lee *
2013-02-27 11:08:37 775
原创 C/C++的注意事项
最近调试C语言程序,出了一些错误,费了很大的力气才找到这些BUG。现在把这些错误记录下来,同时做一些编程上的原则上的约束,希望能达到两个目的:(1)看到类似的情况,能马上定位知道是什么错误。(2)不在犯这种错误。 将64位整型转换为32位整型,貌似是没什么问题。但是在做多结点间数据通信的时候,这个不注意的细节将导致很严重的错误。例如在发送端使用的是64位的整型,接收端使用32位
2013-02-27 11:08:34 412
原创 dd命令
author:<span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-fa
2013-02-27 11:08:31 511
原创 Linux中的随机数文件 /dev/random /dev/urandom
author:<span style="font-size:14.0pt;font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-fa
2013-02-27 11:08:28 1564
原创 Name Mangling in C++
Name Mangling(C++)Author: Chaos LeeDate: 2012/05/06摘要:详细介绍了C++中的Name Mangling的原理和gcc中对应的实现,通过程序代码和nm c++filt等工具来验证这些原理。对于详细了解程序的链接过程有一定的帮助。Name Mangling概述大型程序是通过多个模块构建而成,模块之间的关系由makefile来描述。
2013-02-27 11:08:24 434
原创 vhdl 编写counter ,模拟钟表
好久没玩过FPGA了,回想起当时和张胤一起写的SOPC系统还真是怀念啊,自己编写的CPU,自己编写的外设驱动(软件+硬件),自己定义的汇编语言,自己编写的汇编器,基于这些自己的东西写自己的应用程序,那些好玩的游戏~ 怀念,有时间一定写篇文章纪念一下。 选这个课,是想回忆下基本的VHDL知识,什么东西不用都会忘掉的。这是一个很简单的程序,有时分秒的功能,没有任何管脚指定,仅仅用model
2013-02-27 11:08:20 1359
原创 编写一个简单通用的makefile
author:李超date:2012/05/06 纵然makefile的规则还是相当多的,编写一个大规模的软件,良好的makefile架构是方便维护程序编译的关键。学习makefile的时间周期还是比较长的,为了写出规范的代码,需要在很短的时间内编写一个makefile,这里给给出一个makefile示例。在组织程序的时候可以按照这个示例给出的结构进行,同时还能提高程序的可读性和
2013-02-27 11:08:17 834
原创 管理系统中的进程--top命令
author<span style="font-size:16.0pt;font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-fam
2013-02-27 11:08:14 552
原创 查看系统资源命令
author:李超date:2012/05/06unameuname主要用来查看系统的信息,有点类似于windows下的systeminfo。这是一个非常简单却很实用的命令。主要功能如下:l 输出所有系统信息uname -al 输出内核名称uname -sl 输出机器在网络上的名称uname -nl 输出内核的发行
2013-02-27 11:08:07 442
原创 eclipse环境快速配置
step1: 下载eclipse,我下载的是indigo。进官网,点download.step2: 下载jre,因为eclipse是基于java开发的,所以需要java运行时环境。step3: 假设jre和indigo都存放在~/software下。启动eclipse的命令为: ~/software/indigo/eclipse -vm ~/software/j
2013-02-27 11:08:01 454
原创 eclipse下迅速配置svn插件
step1:点击helpstep2:点击install new softwarestep3:点击 add 按钮step4:填写名字 svn_plugin,填写地址:http://subclipse.tigris.org/update_1.2.xstep5:然后一路OK或者nextstep6:restart eclipse. 依次点击:windows->open pers
2013-02-27 11:07:59 460
Program Library HOWTO(UNIX 库编程教程)
2014-05-26
基于LU分解法求解矩阵的逆
2011-12-15
求解非线性方程组的一个例子
2011-12-15
C#中实现带有行号的Richtextbox以及其他功能
2011-04-20
C#实现的进制转换程序
2011-04-20
C# 实现的IEEE754浮点数和32位比特字符串的相互转换
2011-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人