- 博客(17)
- 收藏
- 关注
原创 为什么需要hashCode
最直观的感受就是提高性能1、如HashSet中先通过hashCode判断是否重复,然后hashCode相等再通过equals确定值是否相等。这里hashCode起到一个前置校验的作用,hashCode不相等则不需要进行equals比较
2021-10-18 09:25:49
222
原创 微服务限流、降级、熔断概念
限流限流是设置的QPS或者线程数量的阈值,此为条件熔断达到条件触发熔断与降级。熔断是相对于请求方来说,此接口不可用了降级降级是达到阈值接口相对于整个服务来说,先暂停此接口服务以避免阻塞服务内其他重要业务,在当前的解决方案中降级与熔断必然一起触发例当我每秒请求QPS达到100就进行限流,对此接口进行熔断与降级,不再提供请求处理。如何做到不再进行处理呢,立即返回错误页面...
2021-08-26 11:59:16
299
原创 SpringBoot自动配置
SpringBoot自动配置1、现象大家在使用SpringBoot时,如很多依赖组件无需自动进行配置与引用,直接在项目中定义类或接口直接进行注入即可使用以MongoDB的操作模板类MongoTemplate来说,项目中并未手动声明,直接定义类名称注入即可使用。2、原因大家在使用SpringBoot都会在启动类加入@SpringBootApplication注解,首先都知道此注解是个组合注解,里面包含了@EnableAutoConfiguration,对应了spring.factories
2021-05-27 11:29:08
131
原创 由@Async引起的Spring循环引用
场景&原因package com.shi.cycleref;import org.springframework.scheduling.annotation.Async;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.stereotype.Component;import javax.annotation.Resource;/** * @author s
2021-04-16 11:45:15
890
原创 面向对象
面向对象面向对象就是把实际生活中的实物抽象到程序中,实物所具有的特征可以作为属性,具有的动作可作为方法封装封装:我们使用手机,作为用户的角度我们其实并不需要关注里面的细节,只需要做好我们使用者的角色即可继承继承:作为父母的孩子,可以说继承来了耳朵、眼睛、鼻子,身体。但属于他们私有的我们在生来是不可继承的,如记忆、知识多态多态:比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类别)之一消息有不同的响应。...
2021-04-10 15:59:32
101
原创 HashMap
链表和树之间的转换长度为8,链表转树,长度为6,树转链表。。中间有个差值,还可以防止链表和树频繁转换。假设8以上转为树,8以下转为链表,那么一个hashmap如果不停的插入删除,链表长度在8左右徘徊,就会不停的树转链表,链表转树,效率很低。负载因子为什么是0.75我们在考虑HashMap的时候,首先要想到的是HashMap只是一个数据结构,既然是数据结构最主要的就是节省时间和空间。负载因子的作用肯定也是节省时间和空间。为什么节省呢?我们考虑两种极端情况。1、负载因子是1.0我们的数据一开..
2021-03-22 13:33:44
447
原创 RuntimeException不需要throws
首先对于Java中异常分为两种受检查异常和运行时异常对于受检查异常来说想要向外声明一些需要调用者去手动逻辑处理时使用,属于对调用者的一种警示对于运行时异常基本属于代码逻辑上的一个问题,即使throws外部调用者也不能处理,故RuntimeException不需要向外声明...
2020-12-25 16:15:47
1370
原创 SpringIOC源码总结
IOC无非就是非侵入式的创建与管理对象最核心莫过于两种处理器BeanFactoryPostProcessor与BeanPostProcessor,Spring对Bean的处理主要都是经过内部定义的这两个接口的实现类,做了大量的细节处理。也可以由使用者自定义实现类,非侵入式的改变Spring构建Bean的流程与特性...
2020-11-12 11:35:39
228
1
原创 证明Java中只有值传递(副本传递)
/** * @author syz */public class Demo { public static void main(String[] args) { User user = new User(); user.name = "张三"; user.age = 18; change(user); System.out.println(user); } static void change
2020-09-23 16:58:37
250
原创 说一说String.intern()
String的内存分配主要在JVM两个区域中,堆和常量池intern()方法:常量池没有该字符串则在常量池创建该字符串对堆中的引用,并返回常量池地址。常量池存在该字符串则直接返回该常量池地址 String s1 = new String("a"); // 堆 a 常量池 a s1.intern(); // 常量池已存在a,没有进行操作 String s2 = "a"; // 指向常量池的 a System.out.println(s1 =.
2020-09-23 15:12:51
108
原创 策略模式和工厂方法干掉if-else
业务实现、接口与工厂目录结构抽象上层通用接口,queryDetail为业务方法编写对应的业务实现类,detailType用于区分下层实现类使用工厂方法预加载实现类直接传入响应的详情类型调用即可总结:上层定义接口,由不同的详情类去实现,定义更加明确,每个类各司其职。以后有其他详情需要查询增加对应的详情类并在工厂中预加载即可,方便扩展,不会影响到之前的编码...
2020-09-21 10:26:14
197
原创 Jenkins配置git仓库
一、gitee配置公钥本地Jenkins服务器生成.ssh文件,生成公钥参考。将其中的id_rsa_pub文件内容添加到自己的gitee公钥配置中二、jenkins配置凭据(私钥)点击凭据,然后global添加凭据选择私钥方式,将jenkins服务器生成的.ssh文件下的id_rsa内容cv进来即可项目配置里设置好对应的项目地址和刚才添加好的凭据,未出现异常提示则表示关联成功...
2020-09-10 11:49:37
2170
原创 自身对接口的理解,Interface
自身对接口的理解接口最本质的一点,对具体的实现做一个限制。例:一家地主,家里有一个老管家,地主有一套针对管家的规矩,老管家负责把这套规矩做好,至于怎么做好上面并不关系。这个时候老管家由于年纪过大,说要辞职走人,地主也无其他办法,只能另找了一个新管家。这个新管家呢还是按照针对管家的那套规矩做事,可能处理问题的方式与老管家不一样(并不一定比老管家的方式差)例子化为软件设计的角度考虑:提供了相对...
2019-12-14 14:13:08
156
原创 mpvue中路由管理之mpvue-entry
简介:mpvue-entry是集中式页面配置,自动生成各页面的入口文件,优化目录结构,支持新增页面热更新1.废话不多说,要使用mpvue-entry管理首先需要在package.json中引入依赖后,运行npm install加载依赖2.引入成功2.需要在webpack.base.conf.js文件中配置上面注释的是原本的路由跳转配置,因使用了mpvue-entry后不需要,故可注释...
2019-08-25 20:12:29
1296
原创 mpvue使用总结
一、对象多层级数据更新后视图不更新问题原因:多层级对象或多层级对象数组渲染到视图后,修改属性,视图不更新解决方式:1、使用双层级对象或双层级对象数组(推荐)2、this.$forceUpdate(); // 触发render函数进行自动更新编辑此区域二、绑定对象属性值为0时会赋值为空字符串原因:deepDiff 方法在处理对象类型的差异时,对于对象类型属性值为0时,会转化为空字符串解...
2019-08-24 20:30:13
346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人