发布

编程学习

专栏成员
90
文章
11762
阅读量
11
订阅数
【ProtoBuf】proto3语法(一)
在语法详解部分。这个部分会对通讯录进⾏多次升级,使⽤ 2.x表⽰升级的版本,最终将会升级如下内容:
用户11029129
2025-02-26
460
【ProtoBuf】文件编写及序列化
为了快速上手以及完整的使用ProtoBuf,我们将编写一个小项目,并根据PB学习程度对这个项目来逐渐改版,每一个版本对应PB的新知识点。在后续内容中,会使用简单的通讯录作为项目实现。
用户11029129
2025-02-18
1240
初识ProtoBuf
我们在发微信语音时,实际上是将声音信号转化为电信号发送的,而对端在接收语音时又将电信号转化为了声音信号,序列化和反序列化的本质也是如此。在网络传输中,传递的都是二进制序列,而将数据转化为二进制序列的过程,我们就称为 序列化,对方收到了二进制序列之后把二进制序列转化为数据的过程,我们称为 反序列化。
用户11029129
2025-02-17
540
C++异步future
  std::future是C++11标准库中的⼀个模板类,它表⽰⼀个异步操作的结果。当我们在多线程编程中使⽤异步任务时,std::future可以帮助我们在需要的时候获取任务的执⾏结果。std::future的⼀个重要特性是能够阻塞当前线程,直到异步操作完成,从⽽确保我们在获取结果时不会遇到未完成的操作。
用户11029129
2025-01-27
700
【计网】HTTP协议详解
  虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用。HTTP(超文本传输协议) 就是其中之一。
用户11029129
2024-12-13
1490
【Linux】进程间关系与守护进程
  之前我们提到了进程的概念, 其实每一个进程除了有一个进程 ID(PID)之外 还属于一个进程组。进程组是一个或者多个进程的集合, 一个进程组可以包含多个进程。 每一个进程组也有一个唯一的进程组 ID(PGID), 并且这个 PGID 类似于进程 ID, 同样是一个正整数, 可以存放在 pid_t 数据类型中。我们使用如下命令可以查看进程组:
用户11029129
2024-12-04
1250
【计网】自定义序列化反序列化(三) —— 实现网络版计算器【下】
  在这之前,我们已经将服务器端的代码部分做好了准备,现在万事俱备只欠客户端发起连接,而客户端在这里不准备那么多的封装了,与之前写的客户端相同,我们想要客户端以 ./cal_client ip port 的形式来创建客户端:
用户11029129
2024-12-02
900
【计网】自定义序列化反序列化(二) —— 实现网络版计算器【上】
  在上一篇我们说了,两台机器想要通过网络进行通信,那么通信双方所遵循的协议必须相同,应用层也是如此,大部分情况,双方首先约定好数据传输格式,那么一端计算机发送的数据,另外一端也就能相应的解析。
用户11029129
2024-12-02
1030
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
  我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序, 都是在应用层。
用户11029129
2024-11-27
1410
Tcp协议Socket编程
  本次socket编程需要使用到 日志文件,此为具体日志编写过程。以及 线程池,线程池原理比较简单,看注释即可。
用户11029129
2024-11-22
540
Udp协议Socket编程
  本次socket编程需要使用到 日志文件,此为具体日志编写过程。以及 线程池,线程池原理比较简单,看注释即可。
用户11029129
2024-11-17
1030
日志代码编写
  日志是程序周期性运转或者特定时刻等一些常规或者特殊消息以特殊的形式打印出来,我们称为日志,关于日志,AI是这样回答的:
用户11029129
2024-11-02
750
初识计算机网络
  所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网。
用户11029129
2024-10-31
550
线程安全及其他理论
  如果现在有两个线程thread1和thread2,整个体系之中存在两把锁,mutex1和mutex2,现在出现这这样一种情况:
用户11029129
2024-10-27
1030
特殊类设计与设计模式
  如果只能在堆上创建对象,也就意味着在创建对象的时候必须使用new来创建对象,那么我们就需要:
用户11029129
2024-10-23
930
C++智能指针
RAII(Resource Acquisition Is Initialization) 是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。
用户11029129
2024-10-18
900
C++异常
异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。
用户11029129
2024-10-18
990
生产与消费者模型
  生产消费者模型的本质是讨论数据如何 并发的传递的问题,生活当中其实有很多生产消模型,经典模型比如超市。超市本身是不生产产品的,商品源来自于厂商,而客户源就是我们普通老百姓。而厂商可能不止一家,用户也不止一个,那为什么说超市是经典的模型呢?
用户11029129
2024-10-11
1460
Linux线程同步与互斥
  如果不能保持互斥,那么会发生一些不合逻辑的事情,以下面这段多线程抢票代码为例:
用户11029129
2024-09-24
960
Linux线程基础
  加载到内存中的程序,我们称为进程。我们创建一个进程,简单来说是,分配进程地址空间,加载各种数据,与物理内存之间建立映射关系等。做完这些动作,我们才能说创建了进程,也就是说,创建一个进程的开销(时间空间成本开销)是很大的。
用户11029129
2024-09-24
770
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档