- 博客(122)
- 收藏
- 关注
原创 Linux之shell脚本笔记-one
定义的shell脚本头部有多种写法,具体根基实际系统结构处理,如下:#sed -i 's/\r$//' #可能脚本中有其他字符,将dos字符替换掉。
2025-03-24 17:38:09
298
原创 Docker镜像创建
docker commit -m "提交信息" -a="作者" 容器id 目标镜像名 : [TAG]RUN 表示当创建新容器时在执行两条命令为新容器系统更新&安装vim编辑工具。纯手工方式,容易出错,每次都要进行着三步方式。该方法并不推荐,实际开发中可跟根据实际情况决定是否应用。FROM 表示以ubuntu镜像为基础。3. 将容器保存为新的镜像。
2025-03-22 15:08:50
331
原创 Docker容器数据卷
直接启动一个nginx容器,并且-v指定容器路径 下列指定的容器内部的路径。设置rw可读可写:(该中方式自然可以双向读写)
2025-03-22 15:04:45
1024
原创 Docker容器之网络
首先,通过宿主机创建的容器,可以通过宿主机ping通到容器内部。安装完docker后,会在宿主机创建一个默认的docker0网卡,当运行一个网卡的时候,如果不指定网卡,那么所有的容器都默认使用该网卡进行通信。并且创建容器时会通过veth-pair虚拟技术在宿主机和容器内部创建一对相互映射的网卡,见如下图:创建一个容器运行,下图左宿主机,右容器内,可以看到创建的一对网卡相互映射:容器内部的网卡:宿主机ping容器内ipdocker是如何处理网络访问呢?答案就是通过veth-pair技术实现虚拟网卡的创建。创建
2025-03-22 15:04:13
1136
原创 Docker镜像原理
当构建一个新的镜像时,如果从已知的镜像作为基础增加新功能,那么新的镜像是从base镜像一层一层增生成的。例如,一个基础的centos系统,通过构建一个新的镜像,先增加安装httpd,再增加安装nginx,这个过程其实就是在基础的镜像上再增加层面上来的。中描述,如果都是通过centos镜像再生新的镜像构建,那么镜像1和镜像2共享base镜像。一个容器启动时,新的可写层被加载到镜像的顶部,这一层通常被称为容器层,其余的都叫做镜像层。所有针对容器的改动,无论添加,删除,修改,都只会发生在容器层当中。
2025-03-22 15:02:32
398
原创 Linux之SO_REUSEPORT属性笔记
以上就是SO_REUSEPORT属性的特点,实际使用中利用该属性结合其他相关的多路io高效机制特殊性,在实际使用中结合实际业务场景,从而实现高性能高可用的服务。
2025-03-06 17:46:26
556
原创 Linux之Tcp粘包笔记
利用消息长度,应用层再度读取消息的按照消息长度读取正确的消息内容,跟http中的Content-Length表示传输的数据长度蕾丝。该种方法,也可结合a中的标志,再加上消息长度,就更加的能确保消息的读取的正确性。粘包的问题归根结底是开发者,未能正确区分消息边界导致,跟协议并无多大关系。a.TCP无论发送送什么,都是字节流发送,可能当前的字节流存在上次数据发送的内容,(就是粘包),只要使用消息边界确认就可以避免粘包。b.TCP有Nagle算法会导致粘包问题,但是关闭该算法并不解决粘包问题。
2025-01-24 16:56:49
1222
1
原创 Ubuntu系统使用问题随笔
解决方法:then#/usr/bin/xdg-desktop-menu install gnome-self_ser.desktop # 安装/usr/bin/xdg-desktop-menu uninstall gnome-self_ser.desktop # 卸载elsefi。
2025-01-24 14:20:26
317
原创 Linux内核链表学习录
该宏定义的功能是通过类型TYPE以及成员MEMBER,求解出成员MEMBER在类型TYPE结构中的地址偏移量。(TYPE *)0中,表示将0值强转成TYPE类型的地址,通过->MEMBER指向对应的成员,再通过取地址符&求解其MEMBER成员地址偏移量。虽然同0地址开始,强转成TYPE结构了,尽管结构体可能实际不从0开始,但是成员member相对结构的偏移量是一致的。这就是offsetof的妙用点。图解:/***/})上述宏定义结构解释:ptr:结构中某个成员的地址type:具体结构类型。
2025-01-24 11:40:11
960
原创 RabbitMQ使用随笔
RabbitMQ 是一个开源的消息代理软件,采用了先进的消息队列协议 AMQP(Advanced Message Queuing Protocol)。它主要用于处理分布式系统中各个组件间的消息传递和通信。RabbitMQ 支持多种协议,但 AMQP 是其最常用和核心的协议。
2025-01-20 20:09:54
1178
原创 STL之Vector&Map&List针对erase方法踩坑笔记
如下总结的四类容器,开头都会涉及当前容器的特点,再者就本次针对erase方法的使用避坑总结。vector关联关联容器,存储内存是连续,且特点支持快速访问,但是插入和删除效率比较地(需要找查找和移动)。另外在删除元素是,需注意迭代器的失效情况。上述删除前&删除后结果发现未能实现删除全部的three元素,这是何原因呢?请看下文,经查询发现vecotr容器的erase方法实现有关。
2025-01-13 16:10:27
1248
原创 gin之中间件消息转发使用踩坑记录
上述c.Request直接赋值给Request,给的是指针地址,等同于让拷贝的ctx跟原始的ctx的Request都指向了同一块内存,再加上通过io.ReadAll读取body之后,数据会被清空,从而导致上述S= or F= 为空的异常问题。如上图代码运行结果发现的,因F跟S的程序先后执行顺序导致请求的body均出现异常为空情况。尽管在S协程中使用了ctx.Copy对上下文进行了只读拷贝,仍旧出现上述问题。上述Request是一个指针类型,存储的是Request的地址。b.S先于F执行完成。
2024-05-15 10:15:51
348
原创 Linux之定时器学习笔记(timer_create)
是一个用于创建定时器的系统调用。它允许你创建一个POSIX定时器,用于在未来的某个时间点触发信号或执行回调函数。
2024-02-05 20:31:06
981
原创 工作之踩坑记录
情景:将框架传递的链接地址采用整形保存传输,在i386架构上导致地址比较大,采用atol转型可能导致数据被截断出现异常。方案:采用atoll更大的数据类型进行处理即可避免该问题。
2023-12-13 20:32:20
808
2
原创 Linux内核相关信息杂谈笔记
是一个用于定义读写锁(rwlock)的宏。读写锁是一种特殊的锁机制,允许多个读者同时访问共享资源,但只允许一个写者访问。这有助于提高并发性能,因为多个线程可以同时读取数据,但写操作需要独占性。// 读者加锁// 执行读操作// 读者解锁// 写者加锁// 执行写操作// 写者解锁代码中,定义了一个名为my_rwlock的读写锁,并在中展示了如何使用这个读写锁。读者使用read_lock和加锁和解锁,而写者使用write_lock和。
2023-12-10 18:50:49
1194
原创 Linux之网络数据包各层协议详解
本文通过先描述Http协议相关知识,后再通过一个具体的http请求来解析网络数据包每层协议结构以及实际对应的网络协议数据的数据详解。
2022-10-16 18:58:09
2345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人