
linux
文章平均质量分 94
同皆无穷小
C programer
展开
-
NPTL (NATIVE POSIX Thread Library)
POSIX Thread Library (NPTL)使Linux内核可以非常有效的运行使用POSIX线程标准写的程序。这里有一个测试数据,在32位机下,NPTL成功启动100000个线程只用了2秒,而不使用NPTL将需要大约15分钟左右的时间。 历史在内核2.6以前的调度实体都是进程,内核并没有真正支持线程。它是能过一个系统调用clone()来实现的,这个调用创建了一份调用进程的转载 2016-11-15 16:13:32 · 2550 阅读 · 0 评论 -
Linux进程和线程的发展
1999年1月发布的Linux 2.2内核中,进程是通过系统调用fork创建的,新的进程是原来进程的子进程。需要说明的是,在2.2.x版本中,不存在真正意义上的线程(thread)。Linux中常用的线程Pthread实际上是通过进程来模拟的。也就是说Linux中的线程也是通过fork创建的,是“轻”进程。Linux 2.2只默认允许4096个进程/线程同时运行。高端系统同时要服务上千个用户,原创 2016-11-15 15:47:24 · 624 阅读 · 0 评论 -
TCP接收缓存大小的动态调整
给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能。表 1. TCP/IP 栈性能使用的可调节内核参数可调节的参数默认值选项说明/proc/sys/net/core/rmem_default"110592"定义默认的接收窗口大小;对于更大的 BDP 来说,这个大小也应该更大。/proc/sys/net/core转载 2016-11-30 17:29:12 · 2560 阅读 · 0 评论 -
linux 原子操作 atomic_
atomic_inc(&v)对变量v用锁定总线的单指令进行不可分解的"原子"级增量操作,避免v的值由于中断或多处理器同时操作造成不确定状态。原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相转载 2016-11-30 11:35:44 · 1361 阅读 · 0 评论 -
公钥,私钥,证书
加密和认证 首先我们需要区分加密和认证这两个基本概念。 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安 全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。公钥和私钥 公钥和私钥就是转载 2016-11-17 01:45:45 · 524 阅读 · 0 评论 -
scp 在脚本中使用输入密码的解决方法
以前用脚本scp文件时,都是以.ssh打通为基础的。但是在脚本中使用scp在机器之间拷贝文件,输入密码成为问题。第一种方法,用到了expect。脚本如下:#! /usr/bin/expect -f spawn scp 1 koven@192.168.0.2: expect "*password:" send转载 2016-11-01 18:12:46 · 18121 阅读 · 0 评论 -
RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描
原文地址:RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描现在的 CPU 都提供了单指令流多数据流(single instruction multiple data, SIMD)指令集。最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面。其中,SSE4.2 包含了一些专为字符串而设的指令。我们通过使用这些指令,可以大幅提升某些 JSON 解析的性转载 2016-10-31 17:44:12 · 852 阅读 · 0 评论 -
error while loading shared libraries
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-03-12 11:39:14 · 558 阅读 · 0 评论 -
too many open files
查看每个用户最大允许打开文件数量ulimit -a[plain] view plain copy fdipzone@ubuntu:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited转载 2016-07-15 10:42:45 · 393 阅读 · 0 评论 -
linux 线程
一.轻量级进程LWP 既然称作轻量级进程,可见其本质仍然是进程,与普通进程相比,LWP与其它进程共享所有(或大部分)逻辑地址空间和系统资源,一个进程可以创建多个LWP,这样它们共享大部分资源;LWP有它自己的进程标识符,并和其他进程有着父子关系;这是和类Unix操作系统的系统调用vfork()生成的进程一样的。LWP由内核管理并像普通进程一样被调度。Linux内核是支持LWP的典型例转载 2016-11-15 16:16:27 · 421 阅读 · 0 评论 -
linux线程实现模型
当 Linux最初开发时,在内核中并不能真正支持线程。但是它的确可以通过 clone() 系统调用将进程作为可调度的实体。这个调用创建了调用进程(calling process)的一个拷贝,这个拷贝与调用进程共享相同的地址空间。LinuxThreads项目使用这个调用来完全在用户空间模拟对线程的支持。不幸的是,这种方法有一些缺点,尤其是在信号处理、调度和进程间同步原语方面都存在问题。另转载 2016-11-15 16:25:00 · 338 阅读 · 0 评论 -
linux多线程实现机制
一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果转载 2016-11-15 16:27:39 · 400 阅读 · 0 评论 -
Centos7上安装docker
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。 一、安装docke...转载 2018-08-24 11:37:04 · 258 阅读 · 0 评论 -
ubuntu使用mailx利用SMTP发送邮件
转载:http://www.blogjava.net/jasmine214--love/archive/2010/10/09/334102.htmlLinux下mail利用外部邮箱发送邮件的方法:1、下载安装mailxsudo apt-get install heirloom-mailx2、修改/etc/nail.rc (/etc/mail.rc)set from=username@d转载 2017-06-08 15:56:27 · 1564 阅读 · 0 评论 -
Linux进程地址空间
我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢?呵呵,这一切的一切都是个迷呀,下面我们就一步一步解开心中的谜团吧转载 2017-05-19 15:19:26 · 639 阅读 · 0 评论 -
malloc原理和内存碎片化
当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作转载 2017-05-05 16:13:30 · 4422 阅读 · 0 评论 -
linux 线程取消以及条件变量锁的释放
#include int pthread_cancel(pthread_t thread);一个线程可以通过此机制向另外一个线程发送结束请求,值得一提的是,接收此请求的线程可以通过本线程的两个属性来决定是否取消以及时同步(延时)取消还是异步(立即)取消。函数成功返回,并不代表那线程就结束了。下面看那两个属性设置:#include int转载 2017-05-23 18:12:14 · 1278 阅读 · 0 评论 -
POSIX 线程取消点的 Linux 实现
摘要:这篇文章主要从一个 Linux 下一个 pthread_cancel 函数引起的多线程死锁小例子出发来说明 Linux 系统对 POSIX 线程取消点的实现方式,以及如何避免因此产生的线程死锁。目录:1. 一个 pthread_cancel 引起的线程死锁小例子2. 取消点(Cancellation Point)3. 取消类型(Cancellation T转载 2017-05-23 17:25:29 · 432 阅读 · 0 评论 -
linux线程控制&线程分离
线程概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程资源由于一个程序中的多个线程共享同一地址空间,因此代码段,数据段内容是共享的转载 2017-04-10 18:09:08 · 401 阅读 · 0 评论 -
linux锁机制
在Linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有意思的同步机制。atomic(原子操作):所谓原子操作,转载 2017-01-12 11:16:24 · 468 阅读 · 0 评论 -
使用 C++11 编写 Linux 多线程程序
前言在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术。这里所说的“充分利用”包含了两个层转载 2016-11-15 17:23:47 · 452 阅读 · 0 评论 -
linux技术文档库
发现了一个linux技术文档库,http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp原创 2016-11-15 16:30:56 · 672 阅读 · 1 评论 -
linux 去除重复行 uniq
uniq干什么用的文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的时候要注意以下二点1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。2,对文本操作时,若域中为先空字符(通常包括空格原创 2015-12-24 17:54:11 · 815 阅读 · 0 评论 -
linux 消息队列查看和删除
IPCS:报告进程间通信状态ipcs -q查看消息队列,-m查看内存,-s查看信号量 -a查看上述所有信息ipcrm命令用来删除一个或更多的消息队列、信号量集或者共享内存标识。 语法 ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s Semapho原创 2015-12-24 12:35:27 · 17094 阅读 · 0 评论 -
linux mysql 设置默认字符集
安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件;由于linux下MySQL的默认安装目录分布在不同的文件下;不像windows一样放在同一目录下,只需修改其中的my.ini文件,重起后就生效了;所以先来看看linux下MySQL的数据库文件、配置文件和命令文件分别在不同的目录 : 1、数据库目录,其所创建转载 2014-05-09 17:22:26 · 1585 阅读 · 0 评论 -
Bash脚本15分钟进阶教程
这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT)。这里是一个修订和扩增版本。脚本安全我的所有bash脚本都以下面几句为开场白: #!/bin/bash set -o nounset set -o errexit这样做会避免两种常见的问题:引用未定义的变量(缺省值为“”)执行失败的命令被忽略转载 2014-04-23 14:31:59 · 605 阅读 · 0 评论 -
Linux Shell >/dev/null 2>&1解释
Linux Shell >/dev/null 2>&1解释shell中可能经常能看到:>/dev/null 2>&1命令的结果可以通过%>的形式来定义输出分解这个组合:“>/dev/null 2>&1” 为五部分。1:> 代表重定向到哪里,例如:echo “123″ > /home/123.txt2:/dev/null 代表空设备文件3:2> 表示stderr标准错误4转载 2014-04-22 11:24:48 · 487 阅读 · 0 评论 -
监控Linux性能的18个命令行工具
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作。在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易。基于此原因,我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每个Linux/Unix 系统管理员的工作。这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因。这个命令行工具列转载 2014-04-08 10:47:53 · 814 阅读 · 0 评论 -
linux下安装MySQL出错!
[root@hadoop0 local]# rpm -i MySQL-server-5.5.31-2.el6.i686.rpm file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.5.31-2.el6.i686 conflicts with file from package mysql-转载 2014-03-30 18:05:25 · 633 阅读 · 0 评论 -
linux 守护进程
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不转载 2014-03-13 23:26:12 · 704 阅读 · 0 评论 -
Linux下高并发socket最大连接数所受的各种限制
1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit转载 2014-03-13 16:53:51 · 972 阅读 · 0 评论 -
linux下使用tar命令
解压语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项:c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。x 从档案文件中释放文件。相当于拆包。t 列出档案文件的内容,查看已经备份了哪些文件。特别注意,在参数的下达中, c/x/t 仅转载 2014-03-13 10:57:05 · 624 阅读 · 0 评论 -
TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记 这位仁兄写得太好了.http://blog.youkuaiyun.com/goodboy1881/category/204448.aspxTCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成转载 2014-03-06 22:39:40 · 5192 阅读 · 2 评论 -
根据名称来kill进程
#!/bin/shif [ $# != 1 ]then echo "Usage: pw process_name" exit 1fiPID=`ps -ef|grep $1|grep -v grep |grep -v pw|grep -v vi|awk '{print $2;}'`if [ -z "$PID" ]th原创 2014-02-28 15:32:45 · 701 阅读 · 0 评论 -
纯净版安装opensips
一,环境初始化: 1,安装:git ,svn,mysql,mysql-server,mysql-devel,ncurses-devel ncurses(用于配制opensips menucofnig),perl,gcc,lynx,bison,flex(另如果需要安装其他一些模块也需要安装其他依赖包) 特别说明:一定要确包mysql安装成功,并测试运行转载 2014-07-14 15:27:58 · 1086 阅读 · 0 评论 -
共享库的初始化和~初始化函数分析
转载zi:http://blog.youkuaiyun.com/absurd/ Win32下可以通过DllMain来初始化和~初始化动态库,而Linux下则没有与之完全对应的函数,但可以通过一些方法模拟它的部分功能。有人会说,很简单,实现_init/_fini两个函数就行了。好,我们来看看事实是不是这样的。 很多资料上都说可以利用_init/_fini来实现,而我从来没有测试成功过,原因是这两转载 2014-09-04 10:50:09 · 638 阅读 · 0 评论 -
141024启动iptables失败,发现时系统里面没有/etc/sysconfig/iptables这个文件,touch /etc/sysconfig/iptables就成功启动了
141024启动iptables失败,发现时系统里面没有/etc/sysconfig/iptables这个文件,你touch /etc/sysconfig/iptables应该就可以看到启动确定的提示了原创 2014-10-24 10:40:12 · 1616 阅读 · 0 评论 -
合并文件脚本
#!/bin/bashfunction ergodic(){echo $1for file in` ls $1`do if [ -d $1"/"$file ]#如果 file存在且是一个目录则为真 then ergodic $1"/"$file原创 2015-08-03 09:01:22 · 934 阅读 · 0 评论 -
tcp 粘包
为什么TCP 会粘包 前几天,调试mina的TCP通信, 第一个协议包解析正常,第二个数据包不完整。为什么会这样吗,我们用mina这样通信框架,还会出现这种问题? 带者问题,我们先分析一下问题。 提到通信, 我们面临都通信协议,数据协议的选择。 通信协议我们可选择TCP/UDP:TCP(transport control protocol,传输控制协议)是面向连接的,转载 2015-06-02 23:06:24 · 404 阅读 · 0 评论 -
linux core dump
有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.以下是我们详细的对Linux core dump的调试技术进行的介绍:1.Linux core dump 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使转载 2015-05-28 20:37:18 · 456 阅读 · 0 评论