自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 详解ConcurrentHashMap

Iterator弱一致性:ConcurrentHashMap的Iterator是弱一致性的,即在迭代过程中,如果有其他线程对ConcurrentHashMap进行了修改,Iterator可能不会抛出ConcurrentModificationException异常,但不能保证迭代到最新的修改。分段锁机制:ConcurrentHashMap使用了分段锁机制,将整个存储空间分成多个段,每个段都可以被不同的线程独立锁定,实现了更细粒度的并发控制。不同的线程可以同时访问不同的段,从而提高并发性能。

2024-07-29 12:12:11 486

原创 为什么ArrayList是线程不安全的

因此,为了保证线程安全,需要对访问和修改 ArrayList 的操作进行同步控制。例如,当一个线程在修改 ArrayList 的同时,另一个线程也在进行修改操作,这样就会导致数据的不一致性和不可预测性。使用线程安全的集合类,如 Vector 或 CopyOnWriteArrayList,它们提供了同步控制机制,可以确保多个线程对集合的访问和修改是安全的。使用显式的同步控制,可以使用 synchronized 关键字或者 Lock 接口进行同步控制,保证多个线程对 ArrayList 的访问和修改是同步的。

2024-07-18 10:53:18 446

原创 详解计算机网络OSI 七层模型

OSI(Open Systems Interconnection,开放系统互联)七层模型是国际标准化组织(ISO)制定的网络通信模型,旨在规范网络通信的不同功能和服务。

2024-07-13 23:53:55 602

原创 详解tcp四次挥手

TCP 四次挥手的过程确保连接的有序关闭。每次挥手都有明确的意义和作用,确保双方能够正确接收到对方的报文,从而保证了连接的可靠关闭。这种机制不仅避免了数据丢失,还提供了连接管理和流量控制功能。

2024-07-12 10:35:50 918

原创 详解tcp三次握手

TCP 三次握手的过程确保了连接的可靠性。每次握手都有明确的意义和作用,确保双方都能正确接收到对方的报文,从而保证了连接的可靠建立。这种机制不仅保证了数据传输的顺序和完整性,还提供了连接管理和流量控制功能。

2024-07-11 11:35:30 535

原创 常见消息队列及其对比

RabbitMQ:适用于复杂路由和可靠性需求高的场景。Kafka:适用于高吞吐量和实时数据处理的场景。ActiveMQ:适用于需要多协议支持和与JMS兼容的企业级应用。Redis:适用于高性能和低延迟的场景,但需注意内存限制。

2024-07-09 14:48:20 700

原创 服务器常用限流算法精简学习

如果想要实现这个算法的话也很简单,准备一个队列用来保存请求,然后我们定期从队列中拿请求来执行就好了(和消息队列削峰/限流的思想是一样的)。不过现在桶里装的是令牌了,请求在被处理之前需要拿到一个令牌,请求处理完毕之后将这个令牌丢弃(删除)。②每个窗口内,服务器只允许处理固定数量的请求。固定窗口其实就是时间窗口,其原理是将时间划分为固定大小的窗口,在每个窗口内限制请求的数量或速率,即固定窗口计数器算法规定了系统单位时间处理的请求数量。的请求, 如果当前窗口的请求计数总和超过了限制的数量的话就不再处理其他请求。

2024-07-05 14:20:34 520

原创 操作系统常见的内存管理方式

每个页的大小是固定的,但进程的内存需求可能不是固定大小的,这会导致页内未使用的部分成为内部碎片。:由于段的大小可以不同,随着时间的推移,内存中会出现许多小的空闲区,导致外部碎片。段的大小可以根据程序的逻辑结构灵活定义,而每个段内的页具有固定大小,有助于简化内存分配和管理。即使有足够的内存可用,这些内存可能无法满足一个大块内存的需求,因为这些内存分散在不同的区域。:这种机制允许段的大小可以动态调整,适应程序不同的数据结构和代码模块,同时页的固定大小简化了内存管理中的很多操作。

2024-07-02 09:44:01 522

原创 MySQL存储引擎InnoDB索引详解

辅助索引是基于非主键列的索引,能够快速地定位到指定的记录,并通过访问聚集索引来获取其他列的值。聚集索引(Clustered Index):在InnoDB中,表的主键是聚集索引,也就是说数据实际上是按照主键的顺序存储的。合理的索引设计能够提高查询的性能,减少磁盘IO,但不当的索引使用可能会导致性能下降。覆盖索引(Covering Index):在辅助索引上包含了所有查询需要的列时,可以使用覆盖索引。唯一索引(Unique Index):InnoDB支持唯一索引,保证索引列的值在整个表中是唯一的。

2024-07-01 13:44:51 655

原创 HashMap的插入及扩容过程(必看)

Hashmap扩容机制(必看)

2024-06-28 11:29:12 769

原创 垃圾回收器CMS与G1对比

在Java应用程序的性能优化中,垃圾回收器(Garbage Collector, GC)扮演着至关重要的角色。CMS(Concurrent Mark-Sweep)和G1(Garbage First)是两种常见的垃圾回收器,它们各有优缺点,适用于不同的应用场景。本文将详细对比这两种垃圾回收器,帮助开发者选择适合自己应用的GC策略。

2024-06-27 09:34:54 850

原创 Spring和Spring Boot之间的区别

Spring Boot是Spring的一个扩展,它旨在简化Spring应用程序的开发和部署。Spring是一个开源的Java框架,它提供了大量的功能和工具,用于开发Java应用程序。Spring的核心是一个轻量级的容器,可以管理对象的生命周期和依赖关系。总之,Spring Boot是建立在Spring框架的基础上的一个扩展,旨在提供更简单和快速的开发体验。快速起步:Spring Boot提供了很多起步依赖(Starter),可以快速集成常用的第三方库和框架,减少了集成的复杂性。

2024-06-26 13:56:32 283

原创 Git 的基本概念和使用方式

远程操作:使用命令git remote添加远程仓库,使用命令git pull获取远程仓库的最新代码,使用命令git push将本地的代码推送到远程仓库。分支操作:使用命令git branch创建新的分支,使用命令git checkout切换到不同的分支,使用命令git merge合并分支。版本回退:使用命令git log查看提交记录,使用命令git reset回退到某个提交。提交修改:使用命令git commit将暂存区的修改提交到版本历史中。初始化仓库:使用命令git init在本地创建一个新的仓库。

2024-06-24 10:39:35 658

原创 如何使用Langchain-Chatchat跑本地模型

首先cd /root/Langchain-Chatchat/configs (此处需要看你linux本地存储位置)此处更换为模型的绝对路径(也可以不更换,因为最后模型路径我更改为绝对路径了,并不会使用MODEL_ROOT_PATH)找到model_config.py文件,右键用记事本打开(使用xftp可视化文件管理)LLM_MODELS更换为你本地的模型名称,此处以chatglm3-6B为例。保存后运行 python startup.py -a。此处更换为Embedding模型名称。

2024-05-17 16:15:32 355

空空如也

空空如也

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

TA关注的人

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