- 博客(119)
- 收藏
- 关注
原创 记录一下公司的一次CPU飙高80%以上的处理
最近一段时间,公司在做项目的迁移,主要是从AWS迁移到华为云,目前是已经将测试环境进行了迁移,生产环境是没有进行迁移的,但是在迁移前出现了一些小的问题,简单记录一下。
2024-03-15 10:19:32
559
1
原创 细嗦MySQL三大日志
我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行回滚,在 MySQL 中,恢复机制是通过 回滚日志(undo log) 实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后再执行相关的操作。redo log是物理日志,记录的是在什么数据上做了什么修改,属于InnoDB引擎。binlog属于逻辑日志,主要记录的是原始的逻辑语句,不管什么存储引擎,只要发生了表数据更新操作,都会产生binlog日志,binlog主要用于数据库的备份,主从数据同步,之类的用来保证数据的一致性。
2024-02-27 09:39:31
1178
原创 并发编程入门指南
AQS即抽象队列同步器,是JUC中提供的一种锁机制,它是构建锁或者其他同步组件的基础框架。JUC中很多关于锁的类底层都是基于AQS来实现的。synchronized和AQS的区别,synchronized是关键字底层是C++实现,AQS是Java语言实现的;两者都是悲观锁,synchronized锁是自动创建和释放,AQS是手动创建和释放;synchronized在锁竞争激烈的时候会自动升级为重量级锁,性能较差,AQS在锁竞争激烈的时候会有多种解决方式。
2024-02-21 10:24:19
1125
原创 编码与解码现实:《黑客帝国》中的计算机科学启示
计算机专业必看的几部电影,就像一场精彩的编程盛宴!《黑客帝国》让你穿越虚拟世界,感受高科技的魅力;《社交网络》揭示了互联网巨头的创业之路,《源代码》带你穿越时间解救世界,这些电影不仅带我们穿越到科技的前沿,还揭示了计算机科学背后的故事和挑战。
2024-02-20 10:42:59
988
原创 RabbitMQ入门指南
提供了系统之间的异步调用,比如一个支付功能,用户在支付完成之后,会去数据库中执行后续操作,然后更新支付状态,会生成订单信息,如果后续还需要添加功能,就需要去业务逻辑中修改代码,这样就会出现业务耦合。同时想要执行后续操作,需要等待支付功能完成,在此等待过程中会耗费时间,CPU空转,性能比较差。当业务中有操作失败,就会将全部操作回滚。如果下一个操作依赖上一个操作时就需要用到同步操作。但是后续的很多业务操作只需要知道支付成功之后就去执行,不需要等待其他业务执行完成之后再去执行。同步操作的时效性强,但是拓展性差,并
2024-02-20 09:15:13
1730
原创 计算机网络基础入门指南
每个连接互联网的设备都会分配一个IP地址,每个IP地址都是一个字符序列。当网络设备发送 IP 数据包时,数据包中包含了源 IP 地址目的 IP 地址。源 IP 地址用于标识数据包的发送方设备或域,而目的 IP 地址则用于标识数据包的接收方设备或域。这类似于一封邮件中同时包含了目的地地址和回邮地址。简单来说就是限制或阻止特定的IP地址或IP地址范围的访问。IP地址过滤器是一种简单的网络安全措施,比如认证、授权、加密等仪器使用。单独使用IP地址过滤并不能完全保证网络的安全。MAC 地址的全称是。
2024-02-19 09:50:40
887
原创 计算机操作系统入门指南
操作系统是一种系统软件,它管理计算机硬件资源和提供服务给应用程序。操作系统执行如下任务:>> 1. 管理计算机的内存、CPU、磁盘等硬件资源,以使不同程序和用户之间共享使用这些资源。> 2. 提供文件系统,让用户可以保存和访问文件和数据。> 3. 处理输入输出,例如接受用户输入,向屏幕显示信息,向打印机发送信息等。> 4. 提供网络服务,让计算机可以连接互联网或其他计算机进行通信。> 5. 提供安全保护,例如防火墙、加密和认证等,以保护计算机系统不受入侵和病毒的攻击。>> 不同类型的操作系
2024-02-18 08:09:59
1062
原创 SpringBoot框架入门指南
之前的Spring使用的时候,虽然已经非常的简化了,但是仍有部分功能十分的复杂,比如Spring的xml配置,在平时的配置中xml的配置十分的复杂,平时的话都是直接ctrlcv,还有导入相应的坐标依赖,需要一个模块导入一个模块,但是这样做的问题是容易产生依赖与依赖之间版本的不同。然后会报错。Spring Boot 对上述 spring 的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上
2024-02-10 08:53:45
941
原创 Spring框架入门指南
Spring是一个轻量级(核心jar包比较小,但是数量多),非侵入式(框架代码不会侵入业务代码,业务代码也不会实现或继承框架中接口或类)的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业级应用程序的开发,它使得开发者只需关心业务需求。
2024-02-07 08:26:56
882
2
原创 JVM Java虚拟机入门指南
JVM的执行流程程序在执行前先要把Java代码转换成字节码(.class)文件,JVM需要将字节码文件通过一定方式的**类加载器(ClassLoader)**把文件加载到内存的**运行时数据区(Runtime Data Area)**,而字节码文件是JVM的一套指令集规范,并不能直接由底层操作系统区执行,因此需要特定的命令解析器**执行引擎(Execution Engine)**将字节码翻译成底层系统指令再交给CPU去执行,这个过程中需要调用其他语言的接口**本地库接口(Native Interface
2024-02-06 09:56:11
2294
原创 Redis入门指南
Redis是一个基于C语言开发的开源数据库,与传统数据库不同的是,Redis的数据是存储在内存中的,因此读写速度非常快,广泛应用于缓存,消息队列等方向。Redis 提供了多种数据类型来支持不同的业务场景比如–> 除此之外,Redis 还支持事务 、持久化、Lua 脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、内存淘汰机制、过期删除机制等等。
2024-02-05 11:11:03
906
原创 MySQL进阶入门指南
索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。它出现的作用就是为了加快查询效率。索引的作用就相当于书的目录。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。哪些情况创建索引针对数据量大,查询比较频繁的表建立索引。(单表数据超过10万数据)
2024-02-04 10:57:26
869
原创 SpringCloud微服务入门
- 注册中心/配置中心(eureka/nacos):微服务之间需要相互远程调用,这些每个服务的地址需要动态的管理起来。- 远程调用(Feign):微服务需要相互调用。- 负载均衡(Ribbon):如果服务器是进行集群的,需要进行负载均衡。- 服务熔断/服务保护(Hystrix/Sentinel):在远程调用过程中可能会产生降级,甚至熔断,需要用到服务熔断。- 网关(Gateway、Zuul):如果微服务想对外暴露接口,统一使用的网关是服务的入口。
2024-02-02 09:43:08
855
原创 GSP算法在数据挖掘中的应用
序列模式挖掘:指挖掘相对时间或其他模式出现频率高的模式序列模式挖掘的动机:大型连锁超市的交易数据有一系列的用户事物数据库。每一条记录包括用户的ID,事物发生的时间和事物涉及的项目。如果能够在其中挖掘涉及事物间关联关系的模式,即用户几次购买行为间的联系,可以采用更有针对性的营销措施。序列:(sequence) 以SID表示,一个序列即是一个完整的信息流序列符号化表示:序列是不同项目集的有序排列。
2024-01-10 00:43:44
1175
原创 Lambda表达式的概念和使用(jdk8)
Lambda 表达式是一个匿名函数本质只是一个"语法糖"Lambda表达式就是简化匿名内部类的用法 是jdk8的新特性()->{};简化匿名内部类的书写方式,但是不是所有的匿名内部类都可以简化,Lambda表达式只能简化函数式接口的匿名内部类,所谓函数式接口就是一个接口中只有一个抽象方法。在jdk源码中经常标有@FunctionalInterface的接口都是函数式接口,都可以使用Lambda表达式。使用Lambda表达式时,还可以简化许多,比如,参数类型可以省略不写,如果传入参数为一个,则()
2023-08-23 15:12:47
201
原创 Java动态代理、反射
在这个方法中,第一个参数是指定哪一个类加载器去加载生成的代理类,第二个参数是指定的接口,第三个参数是用于指定生成的代理对象要干什么,一般创建代理对象不会调用到第三个参数,后面只有通过代理对象进行方法回调的时候才会调用第三个参数,在执行这个第三个参数时,会重写invoke方法进行代理方法的实现,传入invoke方法有三个参数,第一个参数是传入代理的对象,第二个参数是传入需要运行的就是原本对象的方法,第三个参数就是传入这个方法的参数。在返回的时候,返回的是传入这个方法的invoke方法传回的值。
2023-08-22 09:20:35
690
原创 Docker入门指南:从零开始轻松掌握容器化技术【超级详细版】
Docker时世界领先的软件容器平台,能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员,用户可以方便的使用和创建容器,把自己的应用放入容器,也可以从官方容器中拉取需要的应用,容器还可以进行版本管理、复制、分享、修改,就像管理普通代码一样。**数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。
2023-08-14 14:27:28
398
原创 CentOS安装Docker(超详细)
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。docker-ce为社区免费版本。启动docker前,一定要关闭防火墙后!
2023-08-13 13:04:29
32155
2
原创 常见的设计模式(超详细)
在工厂模式中,之前的核心工厂变成了一个抽象接口,负责给出工厂应该实现的方法,它不在负责所有产品的创建,将具体产品的创建交给子类去做,这样就诞生了具体的子工厂,子工厂即子类,负责生成具体的产品对象,这样做可以将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类,在现在的工厂模式中,如果需要新增一个产品,不需要修改原有的工厂类逻辑,但是需要新增一个工厂,这样看起来比较复杂,但是在面向对象语言中,需要遵循开闭原则,就是程序对于扩展是开放的,对于修改时封闭的。
2023-08-04 20:12:23
1061
原创 SpringMVC常见知识点总结
SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架,MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。创建一个自定义注解:与创建接口类似,但自定义注解需要使用 @interface添加元注解信息,比如 @Target、@Retention、@Document、@Inherited 等。
2023-07-21 21:20:24
358
2
原创 计算机基础--->数据结构(9)【并查集】
> 并查集是一种用于解决集合合并和查询问题的数据结构,主要用于实现有关集合的操作,它有两种主要操作,合并(union)和查找(find)。>> 1. 查找(Find):用来确定元素属于哪个集合。它接受一个元素作为参数,并返回这个元素所属集合的代表元素。通过查找操作,可以判断两个元素是否属于同一个集合。> 2. 合并(Union):用于将两个集合合并成一个集合。它接受两个元素作为参数,并将这两个元素所属的集合进行合并。合并操作可以将两个不相交的集合合并成一个集合。> 并查集由一组集合构成,其中每
2023-07-08 17:42:40
378
原创 计算机基础--->数据结构(8)【B树、B+树<超详细图文>】
B+树的主要特点1. 有k个子树的中间节点包含k个元素(B树是k-1),每个元素不保存数据,数据都保存在叶子节点。2. 所有的叶子节点包含了全部元素,依照元素的大小升序排列,叶子节点之间用双向指针链接3. 所有中间节点的元素都同时存在于子结点,在子结点元素中是最大或最小元素4. B+树叶子节点中元素个数为`(ceil(m/2)~m)`,添加第一个节点除外
2023-07-07 17:18:04
1541
4
原创 计算机基础--->数据结构(7)【红黑树】
如果树是空的,创建一个新的2节点如果树不是空的,找到应该插入的叶子节点如果叶子节点是2节点,插入该节点,使其成为3节点。如果叶子节点是3节点,将该节点的元素一起重新分配到新的节点中,并将中间的元素移动到父节点中。如果父节点也是3节点,就递归地进行这个过程。
2023-07-05 13:11:37
445
原创 计算机基础--->数据结构(6)【AVL树(平衡二叉树)】
平衡二叉树是一种特殊的二叉搜索树,他的左子树与右子树的高度差不超过1。保持平衡的特性使得平衡二叉树的查询、插入和删除操作在平均和最坏情况下的时间复杂度都是。右旋转和左旋转类似,右旋的方式是先将x节点的右子树单独定义出来为t2,然后将y节点连接到x的右子树,将t2连接到y的左子树上,这时就完成了右旋。首先创建节点用来保存树中的节点的数据,其次和二叉搜索树不同的是,AVL树需要平衡因子来控制二叉树的平衡。根据上图,我们可以直到,当二叉树的右树的高度超过平衡时需要进行左旋,,其中n是树中节点的数量。
2023-07-04 14:21:48
526
原创 计算机基础--->数据结构(5)【线段树、Trie树(字典树)】
线段树(Segment Tree)线段树主要解决哪些问题?线段树的构建区间求值修改值融合器代码汇总Trie树Trie树的作用?Trie树的创建插入单词查找单词是否存在搜索是否存在与当前匹配的字符删除单词全部代码
2023-07-02 18:52:53
435
原创 计算机基础--->数据结构(4)【优先队列】
优先队列是一种特殊的队列,与普通队列不同的是,优先队列中的元素具有优先级,队列中高优先级的元素会被先出队。具体来说,优先队列中的元素会根据其优先级被分配一个“优先级值”,队列中的元素会按照优先级值从高到低排序,也就是说,出队的元素是队列中优先级最高的元素。想要合并链表数组,可以将链表数组中每个链表的节点存入优先队列中,队列的优先级较高的是链表的值,然后将从优先队列中拿出的节点连接在一块。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
2023-06-25 21:00:39
743
1
原创 计算机基础--->网络(2)【TCP、UDP、IP、ARP】
TCP与UDP的区别TCP三次握手和四次挥手为什么要三次握手?第二次握手传回了ACK,为什么还要传回SYN?为什么要四次挥手?为什么不能将服务器发送的ACK和FIN合并起来,变成三次挥手?TCP如何保证传输的可靠性?IP什么是IP地址?IP寻址如何工作?什么是IP地址过滤器?IPv4和IPv6有什么区别?NAT的作用是什么?ARP什么是MAC地址?ARP协议解决了什么问题?
2023-06-20 12:00:00
1181
原创 计算机基础--->网络(1)【分层模型、网络协议、HTTP等】
网络分层模型OSI七层模型及其作用TCP/IP四层模型及作用为什么网络需要分层?常见的网络协议应用层常见的协议传输层常见的协议网络层常见协议从输入URL到页面展示的过程HTTP常见的状态码HTTP与HTTPS的区别HTTP是不保存状态的协议,如何保存用户状态?URI和URL区别?Cookie和Session有什么区别?PING命令的作用DNS的作用是什么?DNS服务器
2023-06-19 12:00:00
910
原创 计算机基础--->操作系统(4)【文件系统】
硬链接是通过 inode 节点号建立连接的,而硬链接和源文件共享相同的 inode 节点号。每个文件系统都有自己的独立 inode 表,且每个 inode 表只维护该文件系统内的 inode。如果在不同的文件系统之间创建硬链接,可能会导致 inode 节点号冲突的问题,即目标文件的 inode 节点号已经在该文件系统中被使用。常见的磁盘调度算法:先来先服务、最短寻道时间优先算法、扫描算法、循环扫描算法、边扫描边观察算法、均衡循环扫描算法。
2023-06-07 12:00:00
552
1
原创 计算机基础--->操作系统(3)【内存管理】
内存管理内存管理主要做什么?什么是内存碎片?常见内存管理方式虚拟内存什么是虚拟内存?虚拟内存的作用?没有虚拟内存的问题什么是虚拟地址和物理地址?分段机制分页机制转址旁路缓存(TLB、快表)换页机制作用?什么是页缺失?常见的页面置换算法分页机制和分段机制的共同点和不同点段页机制局部性原理
2023-06-06 12:00:00
1056
原创 计算机基础--->操作系统(2)【线程和进程、死锁】
线程和进程线程和进程的区别?有了进程为什么还需要线程?为什么使用多线程?线程间的同步方式进程控制块(PCB)进程有哪几种状态?进程间的通讯方式有哪些?进程常见的调度算法有哪些?什么是僵尸进程和孤儿进程?死锁什么是死锁?产生死锁的四个必要条件?解决死锁的方法?
2023-06-04 12:00:00
621
原创 计算机基础--->操作系统(1)
在用户态中,进程可以直接读取用户程序的数据,应用程序只能访问自己的内存空间和限制好的操作系统资源,拥有的权限较低,比如说打开文件和申请内存等,而不能直接访问系统资源和内核代码。当操作系统接收到进程的系统调用请求时,就会从用户态切换到内核态,执行相应的系统调用,并将结果返回给进程,最后再从内核态切换回用户态。用户态的程序发起系统调用,因为系统调用中涉及一些特权指令(只能由操作系统内核态执行的指令),用户态程序权限不足,因此会中断执行,也就是 Trap(Trap 是一种中断)。
2023-06-01 12:00:00
551
原创 Java基础--->IO流(2)【常见IO模型】
非阻塞IO模型也称为异步IO模型,在这种模型中,一个线程可以发起IO请求后立即返回,而不需要等待IO操作的结果,因此也被称为“异步”模型。同步非阻塞 IO 模型中,应用程序会一直发起 read 调用,等待数据从内核空间拷贝到用户空间的这段时间里,线程依然是阻塞的,直到在内核把数据拷贝到用户空间。回过头来看下,不管是 BIO,还是 NIO,还是信号驱动,在数据从内核复制到应用缓冲的时候,都是阻塞的。信号驱动 IO 模型,在应用进程发出信号后,是立即返回的,不会阻塞进程。的,因此都不算是真正的异步。
2023-05-26 12:00:00
761
原创 Java基础--->IO流(1)【IO基础】
写入数据时,它不会一个字节一个字节的写入,它也会将数据缓存到内部的缓存区中,等到缓冲区满了之后从内部缓冲区中单独写入字节。读取数据时,它会一次性读取一定量的字符到缓冲区中,然后逐个读取,直到缓冲区中数据全部读取完毕,这样可以减少访问数据源的次数提高读入效率。写数据时,它的操作类似,会先将数据写入缓冲区,等到缓冲区写满之后再一次性写出到目标文件中,这样可以减少写操作次数,提高写入效率。是最常见的字节输出流对象,可以直接指定文件路径,可以直接输出单字节数据,也可以输出指定的字节数组。
2023-05-25 16:48:33
779
原创 Java基础--->并发部分(4)【对象引用、线程池、ThreadLocal】
Java中的对象引用指的是一个变量或常量,它指向一个在堆内存中具体位置的对象。通过对象引用,我们可以访问对象的属性和方法。Java采用的是系统管理堆内存和栈内存的方式,对象分配在堆内存中并由引用指向,引用存储在栈内存中。当引用不再被使用时,Java垃圾回收机制会自动将对象从堆内存中释放掉。
2023-05-22 13:15:00
562
原创 Java基础--->并发部分(3)【JUC、AQS】
在学习`HashMap`的时候知道了`HashMap`不是线程安全的,如果要实现线程安全,需要使用一个全局的锁来同步不同线程间的并发访问,所以非常影响性能,所有就有了`ConcurrentHashMap`,无论是读还是写,都能保证很高的性能,在读操作时几乎不需要加锁,在写操作时通过锁分段技术只对所操作的的段加锁而不影响客户端对其他段的访问。
2023-05-21 18:02:15
558
原创 Java基础--->并发部分(2)【Java中的锁】
乐观锁(不加锁):认为并发的操作,不加锁的方式实现是没有问题的,每次操作前判断(CAS,自旋)是否成立,不加锁实现。> 悲观锁:认为对于同一个数据的并发操作,一定是会发生修改的,即使没有修改,也会认为修改。认为并发操作肯定会有问题,必须加锁,对于同一个数据的并发操作,悲观锁采用加锁的形式> >> **总结**:悲观锁适合写操作非常多的场景,乐观锁适合读操作非常多的场景,不加锁会带来大量的性能提升。> 悲观锁在Java中使用的话就是利用各种的锁
2023-05-20 22:06:15
480
原创 计算机基础--->数据结构(2)【树的概念、二叉搜索树的创建】
满二叉树> 二叉树所有的叶子结点都在最后一层,并且`结点总数=2^(n-1)`,则称为满二叉树,也就是每一层节点都达到了最大值。**完全二叉树**> 该二叉树的所有叶子结点都在最后一层或者倒数第二层,而且最后一层的叶子结点在左边连续,倒数第二层的叶子结点在左边连续,倒数第二层的叶子结点在右边连续,称之为完全二叉树> **其余层都是满节点,最后一层或满或右边空缺,特点是父结点与子结点的序号有对应关系(父:i,左子:2i,右子:2i+1)**
2023-05-13 23:57:26
693
原创 计算机基础--->数据结构(1)【图的存储和遍历】
相当于一个二维数组,当存储无向图时,两点相连标1,当存储有向图时,横向的是起始点指向相应的点标1。无向图是将每个点相连的点用链表存储,无向图邻接表中元素的边是途中边的2倍。有向图是将每个点指向的点列出来,有向图邻接表中元素的边与图中的边数相同。表示一个顶点包含多少条边,有出度和入度。
2023-05-11 13:15:00
571
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人