自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cyrus_wen的博客

kaikai学代码

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

原创 Redis的数据结构之SDS及常用API

Redis的数据结构之SDSRedis没有使用C语言风格的字符串, 而是使用了一种叫SDS的简单动态字符串。C风格的字符串用来作为字符串字面量, 比如打印日志。当表示一个可以被修改的字符串的时候, redis会用SDS表示。redis是key_value型数据库, 它的key和value都是一个对象。SDS除了保存数据库中的字符串外还用作缓冲区(buffer): AOF模块中的A...

2019-03-10 22:55:23 452

原创 java中的继承

java的继承1. java中继承的关键字是extends, 其实现的形式是:class Child extends Father{ }继承的主要作用就是对类进行扩充以及代码的复用。继承的简单例子:public class Person { private String name; private int age; public void setName(String na...

2018-11-14 14:57:58 361

原创 java的内部类

内部类内部类:在一个类的内部嵌套其它类的操作叫内部类。简单的内部类:public class Outer { private String msg = "hello world"; class Inner //定义一个内部类 { public void print() { System.out.println(msg); } } public void fu...

2018-11-09 00:11:03 223

原创 代码块

java的代码块根据代码块定义的位置以及关键字代码块分为普通代码块构造代码块静态代码块同步代码块(暂时不看,后来介绍)1. 普通代码块定义在方法中的代码块。public class TestMain { public static void main(String[] args) { { //直接使用{}定义普通方法块 int x = 10; System....

2018-11-05 23:31:03 166

原创 this关键字的作用

this关键字的作用this关键字主要有以下三种用途this调用本类属性this调用本类方法this表示当前对象1. this调用本类属性我们可以看如下代码:public class Person { private String name; private int age; public Person(String name, int age) { name =...

2018-11-04 23:53:50 3429

原创 eclipse常用快捷键

Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率。Eclipse中有如下一些和编辑相关的快捷键。【ALT+/】此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。【Ctrl+O】显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时...

2018-11-04 19:03:06 150

原创 旋转字符串(左旋)

题目要求:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。思路:解法一:开辟了新的空间。class Solution {public: string LeftRotat...

2018-09-22 22:59:07 179

原创 C/C++复习

C/C++复习C/C++基础语法static关键字作用 修饰变量 存储位置 - 静态存储区链接属性,本文件内有效修饰函数 链接属性 - 本文件内有效修饰成员变量和成员函数 静态成员函数没有this指针, 类和对象都可以调用静态成员函数不能是虚函数静态成员变量必须在类外初始化static和全局的区别const的作用 修饰变量不能被修改,指针可以修改但是注意编译...

2018-08-18 23:29:34 237

原创 智能指针

auto_ptr我们申请一块内存并且绑定在auto_ptr p上面,当p离开作用域之后调用析构函数。但是存在一些问题。 auto_ptr赋值给另一个auto_ptr之后所有权转移,但是所有权不会转移回来。auto_ptr不能指向new[]auto_ptr不能指向容器shared_ptr共享所有权多个指针可以指向一块内存,最后一个shared_ptr离开作用域的时候释放内...

2018-08-18 23:28:32 159

原创 重定向

重定向dup/dup2系统调用函数原型:#include <unistd.h>int dup(int oldfd);int dup2(int oldfd, int newfd);使用dup将标准输出重定向到文件中int main(){ int fd = open("./log", O_CREAT | O_RDWR); if(f...

2018-08-15 18:04:21 238

原创 非阻塞IO

非阻塞IO如果内核还没有将数据准备好,系统调用会直接返回,并且返回EWOULDBLOCK错误码。首先介绍一下函数fcntlfcntl#include <unistd.h>#include <fcntl.h>int fcntl(int fd, int cmd, .../*arg*/);//传入的cmd不同,后面的参数不一样fcntl有下面5...

2018-08-15 16:45:43 226

原创 5种高级IO

高级IO五种IO模型阻塞IO⾮阻塞IOIO多路转接异步IO信号驱动IO阻塞IO 在内核将数据准备好之前, 系统调⽤会⼀直等待. 所有的套接字, 默认都是阻塞⽅式。非阻塞IO 如果内核还未将数据准备好, 系统调⽤仍然会直接返回, 并且返回EWOULDBLOCK错误码。 ⾮阻塞IO往往需要程序员循环的⽅式反复尝试读写⽂件描述符, 这个...

2018-08-15 16:07:59 280

原创 布隆过滤器

布隆过滤器 它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 基本概念如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越...

2018-08-13 16:54:05 199

原创 c++之set

set的底层是平衡搜索树。搜索树:左边小右边大搜索树的时间复杂度是O(N)普通搜索树 左边比根节点小,右边比根节点大 O(N)AVL树 严格平衡 左右高度差不超过1 O(logN)红黑树 近似平衡 最长路径不超过最短路径...

2018-08-13 15:54:55 206

原创 C++强制类型转换

C++强制类型转换C语言隐式类型转换 – 相关类型 强制类型转换 – 不相关类型 C++static_castreinterpret_castdynamic_castvoid Test(){ int i = 1; //隐式类型转换 double d = i; printf("%d %.2f\n",i, d); in...

2018-08-13 09:30:28 182

原创 初始化列表

初始化列表1. 什么是初始化列表? 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。 2. 为什么使用初始化列表 初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋值操作。使用初始化列表主要是基于性能问题,对于内置类型,如int, float等,使用初始化类表...

2018-08-12 21:11:50 1411

原创 C++强制类型转换

C++强制类型转换void Test(){ int i = 1; //隐式类型转换 double d = i; printf("%d %.2f\n",i, d); int* p = &i; //显示类型转换 int address = (int)p; printf("%x, %d\n", p, address);}...

2018-08-12 20:27:09 184

原创 多线程http服务器编写中遇到的问题

多线程http服务器编写中遇到的问题1. 404响应报文报头未加空行却仍然能正确执行。错误原因 404的html文件中开头有两行空行,影响了报文的结构。所以能正常响应。解决办法 首部和正文之间添加空行2. 不能产生并发请求。错误原因 pthread_create() 的最后一个参数传的是accept()返回值sock_fd的指针,...

2018-08-10 17:43:47 440

原创 迭代器的基本使用(遍历)

迭代器的基本使用(遍历)一、定义 迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和C/C++“操作array元素”时的指针接口一致。不同之处在于,迭代器是个所谓的复杂的指针,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。因此,每一种容器型都必须提供自己的迭代器。事实上每一种容器都将其迭代器以嵌套的方式定义于内部。二、应用接下来我简单...

2018-08-02 10:26:49 1504

原创 HTTP服务器预备知识

HTTP服务器一、采用的相关重要协议http协议 TCP协议 DNS协议二、各协议的作用HTTP 针对目标web服务器生成HTTP请求报文TCP 为了方便通信,将HTTP请求按序号分为多个报文段,把每个报文段可靠的传送给对方。IP 搜索对方IP地址,一边中转一边传送TCP 接受报文段,并按原来的顺序重组请求报文HTTP 对web服务器请求的内容进行处理...

2018-08-01 15:47:40 303

转载 new和delete的用法(摘自百度知道)

 对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。   new和delete运算符是用于动态分配和撤销内存的运算符。   一、new用法   1.开辟单变量地址空间   使用new运算符时必须已知数据类型,new运算符...

2018-07-22 17:26:10 182

原创 继承

继承成员访问限定符有:public(公有)private(私有)protected(保护)对应的继承有三种关系:public(公有继承)private(私有继承)protected(保护继承)继承是一种复用手段。三种继承关系下基类成员的在派生类的访问关系变化 总结: 1. 基类的私有成员在派生类中是不能被访问的,如果一些基类成员不想被基类对...

2018-07-19 17:22:38 166

原创 计算机网络知识点总结

一、选择题(15 * 2’) 二、名词解释(5 * 4’) 三、简答题(4 * 5’) 四、计算题(3 * 10’)第一章计算机网络的两项主要技术是通信技术和计算机技术计算机网络的定义 以实现远程通信为目的,一些互联的、独立自治的计算机的集合。计算机网络的分类 根据不同的拓扑结构:星型、树状、总线形、环形、网格形 根据不同的覆盖范围:互联网...

2018-07-11 08:29:33 892

原创 物联网技术与应用知识点总结

什么是物联网?有什么基本特点? 物联网就是通过各种信息传感设备,如传感器,射频识别技术等装置与技术,实时监测任何需要监控、连接、互动的物体或过程,采集其声、光、电、热、力学、化学、生物等需要的信息,与互联网结合形成一个巨大的网络。基本特点: - 全面感知 利用RFID、传感器、二维码等各种感知设备随时随地的采集各种动态对象的信息,全面感知世界。 - 可靠传送 利...

2018-07-07 20:06:27 6159

原创 指针和引用

首先我们来介绍一下什么是引用: - 引用 引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。定义的格式: 类型 &引用变量名 = 已定义过的变量名void TestReferencl() { int a = 1; int b = a; cout<<"a:address->"<<&a&...

2018-07-07 00:27:53 144

原创 C++复习笔记(一)

c++学习笔记c和c++ 的联系。c几乎是c++的一个子集,c支持的语法在c++中基本都支。cplusplus,在c语言的基础上又有了许多新的特性。C++的关键字 asm do if return typedef auto double inline short typeid bool dynamic_cast...

2018-07-02 16:27:35 223

原创 传感器网络知识点总结

传感器网络复习第一章WSN的定义: 无线传感器网络是大量静止或移动的传感器以自组织和多跳的方式构成的无线网络。无线传感网络负责实现数据采集、处理和传输三种功能。WSN系统的组成 每个传感器节点由 数据采集模块(传感器、A\D转换模块)、数据处理和控制模块(微控制器、存储器)、通信模块(无线收发器)和供电模块(电池、DC/DC能量转换)等组成。...

2018-06-29 00:07:19 3141

原创 海量数据的问题思考

海量数据处理的问题给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址(hash文件切分) 思路:首先,我们知道100G的文件一定不可能一次加载到内存里进行处理,所以我们考虑利用哈希切分的方法,将ip地址相同的放入同一个文件夹中。具体做法就是,我们通过哈希函数计算大文件中的每一个数据的哈希地址,将哈希地址相同的数据存放到同一个地方,所...

2018-06-29 00:06:20 138

原创 http错误码

get、post 区别:带不带参数不同包括“ ?”一定带参,?之前表示请求的资源,之后表示参数。一定用cgi请求形式.错误码:2xx204:请求被处理,但是没资源206:支持断点续传3xx301:永久性重定向。 需要进行书签引用的变更<=====>资源的URI已经更新,你也更新下你的书签吧 302:临时重定向 307...

2018-06-29 00:04:22 227

原创 哈希表开散列与闭散列的实现代码

闭散列hash1.c#include "hash1.h"#include <stdio.h>#include <stddef.h>void HashInit(HashTable* ht, HashFunc hash_func){ if(ht == NULL){ return; } ht->size = 0;...

2018-06-29 00:02:39 292

原创 安卓常见知识点总结(持续更新)

安卓复习第一章:安卓概述windows7不属于移动操作系统java虚拟机JVM不属于安卓平台的技术架构activity通常就是一个单独的屏幕第二章:活动(activity)Activity具有生命周期: 1. 激活或运行状态:此时的activity运行在屏幕的前台。 2. 暂停状态:此时activity失去焦点但仍对用户可见。 3. 停止状态:此时activi...

2018-06-29 00:00:45 2722

原创 hash表的具体实现

闭散列hash1.c#include "hash1.h"#include <stdio.h>#include <stddef.h>void HashInit(HashTable* ht, HashFunc hash_func){ if(ht == NULL){ return; } ht->size = 0;...

2018-06-11 16:25:05 211

原创 哈希表的简单介绍

哈希表的概念 哈希表(Hash Table)也叫散列表,是根据键码值(key value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找速度。这个映射函数就叫做散列函数,存放记录的数组的散列表。哈希表查找的时间复杂度 哈希表存储的是键值对,其查找的时间复杂度与元素数量的多少无关,哈希表在查找元素的时候通过计算哈希码值来定位元素的位...

2018-06-11 16:24:08 453

原创 排序算法(二)

### 排序算法(二)```c///////////////////////////////////////////////////////////////归并排序(递归)//时间复杂度:O(N * logN)//空间复杂度:O(N)//稳定性:稳定排序////////////////////////////////////////////////////////////void...

2018-05-28 21:31:16 162

原创 排序算法

稳定性:排序之后,相同排序码一样的和排序之前顺序一样。 #include <stdio.h>#include <stdint.h>///////////////////////////////////////////////////////////////冒泡排序//时间复杂度:O(N ^ 2)//空间复杂度:O(1)//稳定性:稳定排序/////...

2018-05-26 10:54:26 150

原创 哈希表变形 -- 位图

位图位图可以表示数字存在与否 布隆过滤器可以表示字符串存在与否#pragma once#include <stdint.h>typedef struct Bitmap{ uint64_t* data; uint64_t capacity;} Bitmap;int BitmapTest(Bitmap* bm, uint64_t index);...

2018-05-21 21:34:32 178

原创 布隆过滤器课堂代码

bloom.h#pragma once#include "bitmap.h"#define BloomHashCount 2typedef uint64_t (*BloomHash)(const char*);typedef struct BloomFilter{ Bitmap bm; BloomHash bloom_hash[BloomHashCount];}...

2018-05-21 21:32:56 1028

原创 哈希表笔记

MD5: - 不管字符串多大,生成的MD5长度都是16或32位。 - 几乎不可逆 - 字符串改变,MD5变化很大typedef enum{ Empty;//空状态 Valid;//有效状态 Deleted //被删除的状态} Stat;//哈希表存储的是 键值对typedef int KeyType;typedef int CalType;ty...

2018-05-18 20:23:59 168

原创 线程控制

线程控制POSIX线程库 与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的 要使用这些库函数,要引入头文件 pthread.h 链接这些线程函数库时要使用编译器命令“-lpthread” 选项 创建线程:int pthread_create(pthread_t* thread, const pthread_attr...

2018-05-01 21:48:05 137

原创 来来来,线程基本概念了解一下~~~

线程的概念那么什么是线程呢? 百度百科是这样介绍的: 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进...

2018-05-01 19:48:33 145

多线程http服务器实现流程图

基于c语言以及多线程的http服务器×(web服务器)的实现过程

2018-08-10

空空如也

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

TA关注的人

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