自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 gdb学习笔记

gdb a.out -q 减少免责输出gdb 中c(continue)是在断点间跳跃的意思通过修改配置文件/proc/sys/kernel/core_pattern可以配置core文件的位置和命名格式,通过gdb ./a.out core-a.out-4879-1606749459可以调试core程序,可以看到程序崩掉的位置,#0 0x0000564a73ae3129 in main () at test1.c:6在gdb中file ./a.out可以读入可执行文件gdb --args ./a.o.

2020-12-02 20:12:45 384 3

原创 build my own sqlite

多级缓存b树缓存未击中

2020-11-10 14:45:05 195

原创 github 3.7k star c++线程池简析

github链接在学习多线程的时候必不可少的一个知识点就是线程池,在web服务器中我们就常常会遇见它。在c++中没有标准的线程池,但这个轮子其实早就被大牛们造好了,现在我们就来看看这个github高星线程池的实现。workerstasks线程vector(消费者)任务队列(生产者)接口ThreadPool(size_t);enqueue(F &&f, Args &&… args);~ThreadPool();用户通过enqueue

2020-11-03 20:47:06 2079

原创 为了1024小勋章,我写了一篇博客

哈哈哈哈哈,今天水一篇博客。最近几天其实学的东西也比较难,c++ std::future那些东西还没有代码写一遍,没有记录的必要。至于muduo更是搁置在一旁的,py倒是看了好多,过了几本书,但还是很不够,有些类魔法语法还是没看多少,今天也才刚知道@修饰器的玩法,可能cookbook上有,但我还没看到。可能是因为py太香,好多成型的库,眼花缭乱,暂时学的库的知识比语法要多得多,但也不扎实,仅仅玩过。过段时间再系统学c++叭我想,花过多时间学py还是不太靠谱,我也还没有写c++项目,比如重要的webserve

2020-10-24 19:42:54 1245 7

原创 真香!终于知道怎么解决c++死锁了

死锁在写c/c++的过程中遇到死锁常常会让我们手无足错,因为死锁往往不像其他类型的错误一样会在终端直接打印报错,因此难以被发现并需要大量精力去排错。是时候思考,该如何防范或者避免死锁。死锁场景1在类里面或者全局无意识的使用过多的锁,并在函数中调用这些锁的时候未注意到锁的次序。如一个线程执行函数fun1时锁的顺序是A->B->C,另一个线程执行fun2时锁的顺序是C->B->A ,除非能保证fun1,fun2不会同时执行,否则及其容易发生死锁。解决途径1如果使用

2020-10-18 11:51:17 1847 2

原创 双检查锁的错误

为了减小锁的粒度,先人创造了双检查锁。双检查锁的缺点或者说错误是什么?void undefined_behaviour_with_double_checked_locking(){ if(!resource_ptr) // 1 { std::lock_guard<std::mutex> lk(resource_mutex); if(!resource_ptr) // 2 { resource_ptr.reset(new some_resour

2020-10-17 16:35:53 134 2

转载 Clion编译,运行单个cpp文件

之前一直用终端g++ ./a.out经查阅:clion的Extend Tools里加上并配置俩小按钮就ok了linux下这些${FileDir}$也没有什么不同我多加了一个常用的-lpthread来动态链接线程库,暂时也就这个用的多然好给这俩小按钮设置个keymap快捷键,然后真的可以跑了!我设置为alt+P 和alt+J...

2020-10-14 17:20:17 1304 5

原创 python 使用BeautifulSoup爬取CSDN博客(1)

最近刚好学py,刚好小组的群博好久没更新了便想拿py来试试水通过右上角打开rss订阅 其中有很多是你之前的博客,但不是全部,这里我大概40篇博客它仅仅更新了10多篇接下来将这个rss的url 通过py脚本获取其中带<a><href="https://blog.csdn.net/adlatereturn/article/details/108889759"></a>的标签,这并不难,需要注意的是需要 BeautifulSoup(html, ‘lxml’),

2020-10-12 21:48:57 164

原创 ubuntu下mysql密码失效解决的正确方式

之前一直用免密码登录 ???????? ????,今天再次找方法去修改密码,但网上方法一直失效,直到找到这篇,blogmysql> update mysql.user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';其实就比网上多一步操作,update mysql.user中 修改plugin='mysql_native_password'就完事了,否则将

2020-09-30 20:07:18 304

原创 std::forward备忘录

尽管每次都觉得自己懂了std::move和std::forward,但每隔一段时间拿出来一翻又会画上自己一段时间思考,索性写篇博文,证明自己是会的(just forget)std::forward的使用需求:exec(fun f, a tmpa, b tmpb下图1的exec模板函数传入a,b类型对象的拷贝(虽说此处传入int),效率低.下图2的exec模板函数传入a,b类型对象的左值引用(虽说此处传入int)不可直接传6这种右值.下图3当 tmp的参数是右值引用时,由于exec中的tmpb是左值

2020-09-22 15:46:41 209

原创 对LinYaCool WebServer 的学习(仿muduo)(http)

怎么说呢,又看了一个模仿moduo的server,不过之前那个mini-muduo是echo服务器,这个是http服务器,思想都差不多,在并发模型上这个服务器使用的是Reactor +线程池 ,每个连接子线程也是一个Reactor,这也是我第一次看到这种模型的实现,它相对mini-muduo的优点还有它使用了智能指针来避免内存泄漏,这的确增大了编程的难度,但其保证内存不泄漏的确是程序员格外需要去注意的地方.大致有这些类Server(入口类,其中包含了Accptor 用来处理连接事件)Channel (

2020-09-10 14:00:06 1775 1

原创 对别人写的mini-muduo的学习

之前想学muduo 但因为一些原因,暂时编译不过,碰巧看到一个博主是模仿着muduo写的mini-muduo,看了看觉得挺好,仅仅实现Echo服务器,从最简单的epoll模型开始到反应堆+多线程,为了简洁没有使用智能指针(它也提示了会内存泄漏),部分有bug,但依旧是一个很好的学习对象。本文就最后的 反应堆+多线程模型作一下分析。(原文分成了13小节)main.cpp#include "TcpServer.h"#include "EventLoop.h"#include "EchoServer.h"

2020-09-02 18:28:52 367

原创 c++网络五子棋Linux版

这次写的是一个网络版五子棋怎么说的,这次的cpp文件文件比较多,我就贴个github代码吧github编译主要看 makefile里那几个文件实现了 登录 匹配下棋。服务器用了 epoll+线程池(模仿《linux高性能编程写的》)但这次的教训就是这个棋局的主体业务逻辑应该放在服务器(我写在客户端由客户端判断棋局是否结束),而且线程池处理也是计算密集型任务,在这种俩个用户并非同时下棋的程序中可以不用。更何况放在客户端的业务逻辑可以伪造的,这样服务器就可能收到伪造的数据。给大家看下效果:经验:

2020-08-17 00:49:54 464 2

原创 EffectiveC++学习笔记

编译器不检查虚函数的各类属性:pub,pro,pri。统一放于虚函数表继承属性只能改变子类继承下来的元素在子类中的属性,而即使是pri继承子类同样可以访问基类继承下来的prompub属性成员析构的异常处理1:try catch record abort ,2:close +flag + try catch基类析构,构造别用子类的虚函数(会被解释为基类的虚函数),可以通过子类静态非虚类函数构造基类operator= 自赋值 return *this,new temp/copy-and-swapco.

2020-08-02 22:43:41 207

原创 linux 小工具

可用来检验内存泄漏出处valgrind --tool=memcheck --leak-check=full ./testadl@adl:~/桌面/json-tutorial/tutorial03/images$ valgrind ./leptjson_test --leak-check=full==7458== Memcheck, a memory error detector==7458== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Se

2020-08-02 22:41:03 175 2

原创 mychatroom聊天室坑点简要分析

需求[服务器日志]emm,这个我就直接把服务器标准输出和错误重定向到文件里,由于函数太多,并没有在每个函数都去打印一句。主要要设置无缓冲 setbuf(stdout,NULL); setbuf(stderr,NULL);主服务器流程main注册服务器日志初始化套接字,epoll收取客户消息主客户端流程mainB初始化套接字登录注册退出找回密码 重新设置密码欢迎界面...

2020-07-27 17:56:23 411

原创 linux 定时器(c++)(2)时间轮

节点类相比较时间升序链表中的绝对时间expiretw_timer采用的是相对时间的概念也就多出rotation ,time_slot俩属性,rotation是转的“圈数”,time_slot是转到时间轮的哪一块区域。好比现在在1:05,过了65分钟时针走了闹钟的1rotation并走到10 time_slot;tw_timer.h//// Created by adl on 2020/7/22.//#ifndef TEST2_TW_TIMER_H#define TEST2_TW_TIME

2020-07-26 13:23:50 451

原创 linux 定时器(c++)时间升序链表

刚好前两天学长给我们讲座中提到服务器客户的超时处理,刚好又在看《高性能linx服务器编程》有发现这方面的知识,就拿出来总结一下。第一,我们为什么需要自制计时器,c++ /c 的alarm不是可以实现定时操作吗,还有sleep…???linux下一个进程共享一个alarm闹钟定时器,然而服务器肯定是多用户的,我们肯定得想方法给每个客户整一个定时器升序时间链表util_timer类代表着每一个节点,利用time()存储绝对时间,client_data是用户的数据util_timer.h//// C

2020-07-25 23:02:19 451

原创 俄罗斯方块c++linux版本

主程序RussiaBlock.cpp//// Created by adl on 2020/7/18.//#include "Block.h"#include "Table.h"#include <thread>#include <mutex>#include "hierarchical_mutex.h"#include "fstream"using namespace std;thread_local uint64_t hierarchic

2020-07-19 15:01:45 305 1

原创 c-mysql(常用)

MySQL C API 使用(基本函数)了解了以上基础知识,去包装一些函数用来给c使用accept_mysql 用来连接数据库MYSQL accept_mysql(){ MYSQL mysql; if(NULL==mysql_init(&mysql)){ err_sys("mysql_init err",__LINE__); } if(mysql_library_init(0,NULL,NULL)!=0){ err_sy

2020-07-11 15:22:11 180

原创 数据结构:AVL平衡树(c版本)

AVL树呢,是平衡树中一个非常经典的例子。因为普通的查找树在插入和删除的过程有可能会产生树的一端子树高度比另一边大很多的情况,也就是所谓的退化为链表(查找是一个一个节点去找),降低了查找的效率。AVL平衡树通过一系列旋转的方式让左子树和右子树的高度相差不大(<=1),这样搜索的效率将会维持在较好的水平。方法就是当插入一个节点之后,更新父节点的高度,判断父节点的左右子树高度差是否为2,若是,进行相应旋转操作(4种)来降低左右子树高度差。若不是,判断父节点的父的左右子树高度差是否为2,以此类推,直到

2020-06-19 00:10:16 209

原创 strcpy 一个二进程文件的字节会怎样?

展示一下二进制文件内部是什么:本质上就是一个个字符。通过一定的文件格式,标准(我觉得就像一些程序)写入到文件中,我们可以通过系统软件去解读它(就像序列化和反序列化)可执行文件ELF格式(至于ELF究竟是什么,去翻《程序员的自我修养》吧,书上极其详细,而我觉得我这部分看过来却只是一知半解)图片:pdf视频:mp4int fd=open("a.txt",O_RDONLY);int fd2=open("b.txt",O_WRONLY|O_APPEND);read(fd,buf,BUFSIZ

2020-05-22 23:54:39 214

原创 函数参数中的多级指针

今天被几个段错误,栈溢出,free不正确的指针的错误搞得精力憔悴。之前对于多级指针+函数运用始终有点迷糊,今天果真栽这好几个跟头。这里呢就是想从mysql中提取出几个具有相同条件的数据,int mysqlGetMsgByUid(MYSQL mysql,int uid,mysqlMsg**mMsgList,int *mNum){ int i=0; int ret; unsigned int num_fields,num_rows; MYSQL mysql_tem

2020-05-16 23:38:04 270

原创 my_shell实现和分析

上个月初的myshell实现让人大费脑筋,在字符串处理和多重管道上出了不少差错,但好在最后还是实现了要求的功能。真的太懒了,把博客拖到现在~需求一个一个分析吧实现管道 |这个的意思就是想要你把一个命令的输出当作输入交给后面一个命令。如ls -l | grep “a” |wc -c就是把ls -l的输出结果交给grep 处理,grep的处理结果交给wc处理。解决方案:dup2(fd,0)重定...

2020-05-10 23:39:21 848

原创 c语言版本线程池学习和分析

线程池,在我看来就是一个 线程链表,接着我们通过任务链表(其实应该是队列)在上面分配一些任务函数。在实际应用中,线程池可以和网络服务器等高并发的程序结合起来实现异步操作。以下代码学习自线程池核心结构typedef struct my_pthread_t{ pthread_t *_pthread; //线程号 bool state; //是否已经进入等待状态}m...

2020-04-28 00:43:21 231

原创 子进程可以复制父进程的缓冲区吗?

在阅读《UNIX 高级环境编程》进程控制那块,有个例子是差不多这样的:在子进程中改变变量,观察父进程之后变量的变化#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include...

2020-04-22 21:03:36 398

原创 UNIX学习笔记(1)

应该之后开始每天记录一点,不然这些笔记过段时间都不知道放哪了。fork 和vfork 的区别在于vfork子进程共享父进程地址空间,子进程先执行,这意味着变量是共享的,子进程一边改变,父进程的变量的值也会受到影响。俩进程在写同一个文件如果使用open(O_APPEND),write的系统调用的时候,父进程和子进程的调用次序不一定,写入文件中是交替的(但不会覆盖),如果使用的是fopen(“a...

2020-04-17 19:22:54 152

原创 linux下c语言用execl使用vim 打开一个文件,出现了神奇的读错误的解答

我认为使用execl函数可以去使用vim。但是却出现了神奇的读错误,整个终端崩了。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<fcntl.h>#include<unistd.h>int main(){ pid_t pid; ...

2020-04-11 15:03:11 355 1

原创 linux下可以帮你把头文件和main函数写好的mytouch

来写个丑丑的c和c++混合的 mytouch有的时候我们想要执行touch自动帮我们生成一个c文件包含我们想要的头文件,但是我们会发现linux下touch出的文件都是空的。当时看到苹果系统下打开一个空的c文件就会给你自动写好 如下形式的c初始程序。#include<stdio.h>int main(int argc,char**argv){ return 0;}那我们...

2020-04-03 23:25:30 274 1

原创 linux网络编程学习epoll模型分析(最简单那种哦!!!)

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <str...

2020-03-25 21:50:17 148

原创 有关c++ istringstream的一个坑

c++primer练习8.11:本节的程序在外层while循环中定义了istringstream对象。如果record对象定义在循环之外,你需要对程序进行怎样的修改?重新程序,将record的定义移到while循环之外,验证你设想的修改方法是否正确?(大概意思是读取argv[]得到文件,用getline从中读取每一行,再用istringstream提取出每个单词)(下为我开始的程序)vec...

2020-03-23 19:49:26 337

转载 对于c++中const,static,const,static const 变量的加强学习(转载)

[(https://www.cnblogs.com/xiezhw3/p/4354601.html)]

2020-03-23 10:40:12 76

转载 阻塞非阻塞,同步异步比较好的解释(摘自知乎)

https://www.zhihu.com/question/19732473

2020-03-21 18:28:05 191

原创 linux下如何把一个自己写的命令(如ls)在任意文件夹下执行

我们需要把这个可执行文件所在目录加入PATH环境变量中。1sudo vim/etc/profile 加入一行:export PATH=$PATH:/脚本目录/再记得source 加载一下profile用这种有一点点小问题:命令行的东西的颜色全消失了2sudo vim /etc/environment ,将目录加到PATH后面。我使用了这种再记得source 加载一下profi...

2020-03-14 17:40:16 1387

原创 Linux下消费者生产者模型的信号量版本和条件变量版本

无论是哪种版本都是为了实现线程间的同步,以锁机制管理共享变量。可以把规则当作:1。一个包子不可以两个人吃。1。一个客户吃到包子的必要条件是等待包子铺生产包子或者拿走包子铺已经生产的包子,包子铺生产包子的必要条件是有人来吃。条件变量版本#include <stdio.h>#include <stdlib.h>#include <unistd.h>#in...

2020-03-07 23:34:51 147

原创 linux下对于mysql的基础学习

说简单了这种关系型数据库和excel差别不大 。说难了关系型数据库就像一个效率更高,存贮更加方便,安全性更好的多个excel。至于每张表,会让你联系到excel吧(这个是ubuntu里面的liberoffice cale)这个是mysql+------+------+-----------+---------+--------------+| name | age | class ...

2020-02-24 18:27:38 196

原创 关于LINUX 下siglongjmp等函数不能用的原因

打开setjmp.h源码文件,其中可以发现siglongjmp那一块的代码是灰色的。发现上方有个#ifdef _USE _POSIX那我们在自己的文件中想要使用siglongjmp,则在自己的文件中#include<setjmp.h>的上方#define _USE _POSIX 就OK了...

2020-02-14 16:47:54 193 2

原创 对于dup2(fd,1)的理解

文件描述符中0标准输入,1标准输出,2标准错误这三个在正常情况下都存在着你任意open一个文件得到的文件描述符都是至少从3开始dup2(fd,1)=dup(fd,STDOUT_FILENO)dup2(fd,1)这里复制的是文件句柄 (在c语言下就是FILE结构体 )而不是文件描述符(fd)此时标准输出(stdout)(程序在屏幕终端输出结果)那dup2的作用就是关闭标准输出,本应该写...

2020-02-12 17:35:03 2441 2

原创 c语言小知识

1.union的妙用在于各成员存储在同一空间,我们可以通过union取成员操作得到内存中各位的存储模式,否则你需要一大堆位运算操作取中间的几位。节省操作!#include<stdio.h>union bits32_tag { int whole; //一个32位的值 struct { char c0, c1, c2, c3;} byte; //四个八位的字节...

2020-01-26 21:23:08 107

原创 linux压缩

Linux 下有关压缩的那些格式----.tar |.tar.gz | .tgz | .gz |.Z |.bz2 |.xz | ……Linux 下有关压缩的那些命令----

2020-01-22 18:08:33 223

空空如也

空空如也

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

TA关注的人

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