- 博客(132)
- 收藏
- 关注
原创 计算机网络—TCP
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:再进行数据传输之前,通信的两端需要建立一个可靠的连接,通过三次握手来建立可靠的:TCP 可以保证一个报文一定能够到达接收端,通过序列号、确认应答和重传等机制来确保数据的可靠传输字节流:指的是在TCP连接中,数据被视为连续的字节流而不是分割成固定大小的数据块或消息。当应用程序发送数据时,TCP会将这些数据拆分成较小的数据块,并为每个数据块添加TCP头部信息,然后将它们作为字节流发送。
2023-08-08 21:37:42
2162
原创 操作系统—内存管理
交换空间(Swap Space)是计算机系统中用于支持虚拟内存管理的一种存储区域,通常位于硬盘或固态硬盘上。当物理内存(RAM)不足以容纳所有运行中的程序和数据时,操作系统会将一部分数据(通常是最近较少使用的页面或段)从物理内存移出到交换空间,从而为其他程序或数据腾出内存空间。这个过程被称为“交换”(Swapping)或“页面交换”(Page Swapping)。交换空间的主要作用是扩展可用内存资源,使计算机系统能够运行更多的程序或处理更大的数据。
2023-08-05 20:36:33
246
原创 Redis—数据结构
总之,在 Redis 6.2 版本以后,Hash 类型数据结构中的 Listpack 底层实现是一种紧凑的连续内存数据结构,适用于存储较小的哈希表。Listpack 是一种紧凑的、可变长度的、连续内存数据结构,用于存储有序的值列表。:虽然 Redis 中的布隆过滤器是基于特殊的数据结构实现的,但我们也可以使用 Bitmap 来实现简化版的布隆过滤器。Redis 的有序集合(Sorted Set,简称 zset)是一种将成员与分数关联的数据结构,成员之间以分数进行排序,每个成员的分数都是唯一的。
2023-08-01 09:57:18
928
原创 MySQL执行一条select语句,执行过程怎么样
优化器主要负责将 SQL 查询语句的执行方案确定下来,基于查询成本的考虑, 选择查询成本最小的执行计划。根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;
2023-07-31 08:50:29
372
原创 Golang并发控制
开发 go 程序的时候,时常需要使用 goroutine 并发处理任务,有时候这些 goroutine 是相互独立的,需要保证并发的数据安全性,也有的时候,goroutine 之间要进行同步与通信,主 goroutine 需要控制它所属的子goroutine。
2023-07-23 20:31:12
868
原创 go函数参数传递到底是值传递还是引用传递?
go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!
2023-07-04 14:13:37
464
原创 Java中Stack类,Queue类,LinkedList类的总结大全
【代码】Java中Stack类,Queue类,LinkedList类的总结大全。
2023-05-20 09:10:00
208
原创 动态规划子序列问题模板
在子数组 arr1[0…i] 和子数组 arr2[0…j] 中,我们要求的子序列长度为 dp[i][j]。在子数组 array[i…j] 中,我们要求的子序列的长度为 dp[i][j]。
2023-05-12 16:33:59
203
原创 使用whisper生成音频字幕——前期准备
最近我们要写一个把没有字幕的音频生成字幕的APP,前期调研的很多方式,使用whisper可以实现,这篇文章就是说一些前期准备工作,我就不自己再写一篇了,参考以下两篇文章就行了。
2023-04-25 17:32:34
377
原创 Google浏览器翻译无法正常使用解决
最近在看很多英文文档,但是google浏览器翻译无法正常使用,所以就寻找一些方法,分享出来,供大家使用,
2023-04-21 08:37:28
2858
3
原创 使用Redis中的Hash数据结构存储结构体实例
最近在做一个项目,但是一个接口访问速度特别慢,我第一次用Apifox跑本地去访问的时候,这个时间达到了惊人的17秒,这太慢了,那怎么办呢?考虑了一些,需要用Redis,于是就去了解并学习了redis,再到往项目上使用,一共差不多花了两天时间,说是两天,但其实就一天,因为那两天里每天都有两节大课,最后终于使用成功,测试了果然极大地降低了访问速度。
2023-04-20 09:41:51
358
原创 Nginx简介
Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、PHP等,但不支持java。如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端想要访问Internet,这个时候需要用到代理服务器,这种代理服务就称为正向代理。Nginx是高性能的HTTP和反向代理的web服务器,处理高并发的能力十分强大,能经受高负载的考研,有报告表明能能支持高达50000个并发连接数。为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。
2023-04-19 09:33:32
1972
原创 docker镜像命令
有的时候呢,我们需要对一个镜像进行分类或者版本迭代操作,比如我们一个微服务已经打为docker镜像,但是想根据环境进行区分为develop环境与alpha环境,这个时候呢,我们就可以使用Tag,来进对镜像做一个标签添加,从而行进区分;任何装docker的地方加载镜像保存文件,使其恢复为一个镜像。此处还需再多查阅一些资料,这只是最简单运行镜像的方式。将镜像保存为tar压缩文件,方便镜像转移和保存。
2023-04-18 09:55:52
153
原创 Linux常用命令
为了避免这种情况,可以在使用locate之前,先使用updatedb命令,自动更新数据库。控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及进入Insert mode下,或者到last line mode。su 用于用户之间的切换。rwx:r代表可读,w代表可写,x代表该文件是一个可执行文件,如果rwx任意位置变为-则代表不可读或不可写或不可执行文件。示例:给aaa.txt文件权限改为可执行文件权限,aaa.txt文件的权限是-rw-------第二段(3位):代表拥有者所在的组,组员的权限。
2023-04-17 19:47:15
361
1
原创 Linux文本处理
掌握文本处理套路 并 熟练运用文本处理命令 ,对于 提升工作效率 意义重大。本文以一个例子介绍如何运用grep,awk,sed,cut等命令进行文本处理,快速完成原本很繁琐的操作。
2023-04-17 09:50:46
109
原创 Redis中hash(哈希)的常用命令
Redis hash是一个string类型的field(字段)和value(值)的映射表,哈希特别适合用于存储对象。Redis中每个hash可以存储2^32-1键值对(40多亿)。
2023-04-13 21:45:37
1995
原创 Go语言unsafe包详解
Go语言的unsafe包提供了一些不安全的操作,可以直接操作指针和内存,这些操作在一些特殊场景下非常有用。但是,由于这些操作不受Go语言的类型系统和内存管理机制的限制,因此使用不当可能会导致内存泄漏、数据损坏等问题,需要谨慎使用。Alignof函数返回一个类型的对齐方式,单位为字节。String函数返回一个指针指向的内存区域的字符串。Sizeof函数返回一个类型的大小,单位为字节。Add函数返回一个指针加上一个偏移量后的新指针。Slice函数返回一个指针指向的内存区域的切片。
2023-04-13 15:06:06
616
原创 常用调试golang的bug以及性能问题的实践方法
所以我们要是想得到cpu性能,就是要获取到当前进程的profile文件,这个文件默认是30s生成一个,所以你的程序要至少运行30s以上(这个参数也可以修改,稍后我们介绍)这里面能够通过pprof查看包括(阻塞信息、cpu信息、内存堆信息、锁信息、goroutine信息等等), 我们这里关心的cpu的性能的profile信息.2、如果此时在top指令查询内存的时候,如果依然是800+MB,说明垃圾回收器回收了应用层的内存后,(可能)并不会立即将内存归还给系统。您可以在秒GET参数中指定持续时间。
2023-02-15 17:53:51
632
3
原创 SSL certificate problem: unable to get local issuer certificate解决办法
这是由于当你通过HTTPS访问Git远程仓库的时候,如果服务器上的SSL证书未经过第三方机构认证,git就会报错。原因是因为未知的没有签署过的证书意味着可能存在很大的风险。在github上用https克隆代码时报了如下错误。然后在执行克隆操作就成功了。
2022-12-24 14:33:54
28275
13
原创 golang_逃逸分析
所谓逃逸分析(Escape analysis)是指由编译器决定内存分配的位置,不需要程序员指定。函数中申请一个新的对象如果分配在栈中,则函数执行结束可自动将内存回收如果分配在堆中,则函数执行结束可交给GC(垃圾回收)处理有了逃逸分析,返回函数局部变量将变得可能,除此之外,逃逸分析还跟闭包息息相关。1.栈上分配内存比在堆中分配内存有更高的效率2.栈上分配的内存不需要GC处理3.堆上分配的内存使用完毕会交给GC处理4.逃逸分析目的是决定内分配地址是栈还是堆5.逃逸分析在编译阶段完成。
2022-12-08 16:31:15
1713
原创 golang垃圾回收原理
所谓垃圾就是不再需要的内存块,这些垃圾如果不清理就没办法再次被分配使用,在不支持垃圾回收的编程语言里,这些垃圾内存就是泄露的内存。Golang的垃圾回收(GC)也是内存管理的一部分。简单的说,垃圾回收的核心就是标记出哪些内存还在使用中(即被引用到),哪些内存不再使用了(即未被引用),把未被引用的内存回收掉,以供后续内存分配时使用。下图展示了一段内存,内存中既有已分配掉的内存,也有未分配的内存,垃圾回收的目标就是把那些已经分配的但没有对象引用的内存找出来并回收掉:上图中,内存块1、2、4号位上的内存块已
2022-12-05 11:12:47
696
原创 go内存分配原理
编写过C语言程序的肯定知道通过malloc()方法动态申请内存,其中内存分配器使用的是glibc提供的ptmalloc2。 除了glibc,业界比较出名的内存分配器有Google的tcmalloc和Facebook的jemalloc。二者在避免内存碎片和性能上均比glibc有比较大的优势,在多线程环境中效果更明显。Golang中也实现了内存分配器,原理与tcmalloc类似,简单的说就是维护一块大的全局内存,每个线程(Golang中为P)维护一块小的私有内存,私有内存不足再从全局申请。另外,内存分配与GC(
2022-12-04 15:54:10
663
2
原创 Golang协程调度
Goroutine调度是一个很复杂的机制,尽管Go源码中提供了大量的注释,但对其原理没有一个好的理解情况下去读源码收获不大。下面尝试用简单的语言描述一下Goroutine的调度机制。
2022-11-25 09:44:28
839
原创 golang_select
select语句中除default外,每个case操作一个channel,要么读要么写select语句中除default外,各case执行顺序是随机的select语句中如果没有default语句,则会阻塞等待任一caseselect语句中读操作要判断是否成功读取,关闭的channel也可以读取。
2022-11-24 14:56:41
3563
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅