2 小李小李彬彬有礼

尚未进行身份认证

记录自己学习的一点一滴

等级
TA的排名 6w+

JavaWeb开发基础环境搭建

下载JDK,安装,安装完成后将JDK得bin目录添加到环境变量中的path中 打开cmd通过“java-version”查看JDK是否安装成功。 下载tomcat,下载成功后双击其bin目录下的startup.bat进行启动,如果双击后命令行界面一闪而过则表明其在启动时找不到Java_Path,我们需要去环境变量里新增一个名称为JAVA_PATH(不区分大小写)的环境变量,值为JDK的目...

2019-09-03 09:58:52

Win10环境下Ctrl+C无法复制,Ctrl+V无法粘贴等问题解决方法

先确认一下是否关闭了键盘的FnLock(我是Thinkpad)如果没关关了试试。如果关了就按以下操作执行试试,如果不行试试用Fn代替Ctrl到C盘的Windows目录下的System32文件夹中查找是否存在名称为clip的文件夹,如果没有,在此目录下新建一个名为clip的空文件夹即可。...

2019-09-02 18:22:37

Java类的加载过程、加载时机、加载器、加载机制

加载过程一个Java文件从编码完成到最终执行可以分为两个阶段,分别为编译、运行。编译就是把我们写好的java文件通过javac编译成.class文件。运行就是把.class文件交给JVM执行。类加载的过程其实就是把JVM把.class中的信息加载到内存中,并解析生成对应的class对象的过程。类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提...

2019-08-21 18:20:33

HashMap学习——数据结构、存储格式、源码理解

数据结构+存储格式JDK8之前HashMap是利用数组+链表的形式以Entry<K,V>对象存储数据。Entry<K,V>中包含key,value,hash,next信息如下:staticclassEntry<K,V>implementsMap.Entry<K,V>{finalKkey;Vvalu...

2019-07-16 18:32:33

transient关键字

transient字面意思是短暂的,转瞬即逝的,作为Java中的关键字,他的作用就是让其修饰的属性不被序列化。序列化就是将对象转化为字节序列,序列化后的对象可以存入数据库、磁盘文件,也可用于网络传输(在Java中实现序列化的方法就是实现Serializable接口)。例如我们平时用的缓存,当我们需要持久化缓存的时候,都需要将存储的对象实现Serializable接口,目的就是为了让其可以序列化...

2019-07-15 11:49:07

JVM内存分区、垃圾回收算法、垃圾回收器的整理记忆

JVM的内存主要分两大区域:线程独享区和线程共享区。线程独享区还可以细化三块,那就是程序计数器、虚拟机栈和本地方法栈。程序计数器其实就是存放我们当前线程所执行到的字节码的位置的一个标识,这各区域我们开发人员不会操作到,所以这个区域也没有内存溢出之类的情况。虚拟机栈就是为虚拟机中的java方法服务的,存放栈帧信息。栈帧信息中包含局部变量表和返回值地址等信息。每个方法在执行的时候都会创建栈帧,在方法执...

2019-07-12 11:40:47

排序算法(三)——选择排序原理及Java实现

选择排序原理:从第一个元素(当前元素)开始,依次与其后面的元素比较,找到最小的元素,与当前元素位置互换;直至当前元素为最小元素的时候,排序完成选择排序原理动态图(摘自网络)Demo代码//选择排序(正序)int[]arr={3,13,11,9,8,1,6,10};for(inti=0;i&l...

2019-07-11 12:09:31

排序算法(二)——插入排序原理及Java实现

插入排序原理:我觉得类似于斗地主时给纸牌排序(正序举例)从第二个元素开始依次与前面的元素比较。若此元素(比较元素)比前一位(被比较元素)的元素大,则停止比较,用此元素的后一位作为比较元素进入下一次循环。若此元素(比较元素)比前一位(被比较元素)的元素小,则继续与前面第二位(被比较元素)比较,依次比较下去。直至此元素比被比较的元素大时停止继续比较,并将此元素插入到此时的被比较元素后面...

2019-07-11 10:36:15

排序算法(一)——冒泡排序原理及Java实现

冒泡排序原理:我觉得类似于拍集体照的时候老师指挥按大小个排队依次比较两个相邻的数组元素、满足交换条件就交换二者位置,不满足就继续向下比较。冒泡排序原理动态图(摘自网络)Demo代码//冒泡排序(正序)int[]arr={3,13,11,9,8,1,6,10};for(inti=0;i<arr.length;i++){...

2019-07-10 17:50:05

volatile关键字以及原理

volatile是在并发编程中保证共享数据一致性的常用关键字,同时也能保证多线程中共享数据的可见性、指令的有序性。我们知道,每个线程在执行时,都有自己独立的工作内存,用于存放线程执行时涉及到的一些变量,这些变量其实都是主存中相关变量的副本,在线程执行完毕后更新变量的值到主内存中。如果多个线程之间变量需要共享那么只能通过主内存来实现。例如A、B两个线程在执行的时候都涉及到了X变量,那么A...

2019-06-27 15:40:07

Java线程安全/并发编程三大特性

1、原子性保证一个操作或多个操作要么全部执行且在执行过程中没有任何打断、要么全部不执行(有点类似于事务的概念)例如A向B汇款1000元,那么就需要有两个操作,一个是A账户减1000元,另一个是B账户增加1000元,如果这个过程中任何一个操作出现故障,都是不符合规矩的也是不能保障汇款人和收款人的财产安全。换句话说,如果想要保证每次转账都不会造成双方任何一方的财产损失,我们必须要保证操作的原子...

2019-06-25 12:06:52

Springboot使用Ehcache做持久化缓存

最近在做的功能模块需要长久存储一项(仅一项)且即使服务重启后也可以查询到的数据,每天更新一次。一开始不知道ehcache能做持久化缓存⊙﹏⊙‖,心想缓存不能用,那只能数据表了,但是因为一项数据建一张数据表好像有些没必要,瞬间没了思路。后来向同事请教,同事说可以尝试用ehcache持久化缓存。于是,我又get新技能了哈~~记录一下吧。1、导入jar包<dependency>...

2019-06-24 18:08:25

Java无需解压直接读取ZIP压缩包里的文件及内容

最近在做的功能模块有遇到下载ZIP文件里的文件内容,一开始的想法是先通过代码执行解压,然后读取文件内容,但是感觉好麻烦,于是度了一下,发现可以无需解压直接读取,而且还是JDK提供给我们的工具。(((o(*゚▽゚*)o)))解决方案就是通过ZipInputStream来读取。ZipInputStream在JDK中的util包中,而我们平时用的FileInputStream等都是在io包中的。...

2019-06-21 11:52:34

HashSet判断重复原理

这个知识点完全属于今天的意外收获\(≧▽≦)/首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元素。注:图片是借鉴他人博客,我再上面添加了一些额外标记首先我们看HashSet的源码中add方法...

2019-06-13 17:55:51

hashCode、为什么要同时重写Object的hashCode()和equals()方法

本想研究一下HashMap的实现原理,但是开篇先讲了散列函数hashCode(),于是呢........内容就转变了。hashCode是对象的哈希值,主要的作用是用来快速查找对象在哈希表中的位置,而不是内存地址。hashCode()是Java顶级对象Object中的九大方法之一,也就是说每个java对象都有自己的hashCode。通过源码可以看出hashCode()是native方法,也就...

2019-06-13 16:17:43

利用阿里EasyExcel实现excel的生成并下载

Java解析、生成Excel比较有名的框架有Apachepoi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POIsax依然需要10...

2019-06-10 16:51:23

Bootstrap Table后台分页(Java)

由于维护的功能模块数据量较大,所以尝试把前台分页改为后台分页,提升用户体验。首先,在table加载的时候就需要指定我们必需的参数,例如:从哪一条数据开始,一次查询多少条数据,还可以附加一些定制化的参数。让表格的查询带着参数访问后台,示例如下://初始化Table$table.bootstrapTable({url:contextPath+"后台URL"...

2019-06-10 10:57:17

Mybatis自定义SQL语句设置数据以Map形式返回

最近工作中遇到需要自己通过mybatis写自定义的SQL,为了得到数据能够直接使用,需要让SQL以Map数据格式返回结果集,之前写过的自定义SQL都是直接返回查询到的数据,并没有规定Map类型,所以这次也算是个新体验^_^记录一下吧1、在Mapper中定义接口/***拓展SQL:查询全部单位信息Map*/@MapKey("id")//用于指定i...

2019-05-31 16:03:10

MySQL索引的学习与使用

最近在做的模块数据量较大,且业务需求全部是查询,所以尝试通过添加索引来提升查询速度。既然学了就记下吧。索引可以在很大程度上提升数据的检索速度。索引实际上也是一张表,这个表里会保存索引字段,并指向实体记录。MySQL只对以下操作符才使用索引:<,<=,=,>,>=,between,in,以及某些时候的like(不以通配符%或_开头的情形)。而理论上每张表里面最多可创建16...

2019-05-29 12:07:35

MySQL中的any_value()函数

MySQL5.7之后,sql_mode中ONLY_FULL_GROUP_BY模式默认设置为打开状态。ONLY_FULL_GROUP_BY的语义就是确定selecttargetlist中的所有列的值都是明确语义,简单的说来,在此模式下,targetlist中的值要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于groupbylist中的表达式的值。网上有很多...

2019-05-28 16:21:10

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。