- 博客(251)
- 资源 (1)
- 收藏
- 关注

原创 如何保证申请内存的地址是4的倍数
前两天遇到了一个需求: 是每次申请一块内存空间 需要的首地址必须要是4的倍数 于是瞬间就想到了这不是就是在应用层重新封装一下malloc 和free 嘛,或者你自己实现一个应用层的内存池自己来管理内存空间的地址分配,等等 实现方法很多,使用者的需求就是只要我申请到的空间我可以使用并且给我返回的首地址必须是4的倍数,于是c语言的结构体内存对齐,以及malloc和free的实现...
2017-12-03 14:53:37
2120

原创 使用protobuff 进行网络序列化和反序列传输实例
首先我认为这个文章的读者应该是已经知道protobuff 是什么东西 该怎么用,为什么用,也就是 what how why。如果你真的不知道,可以先去搜索引擎上读几篇他的介绍,如果可以翻墙去谷歌上读读英文文章更好。了解完protobuff后下来我就来点干货,也就是protobuff在网络传输中序列化和反序列的使用。虽然是一个很简单的例子,但是希望你可以从中找到入门开始使用protobuff的
2017-03-15 17:22:54
3374

原创 微信抢红包的算法实现(C++)
目前只能实现对于整数的钱数的红包的实现,经过随机数从而实现随机人抢红包的算法/* vs 2013 wk*/#include#include#include#includeusing namespace std;//min 默认最小金额 1=0.01元//max 默认最大金额 20000 = 200 元//total 总钱数//num 总人数lo
2016-07-04 17:28:20
10449

原创 详细说说select poll epoll
(以下内容来自网络和自己的总结,再次感谢网络中的大神们提供的见解)在探索select poll epoll之前我们首先要知道什么叫多路复用:下来探索一下为什么会用到多路复用:首先我们看看一个客户端请求服务器的完整过程。首先,请求过来,要建立连接,然后再接收数据,接收数据后,再发送数据。具体到系统底层,就是读写事件,而当读写事件没有准备好时,必然不可操作,如果不用非
2016-04-24 15:42:30
2427

原创 sendfile函数如何实现零拷贝提高性能
现在流行的 web 服务器里面都提供sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢?sendfile 实际上是 Linux 2.0+ 以后的推出的一个系统调用,web 服务器可以通过调整自身的配置来决定是否利用 sendfile 这个系统调用。先来看一下不用 sendfile 的传统网络传输过程:char tmp_buf[100
2016-04-24 14:20:39
1546

原创 精简指令集和复杂指令集的区别
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。CPU架构是厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MU
2016-03-31 21:57:39
60115
3

原创 关于C++函数思考1(缺省的六大函数)
我们知道大神们在设计C++时候就给C++有六个默认的函数,所谓默认就是,无需我们这些程序员们动手去写,只要你在将类实例化,即创建一个对象,在利用对象进行数据操作时候,就会编译器自动调用默认的函数,但是默认函数并不是C++希望我们使用的,真正强大的是我们在这些默认的基础之上,自己 DIY函数来实现默认函数所不能做到的和它能做到,只有这样才能将自己的功力大增。下面是我在编写C++ 函数时候产生的一些思
2015-06-07 00:32:28
1738

原创 数据结构之 --线性表之--串
简单的实现串的操作,其实这与那些字符串库函数所用的操作思想是相同的,但是这是一种数据的存储方式,与操作,重点强调了数据的存储.下面是串的非堆存储操作,说明白就是穿类似数组的存储,在分配内存时在栈中分配:/********************************************************************** * * Copyright
2015-05-30 00:38:46
1707

原创 画链表分析图引发的思考
一直觉得IT这个行业是聪明人干的,是经常进行思考的人干的,所以对于任何问题我都会思考。而且,我发现,画图是帮助思考的仙家之水,这不是神话,你一试就知道,如果你一直坚持下去,就会感觉如同吃了太上老君的仙丹一般,对于分析任何问题都会法力大增。 另外,我觉得计算机行业就是用一种方式在描述客观世界,所以不要包学习解决计算机中的问题是脱离实际,当想不通自己如何让计算机解决问题或者弄不懂计算机是如何解
2015-05-30 00:08:52
2243
2

原创 LINUX实现简单的进度条
方法:利用数组的循环输出,是这些图形化也可以在我们的黑框中实现了 哈哈/********************************************************************** * * Copyright (c)2015,WK Studios* * Filename: progress.c* * Compiler: GCC * *
2015-05-29 23:54:19
917

原创 统计每个数字出现的次数。
题目描述:一个数组大小N,由0到N-1之间的数组组成,或重复,或不存在,请统计每个数字出现的次数。#includeusing namespace std;//借用辅助空间,不破坏原数组(空间换时间)void ParseArr(int *a, int l,int *b) { for(int i=0;i<l;++i) { b[a[i]%l]++; }}//在原数组上面进
2015-05-12 17:31:36
7483
2

原创 揭开链表逆转和排序的面纱
我们都知道,对于顺序表逆转和排序就如同数组一样,将数据改变位置就行,因为他们的数据是连续的空间存储的,但是对于链表如果你也这样只改变值进行排序,那你就太不懂链表的心了,链表的特点就是动态开辟游离的空间然后依据上一个节点所存的地址来寻找下一个节点,这样使得位置这个概念在链表里显得太不重要,所以对于链表我们如果想要逆转或者排序就是要改变每个节点里面存储的地址,通俗一点就是要改变指针的指向,于是我找到了
2015-05-05 16:19:31
979

原创 简单模仿命令行bash功能
用LINUX有一段时间了,一致在bash底下输入命令但是从来都很疑惑这个bash是如何知道我要输入的什么命令,于是用自己所学知识暂时模仿一些bash功能,后续继续完善功能。 第一次的版本:/********************************************************************** * Copyright (c)2015,WK Stu
2015-04-29 00:12:56
1507
1

原创 数据结构之—线性表之—双向链表之—浅谈双循环链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。/********************************************************************** * Copyright (c)2015,
2015-04-27 16:49:55
839

原创 数据结构之—线性表之—浅谈单链表有头结点和无头节点
有头结点的链表统一了算法的实现,无头节点减少了节点个数,但是只有根据实际情况选用真正的有无头接链表待续://代码实现待续://代码实现待续://代码实现
2015-04-26 10:45:48
7102

原创 基本的排序算法之——插入排序法(稳定)(对于固定的空间数组或者顺序表)
/********************************************************************** * Copyright (c)2015,WK Studios* Filename: * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 4 20*************
2015-04-21 19:28:50
833

原创 基本的排序算法之——选择排序法(对于固定的空间数组或者顺序表)
/********************************************************************** * Copyright (c)2015,WK Studios* Filename: * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 4 20*************
2015-04-20 09:39:27
1282

原创 浅谈指针
指针:一个用来存储数据存储地址的变量。 int a=10; a变量里面存储的数据0 1按照int 的长度解析为数据 int *p=&a; p变量里面存储的数据0 1解析为地址,只是这个地址(这个地址是这段空间的首地址)标号的那段空间里面存储的是a的值,这里的p是给这段地址的取的名字用来给程序员看的,这里的a是给这段地址里面存储内容所取得名字来给程序员看的。
2015-04-19 18:00:23
842

原创 基本的排序算法之—— 冒泡排序(稳定)(对于固定的内存空间数组或顺序表,对于单链表也可以)
/********************************************************************** * Copyright (c)2015,WK Studios* Filename: * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 4 18*************
2015-04-18 23:51:00
1046

原创 替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。输入:每个输入文件仅包含一组测试样例。对于每组测试案例,输入一行代表要处理的字符串。输出:对应每个测试案例,出经过处理后的字符串。样例输入:We Are Happy样例输出:We%2
2015-04-03 23:32:03
702

原创 判断回文串
#includeusing namespace std;#includebool isPalindromeNumber(long num){ if(num<0) return false; long temp=num; long y=0; while(temp) { y=y*10+temp%10; temp/=10; } return num==y; re
2015-04-03 16:54:30
850

原创 实现对一个数据(int)指定位置0或置1
/********************************************************************** * RightMove.cpp * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 3 29 *************************************
2015-03-29 20:54:10
1992

原创 实现字符串循环右移N位(改进版)
/********************************************************************** * RightMove.cpp * Compiler: GCC,VS,VC6.0 win32 * Author:WK ***********************************************************
2015-03-29 15:17:46
1074

原创 对一个程序的思考4(结构体内存对齐)
#include#include#pragma pack(4)int main(){ unsigned char puc[4]; struct tagPIM { unsigned char ucPim1; unsigned char ucData0 : 1; unsigned char ucData1 : 2; unsigned char ucData2 : 3;
2015-03-29 14:59:42
732

原创 对一个程序的思考3(移位操作之移动负数位)
在c 中左移也就是所说的逻辑移位,右端补0,而右移是算数移位,左端补齐的是最高位的符号位。(有的编译器可能右移也是逻辑移位,但道理是一样的),这里以右移部符号位为准。故负数左移,有可能变成正数,但负数右移,肯定还是负数。/********************************************************************** * y
2015-03-29 13:29:46
1165

原创 对一个程序的思考2(各编译器指针类型)
#includeusing namespace std;#includeint main(){ int a[3]={1,2,3}; cout<<sizeof(a)<<'\n' <<typeid(a).name()<<'\n' <<sizeof(&a)<<'\n' <<typeid(&a).name()<<'\n';return 0;}首先
2015-03-28 00:06:04
615

原创 奇妙的字符串
面对字符串是我们最关系的就是字符串的长度(用strlen())与它所占的字节数(用sizeof())也就是大小,下来我们就讨论一下 /* 一般我们初始化字符串的几种方式char a1[]="1234";char *a2="1234";char a3[10]="1234";char a4[]={'1','2','3','4'};char a5[]={'1','2','3',
2015-03-26 22:38:05
690

原创 实现字符串循环右移n 位与左移n位(不建立数组,直接用指针)
编写一个函数,作用是把一个 char 组成的字符串循环右移 n 个。比如原来是“abcdefghi”如果 n=2,移位后应该是“hiabcdefgh”左移n个比如原来是“abcdefghi”如果 n=2,移位后应该是“cdefghiab” 函数头是这样的: //pStr 是指向以'\0'结尾的字符串的指针 //steps 是要求移动的 n
2015-03-24 19:41:05
2296

原创 浅谈汉诺塔问题
对于任何一种问题的解决我们必须先找到解决的方法,才能开始去做,堆与写程序也是如此 对于汉诺塔问题,我首先不去想有n个盘子需要移动,我只从最小的1,2,3 个盘子进行分析,如下图 1.当只有一个盘子是只需要把A柱子上的盘子移动到C柱子上2.当有两个盘子的时候,就需要借助B把A中的盘子移动到C中3.当有三个盘子的时候,我们只要把A中上边两个移动到B上在把A中最下边的移
2015-03-23 09:33:10
939

转载 原码一位乘法与补码一位乘法
补码1位乘法原码乘法的主要问题是符号位不能参加运算,单独用一个异或门产生乘积的符号位。故自然提出能否让符号数字化后也参加乘法运算,补码乘法就可以实现符号位直接参加运算。为了得到补码一位乘法的规律,先从补码和真值的转换公式开始讨论。1. 补码与真值的转换公式设 [x]补 = x0 . x1x2…xn ,有: n
2015-03-16 16:57:48
84691
11
原创 读书-《穷查理宝典》
屁股决定脑袋原理并不是牛人的观点就一定可信,得判断背后的激励机制(动机)和他本人的知识结构,辩证看待世界是多维度的。逆向思考原理查理教人变穷的演讲a.变穷法则第一条:不要专注的做你正在做的事情(一心多用)b.变穷法则第二条:尽可能只从自己的经历积累知识,不去了解古今中外牛人的思想c.变穷法则第三条:当遭遇重大挫折的时候,意志消沉一蹶不振核心能力圈(专注):只有偏执狂才能生存(Intel总裁 安迪.格鲁夫著作)
2022-12-23 16:52:40
1850
1
转载 程序员如何成为自由职业者?
随着互联网技术的高速发展,近几年,倾向于成为自由职业的专业人士正在逐渐增多。这其中,以编程技术为手艺,月薪高、时薪却并不高的程序员群体,对自由职业似乎更为向往。因而远程办公、跨国编程、接私活等现象在程序员圈已不是什么稀奇事儿。在我们过去接触过的用户中,也不乏从事过自由职业、或以「成为一名自由职业者」为职场目标的程序员。那么,什么样的程序员适合做自由职业者?自由职业者,具体可以做哪些工作...
2019-03-03 18:17:36
6911
1
原创 一些有用的,有趣的搜索技巧
在常见的搜索引擎中搜索时候加上下面的关键字: 例如搜索所有以登陆作为网页开头的页面,就可以采用下面的方式:intitle:登陆 进行搜索,这样搜索到的所有html页面的title字段中都是登陆inurl:?php 同理,搜索到的所有页面的url中都会包含?phpfiletye:pdf python 这样你搜到所有文件都...
2018-01-28 21:50:21
689
转载 那些C++牛人的博客
整理收集C++世界里那些“牛人”的个人博客。凡三类:一是令人高山仰止的大牛,对C++语言本身产生过深远的影响的人;二是C++运用炉火纯青的高手,有原创性的技术干货;三是中文世界里的C++牛人。C++大牛的博客Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bj
2018-01-18 10:25:22
1519
转载 redis持久化那些事(kēng)
这是一篇包含了介绍性质和吐槽性质的日志。主要介绍一下我学习redis持久化时候被坑的经历。redis的使用介绍现在没有打算写,因为比较多,以我如此懒的性格。。。好吧,还是有点这方面想法的,不过一篇博客肯定是写不下,要写的话以后慢慢写出一个系列来。今天先说序列化。首先,我们都知道redis是个内存数据库,也就是所有数据都放在内存中的。那么如果进程挂掉了,或者系统重启的时候,内存就会清理掉了。为了保住...
2017-10-25 16:41:43
452
原创 protobuf 序列化 反序列接口
上次说过一次protobuf http://blog.youkuaiyun.com/kai8wei/article/details/62230878 这次想说一点稍微复杂的但是十分常用的protobuf操作 这里主要介绍一些 protobuf常见的序列化接口 包括 C数组序列化与反序列化 ,文件描述符序列化与发序列化 ,string类的序列化与反序列化 ,C++ stream 序列化和反序
2017-10-24 16:56:14
6641
转载 进程的同步 异步 IO的阻塞 非阻塞
转载 from http://yaocoder.blog.51cto.com/2668309/1308899一讲到网络编程的I/O模型,总会涉及到这几个概念。问了很多人,没几个能清晰地讲出他们之间的区别联系,甚至在网络上也有很多不同的观点,也不知是中国文字释义的博大精深,还是本来这几个概念就是绕人不倦。今天我也来给大家讲解一下我对这几个概念的理解。既然网络上众说纷纭,不如找
2017-10-22 20:13:24
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人