自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之六大设计原则

六大设计原则,23种设计模式,单一职责原则

2024-04-01 14:56:29 114

原创 设计模式之模板模式

定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式确实非常简单,仅仅使用了Java的继承机制,但它是一个应用非常广泛的模式。模板方法模式的优点● 封装不变部分,扩展可变部分把认为是不变部分的算法封装到父类实现,而可变部分的则可以通过继承来继续扩展。在悍马模型例子中,是不是就非常容易扩展?例如增加一个H3型号的悍马模型,很容易呀,增加一个子类,实现父类的基本方法就可以了。● 提取公共部分代码,便于维护● 行为由父类

2024-04-01 14:55:57 106

原创 设计模式之单例模式

单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。).1 单例模式的优点● 由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显。● 由于单例模式只生

2024-04-01 14:55:19 136

原创 redis strings小结

指令APPEND当指定的key存在,并且value是字符串时,APPEND命令会在字符串末尾追加指定的字符串,如果指定的key不存在,则会创建一个空的字符串,并且追加上指定的value,效果类似于SET命令。该命令的返回值是执行后字符串的长度。set mystr “hello world!” //设置字符串类型get mystr //读取字符串类型字符串类型的用法就是这么简单,因为是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储。incr mynum 是加1的操作。由于IN

2024-04-01 14:55:00 328

原创 token和jwt存在什么区别

最直观的:token需要查库验证token 是否有效,而JWT不用查库或者少查库,直接在服务端进行校验,并且不用查库。因为用户的信息及加密信息在第二部分payload和第三部分签证中已经生成,只要在服务端进行校验就行,并且校验也是JWT自己实现的。 TOKEN 概念: 令牌, 是访问资源的凭证。 Token的认证流程: 1. 用户输入用户名和密码,发送给服务器。 2. 服务器验证用户名和密码,正确的话就返回一个签名过的token(token 可以认为就是个长长的字符串),浏览器客户端拿到这个token。 3

2024-04-01 14:54:12 745

原创 get post的区别

GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的,而POST么有。对参数的数据类型,GET只接受ASCII字符,而POST没有限制。GET比POST更不安全,因为参数直接暴露在URL

2024-04-01 14:53:32 223

原创 设计模式之原型模式

这种不通过new关键字来产生一个对象,而是通过对象复制来实现的模式就叫做原型模式。原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java提供了一Cloneable接口来标示这个对象是可拷贝的所以用覆写是非常正确的——覆写了Object类中的clone方法原型模式的优点● 性能优良原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。原型模式的使用场景●资源优化场景类初始化需要消化非常多的资源,这

2023-03-30 17:34:48 46

原创 mysql 锁机制和mvcc初始

MyISAM在执行查询语句SELECT前,会自动给涉及的所有表加读锁,在执行update、insert、delete操作会自动给涉及的表加写锁。InnoDB在执行查询语句SELECT时(非串行隔离级别),不会加锁。但是update、insert、delete操作会加行锁。另外,读锁会阻塞写,但是不会阻塞读。而写锁则会把读和写都阻塞。

2023-03-30 17:14:33 249

原创 mysql索引初识二

很多时候我们业务系统实现分页功能可能会用如下sql实现表示从表 employees 中取出从 10001 行开始的 10 行记录。看似只查询了 10 条记录,实际这条 SQL 是先读取 10010条记录,然后抛弃前 10000 条记录,然后读到后面 10 条想要的数据。因此要查询一张大表比较靠后的数据,执行效率是非常低的。这种改写得满足以下两个条件:1主键自增且连续,2结果是按照主键排序的。

2023-03-22 18:09:34 65

原创 mysql索引初识一

1、MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index效率高,filesort效率低。2、order by满足两种情况会使用Using index。2.1order by语句使用索引最左前列。2.2使用where子句与order by子句条件列组合满足索引最左前列。3、尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。

2023-03-22 17:15:26 81

原创 设置模式之建造者模式

建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.(将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。)在建造者模式中,有如下4个角色:● Product产品类通常是

2023-03-18 14:41:06 40

原创 乐观锁初识

乐观锁实现方式乐观锁不需要借助数据库的锁机制。主要就是两个步骤:冲突检测和数据更新。比较典型的就是 CAS (Compare and Swap)。CAS 即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS 操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值(V)与预期原值(A)相匹配,那么处理器会自动将该位置值更新为新值(B)。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 指令之前返回该位置的值。CAS 有效地说明了“我认为位置(V)应该

2023-03-18 14:40:53 50

原创 mysql索引的小计

system 这一列表示关联类型或者访问类型 ,依次从最优到最差为,system(查询1行记录)》const(查询常量)》eq_ref(主键关联或者唯一建关联)》ref(普通索引或者唯一索引的左前缀索引)》range(范围查找)》index(全索引查找)》all(全表扫描)这一列显示查询可能使用哪些索引来查找,可能出现possible_keys 有,而 key 显示 NULL 的情况,这种情况是因为表中数据不多,mysql认为索引对此查询帮助不大,选择了全表查询。如果没有使用索引,则该列是 NULL。

2023-03-18 14:36:57 98

原创 Spring三级缓存

public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry { ... // 从上至下 分表代表这“三级缓存” private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256); //一级缓存 private final Map&lt.

2023-02-28 18:43:32 95 1

原创 多线程知识点

的使用权,分别执行各自的任务.在运行池中,会有多个处于就绪状态的线程在等待CPU,JAVA虚拟机的一项任务就是负责线程的调度,线程调度是指按照特定机制为多个线程分配CPU的使用权java虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。尽管进程和它的线程共享了很多内容,但最为重要的是其地址空间和资源,有些信息对于线程而言是本地且唯一的,而线程的其他方面包含在进程的各个段的内部。Java中用到的线程调度算法是什么?

2023-02-28 18:42:52 36

原创 分布式事务

分布式事务: 随着SOA架构、微服务的流行,以及业务复杂后进行服务化拆分,数据库垂直拆分后会有多实例库的事务需求,会出现对应的分布式事务。 定义:分布式事务是指事务的参与者、支持事务的服务器、资源...

2023-02-28 18:42:41 45

原创 计算机网络

事实上,真正的网址是www.google.com.,并不是我多打了一个.,这个.对应的就是根域名服务器,默认情况下所有的网址的最后一位都是.,既然是默认情况下,为了方便用户,通常都会省略,浏览器在请求DNS的时候会自动加上,所有网址真正的解析过程为: . -> .com -> google.com. -> www.google.com.。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

2023-02-28 18:42:22 45

原创 设计模式之责任链模式

抽象的处理者实现三个职责:一是定义一个请求的处理方法handleMessage,唯一对外开放的方法;二是定义一个链的编排方法setNext,设置下一个处理者;三是定义了具体的请求者必须实现的两个方法:定义自己能够处理的级别getHandlerLevel和具体的处理任务echo。三是定义了具体的请求者必须实现的两个方法:定义自己能够处理的级别getHandlerLevel和具体的处理任务echo。抽象的处理者实现三个职责:一是定义一个请求的处理方法handleMessage,唯一对外开。

2023-02-28 18:41:15 29

原创 数据库事务的四大特性以及事务的隔离级别

(1)原子性Atomicity原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。⑶ 隔离性(Isolation)隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互

2023-02-28 18:32:55 37

原创 redis底层原理

redis的LRU实现是近似的LRU,是因为如果按照hashMap+双向链表的实现,需要额外的存储空间来存储next和prev指针,需要牺牲较大的存储空间。所以redis会随机取出若干key,然后按照访问时间排序,淘汰掉不经常使用的。AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。所以他是以增量的方式来进行持久化的(也就是说他是一点点的进行持久化的,不是一下子把所有数据都进行记录下来的),其实最终记录的就是这种的指令。

2023-02-28 18:29:20 62

原创 redis Zset的一些小计

否则,也就是等于16bit全为1的情况,那么就不表示数据项个数了,这时候要想知道ziplist中数据项总数,那么必须对ziplist从头到尾遍历各个数据项,才能计数出来。上面的定义中还值得注意的一点是:, , 既然占据多个字节,那么在存储的时候就有大端(big endian)和小端(little endian)的区别。: 32bit,表示ziplist表中最后一项(entry)在ziplist中的偏移字节数。: 32bit,表示ziplist占用的字节总数(也包括本身占用的4个字节)。

2023-02-28 18:28:36 51

原创 动态切换数据源

AbstractRoutingDataSource动态切换数据源

2023-02-28 18:26:32 33

原创 canal简单使用

canal集合springboot实现demo

2023-02-28 17:55:02 194

原创 测试使用csdn教程

测试使用csdn教程使用 ~~ ~ JavaScript 是代码黑框显示 ~~~ 原因分析1:提示:这里填写问题的分析:例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。解决方案1:文字描述1,2,3.新

2021-03-02 10:35:34 132

原创 java中==的用法

在java中 ==的用法 在这里插入图片描述

2019-07-12 14:37:11 627

空空如也

空空如也

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

TA关注的人

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