![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术
文章平均质量分 65
暂代
须知少日拿云志,曾许人间第一流。
展开
-
项目中大量if...else...优化策略
项目中大量if...else..优化策略。网上关于这种优化的大都是java代码,所以特地记录一下我的想法,填补一下C++代码的空缺。Python来处理这个也类似,基本把map换成dict就行了。原创 2019-12-28 19:54:51 · 779 阅读 · 3 评论 -
聊一聊布隆过滤器(Bloom filter)
一个网站要添加URL黑名单,需要把包含20亿条URL的黑名单存储到计算机上,怎么存?怎么快速判断浏览器输入的url是否在黑名单中?原创 2019-09-16 16:56:17 · 466 阅读 · 0 评论 -
Python2.7.5生成验证码
开发网站登陆 / 注册页面的时候往往需要实现验证码模块用于反爬虫机制,这里介绍用python2来来实现生成验证码的功能。这里用到了graphic-verification-code库,这个库依赖于PIL库。原创 2019-08-17 16:57:16 · 208 阅读 · 0 评论 -
记一次对“缓冲区溢出漏洞”的攻击实验
记录一次对“缓冲区溢出漏洞”进行攻击的实验。通过这个实验,可以加深对函数调用底层原理(栈帧结构)以及缓冲区溢出危害的理解。进行这个实验之前,读者最好先了解一下函数的栈帧结构以及X86-64汇编语言基本语法。原创 2019-08-24 16:07:47 · 860 阅读 · 0 评论 -
Boost库安装及使用记录
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。文章目录一、前言Linux下安装Boost库二、Boost algorithm字符串切分字符大小写转换字符替换一、前言如果想要在项目中使用Boost库,首先要在开发环境安装Boost库。这里提供Linux Centos7.2开发环境下安装 Boost1.67 的方法。Linux下安装Boost库 1. 到官网下载需...原创 2019-05-12 11:15:02 · 346 阅读 · 0 评论 -
Linux下删除特殊名称文件的方法
Linux下删除特殊名称文件方法前提:虽然Linux规定文件或目录名由除“/”和空字符“\0”之外的任意ASCII字符序列组成,但是,不幸的是,我们可能无意中创建了一些特殊名称的文件,或者由程序意外的创建了一些由特殊字符组成的文件,这个时候,要删除它们,用常规的rm / rmdir就不可以了。第一种方法:删除时使用 --这种方法可以删除以 ‘-’ 开头的文件使用示例:[zand...原创 2019-04-02 18:28:59 · 1124 阅读 · 0 评论 -
HTTP协议优化措施
如果文章哪里有问题,还请诸位看官不吝赐教噢~经典提高效率的机制并行连接可以通过建立多个 tcp连接通道来实现并行传输数据,提高页面响应速率。并行TCP连接的使用还能够一定程度上减轻RTT延迟和短连接缓启动延迟的影响。长连接HTTP/1.1默认开启 Keep-Alive 选项,并且是 pipeline模式的。这样建立的 TCP 连接,可以在多次请求中复用。(注意:pipelin...原创 2019-02-20 20:52:57 · 2191 阅读 · 0 评论 -
STL线程安全讨论
最近在回头看STL里面的实现,也在进一步研究高性能服务器编程方面的东西,就想到那STL在多线程情况下是否安全呢?记录STL是数据结构和算法的精妙实现,因此为了追求极致的效率,内部并没有给所有的操作加锁。对于STL的容器而言,只有下面这两种情况可以保证线程安全:多个线程同时读取同一个容器的内容多个线程同时写不同的容器其他的情况,比方说:多个线程同时读、写同一个容器。这就不是线程安全...原创 2018-11-21 00:43:24 · 1665 阅读 · 0 评论 -
P2P技术介绍
看到的一篇对P2P技术的介绍1. 什么是对等网络(P2P)技术?P2P技术属于覆盖层网络的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据。这种模式的优点是:数据的一致性容易控制,系统也容易管理。但是此种模式的缺点是:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一...转载 2018-11-20 14:47:51 · 2566 阅读 · 0 评论 -
事件复用技术比较:Epoll & Kqueue
什么是事件复用技术假设你有一个简单的web服务器,并且那里已经打开了两个socket连接。当服务器从两个连接那里都收到Http请求的时候,它应该返回一个Http响应给客户端。但是你没法知道那个客户端先发送的消息和什么时候发送的。BSD套接字接口的阻塞行为意味着,如果你在一个连接上调用recv()函数,你就没办法去响应另外一个连接上的请求。这时你就需要I/O复用技术。 I/O复用技术的一个直接方式...转载 2018-09-29 17:56:39 · 3486 阅读 · 0 评论 -
Apache & Nginx 网络模型
Apache & Nginx 网络模型Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的。下面通过比较Apache和Nginx工作原理来比较。Apache传统Apache都是多进程或者多线程来工作,假设是多进程工作(prefork),apache会先生成几个进程,类似进程池的工作原理,只不过这里的进程池会随着请...转载 2018-10-11 15:44:44 · 461 阅读 · 0 评论 -
字符串和数字的相互转换
有时候在服务器端开发的时候,需要对自定制上层协议来序列化和反序列化数据,这种情况下有时候就会用到标题所言的这种操作。下面我列举几种常见的方法。1. sprintf函数和sscanf函数1.1 sscanf函数char buf[SIZE] = "a=10&b=20";int a = 0;int b = 0;sscanf(buf, "a=%d&am原创 2018-09-25 22:57:47 · 277 阅读 · 0 评论 -
Source Insight 4.0首次安装提示unable to open or create...解决方案
当初买电脑的时候too young, too naive. 注册了一个中文的windows用户名,后面踩的坑我真是。。。这又是一个哲学问题。。。好了,正式开始:出现这个问题,是因为Sourch Insight软件的初始配置路径包含中文字符,出现了编码不一致的问题,所以无法正常打开软件。解决方案如下:打开注册表编辑器windows + r 打开运行窗口输入:regedit, en...原创 2018-10-01 15:18:10 · 13151 阅读 · 12 评论 -
Effective C++阅读笔记
Effective C++阅读笔记一、初始条款1:视C++为一个语言联邦C++支持多种风格的编程:面向过程编程面向对象编程函数式编程泛型编程元编程tip:不同类型的编程模式,遵循不同的高效编程准则即可条款2:尽量以const,enum,inline 替换 #define如果需要定义常量,请用const / enum 因为#define只是简单的文本替换,...原创 2018-07-26 15:35:43 · 335 阅读 · 0 评论 -
错误集合(Error summary)
以前觉得编程路上遇到的错误总是千奇百怪,每个人又有每个人的不同之处,所以就一直不愿意花时间把自己踩过的坑都记下来,现在才发现好多都是重复的,只是变了一个环境,打算以后把这些都记下来,免得到时候再去冥思苦想。 PS:不定期更新错误1 原因分析:虽然已经包含了头文件< string >,但是编译器还是会报错,原因在于,string类只有在作用域std下才是可见的,...原创 2018-06-19 14:06:14 · 3068 阅读 · 0 评论 -
c语言_通讯录(非初级版)
之前说写一个改良版的通讯录,一直没有时间来写,下面我就讲一下这个要怎么写,只要跟着我的思路,相信你读完一定会有所收获(大佬请忽视这句话-.-!) 这个版本的通讯录是一个动态的版本并且会加上文件操作,解释一下这句话就是 这个版本的通讯录可以“无限”的增加联系人的信息(只要你的外存足够大),并且 可以将联系人的信息保存在外存而不是内存上,下次打开这个程序还可以读取以前 ...原创 2018-06-25 21:52:24 · 413 阅读 · 0 评论 -
提高服务器性能的建议
对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或者请求的服务程序,网络服务器更符合这种情况,但并非所有的网络程序都是严格意义上的服务器。使用“高性能请求处理程序”是一个很糟糕的标题,为了叙述起来简单,下面将简称为“服务器”。 本文不会涉及到多任务应用程序,在单个程序里同时处理多个任务现在已经很常见。比如你的浏览器可能就在做一些并...原创 2018-05-01 14:57:25 · 568 阅读 · 0 评论 -
常见编辑器和编译器的优缺
编辑器Emacs 世界上著名的集成开发环境和文本编辑器,号称神之编译器优点: 1. 打开大文件速度非常快 2. 自定义功能强大,Emacs的这个特性被发挥到了极致,可以说是文本编辑器中首屈一指的! 3. 开源并且免费! 4. 支持多个系统平台 缺点: 1. 学习成本很大,相对于其他编辑器(除vim) 2. 对中文的兼容性比较差 3. 启动速度较慢 建议...原创 2018-03-30 16:16:35 · 1659 阅读 · 0 评论 -
虚拟机(VMware)装Linux Centos操作系统网络连接失败的通用解决方案
这里采用的方法,一般对于虚拟机的网络连接失败问题都可以解决,没有使用terminal命令,方便对Linux不熟悉的朋友也能自己解决虚拟机中Linux的网络问题。一、Linux的网络配置1.依次点击以下选项 (System)–>(Preferences)–>(Network Connections) 即:2.选择Wired,然后 依次点击(Syste...转载 2018-03-19 17:51:34 · 993 阅读 · 0 评论