03 2020 档案
摘要:从JDK1.2开始,Java中的引用类型分为四种,分别是: 1.强引用(StrongReference) 这种引用是平时开发中最常用的,例如 String strong = new String("Strong Reference"),当一个实例对象具有强引用时,垃圾回收器不会回收该对象,当内存不足
阅读全文
摘要:思路: 0.ThreadLocal是什么?有什么用? 1.ThreadLocal用在什么地方? 2.ThreadLocal的一些细节 3.ThreadLocal的最佳实践 一.ThreadLocal用在什么地方? 讨论ThreadLocal用在什么地方前,我们先明确下,如果仅仅就一个线程,那么都不用
阅读全文
摘要:一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 Synchronized的作用主要有三个: 1.确保线程互斥的访问同步代码 2.保证共享变量的修改能够及时可见 3.有效解决重排序问题。 从语法上讲,Synchroni
阅读全文
摘要:今天遇到一个BUG,前端传递数字数组时,后端使用字符串类型去接收,结果无法接收到,代码如下 问题: GET请求: 前端: configJsonArray:[1,2] 后端: private String configJsonArray; 后端将数组封装到字符串内,使用JsonArray去解析 最后发
阅读全文
摘要:布隆过滤器出现的背景: 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。 在响应时间要求比较严格
阅读全文
摘要:/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the pool,
阅读全文
摘要:1.B+ Tree的层数较少 B类树的一个很鲜明的特点就是数的层数比较少,而每层的节点非常多,树的每个叶子节点到根节点的距离都是相同的; 2. 减少磁盘IO; 树的每一个节点都是一个数据也,这样每个节点只需要一次IO就可以全部读取,这样的结构保证了查询数据时能尽量的少进行磁盘IO,同时保证IO的稳定
阅读全文
摘要:1.使用多列作为索引,则需要遵循最左前缀匹配原则(查询从索引的最左前列开始并且不跳过索引中的列) 2.不再索引列上做任何操作,例如(计算,函数,(自动 or 手动的类型转换)),会导致索引失效而转向全表扫描 3.尽量使用覆盖索引(之访问索引列的查询),减少select *,覆盖索引能减少回表次数;
阅读全文
摘要:JDK1.7和1.8 HashMap区别: 1.数组+链表改成了数组+链表或红黑树; 2.表的插入方式从头插法改成了尾插法,简单说就是插入时,如果数组位置上已经有元素,1.7将新元素放到数组中,原始节点作为新节点的后继节点,1.8遍历链表,将元素放置到链表的最后; 3.在插入时,1.7先判断是否需要
阅读全文
摘要:这个问题应该倒过来思考,HashMap的长度是2的N次幂,有什么优势? 在HashMap的putVal()方法中,为了确定插入元素在table[]数组中的下标位置,使用的与(&)运算来计算 如下代码 final V putVal(int hash, K key, V value, boolean o
阅读全文
摘要:一.virtualenv的介绍: 在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决这种情况的,virtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的
阅读全文
摘要:一.分布式事务的基础理论: CAP理论: 又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。 CAP原则的精髓就是要
阅读全文
摘要:垃圾收集器组合 Serial+Serial Old Serial+CMS ParNew+CMS ParNew+Serial Old Paralle Scavenge + Serial Old Paralle Scavenge + Paralle Old 一.Serial(年轻代) : 年轻代收集器,
阅读全文
摘要:一.什么是Oauth2.0? 1.Oauth2.0即(Open Authorization ),Oauth2.0是一个用于第三方授权的开放标准,是Oauth1.0的升级版本,相比1.0版本易于使用: 2.Oauth2.0的4种的授权模式如下: 1.授权码模式(最常用的模式) 2.密码模式 3.隐藏模
阅读全文
摘要:1.Ctrl + Shift +i:快速查看某个类/方法 2.Ctrl +:(Ace Jump插件启动) 3.alt+F1:快速查看某个类/方法 所在的包 4.Ctrl +w :选中某个单词 5.Ctrl +shift+{ } :选中大括号内的代码块 2020/12/07补充 1.(Shift +
阅读全文
摘要:Spring中Bean的生命周期依赖于Spring的容器,大致可分为以下4个阶段: 1.Bean的初始化阶段 2.Bean属性赋值的阶段,获取上下文关联 3.Bean初始化的阶段 4.Bean销毁的阶段
阅读全文
摘要:不多BB,直接上代码: public class DataSourceKey { /** * 用户数据源 */ public final static String USER = "userDataSource"; /** * 报表数据源 */ public final static String
阅读全文
摘要:线程间通信的几种方式: 1.共享内存 2.消息传递 Java中的线程通信的方式有如下: 1.volatile关键字 实现共享变量 2.Object类的wait() notify()notifyAll()方法 3.CountDownLatch 并发组件 中的wait() 和down()方法 4.Ree
阅读全文
摘要:设计模式面向对象设计的原则: 1.单一职责原则: 一个类只负责一个功能领域中的相 应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 2.开闭原则: 一个软件实体应当对扩展开放,对修改关闭。即软件 实体应尽量在不修改原有代码的情况下进行扩展。 3.里氏替换原则: 所有引用基类 (父
阅读全文
摘要:OSI(Open System Interconnection)七层模型 TCP/IP 五层模型
阅读全文
摘要:不多逼逼,直接看注解上面的文档, @PostConsturct PostConstruct注释用于需要执行的方法在依赖注入完成后执行任何初始化。这个方法必须在类投入服务之前调用。 这个所有支持依赖关系的类都必须支持注解。即使调用带有PostConstruct注释的方法如果类不请求注入任何资源。 方法
阅读全文
摘要:备注: 责任链与策略模式有很多相似之处,如都是行为型设计模式,都能够处理代码中的if-else逻辑 主要区别在于: 策略模式 封装了算法,通过上下文对象去接受客户端的数据,根据数据类型执行不同的算法 策略模式的客户端知道所有算法以及各种算法的区别 package com.gabriel.stage.
阅读全文
摘要:数据库再通过链接两张表或者多张表时来返回记录时,都会生成一张中间的临时表,然后再将这张表返回给用户; 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录,还会返回on条件为真的记录 2.where
阅读全文
摘要:Session和Cookie出现的原因: 由于Http是无状态的协议,会话之间没有任何关联,也就是上一次会话和下一次会话没有任何关联,因此出现了会话技术Cookie和Session 下面分别从Cookie和Session两方面来讨论: Cookie: Cookie是客户端的会话技术,当浏览器访问服务
阅读全文
摘要:package com.gabriel.stage.utils; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import org.apache.commons.lang3.time.DateUt
阅读全文
摘要:先抛出结论: 浅拷贝是引用拷贝,A对象拷贝B以后,A对象和B对象指向同一块内存地址,改变A对象的属性值会触发B对象属性的改变,有安全风险 深拷贝是对象拷贝,A对象拷贝B以后,A对象和B对象指向不同的额内存地址,改变A对象的属性值不会触发B对象属性的改变,无安全风险,但是成本较高 如何实现深拷贝: 实
阅读全文
摘要:参考: https://blog.csdn.net/jun2016425/article/details/81506353 在TCP/IP协议中,TCP协议通过三次握手,建立可靠的连接服务: 三次握手是由客户端发起 第一步: 客户端向服务端发送请求报文(实际上就是一个具有特定格式的数据包),报文中包
阅读全文
摘要:一.什么是MapStruct? MapStruct是用于代码中JavaBean对象之间的转换,例如DO转换为DTO,DTO转换为VO,或Entity转换为VO等场景,虽然Spring库和 Apache 的库提供了类似BeanUtils用于转换对象,但是性能不佳(需要判断类是否被加载,如果没加载,还要
阅读全文
摘要:0.死锁 两个或者两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,若无外力作用,他们都将无法让程序进行下去; 死锁条件: 不可剥夺条件: T1持有的资源无法被T2剥夺 请求与保持条件: T1持有S1的同时,请求S2资源,但是不能立即获得(T表示任务,S表示资源) 互斥条
阅读全文
摘要:Mybatis与JPA的区别: 1.ORM映射不同: Mybatis是半自动的ORM框架,提供数据库与结果集的映射; JPA(Hibernate)是全自动的ORM框架,提供对象与数据库的映射; 2.可移植性不同: JPA(Hibernate)通过它强大的映射结构和hql语言,大大降低了对象与数据库(
阅读全文
摘要:ThreadLocal Thread类中 具有一个ThreadLocal.ThreadLocalMap ,这个变量是由ThreadLocal去维护的,各个线程之间相互隔离
阅读全文
摘要:一.抛出问题: 现在的项目中,存在这样的几个问题: 问题一.数据库存的数据类型是BigDecimal,或者代码中计算需要返回BigDecimal的值,由于BigDecimal返回给前端可能存在精度丢失情况 问题二.BigDecimal再后台计算后,通常需要保留两位小数或者三位小数返回给前端,每个数据
阅读全文
摘要:一.vuex的简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。Vuex背后的基本思想,就是前面所说的单向数据流。图4就是Vuex实现单向数据流的示意图。 Store 每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分
阅读全文
摘要:1.date_sub() 时间的加减 备注:record 为datetime类型 select record_time as date, order_area as orderArea, order_cnt as orderCnt from dm_rpt_dss_enterprise_sum whe
阅读全文
摘要:1.IntelliJ IDEA Keybindings -IDEA风格的 快捷键,熟悉JetBrain全家桶的不要错过; 2.Vue VSCode Snippets -写Vue时好用的快捷键 vb 生成模板,vm生成方法,vm生成组件,vd生成data等等; 3.HTML CSS Support -
阅读全文
摘要:1.v-text v-text主要用来更新文本,等同于JS的text属性 <span v-text="msg"></span> 这两者等价 <span>{{msg}}<span> 2.v-html 双大括号的方式会将数据解释为纯文本,而非HTML。为了输出真正的HTML,可以用v-html指令。它等
阅读全文