自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

碎碎絮語

没有什么是理所应当

  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

转载 STL容器是否是线程安全的

1) stl的线程安全.说一些关于stl容器的线程安全相关的话题。一般说来,stl对于多线程的支持仅限于下列两点:(貌似Effective STL中有描述)1.多个读取者是安全的。即多个线程可以同时读取一个容器中的内容。 即此时多个线程调用 容器的不涉及到写的接口都可以 eg find, begin, end 等.2.对不同容器的多个写入者是安全的。即多个线程对不同容器的同时写入合法。但是对于同一容器当有线程写,有线程读时,如何保证正确?需要程序员自己来控制,比如:线程A读容器某一项时.

2021-05-13 17:31:20 1607

原创 Session和Cookie

cookie和session的方案分别属于客户端和服务端,服务端的session的实现对客户端的cookie有依赖关系。服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。...

2021-03-10 11:30:00 122

转载 Android Binder机制原理

原文地址: http://blog.csdn.net/universus/article/details/6211589Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection): 管道(Pipe)、信号(Signal)和跟踪(Trace)、插口(Socket)、报文队列(Message)...

2018-09-30 21:10:57 1040

转载 最短路径问题---Floyd算法详解

前言 Genius only means hard-working all one’s life. Name:Willam Time:2017/3/81、最短路径问题介绍问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)S

2017-11-06 11:23:11 516

转载 python爬虫实例项目大全

WechatSogou [1]- 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。DouBanSpider [2]- 豆瓣读书爬虫。可以爬下豆瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价人数>1000的高分书籍;可依据不同的主题存储到Excel不同的Shee

2017-09-18 16:00:48 1252

原创 C++main函数参数以及含义

关于main(int argc, char *argv[])以下摘录一小段:argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     命令行后面跟的用户输入的参数,比如:     int   main(int   argc,   char*   argv[])     {     int   i;  

2017-09-13 19:01:02 561

转载 TCP拥塞控制

1.引言      计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。      拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。2.慢开始与

2017-09-05 11:14:45 376

原创 输入一个满二叉树的深度和它的三个节点,求三个节点最小子树的,根节点

例如:输入深度为4,三个子节点分别为10,13,15,最小子树的根节点为12.我们可已根据树的遍历方式推测出这是一个中序遍历值为从1到2^k-1。我们可以用二分搜索技术来找最小子树的根节点。[cpp] view plain copy//基于二分搜索  #include  #include  int FindMin(

2017-08-30 01:05:36 898

转载 C++中的hash_map和map的区别

1)为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...    这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最

2017-08-18 13:46:13 4311

转载 TCP的粘包现象

看面经时,看到有面试官问TCP的粘包问题。想起来研一做购物车处理数据更新时遇到粘包问题,就总结一下吧。1 什么是粘包现象  TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象  (1)发送方原因  我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只

2017-08-14 21:34:42 238

原创 浅谈字节对齐和具体实例

一、概念       对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。     二、为什么要字节对齐      需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果

2017-08-05 15:22:55 331

原创 数据库四种隔离级别

(零)没有并发控制存在的问题:更新遗失。 解决办法就是下面的“可读取未确认”。(一)可读取未确认(Read uncommitted)写事务阻止其他写事务,避免了更新遗失。但是没有阻止其他读事务。 存在的问题:脏读。即读取到不正确的数据,因为另一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据可能是不正确的。 解决办法就是下面的“可读取确认”

2017-07-18 19:16:03 190

原创 基于TCP和UDP的socket通信(C++实现)

TCP和UDP属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它事先为要发送的数据开辟好连接通道(三次握手),然后再进行数据发送;而UDP则不为IP提供可靠性,一般用于实时的视频流传输,像rtp、rtsp就是建立在udp的基础上的。     首先谈谈tcp socket    tcp简单的三次握手过程如图,    SYN(Synchronize Sequen

2017-07-17 15:18:36 1878 1

转载 algorithm库介绍之---- stable_sort()方法 与 sort()方法

文章转载自:http://www.cnblogs.com/ffhajbq/archive/2012/07/24/2607476.html关于stable_sort()和sort()的区别:你发现有sort和stable_sort,还有 partition 和stable_partition, 感到奇怪吧。其中的区别是,带有stable的函数可保证相等元素的原本相对次序在排序

2017-07-12 14:54:19 285

转载 数据库锁机制

1 前言数据库大并发操作要考虑死锁和锁的性能问题。看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例。2 锁的种类共享锁(Shared lock)。例1:--------

2017-07-10 16:03:54 184

原创 基本线程函数

1、pthread_create函数#includeint phread_create(phread_t *tid,const phread_attr_t *attr,void *(*fun)(void *),void *arg)返回:若成功则返回0,若出错则返回正的Exxx值2、phread_join函数#includeint phread_join(phread_t *tid,

2017-07-10 15:14:19 283

转载 SGI STL 内存管理

1. 好多废话    在分析完nginx的内存池之后,也想了解一下C++的内存管理,于是就很自然得想到STL。STL是一个重量级的作品,据说当时的出现,完全可以说得上是一个划时代意义的作品。泛型、数据结构和算法的分离、底耦合、高复用… 啊,废话不多说了,再说下去让人感觉像王婆卖瓜了。    啊,还忘了得加上两位STL大师的名字来聊表我的敬意了。泛型大牛A

2017-06-30 16:34:20 251

原创 寻找数组中最小的k个数(快排和堆排)

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路1:利用快排的思想,寻找第k个位置上正确的数,k位置前面的数即是比k位置小的数组,k后面的数即是比k位置元素大的数组。思路2:利用堆排序,特别适用于海量数据中寻找最大或者最小的k个数字。即构建一个大堆容器,初始化大小为k,变量初始数,如初

2017-06-29 13:14:07 1210

原创 函数声明后面的const用法

void function() const{}通常我们会看到一些函数声明后面会跟着一个const,这个const是做什么的呢?看一下下面的例子,就知道了。直接在编译前,就会提示下面的两个错误// test1107.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;cl

2017-05-19 10:43:22 442

转载 redis中的五种数据类型和基本操作

Redis支持5种数据类型,分别是String,List,Hash,Set,Zset和Hash。      redis是一个高性能的key-value数据库,在介绍它的5种数据类型之前,先介绍key的相关命令。   key—键  通常用如下的键命令来管理redis的键:      1 DEL key   该命令用于在key存在时删除key。   2 DU

2017-04-23 00:18:11 365

转载 哈希表和红黑树的对比

什么是HashHash,也可以称为“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出(也就是多对一的关系)。哈希表的构造在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利

2017-04-13 02:02:58 1124

原创 C++ 类的静态成员详细讲解

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和

2017-04-07 14:40:20 295

原创 求数组中只出现一次的数字

假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗?分析:方法一、若使用辅助的存储方式,该选择何种存储方式呢?可使用hash的存储方

2017-04-05 15:10:54 505

转载 动态规划算法

动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个

2017-03-31 10:26:08 312

转载 哈希表解决冲突的两种方式

虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法     用开放定址法解决冲突的做法是:当冲突发生时,使用某种

2017-03-22 14:26:24 26511 2

原创 2017网易游戏笔试

刚刚做完网易笔试题,就写出了两题,趁脑子还清醒,写下来记住。第一题代码:#includeusing namespace std;int main(){ int M, N, x, y, i, j; cin >> M >> N; int *a = new int[M]; for (i = 0; i < M; i++) a[i] = 0;//初始化硬币起始状态 while

2017-03-20 21:32:37 1400

转载 KMP算法详解

字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上

2017-03-16 00:14:18 221

转载 C++Primer第五版——习题答案+详解(完整版)

C++Primer第五版——习题答案详解      新手入门必看的书。知识是一个系统化并且相互关联的体系,零散的东西每天收获如果不形成自己的体系的话,那将是毫无意义的,所以我觉得有必要将这本书先啃一遍,消化其中的关键有用的东西,了解相关但是目前不那么重要的东西。博客不是我的目的,将这本书中的知识啃透才是我的目标!共勉!      看的不快不慢,有很多东西暂时确实用不上,

2017-03-14 22:01:33 3172

原创 Sizeof详解

近期遇到很多关于sizeof的问题,现在统一归纳一下。一、sizeof的概念    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。    它并不是函数。    sizeof操作符以字节形式给出了其操作数的存储大小。    操作数可以是一个表达式或括在括号内的类型名。    操作数的存储大小由操作数的类型决定。    

2017-03-14 12:04:23 1130

原创 常用的排序算法总结

查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这些排序可

2017-03-13 21:20:04 406

原创 HashMap与冲突解决算法

hash_map是经常被使用的一种数据结构,而其实现方式也是多种多样。如果要求我们使用尽可能简单的方式实现hash_map,具体该如何做呢?我们知道hash_map最重要两个概念是hash函数和冲突解决算法。hash_map键-值之间的映射关系,hash函数将键映射为内存地址,冲突解决算法用于解决不同的键映射为相同地址时候的情况。数据结构和算法导论中介绍了大量的hash函数和冲突解决算法,

2017-03-13 16:01:02 693

原创 死锁产生的原因及四个必要条件

产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进

2017-03-13 01:32:27 1174

原创 【设计模式】抽象工厂模式

抽象工厂模式: 作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。UML结构图:抽象基类:1)ProductA,ProductB:分别代表不同类型的产品,而它们的派生类则是这种产品的一个实现.2)AbstractFactory:生产这一系列产品的一个抽象工厂,它的派生类是不同的实现.接口函数:1)AbstractFactory::

2017-03-13 00:57:08 233

原创 【设计模式】工厂模式

工厂模式作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。UML结构图:抽象基类:1) Product:创建出来的对象的抽象基类.2) Factory创建对象的工厂方法的抽象基类.接口函数:l)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的Produc

2017-03-13 00:43:54 295

原创 设计模式的六大原则

『Single Responsibility Principle』单一职责原则:          单一职责原则的核心精神是:一个类,或者一个接口,最好只做一件事情,当发生变化时,他只能受到单一的影响;因为职责过多,可能引起变化的原因将会很多,这样导致职责和功能上的依赖,将严重影响其内聚性和耦合度,混乱由此而生。          单一职责的原则在现实生活中早就实践于现代公司体制与

2017-03-12 18:28:09 198

原创 海量数据常见的面试题(频次最高+随机抽样)

【在海量数据中统计出现次数最多的n个】 分两种情况,  1 如果数据能够在内存中放下,比如如果海量数据是ip地址,最多有4G个ip地址,每个ip地址占4个字节 需要内存16G,如果内存在几十G,则完全可以全部装入内存,   直接读取大文件,然后创建一个hash表,统计次数,最后再用堆统计最大的n个2  如果不能在内存放下,比如海量数据是字符串,不同的字符串个数无限,内存中可

2017-03-12 16:35:27 1978

转载 STL内存分配方式

有感于STL的内存管理  警告:本文是技术类文章,只适合码工们围观,非码工请跳过此坑1. 背景前些天在一个技术分享会上,某大牛说,STL使用了内存池,释放内存的时候,并不释放给OS,而是自己由留着用。听到这些观点后,我就有些着急了,因为我以前一直是直接使用STL的一些工具类的,比如std::string、std::map、std::vector、std::list等等,从来都没

2017-03-11 16:09:57 481

原创 m进制转换为n进制-任意进制转换算法

这种题也是一道经典的面试题,主要考察进制转换细想,Coding质量等。    当我们把十进制转成二进制的时候,我们通过辗转相除,取余,逆置余数序列的过程得到新的进制的数。因此我们可以借助这种思想把M进制转成N进制的数。    如下是C的详细的实现方法void m2n(int m, char* mNum, int n, char* nNum) { int i = 0; ch

2017-03-11 16:07:03 1156

转载 TCP协议的三次握手与四次挥手图解

错误配图如下:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:【注意】中断连接端可以是Client端,也可以是Server端。假设Client端发起中断连接请求,

2017-03-11 15:26:14 175

原创 TCP与UDP的区别

TCP与UDP基本区别  1.基于连接与无连接  2.TCP要求系统资源较多,UDP较少;   3.UDP程序结构较简单   4.流模式(TCP)与数据报模式(UDP);   5.TCP保证数据正确性,UDP可能丢包   6.TCP保证数据顺序,UDP不保证   UDP应用场景:  1.面向数据报方式  2.网络数据大多为短消息   3.拥有大量Clie

2017-03-11 14:42:44 285

均值漂移算法图像分割论文

从知网等渠道搜索到的,内容真实有效,值得下载参考。

2017-11-23

操作系统原理

操作系统原理课件,你值得拥有

2012-12-13

空空如也

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

TA关注的人

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