自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张勤一

echo "are you happy ?" | cut -d ' ' -f 3 | tr -d '\r\n '

  • 博客(18)
  • 资源 (11)
  • 问答 (2)
  • 收藏
  • 关注

原创 Linux内核探讨-- 第二章

本文是个人分析《Linux内核设计与实现》而写的总结,欢迎转载,请注明出处:                                                                                 http://blog.csdn.net/dlutbrucezhang/article/details/12185125      第二章 --进程调度

2013-09-30 10:58:14 2346

原创 Linux内核探讨-- 第一章

第一章--进程管理1.什么是进程            第一章首先从进程开始讲起,进程是操作系统最基本的东西,我们依靠进程提供服务,利用进程完成我们需要完成的工作。首先需要明白什么是进程。它是一个动态实体,是程序的一次执行过程。一个进程需要一些必须的资源才能够运行,而最基本的资源就是 CPU 和内存。进程获得 CPU 它就处于运行状态,进程的运行肯定需要程序段,数据段,堆,栈这样的资源,而这些就是

2013-09-28 21:48:06 1975

原创 合并两个有序的链表

记得以前写过一个合并两个有序数组的问题,也就是相互比较并放入合适的位置,今天的这个算法和数组的问题其实是一样的,这里不多做介绍了,直接贴出代码:链表的定义:typedef struct _Node{ int data; struct _Node *next;}Node, *List;合并代码:List merge_two_list(List list1, List list2){ Li

2013-09-27 19:37:13 1654

转载 linux 同步与异步--阻塞与非阻塞型I/O

同步阻塞IO在这个模型中,应用程序(application)为了执行这个read操作,会调用相应的一个system call,将系统控制权交给kernel,然后就进行等待(这其实就是被阻塞了)。kernel开始执行这个system call,执行完毕后会向应用程序返回响应,应用程序得到响应后,就不再阻塞,并进行后面的工作。例如,“在调用 read 系统调用时,应用程序会阻塞并对内核进行上下文切换。

2013-09-25 15:20:17 2414

原创 快速修改数组的问题

记得去年上算法分析课的时候讲过怎么快速的修改数组,比如,把数组中偶数放在前面,奇数放在后面;把数组中能被三除尽的数放在前面,不能的则放在后面。。。      如果,我没看到那道题我的思路肯定是一个一个的写函数呗,不就是快速排序的思想吗,不过,当我看到了那道题的解法后,发现,真的应该好好想想函数的通用性。      下面,我直接贴出代码:#include int quick_insert_(in

2013-09-25 15:15:15 1773

原创 C语言 string.h 中函数的实现

最近是校招很热的季节,实验室里讨论最多的也就是算法,面试和笔试的必备知识储备。昨天想起 C 语言中 string.h 中的函数在操作字符串时很方便,所以,就想起写写那些函数。      当然,这些函数实现的只是简单的功能,并没有加入太多的排错功能,欢迎大家及时指正代码中出现的问题,谢谢!my_string.h#include #include int my_strcmp(char *stri

2013-09-25 08:47:02 4088 12

原创 合并有序数组问题

有这样一个问题,现在有两个有序的数组,第一个数组的空间足够容纳两个有序数组中的数,利用高效的方法把两个数组合并,并使得数组是有序的,且最后得到的是第一个数组,同时不借助其他额外的存储空间。      其实这种题的解法几乎都是一样的,都是从最后一个数开始,这就是取极值的思想,因为数组是有序的,所以,每个数组中最大的那个数一定在数组的末尾。      这里,先贴出代码,之后再讲解原理:#include

2013-09-19 16:30:08 4165 7

原创 倒序输出单链表的内容

单链表是最简单的数据结构,同时也是最常接触的数据结构,这个问题也很常见,通常这个问题我们有两种解决办法。      1.逆置单链表之后输出      这篇文章讲述了这样的过程http://blog.csdn.net/dlutbrucezhang/article/details/11709633,但是这种方法不一定可行,因为这样改变了单链表原来的结构      2.利用栈的后进先出的思想,首先我们正

2013-09-19 16:12:23 3095

原创 判断单链表是否有环

单链表是最常见的数据结构,带环的单链表不是很常见,但是在许多面试中出现的概率较高,其中不乏一些经典的问题,怎样判断单链表中是否有环。      单链表带环指的是如下这张图所示情况:      其实思想还是挺简单的:      我们需要两个指针,初始时都指向链表的头,之后指针同时移动,其中一个指针一次移动一步,另一个指针一步移动两步,如果两个指针有相等的可能,则链表就是有环的,否则,出现一个指针指向

2013-09-16 17:09:36 2021 2

原创 两个数之和等于第三个数

这是一个很好的算法题,解法类似于快速排序的整理方法。同时,更为值得注意的是这道题是 人人网2014校园招聘的笔试题,下面首先对题目进行描述:      给出一个有序数组,另外给出第三个数,问是否能在数组中找到两个数,这两个数之和等于第三个数。      我们首先看到第一句话,这个数组是有序的,所以,我们可以定义两个指针,一个指向数组的第一个元素,另一个指向应该指向的位置(这个需要看具体的实现和数组

2013-09-16 16:04:34 6417 2

原创 C语言实现单链表的逆置

单链表的逆置是一个非常经典的问题,这里利用两个思想进行解决。      首先,我们需要看下原理图,其实两个思想都是一样的,都是使后一个的节点的 next 指针指向前一个节点,依次递推,直到第二个节点指向第一个节点,第一个节点的 next 指针指向 NULL。      第一种方法:      在链表往前走的过程中,记录前一个节点,当前节点和后一个节点,并使当前节点的 next 指针指向前一个节点,

2013-09-15 16:29:43 11916 5

转载 fcntl使用

功能描述:根据文件描述词来操作文件的特性。#include #include  int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd是被参数cmd操作(如下面的描述)的

2013-09-14 22:51:55 1472

原创 查找重复的数

在前几天写了一个查找缺失的数的算法(http://blog.csdn.net/dlutbrucezhang/article/details/11467693),今天写一个类似的算法,查找一个重复的数。       描述:一个数组中存放连续的数字,但是其中多出一个数字,是一个重复出现的数字,当然,它可以出现在任何位置。       解决方法:      1.总和相减法       由于多出一个数,所

2013-09-13 19:22:15 1640

原创 Linux中的信号处理原理

Linux中的信号来自Unix,在发展了30多年之后,许多方面都没有发生太大的变化。信号可以由内核产生,也可以由用户进程产生,并由内核传送给特定的进程或线程(组),若这个进程定义了自己的信号处理程序,则调用这个程序去处理信号,否则则执行默认的程序或者忽略。      信号处理程序是用户态进程所定义的函数,并包含在用户态的代码段中。handle_signal()函数运行在内核态,而信号处理程序运行在

2013-09-11 19:26:50 3437

原创 数组中存储不定个数的元素

现在有这样一个问题:     首先定义一个大小为20的整型数组,就好像这样-- int a[20], 之后,根据需要存储一定量的数到数组中(可以小于20个),要求是输入数字以空格为单位隔开,直到输入回车结束输入,并把数字存入数组中。     示例:输入数据 1 2 9 8 7(\r),之后 a[0] = 1,a[1] = 2,a[2] = 9,a[3] = 8, a[4] = 7,其余初始化为0

2013-09-09 18:30:07 3458 5

原创 查找缺失的数

有这样一个数组,它包含 1 - n 中的 n - 1 个数,缺少的那个数不知道,怎样才能找到那个数?      这里有两种方法实现上述问题。      1.对所有数求和之后用原有的总和去减即可      2.利用异或运算 -- 由于异或的原理是相同则为0,所以,首先异或1到n中的每个数,接着利用所得到的结果异或数组中的 n - 1 个数,最终得到的那个数就一定是缺少的那个数      让我们看下实

2013-09-09 09:53:23 2312

转载 神奇的大内核锁

Big Kernel Lock(BKL)(大内核锁),是linux内核中使用到的一种锁,它跟普通的锁原理上的一样的:lock_kernel();/* 临界区 */unlock_kernel();但是它又有一些非常诡异的地方。从表面上看:1、BKL是一个全局的锁(注意,是“一个”而不是“一种”),它保护所有使用它来同步的临界区。一旦一个进程获得BKL,进入被它保护的临界区,不但该临界区被上锁,所有被

2013-09-04 10:55:46 2588

转载 8086 CPU 寄存器简介

8086  CPU 中寄存器总共为 14 个,且均为 16 位 。即 AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 个。而这 14 个寄存器按照一定方式又分为了通用寄存器,控制寄存器和段寄存器。通用寄存器:AX,BX,CX,DX 称作为数据寄存器:AX (Accumulator):累加寄存器,也称之为累加器;BX (Base):基地址寄存器;CX

2013-09-03 10:56:37 2042

C语言排序算法

这里包含了一些面试中会遇到的算法,个人感觉实现比较简单,浅显易懂

2014-10-23

面试题目集锦--二叉树

面试的时候,我们会经常碰到二叉树之类的题目,这里,我对二叉树算法进行了许多的总结,希望能对一两位朋友有帮助

2014-10-22

链表算法集锦

这是一个关于链表算法的类,里面收集的算法还是比较全面的,当然,由于本人水平有限,可能在算法中存在一些错误,欢迎大家指正

2014-10-21

适配器模式

适配器模式设计,这里用的用例代码是Java,有助于更好的学习设计模式

2013-07-17

教师信息和学生成绩管理系统

这是一个管理系统,实现教师信息和学生的成绩管理

2013-03-28

二维码生成

这个例子实现的是使用Android代码结合Google提供的开源项目ZXing实现二维码的生成,其中包含条形码的生成和解码

2013-02-16

一个Demo学习Android中所有的Service

这个例子包含了Android开发中常用到的Service,是学习Service的典例

2013-02-11

Android所有组件学习

这个例子几乎包含了Android内的所有组件,是安卓初学者学习的典例

2013-02-11

100多个Android Demo的集合

几乎涵盖Android的所有组件,来自“安卓巴士”,感谢作者的奉献

2013-02-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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