杂谈
文章平均质量分 65
此专栏用来记录日常一些小点,还有自己的生活,碎碎念等等,有什么写什么
BearPot
你太容易因为别人优秀而焦虑 你需要的是平静的把自己的事做好
个人网站:http://www.potba.cn/
展开
-
个人网站迁移
之前用hexo搭了一个静态网站,挂在github上了,更新文章太麻烦了,以后就不用那个了。主题界面之类的东西,还没有搞,等放假了好好弄一下。原创 2023-11-04 21:28:14 · 453 阅读 · 0 评论 -
缓存行/伪共享问题,验证优化
优化程序性能时,合理使用缓存行对于减少缓存未命中和提高数据访问效率非常重要。这可以通过调整数据结构的布局、避免伪共享(False Sharing)等方式来实现。原创 2023-09-26 09:15:32 · 349 阅读 · 0 评论 -
含泪总结当遇到linux文件系统根目录上的磁盘空间不足怎么办!!
那天写项目代码,cmake编译生成文件的时候给我说磁盘不够了..文件没法生成,因为当时是远程连接的,所以就先断了连接,重启了虚拟机!好家伙重启之后因为内存不够,根本进不到gnu界面,就是想重新扩容操作都没办法!总之遇到这种情况就是要对根目录磁盘空间进行扩展。如果你的虚拟机还能进去,那么直接看后面步骤,前面这块说说最麻烦,空间不够了,虚拟机怎么进去.原创 2023-08-24 19:43:56 · 4630 阅读 · 0 评论 -
syslog.h使用
linux操作系统现在rsyslogd取代了原先的syslogd服务,rsyslog 是一个 syslogd 的多线程增强版,其配置语法与syslogd的配置文件一致。(2) format:们与传入 printf()中的参数是一样的,但与 printf()不同的是这里的格式字符串不需要包含一个换行字符。LOG_UPTO()宏创建一个能过滤特定级别以及以上的所有消息的位掩码。(2)传入 openlog()的 log_options 参数是一个位掩码,它是下面几个常量之间的 OR 值。原创 2023-06-21 09:31:00 · 610 阅读 · 0 评论 -
手撕智能指针
首先智能指针有两个变量,一个是指向的对象的指针,还有一个就是我们上面看到的引用计数管理对象, 当智能指针发生拷贝的时候,标准库的实现是先拷贝智能指针,再拷贝引用计数对象(拷贝引用计数对象的时候,会使use_count加一),这两个操作并不是原子的,隐患就出现在这里。其中有两个变量一个表示shared_ptr的引用数,另外一个表示weak_ptr的引用数,我们知道weak_ptr不会增加只能指针的引用数也就是说不持有对象,他的使用必须通过lock方法获取它指向的shared_ptr才能使用。原创 2023-03-29 17:06:50 · 272 阅读 · 2 评论 -
模拟简单的string,循环队列,vector
下面的空间配置器就是模仿C++标准库的alloctor实现的,封装了malloc和free。对这感兴趣的可以去看看SGI STL的两级的配置器,一级的就像我写的这种,二级用到了内存池的实现。STL源码是把内存分配和对象的构建分开来的,同样的对象析构和内存释放分开,这样才能满足类类型的构建,不明白的可以去了解下空间配置器。给出昨晚抽空写的简单的string,queue,示例代码,,适合刚开始学习C++接触到类的人群。vector的调用实现,测试代码自己测一下就行,我这不写了。原创 2023-04-29 11:45:00 · 96 阅读 · 0 评论 -
配置C/C++/Python
c/c++/python 选择用当前的虚拟环境。原创 2023-04-10 16:28:26 · 579 阅读 · 0 评论 -
ubuntu20.04安装nginx一系列问题
当初做一个项目的时候给linux装nginx遇到了很多问题,当初边搞边记录,这两天翻看项目笔记的时候找出来了,就把这一部分分享出来给大家看看。原创 2023-02-27 20:10:33 · 562 阅读 · 0 评论 -
c++11 json解析库nlohmann/json.hpp
Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。json的方便:直观的语法整个代码由一个头文件组成 json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便使用 C++ 11 标准编写使用 json 像使用 STL 容器一样STL 和 json 容器之间可以相互转换。原创 2023-02-24 15:46:07 · 3311 阅读 · 5 评论 -
总结各种常见的池子
指的是一些资源,在需要时可以这些预先准备的资源。池化技术的优点主要有两个:提前准备和重复利用。像池化技术一些典型的池子就比如线程池,内存池,对象池,数据库连接池等等,线程的创建销毁,对象的创建销毁,内存的分配释放,数据库连接释放等等,做池子里面伴随着的就是生产者消费者模型。所以这些都是要搞清楚的。原创 2023-01-13 15:25:56 · 453 阅读 · 0 评论 -
文件的压缩解压缩
把文件里的字符转成二进制“abcdefgh”这一串字符每个字符都占8个比特,把a弄成哈夫曼编码例如“11111”,不过这样也是个字符串,每个'1'字符都是8bit,等于没压缩反而大了,关键点就是把这个"1"字符8bit转成二进制里面的1,这样8bit->成了1bit,压缩成功对于文本文件效率还行13%~17%,图片视频音频二进制的文件效率不太高构建哈夫曼树,利用哈夫曼编码我就不对哈夫曼树和哈夫曼编码的结构做解释了,对于最上面俩关于文件操作的结构说明一下为什么KING=256?2的8次方。原创 2023-01-14 14:11:52 · 1870 阅读 · 0 评论 -
C++手撕连接池
用c++写一个数据库连接池数据库连接池是为了提高数据库连接的性能,进行连接复用对于复杂数据库进行大量引用的场景下就会出现访问瓶颈常见的两种解决方法就是:为了减少磁盘 I/O的次数,在数据库和服务器的应用中间加一层 缓存数据库(例如:Redis、Memcache);或者就是增加连接池,来减少高并发情况下大量 TCP三次握手、MySQL Server连接认证、MySQL Server关闭连接回收资源和TCP四次挥手 所耗费的性能。原创 2023-01-08 01:19:32 · 750 阅读 · 0 评论 -
多线程下对象的析构问题
让判断线程是否结束,结束了线程join,给个bool类型stop用来判断所有线程走完没,走完了,修改析构函数让他为真,把线程对象至为空,当工作线程看到stop为真了,直接退出。程序崩溃--->在打印完毕之后,懒汉模式创建的单例对象已经被析构了,但是工作线程里的pm已经没有资源了工作线程就会奔溃。不过这么写针对这个用例来说能走,不过要是再加个funa线程函数,主线程一次走两个,走多个就会出现问题了。懒汉模式:需要的时候new一个对象,不需要的时候delete。懒汉模式,加锁,线程安全。原创 2022-12-24 21:45:09 · 999 阅读 · 8 评论 -
bind绑定器里placeholders的一点认识
很多人在学c++11的时候学到可调用包装类function和绑定器bind的时候,bind里面很常见的所谓的占位符placeholders,就很迷惑占位?我给出我的理解,有大佬看到这个文章了觉得不对了,给我说说。代码注释看懂了,自己跑一遍就懂了~原创 2022-12-13 21:53:40 · 267 阅读 · 0 评论 -
有关enable_shared_from_this
解决在类的内部去返回一个指向当前对象的share_ptr,使得返回的这个share_ptr能够正常关联,使得引用计数正常+1;但是要用这个weak_ptr就需要一个shared_ptr去初始化这个weak_ptr。所以继承enable_shared_from_this这个类,去解决this问题就得先去构造share_ptr。(weak_ptr类型),每次shared_from_this都是拷贝构造内部的。enable_shared_from_this这个类的源码里面具有一个数据成员。原创 2022-12-12 23:21:57 · 215 阅读 · 0 评论 -
简单的文件传输
linux下基于多线程和tcp去实现了一个模拟网盘,实现cs之间的下载互传大文件,实现断点续传,秒传,利用md5进行校验,实时显示百分比整个项目是在Linux环境下用C语言开发的,基于TCP协议,采用多线程的socket通信方式。普通上传和秒传:客户端会先计算文件的MD5值发送给服务器,服务器会从自己的md5文件中查找有没有该文件的md5值存在,如果存在,则会发送提示给客户端表明服务器端已经存在该文件,进行秒传;如果不存在则进行普通上传。校验:利用md5值去比对下载和断点续传:客户端和服务器都会首先尝试打开原创 2022-12-05 17:27:38 · 1862 阅读 · 0 评论 -
求1+2+…+n,不用乘除,if,while,for,三目运算符等
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?搞完咯,最近没有搞什么很高质量的博客,都是学到什么,记一点主要还是方便自己看hh。题解各位大佬说了很多种方法,算地址啊等等,反正我这榆木脑袋看着费劲,太菜了。这题就是一个一步一步深化思路的问题,递归需要if或者三目运算符去判断。可以直接用公式,不过有乘除。可以迭代,不过有循环。原创 2022-12-22 08:45:00 · 433 阅读 · 0 评论 -
自定义priority_queue/function/lambda/重载<< >>/bind
很多人说c++遍历输出容器也太麻烦了,那么我们直接用std::cout输出任意vector来举例。利用模板和重载输出操作符搞定。原创 2022-08-16 11:30:00 · 201 阅读 · 0 评论 -
设置一个不能被继承的类
小屋杂谈,记录日常。原创 2022-11-28 08:37:26 · 1021 阅读 · 0 评论 -
引用没有 const?
4. const int *const p :第一个左边没有,所以修饰的是右边的int,第二个左边有,所以修饰的是 * ,因此指针和指针指向的值都不能改变。这个 const 修饰的是 p 本身(地址)是常量,(p指向的地址不能修改)不能被修改,但是 p 指向的内存值(*p)是可以被修改的!这个 const 修饰的是 p 指向的内存的值,(*p)不能被修改,但是 p 本身是可以修改的(意思就是p指向的地址可以修改);可以看作const修饰的类型是int,修饰的内容是*p,即*p不允许改变。原创 2022-10-27 21:40:18 · 535 阅读 · 1 评论 -
有关vector的一些初始化
今晚在看皇后问题的时候,用vector的初始化写了两种都是错的,最后想了想写出来了正确的,记录以下,以免以后犯错。二维vector的初始化也写一下。原创 2022-10-24 22:59:27 · 383 阅读 · 1 评论 -
有关vector/map的遍历删除unordered_map插入
因为erase之后,迭代器失效,此时的迭代器指向的是删除元素的下一个元素,然后再加上for循环的iter++/或者erase(it++)删除后的本身++,这样就会越过一个元素,导致没有被完全删除干净.这玩意是个坑,一切以下面这个代码为准。可以举个例子把三组代码测一下就知道了。下面两个版本的代码都是错的。原创 2022-11-03 21:31:00 · 1132 阅读 · 0 评论 -
有关unique函数的使用
去的是相邻的重复元素,字面意思就是有个(1,1,2,2),他给你去成(1,2);但是这里的去,不是真的给你删掉了而是把重复的地方拿不重复的元素给你占领了,然后给你返回去重后的迭代器位置,原来容器里面剩的他不会动的。假设有一个已经排好序了的n 个元素的容器,现其中有k 个不重复元素,那么经过unique函数处理后,前k个元素是不重复的元素,后面的( n − k )个元素与原来的容器中是相同的,我们只对前面进行了操作,也就是说前面的重复元素都被后面的不重复元素顶替了。把这个函数返回值和怎么去重的搞懂!原创 2022-11-03 21:31:21 · 1031 阅读 · 1 评论 -
LeetCode 23.合并k个升序链表
看到这个题首相想到的就是暴力转化破解,思路就是把链表的所有结点值放进一个数组里面,对这个数组排序,我们可以用vector动态创建,完事之后,对数组进行从小到大的默认排序,最后遍历整个数组根据值去创建一个一个新的结点,把这些结点串在一起返回就行。都知道优先级队列底层是拿堆实现的,默认的大顶堆,每次把元素放进优先队列里,他会自动给你排序,对头就是优先级最高的那个,这里的优先级可能是大小可能是什么的,对于自定义的类型我们可以自定义他的排序方式。输入:lists = [[1,4,5],[1,3,4],[2,6]]原创 2022-10-09 14:02:54 · 1227 阅读 · 2 评论 -
fcntl函数能干什么
文件描述符在内核中的形态。一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2),0与进程的标准输入相关联,1与进程的标准输出相关联,2与进程的标准错误输出相关联。fcntl系统调用可以用来对于已打开的文件描述符进行各种控制操作以改变已打开文件的各种属性。fcntl方法可以做什么?原创 2022-10-11 21:58:53 · 291 阅读 · 0 评论 -
进程和线程相关 同步异步
调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位;并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行;原创 2022-10-08 18:02:01 · 154 阅读 · 0 评论 -
以引用的形式返回
函数结束,函数就会把局部的栈空间还给系统,返回局部的变量或者对象,栈空间都被析构返回了,主函数得到的不就是个死的东西,拿它的地址有啥用,地址都失效了。引用本质上还是指针啊,返回引用,不就是返回指针的地址。原创 2022-10-08 18:02:39 · 180 阅读 · 0 评论 -
开学季:好好聊聊自己的大学生活
在学习这条道路上,没有捷径只有努力与天赋,我是个普通人,但是我不悲观,我希望我能过上自己认为舒服,真正热爱的生活,为此我愿意去奋斗。计算机苦他是真的苦,难也是真的难,我的一生有了太多选择。原创 2022-09-08 15:42:29 · 14957 阅读 · 28 评论 -
右值引用延长其生存期的问题
类类型的右值的确是临时变量,但是类类型的临时变量是可以调用成员函数的,包括(operator=)赋值运算符重载函数,这体现在代码上就是:类类型的临时变量可以赋值。还是上面那个结论右值修改的问题,我如果把fun函数返回值改成内置类型不管你加不加const,你都不能去修改,因为你内置类型返回的将亡值是个纯右值,是不能被修改的,纯右值自带常性。const引用的话你所引用的肯定改不了了,crv=100啊这些都肯定是错的,但是右值引用那就可以改了,改的就是里面那么临时的将亡值tmp。原创 2022-10-06 20:17:56 · 1497 阅读 · 4 评论