
linux
文章平均质量分 76
jiange_zh
linux 网络编程 C++ 算法 数据结构
展开
-
Linux常用文本处理工具总结备忘(grep,awk,sed,cut...)
1. grepgrep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。日常用法:$ grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary原创 2017-10-04 10:23:03 · 5077 阅读 · 0 评论 -
【Unix/Linux编程实践】从零做起:编写who命令
《Unix/Linux编程实践教程》着实有意思。通常我们要做一件事情,会想着先储备足够的知识再来动手。但繁杂的知识往往成为一个问题,因此快速的学习能力显得尤为重要。说这本书有意思,是因为作者不是一上来就把知识点罗列出来,而是教我们如何一步步去获得我们需要的信息or知识。下面我们看看怎样从零开始,编写一个简单的who命令!1.who命令能够做什么?#首先,实际使用一下~$ who#查看联机帮助$原创 2015-12-06 13:36:04 · 916 阅读 · 0 评论 -
【Unix/Linux编程实践】文件系统:编写pwd
知识点目录是一个包含文件名与i-节点对的列表的文件。”文件在目录中“的含义:目录中存放的只是文件在i-节点表的入口,而文件的内容则存储在数据区中。例如,“文件x在目录a中”意味着在目录a中有一个指向文件x的i-节点的链接,这个链接所附加的文件名为x。pwd:用来显示到达当前目录的路径。pwd的工作过程得到“.”(当前目录)的i-节点号,称其为n(使用stat);chdir .. (使用chdir原创 2015-12-06 23:33:04 · 895 阅读 · 0 评论 -
《apue》读书笔记 停止更新
最近博文大多都是读书笔记(有点像在抄书哈哈)~很多知识都是书里的概念。第一次读APUE,还不能有很深的理解,目前还知识理论性地读,未能很好地结合实践,所以很少有自己的理解,一方面为提高博文质量,另一方面减少工作量,本书的读书笔记暂不更新了,我会直接在纸质书上标注,想必这本书读一次是不够的,以后还会再次拜读,到时有自己的深刻理解后,再发文分享~原创 2015-12-04 09:32:07 · 863 阅读 · 0 评论 -
UNIX线程与进程
进程与线程有根本上的不同。每个进程有其独立的数据空间,文件描述符以及进程的ID。而线程共享一个数据空间,文件描述符以及进程ID。一些重要概念:1.共享数据空间多个线程可以轻易地读取到这个共享的数据集。在读取上,一般不会出现问题,但是涉及到数据的修改时,就需要考虑一系列问题了。2.共享的文件描述符在fork原语被调用之后,文件描述符将被复制,从而子进程得到一套全新的文件描述符,子进程关闭某一从父进程继原创 2015-12-21 10:34:11 · 1077 阅读 · 0 评论 -
《apue》 首次拜读完经典之作,两三记录
学习Linux编程,无疑《apue》是必读的。在读完《鸟哥的linux私房菜》之后,我对linux系统有了整体的了解和感知,也感受到了linux与windows的不同。之后遵循前辈们的建议选择了《APUE》,《UNP》,《TCP/IP详解》等经典之作来提升自己。读《APUE》,起初的感受就是:函数太多了,根本记不住!师兄说,这本书用来当做工具书就好,在读《UNP》的时候多查阅,熟练起来就好。首先,这原创 2015-12-21 10:06:20 · 26061 阅读 · 13 评论 -
【Unix/Linux编程实践】DIY简单web服务器
一.服务器的设计问题:DIY or 代理1.DIY——服务器接收请求,自己处理工作——用于快速简单的任务;2.代理——服务器接收请求,然后创建一个新进程来处理工作——用于慢速的更加复杂的任务。二.web服务器功能常用的3种用户操作:1.列举目录信息;2.cat文件;3.运行程序请求处理: 目录:显示目录列表 文件:显示内容 .cgi文件:运行原创 2015-12-19 15:55:00 · 1961 阅读 · 0 评论 -
【Linux】僵尸进程的检测,清理和避免
一.僵尸进程的产生一个进程终止的方法很多,进程终止后有些信息对于父进程和内核还是很有用的,例如进程的ID号、进程的退出状态、进程运行的CPU时间等。因此进程在终止时,回收所有内核分配给它的内存、关闭它打开的所有文件等等,但是还会保留以上极少的信息,以供父进程使用。父进程可以使用 wait/waitpid 等系统调用来为子进程收拾,做一些收尾工作。因此,一个僵尸进程产生的过程是:父进程调用fork创建原创 2015-12-19 10:27:47 · 8038 阅读 · 0 评论 -
《apue》读书笔记 第四章 文件和目录(4)
第四章 文件和目录20.读目录回顾:对于一个目录,r权限表示在该目录下可以执行ls命令,即查看目录内容;w权限表示用户可以在该目录下创建、修改、删除文件;x目录表示用户能否进入该目录,即能不能cd该目录。书中这样说:“对某个目录具有访问权限的任一用户都可读该目录,但是只有内核才能写目录(保持文件系统一致性)。【一个目录的写权限位和执行权限位决定了在该目录中能否创建新文件以及删除文件,但是它们并不表示原创 2015-12-01 14:12:02 · 505 阅读 · 0 评论 -
《apue》读书笔记 第四章 文件和目录(3)
第四章 文件和目录13.文件系统我们可以把一个磁盘分成一个或多个分区,每个分区可以包含一种文件系统。 i节点是固定长度的记录项,它包含有关文件的大部分信息。1.每个i节点中都有一个连接计数,其值是指向该 i节点的目录项数。只有当连接计数减少为0时,才可删除该文件(也就是可以释放该文件占用的数据块)。所以“解除对一个文件的连接”操作并不总是意味着“释放该文件占用的磁盘块”。这也是删除一个目录项的原创 2015-12-01 00:17:18 · 578 阅读 · 0 评论 -
《apue》读书笔记 第四章 文件和目录(2)
第四章 文件和目录7.umask函数当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。即,umask是从权限中“拿走”相应的位。对于文件来说,权限的最大值是666,因为系统不允许你在创建一个文本文件时就赋予它执行权原创 2015-11-29 21:29:52 · 698 阅读 · 0 评论 -
《apue》读书笔记 第四章 文件和目录(1)
第四章 文件和目录1.stat,fstat,lstat函数#include <sys/stat.h>int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int filedes, struct stat *buf);int lstat(const char *restrict pathname, st原创 2015-11-29 15:06:15 · 734 阅读 · 0 评论 -
【Unix/Linux编程实践】用管道实现双向通信—以bc计算器为例
前言几乎每个版本的Unix都包含bc计算器。事实上,大多数版本的bc只分析输入,然后在内部启动了dc计算器程序,并通过管道与其通信。dc是一个基于栈的计算器,它接收逆波兰表达式,执行运算后将结果送到标准输出。bc从连接到dc标准输出的管道上读取结果,再把结果转发给用户。事实上,bc为我们提供了用户界面,并使用dc提供的服务。这是一个简单的客户/服务器模型。bc/dc对被称为协同进程(coroutin原创 2015-12-16 12:48:11 · 1025 阅读 · 0 评论 -
《apue》读书笔记 第三章 文件I/O
第三章 文件I/O1.引言Unix系统中大多数文件I/O只需用到五个函数:open、read、write、lseek、close。本章介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用。它们不是ISO C的组成部分。2.文件描述符对于内核而言,所有打开的文件都通过文件描述符引用;当打开或创建文件时,内核向进程返回一个文件描述符;读写文件时,文件描述符将作为read和wr原创 2015-11-27 22:45:48 · 655 阅读 · 0 评论 -
【Unix/Linux编程实践】 动手实现简单的more
最近都在看一些理论方面的书,缺乏实践真的是云里雾里的,于是今天开始看《Unix/Linux编程实践教程》,理论实践相结合!自己动手来实现linux的一些功能,确实挺有趣的,而且还能加深对系统的理解~版本一/*more01.c *read and print 24 lines then pause for a few special commands */#include <stdio.h>#de原创 2015-12-06 12:33:49 · 1053 阅读 · 1 评论 -
【Unix/Linux编程实践】shell如何运行程序—编写命令解析器sh
1.shell是如何运行程序的?shell由下面的循环组成:while (!end_of_input) getcommand execute command wait for command to finish我们可以实际用一下shell:jiange@jiange-Inspiron:~/cpp$ lsoverride override.cpp test test1.原创 2015-12-07 23:22:15 · 3044 阅读 · 0 评论 -
【网络编程】epoll简介
参考资料:百度百科 http://baike.baidu.com/link?url=eILEoEbco16wdGHjZuonmRp9KBjxqRL3jlgQFWevm1ldGGqc2565L5sAWTfz8onretDqWSYjzOB1bAuD-I6tna江南烟雨 http://blog.youkuaiyun.com/xiajun07061225/article/details/9250579《深入理解ng原创 2016-01-04 11:00:36 · 1879 阅读 · 0 评论 -
shell脚本进行数据库查询(分库分表)
背景: 前阵子遇到一个问题,需要从Mysql数据库中查询一些数据,这些数据分布在多个数据库和表中,也就是分库分表。按照某种规则,我们把数据存储在100个表中(10个数据库,每个数据库10个表)。 库名为:db_app_info_$i,其中$i取值为整数0~9; 表名为:t_app_info_$j,其中$j取值为整数0~9。为了完成多表多库查询,我们需要通过shell脚本,遍历每个表进行查询,然原创 2017-10-03 11:25:37 · 2976 阅读 · 0 评论 -
makefile 入门知识备忘
前言在windows下,编译、链接工作就是一个按钮的事情,IDE帮你把大部分工作都做了。这当然非常方便,但是如果你对背后的工作原理不了解,就经常会出现一些自己无法解决的、莫名其妙的编译、链接错误。在linux下,离开了IDE,要编译一个大型工程,就需要借助makefile了。makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更原创 2017-05-14 11:29:34 · 1403 阅读 · 0 评论 -
【C++后台开发面试】网络相关
推荐书籍:《TCP/IP详解》相关读书笔记专栏:http://blog.youkuaiyun.com/column/details/tcp-ip1.html1. TCP vs UDPTCP 是一种面向连接的、可靠的、字节流服务, UDP 无连接、不可靠的数据报服务。1. 连接方面: TCP 面向连接,交换数据之前必须通过三次握手先建立一个 TCP 连接。在一个 TCP 中仅原创 2017-05-12 12:05:10 · 4508 阅读 · 1 评论 -
【C++后台开发面试】Linux系统相关
以下复习资料仅供参考,并非面试真题。用过的 linux 指令 netstat : 显示网络状态 (-a 所有选项,-t 仅显示 tcp,-u 仅显示 udp,-r 路由表) tcpdump : 截获当前所有通过本机网卡的数据包。 -i 指定网卡 tcpdump tcp port 23 and host XXX 获取从主机 XXX 接收或发出的 telnet 包 top:任务管理器、原创 2017-05-12 11:23:14 · 7146 阅读 · 0 评论 -
【利器】使用rsync进行主机间数据同步
前言首先,还是先提一下我使用数据同步的一个背景:公司的电脑是windows 7系统,一般程序开发在本地机器进行,代码开发完之后,需要同步到远程linux编译机上编译。之前使用eclipse时的同步方案:通过samba将linux主机的项目目录映射到windows主机的一个系统盘J上,然后通过一个eclipse的数据同步插件将本地项目目录同步到系统盘J上。后面通过Babun(《在Wi原创 2016-11-06 11:20:17 · 3913 阅读 · 0 评论 -
【利器】在Windows上使用Babun进行linux开发工作
前言我是一名linux后台开发工程师,按理来说,在linux下进行开发工作再正常不过了。然而,公司的电脑都是统一windows系统,因此十分尴尬。不少同事都是使用windows下的编辑器进行开发,开发完之后将代码同步到linux编译机上编译。在刚来的时候,我也听从同事的建议,使用eclipse进行开发。然而我还是喜欢vim,虽然在eclipse上装了vim的插件,但是用起来总是不方便,兼容性很差,于原创 2016-11-05 14:51:33 · 4696 阅读 · 0 评论 -
【Linux内核设计与实现】进程管理
1.进程进程是处于执行期的程序(目标码存放在,某种存储介质上)。进程除了包含一段可执行程序代码,还包含其他资源,比如打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程,以及用来存放全局变量的数据段等。进程提供两种虚拟机制:虚拟处理器和虚拟内存。这两种虚拟给进程造成一个假象——只有自己独享处理器以及独享真个内存资源。有趣的是,同一进程中的线程可以原创 2016-09-22 14:18:10 · 1064 阅读 · 0 评论 -
【Linux内核设计与实现】Linux内核简介
之前在读《APUE》的时候,更多的是从上层去了解如何使用Linux系统的API,那个时候就十分喜欢Linux的设计,觉得一切都很奇妙。最近有些迷茫,不知道自己以后更加具体的技术方向在哪,所以最近广泛阅读了很多方面的书——C++方面,服务端网络编程方面,多线程方面,操作系统内核方面。在linux内核方面,目前打算阅读两本书,《Linux内核设计与实现》就是其中一本,另一本是《深入理解linux内核》。原创 2016-09-22 11:22:34 · 6379 阅读 · 0 评论 -
vim常用按键整理
前面一篇文章中我们说明了插件的安装和基本的使用:http://blog.youkuaiyun.com/jiange_zh/article/details/52572406内容比较杂,本篇将针对我个人的使用做一些整理,方便查阅。一、移动1.按屏幕移动Ctrl + f // 向下移动一屏,F代表ForwardCtrl + b // 向上移动一屏,B代表Bef原创 2016-09-25 11:32:33 · 768 阅读 · 0 评论 -
【Linux内核设计与实现】进程调度
调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间。在一组处于可运行状态的进程中选择一个来执行,是调度程序所需完成的基本工作。1.多任务多任务系统分为两类:非抢占式多任务(cooperative multitasking)和抢占式多任务(preemptive multitasking)。Linux提供了抢占式的多任务模式。抢占式的意思是,调度器可以强制挂起一个进程。而在非抢占式模式下,除非原创 2016-09-23 13:17:16 · 1327 阅读 · 0 评论 -
【利器】Vim配置成IDE方案以及使用
“工欲善其事必先利其器”。在之前就一直打算把vim作为自己的编辑器来工作的,但是由于vim的配置比较复杂,自己也还不知道自己需要哪些功能,并且公司的办公机器是windows系统,linux开发机器则不方便装自己的软件,所以暂时用的是windows下的eclipse。eclipse用了3个月,也大概知道自己在工作中需要哪些功能了。总的来说,eclipse的功能很全面,基本够我用了,但是个人比较喜欢vi原创 2016-09-18 20:41:27 · 2955 阅读 · 1 评论 -
【Linux环境编程】内存管理:函数栈空间,虚拟内存及其分配
一.函数调用栈空间的分配与释放函数执行时有自己的临时栈空间,c++成员函数有两个临时栈空间,一个是成员函数的还有一个是对象的。函数的参数是压进临时栈中,传递的实参用来初始化临时栈中的形参。函数属性:int __attribute__((stdcall)) add(int a, int b){ return a+b;}一共有3种属性(调用方式):stdcall,c原创 2015-11-22 21:19:32 · 1487 阅读 · 0 评论 -
【Linux环境编程】内存管理初探
一.内存管理层次硬件层次:内存结构管理内核层次:内存映射,堆扩展语言层次:C的malloc以及C++的new等数据结构层次:智能指针,STL二.问题的提出#include <stdio.h>main(){ int *p1 = malloc(4); int *p2 = malloc(4); int *p3 = malloc(4); int *p4 = malloc(4原创 2015-11-21 21:16:35 · 648 阅读 · 0 评论 -
《apue》读书笔记 第一章 UNIX基础知识
第一章 UNIX基础知识1.UNIX体系结构系统调用:内核的接口;公用函数库:构建在系统调用接口之上;shell:为运行其他应用程序提供了一个接口。 UNIX操作系统的体系结构 2.登陆2.1用户名系统是用数值id来表示用户的,但为方便可读性,id和用户名之间存在一一映射。系统口令文件在/etc/passwd中,为保证密码安全,加密口令转移到另一个文件中了。2.2shell我们linux常用原创 2015-11-27 15:38:50 · 768 阅读 · 0 评论 -
《apue》环境搭建---apue.h
一.操作系统:ubuntu 14.04LTS二.apue版本:第三版三.环境搭建:1.在网上下载书中源代码(第三版)2.解压文件:tar -zxvf *.tar.gz3.cd apue.3e/4.make这时,会看到最后由于can,t find -lbsd而不能make成功,解决办法是添加libbsd.a的静态链接库sudo apt-get install libbsd-dev5.再次mak原创 2015-11-27 09:41:51 · 1230 阅读 · 0 评论 -
【Unix/Linux编程实践】理解I/0重定向和管道
一.3个标准文件描述符0:stdin1:stdout2:stderr通过shell命令行运行Unix系统工具时,stdin,stdout,stderr连接在终端上,因此,工具从键盘读取数据,并把输出和错误消息写到屏幕。二.重定向I/O的是shell而不是程序shell并不把重定向标记和文件名传递给程序;重定向可以出现在命令行中的任何地方,且重定向标识符周围并不需要空格来区分。*最低可用文件描述符原则原创 2015-12-13 11:01:16 · 1072 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】文件系统管理
文件系统的简单操作磁盘与目录的容量df:列出文件系统的整体磁盘使用量;du:评估文件系统的磁盘使用量(常用在估计目录所占容量)**使用du时可能会出现次目录累加,需要加-S参数~输出的结果信息为:Filesystem:代表该文件系统是在哪个 partition ,所以列出装置名称;1k-blocks:说明底下的数字单位是 1KB,可利用 -h 或 -m 来改变容量;Used:顾名思义,就是使原创 2015-10-25 23:44:46 · 620 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】EXT2 文件系统
EXT2文件系统硬盘组成整颗磁盘的组成主要有:圆形的盘片(主要记录数据的部分);机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据);主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据。盘片上的物理组成为(假设此磁盘为单盘片):扇区(Sector)为最小的物理储存单位,每个扇区为 512 bytes;将扇区组成一个圆,那就是磁柱(Cyl原创 2015-10-25 10:46:21 · 666 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】Linux的档案权限与目录配置
权限分类1.User 2.Group 3.Others**root具有最高权限!一般情况下,用户的账号信息存放在/etc/passwd这个档案内;密码记录在/etc/shadow中;群组记录在/etc/group中。指令[ls -al]:查看当前目录下的所有文件的权限。示例: -rw-r–r– 1 root root 42304 Sep 4 18:26 install.log 分别代表:原创 2015-10-23 23:39:48 · 663 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】文件与目录管理
绝对路径与相对路径绝对路径:一定由根目录 / 写起 相对路径:相对于某个目录的路径,不是由/写起目录的基本操作cd:变换目录 (change directory)pwd:显示目前的目录(print working directory)mkdir:创建一个新的目录rmdir:删除一个空的目录pwd -P :显示出真实路径,而不使用link路径mkdir test:建立名为test的新目录mkdir原创 2015-10-24 22:43:58 · 530 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】进程管理
一、什么是进程 (process)在 Linux 系统当中:『触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限配置。』program:通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;process:程原创 2015-11-09 20:29:32 · 1192 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】例行性工作排程 (crontab)
Linux 工作排程的分类:两种工作排程方式:一种是例行性的,就是每隔一定的周期要来办的事项; 一种是突发性的,就是这次做完以后就没有了。at :可以处理仅运行一次就结束排程的命令,不过要运行 at 时, 必须要有 atd 这个服务的支持才行。在某些新版的 distributions 中,atd 可能默认并没有启动,那么 at 这个命令就会失效。不过我们的 CentOS 默认是启动的!cronta原创 2015-11-09 13:26:49 · 649 阅读 · 0 评论 -
【鸟哥的linux私房菜-学习笔记】首次使用相关知识、在线求助 man page
X window与文本模式的切换Linux默认的情况下会提供六个Terminal来让使用者登陆, 切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮。那这六个终端接口如何命名呢,系统会将[F1] ~ [F6]命名为tty1 ~ tty6的操作接口环境。 也就是说,当你按下[crtl] + [Alt] + [F1]这三个组合按钮时 (按着[ctrl]与[Alt]不放,再按原创 2015-10-23 22:57:50 · 688 阅读 · 0 评论