自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GDB_HITsz的博客

全年无休9127

  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 《网络编程》之——Linux高性能服务器开发小项目的分析记录

Linux高性能服务器开发小项目分析记录参考书籍:《Linux高性能服务器编程》游双基础班:Mywebserver,就是书上的服务器项目进阶版:Tinywebserver目录PartⅠ:mywebserver一、locker.h,locker.cpp (与Tiny相同)互斥锁类locker条件变量类cond信号量类sem二、threadpool.h 线程池创建多个线程将线程设为脱离请求队列(工作队列)工作线程们运行的函数只实现了Proactor模式三、main.cpp网络编程常规步骤循环获取就绪.

2021-05-30 23:44:23 391

原创 《网络编程》之——服务器编程框架理解

Reactor模式、Proactor模式,半同步/半异步模式,半同步/半反应堆模式,领导者/追随者模式

2021-05-29 22:26:33 260

原创 《网络编程》之——epoll的底层实现原理

从两位大佬的文章中整理而来陈同学: https://mp.weixin.qq.com/s/ioxKBfJeAThgDHFWps8ucw小林coding: https://mp.weixin.qq.com/s/ioxKBfJeAThgDHFWps8ucwepoll_creat:epoll_ctl:向内核事件表中注册事件,会将事件与设备驱动程序简历回调关系ep_poll_callback(),相应事件发生时,会调用这个回调方法,该回调方法会将事件添加到rdllist双链表中。epoll_wai.

2021-04-17 13:37:40 290

原创 《网络编程》之——socket的底层实现原理

借鉴大佬 小林coding 的一篇文章整理而来:https://mp.weixin.qq.com/s/Qpa0qXxuIM8jrBqDaXmVNA下图的三个主要内容:首先是进程的很重要的一个结构体task_struct从中可以知道文件描述符从何而来然后针对socket这种文件描述符,它的底层是如何实现的附:小林coding文章中的sk_buff的讲解图,可以帮忙理解sk_buff的原理...

2021-04-17 13:31:47 1327

原创 《C++》之——sizeof(struct/class)=?:结构体内存对齐、类的内存占用

环境:vs,64位指针:8字节,char:1字节,int:4字节C++里面结构体和类其实没啥区别(在内存分配方面)。结构体和类的区别见此博客(坑,待填)首先是结构体/类的内存对齐参考:https://blog.csdn.net/abc_xixi111/article/details/80262753内存对齐规则:第一个成员在结构体变量偏移量为0 的地址处。其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员大小中的较小值。vs中默认值是8.

2021-04-03 17:08:04 254

原创 《网络编程》之——select、poll的底层实现原理

参考博客https://my.oschina.net/fileoptions/blog/911091https://mp.weixin.qq.com/s/ioxKBfJeAThgDHFWps8ucw先记录一下源码借鉴了优秀博主的源码#undef __NFDBITS#define __NFDBITS (8 * sizeof(unsigned long))#undef __FD_SETSIZE#define __FD_SETSIZE 1024#undef __FDSET_L.

2021-03-20 17:36:51 663

原创 《计算机网络》之——计算机网络-知识点整理

《计算机网络面经》网络整理而来TCP相关TCP的整个流程(状态转换过程)要求:不是简单的描述,而是将整个状态转换过程描述清楚…服务器端的典型状态转移:客户端的典型状态转移:TCP状态转移总图:(粗实线:客户端典型状态转移,粗虚线:服务端典型状态转移,细实线:非典型状态转移)TCP三次握手过程三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功):第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Cl.

2021-03-15 10:28:12 321

原创 LC刷题记录

刷题记录慢慢往这里整理吧~237.删除链表中的节点原题函数没有传入head,只有要删除的节点node,无法获得node前一个节点:用后一个节点的值替换node节点的值,然后删除node后一个节点(该题条件限制足够,所以能这样做)class Solution {public: void deleteNode(ListNode* node) {//没有给head,无法找到node的前一个节点,怎么解决 node->val=node->next->va.

2021-03-13 17:36:07 228

原创 《STL》之——vector的resize()和reserve()

记一次面试中遇到的问题:vector的resize()和reserve()有啥区别首先看这俩单词:resize:v.改变大小reserve:v.预定、保留好啦,搞定!????开个玩笑,不过确实很明了:resize是改变该容器存储的数据数量(有效空间大小)reserve是改变该容器预留的总空间大小但是首先要知道vector的实现,才会觉得明了。简单理解就是:内存2倍增长的动态数组;维护三个迭代器start、finish、end_of_storage;增加新元素时,如果超过

2021-03-13 16:47:49 471

原创 《网络编程》之——epoll的LT和ET模式

参考书目:《Linux高性能服务器编程》-游双著LT:电平触发ET:边沿触发将一个事件的发生理解为状态的转变,理解为从0到1的转变。例如:EPOLLIN读就绪事件的发生条件:内核接收缓存区中的字节数 >= 低水位标记SO_RCVLOWAT。故将(内核接收缓存区中的字节数 < 低水位标记SO_RCVLOWAT)视为0将(内核接收缓存区中的字节数 >= 低水位标记SO_RCVLOWAT)视为1则,LT的触发方式为:只要处于1就触发,ET的触发方式为:0-1的一.

2021-01-23 17:37:27 263

原创 《网络编程》之——accept:叫它“接受”合适吗?它“接受”了什么?

accept——取出从监听队列取出:队列,顾名思义就是FIFO的方式我认为accept叫做取出更合适一点:从listen监听队列中取出一个连接accept不影响三次挥手连接的过程,也不关心监听队列中连接的状态,不管是ESTABLISHED还是SYN_RECV还是CLOSE_WAIT,它就只管取accept函数的用法见博客socket基础API。accept默认是阻塞的,当listen监听队列中没有连接时,accept将会等待,直到监听队列中有连接可以取出。(socket基础API中可能被阻塞的包

2021-01-23 17:29:54 279

原创 《网络编程》之——socket基础API

socket地址API首先要了解:大端字节序(网络字节序)小端字节序(主机字节序)(发送端总要把数据转化成大端字节序数据后再发送)四个函数完成网络字节序<->主机字节序之间的转换#include<netinet/in.h>//长整型通常用来转换IP地址unsigned long int htonl( usigned long int hostlong );// host to network long , 下面的类似unsigned long int ntohl

2021-01-23 16:20:08 121 1

原创 《计算机网络》之——服务器主动关闭TCP连接,会发生什么?

TCP四次挥手TCP关闭过程中状态转移(主动关闭方、被动关闭方)客户端主动关闭TCP连接——发生正常的流程服务器主动关闭TCP连接——异常终止

2021-01-15 21:49:19 2497

原创 《计算机网络》之——一定是四次挥手嘛?

不一定哦,《Linux高性能服务器编程》P38+P47

2021-01-15 21:45:17 121

原创 《C++Primer》之——拷贝控制(一):基础知识

1. 拷贝控制成员五个用来控制拷贝控制操作的类的成员函数:析构函数、拷贝构造函数/拷贝赋值运算符、移动构造函数/移动赋值运算符{挨个介绍:形式完成的操作定义时注意事项在用户代码中,何时调用哪个}2. 合成版本的拷贝控制成员五个拷贝控制成员,一定情况下,编译器会自动合成默认的版本:合成析构函数、合成拷贝构造函数/合成拷贝赋值运算符、合成移动构造函数/合成移动赋值运算符{挨个介绍:默认的操作语义何时会提供合成的版本怎样强制让他合成怎样强制让他不合成}3. swap与赋值运

2021-01-06 14:06:12 337

原创 《C++Primer》之——拷贝控制(二):拷贝?移动?为何而存在?我们敲代码的时候需要注意这俩东西吗?啥时候需要注意呢?

前言《C++Primer》第13章。章名为“拷贝控制”。首先需要明确一些事情,以便能更顺畅的理解:1️⃣. 前序章节:第7章需要先学一遍,类的基本知识。第6章需要放到自己的潜意识里,函数的传参与返回。2️⃣. 正如这一章所属的第Ⅲ部分的名字:类设计者的工具。这一章的都是针对类的设计来说的:某些具备一定特征的类,是需要我们自己来定义其拷贝操作的。3️⃣. C++中的“类型”:包括内置类型、类类型(标准库提供的类,和我们自己设计的类)都是类型,通常我们可以将他们统一起来。4️⃣. 拷贝与移动、拷贝

2021-01-06 00:24:16 216 1

原创 《C++Primer》之——智能指针与动态内存全纪录

前言:先来个素质三连问:什么是智能指针?为什么要用智能指针?智能指针能干啥?什么是智能指针呢?  首先要知道,智能指针是针对动态内存用的,那什么是动态内存呢?:动态内存中的对象的生存期与它们在哪里创建时无关的,只有当显式地被释放时,这些对象才被销毁。程序用堆(或叫自由空间,关于堆与自由空间的讨论可以参考这里)来储存动态分配的对象。其实C++里,动态内存就是new/delet这一对带恶人使用的内存。(其实动态内存我还没摸透,mark一下,等摸透了再回来填坑)  为什么要用动态内存呢?书

2020-12-31 23:04:05 213

原创 《C++Primer》之——引用,及引用的应用场景

1. 引用不能拷贝,引用不可变引用不能拷贝,也没得拷贝:因为“赋值运算符=”的拷贝操作,对于引用来说,是绑定操作。引用不可变,也没得变:因为“赋值运算符=”的赋值功能,对于引用来说,是对被引对象的赋值通过下面的代码来理解:与指针对比一下,能更好的理解上面的两句话/* 指针部分 */ int i=1,j=2; int* ptri=&i;//ptri是一个指针 /*对指针的赋值是真的赋值*/ ptri=0;//将指针ptri修改为了空指针(这里只是测试直观性需要,平常最好用null

2020-12-28 21:32:12 186 1

原创 《C++Primer》之——引用、指针,以及它们与const的爱恨纠葛

前言C++入门路上的第一个纠结:引用和指针,两个好好的东西,跟const混上之后,就开始在你脑子里打架了。。。对常量的引用、常量引用;指向常量的指针、常量指针(底层const、顶层const)。如果单看名字的话,这些概念很清晰,似乎没什么奇怪的呀。本文就来 扣扣他们的概念,捋一捋他们的关系,不过这都不重要,这个过程只是让它们在你的脑子里先扭打在一起,再分帮结派的站在两边,从而深刻明了的将它们区分开,并了解它们的特性。最终,最重要的还是搞清楚:在代码使用中时,它们能干啥、不能干啥先定义几个全局变量

2020-12-27 22:06:13 163

原创 实验室Alienware-Area 51m拯救计划:Ubuntu下载更换内核,Ubuntu有线无线网卡驱动安装

目录事件起因:一、换内核二、装网卡驱动三、无线网卡驱动导致开机登录卡死事件起因:详见另一篇博客:realsense环境配置配置realsense的环境时,想走捷径自己下了kernel源码,然后编译了内核,结果内核崩了。表现为:usb口都不能用了,过了两天自己好了。主要问题是无法关机,会卡在这里:一、换内核查看内核查看当前使用的内核:uname -a查看目前系统中存在的内核版本:dpkg --get-selections | grep...

2020-12-13 12:52:26 980

原创 realsense相机SDK——librealsense使用方法及bug解决(ubuntu)

realsense环境配置参考https://blog.csdn.net/m0_43436602/article/details/110930512一、librealsense在哪里?安装完环境之后,可以去根目录下搜一下librealsense2.so看看,如果是用apt装的librealsense,应该和我的差不多。二、realsense库怎么用?我是apt install ros-kinetic-librealsense2安装的librealsense,故库文件的位置在opt/.

2020-12-11 16:18:56 7708 1

原创 realsense-ros环境配置

项目场景:相机型号RealsenseD435i环境:ubuntu1604,内核4.13 (uname -r可查看内核)https://github.com/IntelRealSense/realsense-roshttps://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md一、librealsense安装:整个过程请不要插相机1.安装方式:源码编译2.过程:1)更新系统sudo apt-g

2020-12-11 15:50:24 6460 1

原创 深度学习环境配置:cuda9.0+cuDNN7+annaconda3+tensorflow(配置:i7-7700+GTX1080+ubuntu1604)

深度学习用的基本环境参考了几位优秀博主的教程https://blog.csdn.net/m0_37864814/article/details/82112029https://blog.csdn.net/wshixinshouaaa/article/details/83272282#4_cuDNN_84https://blog.csdn.net/echoamor/article/details/88974685一、安装NVIDIA驱动见我的资源1604安装问题.odt二、安装cuda9.0

2020-09-25 11:08:52 251

原创 pcl-1.9安装(环境:ubuntu1604)

参考:https://blog.csdn.net/qq_36728314/article/details/89487719从源码安装就按照参考链接中博主的步骤一步一步来,vtk同博主一样装的6.2;下载源码可以去gitee下载 下载链接;用git clone 下载,然后进入下载下来的源码目录,使用下面两个命令,将源码版本调整为git tag #显示源码的各个版本git checkout <在上个命令显示的版本中选择一个,这里选择的是 pcl-1.9.1>安装成功检...

2020-08-08 16:27:46 353

原创 opencv安装-3.4.6(+opencv_contrib;环境:ubuntu1604-NVIDIA-已装cuda)

安装opencv3.4.6,在github/opencv没找到wiki,参考了一些博客。过程中遇到一些问题,在此做一下记录。参考博客:https://blog.csdn.net/tutengcsdn/article/details/90346709https://blog.csdn.net/weixin_42106049/article/details/102093424解决错误参考:https://blog.csdn.net/qq_33475105/article/details/8

2020-08-06 10:58:53 434 1

原创 kinect_v2-ros(iai_kinect2)安装,环境ubuntu1604+INTEL+NVIDIA

使用Kinect_v2相机做一点东西,需要在ros里面用,所以需要安装kinect与ros间的驱动,即iai_kinect2参考:https://github.com/code-iai/iai_kinect2https://blog.csdn.net/wuguangbin1230/article/details/77184032过程中需要安装libfreenect2(点击查看安装详细过程),libfreenect2安装后测试遇到问题,点击libfreenect2错误解答一、第一次..

2020-08-03 23:48:03 1208

原创 ubuntu双屏无法取消粘滞边缘(sticky edge)解决办法

Ubuntu中使用双屏显示时,两屏之间的边缘默认是开启“粘滞边缘”的,即鼠标滑动慢的情况下,会卡在屏幕中间无法“穿越到”另一个屏幕。如果关闭“setting-display-sticky edge”仍然无法取消“粘滞边缘”功能的话,需要通过安装插件实现:sudo apt-get install compizconfig-settings-manager安装完成后,命令行中输入ccsm启动刚刚安装的插件,在打开的窗口左侧边栏找到“desktop”,然后选择“Ubuntu Unity Plugin”;然后使

2020-06-13 15:12:54 761 1

原创 dual_arm2_ws(version1.0.0)编译问题

dual_arm2_ws(version1.0.0):本科毕设提交版本一、依赖安装cd dual_arm2_wscatkin_make若所需依赖包没安装,则会报错,提示找不到*****包可以一个一个安装提示的包,也可以一次性全安装了:rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y 若安装时报错:E: 存在未认证的软件包同时使用了 -y 选项,然而未搭配 --allow-unauthenticate

2020-05-19 11:18:32 1048

原创 python踩坑记——找不到库panda3d.bullet,panda3d不是个包

今天在搞panda3d-bullet时,忽然好好地程序不能用了。报错如下:ImportError: No module named ‘panda3d.bullet’; ‘panda3d’ is not a package昨天还好好地,今天就忽然不行了。这是啥原因呢?原来,我在这个程序所在文件夹中新建了个文件,名字叫做panda3d.py应该是python程序在搜索包含的库时,当前目录搜索优...

2020-03-10 17:43:21 532 1

原创 VScode踩坑实录——code runner配置python3

code cunner默认使用python但是我的库都在python3里,使用python3运行才行在插件管理器里设置code runner选择Extension Settings找到Executor Map,点击 在settings.json中编辑把大括号中原来默认的注释掉,输入“code-run.executorMap”,tab一下就自动补全默认的配置了在下面找到pytho...

2020-03-09 18:03:42 3251

原创 bullet安装之——windows下的安装与VS开发

环境:Bullet3-2.89 Viusal Studio 2019 Windows10工具:Cmake-3.17.0-rc1一、下载1.bullet:https://github.com/bulletphysics/bullet3 下载下来源码包下载下来解压到一个文件夹啊,例如E:/bullet/bullet3-master(注意这目录里面放的是github源码)2.cmake:...

2020-03-03 13:55:01 2812 10

原创 Bullet安装之——源码包编译安装

一、遇到的问题用vcpkg装了bullet之后,还是找不到头文件之类的,可能需要在vcpkg的什么环境下使用吧,不太会用,就放弃了,还是用源码包自己编译安装吧安装成功之后,在usr/local/include和usr/local/lib中是有相应的文件的,vcpkg安装的都在home的vcpkg/目录里,不知道咋用二、源码下载从Github上下,或者fork之后,导入到Gitee里下速度更...

2020-02-29 19:56:29 5643

原创 bullet探索之——程序编译报错篇

一、找不到头文件提示找不到main.cpp中#include的头文件之类的解决: 看看CMakeLists.txt里的include_directories()所需库的路径加好没不知道为啥刚开始有这个问题,后面就再也没有这个问题了。。。就算我故意弄成最开始的样子,都不报这个错了。。。奇了怪,后面遇到再说吧二、缺少动态链接库 ×××.so报错如下:gyh@gyh-W65KJ1-KK1:~...

2020-02-29 18:26:33 442

原创 vcpkg使用随记

vcpkg使用详解vcpkg是命令行包管理工具,在使用第三方库的c或c++开发中可以简化相关的配置操作。vcpkg安装的包支持vs2015和vs2017工具集,目前在windows平台已有超过900多个包,linux平台超过350个包。在默认情况下,vcpkg会优先使用vs2017进行编译。如果未安装,则使用vs2015编译和安装。使用vcpkg对于c或c++开发,令人烦恼的第三方包管理工作大大...

2020-02-28 23:41:54 590

原创 bullet安装之——Ubuntu中安装vcpkg

bullet安装踩坑备忘一、 vcpkg安装流程从github下载vcpkg源码包,随意下载到哪里,在home或者usr/local下都行git clone https://github.com/Microsoft/vcpkg.git进入源码目录cd vcpkg执行./bootstrap-vcpkg.sh进行编译安装./bootstrap-vcpkg.sh这一步会...

2020-02-28 20:38:05 3905 1

原创 ubuntu apt update报错:由于没有公钥,无法验证下列签名

问题在sudo apt update 操作时,出现以下问题,各种换源、换网络都不好使命中:1 http://mirrors.ustc.edu.cn/ubuntu xenial InRelease忽略:2 http://dl.google.com/linux/chrome/deb stable InRelease 命中:...

2020-02-26 21:26:48 11725 4

转载 使用mlock锁定地址空间

转载自“麦兜搞IT的博客“,保存备份方便查找,侵删——http://blog.sina.com.cn/s/blog_4b5039210102dqvh.html通过mlock可以将进程使用的部分或者全部的地址空间锁定在物理内存中,防止其被交换到swap空间。对时间敏感的应用会希望全部使用物理内存,提高数据访问和操作的效率。例如,memcached就提供锁定内存的选项,保证memcached使...

2020-02-24 20:00:32 2612

转载 clock_nanosleep()

转载自 http://man7.org/linux/man-pages/man2/clock_nanosleep.2.html保存备忘,方便查找,侵删。CLOCK_NANOSLEEP(2)Linux程序员手册CLOCK_NANOSLEEP(2)NAMEclock_nanosleep-具有指定时钟的高分辨率睡眠大纲#include <time.h> INT clock_...

2020-02-24 20:00:16 8356

原创 anaconda3随记

anaconda3随记conda config --set auto_activate_base False这样就不会每次打开终端就默认进入conda环境(base)中,想开启默认进入,就conda config --set auto_activate_base True...

2020-02-24 19:53:54 204

cuda9.0安装教程.docx

我最近一次安装的电脑配置如下为 i7-7700+GTX1080+ubuntu1604。 cuda9.0安装教程,多次安装成功总结。

2020-09-25

1604安装问题.odt

自己实践过程中记录的ubuntu1604系统的一些安装事宜,包括NVIDIA显卡驱动有关问题的解决方案,输入法相关问题的解决方案。适用于windows10+ubuntu1604双系统,INTEL+NVIDIA双显卡。

2020-08-06

空空如也

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

TA关注的人

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