自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 开源经历——MatrixOne 开发感悟

起源最近自己从学长口中得知matrixone——专为异构工作负载打造的全球规模、云边缘原生大数据引擎MatrixOne 是面向未来的超融合云和边缘原生 DBMS,它通过简化的分布式数据库引擎支持跨多个数据中心、云、边缘和其他异构基础架构的事务、分析和流工作负载。偶然了解到matrixone发布了一部分 good first issue 的 task,非常适合新手去完成,详细的文档介绍和对于matrixone的兴趣,我参与了其中一个相关任务中简介ceil(x[, N]), ceiling(x[

2022-03-25 22:22:14 2761

原创 c++ 智能指针

实现原理C++ 智能指针底层是采用引用计数的方式实现的。简单的理解,智能指针在申请堆内存空间的同时,会为其配备一个整形值(初始值为 1),每当有新对象使用此堆内存时,该整形值 +1;反之,每当使用此堆内存的对象被释放时,该整形值减 1。当堆空间对应的整形值为 0 时,即表明不再有对象使用它,该堆空间就会被释放掉。有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);没有及时释放不再

2021-08-19 10:39:16 164

原创 c++ 虚函数

虚函数虚函数是面向对象编程中函数的一种特定形态,是C++中用于实现多态的一种有效机制虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。在面向对象的编程中,首先会针对数据进行抽象(确定基类)和继承(确定派生类),构成类层次,通过引入虚函数概念来构成多态,便于复写。final和override说明符overload约定成俗的被翻译为“重载”。是指编写一个与已有函数同名但是参数表不同的函数,是对于基类的重写。final是规定不许后续的其他类覆盖该

2021-08-19 08:59:19 162

原创 聊天室项目分析

文章目录前言一、服务器模型二、忽视SIGPIPE信号三.私聊设计四.群聊设计五.文件传输发送文件接受文件六.数据库注意问题七.注意逻辑问题总结前言提示:篇博客主要测试了聊天室的实现,这一片博客讲一下相关问题。一、服务器模型epoll +多线程 while (1) { if ((nfs = epoll_wait(ep_fd, ep_ids, events, -1)) < 0) { if (nfs == -1) .

2021-08-17 16:23:46 196

原创 聊天室功能测试

前言聊天室是自己第一次写比较大一点的项目,全程自己构思,设计,虽然中间借鉴了学长学姐的一些博客,但是自己也是不断重构,设计 中间确实踩了不少坑,尤其是中间改bug时候感觉自己的代码跟屎一样,不仅不规范,bug有多,而且设计的是个什么东西,直到现在可能一些设计并不是最优,还是有很大的局限性,整体上该实现的功能都实现了。epoll LT+多线程定长包阻塞套接字(写到最后感觉非阻塞可能更好,但是懒的改了)mysql c api一、主要功能点介绍示例:pandas 是基于NumPy 的一种工..

2021-08-17 14:57:00 536

原创 线程池的简单实现纯C

线程池是一种多线程处理形式,大多用于高并发服务器上,它能合理有效的利用高并发服务器上的线程资源,线程池允许一个线程可以多次复用,且每次复用的线程内部的消息处理可以不相同,将创建与销毁的开销省去而不必来一个请求开一个线程;#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <errno.h>#define min 10

2021-06-09 22:22:46 121

原创 多线程同步的相关问题

一、 生产者消费者问题生产者消费者共享缓冲区,生产者向缓冲区中放数据,消费者从缓冲取中取数据,当缓冲区中被放满时,生产者进程就必须进入挂起状态,直到消费者从缓冲中取走数据时,生产者才能继续向缓冲区中存放数据,同样当缓冲取中没有数据时,消费者进程就必须进入挂起休眠状态,直到生产者向缓冲区中放入数据时,消费者才能被唤醒继续从缓冲区中取走数据。在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能

2021-06-09 22:21:16 134

原创 my_shell简单实现

my_shell简单实现实现功能实现 管道(也就是 | )实现 输入输出重定向(<> >>)实现 后台运行实现 内建命令(cd )屏蔽一些信号(如ctrl + c 不能终止)通过设置环境变量 可以直接使用 (在任意地方都可以运行你的shell)界面美观实现 tab补全实现内置命令history注意gcc 编译时需要添加动态库-lreadlinevscode x修改配置文件 task.json"args": [ "${fi

2021-04-28 17:26:27 299

原创 ls -lRa 的简单实现

ls -l -a -R 的简单实现目标*在所有目录下都可以使用*实现任意l,R,a组合*可以实现在根目录下的递归说在前面这是笔者第一次写比较大全面的东西,好多代码格式和命名不太规范可读性比较差,可能自己还是比较菜,重构了三次,才写出相对完整的代码。分函数代码1.void my_err(const char *err_string, int line) //错误处理函数void my_err(const char *err_string, int line){ fprint

2021-03-28 15:14:20 269

原创 滑动窗口问题

基本原理双指针,在左右两个边界处分别设有指针,一般可用于数组和字符串的应用,且优点遍历次数较少。用双指针来限定窗口的范围,每一次对与指针进行滑动,来对于窗口里的数据结合判断。例题给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。(力扣424题)分析:对于此问题,可以用双指针限定窗口,再寻找窗口里的最多字符,来遍历窗口寻找非该字符的其他字符出现的次数,与K值进行比较。首先,尾指针右移,窗口

2021-02-07 12:27:07 172

原创 链表封装,增删减查函数集合

1.创建链表函数void *head_celebrate(int n, int a[]){ node *head, *p, *q; p = (node *)malloc(sizeof(node)); p->val = n; head = p; head->next = NULL; for (int i = 0; i < n; i++) { q = (node *)malloc(sizeof(node));

2021-01-27 18:55:10 177

原创 简单算法模拟

第一次排位赛题解熊熊学长从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。熊熊学长非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是Sky数吧。# include<stdio.

2020-12-01 17:35:01 229

原创 纯模拟

学习总结 2020-11-29青蛙过河一只青蛙想要过河。 假定河流被等分为 x 个单元石,并且在每一个单元石内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元石序号升序表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。 开始时, 青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元石1跳至单元石2)。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 2、k 或 k + 2个单

2020-11-29 11:03:35 122

空空如也

空空如也

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

TA关注的人

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