- 博客(55)
- 资源 (16)
- 收藏
- 关注
转载 C/C++学习笔记:智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p
2016-09-22 09:35:29
745
转载 Linux的进程/线程间通信
Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式
2016-09-22 08:53:25
645
转载 C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法。主要是为了方便的管理内存缓冲区(其实就是分配一段连续的内存,减少内存的碎片化)。
2016-09-11 22:18:14
1949
转载 C/C++ 学习笔记:istringstream、ostringstream、stringstream 类介绍 和 stringstream类 clear函数的真正用途
istringstream、ostringstream、stringstream 类介绍;c++ stringstream 类 clear 函数的真正用途。
2016-09-10 13:34:21
3640
转载 孤儿进程与僵尸进程
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
2016-09-02 14:46:49
388
转载 浅谈HTTP中Get与Post的区别
Http 定义了与服务器交互的不同方法,最基本的方法有 4 种,分别是 GET,POST,PUT,DELETE。URL 全称是资源描述符,我们可以这样认为:一个 URL 地址,它用于描述一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE 就对应着对这个资源的查,改,增,删 4 个操作。到这里,大家应该有个大概的了解了,GET 一般用于获取/查询资源信息,而 POST
2016-09-02 09:54:01
336
转载 C++ 学习笔记:STL 容器一些底层机制
vector 容器list 容器deque 容器stackqueueheappriority_queueset 和 multiset 容器map 和 multimap 容器hash_set 和 hash_multiset 容器hash_map 和 hash_multimap 容器
2016-08-31 18:36:22
5152
转载 C++ 学习笔记:C++ 中 Volatile 变量学习
1. 为什么用 volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,使用格式和 const 一样,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile spec
2016-08-30 16:43:41
667
转载 C++ 学习笔记:C++11 新特性学习
C++11是曾经被叫做C++0x,是对目前 C++ 语言的扩展和修正,C++11 不仅包含核心语言的新机能,而且扩展了 C++ 的标准程序库(STL),并入了大部分的 C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)。C++11 包括大量的新特性:包括lambda表达式,类型推导关键字auto、 decltype,和模板的大量改
2016-08-29 17:27:24
825
转载 Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情
2016-08-29 17:12:12
612
原创 操作系统学习笔记随笔
进程的三个基本状态:就绪、执行、阻塞。 同步机制遵循的规则:1) 空闲让进;如果没人用,我现在要用,应该让我用2) 忙着等待;如果有人在用,我应该等待3) 有限等待;我不能一直等待4) 让权等待。我等待的时候,应该释放 CPU进程和线程1. 程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本
2016-08-29 15:39:38
709
原创 计算机网络学习笔记
TCP/UDP, OSI七层体系结构, TCP/IP体系结构。(应用层、传输层、网络层、数据链路层、物理层),TCP/UDP 区别,拥塞控制,万维网
2016-08-29 15:13:16
1677
原创 数组中的逆序对(归并排序思想解题)
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述:题目保证输入的数组中没有的相同的数字数据范围: 对于%50的数据,size 对于%75的数据,size 对于%100的数据,size输入例子:1,
2016-08-29 11:50:12
843
原创 机器人的运动范围
题目描述地上有一个 rows 行和 cols 列的方格。一个机器人从坐标(0, 0)的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当 threshold 为 18 时,机器人能够进入方格(35, 37),因为 3+5+3+7 = 18。但是,它不能进入方格(35, 38),因为 3+5+3+8 =
2016-08-28 22:35:27
572
原创 矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 3×4 矩阵 a b c e s f c s a d e e 中包含
2016-08-28 21:23:53
644
原创 C/C++ 学习笔记:字符串、数组相关
C/C++ 中所有字符串字面值都由编译器自动在末尾添加一个空字符,即默认以 \0 结尾;数组名的本质;在函数内申请空间;实现 strcpy;实现 string 类......
2016-08-28 10:06:03
1005
原创 C/C++ 学习笔记:全局变量随笔
全局变量的优缺点:1) 全局变量过多会占用更多的内存(因为其生命期长)2) 提高了耦合性,牵一发而动全身,时间久了,代码长了,就不知道全局变量被哪些函数改过。3) 提高了模块间的耦合性,对后期维护、拓展和复用都带来极大影响。4) 使用全局变量程序运行时速度会更快一些(因为内存不需要再分配)5) 便于传递参数。对于全局
2016-08-28 09:33:55
875
原创 链表学习笔记
链表虚席笔记:从尾到头遍历链表、链表中倒数第 k 个结点、合并两个排序的链表、两个链表的第一个公共结点、链表中环的入口结点、判断链表是否是回文结构、删除单向链表中指定的结点(o(1)时间)、删除链表中相邻的重复结点(保留一个)、删除链表中重复结点(保留一个)、删除链表中相邻重复结点、复杂链表的复制
2016-08-25 22:18:32
1986
1
原创 二叉树学习笔记
二叉树学习笔记:序列化二叉树、反序列化二叉树、递归遍历二叉树、非递归遍历二叉树、层序遍历二叉树(分行和不分行)、之字形遍历二叉树、重建二叉树(根据先序和中序重建二叉树)、对称二叉树判断、二叉树的镜像、判断二叉树的子结构、判断是否是平衡二叉树、二叉树的深度、二叉树中和为某一值的路径、判断一个序列是不是二叉搜索树的后序遍历序列、二叉搜索树转为双向链表、查找二叉搜索树的第 k 小的结点
2016-08-25 21:41:47
985
转载 操作系统内存管理——分区、页式、段式管理
计算存储的层次结构:当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率。 1. 内存管理
2016-08-24 10:27:50
793
原创 汉诺塔-递归 VS 非递归
问题描述: 有一个梵塔,塔内有三个座A、B、C,A 座上有诺干个盘子,盘子大小不等,大的在下,小的在上(如图)。把这些个盘子从 A 座移到 C 座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中,3 个座上的盘子始终保持大盘在下,小盘在上。汉诺塔-递归#include #include using namespace std;void move(c
2016-08-20 16:30:46
747
原创 N 皇后问题-回溯法
N 皇后问题:在 N × N 的棋盘上放置彼此不受攻击的 N 个皇后,任意两个皇后不同行、不同列、不同斜线。思路:1. 因为皇后不能同行,所以,在每一行放置一个皇后就行2. 当在一行放置皇后的时候: 1) 顺序检查这一行每一个位置是否和上面所有的皇后,只要有一个同列或者在斜线上就不能放置;若找到一个满足的,放置在这个位置,开始下一行的皇后放置。 2) 当此行所
2016-08-20 15:34:32
1663
原创 布线问题-分支限界法
布线问题就是在 M×N 的方格阵列中,指定一个起点 a、一个终点 b,要求找到起点到终点的最短布线方案(最短路径)。搜索从起点 a 开始,到目标点 b 结束。约束条件:有边相连且未成布线。搜过过程:从起点 a 开始,将其作为一个扩展结点,沿 a 的上、下、左、右 4 个方向的相邻结点扩展。判断约束条件是否成立,如果成立,则放入活结点表中,并将这些方格标记为 1。接着从活结点表中取出队首结点
2016-08-20 15:03:58
8693
原创 单源最短路径(Dijkstra)算法
Dijkstra 算法是一种贪心算法。假定源点为 u,顶点集合 V 被划分为两部分:S 和 V-S,其中 S中的顶点到源点的最短路径的长度已经确定,V-S中的顶点到源点的最短路径待定。思想:1. 每次从 V-S 中选择一个距离 源点最近的顶点,将其加入到 S 中,并从 V-S 中删除这个顶点;2. 因为 S 中加入了新的顶点,更新 V-S 中其他所有点顶到源点的距离;3. 当
2016-08-20 10:27:55
746
原创 层序遍历二叉树VS之字形遍历二叉树
1. 层序遍历二叉树 C++ 代码vector > levelTraversal(TreeNode* pRoot) { // 层序遍历二叉树 vector > result; if(pRoot != NULL) { queue q; q.push(pRoot); int levelWith = 0; int n
2016-08-19 23:37:52
1001
原创 剑指Offer:删除链表中重复的结点
1. 删除链表中相邻的重复的点(若重复,则保留一个)C++代码:void DeleteDuplication(ListNode* &pHead) {// 删除链表中相邻的重复结点(保留一个) if(NULL == pHead) return; ListNode *p1 = pHead, *p2 = p1->next; while(p2 != NULL) {
2016-08-19 22:00:47
478
原创 剑指Offer:链表中环的入口节点
如果链表中有环,可以通过快慢指针,最后快慢指针肯定会相会于环中的某个节点;从这个相会的节点开始,当再次遇到该节点,即可统计环中有节点数 n;设置两个指针p,p1,p从头先走 n 步,p1在头部,然后两个指针同时 走,当两指针相遇时,相遇的节点即是环的入口。C++ 代码struct ListNode { int val; struct ListNode *ne
2016-08-19 20:59:26
536
原创 表示数值的字符串
判断一个字符串是否表示数值,可以为整数、小数,可以带科学计数法形式。一个数值的表示:[符号]大于等于1个整数[.[大于等于1个整数]][e|E[符号]大于等于1个整数]C++代码:void scanDigit(char* &String) {// 扫描字符串,直到不是数字为止 while('\0' != *String && '0' <= *String &
2016-08-19 18:36:17
574
原创 剑指Offer:字符流中第一个不重复的字符
字符流中第一个不重复的字符题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。C++代码:class CharStatis
2016-08-19 17:49:21
425
原创 最小生成树之普里姆(Prim)算法
Prim 算法是一种贪心算法设G=(V, E) 是无向连通带权图,V={0, 1, 2, ..., n-1};设最小生成树 T=(U, TE),算法结束时 U=V,TEC++代码:#include #define INFINITY 100000using namespace std;/* * n : 图的顶点个数 * u0:开始顶点 * C :带权邻接矩阵*/int
2016-08-16 21:33:01
565
原创 C/C++ 学习笔记:C++ 中 string 类使用总结
C++中的string类使用总结:构造函数、字符操作、特性描述、输入输出操作,string的赋值、连接、子串、比较、交换、查找、替换、插入、删除、迭代器、流处理等
2016-08-16 16:37:26
742
原创 生成所有 n 位格雷码
n 位元的格雷码,那么格雷码的个数为 2^n#include #include #include using namespace std;/* 利用递归的如下规则来构造: * 1 位格雷码有两个码字 * n 位格雷码中的前 2^(n-1) 个码字等于 (n-1) 位格雷码的码字,按顺序书写,加前缀 0 * n 位格雷码中的后 2^(n-1) 个码字等于 (n-1) 位格雷码的
2016-08-16 15:53:53
1466
西北农林科技大学《操作系统》本科课程考试试题10套+袖珍考试参考资料
2012-12-18
Java程序设计实习西农信息工程学院源代码
2012-10-14
VC++ MFC 图书馆管理系统
2012-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人