- 博客(18)
- 收藏
- 关注
原创 【链接-汇总】
一、计算机理论设计模式 简说设计模式 - JAdam - 博客园 二、JavaJUCJava多线程系列目录(共43篇) - 如果天空不死 - 博客园三、数据库四、应用框架五、研发工具六、面试七、杂七杂八...
2021-12-13 19:22:31
1567
原创 【JUC-悲观锁、乐观锁】
一、概括优点 乐观锁并未真正加锁,效率高。一旦锁的粒度掌握不好,更新失败的概率就会比较高,容易发生业务失败。 悲观锁依赖数据库锁,效率低。更新失败的概率比较低。 适用场景 乐观锁(多读少写场景) 即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。 悲观锁(多写少读场景) 多写的情况,一般会经常产生冲突,这就会导致上层应用会不断的进行retry,这样反倒是降低了性能。二、悲观锁基础总是假设最坏的情况,每次去拿数据的时候
2021-12-13 19:10:38
413
原创 【JUC-锁】
一、简介简介Java中划分锁的方式不同,就产生了各种对锁的定义。并发控制当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。二、分类线程是否需要锁住共享的资源 悲观锁-- 锁住(synchronized、lock接口)
2021-12-13 19:05:54
250
原创 【设计模式-策略模式】
一、基础什么是策略模式前提:实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等。策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。再比如我们去逛商场,商场现在正在搞活动,有打折的、有满减的、有返利的等等,其实不管商场如何进行促销,说到底都是一些算法,这些算法本身只是一种策略,并且这些算法是随时都可能互相替换的,比如针对同
2021-12-13 19:02:54
141
原创 【JUC-线程池】
一、基础1.1 简介作用 限制系统中执行线程的数量 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了;否则进入等待队列。优点 降低资源的消耗 提高响应的速度 方便管理 ..
2021-12-12 16:34:45
150
原创 【设计模式-工厂方法】
一、简介1.1 工厂什么是工厂工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式,工厂模式属于创建型模式。对象实例化的模式,用于解耦对象的实例化过程。简单的说工厂模式就是用来创建对象的,传统的对象创建方法是new,有了工厂模式之后,某些特定的对象我们不需要在每个使用的地方都使用new,而是把对象的创建放在一个或者一组统一的类中,从达到解耦的目的。分类工厂模式分为三种,简单工厂模式,工厂模式,抽象工厂模式,简单工厂模式并不属于23中设计模式的范畴,因为它对
2021-10-07 14:59:38
130
原创 【JUC-实现多线程】
一、基础1.1 介绍实现方法常用的实现多线程的2种方式:Thread和Runnable。之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程。1.2Runnable定义Runnable是一个接口,该接口中只包含了一个run()方法。它的定义如下:public interface Runnable { public abstract void run();}作用实现多线程。我们可以定义一个类A实.
2021-09-19 17:30:02
185
原创 【JUC-简介】
一、线程1.1 简介进程进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。线程线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。一个程序运行后至少有一个进程,一个进程中可以包含多个线程。多线程即就是一个程序中有多个线程在同时执行1.2线程状态图示五种状态 新建状态(.
2021-09-19 17:13:23
131
原创 【JUC-汇总】
一、基础1.1 简介链接【JUC-简介】一、线程1.1 简介进程进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。线程线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。一个程序运行后至少有一个进程,一个进程中可以包含多个线程。多线程即就是一个程序中有多个线程在同时执行1.2线程状态图示五种状态新建状态(.https://bl
2021-09-19 15:57:44
99
原创 【设计模式-单例模式】
一、基础定义单例对象的类只能允许一个实例存在实现步骤 将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。 在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。 使用场景 需要生成唯一序列的环境 需要频繁实例化然后销毁的对象 创建对象时耗时过多或
2021-09-19 15:39:40
123
原创 【设计模式-分类】
一、按目的1.1创建型基础用于描述“怎么创建对象”。它的主要特点是“将对象的创建与使用分离”。包含种类单例、原型、工厂方法、抽象工厂、建造者等5种创建型模式。1.2结构型基础用于描述“如何将类或对象按某种布局组成更大的结构”包含种类代理、适配器、桥接、装饰、外观、享元、组合等7种结构型模式。1.3行为型基础用于描述“类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,以及怎样分配职责。”包含种类...
2021-09-19 14:41:33
73
原创 【设计模式-七大原则】
一、开放-封闭原则(Open-Closed Principle:OCP)定义软件实体应当对扩展开放,对修改关闭。这句话说得有点专业,更通俗一点讲,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,去扩展新功能。问题由来凡事的产生都有缘由。开闭原则的产生缘由。在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能
2021-09-19 11:44:12
223
原创 【设计模式-汇总】
一、基础1.1 七大原则链接【设计模式-七大原则】一、开放-封闭原则(Open-Closed Principle:OCP)定义软件实体应当对扩展开放,对修改关闭。这句话说得有点专业,更通俗一点讲,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,去扩展新功能。问题由来凡事的产生都有缘由。开闭原则的产生缘由。在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码
2021-09-19 11:04:13
134
原创 【RabbitMQ-工作模式】
一、Simple Queue:简单队列模式1.1 基础介绍最简单的工作队列,其中一个生产者,一个消费者,一个队列,也称为点对点模式。(用的是默认交换机)图示1.2 代码生产者public static void main(String[] args) throws Exception { // 创建ConnectionFactory ConnectionFactory connectionFactory = new ConnectionFact.
2021-09-19 10:36:49
291
原创 【RabbitMQ-交换机】
一、简介交换机的作用接收生产者发送的消息并将这些消息路由给服务器中的队列交换机的一些属性 Name:交换机名称 Durability:是否持久化。如果持久性,则RabbitMQ重启后,交换机还存在。 Auto-delete:当所有与之绑定的消息队列都完成了对此交换机的使用后,删掉它。 Arguments:扩展参数 二、Direct Exchange:直连交换机2.1 基础使用前提消息中的路由键(routing key)如果和Bind
2021-09-17 22:04:05
465
原创 【RabbitMQ-简介】
一、特点RabbitMQ的特点 可靠性(Reliability):RabbitMQ使用一些机制来保证可靠性。如持久化、传输确认、发布确认。 灵活的路由(Flexible Routing):在消息进入队列之前,通过Exchange来路由消息的。对于典型的路由功能,RabbitMQ已经提供了一些内置的Exchange来实现。针对更复杂的路由功能,可以将多个Exchange绑定在一起,也通过插件机制实现自己的Exchange。 消息集群(Clustering):多个RabbitM
2021-09-17 21:12:30
122
原创 【RabbitMQ-基础】
一、消息队列什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到MQ中而不用管谁来取,消息使用者只管从MQ中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。 为什么要用消息队列从上面的描述中可以看出消息队列是一种应用间的异步协作机制
2021-09-17 21:00:45
126
原创 【RabbitMQ-汇总】
一、基础链接【RabbitMQ-基础】一、消息队列什么是消息队列消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到MQ中而不用管谁来取,消息使用者只管从MQ中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。为什么要用消息队列从上面的描述中可以看出消息队列是一种应用间的异步
2021-09-17 20:49:48
161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人