- 博客(41)
- 收藏
- 关注
原创 redis 使用到的位域
redis 使用到的位域今天在看redis源码的时候在3.0版本的redis.h 文件中发现了这样的几行代码,看了有趣,研究了一番,才发现这个东西就是c语言中的位域。/* * redisObject Redis对象 */ typedef struct redisObject { unsigned type : 4; // 类型 unsigned encoding : 4; //...
2019-01-20 21:32:19
705
原创 触发connect超时事件
触发connect超时事件有关于如何触发connect超时事件,之前相当然的认为在服务器程序accpet函数前阻塞一段事件就好了,这个思路是完全错误的!这是我犯了的一个错误,没有严格的验证自己的程序就将其发布了出来,被小组的小伙伴提问时才发现了这个问题,在这里深表歉意!!!同时也非常感谢我的哪位小伙伴!下边是那篇文章,现已更正。高性能定时器(一)代码还是以前的代码#include &...
2019-01-18 22:51:24
542
原创 彻底理解mmap()
彻底理解mmap()最近起的标题总是这么标题党!什么是 mmap()mmap, 从函数名就可以看出来这是memory map, 即地址的映射, 是一种内存映射文件的方法, (其他的还有mmap()系统调用,Posix共享内存,以及系统V共享内存,这些我们有机会在后续的文章讨论,今天的男主角是mmap),将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟...
2019-01-17 22:51:27
47487
10
原创 进程池
进程池进程池的使用场景当我们需要并行的处理大规模任务的时候,需要使用到多进程,多线程技术,比如说服务器处理大量客户端的任务,我在大一的时候写过一个C/S+mysql架构的聊天室,大概是这样处理的,每当有客户端发出连接请求时,服务器accept成功以后就去fork一个进程去处理关于这个客户端的所有请求,经过后来的一系列的学习,这显然是极其不科学的,狂开进程浪费资源且不说,效率也极低。动态创建...
2019-01-03 10:46:49
357
原创 彻底理解 fork 之写时复制 《一》
彻底理解fork之写时复制<一>一直以来都对操作系统都比较感兴趣,这篇文章呢就主要研究一下当我们调用fork系统掉用所用到的写时复制技术(copy-on-write)。下图是fork系列函数的调用过程<摘自网络 侵删>写时复制,其实在很多地方都会用到,我们先来看看关于字符串使用写时复制的例子吧。 写时拷贝故名思意:是在写的时候(即改变字符串的时候)才会真正的开辟...
2018-12-29 11:31:33
3306
原创 高性能定时器(一)
高性能定时器(一)先来三句口号我们通常所说的定时器是定时器容器,是容器类数据结构。定时器是容器内容纳的一个对象,是对定时器的封装。我们通常所说的定时器是定时器容器,是容器类数据结构。定时器是容器内容纳的一个对象,是对定时器的封装。我们通常所说的定时器是定时器容器,是容器类数据结构。定时器是容器内容纳的一个对象,是对定时器的封装。前几日学习了一下定时器首先吐槽一下,最近学的东西...
2018-12-26 23:03:01
702
原创 统一事件源的实现
统一事件源的实现我们在编写高性能服务器的代码时,通常会需要处理很多的信号,如下所示时间事件信号数据读数据写网络异常为了程序的性能,鲁棒以及代码的优化,通常会将所有的这些需要处理的任务包装成事件添加至多路复用函数的事件集中处理。一般信号处理时会将一些信号屏蔽,为了不屏蔽这些信号太久,同时也不至于主逻辑被冲散,一种解决方案是:信号处理函数只是简单的通知主循环(用于处理I/O事件)并...
2018-12-18 21:16:11
688
1
原创 关于用指针交换两个数
关于用指针交换两个数西邮Linux 兴趣小组又到了纳新季,作为一个老学长,面试学弟学妹们的时候,必然要然他们感受到小组的关怀(受尽折磨),这一届孩子还是挺强的,但是一到指针上就栽了坑,在加上我们小组的陈年老题swap屡试不爽。所以在这里总结一下关于用一级 二级指针交换两个数字的问题。一级指针交换#include<stdio.h>int swap(int *c , int *...
2018-12-14 12:08:30
8614
3
原创 源代码到可执行文件之旅
你写的源代码是如何一步一步变化可执行文件的昨天看了 <<深入理解计算机系统>> 这本神书 “CSAPP” , 初看第一章漫游部分就让人大乎过瘾,其中提到了如何源代码是如何从文本文件编程可执行的二进制文件,整个章节是从软件以及硬件两个层面分别解析的。那么接下来我先从软件层面来解释一下其中步骤。正常情况下是这样的 gcc -o hello hello.c在这里,gc...
2018-12-12 17:31:14
349
原创 Redis源码阅读笔记 ----数据结构部分 sds
壹、sds(SDS)Simple Dynamic String, 从字面意思上来简单理解就是简单的动态字符,其为具有动态增加空间的能力,扩容不需要使用者担心。好的咱们来看一下他的数据结构吧这个版本是黄所注释的3.0版本typedef char *sds; //注意,sds其实不是一个结构体类型,而是被typedef的char*,好处见下文struct sdshdr { ...
2018-12-12 10:44:08
300
原创 Fix some issue
August 6, 2018Fix some issue#18 Fix crash when users serach last 3 days logbug trackerThread 1 "gnome-logs" received signal SIGSEGV, Segmentation fault.0x00007ffff595f5b4 in g_date_time_to...
2018-08-12 12:27:36
392
原创 Dispaly the new row entry !!!
July 29, 2018Dispaly the new row entry !!!During GUADEC, my mentors told me that I needed to complete the project before ui freeze. It took only two weeks to calculate the time. So I dare not st...
2018-08-10 20:03:04
327
1
原创 Really Get Correct log entries from journal! && GUADEC
Really Get Correct log entries from journal! && GUADECJuly, 10, 2018The most memorable thing about this period is to participate in GUADEC–2018. Since there will be a blog dedicated to wha...
2018-08-08 17:48:25
428
原创 Recieve new log messages in gl-journal-model.c
For the past two weeks, according to my previous plan, I made progress in the gl-journal-model.c file. In this place, I set up a function that receives the signal and a function that processes the sig...
2018-08-06 20:29:05
336
原创 Passed the First Evaluations
Passed the First Evaluations I was very fortunate that I passed the First Evaluations and I got the first internship salary in my life. I am very grateful to my two mentor. They have given me a lot ...
2018-07-25 14:49:27
327
原创 A new start
A new start Because I have been looking for shortcuts to deal with the problem, I have delayed a lot of time, but it is a bit of a harvest.Recently, I talked with my tutors about many solutions to ...
2018-07-23 17:43:44
630
原创 GUADEC-2018
GUADEC2018 I remembered the day when I leave from Xi’an, the rain was very heavy. I remembered that every time I went out to the door this year, I started on a rainy day, but the rain of that day was...
2018-07-21 22:21:11
302
原创 I am getting closer to success.
In the past two weeks, I found that when I switched the category, I found that the log messages were automatically organized and displayed perfectly in the model. I was very happy about this, so I wa...
2018-07-21 18:06:03
328
原创 Start coding
It’s time to show my code. a word , talk is cheap, show me your code . Happily I have to start writing code, I am looking forward to it, facing my project, GNOME-LOGS. This is a cool program. Logs...
2018-07-21 17:47:10
290
原创 ENJOY community binding
During the community binding period. I got an exciting news, that is, as an intern, we can go to GUADEC. The GUADEC, the GNOME Users And Developers European Conference, is an annual conference ...
2018-07-21 16:53:56
339
原创 The First two weeks
The First two weeks I was very fortunate, and the three months of hard work finally came to fruition. Yes, I successfully applied for GSoC-2018. I remember that I was sleeping late that night when...
2018-07-21 16:30:18
429
原创 实现一个string 类
实现一个string 类/*************************************************************************> File Name: my_String.cpp> Author: 刘怪怪> Mail: > Created Time: 2017年12月18日 星期一 09时51分40秒*****************
2018-01-09 14:49:53
292
原创 2017数据结构课设--图
2017数据结构课设关于课设,格式上就不像课设报告写得那么详实了.这里就重点回想一下,自己在课设中遇到的问题以及一些感想了. 题目 :这是一个关于图及图相关算法的程序,我给他起得名字叫.简介: 实现最短路径(dijkstra),两点间最少转折数(BFS),两点间所有路径(DFS).技术点:使用数据库(没能实现数据库类的封装),vector容器做邻接矩阵,系统
2018-01-09 14:40:25
1250
原创 有关C++中的常对象,常成员函数
先明确几个概念:常对象只能调用常成员函数。普通对象可以调用全部成员函数。当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 在C++中,this指针被隐含地声明为: X *const this,这意味着不能
2017-12-21 21:37:47
474
转载 一个函数名后面加const表示什么意思
const用在成员函数后 主要是针对类的const 对象 如: class Text{ public: void printconst(void)const{cout void print(void){cout private: int k;
2017-12-18 20:01:14
3356
转载 c++ assert() 使用方法
还记得__LINE__这个东西吗?debug的利器 这个assert呢,跟其效果差不多的。 assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息
2017-12-14 16:28:24
373
原创 c++实现简简简化版的vector
最近终于完成了,用c++实现的一个小小小东西,简简简化版的vector,用了好多类的东西,写完之后感觉之前好多不明白的东西,都有了一些新的理解。 借此机会,我想回顾一些小知识点:new 和 delete、new[] 和 delete[] 对应使用,链接。列表初始化 有const时要注意。运算符重载成员函数重载push_back().引用 冒号与双冒号下边就是代码了/*******
2017-12-13 12:10:33
493
原创 图的遍历(DFS)
做了简单版的用dfs来遍历整个图 /*************************************************************** File Name: deep_search.cpp Author: Mail: Created Time: 2017年12月03日 星期日 19时20分12秒 ********************
2017-12-03 20:03:49
281
原创 堆(数组实现)
今天学了一下堆,用数组写的,贴出来。 /************************************************************************* > File Name: 堆.cpp > Author: 刘怪怪 > Mail: > Created Time: 2017年11月30日 星期四 22时21分19秒 *****
2017-11-30 23:14:16
1686
原创 统计一个二叉树的每一层 节点个数(队列,递归)
今天遇到一个问题就是利用队列求解二叉树的某一层的节点个数,乍一看感觉蛮简单,一上手让我有点头凉凉。首先要解决的问题就是如何在队列中用标志来对二叉树进行分层,脑子里虽然有个大概的思路,弄几个循环,再来几个变量控制,也忒麻烦了。找了下博客也没看懂多少,高乐高还是给整出来了。思路如下。 emmmmm,我们不知道如何解决层的问题,再细分就是需要知道某一层有多少个,也就间接解决了层的问题。有
2017-11-28 22:51:10
10677
7
原创 哈弗曼编码(链表)
终于完成了初版的链表版 哈弗曼编码 效果如下 /*************************************************************************> File Name: huff.c> Author:刘嘉辉 > Mail: > Created Time: 2017年11月20日 星期一 21时11分48秒***************
2017-11-23 21:40:36
435
1
原创 C++ 之标准库类型—— vector 容器
C++ 之标准库类型—— vector 容器标准库类型vector表示对象的集合,其中所有对象的的类型都相同。集合中的每对象都有一个与之对应的索引,索引用于访问对象。因为 vector “容纳”着其他对象,所以他也常被称为容器(container). 注意需要有包含有头文件,如果做上了using 就更好了,如下:#incldue<vector>using std::vector;说实话,一开始的
2017-11-06 15:35:23
488
1
原创 KMP算法的实现
KMP算法的实现假如你急着要跟MM急着约会,抱团取暖,就直接调到下面看吧,我爱啰嗦,全部看完的话,我怕你会忍不住想打我。 kmp算法又称“看毛片”算法,但我作为跟根正苗红的社会主义接班人, 外加吃货属性 ,所以我还是偏向叫它“烤馍片”算法,此算法是一个效率非常高的字符串匹配算法。比之bf暴力其实在某些情况下也没高到哪里去的啦。 KMP是三位大牛:D.E.Knuth、J.H.Morris和V
2017-10-10 18:01:13
1336
1
原创 LINUX_C 线程总结(二)
LINUX_C 线程总结(二)话不多说,我们先来看一段代码/************************************************************************* > File Name: condition.c > Author:九五二七 > Mail: > Created Time: 2017年08月02日 星期三
2017-08-05 11:13:55
316
原创 LINUX_C 线程总结(一)
LINUX_C 线程总结(一) 首先来说说我所理解的线程: 但是谈线程又不得不得提一下进程,程序,这三者的联系 或许弄清楚这三种的联系之后,我们或许能够更好的来对这些系统级的实体有一个更加深刻的认知。程序,进程,线程这三者之间的关系?简单来说,一程序可以调用多个进程,比如一个视频播放器程序,里面就存在两个进程:一个是播放视频的进程,一个是下载上传视频的进程。 一个进程又同时调用
2017-08-05 10:54:06
405
原创 dup和dup2
dup和dup2最近写那个 myshell 需要用到多管道 以及重定向方面的知识,实现过程中 其中避不开的一个函数就是我的标题dup 与dup2 它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin(0)、stdout(1)和stderr(2)。 函数原型#include <unistd.h> int dup( int oldfd ); int dup2( in
2017-07-30 18:13:34
350
原创 进程总结
进程相关基本概念僵尸进程 : 一个进程使用fork创建子进程,如果子进程退出, 而父进程没有调用wait或waitpid来获取子进程的状态信息,那么子进程的状态描述符依然-保存在系统中,这种进程被称为僵尸进程(用个形象而重口的解释就是:子进程突然挂掉了,他爸还不来管,魂魄(子进程的状态描述符)游离于系统中,无人超度,占用天地灵气(进程号),最后导致成为僵尸)。孤儿进程 : 父进程已经退出,而一
2017-07-30 17:43:41
542
原创 文件操作(一)
第六章文件操作总结 首先 看书学到的一个字节觉得特别有用的找bug的方法c /自定义的错误处理函数/void my_err(const char * err_string, int line) { fprintf(stderr,”line: %d”, line); //调用是这样,my_err(“err_string”,LINE); LINE为预编译器内置宏获取行号
2017-07-24 21:56:35
481
原创 代码移植问题
windows下的代码向linux平台移植的问题 经常有人发现自己在windows下写的代码到了linux下不能跑,这种清楚除了一些常见的库函数不支外, 其实更加坑的是发下连正常的显示都不可以了,让人头疼无比。终于不负有心人,经过查询发现了一种>方法可以解决掉这个问题方法如下安装所需软件 $ sudo apt-get install zh-autoconvert $ sudo
2017-07-17 21:04:20
461
原创 linux 下一些比较有趣的命令
linux 下一些比较有趣的命令在过去几周刚刚完成的 TTMS 课设中,为避免自己的程序效果千篇一律,为增强视觉上的用户体验,我同意特意在网上找了几个比较有趣的命令,拿出来和大家分享一下。 先来一个经典小火车吧 安装如下 sudo apt-get install sl ( LS 也可以 ) 运行直接就 sl 就 OK了 这个还有要说的一点就是 由于这个命令和 ls
2017-07-17 20:43:44
732
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人