- 博客(41)
- 收藏
- 关注
原创 近期学习
只列目录,忘记了就再查,英语不行得加把劲。1.redis的使用:CMD:redis-cli -p 127.0.0.1set name maomao :添加键值对get name :根据键获取值del name :删除键KEYS * :查看所有键CPP:redisConnect red...
2018-09-21 10:28:04
180
原创 我的第一个python脚本
经过一周的学习,做出一个简陋的工具(python),但是还没有涉及到网络等方面#功能描述:辅助性,配合exe文件,对大批量case进行目标对比测试本博客主要记录在学习过程中遇到的问题,为后面的学习铺路从最基础的开始记录,毕竟万丈高楼平地起:1.python中的对缩进要求很严格,区分模块 作用域等2.if __name__=="__main__":  很强大,在此作...
2018-08-02 15:16:49
281
原创 Python循环,迭代
了解了基础的类型,进行学习程序结构1.while循环:var = 1while var == 1 : # 表达式永远为 true num = int(input("输入一个数字 :")) if num>=0 and num<=100: print ("你输入的数字是: ", num) else: print(&
2018-07-26 16:45:22
667
原创 Python基础数据结构
元组a = "a","b","c","d" #元组print(a)b = ['a','b','c','d'] #列表print(b)print(type(a)) #打印类型print(type(b))b[2] = 'x' #正确,列表可以改pr
2018-07-25 21:42:17
159
原创 Python相识第一天
0. Python 是什么类型的语言?Python是脚本语言脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序。以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比 C语言、C++语言 或 Java 之类的系统编程语言要简单容易。也让脚本语言另有一些属于脚本语言的特性:语法和结构通常比...
2018-07-25 16:27:13
198
原创 DuiLib使用
初次用duilib写一个小玩具,由于还不熟悉XML的布局相关的,所以比较简陋 功能描述: 模仿抖音小视频中的,一个窗口,询问是否喜欢我,点击‘喜欢’按钮则弹出小对话框,如果想点击‘不喜欢’,则鼠标移动上去后就弹开,让你点不到主函数省略了!class MWindow :public CWindowWnd, public INotifyUI,public CHorizon...
2018-07-18 15:57:31
2671
1
原创 duilib--ListDemo学习
简介: Duilib 是一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。提供所见即所得的开发工具UIDesigner。使用DirectUI后将使得我们的设计人员彻底解 放,不会受到开发的束缚,可以充分地发挥其设计能力来设计软件界面,并参与到用户界面开发过程中。 Duilib 目前支持Windows 32 、Window CE、Mobile等平台,...
2018-07-15 14:35:03
768
原创 nginx进程管理
nginx进程管理==> master + 多个worker进程 master进程:全局的初始化 和管理 worker进程 worker进程:主要业务逻辑,事件处理 通信:socketpair ==> 每次fork完一个子进程后都把句柄传给前面已经存在的进程,以达到子进程间通信nginx有多进程启动和单进程启动 主要分析多进程启动:nginx中的f...
2018-07-15 14:09:49
880
原创 C++继承
1) public继承方式基类中所有public成员在派生类中为public属性;基类中所有protected成员在派生类中为protected属性;基类中所有private成员在派生类中不可访问2) protected继承方式基类中的所有public成员在派生类中为protected属性;基类中的所有protected成员在派生类中为protected属性;基类中的所有priva...
2018-06-17 15:03:54
136
原创 C++相关问题总结
构成动态多态的条件: 多态存在的三个条件: 1.必须存在继承关系; 2.继承关系中必须有同名的虚函数,并且它们是覆盖关系(重载不行)。 3.存在基类的指针,通过该指针调用虚函数。 注意:派生类中的虚函数必须覆盖(不是重载)基类中的虚函数,才能通过基类指针访问。 隐藏、覆盖: 覆盖指的是子类覆盖父类函数(被覆盖),特征是: 1.分别位于子类和父类中 ...
2018-06-17 14:40:57
235
原创 负载均衡算法
分布式算法-一致性哈希: 一个分布式系统,需要将数据存储到具体的节点上,如果用普通哈希取模进行,如果增加服务器或者服务器宕机,同一个KEY经过哈希后再对总数取模结果就和原来不同,会导致数据丢失。 所以引入一致性哈希: 先用hash函数映射到一个圆环上: 需要服务器时,先根据hash算法算出KEY的hash值,对应到这个环中的位置:如上图中的K1,顺时针找到服务...
2018-06-14 10:31:37
188
原创 C++11新特性
1,关键字:>>>>>>>>>auto在C98中已经存在,只是作用不大且多余<<<<<<<<<<<<C11中auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型: int a = 1
2018-06-13 08:33:10
242
原创 Leetcode-整数反转
#include<iostream>using namespace std;/* 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21*/class Solution { public: int reverse(in...
2018-06-10 19:38:09
252
原创 ptmalloc
内存管理器的设计目标: 1.最大兼容性 2.最大可移植性 3.浪费最小空间 4.最快的速度 5.最大可调式性ptmalloc折中上述目标: 具有长生命周期的大内存分配使用mmap。 特别大的内存分配总是使用mmap。 具有短生命周期的内存分配使用brk。 尽量只缓存临时使用的空闲小内存块,对大内存块或是长生命周期的大内存块在释放时都直...
2018-06-10 16:01:49
769
原创 堆栈管理
堆栈区别 (1). 管理方式不同 (2). 空间大小不同 (3). 能否产生碎片 (4). 生长方向不同 (5). 分配效率不同(1). 管理方式不同:栈是由编译器自动申请释放内存,栈需要程序员手动管理,容易产生内存泄漏(2). 空间大小不同:栈的大小很小,只有1M,堆有2G,都可以适当扩大(3). 能否产生碎片:栈不会产生碎片,堆上申请的容易产生碎...
2018-06-09 17:12:53
881
原创 x86内存相关(32位)
《程序员的自我修养》中介绍详细 带着相关问题分析: 1>为什么要引入虚拟内存 2>内存分布及各部分详解 3>分页分段机制 4>如何进行地址映射Q:为什么要有虚拟内存?? A:有了虚拟内存,每个进程都独享一个较大的空间,这样能够用占用内存更大的程序。虚拟内存分布图128M预留空间:禁止访问.text(代码段) 可执行文件加载...
2018-06-09 15:15:18
437
原创 常用设计模式
单例模式 单例大约有两种实现方法:懒汉与饿汉 @懒汉:在第一次用到类实例的时候才会去实例化 @饿汉:单例类定义的时候就进行实例化 特点与选择: 由于要进行线程同步,所以在访问量比较大,或者可能访问的线程比较多 时,采用饿汉实现,可以实现更好的性能。这是以空间换时间 在访问量较小时,采用懒汉实现。这是以时间换空间...
2018-06-08 20:34:18
153
原创 epoll的一些总结
epoll介绍 epoll是一种当文件描述符的内核缓冲区非空的时候,发出可读信号进行通知,当写缓冲区不满的时候,发出可写信号通知的机制。使用DEMO#define MAX_EVENTS 10struct epoll_event ev, events[MAX_EVENTS];int listen_sock, conn_sock, nfds, epollfd;epo...
2018-06-08 16:16:08
223
原创 网络嗅探器设计(三)
用到的libnet中定义的协议首部,以及类型。按照posix标准,一般整形对应的*_t类型为:1字节 uint8_t2字节 uint16_t4字节 uint32_t8字节 uint64_t转换:ntohs ==> 16位网络转主机htons ==> 是将整型变量从主机字节顺序转变成网络字节顺序inet_nto...
2018-06-07 17:19:48
544
原创 Leetcode-最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。 给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。 给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。#include<...
2018-05-29 15:06:52
226
原创 网络嗅探器设计(二)
//系统和本机信息===&gt;#include&lt;sys/utsname.h&gt; struct utsname { char sysname[_UTSNAME_SYSNAME_LENGTH];//当前操作系统名 char nodename[_UTSNAME_NODENAME_LENGTH];//网络上的名称 char r...
2018-05-27 13:32:55
767
原创 Leetcode-和为K的子数组
描述: 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。#include&lt;iostream&gt;#include&lt;vector&gt;using namespace std;class Solution //子数组个数问题{public: int subarraySum(vector&lt;int&gt;&
2018-05-26 20:00:03
1236
原创 网络嗅探器设计(一)
功能 @网络数据包的截取 扫描主机上的网络接口,使用Libcap 库截取数据报文 @主机端口扫描 指定要扫描的主机,以及要扫描的端口范围,构造TCP 数据报文,扫描目标主机端 @返回端口状态,端口服务类型 网络层数据报文分析 @分析数据报文,处理IP,ARP,RARP 数据报文 将IP 数据报文交给下一层再做进一步分析 @传输层数据报文分析 ...
2018-05-26 19:11:56
2724
1
原创 nginx内存池学习
特点 优点: 将大量小内存的申请聚集到一块,能够比malloc 更快 减少内存碎片,防止内存泄漏 减少内存管理复杂度 缺点: 造成内存空间浪费,以空间换时间内存池的结构:struct ngx_pool_s{ ngx_pool_data_t d; //数据区 size_t max; ...
2018-05-26 17:11:16
132
原创 http协议
HTTPHTTP属于应用层的面向对象的协议,简洁快速,适用于分布式超媒体信息系统;1&gt;支持C/S模式2&gt;简单快速:客户发起请求时,只需要传输请求方法和路径。3&gt;灵活:允许任意类型的数据对象。4&gt;无连接:每次只处理一个请求,处理完就断开连接(可以设置为长连接)5&gt;无状态:对事物处理没有记忆能力,优点是:服务器不需要先前信息时应答快。缺点:后续需要先前的...
2018-05-25 22:48:50
95
原创 LINUX命令
文件 ps:列出系统中的进程-A理出所有进程-a列出当前终端的进程-c列出进程的真实名称-H列出树状结构cat:将整个文件显示在目录上more:分屏显示空格为下一页,b为上一页more +6 main.c 从第三行开始more -5 main.c 每次显示五行more +/char main.c 第一次出现char的位置开始打印ls -l | more -5 ...
2018-05-23 23:10:05
120
原创 带缓冲的I/O和不带缓冲的区别及联系
EG: fwrite <===> write不带缓冲的 并不是指内核中不提供缓冲,而是只是单纯的系统调用,不是库函数的调用。只是进程中不提供缓冲功能(内核中还是提供缓冲的)====write带缓冲的 指进程对输入输出流进行了改进,提供了一个缓冲当fwrite函数网磁盘写数据的时候,先将数据写入缓冲区,达到一定条件时(缓冲区满//刷新缓冲区),这时候将数据一次性送往内核提供...
2018-05-22 15:12:51
478
转载 tcpdump
打印所有到达或离开日落的数据包:tcpdump主机日落 打印helios和hot或ace之间的流量:tcpdump主机helios和\(hot或ace \) 打印ace和除helios之外的任何主机之间的所有IP数据包:tcpdump ip主机王牌而不是helios 在伯克利打印本地主机和主机之间的所有流量:tcpdump net ucb-ether 要通过Internet...
2018-05-15 18:12:14
161
原创 Effective C++
1、不想使用编译器自动生成的函数,就该明确拒绝 若没有自定义的构造,拷贝构造,operator=,编译器会自动产生一份默认的,默认产生的权限都是public的,如果程序中不想用到拷贝等操作,可以自定义一份private权限的。2、多态基类的析构函数声明为virtual 1.具有多态性质的base class,应该声明一个virtual析构函数,如果class中带有任何virt...
2018-05-15 16:55:52
174
原创 进程间通信
一、管道 管道的作用是在具有亲缘关系的进程之间传递消息,所以管道并不是只可以用于父子进程通信,也可以在兄弟进程之间还可以用在祖孙之间等,反正只要共同的祖先调用了pipe函数,打开的管道文件就会在fork之后,被各个后代所共享。不过由于管道是字节流通信,没有消息边界,多个进程同时发送的字节流混在一起,则无法分辨消息,所有管道一般用于2个进程之间通信,另外管道的内容读完后不会保存,管道是单...
2018-05-10 16:37:05
158
原创 反应器模式
1、定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事...
2018-05-07 22:22:38
383
原创 半同步半异步
一、同步异步 同步:当一个同步调用发出后,调用者要一直等待返回消息(或者调用结果)通知后,才能进行后续的执行; 异步:当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果)。实际处理这个调用的部件在完成后,通过消息回调来通知调用者是否调用成功。同步与异步着重点在消息通知的方式,也就是调用结果通知的方式。二、半同步半异步 同步模式编程简单,但是I/O的利用利率低...
2018-05-07 22:04:34
750
原创 简单数据结构
链表与数组 查找单向链表中的倒数第k个节点。 查找单链表的中间节点,当节点总个数为偶数返回中间两个元素中的前者(后者) 反转单向链表(非递归实现) 反转单向链表(递归实现) 判断单向链表是否有环 判断两个单向链表是否相交 返回两个链表的第一个交点 用单链表实现栈,要求push和pop的时间复杂度为O(1)::::查找单链表的倒数第K个节点:...
2018-05-04 23:10:29
169
原创 排序算法
直接插入排序: 整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始,依次插入到有序区的合适位置,直到排好序。第一个for循环对从第二个开始的所有的数字遍历,嵌套的for循环是每次遍历数字时都取无序区的一个元素与有序区的元素比较,如果比有序区的要小则交换,直到合适的位置。void InsertSort2(vector&lt;int&gt; &amp;num){ ...
2018-05-02 23:16:25
128
原创 多进程/多线程
进程是表示资源分配的基本单位,又是调度运行的基本单位。 线程是进程中执行运算的最小单位,亦即执行CPU调度的基本单位。一,适用场景: 1>需要大量的计算 如果你在实际的应用中需要大量的计算,那么你可以优先使用线程。由于大量的计算会耗费很多的CPU并且切换回很频繁。而我们上文中也有说到,线程的切换简单而且CPU的利用率高。 2>需要频繁创建销毁 如果你实...
2018-05-01 19:34:17
288
原创 TCP的学习记录汇总
*一,TCP的服务: TCP全双工的一对一通信,不能用于广播和多播。提供可靠的,面向连接的字节流服务 。 如何可靠的: 1.应用数据被分割成TCP认为最适合发送的数据块(在三次握手时,可协商MSS的大小,双方都通告自己期望的MSS,若有一方没有接收,默认536),防止IP层发生IP分片导致发送失败重传。 2.当TCP发送一个段后,会启动一个定时器,等待目的端确认收到,如果不能及时收到回复则...
2018-05-01 17:00:15
200
原创 C中那点事
1.#define const enum 各自特点:const只是只是给出了对应的内存地址,在代码段,在程序运行过程中值存在一份。#define给出的是立即数,在只读数据段,在内存中有若干个拷贝,在预编译进行替换enum: 枚举元素都是常量,它们是有值的,C 语言在编译时按定义的顺序使它们的值为,1,2,…(可以初始化值,enum weekday{sun=7,mon=1,tue,wed...
2017-10-19 00:07:19
223
原创 C语言编译链接
编译链接 源代码==》预处理==》编译==》汇编==》链接==》可执行文件 纯c语言 (检查) .obj .exe 注:预处理不存在语法检查 编译阶段会有语法检查 一, 预处理: (1)将所有的#define删除,并展开所有的宏定义 (2)处理所有的条件预编译指令,如:#if #...
2017-09-19 23:25:09
321
原创 C++经典问题
指针和引用的区别?1.指针不用初始化 但是引用不行,所以引用比指针安全2.一经引用就不能改变引用关系 但是指针可以改变所指向的对象3.指针可以指向空 但是引用不能引用空4.传参的时候 指针传递的是地址 引用传递的是本身(尽量使用引用传参 方式发生拷贝节约时间空间)5.成员变量里面的引用必须初始化列表中初始化6.汇编上是一样的7.指针指向的临时量会释放 引用不会con
2017-08-08 20:54:53
383
原创 C++primer -2
类和对象一,对象的大小不考虑方法和静态变量 cpp中 struct-》public class 对象产生-》1.开辟内存(产生this指针)2.调用构造函数 对象析构-》1.处理对象占用的外部资源 2.释放对象内存成员方法中参数列表中隐藏有一个对象的地址(C *const this) 类体内定义的方法被处理成内联方法(编译时检查)1>拷贝构造:有指针时默认拷贝构造函数会发生浅拷贝(析构
2017-07-03 23:30:51
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人