自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

曾柯的知识笔记

学习如何做一个优秀的程序员

  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入了解几种IO模型(阻塞非阻塞,同步异步)

一般来说,Linux下系统IO主要就是通过以下几个函数open(),close(),read(),write(),send(),recv(),lseek(),今天就以recv()为例来介绍下IO模型中的同步异步,阻塞非阻塞的区别。先说阻塞与非阻塞的区别,recv()函数默认是阻塞的,什么是阻塞呢?就是当你调用recv()函数时,整个进程或者线程就等待在这里了,直到你recv的fd的所有信息都被se...

2018-02-28 15:51:29 25607 9

原创 浅析c++的多态性质(从继承到多态)

面向对象三大特性:封装,继承,多态。可见继承和多态性的重要性,继承就不多说了,但在c++中是如何实现多态的呢?先来简单介绍下多态:       多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念,一种不严谨的说法是:继承是子类使用父类的方法,而多态是父类使用子类的方法。多态(polymorphism),字面意思多种形状,那么多态的作用是什么呢...

2018-02-27 22:17:09 460

转载 一致性hash算法

一致性哈希算法,作为分布式计算的数据分配参考,比传统的取模,划段都好很多。在电信计费中,可以作为多台消息接口机和在线计费主机的分配算法,根据session_id来分配,这样当计费主机动态伸缩的时候,因为session_id缓存缺失而需要放通的会话,会明显减少。传统的取模方式例如10条数据,3个节点,如果按照取模的方式,那就是node a: 0,3,6,9node b: 1,4,7node c: 2...

2018-02-27 17:03:52 154

原创 哈希表详解

哈希表想来学过数据结构的都不陌生,哈希表如果在哈希函数设计的好的情况下可以有O(1)的查询时间复杂度,算是典型的空间换时间的数据结构代表,先来简单回顾下哈希表的一些基本概念:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散...

2018-02-27 15:53:22 1407

转载 01背包问题详解

0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?分析一波,面对每个物品,我们只有选择拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入同一物品多次。解决办法:声明一个 大小为  m[n][c] 的二维数组,m[ i ][ j ] 表示 在面对第 i 件物品,且背包容量...

2018-02-26 21:40:47 225

转载 Top K算法详解

应用场景:        搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。        假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。必备知识:什么是哈希表?      ...

2018-02-26 20:37:45 355

转载 当你输入一个网址的时候,实际会发生什么?

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首...

2018-02-26 15:58:32 321

原创 深入理解B树和B+树(二)B+树的优点

有了B树,为什么还需要B+树呢?那就要先说下B树的缺点了,人类对于性能的追求是无止境的,B树相比二叉树虽好,但还是存在以下问题: 1.每个节点中既要存索引信息,又要存其对应的数据,如果数据很大,那么当树的体量很大时,每次读到内存中的树的信息就会不太够。 2.B树遍历整个树的过程和二叉树本质上是一样的,B树相对二叉树虽然提高了磁盘IO性能,但并没有解决遍历元素效率低下...

2018-02-26 15:44:10 10638 2

原创 深入理解B树和B+树(一)B树的优点和插入删除过程

B树也就是B-树,一个m阶的B树满足以下条件:      1.每个节点最多有m个子树。      2.当有子树时,根节点至少拥有两个子树。      3.除了根节点外,每个分支节点至少拥有m/2棵子树。      4.所有叶节点都在同一层上      5.每个有k个子树的节点会存储k-1个关键码,关键码按照递增次序进行排列。      6.关键字的数量满足ceil(m/2) -1 <= n ...

2018-02-26 15:19:33 2084

原创 红黑树的实现

      话不多说,先上代码,红黑树的c++实现见我的github:https://github.com/zk3326312/RB_Tree,下面开始介绍红黑树和它的插入删除节点的过程。      红黑树相信学习过数据结构的朋友都不太陌生,c++中的stl里的map底层实现就是红黑树,红黑树说到底就是一颗特殊的二叉树,那么它相比普通的二叉树有什么特别之处呢?      红黑树是一种近似平衡的二叉...

2018-02-25 01:50:39 223

原创 高性能图像处理服务器的实现(五)服务器的逻辑编写

      在我之前的博客高性能图像处理服务器的实现(三)reactors in threads服务器模式中代码流程详解中说到了reactors模式的好处,就是可以轻松的将业务逻辑抽象出来,完全不会影响代码的整体框架,整个图像处理服务器封装在server中的ImageServer类中(server中的echo类是个简单的echo服务器,用来测试服务器的功能是否正常以及测试高并发状态下是否能正常连接...

2018-02-24 23:55:08 730

原创 高性能图像处理服务器的实现(四)数据库类的编写

      服务器的数据库部分逻辑上并不复杂,所做的就是连接数据库,并对数据库做增删改查,数据库类MysqlDB在代码的database文件夹中,实现的基本功能为如下四个接口:sqlInsert(),sqlDelete(),sqlModify(),sqlQuery()对应的增删改查,还有一点基本功能比如根据用户名获取用户的存储路径,密码等函数,都很简单,下面来说下服务器端的数据库表单设计。    ...

2018-02-24 23:31:58 352

原创 LINUX下配置codeblocks的mysql开发环境(c/c++)

默认你已经安装好了Mysql,使用Mysql相关c语言函数主要依赖下面这个头文件:#include<mysql/mysql.h>(默认安装Mysql会在/usr/include/mysql下面有一个头文件,系统默认/usr/include会是环境变量,如果你include不到这个头文件,那么请你检查你的Mysql是否正确安装或者环境变量是否有问题)然后将codeblocks与mysql...

2018-02-23 15:24:05 595 1

原创 高性能图像处理服务器的实现(三)reactors in threads服务器模式中代码流程详解

    在我的GitHub中上传了关于高性能图像处理服务器的网络库方面的代码,网址为:https://github.com/zk3326312/ZK_ImageServer/tree/master/net,整个框架为reactors in threads的框架,总体来说就是由一个主reactors作为接受器,当有新的client连接上时将连接挂载在sub reactors上,总体框架为:下面就以一...

2018-02-09 16:44:46 645

原创 高性能图像处理服务器的实现(二)服务器的并发解决方案的选择

传统Unix并发的解决方案(为每一个新的连接fork()一个子进程)比较适合以下的情况:并发量很小并且计算的工作量远大于一个fork()的开销,但这种方案情况比较适合长连接,不太适合短连接,并发量大时这种模式也无法满足,因此不太适合本项目。对传统Unix并发方案差的一种小改进是thread per connection(即为每一个连接分配一个线程),这种方案比起上一种在一些场景下会好一些,比如th...

2018-02-08 18:54:39 1536

原创 高性能图像处理服务器的实现(一)高性能异步日志

      日志是调试一个服务器的最好方法了,在大型的服务器项目中,如果一直日志的输出总是有问题,或者输出的信息含糊不明,那么,你的调试过程将会非常痛苦,如果是普通的内存泄漏或者越界访问,或者TCP通信过程中的一些问题,那么通过errno也许还能帮你一下,但如果是跑了一段时间的服务器突然宕机,那么定位问题将会非常的困难。由此可见,一个高效安全且保证输出所有信息(我这里的保证输出所有信息表示即使服务...

2018-02-07 21:58:54 1758

原创 高性能图像处理服务器的实现

高性能图像处理服务器的实现  最近打算写一个高性能的图像处理服务器,功能大致为单帧图像或多帧图像的超分辨率恢复,并且支持远端图像存储到服务器端,支持高并发情况下的高效处理。   大致构思了一下思路,决定服务器采用c++编写,具体架构参照陈硕大大提倡的reactors in threads的思想,然后图像传输方式以http的方式传输,本地数据库采用MySQL(可能内存数据库会选择用Redis...

2018-02-01 16:48:35 3280

数字电路课件

数字电路设计与原理实践第四版第一章第二章第三章第四章的课件

2014-06-08

空空如也

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

TA关注的人

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