03 2020 档案
摘要:lock 与 lockInterruptibly比较区别在于:lock 优先考虑获取锁,待获取锁成功后,才响应中断。lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。详细区别: ReentrantLock.lockInterruptibly允许在等待时由其它线程
阅读全文
摘要:聚簇索引 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种。Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中,中间的节点页保存指向下一层页面的指针。“聚簇”的意思是数据行被按照一定顺序一个个紧密地排列在一起存储
阅读全文
摘要:https://blog.csdn.net/shudaqi2010/article/details/79958222
阅读全文
摘要:何谓悲观锁与乐观锁 乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数
阅读全文
摘要:对象实现Comparable接口 public class Field implements Comparable<Field>{ private String name; private int age; public Field() { } public Field(String name, i
阅读全文
摘要:JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Genera
阅读全文
摘要:复制算法的两块Survivor空间 概述 在《深入理解Java虚拟机》这本书中,对复制算法有一段这样的介绍:现在的商业虚拟机大多采用复制算法来收集新生代。复制算法将内存分为一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor空间,当回收时,将Eden和S
阅读全文
摘要:JVM之GCRoots详解目录面试题引子什么是垃圾判断对象是否可以被回收之引用计数法判断对象是否可以被回收之枚举根节点可达性分析Java中可以作为GC Roots的对象1. 面试题引子一面:GC Roots如何确定?哪些对象可以作为GC Roots?2. 什么是垃圾1.简单说就是内存中已经不再被使用
阅读全文
摘要:Spring AOP主要有两种代理方式:1.JDK动态代理 2.cglib代理1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和C
阅读全文
摘要:1.虚拟机栈(本地变量表)引用的对象 2.方法区静态属性引用的对象 3.方法区常量引用的对象 4.本地方法栈JNI(一般指naive方法)中引用的对象 常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC
阅读全文
摘要:1.@Scope注解是什么 @Scope注解是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)、prototype(多例),Web 作用域(reqeust、session、globalsession),自定义作用域 a.s
阅读全文
摘要:背景 Java8的stream接口极大地减少了for循环写法的复杂性,stream提供了map/reduce/collect等一系列聚合接口,还支持并发操作:parallelStream。 在爬虫开发过程中,经常会遇到遍历一个很大的集合做重复的操作,这时候如果使用串行执行会相当耗时,因此一般会采用多
阅读全文
摘要:今天碰到同事在群里问怎么把一个Map根据value进行分组,当时我的第一想法是将value和key互换,多个value对应的不同key作为集合,代码如下:12Map<String,Integer>SataMap=new HashMap<>(); final Map<Integer, List<Str
阅读全文
摘要:场景:Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map1.对集合按照单个属性分组e.g. 按照skuId分组Map<String, List<EntryDeliveryDetailywk>> detailsMap01 = dtos1.stre
阅读全文
摘要:问题:遇到一个小问题,查询出来一组数据后,按照其中的属性进行groupBy 分组 ,分组后要保证顺序不变。但是实际用groupBy进行分组后,返回的数据是杂乱无章的,没有按照原来list 的顺序返回排查首先去api中查找解决,查看Java 的 java.util.stream 包 Collector
阅读全文
摘要:1、java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set
阅读全文
摘要:这篇文章将会讲解Java 8 Stream sorted()示例 下面代码以自然序排序一个list list.stream().sorted() 自然序逆序元素,使用Comparator 提供的reverseOrder() 方法 list.stream().sorted(Comparator.rev
阅读全文
摘要:最近遇到个需求是这样的:写一个类似于通讯录的简单功能,要求是首先按照部门显示列表,然后点击部门下拉显示部门里面的人员信息,且人员信息按照职位排序。先分析数据结构:最外层是部门,部门里面是员工,且项目是统一返回数据格式。{ "code": 0, "data": [ { "name": "部门名称",
阅读全文
摘要:区别: LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。 HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。
阅读全文
摘要:Map<String, String> testMap = new HashMap<String, String>();testMap.put("1", "3");testMap.put("3", "4");testMap.put("2", "1");testMap.put("4", "2");fo
阅读全文
摘要:Spring boot之所以流行,是因为Spring starter。Spring starter是Spring boot的核心,可以理解为一个可拔插式的插件,例如,你想使用Reids插件,那么可以使用spring-boot-starter-redis;如果想使用MongoDB,可以使用spring
阅读全文
摘要:一、概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查
阅读全文
摘要:mybatis中resultMap和resultType的区别mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap。resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟
阅读全文
摘要:数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。 主从集群 这种集群方式,就是将访问的压力从主库转移到从库
阅读全文
摘要:浅谈ArrayList动态扩容原创Howard_14 最后发布于2017-10-23 22:54:24 阅读数 44174 收藏分类专栏: java版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.n
阅读全文
摘要:1、实现Cloneable接口表明该类的对象是允许克隆的。 2、允许克隆的意思是:可以调用clone()方法。 3、深拷贝还是浅拷贝,取决于如何重写Object的clone()方法。 4、原对象和克隆对象的关系: 深拷贝:阳关道和独木桥; 浅拷贝:藕断丝连。 上面的第二点解释一下,如果没有实现Clo
阅读全文
摘要:设置显示Arraylist中的null完整查看初始数组大小,扩容过程一、老版本:Settings -> Debugger -> Data Views -> Arrays -> Hide null array elements新版本:Settings -> Debugger -> Data Views
阅读全文
摘要:初始化ArrayList的底层是一个动态数组,ArrayList首先会对传进来的初始化参数initalCapacity进行判断如果参数等于0,则将数组初始化为一个空数组,如果不等于0,将数组初始化为一个容量为10的数组。 扩容时机当数组的大小大于初始容量的时候(比如初始为10,当添加第11个元素的时
阅读全文
摘要:如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 MySQL 主从复制原理的是啥? 主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的
阅读全文
摘要:数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。 主从集群 这种集群方式,就是将访问的压力从主库转移到从库
阅读全文
摘要:面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是看了源码你会说的更多,更详细,更具体,本篇主要看的是jdk1.8 至于其他版本大同小异,看看就知道了
阅读全文
摘要:面试的时候闻到了Hashmap的扩容机制,之前只看到了Hasmap的实现机制,补一下基础知识,讲的非常好 原文链接: http://www.iteye.com/topic/539465 Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的
阅读全文
摘要:先说变量 Java中有基础变量(8种基本数据类型的)和引用变量(除了8种基本数据类型之外的, 一般指的是对象类型的变量, 也称引用)。 注意:String也是对象类型的一种,但它作为一种比较常用的数据类型, 较于纯粹的对象类型还有不同之处。 再说字面值 字面值指的是某个类型的合法取值, 或者说,可以
阅读全文
摘要:它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.sleep和wait的区别还有:
阅读全文
摘要:什么时候使用索引(When should it be used?)鉴于创建索引需要额外的磁盘空间(上面的例子需要额外的277778个磁盘块),以及太多的索引会导致文件系统大小限制所产生的问题,所以对哪些字段建立索引,什么情况下使用索引,需要审慎考虑。由于索引只是用来加速数据查询,那么显然对只是用来输
阅读全文
摘要:SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明:假设数据库中存在这样的表:table user(id varchar(20) PRIMARY KEY , name varchar(20) ,
阅读全文
摘要:SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者)。[摘自] SQL injection - Wikipedia SQL注入,大家都不陌生,是一种常见的攻击方式。攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(
阅读全文
摘要:import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit; import org.springframework.data.redis.core.Redis
阅读全文
摘要:1.scan前言从Redis v2.8开始,SCAN命令已经可用,它允许使用游标从keyspace中检索键。对比KEYS命令,虽然SCAN无法一次性返回所有匹配结果,但是却规避了阻塞系统这个高风险,从而也让一些操作可以放在主节点上执行。2.SCAN相关命令SCAN相关命令包括SSCAN 命令、HSC
阅读全文
摘要:参考这个地址 https://blog.csdn.net/zy_281870667/article/details/79310554
阅读全文
摘要:今天在看项目中大神写的框架中关于redis存储相关代码时,发现了再获取set数据类型的全部元素时,采用的是sscan函数,而不是采用的smembers函数,这两个到底有什么区别呢?先看这两个命令:keys:用于获取当前数据库的模式匹配的所有keysmembers:获取set集合中的所有元素而scan
阅读全文

浙公网安备 33010602011771号