- 博客(96)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 我的职业生涯规划(软件工程)
2019/6/17推荐视频:https://www.bilibili.com/video/av36343956?t=544视频中的大佬说到:要知道学习知识的这个过程不应该是个很轻松的,如果你太容易得到这个东西往往是价值很低的,我常常和大家强调,你认为你明白的和你真正明白的中间隔着的是一个实践的过程,是你自己用心的过程,其实不只是自己学科学知识,专业知识,你去学体育,打篮球,踢足球,或者是乐器都.........
2019-06-18 09:18:47
14856
1
原创 window10 conda activate指令无效的问题
usage: conda-script.py [-h] [–no-plugins] [-V] COMMAND …conda-script.py: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘compare’, ‘config’, ‘create’, ‘info’, ‘init’, ‘install’, ‘list’, ‘notices’, ‘package’, ‘remove’, ‘uninstall
2024-01-24 17:47:15
994
转载 oracle的jdbc连接方式:oci和thin
oci 是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端。oci是Oracle Call Interface的首字母缩写,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度快,但是需要安装和配置数据库。对于oracle数据库客户端的安装,有二种选择,一是老实的用oracle数据库的安装光盘安装对应版本的oracle客户端。二是下载oracle提从的即时客户端,即时客户端是不用安装的,把下载包解压即可。
2023-12-11 09:25:08
811
原创 Redis-布隆过滤器(Bloom Filter)
布隆过滤器,Bloom Filter是1970年由Bloom提出的,它是由一组哈希(Hash)函数和一个位阵列组成。其他问题由于错误率影响hash函数的数量,当hash函数越多,每次插入、查询需做的hash操作就越多。布隆过滤器不支持元素的删除,会出现问题删除的哈希点位可能是别的元素依赖的点,删除后导致缓存无法命中。使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个哈希值)布隆过滤器的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和。
2023-11-16 09:58:18
251
原创 redis的c++ 客户端 redis-plus-plus
hiredis 多线程不安全,要想多线程使用就得维护一个对象池,使用起来比较麻烦。使用redis-plus-plus来操作redis更加的分布,redis类多线程安全,内部维护了一个连接池
2023-10-17 11:34:20
523
原创 C++语法糖(std::variant)详解以及示例代码
在上面的程序中,我们使用了一个 std::variant 对象 value 来存储整型、浮点型和字符串类型中的任意一种。在程序中,我们分别将 value 赋值为整型、浮点型和字符串类型,并使用 std::get 来获取对应的值。在之前的版本中,C++ 可以使用 union 来存储不同类型的数据,但是 union 存在一些限制,比如不能存储非 POD 类型和类对象。std::variant 是 C++17 中引入的一个新类模板,它可以存储一组类型中的任意一个,并且能够在运行时进行类型检查和转换。
2023-10-17 10:46:54
332
转载 C++17新特性——std::optional
我们在写代码过程中可能经常会碰到这样的情况:某个函数经过一系列计算后获取一个返回值,但是这个函数可能在执行过程中有异常分支,从这些异常分支中return出来的时候还没有得到这个想计算的值。例如想计算得到一个无符号类型,我们可能会在这些异常分支return一个-1出去,用来表示计算失败,或执行有误,甚至不同的负值用来表示不同的异常情况。。。由于这些值的存在,本来返回值应该是uint32类型,为了容纳可能出现的负值和整个uint32的范围,返回值就变成了int64。。。
2023-10-17 10:11:58
155
原创 Dpdk19.11 环境搭建保姆级步骤及常见错误
首先设置运行环境,需要搭建虚拟机的多队列网卡https://www.bilibili.com/read/cv17345493。dpdk的环境搭建分为两个部分,编译环境和运行环境。
2023-05-10 11:00:35
483
原创 memcpy函数实现
为避免溢出,目标参数和源参数所指向的数组的大小应至少为 num 个字节,并且不应重叠(对于重叠的内存块,memmove 是一种更安全的方法)。当然,这里可以考虑倒过来拷贝,这样数据就不会丢失,是否可以用dest - src
2023-05-04 15:44:52
336
转载 iptables中ULOG和NFLOG实现分析
图3说明:如果指定的消息池不存在(使用分组编号定位一个消息池),将不写入消息,也不构造消息。当一个数据包满足了匹配条件,并开始执行NFLOG target时,需要根据nflog target的私有数据struct xt_nflog_info来构造要发送的消息,并使用xt_nflog_info中消息池编号指定的消息池发送消息,使用单播把数据包发送给创建本消息池的进程。1.内核也是通过消息池来发送消息,但是不能接收消息,消息池是静态的,也就是说,消息池的个数和相应的属性是固定的,用户空间没法进行配置,
2023-04-23 13:38:12
594
转载 iptables中ULOG和NFLOG实现分析
图3说明:如果指定的消息池不存在(使用分组编号定位一个消息池),将不写入消息,也不构造消息。当一个数据包满足了匹配条件,并开始执行NFLOG target时,需要根据nflog target的私有数据struct xt_nflog_info来构造要发送的消息,并使用xt_nflog_info中消息池编号指定的消息池发送消息,使用单播把数据包发送给创建本消息池的进程。1.内核也是通过消息池来发送消息,但是不能接收消息,消息池是静态的,也就是说,消息池的个数和相应的属性是固定的,用户空间没法进行配置,
2023-04-23 09:27:35
275
原创 docker依赖的linux内核特性,docker镜像能跨平台运行吗?不一定
这样,可读写层处于Docker容器文件系统的最顶层,其下可能联合挂载了多个只读层,只有在Docker容器运行过程中文件系统发生变化是,才会把变化的文件内容写到可读写层,并且隐藏只读层中的老版本文件。由于rootfs里打包的不只是应用,而是整个操作系统的文件和目录,也就意味着,应用以及它运行所需要的所有依赖,都被封装在了一起。这就赋予了容器所谓的一致性:无论在本地、云端,还是在一台任何地方的机器上,用户只需要解压打包好的容器镜像,那么这个应用运行所需要的完整的执行环境就被重现出来了。
2023-04-13 08:55:08
1230
原创 二分法模板以及例题 (三)
由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。输入:numbers = [2,7,11,15], target = 9。输入:nums1 = [1,2,2,1], nums2 = [2,2]输入:arr = [1,2,3,4,5], k = 4, x = 3。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。输入:nums = [10,9,2,5,3,7,101,18]输入: nums = [2,2,3,4]输出:[1,2,3,4]
2023-04-03 23:01:46
265
原创 一篇讲完ZeroMQ七大模式demo (python + c)
例如,可以使用REP/REQ模式与PUSH/PULL模式结合使用,以实现异步的负载均衡。这个模式是DEALER/ROUTER模式的反向。这个模式类似于Req/Rep模式,但客户端可以发送多个请求而不需要等待服务端的响应。这个模式类似于Pub/Sub模式,但是消息不是广播给所有订阅者,而是只发送给一个随机的订阅者。这是最简单的模式,客户端向服务端发送请求,服务端收到请求并发送响应。这个模式是同步的,客户端必须等待服务端的响应。XPUB端发布消息,XSUB端订阅消息,并可以根据自己的需要进行筛选和路由。
2023-04-03 16:46:13
1574
原创 muduo网络库:1---muduo简介之(详解muduo线程池模型)
threadInitCallback_ 是一个Task类型,当不为空的时候调用初始化,在线程池没结束的时候从队列中取任务出来执行。tar还会手动释放线程池,因为stop不当是析构的时候调用,不使用只想停止所有任务但不析构的时候也可以调用。再看看线程池的构建和初始化,c++的线程池构建一般都时用构造函数,muduo库的线程池会命一个名。双条件变量控制流程,是因为他有一个任务的上线,tars没用任务上线用的是单条件变量。muduo 线程池的成员变量和tars的差不多。销毁线程池,和停止线程池。
2023-04-03 15:22:33
433
原创 二分法模板以及例题 (二)
解题思路:需要一个先增后降的位置,即如果找到是递增的则排除左边,如果找到是递减的则排除右边,峰不会重复,如[1,2,2,1]这样,所以模板一二都可以。要找到第一个小于等于8的值,前面是比之,这题是比平方后的值,万变不离其宗,因为数不会重复,所以模板一二都可以。输入:nums = [5,7,7,8,8,10], target = 8。输入: nums = [1,3,5,6], target = 5。解题思路:这题就类似于[1,2,3,4,5,6,7,8]输入:nums = [1,2,1,3,5,6,4]
2023-04-03 12:04:17
383
原创 module ‘numpy‘ has no attribute ‘object‘.
高版本的numpy np.object弃用了,把np.object改成object,或者降低numpy版本。
2023-03-29 09:53:42
12290
8
原创 【从零开始的go算法】删除有序数组中的重复项
j是快指针,负责找到一个和nums[i]的不同的值。找到不同的之后i++然后将这个j指的值放到i的位置。双指针秒杀了i为当前在队列中不重复的值的下标。最后返回i+1是因为i是下标,表示长度得加一。
2023-03-27 17:31:36
73
原创 kcp源码剖析 (3)
搜索入队的函数iqueue_entry 可以发现在调用ikcp_parse_ack时候 会处理snd_buf中的数据。上文发现了queue读取的时候希望buf是要有序的,那buf里的分片是否是有序的呢,不是可以选择重传了吗。是否是重传后插入到对应的位置然后在一口气写到queue中呢。在ikcp_input函数中调用。
2023-03-27 16:29:55
414
原创 kcp源码剖析+kcp应用层组包 (2)
在ikcp_recv中只用sn是rcv_nxt需要的段序号的时候,才会入队,这就保证了有序性。上文说道分段保持有序,可以先联想一下tcp是怎么保存接受的包有序的。
2023-03-27 15:45:14
421
原创 kcp源码剖析 (1)
kcp怎么学习,按照学习技术的三部曲那就开始第一步会用,下载kcp源码kcp的代码很简单就一个ikcp.c 和一个ikcp.h官方提提供了一个测试文件test.cppkcp的工作流程是kcp是不提供和网络层相关的代码的,是一个纯算法所以第一步就是封装一个output,需要四个参数,buf len 显而易见是要发送的数据和数据长度kcp参数基本上用不上,user是相当于上下文,下面代码就是将user传入了结构体,而结构体中保存了数据如:sockfd下面放出完整代码。
2023-03-27 14:00:51
545
原创 分段构建dockerfile 使用debian_slim 使用编译后的动态链接文件
【代码】分段构建dockerfile 使用debian_slim 使用编译后的动态链接文件。
2023-03-22 10:48:15
248
原创 C++附加---静态库和动态库的创建与使用(linux下实现和docker实现)
①概念:静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。①概念:动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,可以被多个程序共用。动态函数库在编译的时候并没有被编译进目标代码中,需要用到相应的功能,代码才会被调用到程序中,节约内存。静态库链接之后,静态库改变,对程序不再产生影响,移植方便。动态库的改变,程序也会跟着动态变化,升级更新比较方便。
2023-03-22 10:35:47
363
原创 【从零开始的Go刷题】回文数
方法二 int做切分写入数组,前后比较是否相等(双指针)方法一 变成字符串,前后比较是否相等(双指针)golong似乎没有变长数组。
2023-03-21 17:06:29
85
1
原创 C++有限状态机的实现
//待完善有限状态机是一个很常用的技术,在流程控制和游戏AI中都比较实用,因为状态机编程简单又很符合直觉。与有限状态机类似的是设计模式中的状态模式。本文是参考《Programming Game AI by Example》一、记得最开始工作时候也接触过有限状态机,当时是一个长长的用switch写成的状态机,理解它的时候真的很困难。所以现在使用一套内置规则到状态内部去,来控制状态的转换。现在就来制作一个有限状态机。作为一个关于使用状态机创建一个智能体的实际案例,我们先模拟这样一个场景。是作为一个简
2022-07-07 17:32:51
2656
原创 C语言指针作为函数参数 以及智能指针作为函数参数
总所周知指针作为函数参数传递的时候 传递的是指针的拷贝(指针也是变量) 这里提供四种指针的传递方法 改到实际的指针。
2022-06-28 17:16:33
461
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人