自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring学习

Spring中的设计模式控制反转(原则)依赖注入:实现控制反转的一种设计模式将想要创建对象的类(Person.class)和其依赖交给容器,让容器帮你创建对象工厂模式创建bean对象BeanFactory延迟注入(使用到某个 bean 的时候才会注入)占用内存少,程序启动速度快ApplicationContext容器启动时一次性创建所有bean是BeanFactory的扩展一般使用实现类ClassPathXmlApplication:

2021-03-26 18:00:06 279

原创 Kafka学习

Kafka分布式流式处理平台功能消息队列:发布订阅模式+广播(消息发布后才订阅的消费者收不到该消息)producerconsumerbrokertopicpartition(分区)topic的一部分,一个topic可以有多个可以分布在不同的broker上可简单理解为消息队列中的队列多副本机制,往leader写和读,follow从leader中获取信息进行同步,当leader发生故障时,follow通过选举成为新的leader(同步成度达到要求)优点:负载均衡,可以指定副本

2021-03-26 17:57:10 134

原创 RocketMQ学习

RocketMQ一个队列模型的中间件优点:高性能、高可靠、高实时、分布式RocketMQ 通过使用在一个 Topic 中配置多个队列并且每个队列维护每个消费者组的消费位置 实现了 主题模式/发布订阅模式 。成员Broker(中间件,与Topic多对多)有多个,实现负载均衡集群,主从部署(从节点可以提供消费服务,但是不能写入)NameServer(注册中心)Broker管理路由信息管理集群(没有主节点)、会出现数据不一致因为互不通信,当有新服务器加入的时候不会立

2021-03-26 15:14:01 151

原创 消息队列基础知识学习

优点通过异步处理提高系统性能(减少响应所需时间)。削峰/限流降低系统耦合性。缺点:系统可用性降低系统复杂性提高一致性问题JMSjava的消息服务(API是一个消息服务的标准或者说是规范)可以实现异步的消息传输优点使分布式的耦合度更低消息服务更加可靠异步性ActiveMQ实现的基础消息模式点对点(P2P)模型Queue作为载体满足生产者和消费者模式一条消息只能被一个消费者使用,未被消费的消息在队列中保留直到被消费或超时..

2021-03-18 22:59:38 116

原创 RabbitMQ

采用 Erlang 语言实现 AMQP的消息中间件消息只能存储到队列里。一个消息可投入一个或多个队列。多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊(Round-Robin,即轮询)给多个消费者进行处理。避免重复消费。不支持队列层面的广播消费。特点可靠性:使用一些机制来保证消息的可靠性,如持久化、传输确认及发布确认等。灵活的路由:对于典型的路由功能,RabbitMQ 己经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起,也可以通过插件机制来实现自己的.

2021-03-18 22:58:10 185

原创 volatile、CAS、synchronized

volatile特性:保证可见性,不保证原子性当写一个volatile变量时,JMM会把该线程本地内存中的变量强制刷新到主内存中去;这个写会操作会导致其他线程中的volatile变量缓存无效。保证顺序性:禁止指令重排a.当程序执行到volatile变量的读操作或者写操作时,在其前面的操作的更改肯定全部已经进行,且结果已经对后面的操作可见;在其后面的操作肯定还没有进行;b.在进行指令优化时,不能将对volatile变量访问的语句放在其后面执行,也不能把volatile变量后面的语句

2021-03-18 22:11:07 145

原创 重入锁(ReentranLock)

表示该锁能够支持一个线程对资源的重复加锁支持获取锁的时候的公平和非公平性选择如果在绝对时间上,先对锁进行获取的请求一定先被满足,那么这个锁是公平的,反之则是不公平的。ReentranLock提供了一个构造函数,能够控制锁是否是公平的。公平锁机制往往没有非公平的效率高公平锁能减少饥饿发生的概率实现重进入线程再次获取锁锁的最终释放实现:线程获取锁的时候检查同步状态,如果为0尝试获取,如果不为0,判断持有锁的是不是当前线程,如果是增加同步状态线程释放锁的时候减少同步状态,当同步状.

2021-03-18 22:08:16 111

原创 读写锁(ReadWriteLock)

读写锁拥有比排他锁更好的并发性和吞吐量readLock()writeLock()其他展示内部工作状态的方法int getReadLockCount():返回当前读锁被获取的次数int getReadHoldCount():返回当前线程获取读锁的次数boolean isWriteLocked():判断写锁是否被获取int getWriteHoldCount():返回当前写锁被获取的次数读写状态设计依赖自定义同步器来实现同步功能在同步状态(一个整性变量)上维护多个读线程和一个写线程.

2021-03-18 21:26:51 171

原创 mysql基础知识

mysql关系型数据库默认端口号:3306存储引擎5.7 默认的存储引擎是InnoDB具有事务、回滚和崩溃修复能力的事务安全型表支持行级锁、表级锁支持外键支持MVCC5.5及以前默认的存储引擎是MyISAM不支持事物、行级锁崩溃后无法安全恢复性能极佳索引哈希索引场景:绝大部分需求为单条记录查询BTree索引适合大部分场景b+树MyISAM(非聚簇索引)B+Tree叶节点的data域存放的是数据记录的地址索引文件和数据文件是分离的

2021-03-11 22:42:04 141 1

转载 Java23种设计模式之创建型模式

学习自http://c.biancheng.net/view/8508.html设计原则[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8ZyTyxU-1615194675655)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20210308111154427.png)]创建型模式特点:将对象的创建与使用分离单例模式对象创建型模式指一个类只有一个实例,且该类能自行创建这

2021-03-08 17:13:32 67

原创 AQS源码详解——独占锁(acquire、release)

acquire(int arg)获取独占资源 public final void acquire(int arg) { //1、尝试获取独占资源 成功返回 失败进行下一步 // 2、生成节点,将其添加进同步队列 竞争成功返回 //3、若线程在不可中断的时候被中断了 if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXC

2021-03-02 17:32:14 288

原创 JVM_内存管理

自动内存管理运行时数据区线程独享虚拟机栈(执行Java方法也就是字节码服务)1、局部变量表​ 1)存放信息​ ①基本数据类型(boolean、byte、char、short、int、float、long、double)​ ②对象引用​ a.reference类型​ b.不等同于对象本身​ c.可

2021-02-22 18:30:42 109

原创 Deque 双端队列

Deque 双端队列继承自Queue接口实现类:常用LinkedList实现。常用方法有如下,以及Queue中的方法第一个元素 (头部)最后一个元素 (尾部)抛出异常特殊值抛出异常特殊值插入addFirst(e)offerFirst(e)addLast(e)offerLast(e)删除removeFirst()pollFirst()removeLast()pollLast()检查getFirst()peekFi

2021-02-21 22:27:00 85

原创 getOrDefault()

map.getOrDefault(Object key, V defaultValue)当Map集合中有这个key时,就使用这个key对应的value值,如果没有就使用defaultValue

2021-02-21 22:23:18 269

原创 Java基础知识_内部类

1、内部类既可以访问自身数据域,也可以访问它的外围类对象的数据域若有重名,优先调用内部类中定义的同名变量。在其他类中,通过 外部类.内部类的形式进行访问People.Compare compare = new Compare(); 2、内部类中所有静态域都必须是 final。3、局部类不能用public或private访问符进行声明。与其他内部类相比,局部类还有一个优点。它们不仅能够访问包含它们的外部类,还可以访问局部变量。不过这些局部变量必须为事实上的final。3、由于构造器的名字必须

2021-02-20 22:21:41 93

原创 Java基础知识_类、方法、面向对象

类构造函数和类名一致可以进行重载不可以重写没有返回值new 调用如果没有自定义的构造函数,那么java会创建一个无参构造函数super this(位于构造函数中有效代码的第一行)隐式参数和显式参数this 指向的是 谁调用这个方法就指向谁public void setSex(int sexGet){ this.sex = sexGet; //此处的this即为下文中的对象s,是该函数的隐式参数 //sexGet为显示参数}Student s

2021-02-20 22:09:37 75

原创 Java基础知识_基本类型的运用

整型int正负20亿()拆箱和装箱.valueOf();//装箱.intValue();//拆箱java编译器做的自动拆装箱128陷阱[-128,127],高点可自行设置(Integer使用较多,应用得当可节约内存)long128陷阱[-128,127],边界不可更改shortbyte浮点型float(转到int时可能会出现精度缺失)double相乘时会出现精度缺失的情况,可先转为BigDecimal再做乘法运算)

2021-02-20 21:11:41 85

转载 每天一个Linux

转载至https://blog.csdn.net/weixin_43314519/article/details/106934678?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.add_param_isCf一、基本命令操作常用键Tab按

2020-10-11 10:31:04 99

原创 Java中double相乘精度缺失问题

今天在写项目的过程中遇到了这样一个问题10.79 * 350 = 3776.4999999999995而不是原来应该出现的 3776.5 导致四舍五入的过程中少一变成3776上网一查,发现是精度缺失导致的解决办法:相乘前将其从double类型转换为BigDecimal类型 BigDecimal price = new BigDecimal(350); BigDecimal unit = new BigDecimal(10.79); BigDecima

2020-10-11 10:12:26 1680

原创 如何分析算法的运行时间(以插入排序为例)

一个算法在特定输入上的运行时间是指执行的基本操作或步数量。简单来说就是执行每行()伪代码所需演的时间()。接下来看下面这段伪代码行 代码 代价 次数 1 for j = 2 to A.length n 2 key = A [ j ] n-1 3 //Insert A [ j ] into the sort...

2020-03-24 16:52:20 1528 1

原创 Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid

今天在写maven+ssm框架时报如图所示错误点开target一看,我的xxxmapper.xml文件根本就没有被打包(所以报错信息写了找不到我在xxxmapper.xml写的方法)上网去查了查,找到如下解答构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。Maven打包时,默认java目录下只将.java编译并将编译后的class文...

2020-01-30 21:40:40 1362

原创 插入排序

应用场景对于少量元素的排序,他是一个有效的算法工作方式(比喻):桌子上有很多牌,左手从中任意抽取一张,插入右手已排好序的牌组中实现过程桌上有牌 [5,2,4,6,1,3] 右手无牌左手抽第一张 5 放于右手, 此时右手 [ 5 ] ,桌上[2 , 4 , 6 , 1 , 3 ]下一趟 抽 2 ,2比5小 放于 5 前 此时右手[2,5 ]下一趟 4 比2大 比5小 放于...

2020-01-29 23:16:39 137

原创 浅谈tomcat底层工作原理

核心功能请求分发(接受请求信息,把它分配到各个servlet里面去)运行流程//启动tomcat//首先扫描所有.calss文件,根据路径拿到类信息,把注解信息单独拿出来,根据注解把一个个servlet挑出来存到map结构里 ”文件名“:“对应路径”Socket... //进行轮询操作,拿到网络数据:字符串strHttpServletRequest request = ...

2020-01-28 17:56:42 552

原创 浅淡hashmap(Java)

适用场景读多写少(一般场景:一次写入后只剩下读)时间复杂度插入操作时间复杂度为O(1)读取操作时间复杂度为O(1)核心组成散列表(链接法解决冲突)散列表+红黑树( jdk1.8的新特性:当散列表格里面的数不超过8时,里面存的是链表,超过8时里面存的是红黑树(自平衡二叉查找树)从根节点开始,边比较边插入)重hash目的:避免数据倾斜,很多数存储到相同散列格里需自行设置限定一个散列...

2020-01-28 16:49:40 109

原创 浅谈线程(Java)

线程及其一些相关概念进程是操作系统中进行保护和资源分配的基本单位,操作系统分配资源以进程为基本单位。而线程是进程的组成部分,它代表了一条顺序的执行流。其中main方法为主线程,其他开辟的线程称为子线程。每创建一个新的线程,就会开辟一个新的栈。当执行多个线程的时候拷贝run方法以及其内部生成的变量各一份。(由此可以看出,run方法是绝对安全的,对run方法进行上锁是毫无意义的。因为每个线程...

2020-01-24 18:30:07 220 1

原创 Java基础知识_反射

1、getClass()方法Employee e;Class c1 = e.getClass();2、调用静态方法forName获得类名对应的Class对象String className = “java.util.Radom”;Class C1 = Class.forName(className);如果类名保存在字符串中,并可在运行中改变,就可以使用这个方法。当然,这个方法只有在cl...

2020-01-19 17:42:53 246

原创 在elipse中应用maven通过在pom.xml中加坐标添加错误jar包删除后,程序仍在寻找的问题

今天学习应用maven的过程中,有一次添加的依赖,elipse报错提示系统找不到,于是我把他给删除了,更换了另一个版本的jar包。这一次,系统成功找到了。可是找不到之前的依赖依然的信息依然显示到Console里面。尝试 run as—>maven clean 和 project—>依旧没有用。解决办法:关掉elipse再重新启动。原因:不太清楚,猜测应该是缓存问题。...

2020-01-19 16:07:26 231

原创 一个简单的队列(Java代码)

public class QueueTest< T > { private T[] data = (T[]) new Object[20]; private int start = 0; private int end = 0; public void push(T newint) { if( end - start == data.length ) { T[] ...

2020-01-19 15:50:27 253

原创 一个简单的栈(Java代码)

public class Stack { private int[] data = new int[20]; private int index = -1; //add名字也ok public void push(int newint) { if( index + 1 == data.length ) { int[] datanew = new int[data.leng...

2020-01-19 15:48:02 127

原创 Spring中jsp与controller交互数据的六种方式

Spring中jsp与controller交互数据的六种方式1、与servlet相似,接受请求发送数据2、与第一种类似,只是把HttpServletRequest request换成了分装好的Model类对象3、获取前端input框里的account和pwd4、与第三种类似简化参数5、再次简化6、继续简化并通过ForEach方法输出数据库里的数据1、与servlet相似,接受请求发送数据@Re...

2020-01-13 15:20:52 2364 1

原创 int类型和float类型在内存中的存储形式

int类型-在内存中占 4个字节,32位表数范围:-2147483648(-231)~2147483648(231-1)原因:0 代表 +0,-0 代表 -2^31,故负数比整数多一个。32位二进制的最高位为符号位,当符号位是 1 的时候表示一个负数int b =0b11010100;System.out.println(b);int c =0b00000100;System....

2019-11-13 10:46:10 2056 1

原创 128陷阱

public class test { public static void main(String[] args) { Integer i=100; Integer i1 = 100; System.out.println(i == i1); i = 1000; i1 = 1000; System.out.println(i == i1); }运行后我们会发现第一个Sys...

2019-11-12 23:00:27 164

空空如也

空空如也

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

TA关注的人

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