- 博客(14)
- 收藏
- 关注
转载 进程/线程同步及通信
一、进程/线程间同步机制。临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资
2017-04-04 17:09:18
199
原创 SQL联合索引
1):查询条件中出现联合索引第一列,或者全部,则能利用联合索引.2):条件列中只要条件相连在一起,以本文例子来说就是:last_name=’1′ and first_name=’1′与first_name=’1′ and last_name=’1′,无论前后,都会利用上联合索引.3):查询条件中没有出现联合索引的第一列,而出现联合索引的第二列,或者第
2017-04-04 16:06:47
2497
原创 有序链表合并&有序数组合并
1.两个有序链表时间复杂度最坏情况下为O(m+n),最好的情况下为O(min{m,n})。2.两个有序数组从后往前合并,从最后开始比较,时间复杂度O(m+n),假设第一个数组足够大,可以容纳合并后的数组,则复杂度为O(n)
2017-04-04 15:59:57
545
转载 三次握手和四次握手
三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x
2017-04-03 21:35:35
270
转载 设计模式
几种常用的设计模式介绍1. 设计模式的起源最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个
2017-03-13 16:05:53
126
转载 fopen /open,read/write和fread/fwrite区别
fopen /open区别UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别。1. fopen 系列是标准的C库函数;open系列是 POSIX 定义的,是UNIX系统里的system call。也就是说,fopen系列更具有可移植性;而open系列只能
2017-03-01 16:44:56
308
转载 c++ STL容器
1、顺序性容器(1)vector vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分配的内存空间是以2的倍数动态增长的,即内存空间增长是按照20,21,22,23.....增长的,在push_back的过程中,若发现
2017-03-01 16:29:00
175
原创 LeetCode-371-Sum of Two Integers
题意:不使用+号和-号,完成两个数的加法。分析:通过异或操作和与操作完成,两位单独的位相加其结果可以用异或得到, 进位可以用与得到。int getSum(int a, int b) { while(b) { int carry = a & b; a = a ^ b;
2016-11-17 15:33:10
190
原创 LeetCode-258.-Add Digits
题目:求各位数之和,直到只有1位为止,例如38,3+8=11,1+1=2。使用O(1)的算法Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.思路:digital root 12345 = 1 * 9999 + 2 * 9
2016-11-16 21:39:45
145
原创 LeetCode-292-Nim Game
题目:给你一堆石头n,双方都可以从中任意取1~3个,谁取到最后一个石头则获胜,从你开始先取,请问你能够获胜吗?分析:这是一道比较简单的博弈题,首先分析最后赢与不赢的情况,可以发现,若最后剩了4个石头,那么你一定无法获胜,那么对方只需要按照每次4-i的数目取石头,即可保证他能获胜,假如总共8个石头,你第一次取i个,对方取4-i个,则还会剩余4个,这样你就无法获胜。class Solution
2016-11-15 21:58:46
198
原创 LeetCode-3-Longest Substring Without Repeating Characters
求最长不重复字符子串长度,多次循环遍历的方法可以做,但是复杂度高就不考虑了,用hash的方法,一次遍历,在循环中用数组存储对应字符目前出现在的最远的位置,然后用当前位置减去不重复字符的起始位置,每次与最大值比较取较大的。#include#include#includeusing namespace std;int main(){char a[20];int b[28]=
2016-10-28 20:13:47
215
原创 LeetCode-9-Palindrome Number
要求不要用额外的空间判断一个数是否为回文数,一开始看见题有点蒙,不要额外空间怎么做。。。其实不开数组就可以,用变量进行反向的加乘运算,判断是不是与初始值相等,第一次wa了,没考虑负数,单独判断一下,负数都不是回文数class Solution {public: bool isPalindrome(int x) { if(x>=0){ int sum=0,tem
2016-10-28 20:09:59
188
原创 LeetCode-Add Two Numbers
简单的链表题,每个节点相加,若>10则进位,容易遗漏的是最后一个节点,如果需要进位,则要new一个节点public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }public class Solution { public ListNode addTwo
2016-10-27 10:16:54
133
原创 LeetCode-Two Sum
今天开始尝试了一下LeetCode,感觉整体格式要求比较规范,能培养规范的代码编写,而且非常注意细节,本来以为第一题非常水不需要编译直接提交也可以,用hash建立映射就可以,没想到看完答案才觉得要精益求精,力求占用最小的时间和空间,看来要学习的东西还很多。贴下题目和代码Given an array of integers, return indices of the two numbe
2016-10-26 20:27:18
287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人