自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

原创 tcp/ip学习笔记

首先参考的是《通信网》这本书OSI 7层参考模型 自底向上分别为 物理层:通信信道(数字传输系统以及同轴电缆等传输介质)上传送比特流。 数据链路层:在传输链路上提供帧(frame,即信息块)的传送,该链路直接连接网络中的两个节点。 网络层:描述通信网络上以数据分组的形式传输数据的规定。分组传输服务的关键点为如何确定分组从源机器到目标机器的路由。、 以下的四层都是端到端的。 传输层:负责从

2015-07-25 15:53:26 368

原创 new malloc(待更新)

1、new是运算符(C++),malloc是函数(c++/c) 2、new 返回指定类型的指针,并且可以自动计算所需要大小 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。 3、malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。 new 可以使用构造函数初始化对象。深层次的内容待讨论

2015-07-24 19:10:28 281

转载 引用 指针的区别

简单来说 1. 引用不能为空,指针可以为空。 定义一个引用一定要初始化。 使用指针之前必须做判空操作,而引用不必。 2. 引用不能改变指向,指针不能改变指向。 3. 引用的大小是指向的变量的大小,指针是指针本身的大小,32位系统中4个字节。 4. 引用比指针安全,多个指针指向同一个变量,其中一个free了,其他都成了野指针。 更加详细的参见 http://blog.csdn.net

2015-07-24 14:44:23 301

原创 线程通信 线程同步(未完待续)

首先回答死锁的定义,所谓死锁就是一个进程集合中的多个进程因为竞争资源,而造成的互相等待现象。死锁的原因:系统资源不足;多个进程的推进顺序不合理死锁的必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。 非剥夺条件(No pre-emption):已经分配的资源不能从相应

2015-07-24 14:38:05 317

原创 进程通讯

进程间通讯的方式:管道 管道是一种特殊的文件,对于进程来说,它和普通的文件没什么区别。1)管道是半双工的,数据只能一个方向流动;需要双方通信时,需要建立两个管道。 2)管道只能用于父子进程或兄弟进程之间。int pipe(int fileds[2]);创建一对指向管道inode节点为文件描述符,将其保存在fields数组中。fileds[0]用于读取,fileds[1]用于写入。进行父子进程之间

2015-07-24 14:14:24 281

原创 [智力题]

在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就再生一个,直到生下的是男孩为止。这样的国家,男女比例会是多少?答案: 1:1假设有n对夫妇,生出n个孩子,由于生男生女比例相同,所以这n个孩子中有n/2个男孩,n/2个女孩(1:1) n/2对生女孩的夫妇继续生,只是问题的规模变小了还是一半生男孩(n/4)一半生女孩(n/4)(1:1) 所以一直这样下去 就是1:1。

2015-07-23 21:20:01 539

原创 [2016面试]海量数据处理

互联网公司面试很喜欢问海量数据的查找(查找某个数,查找重复的数,查找未出现的数等等)、排序(全部排序、部分排序,找出第k大的数,找出前k大的数等等)等问题,基本的问题都是数据量很大(内存不够存放——降低空间复杂度)和性能要求高(运行时间有要求——减低空间复杂度) 这里列出一些常见的一些问题来处理已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。 8位最多99 999 99

2015-07-23 19:52:52 578

原创 虚函数

OOP的核心是数据抽象、继承和动态绑定。 所有虚函数必须都有定义。通常情况下,我们不使用某个函数,则无需为该函数提供定义。但是我们必须为每一个虚函数提供定义,而不管它是否被用到了,这是因为连编译器也无法确定到底会用哪个虚函数。多态虚函数表不能声明为虚函数的函数普通函数(非成员函数) 因为普通函数只能被重载overload,不能被override(覆盖),它在编译时确定。构造函数 虚函数的

2015-07-23 13:34:57 280

原创 const

const变量 const变量有三种出现的位置 关键的一点是:const关键字的目的是说明变量不能被修改或更新,所以定义时必须初始化 1、全局const变量 在进程内存那篇文章我们说过,全局的只读变量(const)被放在代码段,也可以说是只读数据段const int i =0; const全局变量是一定要初始化的,否则会编译错误。初始化后,编译器在类型检查后直接用0在编译时替换。 con

2015-07-23 12:56:36 1120

转载 堆和栈的区别

一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似

2015-07-22 23:08:17 321

原创 类的大小(sizeof)

空类的大小 这句话本身是有些问题的,因为我们一般不说类的大小,而说对象的大小class A{};A a;sizeof(a);值应该是1,即一个字节。原因:空类也会被实例,每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.所以a的大小为1.sizeof(obj)和类的成员大小总和的关系1、对于有虚函数

2015-07-22 23:05:13 368

原创 线程同步——互斥锁

Linux系统提供了互斥锁来保证某个时刻只有一个线程使用资源。 互斥锁提供了在多线程情况下相互排斥的办法。互斥锁的锁定和解锁是通过pthread_mutex_lock函数和pthread_mutex_unlock函数来实现的。 互斥锁一般用来保护数据结构,通过线程对互斥锁的锁定和解锁,能够实现某一时刻只有一个线程访问该数据结构。创建互斥锁创建互斥锁 pthread_mutex_init函数来实现

2015-07-21 14:52:45 319

原创 define和内联函数

宏定义 宏替换是按定义替换成相应的常量表达式或字符闯,不会增加任何其他字符(如圆括号()等) #define NUM 5+7 p = NUM*NUM将会被替换成p = 5+7*5+7 所以宏定义仅仅是文本替换。宏定义与内联函数首先,为什么需要使用宏定义? 函数调用需要使用函数栈,需要一定的时间和空间的开销,影响其效率。 宏定义在预编译的地方将代码展开,不需要额外的时间和空间开销。宏

2015-07-21 11:25:47 766

原创 进程内存

进程内存结构 所有的进程都运行在自己的虚拟地址空间中,而每个进程都有自己的内存地址。 每个进程都运行在自己私有的内存空间中(虚拟地址空间)。在32位系统中,4GB的进程地址空间被分成用户空间(0~3GB)和内核空间(3GB~4GB)两部分。 代码段保存可执行文件的操作指令和程序定义的常量全局只读变量(const),字符串常量 多进程能够共享相同的代码段,即当程序被多次执行时,运行的相

2015-07-20 23:08:14 900

原创 [LeetCode]Jump Games(贪心!!!)

Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. De

2015-07-19 23:02:25 314

原创 [LeetCode]maxSubArray(最大子序列和!!!!)

经典dp问题 有两种问法, 1、如果最大子序列和是负数,则输出最大的负数 2、如果最大子序列和是负数,则输出0第一个和第二个问题其实可以统一,如果输出的最大数为负数,将其变成0即可。动态方程: 最大子序列和是连续的子序列 ThisSum[i]表示第i处,以A[i]结尾的子序列的最大和。 则状态方程为ThisSum[i]=max(ThisSum[i-1]+nums[i],nums[i])也

2015-07-19 22:17:52 4107

原创 动态规划DP

动态规划最重要的是建立状态方程 有一些非常经典的dp题

2015-07-19 21:26:19 329

原创 [LeetCode]Anagrams

题目的意思是将所有的满足anagrams的输出 判断满足anagrams:将两个string sort,如果相等则是使用一个mapclass Solution {public: vector<string> anagrams(vector<string>& strs) { map<string,int> map_str; set<string> set_s

2015-07-19 20:35:30 341

原创 [leetCode] Pow(x,n)(分治)

“` double myPow2(double x, int n) { double tmp; if(n==1) return x; tmp=myPow2(x,n/2); if(n%2==1) //奇数 return x*tmp*tmp; else return tmp*tmp;} doubl

2015-07-19 16:49:52 300

原创 [LeetCode]Rotate the image(在位操作!!)

You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place?在位操作说明不能开辟新的空间void rotate(int** matrix, int r, int c

2015-07-19 16:02:07 332

原创 [LeetCode]Permutations II(!!!!!DFS递归&&回溯)

Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example, [1,1,2] have the following unique permutations: [1,1,2], [1,2,1], and [2,1

2015-07-19 15:26:25 371

原创 [LeetCode]Permutations(回溯&&DFS&&递归!!!!)

题目意思很直白,求出不重复的所有排列,这里的是数字,对于字符串同样适用。 思路一:递归,每次都按照nums的顺序访问并且加入当前的vector,再递归的下一层。如果当前层的vector的大小==nums的大小,则是一个合理的排列。否则,按顺序遍历nums的每一个元素,如果该元素没有被加入vector则加入继续递归。所以这里需要有个标记是否访问过的visted数组,加入vector时设为true表示

2015-07-18 20:03:09 1205

原创 [LeetCode]Next Permutation(!!!)

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers. If such arrangement is not possible, it must rearrange it as the lowest p

2015-07-18 17:26:34 276

原创 [LeetCode]Jump Game II(贪心&&DP!!!!!)

Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Yo

2015-07-18 13:27:47 866

原创 [LeetCode]Valid Sodoku

判断一个数独是否是有效的 1、每一行1-9只出现一次 2、每一列1-9只出现一次 3、每一个单元格1-9只出现一次class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { int i,j; char gc; for(i = 0; i <=8; ++i

2015-07-18 11:29:37 397

原创 [LeetCode]Trapping Rain Water(!!!!)

DP的思想 关键是怎么来确定A[i]所能容纳的水, 会发现A[i]所能容纳的水由i左右两边最大值中较小的那个决定,所以,一个思路是对于每一个i找到其左边的最大值,和右边的最大值,都存下来,i能存的水是min(left,right)-A[i]class Solution {public: int trap(vector<int>& A) { if(A.size()<2)

2015-07-17 11:02:13 273

原创 [LeetCode]First Missing Positive(!!!)

Given an unsorted integer array, find the first missing positive integer. For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2. Your algorithm should run in O(n) time and uses cons

2015-07-16 21:13:40 259

原创 [LeetCode]Combination Sum 2(!!!!!)

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. Each number in C may only be used once in the co

2015-07-16 20:35:10 344

原创 [LeetCode]Combination Sum(!!!!!)

只用判断行、列、每个3*3的格子内是否满足1-9只出现一次的约束 BF方法class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { int i,j; char gc; for(i = 0; i <=8; ++i) {

2015-07-16 17:18:09 296

原创 [LeetCode]Count and Say

只用判断行、列、每个3*3的格子内是否满足1-9只出现一次的约束 BF方法class Solution {public: bool isValidSudoku(vectorvectorchar>>& board) { int i,j; char gc; for(i = 0; i 8; ++i) {

2015-07-15 15:38:07 314

原创 [LeetCode] Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You may assume no duplicates in the

2015-07-15 12:57:55 265

原创 [LeetCode]Longest Valid Parentheses(!!!)

Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring. For “(()”, the longest valid parentheses substring is “()”,

2015-07-14 22:54:55 333

原创 [LeetCode]Longest Substring Without Repeating Characters

使用DP的思想 L[i]记录的是最长无重复字串,L[i]=s[m,..,i],终点到i,我们为s[]中每一个字符构建一个hashmap,关键字为char,值为在原字符串中的下标index 。下面开始找s[i+1] 如果s[i+1]在hashmap中没有出现,将s[i+1]加入hasp表,并且L[i+1]=s[m,…,i+1],map[s[i+1]]=i+1; 如果s[i+1]出现了,并且s[

2015-07-14 16:41:54 329

原创 [LeetCode]Substring with Concatenation of All Worlds(渣算法)_TBC

You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in words exactly once a

2015-07-14 16:01:23 357

转载 孤儿进程与僵尸进程[总结]

1、前言  之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念  我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的

2015-07-13 19:58:38 302

原创 [LeetCode]Divide Two Integers

整数相除,不能使用乘法、除法和求余class Solution {public: int divide(int dividend, int divisor) { /******* handling the case of overflow *******/ if(divisor == 1) return dividend; if(dividend ==

2015-07-13 15:49:53 298

原创 [LeetCode]Implement strStr() 字符串匹配

Horspool算法 假设模式为p[0,…,m-1] 文本为T[0,…,n-1] 问题的关键是每次遇到不匹配的字符,移动的元素个数 假设对齐时,文本对应于模式的最后一个的字符为c 那么每次移动的距离为 模式的长度m(如果模式中没有c) t(c) = 前m-1个字符中c到最右边字符的距离 这样我们可以先初始化一个table[256]都初始

2015-07-13 14:24:31 406

原创 [LeetCode]反转链表

迭代的方法ListNode* ReverseList2(ListNode* pHead){ ListNode* pNode=pHead;//当前结点 ListNode* pPrev=NULL;//当前结点的前一个结点 while(pNode!=NULL) { ListNode* pNext=pNode->m_pNext; pNode-

2015-07-13 10:55:16 678

原创 1025.反转链表

在这道题中这其实是一道伪反转链表的题目,因为每一个节点中其实没有存储指针的值,所以可以使用vector+reverse来配合 自己的解法/*给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。输入格式:每个输入包含1个测试用例

2015-07-12 16:46:04 439

原创 [LeetCode] Merge k Sorted Lists

先merge两个list,注意在merge完之后可以delete掉原来的指针,释放内存之后在k个listmerge中,用front和rear从头到尾merge,注意merge的list放在front的位置,循环被破坏的条件是front>rear(奇数)front==rear(偶数)这两种情况下,rear都是不用变化的,front指向0即可,当rear==0时返回 注意即时释放内存/** * De

2015-07-12 14:42:44 278

C 大型程序欣赏

c语言的大型程序 建议已经学过C 语言的人看 刚学的不适合

2010-10-11

c语言上机操作指导(tc和bc)

详细讲解TC和BC在windows下的上机操作

2010-03-26

空空如也

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

TA关注的人

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