自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AderStep

紫夜阑珊-青伶巷草, 落花美眷-似水流年

原创 进程间通信之-IPCS/IPCRM命令详解--linux内核剖析(十二)

SystemV的IPC通信System V IPC共有三种类型: * System V消息队列 System V 信号量 System V 共享内存区。 ipcs命令用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。 SystemV控制选项 选项...

2016-03-31 15:04:13

阅读数 2160

评论数 0

原创 Linux 驱动之模块参数--Linux设备驱动程序

模块参数很多情况下,我们期望通过参数来控制我们的驱动的行为,比如由于系统的不同,而为了保证我们驱动有较好的移植性,我们有时候期望通过传递参数来控制我们驱动的行为,这样不同的系统中,驱动可能有不同的行为控制。为了满足这种需求,内核允许对驱动程序指定参数,而这些参数可在加载驱动的过程中动态的改变参数的...

2016-03-31 14:26:01

阅读数 4019

评论数 0

原创 进程间通信之-共享内存Shared Memory--linux内核剖析(十一)

共享内存共享内存是进程间通信中最简单的方式之一。共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。...

2016-03-29 15:11:10

阅读数 12032

评论数 1

原创 进程间通信之-信号量semaphore--linux内核剖析(十)

信号量什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。 信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我...

2016-03-28 23:37:37

阅读数 18994

评论数 2

原创 报错storage size of ‘act’ isn’t known当使用std=c99编译struct sigaction

问题今天在学习进程间通信之-信号signal–linux内核剖析(九) 遇见了一个奇怪的问题storage size of ‘oldact’ isn’t known于是FQ去google之。分析了好久,终于发现问题的原因了。于是记录下来发现测试的代码如下 #include <stdio.h...

2016-03-27 16:10:38

阅读数 8338

评论数 2

原创 linux环境中英文切换配置以及乱码问题

问题这几天玩实验室的服务器,默认语言是中文的,有时候是挺不方便的,比如遇见一个比较复杂的问题,提示的信息是中文的,但是百度里根本没有好的资料,只能google,但是难道让我google搜中午么。因此就想把自己的环境还原成英文的。基础配置本质就是修改系统的LANG变量LANG是language的简称...

2016-03-27 14:47:04

阅读数 16136

评论数 0

原创 进程间通信之-信号signal--linux内核剖析(九)

信号及信号来源什么是信号信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。信号本质信号是在软件...

2016-03-27 13:22:21

阅读数 5430

评论数 0

原创 IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

背景知识IP地址IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。 IP地址是一个32...

2016-03-26 23:38:50

阅读数 127537

评论数 21

原创 linux下使用ccat让你的cat高亮显示

问题vim高亮了,终端高亮了,但是有没有觉得你的cat还是一如既往的灰暗,看着很不爽,而且没有重点,去看点什么东西,看起来很费劲。解决之Pygments之前我是用Pygments解决的, 官网 http://pygments.org/ 下载地址http://pygments.org/ 参见...

2016-03-26 21:55:08

阅读数 7920

评论数 0

原创 Linux下套接字详解(十)---epoll模式下的IO多路复用服务器

epoll模型简介epoll可是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Pe...

2016-03-25 15:10:54

阅读数 5874

评论数 3

原创 Linux下套接字详解(九)---poll模式下的IO多路复用服务器

参照 poll调用深入解析-从poll的实现来讲poll多路复用模型,很有深度 poll多路复用poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select...

2016-03-25 13:41:37

阅读数 3066

评论数 0

原创 Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem

问题这段时间实验室要完成一个内存故障注入工具和寄存器故障注入工具,在编写驱动的过程中,调试起来很麻烦(一般都是printk打印出来的,调试起来太不方便),于是想 “可不可以在调试设备驱动的时候,利用一个小工具来读写内存某块区域的值以及CPU中寄存器的值? 这点前辈的大神已经为我们找到了,参见《...

2016-03-23 18:11:46

阅读数 4232

评论数 0

翻译 怎么判断你的linux系统是不是运行在虚拟机器上面

参考 How to know if the machine you are working on are a VM 问题很多情况下,我们需要了解到我们的服务器是运行在虚拟机环境还是直接运行在实体机器上,因为我们了解到这些才能更好的实现我们的驱动程序。当然我们可以有很多中方法来检测我们的远...

2016-03-23 14:26:29

阅读数 13890

评论数 0

原创 C++模板的特化详解(函数模版特殊,类模版特化)

参照 小解C++模板特化 C++模板的特化 模板的全特化与偏特化 模版与特化的概念函数模版与类模版C++中模板分为函数模板和类模板 函数模板:是一种抽象函数定义,它代表一类同构函数。 类模板:是一种更高层次的抽象的类定义。 特化的概念所谓特化,就是将泛型的东东搞得具体...

2016-03-22 14:40:24

阅读数 21736

评论数 3

原创 C++ Traits编程技法--从迭代器的设计看参数推导与类型推导

迭代器与相应类型推导在写作泛型函数或代码时,我们可能存在这样的需要:与参数相关的其它类型,比如一个迭代器的值的类型,在算法中运用迭代器时,很可能会用到其也叫相应类型(associate type)。什么是相应类型? 迭代器所指之物的类型就是其中一个。如果我们的算法中有必要声明一个变量,以”迭代器...

2016-03-21 23:19:55

阅读数 2075

评论数 1

原创 C++ typeid关键字详解

typeid关键字 注意:typeid是操作符,不是函数。这点与sizeof类似) 运行时获知变量类型名称,可以使用 typeid(变量).name()需要注意不是所有编译器都输出”int”、”float”等之类的名称,对于这类的编译器可以这样使用int ia = 3; if(typeid(i...

2016-03-21 17:16:33

阅读数 10672

评论数 0

原创 C++中typename和class在声明模板时的区别

问题在下面的 template declarations(模板声明)中 class 和 typename 有什么不同?template<class T> class Widget; // uses "class" template<typename T>...

2016-03-21 14:21:30

阅读数 3971

评论数 3

原创 C++智能指针auto_ptr详解

auto_ptrauto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。std::auto_ptr&...

2016-03-20 23:37:07

阅读数 5075

评论数 0

原创 STL源码剖析--概述

学习教程凝霜–对STL源代码加了详细的注释–但是看着不方便,一篇博文只讲一个文件C++ STL源码剖析–对凝霜的详细索引,一篇博客存储了所有的文件侯捷的网站这里写链接内容Github的STL索引 c++泛型编程编译器支持检测–代码对应书中1.8~1.9节概述STL源码剖析-侯捷C++标准链接库中隶...

2016-03-20 18:02:17

阅读数 1657

评论数 1

转载 C语言实现封装、继承和多态

参照 C语言实现封装、继承和多态–通过创建一个VTable(virtual table)和在基类和派生类对象之间提供正确的访问 如何实现 C 语言的继承和多态–通过函数指针来实现的继承与多态,简单明了,animal基类,cat,dog两个派生类 技巧:用 C 语言实...

2016-03-19 10:57:15

阅读数 3663

评论数 0

原创 Linux下管理用户的命令大全

管理用户(user)的工具或命令 命令 描述 adduser 添加用户,会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码 useradd 添加用户,并设置一个默认或指定的userid和groupid,需要使用参数选项指定上述基本设置,如果不使用任何参数...

2016-03-18 22:43:38

阅读数 1481

评论数 0

原创 Linux软连接和硬链接

Linux链接概念链接——是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉...

2016-03-18 14:11:50

阅读数 3016

评论数 0

原创 C语言实现函数重载

参考 Overloading Functions in C 函数重载大家都知道 C++ 等支持面向对象的语言支持函数重载,那么编译器是如何辨别这些函数的呢?C++如何实现重载C++ 实现函数重载很大程度上依赖与编译器对函数名的 Mangling(损坏,破坏),即 C++ 的源代码被编译后同名的重...

2016-03-18 11:30:26

阅读数 17098

评论数 1

原创 LeetCode题解-6. ZigZag Conversion

题目描述 字符串“PAYPALISHIRING”通过一个给定的行数写成如下这种Z型模式: P A H N A P L S I I G Y I R 然后一行一行的读取:“PAHNAPLSIIGYIR” 写代码读入一个字符串并通过给定的行数做这个转换: strin...

2016-03-18 10:42:57

阅读数 2000

评论数 0

转载 浅谈 C++ 中的 new/delete

本文转载自 浅谈 C++ 中的 new/delete 和 new[]/delete[] new 和 deletenew 和 delete 到底是什么?如果找工作的同学看一些面试的书,我相信都会遇到这样的题: sizeof不是函数,然后举出一堆的理由来证明 sizeof 不是函数。在这里,和siz...

2016-03-17 21:31:37

阅读数 1659

评论数 0

原创 linux系统启动过程详解-开机加电后发生了什么 --linux内核剖析(零)

http://www.mamicode.com/info-detail-243819.html总的来说在操作系统加电启动之后到main函数执行之前操作系统经历了以下3个大步骤 * 启动BIOS。这个时候位于实模式下,加载中断向量和中断服务程序 * 加载操作系统内核并为保护模式做准备。这...

2016-03-17 16:35:32

阅读数 7940

评论数 0

原创 Linux性能测试工具-UnixBench--安装以及结果分析

UnixBenchunixbench是一个用于测试unix系统性能的工具,也是一个比较通用的benchmark, 此测试的目的是对类Unix 系统提供一个基本的性能指示,很多测试用于系统性能的不同方面,这些测试的结果是一个指数值(index value,如520),这个值是测试系统的测试结果与一个...

2016-03-17 14:08:06

阅读数 32462

评论数 0

原创 进程间通信之-管道--linux内核剖析(八)

管道管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个管道...

2016-03-16 23:30:21

阅读数 2733

评论数 0

原创 Linux进程间通信的几种方式总结--linux内核剖析(七)

进程间通信概述进程通信的目的 数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据 多个进程想要操作共享数据,一个进程对共享数据 通知事 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 资源共享 ...

2016-03-16 22:09:05

阅读数 42219

评论数 0

转载 《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

各位程序猿:         《剑指Offer》一书源自该书作者何海涛坚持更新与编写的博客(http://zhedahht.blog.163.com/),该博客收集整理了大量如微软、Google等知名IT企业的经典面试题。《剑指Offer》一书在此基础上选取了50个典型的程序员面试题,从基础知识...

2016-03-15 22:52:30

阅读数 1484

评论数 0

原创 C/C++中的static关键字的总结

static的历史 术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。 随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第...

2016-03-15 22:38:10

阅读数 1300

评论数 0

转载 C++成员函数的重载、覆盖与隐藏详解

成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。在看《高质量c/c++》中看到了函数的隐藏和覆盖是这么说的:覆盖的是指子类函数覆盖基类函数 在不同的类内(分别位于子类和父类)。 同名同参。 基类的函数名前必...

2016-03-15 21:13:59

阅读数 1861

评论数 0

原创 LeetCode题解-5. Longest Palindromic Substring

题目地址: https://leetcode.com/problems/longest-palindromic-substring/ 解题报告:https://github.com/gatieme/LeetCode/tree/master/5-LongestPalindromicSubs...

2016-03-14 21:06:54

阅读数 1257

评论数 0

转载 视觉直观感受 7 种常用的排序算法

转载自 视觉直观感受 7 种常用的排序算法 其他 可视化对比十多种排序算法(C#版) 程序员必须知道的8大排序和3大查找 快速排序介绍快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)...

2016-03-12 23:11:04

阅读数 2035

评论数 0

原创 C++ explicit关键字详解

单参数构造函数作为隐含的类型转换符号C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有缺省值的多参构造函数),承担了两个角色。 用于构建单参数的类对象 隐含的类型转换操作符. 例如一个类A的构造函数A(int i)就是,既可以用来作为构造器,又可以实现隐式转换A a=1;因为1可以通...

2016-03-12 22:15:08

阅读数 4017

评论数 0

原创 Linux下套接字详解(补充)--OSI七层与TCP/IP五层网络架构详解

OSI七层模型OSI是Open System Interconnect的缩写,意为开放式系统互联。OSI是Open System Interconnect的缩写,意为开放式系统互联。OSI七层参考模型的各个层次的划分遵循下列原则: 同一层中的各网络节点都有相同的层次结构,具有同样的功能。 同一节点...

2016-03-11 21:42:33

阅读数 3004

评论数 0

原创 CodeBlocks最全官方配色方案

官方配色codeblocks是一个功能很强大编程软件,我们在安装codeblocks后软件默认的是白底黑字界面,这种界面在长时间写代码时会对眼睛造成很大伤害,增加眼疲劳,因此我们需要一个清晰干净明了,不刺眼的编程界面。下面教我们如何配置一个养眼的编程界面。 官方地址 Syntax highli...

2016-03-10 16:55:55

阅读数 33790

评论数 6

原创 C#播放背景音乐的五种方法

利用DirectX首先要安装DirectX SDK。安装好之后,在C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0目录下有在.net下可以使用的dll文件。引用添加引用Microsoft.DirectX.AudioVideoP...

2016-03-10 13:49:19

阅读数 18274

评论数 2

原创 Linux下套接字详解(八)----select模式下服务器(非阻塞,单进程+多进程+多线程)

前言首先让我们回顾一下子我们之前都讲了那些最开始我们将了一下子Linux下套接字详解(一)—-TCP/UDP的区别与联系其中简要提到了三次握手与四次挥手,但是不是很详尽,于是我转载了一篇 Linux下套接字详解(补充)—- TCP协议中的三次握手和四次挥手(图解)然后在第一篇博文中,我们讲解了so...

2016-03-08 21:51:07

阅读数 3392

评论数 0

原创 Linux下套接字详解(七)----线程池accept处理高并发connect

前言服务器在调用listen和accept后,就会阻塞在accept函数上,accpet函数返回后循环调用accept函数等待客户的TCP连接。 我们知道服务器段listen套接字能处理的连接数与监听队列的大小有关,如果这时候又大量的用户并发发起connec连接,那么在listen有队列上限(最...

2016-03-08 18:15:18

阅读数 6549

评论数 0

提示
确定要删除当前文章?
取消 删除