- 博客(45)
- 资源 (20)
- 收藏
- 关注

原创 Leetcode及其他算法刷题记录
Leetcode视频题解地址https://space.bilibili.com/18508846目前逐步添加视频题解中 欢迎大家点赞收藏 留言 投币 一键三连 hhN皇后系列26 27 28 30 31 32 33 35 38 39 40 41 42 45程序员面试金典 https://www.nowcoder.com/ta/huawei 华为 机试试题LC1288 LC005 LC003 LC77 LC1239 LC1197 LC1288 LC1255 LC1262 L...
2021-07-06 19:36:59
110

原创 感谢您对我博客的关注 目前已经搬迁到博客园 算法视频分享地址
感谢您对我博客的关注 目前已经转移到博客园技术博客 http://www.cnblogs.com/itdef/qq 151435887gitee https://gitee.com/def/欢迎c c++ windows驱动爱好者 服务器程序员沟通交流部分老代码存放地点http://www.oschina.net/code/list_by_user?id=614253你的鼓励就是我...
2019-11-01 11:45:49
116
原创 缩水版遗传算法 学习笔记
遗传算法是在随机的初始数据下,经过一段时间的变化,最后收敛得到针对某类特定问题的一个或者多个解。主要步骤有编码 选择 交叉 变异这里以一个极其简单的探索迷宫出路的代码为例 增加对遗传算法的感性认识。 编码 2,3,4,1,1,1,1,1,1,1,1,1,1,1,1, 1,8,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1,
2017-05-04 16:55:57
375
原创 学习笔记目录
网页爬虫部分C++ 提取网页内容系列之五 整合爬取豆瓣读书C++ 提取网页内容系列之四正则C++ 提取网页内容系列之三C++ 提取网页内容系列之二C++ 提取网页内容系列之一获取电驴首页推荐信息和指定栏目信息网络部分 asio boostboost 编写finger服务boost asio 学习(九) boost::asio 网络封装b
2017-05-03 17:32:29
480
原创 算法导论 二项堆
可以合并的堆 二项堆先看看堆得操作运行时间的对比 对于使用这种数据结构有个概念二项堆在union操作合并上有优势二项堆由二项树组成 我们先看看二项树的定义因为性质3中的系数就是二项式分布的系数,所以二项树名由此得来B0 有2º = 1个节点B₁ 有2¹=2个节点 且根节点比子节点小B₂ 有2²=4个节点 且根节点比子节点小B₃ 有2³=8
2017-04-24 11:23:42
654
原创 使用赫夫曼编码压缩数据
简单来说就是使用二叉树来记录数据,0表示左子树,1表示右子树。到达树的叶子节点就找到我们需要的数据了比如说字母树如图00表示F 01表示Z 1表示D 但是 字母或者单词在文章出现的频率其实是不一样的比如这么一个场景:10万个字符的数据文件,由6个字符组成(a,b,c,d,e,f)每个出现频率不一样a出现四万五千次 b出现一万三千次C出现一万二千次
2017-04-21 17:24:55
631
原创 动态规划与贪婪算法学习笔记
已算法导论图示为例两条生产线上,产品经过各个装配工作位直到加工完成所耗费的时间都标记出来了,同一生产线的装配工作位转移不花费时间。试图求出最快流程。动态规划是利用最优子结构自底向上求解。也就是说要求出最后完成的最快流程(Si,6)我们需要先知道Si,5工位的最快流程,而直到Si,5工位的最快流程就需要知道Si,4工位的最快流程 直到求出Si,1的最快
2017-04-19 11:04:33
472
原创 boost 编写finger服务
本篇是模仿PYTHON TWISTED写一个FINGER示例。从最简单的链接到通过接收字符串返回不同的内容1 最简单的链接 1 #include 2 #include 3 #include string> 4 #include 5 #include 6 #include 7 #include 8 9 10 using boost::asio::i
2017-03-05 20:26:25
371
原创 磁盘保护原理简介
磁盘保护确保用户在正常使用电脑的情况下,所有保护分区的操作在重启系统后都会恢复,达到预防病毒、保护数据的目的。用户的角度来看,可能会觉得很神奇。想实现这个功能,其实需要一个磁盘过滤程序,对磁盘的操作进行过滤和区分操作。写入操作。应用程序操作某个文件,对文件进行写入改动操作,最后会对应到,写入改动硬盘上的某些扇区。而磁盘保护程序会过滤检测到这些扇区操作,将写入转移到其它位置,而不是真正写入到
2017-03-03 10:52:44
1060
原创 如何判断某个二进制数如是否存在两位1中间有包含0的情况?
https://www.zhihu.com/question/52999719如何判断某个二进制数如是否存在两位1中间有包含0的情况?请尽量用基础数学解答,遍历一类的就不用说了,无解的话也请说明下。例如:111100或100000或000000都是1中间没有0;101010或100111这都属于除1之外有多个0相连的情况。 回答中使用多次取反来确定连续1和连续0
2017-03-03 09:40:16
1245
原创 <Linux多线程服务端编程>学习记录
使用智能指针解决多线程下 类的解析冲突问题有这样一个场景使用StockFactory记录Stock的信息 容器是map;代码如下: cpp1 运行显示如下Stock[007E8818] stock1s1 should destruct~Stock[007E8818] stock1没有按照预想的进行析构说明我们的map容器应该使用弱指针weak_pt
2017-03-02 13:55:07
602
原创 Debian8下muduo库编译与使用
其实《Linux 多线程服务端编程》已经写得很详细但是考虑到代码版本的更新和操作系统的不同可能部分位置会有些许出入 这里做个记录 方便以后学习运行我使用的虚拟 安装的是debian系统版本如下uname -aLinux debian 3.16.0-4-686-pae #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) i686 GNU/L
2017-02-28 13:25:38
428
原创 无盘工作站原理分析
无盘系统就是用户使用的客户端机器没有硬盘 客户端向硬盘读写的内容均是通过网路从服务器获取 从而减少人力维护成本。而服务器更改配置和更新客户端的配置与硬盘中的内容,也只需要更改服务器上的镜像文件,提升维护效率。由于我没接触过无盘的具体底层开发 以下只是我对无盘的猜测理解1 无盘的启动有硬盘的客户机 从机器上电后,启动BIOS,开始BIOS自检。通过自检后,bios找到硬盘上的
2017-02-26 16:32:04
5793
原创 LINUX网络编程 IO 复用
参考《linux高性能服务器编程》 LINUX下处理多个连接时候,仅仅使用多线程和原始socket函数,效率十分低下于是就出现了selelct poll epoll等IO复用函数。这里讨论性能最优的epoll IO复用用户将需要关注的socket连接使用IO复用函数放进一个事件表中,每当事件表中有一个或者多个SOCKET连接出现读写请求时候,则进行处理事件表使用一个额外的
2017-02-26 15:45:31
554
原创 网络编程学习笔记整理(三)
摘录笔记 《TCP/IP高效编程 改善网络程序的44个技巧》tcpip可靠但不是绝对可靠比如发生对端强行关闭 ACK丢失在两端存活且连接的情况下 tcp保证数据按序 无损坏的传输但是有的网络中断会触发传输问题分为以下三类1 永久或者临时网络中断此种情况,若路由未发送ICMP报文的话,应用程序与TCPIP栈无法得知中断发生而持续重传直到超时放弃
2017-02-25 11:47:36
258
原创 网络编程学习笔记整理(二)
摘录笔记 《TCP/IP高效编程 改善网络程序的44个技巧》socket的创建函数int socket (int domain,int type, int protocol)参数说明protocol需要注意 常见有三个选项SOCK_STREAM 创建TCP socketSOCK_DGRAM 创建UDP socketSOCK_RAW 对IP层的数据进行访问 例如监听ICMP 使用此种socket T
2017-02-23 14:47:44
554
原创 网络编程学习笔记整理(一)
本文仅仅作为学习 UNP 的一个笔记 均是经典书籍的一个摘记索引 无太多原创内容TCP连接 三路握手过程TCP关闭流程状态转换图关闭连接可以使用 close closesocket(windows)或者shutdownclose类函数 仅仅减少socket的引用计数 并未触发 FIN的发送只有socket引
2017-02-23 11:13:12
261
原创 状态机学习 解析四则运算式 语法分析
将四则运算拆分成一个个数字和符号后就进行运算分析使用以下语法规则:(参考《自编编程语言》)expression:#pragma once#include #include #include enum TokenType { BAD_TOKEN, NUM_TOKEN, ADD_TOKEN, SUB_T
2017-02-20 11:58:33
1425
原创 状态机学习 解析INI文件
题目来自 作者:李先静.状态变化如下#include #include using namespace std; string s = "[GRP]\n\name = def \n\data = 2016.11.29 \r\n\; this is a comment \r\n\str = this is a test \n\[zhangsha
2017-02-20 11:55:21
433
原创 状态机学习 统计字符
题目来自 作者:李先静.逐个字符扫描 根据是否为字母决定当前状态 由单词内状态切换到单词外 计数字符加1#include #include #include using namespace std; string testString = " this's a test,'Hello World!!!' Welcome to the real
2017-02-20 11:51:36
381
原创 主机性能监控之wmi 获取系统信息及内存性能信息
欢迎转帖 请保持文本完整并注明出处 这里参考了http://www.cnblogs.com/lxcsmallcity/archive/2009/10/11/1580803.html 使用了PYTHON 和 vc 进行了调用WMI的代码编写通过搜索和查看MSDN 可以找到WMI的基本用法其实主要是WMI接口的初始化 使用 释放的过程然后就是查找MSDN
2017-02-20 11:49:20
1969
原创 c++ 计算cpu占用率
计算CPU占用率就是获取系统总的内核时间 用户时间及空闲时间其中空闲时间就是内核空转 所以内核时间包含空闲时间然后计算运行时间 = 内核时间 加 用户时间 减去 空闲时间间隔时间 = 内核时间 加 用户时间cpu使用率% = 运行时间 / 间隔时间 ;无论单个进程cpu占用率还是系统整个cpu占用路 都是如此原理核心代码就是如下几段
2017-02-20 11:46:53
7562
2
原创 统计单词出现频率及排序 从单机到多机合作
本文是学习 多线程服务端编程的练习书籍作者陈硕的博客也有提到这个题目http://blog.csdn.net/solstice/article/details/8497475 第一个层次很简单 单机 一个小文件 读进来进行处理 然后对每个单词进行统计排序 记录每个单词出现频率+ View Code 第二个层次 就是文件较大 单词量较多 如果一次
2017-02-20 09:30:20
573
原创 算法导论 红黑树 学习 删除(四)
// rbTreeTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;enum Color { red = 1, black};struct node { Color color_; std::shared_ptr left_; std::share
2017-02-14 21:54:52
822
原创 算法导论 红黑树 学习 插入(三)
学习算法 还是建议看看算法导论算法导论第三版 如果不看数学推导 仅看伪代码 难度还是适中本系列只是记录我的学习心得 和伪代码转化代码的过程深入学习 还是建议大家看看算法书籍 教程更加系统。本文参考算法导论第13章节 红黑树代码由本人写成转载请标明出处 现在说插入元素红黑树的插入跟二叉树的插入差不多 首先是查找合适的位置
2017-02-14 19:26:55
428
原创 算法导论 红黑树 学习 旋转(二)
学习算法 还是建议看看算法导论算法导论第三版 如果不看数学推导 仅看伪代码 难度还是适中本系列只是记录我的学习心得 和伪代码转化代码的过程深入学习 还是建议大家看看算法书籍 教程更加系统。 本文参考算法导论第13章节 红黑树代码由本人写成转载请标明出处 红黑树是一个带颜色的二叉树有以下5点性能1 每个
2017-02-14 15:32:05
260
原创 算法导论 红黑树 热身 二叉树学习(一)
学习算法 还是建议看看算法导论算法导论第三版 如果不看数学推导 仅看伪代码 难度还是适中本系列只是记录我的学习心得 和伪代码转化代码的过程深入学习 还是建议大家看看算法书籍 教程更加系统。本文参考算法导论第12章节 二叉树代码由本人写成转载请标明出处首先由于红黑树的删除用到了二叉树的一些函数 所以我们从二叉树讲起
2017-02-14 15:16:09
226
原创 冒泡 快速 堆排序 归并排序学习示例
// SortTest.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"#include using namespace std; void swap(int& a, int& b) { int c = a; a = b; b = c;} void BubbleSort(int arr[],int le
2017-02-14 15:06:43
190
原创 访问模型一 最简单的访问服务器
假设一个网站,最初开始压力不大,只有几千条或者几万条数据存储,约几百个查询访问那么一般就是一台设备应对 数据输入和查询 (后继更新代码) 整个思路就是写了一个 智能指针版的链表(注意指针间相互引用造成无法自动释放,出现内存泄漏)然后将测试数据hash 分别放进制定数量的链表中 hash函数使用的是redis2.4版目前来看8千数据hash分别存储5个链表 7
2017-02-14 15:02:01
507
原创 访问存储的练习和入门教程 分布式存储 负载均衡
/**************************************************************技术博客http://blog.csdn.net/stecdeng 技术交流群群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流*********************
2017-02-14 14:58:17
420
原创 2016年,你读过的最好的IT技术书有哪几本?
def程序员原文https://www.zhihu.com/question/54350343陈硕 等 54 人赞同了该回答1 知乎 陈硕大牛的 服务器多线程编程muduo输的好不好可能更多的在于适合不适合 尤其是技术书籍如果你已经具有C++基础 对野指针和内存泄漏有自己的心得和疑惑如果你已经具有网络编程基础 对实
2017-02-14 12:14:08
2605
原创 winpcap初次使用
winpcap是众多网络过滤嗅探分析工具使用的专业网络数据包捕获开发包。该作品库是开源作品,且全部用C编写,是十分适合学习网络编程的参考学习资料。下面是调用winpcap函数的小例子,通过跟踪其运行过程,我们来初步了解 winpcap的运行流程。首先是winpcap官网下载代码和LIB文件夹和INC文件夹以及安装包。 两个DLL需要vs2005编译,驱动需要WDK6000版本编译。
2013-08-06 15:53:47
919
原创 内存池笔记
在大量频繁的申请释放内存的情境中,如果能对分配方式作出轻微的改进,那么在大量重复的过程中积累下的节省时间也是相当可观。在《提高c++性能的编程技术》这本书中,第六章对于该场景给出了一个内存池例子,现将其代码整理如下并统计出同未优化的仅仅使用new delete时候的耗费时间对比。其基本思路是,在频繁分配固定大小内存时候,先建立一个内存池,在请求内存仅仅需要将请求的固定大小内存块从内存池中摘
2013-08-06 15:52:40
804
原创 windbg 经典死锁调试
代码见// Deadlock_Debug.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "windows.h"#include // All the thread must get all of critial_section// Classic DeadlockCRITICAL_SECTION
2013-05-13 15:16:46
1156
原创 重命名文件的几种写法
现在主要的是通过往ZwSetInformationFile发送HANDLE和改名请求 再者就是 往 IoSetInformation 发送FILEOBJECT和改名请求以及我自己模仿iosetinformation写成的创建IRP改名voidRenameFileROutineByHandle(){UNICODE_STRING UniFileString;OBJECT_A
2013-04-21 15:17:31
1142
原创 windows 与 Linux SOCKET通讯
编写的一个小程序 参考了网络上的一些文章,但是网络上的代码似乎设置于本机不同,在windows客户端这边做了些修改。linux server 端口#include #include #include #include #include #include #define HELLO_WORLD_S
2013-04-21 13:47:13
854
原创 C语言版STL
找到一个C语言实现的STL,目测似乎比C++版本的容易理解。没有太多不常用的技巧和难以理解的宏。而且贴心的提供了build in windows 的编译方式,为不同平台的学习者调试学习提供了便利。而且也可以学习下C语言的设计模式。有空学习下。 libcstl是使用标准C编写的通用的数据结构和常用算法的库, 它模仿STL的接口形式, 包括序列容器,关联容器,容器适配器,迭代器,函数,
2013-04-20 13:26:38
4294
原创 windows内核缓存代码解析
VOIDCcInitializeVacbs(){ SIZE_T VacbBytes; PVACB NextVacb; // 根据全局信息 计算缓存 即除以256KB // 初始化缓存信息参数 挂入队列 等待使用 CcNumberVacbs = (MmSizeOfSystemCacheInPages >> (VACB_OFFSET_SHIFT
2012-11-02 14:02:51
1171
1
原创 HOOK ntfs 禁止格式化
if(bHooked == FALSE){RtlInitUnicodeString (&HookDriverName, L"\\FileSystem\\Ntfs");//获得\Driver\VolSnap驱动对象status = ObReferenceObjectByName (&HookDriverName,OBJ_CASE_INSENSITIVE,0,0,*
2012-05-29 15:03:13
1153
原创 ObpReferenceProcessObjectByHandle 学习
NTSTATUSObpReferenceProcessObjectByHandle ( IN HANDLE Handle, ...... OUT PVOID *Object, ...... ) { //获取当前线程 Thread = PsGetCurrentThread (); *Object
2012-05-23 13:25:34
777
挑战程序设计竞赛1 与 2
2019-05-14
Essential+C++中文版.pdf
2014-07-10
Accelerated+C+++中文版.pdf
2014-07-10
More Effective C++(完整版).chm
2014-07-10
Effective_Cpp
2014-07-10
C++编程思想(第2版)第2卷
2014-07-10
C++编程思想(第2版)_第1卷_标准C++引导
2014-07-10
设计模式:可复用面向对象软件的基础
2014-07-10
剖析winpcap文档
2012-10-21
软件剖析_代码攻防之道(中文)
2009-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人