- 博客(28)
- 收藏
- 关注
原创 Linux的文件系统
文件要以「隐式链表」的方式存放的话,实现的方式是文件头要包含「第一块」和「最后一块」的位置,并且每个数据块里面留出一个指针空间,用来存放下一个数据块的位置,这样一个数据块连着一个数据块,从链头开是就可以顺着指针找到所有的数据块,所以存放的方式可以是不连续的。在 Linux 文件系统就采用了位图的方式来管理空闲空间,不仅用于数据空闲块的管理,还用于 inode 空闲块的管理,因为 inode 也是存储在磁盘的,自然也要有对其管理。当值为 0 时,表示对应的盘块空闲,值为 1 时,表示对应的盘块已分配。
2024-11-30 21:03:52
1661
2
原创 OSI七层模型和TCP/IP五层模型详细介绍
通过IP寻址来建立两个节点之间的连接,之后把运输层产生的报文段或用户数据报封装成分组和包进行传送,在发送分组时不需要先建立连接,每一个分组独立发送,与其前后的分组无关。两台设备之间的数据传输,可以看成是在一条管道上进行的,传送的数据单位是帧(每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)),链路层保证被传输数据的正确性。数据通信,建立主机端到端的链接,为会话层和网络层提供端到端的可靠和透明的数据传输,确保数据传输到网络层。为用户提供各种请求服务,以及提供各种应用程序和网服务的接口。
2024-11-24 21:24:53
1736
原创 http和https详解
HTTP是一种应用层协议,基于TCP/IP实现HTTP1.0,HTTP1.1,HTTP2.0均为TCP实现HTTTP3.0为UDP实现网页将数据保存在主机硬盘上存在安全风险,防止访问不安全网页时,将病毒写入主机,所以浏览器禁止网页访问主机硬盘,因此失去了持久化存储,Cookie是浏览器提供的一种让程序员才本地存储的能力。
2024-11-24 21:24:09
1257
1
原创 服务控制管理器
在Windows操作系统中,服务控制管理器(Service Control Manager,SCM)是一个核心组件,用于管理本地和远程计算机上的服务。它提供了一个接口,允许其他程序(如服务控制面板、服务安装程序等)来启动、停止、暂停、恢复和查询服务。在这个示例中,我们尝试打开本地计算机的服务控制管理器,并检查是否成功。如果失败,我们输出错误代码。最后,我们关闭服务控制管理器的句柄。函数成功执行,它将返回一个服务控制管理器的句柄(在C++中,可以使用Windows API函数。来打开服务控制管理器。
2024-10-22 20:08:20
464
原创 c++grpc详解
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C,PHP 和 C# 支持.gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等 特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
2024-10-07 19:51:03
2143
原创 c++11新特性——endable_shared_from_this
继承 std::enable_shared_from_this ,则会为该类 T 提供成员函数: shared_from_this。通过继承enable_shared_from_this,然后调用share_from_this(),返回父类enable_shared_from_this的指针,然后shared_ptr在构造是检查是否可以将其转化来判断是否继承enable_shared_from_this。2个非共享的share_ptr指向同一个对象,未增加引用计数导对象被析构两次。
2024-09-12 17:22:17
417
原创 c++11——share_ptr的助手weak_ptr
weak_ptr 是 C++ 标准库中的一个智能指针类,它是 share_ptr 的一个辅助类,用于实现弱引用,从而避免循环引用和内存泄漏等问题。weak_ptr 的设计目的是为了实现对对象的弱引用,即不阻止对象被销毁,也不保证对象的生命周期。它通过使用 weak_ptr 指针来跟踪对象的生命周期,当对象被销毁时,weak_ptr 会自动释放所占用的资源。weak_ptr 的主要用途是实现弱引用,从而避免循环引用和内存泄漏等问题。
2024-09-12 17:11:32
656
原创 libgo框架介绍
官方地址使用libgo编写并行程序,即可以像golang、erlang这些并发语言一样开发迅速且逻辑简洁,又有C++原生的性能优势,鱼和熊掌从此可以兼得。TODO:libgo 后续会逐步完善或增加的功能;libgo:源码实现的主目录,关于协程和调度策略的实现都在该目录下;test:测试代码;tutorial:libgo 使用教程代码;vs_proj:VS 环境下如何使用libgo。libgo目录下:task:协程的相关实现;scheduler:协程调度的实现;
2024-08-14 00:36:47
789
原创 分布式文件系统FastDFS入门
分布式文件系统是把数据存储在很多的主机节点上上,通过程序来形成一个完整的文件系统。分布式文件需要网络来数据传输,通过云服务上的管理程序来进行存储数据节点的获取和存储以及用户的访问和上传。布式文件系统有GFS、HDFS、Lustre、FastDFS、GlusterFS、GPFS、Ceph、淘宝TFS和腾讯TFS等,本文将对FastDFS进行介绍。
2024-08-13 22:26:39
1284
原创 鸿蒙开发基础-组件基础
ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。● AktTS提供原有前端范畴内的一切TypeScript和JavaScript的类型及方法支持● 不是所有都支持- 比如解构不支持(Next版本)● ArkTS采用声明式UI的方法来绘制页面,设置属性,绑定事件struct用来描述UI,包含UI的所有信息,注意不能有继承关系或重名@Component。
2024-08-11 18:38:08
801
原创 Windows下的多线程
CreateThread 是一种微软在 Windows API 中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程。线程终止运行后,线程对象仍然在系统中,必须通过CloseHandle 函数来关闭该线程对象。常见的内核对象 : 进程、线程、文件,存取符号对象、事件对象、文件对象、作业对象、互斥对象、管道对象、等待计时器对象,邮件槽对象,信号对象。调用创建内核对象的函数后,该函数会返回一个句柄,它标识了所创建的对象。标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的。
2024-08-11 18:35:14
1055
原创 Windows内核对象,句柄,信号量和关键代码段
这时,进程退出只会减少当前进程对引用的所有内核对象的使用计数,而不会减少其他进程对内核对象的使用计数(即使该内核对象由当前进程创建)。内核对象 A,B 的引用计数减为 0,被操作系统内核销毁,而进程 1只减少自身对 C,D 的引用计数,不会影响进程 2 对 C,D 的引用计数,此时 C,D 引用计数不为 0,不会被销毁。就是相当于操作系统多了一个内存块,这个内存块就是内核对象也是此时内核对象被创建,其数据结构中的引用计数初始为 1(这样理解:只要内核对象被创建,其引用计数被初始化为 1)
2024-08-11 18:30:52
819
原创 c++——atomic以及内存顺序详解
原子性操作库(atomic)是C++11中新增的标准库,它提供了一种线程安全的方式来访问和修改共享变量,避免了数据竞争的问题,对值进行在多线程的行为明确定义,使得不同的线程访问这个包含的值不会导致数据竞争,但是只支持基本数据类型,包括boolcharshortintlonglong long等基本数据类型,以及intmax_tuintmax_tintptr_t等扩展类型,对于用户自定义类型,需要使用 std::atomic。
2024-08-11 18:05:58
922
原创 Windows下的TCP和UDP网络编程
可以读写内核没有处理的ip数据报,可以直接传输给需要的应用程序。最大监听数目,执行到listen,未执行到accept。sockaddr_in是面向程序员的使用的。该部可以接受连接放到队列,但是不会处理数据。sockaddr是面向操作系统的使用的。10061–计算机拒绝访问(端口问题)需要引入头文件winsock2.h。传输的的数据可能丢失,也可能损毁。可以通过返回的错误编码去查找错误。10060–ip地址错误。传输过程中数据不会丢失。强调快速传输而非顺序。第6个客户端无法连接。
2024-07-28 18:06:20
626
原创 TLS--线程本地存储
线程局部存储(TLS),是一种变量的存储方法,这个变量在它所在的线程内是全局可访问的,但是不能被其他线程访问到,这样就保持了数据的线程独立性。
2024-07-25 22:02:04
387
原创 c++中grpc简单使用---函数介绍及其代码演示
表示一个 gRPC 通道,客户端通过这个通道与服务端进行通信。:创建一个 gRPC 通道。target是服务端地址,例如 “localhost:50051”。是可选的通道参数,例如超时时间、压缩方式等。:表示 gRPC 通道的参数,例如超时时间、压缩方式等。:表示一个 gRPC 客户端上下文,用于存储请求和响应的相关信息。:表示 gRPC 请求的状态,包括请求是否成功、错误代码和错误信息等。:表示 gRPC 存根选项,用于配置 gRPC 存根的行为。
2024-07-24 20:10:07
2767
原创 七大分布式系统架构
引入了负载均衡,应用以集群的方式进行运作进行横向扩展将数据库读写操作分散到不同的节点上,数据库服务器搭建主从集群,一读一写,或者一主多读。引入缓存,实现冷热分离,将热点数据放到缓存中快速响应分布式数据架构:数据库的数据被拆分,数据库数据分布式存储,分布式查询,分布式处理微服务是一种架构风格,按照业务板块来划分应用代码,使用单个应用的职责更清晰,相互之间可以做到独立的升级迭代。
2024-07-23 21:50:38
1116
原创 C++异常详解
在项目中会对异常进行规范管理,所以实际中都会定义一套继承的规范体系。这样抛出的就是继承的派生类对象,捕获一个基类就可以了。// 服务器开发中通常使用的异常继承体系public:,_id(id){}protected:int _id;return str;
2024-06-06 22:08:38
285
原创 鸿蒙开发基础-工程结构
应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。应用模型包含几个要素应用组件-应用进程-应用线程-应用任务管理-应用配置文件1.是一种包含UI界面的应用组件,主要用于和用户交互。包含UI界面绘制,也是系统调度基本单位,可以给用户提供绘制界面的窗口。
2023-12-27 22:11:32
483
1
原创 gin框架
Gin是一个快速而高效的Go框架,用于构建Web应用程序。它具有简单而强大的功能,如路由、中间件、模板引擎等。Gin提供了一个简单易用的API,使得开发者可以快速地构建Web应用程序。使用router.GET()、router.POST()等方法定义路由,")})在Gin框架中,路由钩子(Hook)是一种在请求处理之前或之后执行特定操作的方法。路由钩子可以用于设置请求头、记录日志、处理异常等。在Gin框架中,可以使用正则表达式或字符串来绑定URL参数,例如/user/:id。
2023-12-18 23:07:33
1218
1
原创 HTML基础
p标签和p标签之间会有一个间隙,段落前面没有缩进,会根据浏览器宽度来排版,html 内容首尾处的换行, 空格均无效. 在 html 中文字之间输入的多个空格只相当于一个空格. html 中直接输入换行不会真的换行, 而是相当于一个空格.2.target: 打开方式. 默认是 _self. 如果是 _blank 则用新的标签页打开.其中html是根标签,head是页面属性,body是页面上显示的内容,title是页面标题。1 alt: 替换文本. 当文本不能正确显示的时候, 会显示一个替换的文字.
2023-12-17 14:14:57
938
1
原创 网络基础HTTP
1.协议:协议是一种 “约定”,这种约定可以保证, 一端发送时构造的数据, 在另一端能够正确的进行解析, 就是ok的. 这种约定, 就是 应用层协议。将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。2.header:请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;3.Body:空行后面的都是正文,Content-Length来标识Body的长度;3.从服务拿数据一般使用GET,当然,如果是从服务器上面拿大文件,用POST方法。
2023-12-12 22:45:14
399
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人