![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
看水是水
第二层看水是水—筑基
展开
-
十进制与二进制的相互转化(2022.8.29-9.4)
进制转化原创 2022-08-31 16:55:41 · 362 阅读 · 1 评论 -
LinkedList的简单用法(2022.6.13-6.19)
LinkedList用法原创 2022-06-14 13:42:25 · 128 阅读 · 0 评论 -
反射创建实例三种方式(2022.6.6-6.12)
反射三种方式创建实例原创 2022-06-14 13:41:12 · 1879 阅读 · 0 评论 -
RabbitMQ四种发布模式(2022.5.30-6.5)
RabbitMQ发布模式原创 2022-06-14 13:39:35 · 416 阅读 · 0 评论 -
RabbitMQ四种交换机(2022.5.23-5.29)
RabbitMQ交换机原创 2022-06-14 13:37:40 · 262 阅读 · 0 评论 -
MQ组成部分(2022.5.16-5.22)
MQ的组成部分原创 2022-06-14 13:32:35 · 297 阅读 · 0 评论 -
MQ的选择(2022.5.9-5.15)
MQ的选择原创 2022-06-14 13:31:42 · 142 阅读 · 0 评论 -
Dubbo与SpringCloud简单区别:(4.25-5.1)
主要是七个区别:1.注册服务的不同:dubbo是基于Java接口和Hession2的序列化来进行传输的,一般搭建在zookeeper服务上的;provider向外暴露的是接口,consumer只需要关注是否能匹配接口就可以了;SpringCloud的服务发现是基于Http协议来实现的,Provider对外暴露的是应用信息,比如应用名称,ip地址等等,Consumer关注的是应用名称来进行匹配选择的;2.Server集群服务信息同步的区别:Dubbo使用Zookeeper做服务发现和治理,Zo原创 2022-05-01 21:21:46 · 1450 阅读 · 0 评论 -
TCP三次握手和四次挥手简介(2022.4.18-4.24)
三次握手的通俗理解如下:客户端向服务端发起连接请求(第一次),服务端收到客户端的信息并加验证发给客户端(第二次),客户端收到并确认验证发给服务端(第三次)连接请求成功;专业三次握手文字解析如下:第一次:客户端向服务端发起SYN连接申请并带上自己的序列端口号(如Seq=x),大概传送的有SYN=1,Seq=x;第二次:服务端收到客户端连接申请,发送SYN+ACK(确认),分别传送给客户端的为SYN=1,Seq=y(服务端自身的序列号),ACK=1,ack=x+1;第三次:客户端收到服务端发来原创 2022-04-19 18:48:29 · 729 阅读 · 0 评论 -
MQ优缺点(2022.5.2-5.8)
MQ优缺点原创 2022-06-14 13:30:03 · 100 阅读 · 0 评论 -
策略模式(2.28-3.6)
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何原创 2022-04-07 20:58:37 · 51 阅读 · 0 评论 -
解释器模式(3.7-3.13)
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。介绍意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的解释器。何时使用:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,原创 2022-04-07 20:54:00 · 58 阅读 · 0 评论 -
空对象模式(3.14-3.20)
介绍在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。实现我们将创建一个定义操作(在这里,是客户的名称)的 AbstractCustomer 抽象类,和扩展了 Abst原创 2022-04-07 20:44:28 · 143 阅读 · 0 评论 -
命令模式(3.21-3.27)
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。介绍意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。何时使用:在某些场合,比如要对行原创 2022-04-06 20:33:14 · 54 阅读 · 0 评论 -
中介者模式(3.28-4.3)
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。介绍意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。何时使用原创 2022-04-06 20:24:11 · 48 阅读 · 0 评论 -
状态模式(4.4-4.10)
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。介绍意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用:代码中包含大量与对象状态有关的条件语句。如何解决:将各种具体的状态类抽象出来。关键代码:通常命令模式的接原创 2022-04-06 20:17:19 · 53 阅读 · 0 评论 -
spring中如何动态创建Bean代码:(4.4-4.10)
Bean对象创建的三种方式:1.通过构造方法进行<bean id: class>定义; 2.通过工厂对象调用普通方法的创建对象;3.通过工厂对象调用静态方法的创建对象;手动创建Bean对象:前提是该类已注入Spring容器,简单代码如下:@Componentpublic class BeanTest{ @Autowired private ApplicationContext applicationContext ; public void test1() th...原创 2022-04-05 16:25:07 · 711 阅读 · 0 评论 -
mysql底层的引擎选择,为什么索引结构选择B+树:(3.28-4.3)
mysql底层引擎有innodb(默认的,有ACID的事务定义和高并发场景海量数据的高性能操作),myisam(没有事务,但是只有Insert和Select的时候效率还是比较快的),memory(对数据的存储利用只是临时的,并不考虑安全性的,在内存中和数据库临时表中的时候),archive(只有查询和增加的时候,尤其是高并发增加的时后,效率还是比较快的,但是数据并不安全);数据库底层选择的时候有很多选择:比如查询较快hash散列结构,但是是无序的,所以不适用;二叉树里面的平衡二叉树和红黑树等等但是原创 2022-04-05 16:24:01 · 1320 阅读 · 0 评论 -
synchronized的底层的三种上锁实现方式:(3.21-3.27)
修饰普通方法:修饰的是类的实例对象,也叫对象锁,有两种场景:1.两个线程在两个同步方法中执行同一个上锁对象,会形成互斥场景;(因为锁的对象都是同一个) 2.两个对象在两个线程中执行同一个同步方法,不会互斥;(锁的对象是两个)修饰静态方法:修饰的类对象,也叫类锁;三种使用场景:1.一个类对象在两个不同的线程执行不同的同步方法,会互斥;因为是同一个类对象锁 ...原创 2022-04-05 16:23:06 · 105 阅读 · 0 评论 -
Spring事务相关解析:(3.14-3.20)
Spring事务实现的方式主要有四种:TransactionTemplate编程式事务管理,事务管理器PlatFormTransaction声明式事务管理,AspectjAop 的声明式事务管理,注解式开发@Transactional的声明式事务管理;TransactionTemplate:先进行一个事务管理器的配置,再创建一个Template模板进行编程式事务管理的主要实现的是里面的TransantionCallBack ...原创 2022-04-05 16:21:56 · 545 阅读 · 0 评论 -
数据库死锁总结:(3.7-3.13)
简介:数据库死锁一般是两个或两个以上的线程同时争夺一个资源所造成的互相等待死锁的状态,比如用户访问线程A锁住记录C,另一用户访问线程B且需访问记录C的时候就会形成死锁;形成死锁的主要原因:1.系统资源不足;(系统资源充足分配的时候很少形成死锁)2.访问的对象的顺序不一致;3.系统资源分配的不恰当等;形成死锁的四个必要条件(缺一不可):1.互斥条件:同一时间,一个对象资源只能被一个线程所占用使用,其他线程无法占用;2.请求与保持条件:当一个进程发起访问请求新资源时,本身持有的资源不会释放原创 2022-04-05 16:20:16 · 503 阅读 · 0 评论 -
线程安全的类的解析:(2.8-3.6)
线程安全的类一般是体现在多线程并发过程中的,主要有五种:不可变,绝对安全的类,相对安全的类,线程兼容,线程对立;不可变:被final修饰的类;String类型的;枚举类型的,如: public Enum Color{RED,GREEN};浮点引用包装精准类型和大值的: BigInteger,BigDecimal;绝对安全的类:是在相对安全的类上面再次加入synchronized关键字,比如vector前面加上就变成了绝对安全的类;相对安全的类:vector和hashtable等这样本原创 2022-04-05 16:18:55 · 99 阅读 · 0 评论 -
数据库日志级别解析:(2022.2.21-2022.2.27)
数据库的日志种类有:redo_log,undo_log,binlog,rely_log,error_log,slow_query_log,general_log;redo_log:重做日志,保证了事务的持久性,一般事务开启的时候,重做日志也启动了,持久化的三种方式分别为:1.每一秒进行持久化; 2.每一次commit的时候进行持久化;3.默认的为占用剩余内存空间一半的时候自动持久化;undo_log:回滚日志,保证了事务的原子性和隔离性,在事务执行失败或者回滚的时候,就会启动该日志...原创 2022-04-05 16:16:34 · 871 阅读 · 0 评论 -
(2022.1.31-2022.2.14)模板模式解析
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有一些通用的方法。如何解决:将这些通用算法抽象出来。关键代码:在抽象类实现,其他步骤在子类原创 2022-02-11 11:11:01 · 83 阅读 · 0 评论 -
2022-1-17至2022-1-30 迭代器模式
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。关键代码:定义接口:hasNext, next。**应用实例:**JAV原创 2022-01-25 15:17:51 · 49 阅读 · 0 评论 -
2022-1-3至2022-1-16 访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。介绍意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操作耦合问题。何时使用:需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。原创 2022-01-25 15:13:27 · 50 阅读 · 0 评论 -
2020-12-21至2022-1-2:解析观察者模式
学习原创 2022-01-25 15:06:24 · 44 阅读 · 0 评论 -
写入数据进入磁盘文件代码示例如下:
代码原创 2021-12-19 21:46:29 · 285 阅读 · 0 评论 -
五种线程状态图示
原创 2021-12-14 22:53:56 · 337 阅读 · 0 评论 -
各种应用程序到JVM虚拟机的过程
原创 2021-12-06 06:44:04 · 252 阅读 · 0 评论 -
JVM中各个垃圾回收器图形演示
原创 2021-11-28 21:08:17 · 136 阅读 · 0 评论 -
JVM中GC垃圾回收算法和垃圾回收器
Serial收集器(复制算法): 新生代单线程收集器,标记和清理都是单线程,优点是简单高效;ParNew收集器 (复制算法): 新生代收并行集器,实际上是Serial收集器的多线程版本,在多核CPU环境下有着比Serial更好的表现;Parallel Scavenge收集器 (复制算法): 新生代并行收集器,追求高吞吐量,高效利用 CPU。吞吐量 = 用户线程时间/(用户线程时间+GC线程时间),高吞吐量可以高效率的利用CPU时间,尽快完成程序的运算任务,适合后台应用等对交互相应要求不高的场...原创 2021-11-21 17:54:34 · 91 阅读 · 0 评论 -
JVM虚拟机中创建对象的流程:
虚拟机遇到一条new指令时,先检查常量池是否已经加载相应的类,如果没有,必须先执行相应的类加载。类加载通过后,接下来分配内存。若Java堆中内存是绝对规整的,使用“指针碰撞“方式分配内存;如果不是规整的,就从空闲列表中分配,叫做”空闲列表“方式。划分内存时还需要考虑一个问题-并发,也有两种方式: CAS同步处理,或者本地线程分配缓冲(Thread Local Allocation Buffer, TLAB)。然后内存空间初始化操作,接着是做一些必要的对象设置(元信息、哈希码…),最后执行<init&g原创 2021-11-14 16:48:02 · 367 阅读 · 0 评论 -
2021-11-09
补:---> 上个礼拜 blogJVM内部包括2个系统以及2个组件:-->2个系统:类加载->class loader ;执行引擎execution engine :->JITCompiler即时编译器 、Garbage Collector垃圾回收器;2个组件:本地库接口:Native Interface ->本地方法库 Native Method LibrariesJVM内核(运行时数据区)Runtime Data Area:三个私有: 程序计原创 2021-11-09 14:11:07 · 379 阅读 · 0 评论 -
本周开始每周一精华Blog可能为图可能为精华代码...
这是本人画出的现代企业级常用架构,里面一些专业名词可百度查询,后期继续分享...原创 2021-10-29 18:00:49 · 43 阅读 · 0 评论