- 博客(72)
- 资源 (8)
- 收藏
- 关注
原创 Linux进程间通信的各种方式及其比较
进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义
2015-05-27 11:13:25 1364
原创 关于1000!的问题
前一段时间看到一个往年程序竞赛的题解, 有一个题目说的是求 100 的阶乘末尾有多少个 0. 题解中给出的讲解提到,一个数 n 的阶乘末尾有多少个 0取决于从 1 到 n的各个数的因子中 2 和 5的个数, 而 2的个数是远远多余 5 的个数的,因此求出 5 的个数即可. 题解中给出的求解因子 5 的个数的方法是用 n 不断除以 5, 直到结果为 0, 然后把中间得到的结果
2015-05-27 09:59:41 1332
原创 TCP之socket
数据传输的过程: 建立连接后,TCP协议提供全双工的通信服务,但是一般的客户端/服务器程序的流程是由客户端主动发起请求,服务器被动处理请求,一问一答的方式。因此,服务器从accept()返回后立刻调用read(),读socket就像读管道一样,如果没有数据到达就阻塞等待,这时客户端调用write()发送请求给服务器,服务器收到后从read()返回,对客户端的请求进行处理,在此期间
2015-05-27 08:57:28 1242
原创 66个求职应聘技巧性问答(六)
56、为什么选择这个职务?回答提示:这一直是我的兴趣和专长,经过这几年的磨练,也累积了一定的经验及人脉,相信我一定能胜任这个职务的。分析:适时举出过去的“丰功伟业”,表现出你对这份职务的熟稔度,但避免过于夸张的形容或流于炫耀。 57、什么选择我们这家公司?回答提示:曾经在报章杂志看过关于贵公司的报道,与自己所追求的理念有志一同。而贵公司在业界的成绩也是有目共睹的,而且对员
2015-05-27 08:50:51 1453
原创 66个求职应聘技巧性问答(五)
45、你工作经验欠缺,如何能胜任这项工作?常规思路:①如果招聘单位对应届毕业生的应聘者提出这个问题,说明招聘公司并不真正在乎“经验”,关键看应聘者怎样回答。②对这个问题的回答最好要体现出应聘者的诚恳、机智、果敢及敬业。③如“作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期间我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。但我有较强的责任心、
2015-05-26 08:49:27 1103
原创 66个求职应聘技巧性问答(四)
35、眼下你生活中最重要的是什么?回答提示:对我来说,能在这个领域找到工作是最重要的,能在贵公司任职对我说最重要。 36、你为什么愿意到我们公司来工作?回答提示:对于这个问题,你要格外小心,如果你已经对该单位作了研究,你可以回答一些详细的原因,像“公司本身的高技术开发环境很吸引我。”、“我同公司出生在同样的时代,我希望能够进入一家与我共同成长的公司。”、“你们公司一直都稳定发
2015-05-26 08:46:11 1030
原创 66个求职应聘技巧性问答(三)
23、作为被面试者给我打一下分?回答提示:试着列出四个优点和一个非常非常非常小的缺点(可以抱怨一下设施,没有明确责任人的缺点是不会有人介意的)。 24、你怎么理解你应聘的职位?回答提示:把岗位职责和任务及工作态度阐述一下。 25、喜欢这份工作的哪一点?回答提示:相信其实大家心中一定都有答案了吧!每个人的价值观不同,自然评断的标准也会不同,但是,在回答面试官这
2015-05-26 08:41:32 1129
原创 66个求职应聘技巧性问答(二)
12、如果你做的一项工作受到上级领导的表扬,但你主管领导却说是他做的,你该怎样? 回答提示:我首先不会找那位上级领导说明这件事,我会主动找我的主管领导来沟通,因为沟通是解决人际关系的最好办法,但结果会有两种:①我的主管领导认识到自己的错误,我想我会视具体情况决定是否原谅他。②他更加变本加厉的来威胁我,那我会毫不犹豫地找我的上级领导反映此事,因为他这样做会造成负面影响,对今后的工作不
2015-05-26 08:40:33 1062
原创 66个求职应聘技巧性问答(一)
1、请介绍一下你自己?回答:只说姓名、年龄、爱好、工作经验,回答这个问题过于平常,这些在简历上都有。公司最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句
2015-05-26 08:37:54 1770 4
原创 师兄的面经(09)
整理资料的时候偶然间发现了师兄的面经,如果我不将这个整理出来,可能此篇文章再也见不到光明,谨以此文,献给张连法师兄。-------------------------------------------------------------------------------应师弟之邀写份面经,自己也想做个总结,抒发一下感受。历程:7-9月,约50多天的准备,自9.13华为上机到9.27
2015-05-25 10:15:28 1874
原创 Sed和Awk简介
Sed:“交互式”面向字符流的编辑器。使用sed小结: 1. 在一个或多个文件上自动实现编辑操作 2. 简化对多个文件执行相同的编辑处理工作 3. 编写转换程序awk能够完成的一些工作: 1. 将文本文件看作由记录和字段组成的文本数据库 2. 使用变量操作数据库 3. 使用算术和字符串操作符 4.
2015-05-22 08:47:17 926
原创 Nginx中的原子操作
在不支持原子操作的处理器上Nginx提供了自己的原子操作,但是该原子操作使用C语言模拟的:static ngx_inline ngx_atomic_uint_tngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old, ngx_atomic_uint_t set){ if (*lock == old) {
2015-05-21 16:56:51 2019
原创 end_request: I/O error, dev mtdblock2, sector 0 Buffer I
内核移植时遇到这个错误:end_request: I/O error, dev mtdblock2, sector 0 Buffer I/O error on device mtdblock2, logical block 0原因分析:由于内核是通过uboot烧写到nandflash中,因此uboot产生的ecc校验码与内核的ecc校验码不同,所以需要关闭内核的ecc校验。
2015-05-18 11:28:14 3212 1
原创 arm-linux-ld: no machine record defined
在编译内核的过程中遇到这样的问题:arm-linux-ld: no machine record defined详细见截图:经过在网上查询说解决放放如下:修改:arch/arm/kernel/vmlinux.lds文件的最后部分:注释掉上图中的ASSERT((__proc_info_en
2015-05-18 11:25:17 2815
原创 电路交换、报文交换与分组交换
( 1)电路交换:由于电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路(由通信双方之间的交换设备和链路逐段连接而成),因而有以下优缺点。优点:①由于通信线路为通信双方用户专用,数据直达,所以传输数据的时延非常小。②通信双方之间的物理通路一旦建立,双方可以随时通信,实时性强。③双方通信时按发送顺序传送数据,不存在失序问题。④电路交换既适用于传输模拟信号,也适用于传输
2015-05-17 10:28:31 1478
原创 Http 和TCP的关系,TCP长连接和短连接有什么区别?
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。HTTP 是应用层协议,TCP 是传输层协议(位于应用层之下)。一、长连
2015-05-17 10:00:04 1428
原创 TCP连接三次握手,四次挥手告别
三次握手:第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq n
2015-05-17 09:57:02 1373
原创 线程和进程的区别
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)内存空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.一个程序至少有一个进程,一个进程至少有一个线程. 进程是系统进行资源分配和调
2015-05-17 09:51:01 776
原创 堆和栈的区别
堆和栈的区别 1)栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。 2)堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。堆是向高地址扩展的数据结构,是
2015-05-17 09:50:23 763
原创 malloc和new的区别是什么?
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的
2015-05-15 08:31:53 1112
原创 Java面试题总结之如何跳出多重循环
Java中break只能跳出当前循环,要想跳出多重循环可以使label标签:例:public class StepoverMultiLoop { public static void main(String[] args) { int count = 0; ok: for (int i
2015-05-15 08:28:18 1554 4
原创 java面试题总结之super()与this()的区别
super()与this()的区别?this()调用当前对象的无参构造函数,super()调用父类的无参构造函数 1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) 3)super: 它引用当前对象的直接父类中的成员(用来访
2015-05-15 08:25:37 2636
原创 Rust语法之原生数据类型(一)
Rust语言有一些被认为是原生类型的数据类型。这意味着它们是语言内建的。Rust是这样的一种结构,这种结构是标准库在这些类型上提供了一些有用的类型,但是这些才是最原始的。Booleans Rust有一个内置的boolean类型,名为bool。有两个值:true和false: let x = true; let y: bool =
2015-05-15 08:20:07 9023
原创 Rust语法之注释
既然已经学习了函数,学习注释是个不错的主意。注释是你留给其他程序员帮助介绍你的代码的笔记。编译器将绝大部分的忽略他们。 你需要注意的是Rust有两种形式的注释:单行注释和文本注释。 // Line comments are anything after ‘//’ and extend to the end of the line. let x =
2015-05-15 08:07:25 2771
原创 Rust语法之if语句
Rust中if并不复杂,但与传统系统语言相比,更像动态类型语言中的if。我们来介绍一下,让读者可以理解细微差异。if是一种一般概念的具体形式:分支。这个名称来自树的分支:这是一个决策点,根据所做的选择,可以选择不同的路径。就if而言,一个选择指出两条路:let x = 5i;if x == 5i { println!("x is five!");}如果改变
2015-05-14 09:39:33 4061
原创 Rust语法之变量绑定
事实上每个非‘Hello World’Rust程序都使用“变量绑定”。看起来如下:fn main() { let x = 5i;}在每个例子前都加上fn main() {有点单调乏味,所以以后就省略。如果读者一直跟着学习,请确保编辑main ()函数,不能省略,否则会出错。在很多语言中,这叫做“变量”。但Rust的变量绑定却暗藏玄机。例如,Rust左边的let表
2015-05-14 09:38:34 3682
原创 Rust进阶之条件编译
Rust有一个特殊的属性,#[cfg],允许你一句传递给编译器的标志来编译代码。它有两种形式: #[cfg(foo)] #[cfg(bar = "baz")] 它们还有一些辅助形式: #[cfg(any(unix, windows))] #[cfg(all(unix, target_pointer_width =
2015-05-14 09:21:55 10948
原创 Rust进阶之堪比junit的单元测试和集成测试
我们来讨论一下怎样测试Rust代码。我们不会讨论的是正确的方式测试Rust代码。有很多学校里学的思想是使用正确和错误的方式写测试。所有的这些方法是用类似的基本工具,我们将会给你展示使用它们的语法。test属性 最简单的,在Rust中的测试是一个拥有test属性注解的函数。让我们使用Cargo创建一个名为adder的项目: $ cargo new
2015-05-14 09:05:51 5432
原创 Rust猜数字之循环
循环 loop关键字给我们一个无限循环。让我们添加它: extern crate rand; use std::io; use std::cmp::Ordering; use rand::Rng; fn main() { println!("Guess the number!");
2015-05-13 09:14:48 2262
原创 Rust猜数字之比较
比较 既然我们获得了用户的输入,让我们把猜测的数据跟神秘数字做比较。这是我们的下一步,尽管它还不能真正工作: extern crate rand; use std::io; use std::cmp::Ordering; use rand::Rng; fn main() { println!("G
2015-05-13 09:11:00 3363
原创 Rust猜数字之产生神秘数字
产生一个神秘数字 接下来,我们需要产生一个神秘数字。Rust在它的标准库中还没有包括随机数函数。然而,Rust团队确实提供了一个一个rand crate。‘crate’是Rust代码的一个包。我们已经构建了一个二进制crate,是可执行的。rand是一个库crate‘library crate’,包括可以被其他程序使用的代码。 使用外部crate是Cargo
2015-05-13 08:39:50 3423
原创 Rust猜数字之处理猜测
处理一次猜测 让我们继续!我们猜数字游戏需要做的第一步是允许玩家输入一个猜测的数字。将下面的代码输入到src/main.rs文件中: use std::io; fn main() { println!("Guess the number!"); println!("Please input your guess.
2015-05-13 08:38:59 2248
原创 rust猜数字之创建项目
作为我们的第一个项目,我们将会实现一个典型编程入门者的问题:猜数字。下面是工作原理:我们的程序将会在1-100之间随机产生一个数字。程序将会提示我们输入猜测的数字,它将告我我们所猜的数字太大或太小。一旦我们猜中,程序将会祝贺我们。听起来还不错吧?创建工程 我们先创建一个工程。切换到你的projects目录。还记得我们是怎么创建hello_world项目中的目录和Ca
2015-05-13 08:34:11 3143
原创 Rust的包管理器Cargo
安装 安装Cargo最简单的方法是使用rustup脚本获得: $ curl -sS https://static.rust-lang.org/rustup.sh | sudo bash 你将会获得最新版本的Rust和最新版本的Cargo。你需要每天运行一次该脚本来获取最新升级。 如果你使用的是Windows,
2015-05-12 11:25:37 7422
原创 第一个Rust程序——Hello,world!
既然你已经安装了Rust,我们开始写第一个Rust程序吧。在任何一种新语言中的第一个程序是在屏幕上输出“Hello,world!”是一个传统。以这样一个简单的程序开始的好处是,它不仅可以检验你已经安装了编译器,而且还能验证它是否正常工作。并且往屏幕上输出东西是一个很平常的事情。 第一件要做的事情是创建一个保存我们的代码的文件。我喜欢在我的home目录中创建一个projec
2015-05-12 10:57:25 9103 2
原创 安装Rust
使用Rust的第一步就是安装它!有许多安装Rust的方法,但是最简单的是使用rustup脚本。如果你是用的是Linux或Mac,你需要做的是(注意,你不需要输入$s,它们仅仅暗示每个命令的开始): $ curl -sf -L https://static.rust-lang.org/rustup.sh | sh 如果你担心使用crul | sh有潜在的危
2015-05-12 09:54:33 5551 1
原创 Linux软件包管理——rpm
/etc, /bin, /sbin, /lib, /usr/share/man/etc, /bin, /sbin, /lib:系统启动就需要用到的程序,这些目录不能挂载在额外的分区,必须在根文件系统分区上/usr/ bin sbin lib 操作系统核心功能,可以单独分区 /usr/local 建议单独分区
2015-05-12 08:43:53 1184
原创 Linux网络配置——ifconfig&ip
主机接入网络:IPNETMASKGATEWAYHOSTNAMEDNS1DNS2DNS3 手动指定: DHCP:Dynamic Host Configuration Protocol 路由Linux网络配置: 网络属于内核的功能 /etc/udev/rules.d/***.rules
2015-05-12 08:43:41 1241
原创 信号
一、信号的作用 使用信号的目的是: 让进程知道已经发生了一个特定的事件强迫进程执行它自己代码中的信号处理程序 常规信号1-31 实时信号32-64 内核区分内核信号传递的两个不同的阶段: 信号产生、信号传递 每个被产生的信号至多被传递一次。信号是可消费资源。1、传递信号时所执行的操作 SIGKILL
2015-05-11 09:01:22 1072
Linux系统目录解析
2015-03-06
数据结构考研资料(严蔚敏)
2011-05-24
Linux编程白皮书
2010-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人