自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(48)
  • 资源 (9)
  • 收藏
  • 关注

原创 docker和k8s

container有自己的ip,它的ip映射到主机的docker0这个虚拟网卡上,它们能访问外网,外网不能访问它们(外网要访问,可以加通过端口映射,将容器端口映射到主机端口上)。原理:当 Docker 守护进程启动时,会在主机上创建一个名为docker0的虚拟网桥。容器在使用bridge模式时,会创建一对虚拟网卡,一端在容器内,通常命名为eth0;另一端在主机的docker0网桥上。容器通过docker0网桥与外部网络通信,主机充当容器与外部网络之间的桥梁。

2025-02-26 11:28:01 1308

原创 二叉搜索树

二叉搜索树的种类、操作和特点

2024-10-25 15:29:33 788 1

原创 海量数据在有限资源上处理的方法

面试中常见的海量数据处理问题

2024-10-22 21:49:26 965

原创 spring三级缓存

三级缓存是为了解决spring bean的循环依赖问题

2024-10-08 15:21:53 438

原创 动态规划的技巧

我关于动态规划的个人刷题经验

2024-10-04 10:50:19 880

原创 二叉树算法

二叉树的常识算法

2024-09-15 15:01:37 1270

原创 按位异或运算的技巧

异或运算的目的是判断两个数是不是不同。假设a、b、c都是整数,则。

2024-09-10 14:04:07 618

原创 事务的原理

锁定少:一阶段不强锁定,通过数据前后镜像来回滚,RM锁定粒度和时长与传统2PC不同。无侵入:对业务代码无侵入,开发者无需关心事务的具体实现细节,只需关注业务逻辑本身。高性能:可以把2阶段异步化,这样只处理了一阶段就返回响应,然后异步慢慢处理二阶段。

2024-09-08 17:39:34 892

原创 redis

当AOF文件很大之后,会在一个子进程里进行rewrite,相当于做了压缩,rewrite的同时会正常write,这样会产生两个文件:rewrite的压缩小文件和正常write的文件,当rewrite完成后,就把正常write的文件覆盖,新的日志写入到rewrite完后的文件中。redis的“网络请求+kv处理”一直是单线程,因为redis的瓶颈在内存而不是CPU,用多线程帮不了忙,还需要处理线程同步的问题,用单线程的话,还不用考虑上下文切换的性能开销。redis4可以用unlink来异步删除缓存的大对象。

2024-09-06 20:09:23 1428

原创 双指针算法

用两个指针,在数据结构中遍历和操作,以高效地解决问题。一般有快慢指针、左右指针这2种方式。

2024-09-05 17:51:53 360

原创 Cookie/session/token/jwt

1. cookie长度有限制,一般最大4k,存储在浏览器在中,受同源策略限制,不能跨域访问。 一般是明文传输,容易被篡改,不要在里面放用户名、密码等敏感信息。 每次请求,浏览器会自动带上cookie。2. session存储在服务端,占用服务端的资源。 客户端通过cookie中的会话id与服务端的session关联,也可以把sessionId放到url、隐藏表单中传给服务端。 相对安全,因为关键信息都存储在服务器端。3. token客户端每次请求都带上token,服务器通过一定的规则

2024-09-04 13:09:43 501

原创 缓存读写策略

我看到过两种分类方式,其实大同小异,都是按DB和缓存先处理谁(或者说以谁为主)来分的,只是角度不同,为了加深理解,都记下来吧。读的时候,如果缓存里读到了,就直接返回读到的结果,这一步是通用的,下面就不赘述“读”时“从缓存读到”的情况了。

2024-09-01 20:44:44 540

原创 Spring Bean的生命周期

1. bean的作用域singleton:单例模式,spring bean默认就是这个模式。 prototype:每次请求都会创建一个新的bean。 request:每次http请求都会创建一个新的bean,该bean在当前http request内生效。 session:每次http请求都会创建一个新的bean,该bean在当前http session内生效。 globle-session:全局session作用域。2. bean生命周期实例化 属性赋值 初始化 销毁2.1. 实

2024-08-31 14:12:31 372

原创 IO多路复用

需要处理较多文件描述符,但又不想受到select最大数量限制的场景下可以使用。高并发的网络服务器、分布式系统等需要同时处理大量连接的应用程序。适用于低并发场景,或者对性能要求不高的小型应用程序。

2024-08-30 12:51:12 382

原创 Kafka

用菜鸟驿站来类比kafka。

2024-08-29 11:58:26 1240

原创 缓存失效问题-雪崩/击穿/穿透

一个热点数据在缓存里失效,很多请求直接访问数据库,数据库里有数据。访问的数据在缓存和数据库里都没有。

2024-08-28 09:52:15 382

原创 跨域请求和同源策略

一个网页中的脚本尝试向不同源的服务器发起请求时,就称为跨域请求。例如,网页http://a.com中的脚本向http://b.com发起的请求就是跨域请求。

2024-08-27 19:44:30 319

原创 理解raft

介绍了分布式一致性算法raft,结合大家熟知的三国故事让raft的原理更容易理解。

2024-08-25 15:17:42 930

原创 Java类加载器

开发人员可编写自己的类加载器,以实现灵活的类加载策略,如加解密字节码、热部署(运行时替换类)、远程加载(加载网络上的类)、隔离类(避免冲突和安全)。若未指定,自定义类加载器的父加载器默认是应用程序类加载器。可以指定自定义类加载器是扩展、应用程序、其他自定义类加载器作为父加载器。不能指定启动类加载器作为父加载器。启动核心无法动,扩展加载扩展类。应用加载开发类,自定灵活随便搞。启动:超市仓库,存放核心货物,对应加载核心类库,神秘不可见。扩展:进口商品区,带来特色商品,如加载扩展类库增添功能。

2024-08-24 14:27:11 611

原创 Java的强软弱虚引用

JVM宁愿死,都不会回收。如果堆内存被强引用占满,JVM会OOMError、甚至崩溃,但就是不会去回收强引用。强引用就是这么强。

2024-08-22 14:50:17 431

原创 理解零拷贝

零拷贝(Zero-copy)是一种旨在减少数据在计算机里复制次数的方法,以提高数据传输的效率。下面用从硬盘读取一个文件,通过网络发送出去的场景来介绍零拷贝。

2024-08-22 10:26:15 395

原创 JVM内存区域和GC

由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。它可以在满足短停顿时间的同时,保持较高的吞吐量,能够有效地处理大内存和多处理器环境下的垃圾回收问题。它的目标是达到一个可控制的吞吐量,即运行用户代码的时间与垃圾回收时间的比例。进行垃圾回收时,会暂停所有用户线程,使用多个线程进行垃圾回收操作,比Serial的垃圾回收时间短。一个较小的内存空间,是当前线程所执行的字节码的行号指示器。

2024-08-21 11:25:13 1252

原创 深入单例模式

上来就先实例化一个对象,好处是代码简单,坏处是这个对象后面如果一直用不到,就是个浪费。return a;

2024-08-20 09:15:58 548

原创 Java动态代理

静态代理就是B类中用A类去真正地做。正式点说就是,手动创建代理类,实现与目标对象相同的接口,并在代理类中调用目标对象的方法,同时可以在调用前后添加额外的逻辑。这里主要介绍动态代理,有两种常见的动态代理方式。Spring的AOP中,如果目标对象实现了接口,则用JDK动态代理,否则采用CGLIB动态代理。

2024-08-18 11:54:48 737

原创 Java零碎知识

/ true// false// false注意:Float、Double没有用到缓存。

2024-08-18 11:28:26 272

原创 常见Java集合

TreeMap的key不能空,value可为空;TreeSet是包了TreeMap且只用它的key,所以TreeSet的元素不能为空;HashMap的key、value都可以为空;HashTable包了HashMap,但它为了线程安全,key、value都不能为空;HashSet包了HashMap且只用它的key,所以HashSet的元素可以为空;ConcurrentHashMap的key、value为了线程安全,都不能为空;

2024-08-16 08:23:09 1000

原创 Java IO

上面表中为了简单,只写了输入的,输出的流与输入是一一对应的(input对应output、reader对应writer)。DataInputStream读取基本类型(如int、float等);ObjectInputStream读取复杂对象,也就是用于序列化/反序列化的场景。FilterInputStream/FilterReader 可用于数据进行加密、压缩、转换,Buffered的那几个类就是继承了Filter的这些类来实现的。

2024-08-15 13:47:40 625

原创 操作系统内存管理

操作系统中的进程空间,也称为进程地址空间,是指为每个进程分配的独立的虚拟内存区域。进程空间为每个进程提供了一种隔离和保护的机制,使得不同进程之间不会相互干扰。每个进程都认为自己拥有整个地址空间,但实际上是通过操作系统的内存管理机制实现的虚拟映射。打个比方,进程空间就像每个进程自己的“独立房间”,房间里有不同的“区域”用来存放各种东西,而且每个房间之间是相互隔开的,保证了各自的“隐私”和“安全”。例如,进程 A 不能直接访问进程 B 的内存空间,避免了数据混乱和错误。

2024-08-14 12:30:00 415

原创 进程和线程

进程:资源分配的最小单位,这里的资源指内存。线程:调度和执行的最小单位,即CPU隔离。协程:用户态的轻量级线程。纤程是Windows系统对协程的一个具体实现,而协程是一个更广泛的概念,由编程语言或运行时库支持。一个线程可以有多个纤程。用户态:是指程序运行时的普通状态。在用户态下,程序只能访问有限的资源和执行受限的操作,比如进行一些基本的计算、访问自身的内存空间等。这是为了保证系统的稳定性和安全性,防止用户程序对系统造成破坏或非法访问关键资源。内核态:则具有更高的权限。

2024-08-12 19:28:46 720

原创 VPC虚拟私有云

VPC即虚拟私有云(Virtual Private Cloud)是在公有云上创建的一个逻辑隔离的网络。VPC是对网络资源的一种抽象,提供类似于操作系统的虚拟内存的功能,让每个用户在云上像是在独占地使用整个网络,无需担心IP地址冲突等问题。

2024-08-11 14:43:10 489

原创 http和https

每次进出大门都要开门。

2024-08-11 14:17:49 379

原创 TCP和UDP

此时,客户端进入TIME_WAIT状态,等待一段时间后(通常是2MSL,即报文段最大生存时间的两倍),确保服务器收到ACK报文后关闭连接,客户端也关闭连接。因为要保证可靠传输,建立链接的时候必须要双方知道对方的序列号,所以我带上序列号喊你一声,你应(确认),你带上序列号喊我一声,我应(确认),这样才确保双方知道对方的序列号,如果只有2次,就最多一方知道对方序列号。3.第三次挥手:服务器发送完剩余的数据后,发送一个FIN报文给客户端,表示服务器也已完成数据的发送,想要关闭连接。

2024-08-09 09:12:32 683

原创 系统优化和安全

从用户发出请求 到系统响应提供服务,这之间都能做优化。

2024-08-03 07:00:57 1016

原创 分布式事务

事务的基本结构开启事务执行业务逻辑提交/回滚事务分布式事务是指在多个系统上进行的事务,目的是保证在一个过程中对这些系统操作的数据的一致性。分布式事务实现的思路:要执行事务的各个系统准备好后,再统一提交或回滚。

2024-03-27 09:19:45 410 1

原创 分布式锁的实现方式

开启不自动提交事务select xx for update //上锁手动提交事务 //释放锁一般不使用这种方式,因为如果数据库异常,数据库释放锁的时间会相对较长,且数据库压力会比较大。当然也可以用其他排他锁,如update语句、insert语句等。

2024-03-25 21:38:07 241 1

原创 事务原理--redolog和undolog

只有innoDB支持事务。redolog和undolog都只有innoDB才有。

2024-03-02 13:49:45 508 1

原创 innoDB缓存

三大存储特点:哈希缓存,双写缓冲区,buffer pool。

2024-02-28 21:01:35 351

原创 mysql索引合并

mysql最终会走那种索引合并策略,是根据查询优化器计算估计后决定的,不是满足以上某种情况就一定会走对应的索引合并方式。注意,没有sort-intersection。因为sort-union从索引获取的记录数少,即使排序,成本也不会太高。而intersection是从索引中获取的记录较多,排序成本太高。

2024-02-23 18:20:28 606 1

原创 数据库的锁

共享锁也叫s锁(share),写法上S锁后,其他事务可读,不可改。排他锁也叫x锁(exclusive),写法insert update delete都是排他锁。上X锁后,其他事务不可读和改。在同一个事务中:用了x再用x会阻塞用了x再用s会阻塞用了s再用x会阻塞用了s再用s不会阻塞。

2024-02-20 17:54:10 396 1

原创 数据库事务隔离

严重程度:脏读>不可重复度>幻读。

2024-02-06 15:50:11 341 1

dbForge 破解版

必须安装压缩包里面的这个版本的dbForge,然后将patch中的文件覆盖安装目录下的文件即可。

2013-07-20

Intel Vtune序列号

vtune的激活文件,注意看清楚了,是用来激活vtune的。vtune性能调试,英特尔VTune 性能分析器

2012-10-25

linux0.11版内核,学习用

linux0.11版内核,最适合初学linux内核着学习使用!“ 0.11 版内核不超过 2 万行代码量,因此完全可以在一本书中解释和注释清楚。麻雀虽小,五脏俱全。”

2012-08-14

VC++动态链接库(DLL)编程深入浅出

讲解动态链接库的资料,关于VC++编写dll,详细请看内容.

2012-07-28

源码追踪经验谈

侯捷的书,不用多说了吧,经典!从事c++的国人都知道。

2012-07-26

Code Reading: The Open Source Perspective

本书的特色在于,同数据结构和语言描述图书不同,涉及更多工程实践。同软件工程不同,涉及具体实现。总之和确实没有同类型的书。本书缺点是图书出的太早,那个时候还没有sourceinsight, visual slickedit,ultraedit。因此代码阅读工具比较陈旧,大家都不这么用了。值得开发人员收藏!

2012-07-26

C++语言的设计和演化

本书是C++的设计者关于C++语言的最主要著作之一。作者综合性地论述了C++的发展历史,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景。全书共18章,分两大部分,其中第1部分(第1~9章)分别介绍了C++的史前时代、C with Classes、C++的诞生、C++语言设计规则、1985—1993年表、标准化、关注和使用、库、展望;第2部分(第10~18章)分别介绍了存储管理、重载、多重继承、类概念的精练、强制转换、模板、异常处理、名称空间、C语言预处理器。为便于查找与学习,全书最后附有专业术语索引。本书在帮助人们理解C++语言方面的作用是不可替代的。书面向每个学习和关注C++语言的专业工作者、科研人员、教师及学生。

2012-07-26

The C++ Standard Library

C++标准程序库提供了一组通用类别(classes)和界面(interfaes),可大幅扩充C++核心语言。程序库本身无法不辩自明,为了完整运用其组件,并从其强大的威力中获得利益,你需要一份完善的资源,而非一份仅仅列出类别和函数的一般文件。

2012-07-26

C++ Common Knowledge

中文版名称是《C++必知必会》。 当时之所以会买很大程度上是因为这个名字, 因为我觉得自己当时对C++的了解程度是——不知不会。 全书共有63个条款(为什么C++的书都喜欢用条款来划分章节?) , 後面的30%是关于模板和泛型, 自我感觉暂时没必要了解太多, 跳过。 必须承认, 里面的大部分条款我都是首次听闻, 大长见识:) 对以后看设计模式应该很有帮助, 不过也有几个条款是属于底层C的知识, 放在这本书里有点凑数的感觉。 另外, 模板实在讲得太多了! 很不错,推荐 。

2012-07-26

空空如也

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

TA关注的人

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