- 博客(345)
- 收藏
- 关注

原创 关于记录用户终端中执行命令而对/etc/bashrc所做的修改
在/etc/bashrc中的最后加上如下语句:语句解析: 主要是对msg内容的生成: 可以看到msg的内容包含两个部分,一个由语句: if [ "$(echo $?)" -eq "0" ]; then echo "Success";else echo "Failed";fi 组成,其实shell中的判断语句,意思就是如果echo$?的值等于0
2015-05-19 22:54:55
1845

转载 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
静态链接库在链接时,编译器会将 .obj 文件和 .LIB 文件组织成一个 .exe 文件,程序运行时,将全部数据加载到内存。如果程序体积较大,功能较为复杂,那么加载到内存中的时间就会比较长,最直接的一个例子就是双击打开一个软件,要很久才能看到界面。这是静态链接库的一个弊端。动态链接库有两种加载方式:隐式加载和显示加载。隐式加载又叫载入时加载,指在主程序载入内存时搜索D
2015-05-13 10:23:22
5896

转载 .h头文件 .lib动态链接库文件 .dll 动态链接库
dllarchiveimport(1).h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。附加依赖项的是.lib 不是.dll 若生成了DLL ,则肯定也生成 LIB文件 如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。.h .lib .dll三者
2015-05-04 10:36:36
496

原创 man rsyslog.conf的介绍
这篇博文是在CentOS Linux release 7.0.1406(Core)的发行版本下写的,发行版本可以通过cat /etc/centos-release查看。 下面翻译的是man rsyslog.conf中对于rsyslog.conf的介绍:1、名称: rsyslog.conf-rsyslogd(8)的配置文件;2、描述: rsyslog.conf文
2015-04-29 12:49:25
4205

转载 CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
一、简介LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案
2015-04-28 22:05:47
1153

转载 linux的线程模型:2.6是个分界点
轻量级进程LWP 既然称作轻量级进程,可见其本质仍然是进程,与普通进程相比,LWP与其它进程共享所有(或大部分)逻辑地址空间和系统资源,一个进程可以创建多个LWP,这样它们共享大部分资源;LWP有它自己的进程标识符,并和其他进程有着父子关系;这是和类Unix操作系统的系统调用vfork()生成的进程一样的。LWP由内核管理并像普通进程一样被调度。Linux内核是支持LWP的典型例子。
2015-04-27 17:12:45
1672

转载 Linux线程之线程栈
我们接上一篇继续学习,这一篇的重点放在线程栈上。 我们用过pthread_create接口,也用过pthread_self接口,请看manual中的声明: #include pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
2015-04-27 16:57:43
1007

原创 linux线程点滴
1、(http://bbs.youkuaiyun.com/topics/330224117)Linux其实是没有线程的概念,所谓的线程不过是一个轻量级的进程内核线程拥有 进程描述符、PID、进程正文段、核心堆栈用户进程拥有 进程描述符、PID、进程正文段、核心堆栈 、用户空间的数据段、堆栈、堆用户线程拥有 进程描述符、PID、进程正文段、核心堆栈,用户空间的堆栈,同父进程共享用户空间的数据
2015-04-27 16:52:33
1038

转载 堆空间和栈空间大小
我们知道,程序运行时在内存中主要有代码段、数据段、堆栈段(堆空间和栈空间)、进程头、动态链接库等区域。 其中数据使用到的:数据段:静态内存空间,其中数据的总大小和初始值在编译时确定,数据在整个程序运行时一直存在。栈空间:自动内存空间,其中数据的大小在编译时确定,数据的分配和释放也由编译器在函数进入和退出时插入指令完成,数据生命周期和函数一样。堆空间:动态(手动)内存空间,其中数
2015-04-27 16:49:37
3885

转载 进程与线程栈大小的调整(精)
摘要 通过ulimit设置及可用的Pthread库接口来调整进程或线程的运行栈的大小,以改善嵌入式中内存的使用。线程 栈大小 ulimit pthread目录[-]问题现象现象分析问题现象首先看一个现象,最近在嵌入式项目开发中发现的,下面是设备的内存总量及使用:总量是24M左右,项目主程序大小1M不到,但是在默认的
2015-04-27 16:39:05
8827
2

转载 linux的线程模型:2.6是个分界点
轻量级进程LWP 既然称作轻量级进程,可见其本质仍然是进程,与普通进程相比,LWP与其它进程共享所有(或大部分)逻辑地址空间和系统资源,一个进程可以创建多个LWP,这样它们共享大部分资源;LWP有它自己的进程标识符,并和其他进程有着父子关系;这是和类Unix操作系统的系统调用vfork()生成的进程一样的。LWP由内核管理并像普通进程一样被调度。Linux内核是支持LWP的典型例子。
2015-04-27 15:08:41
1628

转载 Linux写时拷贝技术(copy-on-write)
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之
2015-04-27 13:48:36
522

转载 Linux 线程实现机制分析
自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性、效率。本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads 线程库的实现及其不足,描述了 Linux 社区是如何看待和解决兼容性和效率这两个问题的。3 评论:杨沙洲 (pubb@163.net)国防科技大学计算机学院2003
2015-04-27 10:57:59
2388
转载 [转]date和hlclock的实现
hwclock可以设置系统时间,大家可能都用过。但是我想每个人对知道此命令的途径却不完全相同。我陈述一下自己得知此命令的过程,希望能那些对linux望而却步的初学者有些帮助,linux本身公开源码,这对那些追根问底的人是个不错的选择。文中过程废话较多,假设读者是初学者,对一些过程不是很清楚。高手见谅!几天前要做几台服务器的时间同步,和同事讨论系统时间设置的问题,我模糊记得dat
2015-07-10 23:06:24
843
转载 自己制作rpm软件包(1)
我们都知道,在目前的Linux环境下,要安装新软件,通常有两种方式:一是使用源码安装;二是使用rpm软件包。使用源码安装可以让用户了解编译过程,及定制一些模块,和修改编译参数,但其工作量通常都很大,而且要求用户有足够的计算机知识。而rpm软件包方式则相对来说比较简单,也易于管理和升级。所以,当前Linux发行版的前十中,有八个都是使用基于二进制软件包方式的(deb和rpm格式可以互转)。同样的,红
2015-07-06 23:28:25
1073
转载 自己制作rpm软件包(2)
上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包。最后部分还看到.src.rpm的内容,实际上就是由.tar.gz源码、补丁软件和.spec脚本组成的。由此知道,使用.spec生成rpm包是比较简单的,因为.src.rpm通常都是由软件开发者或者第三方的专业制作人根据源码调试好的,所以,只要处理好平台兼容性和相关的版本,不会遇到太大的问题。 但我觉得单纯明
2015-07-06 23:24:55
868
转载 linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinozzz一、目录创建在/home/wwwroot目录下新建一个sinozzz123的文件夹mkdir /home/wwwroot/sinozzz123二、目录复制1.把/home/wwwroot/sinozzz里面的文件和文件夹等复制到home/w
2015-07-06 23:21:53
761
转载 一步步制作RPM包
本文根据马哥教育视频http://mageedu.blog.51cto.com/4265610/919986 总结而来,如果想仔细学习请看该视频。一.RPM制作步骤我们在企业中有的软件基本都是编译的,我们每次安装都得编译,那怎么办呢?那就根据我们的需求制作RPM安装包吧。先来说说基本布骤:1.Planning what you want 计划做什么r
2015-07-06 23:20:51
1166
转载 Redhat Linux RPM包安装软件及其管理
什么是RPMRPM的全称是:RedHat Package Manager //红帽包管理工具如果Linux发行版本是redhat 、redflag 、centos 、fedora 、suse等或者衍生的版本,那么使用rpm进行软件管理最适合了。通过rpm可以来对软件进行安装、升级、查询、验证及卸载等。被rpm管理的软件包称之为“rpm包”,对于该软件包的文件名包含了很多有用
2015-07-06 23:19:33
1113
转载 实战RPM包制作
在开发中经常会用到一些rpm包,但是一直没有自己手动制作过。今天在制作的时候意外地还解决了自己以前一直困惑的问题,就是怎么制作rpm debuginfo包,类似CentOS官网那样的debuginfo包。原来在制作rpm时如果没有特殊设置就会在RPMS目录下同时生成rpm包及对应的debuginfo包。 下面总结一下制作rpm包的流程以及遇到的一些问题的解决。 1、配置工作路径
2015-07-06 23:15:25
1054
转载 摘录:Linux打Patch的方法
作为程序员,了解diff&patch命 令是非常必要的。比如说我们发现某个项目有bug代码,而自己又没有svn的提交权限,那么此时最合适的解决方法就是用diff命令做一个补丁发给项目成 员。项目成员通过patch命令可以立刻知道你的意图。有人会说直接传一个新文件不是更简单?不要忘了,一个patch文件尺寸更小传输更快,而且可以明 显的看到都做了哪些修改。保证当前目录是demo名录:
2015-07-06 23:14:20
399
转载 VS2010 项目属性的默认包含路径设置方法
有两种方法可以设置vs2010的默认包含路径方法一:点击“视图->属性管理器”,在打开的属性管理器中选择Microsoft.Cpp.Win32.user打开打开后将出现如下图所示:这时候就可以设置默认目录了。方法二:打开 C:\Users\Administrator\AppData\Local\Microsoft\
2015-07-01 14:50:43
917
转载 Linux 快速清屏快捷键
以前我们经常使用 clear,或者 reset 甚至使用系统别名如:[root@localhost ~]$ alias cls='clear'[root@localhost ~]$ cls来清理屏幕有没有其他快捷方式呢?Yes!!!那就是:Ctrl+L附:当我们使用vi/vim编辑文件时,如果发现屏幕显示有些混乱,也可以按Ctrl+L来使屏幕
2015-06-25 09:57:22
17867
转载 【动态分配栈内存】之alloca内幕
哎,下班回家就开始大扫除,一直到凌晨才搞定,真的累了。但是计划的是今天必须将本文写完,不写完睡不着觉。那就尽快切入正题吧! 我们经常使用malloc或者new等函数或操作符来动态分配内存,这里的内存说的是堆内存,并且需要程序员手工释放分配的内存。malloc对应free,new对应delete。至于你要混着用,也不是不可以,只要确保逻辑和功能的正确性,还要在规范的限制范围内。
2015-06-18 22:29:04
825
转载 内存的静态分配和动态分配的区别
内存的静态分配和动态分配的区别主要是两个: 一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。 二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数alloca进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进行释放,无需
2015-06-18 22:27:45
865
转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释
2015-06-18 22:22:20
424
转载 Linux中的段管理,bss段,data段
Linux 的段管理,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。该段用于存储未初始化的全局变量或者是默认初始化为0的全局变量,data段 该段用于存储初始化的全局变量,初始化为0的全局变量出于编译优化的策略还是被保存在BSS段,数据段也
2015-06-18 20:59:35
1072
转载 数据段和只读数据段
3.3.2 数据段和只读数据段.data段保存的是那些已经初始化了的全局静态变量和局部静态变量。前面的SimpleSection.c代码里面一共有两个这样的变量,分别是global_init_varabal与static_var。这两个变量每个4个字节,一共刚好8个字节,所以".data"这个段的大小为8个字节。SimpleSection.c里面我们在调用"printf"的时候,
2015-06-18 20:54:31
5107
转载 全局/静态变量初始化为0放在bss段还是data段
2013-6-4上午去面试,被鄙视了,技术公司大牛的风范,好犀利!不过我这题应该是蒙对了。。 如:static unsigned char s_test = 0;这个静态变量是放到bss段还是data段呢,以下是我编译的结果:(全局变量也是如此) 1.看这样子,即使是初始化了,但是初始化的是0,还是放在bss段的2.这里还有一个问题,即使是全
2015-06-18 20:46:42
13229
1
转载 关于const char*和char*、const char** 和char** 赋值问题
根据ANSI C标准的赋值约束条件: 1. 两个操作数都是指向有限定符或无限定符的相容类型的指针。 2. 左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。一、const char*和char* const char*的类型是:“指向一个具有const限定符的char类型的指针”。(不能修改其值) char*的类型是:“指向一个char类型的指
2015-06-18 13:11:43
4159
转载 linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 自定义函数(定义、返回值、变量作用域)介绍linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。下面说说它的定义方法,以及调用需要注意那些事项。 一、定义shell函数(define function)语法:[ function ] funname [()]{ action; [return i
2015-06-18 13:10:09
495
转载 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。守护进程是在后台运行不与任何控制终端关联,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于
在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。守护进程是在后台运行不与任何控制终端关联,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。大多数服务都是通过守护进程实现的。它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就
2015-06-18 13:01:29
675
转载 回显
http://baike.baidu.com/view/2749682.htmhttp://book.51cto.com/art/200908/146380.htmhttp://zhidao.baidu.com/link?url=WoFSLtyxhiGHGVnn5vooIsPsvaEOKUf5RskiQu6QvRrQ32hw1qOG7CtWBni-JsChjGt3QfiqhOqcz19y1
2015-06-18 12:56:32
457
转载 bash脚本输入密码不回显
编写一个bash脚本时,需要用户输入一个密码,方可继续后续流程,但是又要保证用户输入的密码不会被别人看到,因此排除了通过参数将密码传入脚本的方案。不绕圈子,揭晓答案:设置终端状态为“字符不回显”(如果你了解过termios的话,也一定听说过)方法就是:stty -echo #设置输入字符不回显#此处用read语句接收用户输入的内容stty echo #取消不
2015-06-17 16:31:59
950
转载 关于函数strtok和strtok_r的使用要点和实现原理(一)
strtok函数的使用是一个老生常谈的问题了。该函数的作用很大,争议也很大。以下的表述可能与一些资料有区别或者说与你原来的认识有差异,因此,我尽量以实验为证。交代一下实验环境是必要的,winxp+vc6.0,一个极端平民化的实验环境。本文中使用的源代码大部分来自于网络,我稍加修改作为例证。当然,本人水平有限,有不妥之处在所难免,各位见谅的同时不妨多做实验,以实验为证。strtok的函数原型
2015-06-16 19:38:25
485
转载 什么是P问题、NP问题和NPC问题
这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么
2015-06-10 14:02:33
403
转载 算法时间复杂度的计算
求解算法的时间复杂度的具体步骤:⑴ 找出算法中的基本语句;算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。⑵ 计算基本语句的执行次数的数量级;只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。⑶ 用大Ο记号表示算法
2015-06-10 13:58:29
927
转载 网络IO之阻塞、非阻塞、同步、异步总结
1、前言 在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.youkuaiyun.com/historyasamirror/article/details/5778378。我结合网上博客和书总结一下,加以区别,加深理解。
2015-06-09 22:13:21
446
转载 [转]tcp收发需要缓冲区,udp不需要缓冲区
(一)基础知识 IPv4 数据报最大大小是65535(16位),包括IPv4头部。IPv6 数据报最大大小是65575,包括40个字节的IPv4头部MTU,这是由硬件规定的,如以太网的MTU是1500字节,IPv4要求最小MTU是68字节,IPv6要求最小MTU是576字节path MTU: 指两台主机间的路径上最小MTU分片(fragmentation):指ip数据报大小超过相应
2015-06-09 22:10:36
529
转载 带外数据OOB与紧急模式URG
A,TCP支持带外数据OOB吗?与紧急模式URG有什么关系? TCP支持带外数据,但是只有一个OOB字节,TCP的带外数据是通过紧急模式URG实现的.B,我们知道send(sendfd,"ABC",3,MSG_OOB),将发送3个字节的带外数据OOB数据.但是这里TCP又只支持一个字节的OOB,难道丢掉2个字节? TCP将把紧急模式URG 置位,紧急指针定位第三个字节(
2015-06-09 21:54:32
611
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人