自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt 控件概述 QLCDNumber 和 Progressbar

QWidget就包含了Qt所有类的声明,所以可以用指针或者引用类型的成员 :这么做是为了多份头文件所导致编译时间变慢的问题。对于GUI来说,内部隐藏了很多状态,Qt为了保证修改界面过程中的线程安全,直接禁用了其他线程直接去修改UI,因为代码是写在Widget构造函数中的,所以会被阻塞10s后才被创建出来,但是数字已经为0了。QTimer 这个类创建出来的对象,会产生一个timeout信号,在进行start启动。

2025-03-20 21:36:58 466

原创 Qt 控件概述 QLabel

​​​​​拖拽窗口大小就会触发一个resize的事件(resizeEvent)像resize这样的时间,是连续变化的,会触发一系列的resizeEvent,此时就可以借助resizeEvent来完成上述功能可以让Widget 窗口类去重写QWidget的resizeEvent虚函数,这样在鼠标拖动窗口大小时,就会调用重写的虚函数​。

2025-03-20 21:30:55 500

原创 Qt 控件概述 QPushButton 与 QRadioButton

​。

2025-03-16 21:14:53 341

原创 Qt 控件概述 QWdiget 1.1

​图片太大了 可以借用png=png.scaled(100,100)进行缩放推荐一个光标网站iconfont-阿里巴巴矢量图标库。

2025-03-16 21:06:34 1113

原创 Qt 控件概述 QWdiget

Qt Creator中的右侧可以看到QWidget的各种属性 其中各种属性都可以在Qt文档中找到说明。一下操作都是对按钮左上角的一个点做位置改变 左上角改变的同时 宽度和高度都发生改变。QIcon不支持对象数机制,我们需要把它建立在栈上,它生命周期不影响图标的显示。tips:windowTitle只针对Widget设置。禁用就是指 该组件无法与用户进行交互。在Qt中关于位置尺寸提供了很多API。同时继承它的所有子元素也被禁用。

2025-03-15 21:05:05 482

原创 Qt 信号与槽

​​。

2025-03-15 20:56:46 727

原创 Qt 初识1.1

对于Qt的某个控件来首,坐标系是相对于它的父控件来设定的。光标指向需要了解的类 + F1。坐标的原点就是窗口的左上角。初始位置是(0,0)

2025-03-12 17:24:11 250

原创 Qt 初识

​​​。

2025-03-10 20:49:37 340

原创 ES 客户端 API 二次封装思想

因为json串会出现在代码中,为了让用户更容易去添加数据所以去封装它。提供用户新增数据的接口以及发起请求的接口。网页端 : ip+5601。

2025-02-26 22:46:53 282

原创 ES的简单讲解

比如有一个文档名 “你好”可以用‘你‘,'好','你好'都可以搜索到这个文档类似于数据库中表的概念,在表的概念下又对数据集合进行了细分​。

2025-02-26 22:43:11 955

原创 brpc的二次封装以及brpc与etcd的联合

搭配etcd的注册中心管理能知道谁能提供什么服务,并用rpc进行服务调用。

2024-12-06 19:53:42 733

原创 brpc的接口使用和封装

1.继承EchoServerImpl的一个子类 并实现rpc调用的业务。2.构造Echoservice_Stub对象,进行rpc调用。设置服务器设置ServerOption。1.构建channel信道,连接服务器。3.rpc调用 定义请求 构造请求。3.新增echo服务。

2024-12-06 19:46:51 402

原创 ETCD的封装和测试

2.服务发现客户端:从服务器查找服务信息数据,并进行改变事件监控封装的时候,我们尽量减少模块之间的耦合度,本质上etcd是一个键值存储系统,并不是专门用于作为注册中心进行服务注册和发现的。1.封装服务注册客户端类提供一个接口:向服务器新增数据并进行保活参数:注册中心地址(etcd服务器地址),新增的服务信息(服务名-主机地址键值对)封装服务发现客户端类。提供两个设置回调函数的接口:服务上线事件接口(数据新增),服务下线事件接口(数据删除)1.服务注册客户端:向服务器新增服务信息数据,并进行保活。

2024-12-06 19:40:14 619

原创 spdlog的讲解以及二次封装

宏展开:g_default_logger->trace(std::string("[{}:{}] 这是一个简单的日志消息"), __FILE__, __LINE__, );g_default_logger->trace(std::string("[{}:{}] 这是一个简单的日志消息"), __FILE__, __LINE__);auto logger=spdlog::basic_logger_mt("日志名称file.log","生成的文件名sync.log"),__FILE__指明日志在哪个文件打印。

2024-11-26 15:16:17 725 1

原创 gtest

ASSERT_GE(参数 1,参数 2),greater equal,大于等于才返回 true。ASSERT_GT(参数 1,参数 2),greater than,大于才返回 true。ASSERT_LE(参数 1,参数 2),less equal,小于等于才返回 true。ASSERT_NE(参数 1,参数 2),not equal,不等于才返回 true。ASSERT_LT(参数 1,参数 2),less than,小于才返回 true。数化等等测试所需的宏,以及全局测试,单元测试组件。

2024-11-26 15:02:52 216

原创 gflags的简单使用

安装 libgflags-dev包含DEFINE_bool(变量名,变量值,”说明“);​。

2024-11-15 16:51:38 272

原创 Linux五种IO模型和fctnl的使用

recv:大部分时间是在等,一部分时间是在真正做IO :由于IO大部分时间是在等待的,那么要高效IO,

2024-11-07 22:48:26 704

原创 数据链路层Mac协议与ARP协议

因为是广播地址,所以所有该局域网内的主机都会处理该MAC报文,但是发现类型为0806,ARP请求,到ARP解析后,发现目的ip为 ipH,所以会丢弃该报文。在一个局域网内,一台主机发出的消息该网内所有主机都能收到消息,但是要判断是不是发送给自己,如果不是,直接丢弃。根据网络号,做一个循环,ping所有的地址,得到别人的地址,再根据arp得到mac地址,再用抓包工具监控。主机越多,碰撞概率越高,这也能解释为什么一个局域网中主机中太多了,造成碰撞的消息越多,网速就越慢。然后再看ipH,发现是自己这台主机。

2024-11-07 22:36:13 851

原创 理解公网和代理服务器,简单的解释内网穿透

​​。

2024-11-06 22:18:32 557

原创 IP协议讲解

发送报文->我们需要进行路径选择主机和路由器统称为节点。

2024-11-06 22:14:28 1190

原创 拥塞控制与TCP子问题(粘包问题,异常情况等)

Tcp想要尽快的传输数据给对方,又要考虑网络拥堵所采取的折中的方案。

2024-10-29 21:11:00 1044 1

原创 TCP丢包,连接机制,滑动窗口解析

发送缓冲区,我们将它当做char类型的数组,当发送时他们的发送序号就可以从他们的下标来获取,接受缓冲区也是char数组,再一个一个字节的向上层读取。我们的报文中从没有提到标识数据大小,当接收缓冲区接收到10个报文时,将他们的报头分离,他们的数据无法分离就都同时存储在接受缓冲区,当上方一个字节一个字节向上读取,接收缓冲区又一个字节一个字节的读入,这就是流的概念。

2024-10-29 21:04:40 1006 1

原创 传输层TCP

ACK。

2024-10-26 21:26:15 1039

原创 传输层UDP

1024-65535 操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围内分配的。0-1023,知名端口号,像ssh http这类广为使用的的应用层协议,他们的端口号都是固定的。b.使用一次sendto,发送100个字节,就必须recv一次,接收100个字节。c.udp不需要发送缓冲区,把数据打个包就发送,但udp有接收缓冲区。一个端口号只能被一个进程绑定,因为端口号就是用来区分进程的唯一性的。d.不能保证发送和接受的频率一样,不保证接受数据的一次性。目的端口号,找到对应的进程。

2024-10-26 21:14:19 641

原创 HTTPS协议讲解

对数据采用类如哈希和MD5方法变成。

2024-10-23 22:44:59 635

原创 申请https证书

思考一下,假设我们是中间人,我们肯定是像方案四一样,再客户端得到服务端的公钥之前就把服务端的公钥改成自己的公钥,如果不在客户端得到之前改,那么客户端一得到服务端的公钥 S ,就传递S+P(客户端公钥)给服务端,此时中间人再怎么样也得不到客户端的公钥P了,此后服务端与客户端开心的用P加密用P解密,也就无懈可击了。那改证书呢,那把证书向CA申请证书再换成自己的证书,一是自己企业信息暴漏,二是在明文信息中有域名,当浏览器识别到中间人证书域名跟自己请求访问服务器的域名不一样,也就发现证书被换了。

2024-10-23 22:32:27 867

原创 HTTPS讲解

对数据采用类如哈希和MD5方法变成散列值应用场景: 百度云盘秒传 当我们传入一部电影时,会先形成数据指纹,一旦百度云盘对比指纹成功,就会形成一个指向性文件,指向别人已经上传好的文件。

2024-10-23 22:28:14 1801

原创 HTTP协议讲解

1.ip+port2.平时上网,就是进程间通信3.上网行为,1.获取资源 2.上传数据 相当于I/O4.http协议采用tcp协议网页 图片 音乐其实都是资源。

2024-10-22 22:39:30 1744

原创 Tcp协议讲解与守护进程

一个故事:有一家饭店,有一个叫张三的员工在外面拉客,拉到客后就进入餐馆叫服务员A给顾客A提供服务,所以顾客A的所有要求都由服务员A提供。会话内的进程组,任何时候,一个会话内部存在很多个进程组,但是默认法人和时刻只允许一个进程组在前台(前台进程组)。调用setsid的进程不能是组长,启动多个进程时,第一个启动进程就是组长,启动一个进程时,这个进程就是组长。同时启动的进程可以是一个进程组的,进程组id通常是其中的某一个进程的pid。所以我们一般要创建子进程,让父进程直接退出,所以守护进程一般都是孤儿进程。

2024-10-22 22:11:53 1081

原创 UDP协议讲解

中性词,可靠通信,要得到保证就必须做更多的工作(复杂),不可靠通信,做更少的工作,很简单,丢包率也不会太高。server的port众所周知是不可以随意改变的,client的port是随机端口,这是由于启动客户端的进程是很多。我们在发数据,在内存中是以低地址到高地址发送,接收主机在内存中读取也是从低地址到高地址接收。云服务器的公网ip是虚拟的,无法直接bind,不推荐,更推荐本地任意ip的绑定方式。返回的是实际字节,len的期望收到的字节,flags默认为0(阻塞收消息)return value;

2024-10-19 21:16:04 1123

原创 应用层协议 序列化

例子:网络版本计算器。

2024-10-19 20:59:22 623 1

原创 创建线程池和封装锁

2.封装一个LockGuard在底层就可以直接创建一个LockGuard对象,就可以直接对临时资源进行加锁。

2024-10-11 17:23:34 464

原创 理解线程库和线程排斥(锁)

出现数据不一致的问题。多执行流并发的访问了资源,可能当一个线程A执行1--时,被CPU剥离下来,寄存器记录上下文,此时另一个线B程进入,由于第一个进程A的ticket并没有返回给内存,B进程认为ticket还是1,没执行--,它直接被CPU剥离下来,记录上下文,然后A线程被CPU运行,恢复A的上下文之后,对1--,对内存返回0,最后B进程被CPU运行,它去访问共享资源时,得到的是0,再对0--,出现了负数问题。可以fork,可以替换,但是是将整个进程替换,可能影响其他线程,建议创建子进程去进行程序替换。

2024-09-30 20:09:49 897

原创 信号量SEM

申请信号量是原子性的,是不需要被锁保护的,锁维护的临界区越大,效率其实越低,如果加在申请信号量之前,那么多消费者或多生产者在进入函数后,就不能同时去申请信号量,造成效率降低。如果公共资源不当做整体使用,多进程可以并发的访问公共资源,但不是同一个区域,为了将资源均分,所以有了信号量。生产者生产一个,往后走一个,直到走到消费者的前一格,此时不能往前走,因为会覆盖自己历史的数据。因为信号量是对资源进行分块管理,一个线程只能访问某一个分块资源,也就是说这个信号量。要满足以上四点,我们只需要用信号量去实现,

2024-09-30 19:52:36 354

原创 线程LWP的概念和控制

默认情况下,新创建的线程是joinable的,线程退出后,需要对其进行pthread_join操作,否则无法释放 资源,从而造成系统泄漏。如果不关心线程的返回值,join是一种负担,这个时候,我们可以告诉系统,当线程退出时,自动释放线 程资源。​分离模式下的线程也可以被取消cancel主线程需要去得到线程的返回值使用joinable默认等待。

2024-09-26 09:27:47 972

原创 信号的产生,保存与处理

特例:9号信号不能被自定义。

2024-09-16 21:09:27 828

原创 system V 共享内存

结论一:共享内存(IPC资源)生命周期是随内核,不同于文件随进程终止,共享内存会一直存在直到用户主动去删除:ipcrm -m shmid。IPC_EXCL: 不单独使用,单独使用无意义 ,存在就出错返回,不存在。原因:第一次创建的shm是不会随进程的结束而关闭的,它的生命周期是随内核的。返回数据:成功则返回(void*需转换)虚拟地址,失败返回-1。​ 标记位,宏 IPC_CREAT: 不存在创建,存在就获取。当创建一个shm后,再次运行可执行程序,会报出文件存在的错误。失败返回-1,成功返回shmid。

2024-09-11 17:17:36 443

原创 Linux 远程连接与常见错误:一直输入密码,无报错或无填充

vscode 实现远程连接与常见错误

2024-09-10 11:14:15 521

原创 Linux命名管道

​。

2024-09-09 22:23:00 374

原创 进程间通信与管道

进程间通信的功能将一个进程连接到另一个进程的一个数据流称为管道。

2024-09-06 22:17:45 344

空空如也

空空如也

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

TA关注的人

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