- 博客(40)
- 资源 (1)
- 收藏
- 关注

转载 HashMap实现原理分析
转载出处:http://blog.csdn.net/vking_wang/article/details/141665931. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内...
2018-05-21 19:32:31
113
转载 JDK1.8中永久代向元空间转换
转载自https://www.cnblogs.com/paddix/p/5309550.html.元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制,但可以通过以下参数来指定元空间的大小: -XX:MetaspaceSize,初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空.
2021-01-25 01:58:36
336
转载 为啥SQLServer到处都要加nolock
转自https://blog.csdn.net/yangjiechao945/article/details/81355558.公司.net项目,很多逻辑都是在存储过程中实现,发现查询都添加了WITH (NOLOCK)。MySQL和SQLServer默认维护事务的机制是不同的,SQLServer 默认情况下一个事务修改了某个值,在这个事务提交前,是阻塞其他连接来读取这个修改中的值的,如果加nolock读取到的是修改后为提交的值(也就是脏读,因为可能这个值最终会回滚)MySQL 默认情况.
2021-01-20 09:38:56
509
转载 MySQL一条更新语句的执行流程
更新语句的整体流程: 连接数据库 清空当前表对应的所有缓存 分析器分析词法和语法 优化器决定使用什么索引 执行器负责具体执行 mysql> update T set c=c+1 where ID=2;InnoDB引擎部分在执行这个简单的update语句的时候的内部流程:执行器先找引擎取ID=2这一行。ID是主键,引擎直接用树搜索找到这一行。如果ID=2这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返.
2021-01-11 23:07:01
417
转载 Redis: 缓存穿透、缓存击穿、缓存雪崩(原因+解决方案)
转自https://www.cnblogs.com/xichji/p/11286443.html.在我们日常的开发中,都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承
2021-01-04 21:28:03
232
转载 Java BigDecimal 的坑
1. 构造函数的坑public void constructTest(){ BigDecimal value1 =new BigDecimal(10.511); System.out.println("value1: " + value1); BigDecimal value2 = new BigDecimal("10.511"); System.out.print...
2019-02-01 17:54:43
885
转载 BigDecimal数据类型(初始化,加减乘除,基本操作)
BigDecimal为大数据类型,更精准的计算1.初始化1.1 字符串做参数 BigDecimal a =new BigDecimal(“1.22”); doublevalue:1.2199999999999999733546474089962430298328399658203125 1.2 数字做参数 BigDecimal a =new BigDecimal(1.22); c...
2019-02-01 17:49:18
12989
1
转载 do...break...while的一个“高级用法”
使用do...break...while简化多级条件判断的结构。 如果你写过不少代码,那么一定会不时遇到类似下的情况:假设要找到文件A,复制该文件为B;然后打开B文件,然后往B文件内写入一些内容;最后在写入成功后,我们需要再进行一些相关操作。在此过程,遇到以下情况时将放弃后续的操作,认为是操作失败:1、如果A文件不存在;2、如果B文件已经存在,并且询问用户是否覆盖时,用户回...
2019-01-31 09:55:23
1727
1
转载 Lambda表达式与匿名内部类的区别分析
一、 匿名内部类匿名内部类其实就是没有名字的内部类,但是其必须要实现一个接口或者继承一个父类,通常是用来简化代码例程如下:先定义一个 IAnimalpublic interface IAnimal { void run(); void walk();}然后定义测试类 NestedClassTestpublic class NestedClassTest...
2019-01-09 20:55:40
2885
4
转载 Lambda表达式和匿名内部类
Java8由匿名内部类到lambda表达式的转换,除了具体的语法外,二者之间真正的差别是什么。事实上,lambda表达式有时被错误地称为匿名内部类的“语法糖”,这说的只是二者之间只存在简单的语法上的变化。但实际上,二者之间存在很多显著差异,其中有两点对于程序员来说非常重要:(1) 匿名内部类表达式会确保创建一个拥有唯一标识的新对象,而lambda表达式的计算机结果可能有,也可能没有唯一标识,这...
2019-01-09 20:25:02
571
转载 为什么lambda表达式要用final
为什么 Lambda 表达式(匿名类) 不能访问非 final 的局部变量呢?因为实例变量存在堆中,而局部变量是在栈上分配,Lambda 表达(匿名类) 会在另一个线程中执行。如果在线程中要直接访问一个局部变量,可能线程执行时该局部变量已经被销毁了,而 final 类型的局部变量在 Lambda 表达式(匿名类) 中其实是局部变量的一个拷贝。 Java 8 的 Lambda 可以捕获...
2019-01-09 20:20:36
8413
2
转载 JAVA中replace和replaceAll 区别
1.replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);2.replaceAll的参数是regex或者char,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;相同点是都是全部替换,即把源字符串中的某一字符或...
2019-01-09 20:02:50
447
转载 jquery跳出循环 $().each
jquery的循环函数是each()结束跳出循环:return false, 相当于break;结束本次循环进入下次循环:return true, 相当于continue。举例(1)function MyEach(obj, text) { var val = ""; $("#option").each(function(){ if($(t...
2019-01-09 19:55:13
1743
转载 javac编译过程
详见:https://blog.csdn.net/tjiyu/article/details/53748965 JVM规范定义了Class文件结构格式,但没有定义如何从java程序文件转化为Class文件,所以不同编译器可以有不同实现。 从javac编译器源码来看,其编译过程可以分为3个子过程: 1、解析与填充符号表过程:解析主要包括词法分析...
2018-08-15 15:39:15
5253
转载 ListenableFuture使用场景及介绍示例
ListenableFuture是对原有Future的增强,可以用于监听Future任务的执行状况,是执行成功还是执行失败,并提供响应的接口用于对不同结果的处理。适用场景:1、如果一个主任务开始执行,然后需要执行各个小任务,并且需要等待返回结果,统一返回给前端,此时Future和ListenableFuture作用几乎差不多,都是通过get()方法阻塞等待每个任务执行完毕返回。 ...
2018-08-03 17:59:38
7569
转载 Java8 Streams 例子
在本教程中,我们将向你展示一些java 8个例子来演示的流filter(),collect()使用,findany()和orelse().1. Streams filter() and collect() 1.1 Java 8之前, 过滤一 List 如下所示 :BeforeJava8.java package com.mkyong.java8; i...
2018-08-03 17:57:37
210
转载 适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境...
2018-07-11 16:05:04
140
转载 Redis学习之java代码实现(Jedis)
前面两篇说过redis的安装使用和密码设置后,现在来看看怎么用java代码连接服务器,并使用redis。首先项目中需要有redis的驱动包,下载Jedis.jar。下载最新驱动包,放到项目的lib目录下,确保项目包含该驱动包。如果是maven项目,可以直接在pom.xml文件中引入如下配置:<dependency> <groupId>redis.clients<...
2018-07-09 00:17:23
268
转载 long和double类型变量的非原子性问题
“深入java虚拟机”中提到,int等不大于32位的基本类型的操作都是原子操作,但是某些jvm对long和double类型的操作并不是原子操作,这样就会造成错误数据的出现。 错误数据出现的原因是: 对于long和double变量,把它们作为2个原子性的32位值来对待,而不是一个原子性的64位值, 这样将一个long型的值保存到内存的时候,可能是2次32位的写操作, 2个竞争线程想写不同的值到内存的...
2018-06-27 22:01:15
1664
原创 maven中的install命令
maven通过install将本地工程打包成jar包,放入到本地仓库中,再通过pom.xml配置依赖引入到当前工程。pom.xml中引入的坐标首先在本地maven仓库中查找,若没有则去maven的网上中央仓库查找,并放到本地仓库供项目使用。1. maven的install可以将项目本身编译并打包到本地仓库,这样其他项目引用本项目的jar包时不用去私服上下载jar包,直接从本地就可以拿到刚刚编译打包...
2018-06-09 16:13:16
15424
转载 Maven项目构建命令compile、test、package
原文链接:https://blog.csdn.net/sinat_25926481/article/details/76228160compile前面我们按照maven约束好的文件路径建好项目后,加入pom.xml 在命令行输入mvn compile后,maven就会自动帮我们下载依赖jar,为代码生成字节码文件等。我们把这个过程称为 编译。test前面我们写好测试类,在命令行输入 mvn tes...
2018-06-09 13:59:43
2887
转载 MySQL建表规范与常见问题
原文链接:http://blog.csdn.net/u012562943/article/details/52025860?locationNum=3&fps=1一、 表设计 库名、表名、字段名必须使用小写字母,“_”分割。 库名、表名、字段名必须不超过12个字符。 库名、表名、字段名见名知意,建议使用名词而不是动词。 建议使用InnoDB存储引擎。 ...
2018-06-08 14:54:49
252
转载 Linux中的top命令
Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高….在终端中输入top,回车后会显示如下内容:top - 21:48:39 up 8:57, 2 users, load average: 0.36, 0.24, 0.14Tasks: 322 total,...
2018-06-07 20:30:13
210
转载 jar包和war包的介绍与区别
jar包和war包所存在的原因是,为了项目的部署和发布,通常把项目打包,通常在打包部署的时候,会在里面加上部署的相关信息。这个打包实际上就是把代码和依赖的东西压缩在一起,变成后缀名为.jar和.war的文件,就是我们说的jar包和war包。jar包和war包都可以看成压缩文件,用解压软件都可以打开。但是这个“压缩包”可以被编译器直接使用,把war包放在tomcat目录的webapp下,tomcat...
2018-06-07 00:27:30
4422
转载 双端链表
双端链表并不是双向链表,其特点是第一个链结点与最后一个链结点直接相连:1. 什么是双端链表链表中保存着对最后一个链结点引用的链表。2. 从头部进行插入 链表中保存着对最后一个链结点引用的链表。3. 从尾部进行插入要对链表进行判断,如果为空则设置尾结点为新添加的结点。4. 从头部进行删除判断头结点是否有下一个结点,如果没有则设置结点为null好处:因为保留了对最后一个结点的引用,方便在最后进...
2018-06-02 16:05:06
1932
1
转载 Mysql分页查询高效方案
一,最常见MYSQL最基本的分页方式:select * from content order by id desc limit 0, 1012在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:select * from content order by id desc limit 1000000, 1...
2018-05-21 20:20:39
474
转载 ConcurrentHashMap
功能特点: 1、具备HashMap的一般规范,和HashMap的基本实现原理一致。(底层数据结构:数组+链表) 2、和HashTable(底层基于:当前对象锁)相比,有更高的并发效果。(ConcurrentHashMap底层基于:分段锁) 内部数据结构:ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEntry 用来封装映射表的键 / 值...
2018-05-21 19:37:20
118
原创 HTTP长连接、短连接
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会...
2018-05-19 20:49:00
409
转载 drop、truncate和delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。(2)表和索引所占空间。 当表被TRUNCATE 后,这个表和索引所占用的空间会恢...
2018-05-19 20:29:53
151
原创 Java包装类
基本数据类型 包装类 byte Byte boolean Boolean short Shortchar Character int Integerlong Long float Fl...
2018-05-19 20:29:32
177
原创 Java中基本数据类型和包装类型的区别
1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是 2、包装类型是引用的传递;基本类型是值的传递 3、声明方式不同: 基本数据类型不需要new关键字; 包装类型需要new在堆内存中进行new来分配内存空间 4、存储位置不同: 基本数据类型直接将值保存在值栈中; ...
2018-05-19 20:16:31
795
转载 String、String.valueOf、toString 它们三者的区别总结
先说他们三的作用:就是让我们得到的对象或参数类型,按照要求转成字符串的形式。String:毫无疑问,这种就是强转形式,简单方便,效率高。他只能强转原本就是字符串的东西,如果原本不是字符串的话,那么就会报错。比如:12345Boolean boolean1 = true; String str3 = (String)boolean1;//这行代码会报错,编译不过S...
2018-05-19 19:36:56
425
转载 Synchronized 实现原理
Synchronized 原理先通过反编译下面的代码来看看Synchronized是如何实现对代码块进行同步的:1 package com.paddx.test.concurrent;2 3 public class SynchronizedDemo {4 public void method() {5 synchronized (this) {6 ...
2018-05-15 23:00:55
702
转载 Java中int的取值范围
Java中int的取值范围是-2^32~2^32-1。先上代码,通过下面代码的执行结果观察[java] view plain copypublic class Test { public static void main(String[] args) { // 2的31次方 int j = (int) Math.pow(2,31); ...
2018-05-15 22:49:43
1366
原创 Arrays.sort()
之前做笔试有个排序的问题,可以将字符串转换成字符数组再进行排序,之后用toString()方法在转为字符串,但当时没有想到,特此记录下来。Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。一般来说,常用的形式是 Arrays.sort(int[] a),这是对一个数组的所有元素进行排序,并且是按从小到大的顺序。 import jav...
2018-05-14 17:01:05
833
原创 排序算法性能和使用场景总结
先来看看稳定排序和不稳定排序。稳定排序有:冒泡,插入,归并。不稳定排序有:快排(快),希尔排序(些),选择排序(选),堆排序(一堆)。注:多数先进的算法都是因为跳跃式的比较,降低了比较次数,但牺牲了排序的稳定性。按平均时间将排序分为四类:(1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序;...
2018-05-14 16:30:53
885
原创 关于快排的优化
看到别人写的对快排的改进,深感代码简洁高效,学习一下。对快排的进一步说明:采用挖坑填数+分治法。以下是代码:public static void quickSort(int a[], int start, int end){ if(start<end){ //先进行判断,如果start不小于end,则说明不需要进行排序了 int i=start...
2018-05-14 13:33:07
499
原创 MySQL存储过程优缺点
优点1.在生产环境下,可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利被许多人滥用了。有人直接就在正式服务器上修改存储过程,而没有经过完整的测试,后果非常严重。2.执行速度快,存储过程经过编译之后会比单独一条一条执行要快。但这个效率真是没太大影响。如果是要做大数据量的导入、同步,我们可以用其它手段。3.减少网络传输,尤其是在高并发情况下。存储过程直接就在数据库...
2018-05-14 11:10:11
5290
转载 数据库表的连接(Left join , Right Join, Inner Join)用法详解
Left Join, Inner Join 的相关内容!left join 是left outer join的简写,left join默认是outer属性的。 Inner Join Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。这个和用select查询多表是一样的效果,所以很少用到; outer join则会返回每个满足第一个(顶端)输入与第二个(底端...
2018-05-14 10:45:19
732
原创 MySQL数据库学习
最近两天看了不少有关MySQL数据库的知识,借着这个机会整理一下,也正式开始写我的CSDN博客。 首先MySQL是一个中小型的关系型数据库,使用标准的SQL语言形式,并且开放源码。 然后来讲讲MySQL的事务(Transaction),事务是指这样一组逻辑操作指令,这组指令的所有操作单元要么全部执行成功,要么全部失败。需要注意的是,MySQL在使用InnoDB存储引擎的行级锁的...
2018-04-19 01:57:47
3608
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人