- 博客(69)
- 收藏
- 关注
原创 2、设计包含min函数的栈
要求O(1)时间push、pop和min函数分析:push和pop是O(1)的若要求min也是O(1)的,那么在每次push时都应计算当前最小值。又因为是栈,所以每个栈元素项保存当前的min值。push时有两种情况:当前值 当前值是min值当前值 > 之前栈顶的min值 ===> 之前栈顶的min值是min值解: 栈数据结构设计:struct 栈元
2015-04-27 17:09:25
563
原创 1、如何将二叉排序树转换为排序的双向链表
输入:二叉查找树左边子树比根小,右边子树比根大输出:双向排序的链表头开始 : 增序尾开始: 降序分析:中序遍历二叉查找树,可以的到一个有序的链表;每次访问一个树节点时,如果左子树和右子树是有序的,那么只需要调整三个节点:左边子树链表的尾节点(lr),当前根节点(root),右边子树的头结点(rh)典型的递归思想。解:节点指针 *head = NULL
2015-04-27 16:39:08
943
原创 分布式和服务器并发
服务器并发http://itindex.net/detail/49438-%E6%80%A7%E8%83%BD-%E7%BD%91%E7%BB%9C-%E9%80%9A%E4%BF%A1 高性能模块间通信http://itindex.net/detail/47180-%E6%80%A7%E8%83%BD-%E6%9C%8D%E5%8A%A1%E5%99%A8-%E8%AE%BE%E8
2015-04-08 21:12:14
697
原创 C语言运算符 优先级
运算符优先级不是运算优先级,而是结合性优先级,意指:高优先级的运算符所结合的变量或表达式,不能被低优先级的运算符分离。优先级决定运算符和哪些子表达式结合,表达式在取值时,按照递推结合,递归返回的顺序运算,所以编译器会先处理优先级低的运算符。
2014-07-07 15:03:28
503
原创 c 语言编译器 (32bit测试)对整数类型long long截断
#include int main (){ long long a = 0x123456789a; printf("%llx\n",a); printf("%d %d %d\n", sizeof(long), sizeof(int), sizeof(long long)); return 0;}
2014-06-22 12:39:12
1186
转载 fread和fwrite注意
fwrite(将数据写至文件流)定义函数 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);函数说明 fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入
2014-06-21 11:49:43
1408
转载 C语言文件操作函数
转自clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #in
2014-06-21 11:45:12
653
转载 sublime IDE
转自一.下载和安装 Sublime Text2是一款开源的软件,不需要注册即可使用(虽然没有注册会有弹窗,但是基本不影响使用)。 下载地址:http://www.sublimetext.com/,请自行根据系统版本进行下载。下载好之后直接安装即可。 默认的sublime的配置文件是在C盘目录下的,如果有朋友觉得放C盘不习惯,那么在安装好sublime之后,不要直接运行subl
2014-06-19 22:22:06
994
转载 libxls 与 xlslib的结合
程序读xls中的内容并且 行列掉换 输出xls文件。 gcc a.c -o a.out -I /usr/include/libxls/ -L /usr/lib/libxls -lxlsreader -I /usr/include/xlslib/ -L /usr/lib/ -lxls./a.out test2.xls hello.xls #include #include
2014-05-27 15:34:56
2291
转载 libxls 与 数据库
什么excel什么表格我表示一概不懂,最近刚好在看数据库方面的知识,我在想如果把excel文件里面的内容导入到mysql中用起来该是多么的方便,(当然这只是在我不懂excel前提下的一厢情愿),再加上我也要找个数据库练练手,手里还有两个excel文件,于是乎就想到了将excel文件中的内容导入到mysql数据库中。我并不知道有没有其它的什么方法,因为我压根就没去搜索过,我的方法只有一个,那就是
2014-05-27 15:22:05
1160
原创 内存管理
http://blog.youkuaiyun.com/vanbreaker/article/category/1132690/1内存管理
2014-04-15 20:02:20
483
原创 低分辨率时钟动态定时器处理(2 )
// 触发低分辨率定时器软中断// 调用路径:update_process_times->run_local_timers// 注:// 1.update_process_times以HZ频率被调用,因此低分辨率定时器的分辨率为HZ// 2.当未激活高分辨率定时器框架时,高分辨率定时器在时钟中断被运行,因此高分辨率定时器的分辨率也HZ1.1 void run_local_timers
2014-04-08 21:10:21
636
原创 低分辨率定时器框架(1 )
// 低分辨率定时器框架初始化// 调用路径:start_kernel->init_timers// 函数任务:// 1.创建当前cpu的定时器框架数据结构// 2.监听cpu状态信息// 3.注册低分辨率软中断1.1 void __init init_timers(void){ //创建当前cpu的定时器框架数据结构 int err = timer_cpu_notify(
2014-04-08 21:05:14
554
转载 计算机分类经典书籍
计算机科学理论Introduction to the Theory of Computation 2ndAutomata, Computability and Complexity: Theory andApplicationsLanguages and Machines: An Introduction to the Theory ofComputer ScienceComputabil
2014-04-01 16:47:34
985
翻译 G41 MCH 简介
The role of a (G)MCH in a system is to manage the flow of informationbetween its interfaces: the processor interface, the System Memory interface, theExternal Graphics or PCI Express interface, in
2014-03-31 16:27:17
1224
原创 64位系统深入剖析:不仅是内存这么简单
http://tech.sina.com.cn/h/2007-12-05/10581893687.shtml
2014-03-30 23:00:48
438
转载 X86内存布局
This article describes the contents of the computer's physical memory at the moment that the BIOS jumps to your bootloader code.本文主要描述从BIOS代码工作到OS bootloader之前的计算机物理内存分析。"Low" memory (低地址内存(
2014-03-30 22:22:15
766
原创 ubuntu bochs环境
操作系统:ubuntu13.04内核: 3.8.6$ tar zxvf bochs-2.6.2.tar.gz$ ./configure --enable-debugger --enable-disasm ## 打开编译功能和反汇编$ make$ sudo make install 关于make报错:1,没有多线程库/usr/bin/ld: gui
2014-03-30 19:13:07
649
转载 x86体系结构
abi: 分i386和x86-64i386的:www.sco.com/developers/devspecs/abi386-4.pdfx86-64的:http://www.x86-64.org/documentation/abi-0.99.pdfsystem programming:TNND,这个好多啊。。1, Intel手册卷3(分A和B):
2014-03-28 17:01:53
884
转载 linux下汇编
Linux下的汇编语法使用的应该是GNU汇编(AT&T汇编)。下面的文章介绍了AT&T汇编相关的知识: linux中的x86内联汇编:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/ linux汇编开发指南:http://www.ibm.com/developerworks/cn/linux/l-
2014-03-28 17:00:59
463
转载 深入linux设备驱动底层模型
------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言Linux设备模型是一个极其复杂的结构体系,在编写驱动程序的时候,通常不会用到这方面的东西,但
2014-03-28 16:58:54
658
转载 软中断机制
软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/*********************************************************************************
2014-03-28 16:50:34
609
转载 驱动接口层&通用逻辑层
在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc和i
2014-03-28 16:47:17
799
转载 中断流控层处理
1. 中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同步和保护;
2014-03-28 16:46:30
476
转载 arch相关的硬件封装
Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;
2014-03-28 16:44:55
593
转载 中断系统基本原理
/*****************************************************************************************************/声明:本博内容均由http://blog.youkuaiyun.com/droidphone原创,转载请注明出处,谢谢!/**************************************
2014-03-28 16:42:55
1295
原创 intel 芯片组简介
南桥基于Intel处理器的个人电脑主板芯片组两枚芯片中的一枚,另一枚即为北桥。南桥设计用来处理低速信号,通过北桥与CPU联系。南桥包含大多数周边设备接口、多媒体控制器和通信接口功能。例如PCI控制器、ATA控制器、USB控制器、网络控制器、音效控制器。各世代的南桥性能大多雷同,但偶然听到某些南桥会有较差的Serial ATA或USB性能。大多数南桥都支持PCI Express Hub,但主板制
2014-03-24 10:57:04
1460
原创 PCI总线概述
1.计算机总线概述计算机总线技术包括通道控制功能、使用发放、仲裁方法和传输方式。主要职能是负责计算机各模块之间的信息传输,总线的传输率是其性能的主要指标。多总线结构是指将CPU与存储器、I/O等设备之间有两种以上的总线,这样可以将慢速的设备和快速的设备挂在不同的总线上,减少总线竞争,提升系统的效率。总线性能:(1)总线宽度:数据总线的数量 用bit表示(2)传输率: 每秒在
2014-03-22 13:44:11
1308
转载 中断子系统(8)软中断入口
// irq统计信息1.1 typedef struct { unsigned int __softirq_pending;//softirq标志位,32种softirq unsigned long idle_timestamp; unsigned int __nmi_count; //nmi中断发生次数 unsigned int apic_timer_irqs; /* arch dep
2014-03-21 12:55:08
581
转载 中断子系统(7) 中断退出处理
// 中断公共入口1.1 common_interrupt: //所有可屏蔽中断函数的公共入口 SAVE_ALL //寄存器入栈 movl %esp,%eax // eax保存栈顶指针 call do_IRQ //中断处理函数 jmp ret_from_intr //从中断返回// 从中断返回// 函数主要任务:// 1.
2014-03-20 21:00:35
778
转载 中断子系统(6)中断嵌套的处理
// current_thread_info()->preempt_count bit划分// /*// * - bits 0-7 are the preemption count (max preemption depth: 256)// * - bits 8-15 are the softirq count (max # of softirqs: 256)// */
2014-03-20 20:47:25
686
转载 中断子系统(5)电流层中断处理
// 中断电流类型:// 边沿型(edge);// 通过电位变化触发中断(上升沿/下降沿),如果外设希望触发一个中断,它在irq line上发送一个脉冲,// 然后释放irq line恢复到inactive状态。cpu通过检测irq line上的脉冲来触发中断处理函数的执行。// 电平型(level):// 通过
2014-03-20 17:24:02
669
转载 中断子系统(4)中断入口处理
// 中断入口// 注:gnu 每个符号分属global(被输出)和local(不被输出)两类中的一种。1.1 #define ENTRY(name) \ .globl name; \ ALIGN; \//之后的代码对齐到32字节,使用NOP(0x90)补齐 name:// 代码对齐// .align(n) power-of-2对齐// 4 对齐到16字节, 5 对齐到3
2014-03-20 17:02:09
768
转载 中断子系统(3)8259A中断控制器
// 8259A 中的寄存器:// ICW: Initialization Command Word,初始化命令字 寄存器// OCW: Operation Command Word,操作命令字 寄存器,用于控制 8259A// IRR: Interrupt Request Register,中断请求寄存器,共 8bit,对应 IR0~IR7 八个中断管脚。当某个管脚的中断请求到来后,
2014-03-20 16:18:45
970
转载 中断子系统(2)APIC
// io apic、apic// 1.io apic, intel从pentiun III开始引入一种名为I/O高级可编程控制器(io apic)用于代替老式8259A可编程控制器。// 2.apic, cpu内部都包含一个本地apic,每个本地apic都有32位的寄存器,一个内部时钟,一个本地定时设备// 及为本地apic中断保留的两条额外的IRQ线,LINT0和LINT1。所有
2014-03-20 15:44:44
647
转载 中断子系统( 1)初始化
// 控制单元对中断信号的处理:// 当cpu执行一条指令后,cs和eip包含下一条要执行的指令的逻辑地址,在处理那条指令之前,// 控制单元会检查在运行前一条指令时是否发生了一个中断或异常,如果发生了一个中断或异常,// 控制单元执行下列操作:// 1.确定与中断或异常关联的向量i// 2.读入由idtr寄存器指向的IDT表中的第i项// 3.从gdtr寄存器获得G
2014-03-20 15:39:08
670
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人