- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 @NotEmpty、@NotBlank、@NotNull三种注解的区别
@NotEmpty 用在集合类上面加了@NotEmpty的String类、Collection、Map、数组,是不能为null或者长度为0的(String Collection Map的isEmpty()方法)@NotNull:不能为null,但可以为empty,没有Size的约束@NotBlank只用于String,不能为null,而且调用trim()后,长度必须大于0...
2020-03-26 14:11:18
210
原创 Mybatis与Hibernate的比较
量级:mybatis更轻量,上手简单, 插件丰富;而Hibernate比较重,精通较难 自定义SQL:mybatis可以自己定义灵活的SQL;Hibernate也可以自定义sql,不过一般不推荐,而只是使用自带的sql语句支持 缓存:mybatis缓存机制较差;Hibernate缓存集制较好可以避免脏读 效率:mybatis需要自己编写sql,效率较慢,不过目前一些插件可以自动生成一些预设的...
2020-02-05 23:40:05
185
原创 选择排序
public static void selectionSort(int[] a, int n){ if (n <= 1) { return; } for ( int i = 0; i < n - 1; i++ ) { int index = i; for ( in...
2019-12-11 14:22:05
125
原创 插入排序
代码如下public static void insertionSort(int[] a,int n){ if (n <= 1) { return; } for ( int i = 1; i < n; i++ ) { int value = a[i]; int ...
2019-12-11 11:36:03
135
原创 冒泡排序
代码如下:public static void bubbleSort(int[] a, int n){ if (n < 1) { return; } for ( int i = 0; i < n; i++ ) { boolean flag = false; for ( int j = 0; j ...
2019-12-11 11:12:12
90
原创 spring-boot子模块打包的jar中去掉BOOT-INF文件夹
一般springboot maven项目在pom文件里都会加上下面的配置这样的话mvn install 打成的jar包里就会变成这样而我们需要的各种类却在BOOT-INF下面,这就会导致其他项目在引入这个依赖时找不到对应的类。解决办法: 如果A子模块包依赖了B子模块包,在B子模块的pom文件,加上如下配置这样打出jar包目录如下...
2019-11-01 11:44:15
717
原创 线程安全的单例模式
双重检查加锁public class Singleton { private volatile static Singleton uniqueSingleton; private Singleton(){ } public Singleton getSingleton(){ if(uniqueSingleton == null){ synchronized (...
2019-09-04 09:41:27
93
原创 为什么要用redis而不用map/guava cache做缓存?
缓存分为本地缓存和分布式缓存。以java为例,使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用redis或memcached之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持redis或...
2019-08-01 13:57:19
2355
原创 SQL执行很慢的原因分析
sql执行很慢的时候可以大致分为两种情况:一、大部分情况下正常,偶尔慢 1.数据库刷新脏页redolog写满:更新数据或者插入数据时,会先在内存中将相应的数据更新,并不会立刻持久化到磁盘中去,而是把更新记录存到redolog日志中去,待到空闲时,再通过redolog把最新数据同步到磁盘中去。所以当redolog写满的时候,就不会等到空闲时,而是暂停手中的活,去把数据同步到磁盘中,所...
2019-04-30 17:25:33
2916
原创 java 自动装箱拆箱
除了对变量的初始化和赋值情形,还有一些容易被忽视的地方用到了自动拆箱和装箱1.包装类型和基本类型的大小比较 Integer i = 4;Sysotem.out.println(i<20);//true2.包装类型的==、+、-、*、/的计算Integer num1 = 10;Ingeger num2 = 20;Long num3 = 30;Syste...
2019-03-14 15:32:21
105
原创 java无参构造器的意义
无参构造器的意义Java 程序在执行子类的构造方法之前,如果没有显示的来调用父类的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来显示的调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。...
2019-03-13 15:20:45
1026
原创 重载和重写的区别
重载(overload):在同一类中,方法名相同,方法参数的类型、个数和顺序不相同,返回值类型不必相同,权限修饰符不必相同。重写(override):发生在父子类中,子类对从父类继承的方法的实现过程进行重新编写, 返回值和方法签名都不能改变。具体实现过程可以不同。满足子类的特殊需求。java 类重写时的注意要点:子类方法名、参数列表必须和父类对应的方法相同,返回值类型小于等于父类,抛出...
2019-03-13 11:41:11
106
原创 wangEditor图片批量上传
最近公司网站改版,个人负责后台管理系统的开发,其实内容比较简单,前台展示页面大部分为静态页面,后台管理系统负责文章内容的编写和文章分类管理和标签的分类。在进行内容编辑的时候采用了wangEditor富文本编辑,在使用过程中图片多张上传时遇到了一个坑: editor.customConfig.customUploadImg = function (files, ins...
2018-05-31 16:27:57
4116
1
原创 线性表与数组的对比
1、线性表的长度可以改变,但数组的长度是固定的;2、线性表可以插入元素,数组不能插入元素;3、线性表可以删除元素,数组无法删除元素,数组只能将指定元素赋为null,但各种元素依然存在;4、线性表提供方法来搜索指定元素的位置,数组一般无该方法;5、线性表提供方法来清空所有元素,但数组一般无该方法;...
2018-02-23 17:40:55
2962
原创 基于数组的顺序线性表的实现
import java.util.Arrays;public class ArrayList { private int DEFAULT_SIZE = 16; //保存数组长度 private int capacity; //保存顺序线性表的元素 private Object[] elementData; //保存线性表当前元素的个数 private int size = 0;
2017-12-26 14:53:39
206
原创 Java实现时间和时间戳相互转换
/* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException{ String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd H
2017-12-20 16:42:10
3194
原创 对象的四种引用
一、强引用 这是java程序中最常见的引用方式,程序创建一个对象,并把这个对象赋给一个引用变量,这个引用变量就是强引用。 Java程序可通过强引用来访问来访问实际的对象。强引用是Java编程中广泛使用的引用类型,被强引用所引用的Java对象绝不会被垃圾回收机制回收,即使系统内存非常紧张;即使有些Java对象以后永远都不会被用到,JVM也不会回收被强引用所引用的Java对象
2017-12-20 16:38:53
533
原创 类变量初始化时机
publicclass Price { finalstatic Price INSTACE = new Price(2.8); staticdouble initPrice = 20; doublecurrentPrice; publicPrice(doubled
2017-10-31 11:01:14
697
原创 maven项目update project后tomcat启动报错
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListenerjava.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListenerat
2017-10-20 09:41:23
536
原创 web.xml中的load-on-startup标签及含义
spring org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml 1 true spring / 一段spring-mvc的配
2017-10-11 09:25:08
560
原创 Maven 中的scope的值
maven依赖关系中Scope的作用 Dependency Scope 在POM 4中,中还引入了,它主要管理依赖的部署。目前可以使用5个值: * compile,缺省值,适用于所有阶段,会随着项目一起发布。 * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 * runtime,只在运行
2017-10-09 14:08:04
330
原创 面向对象的六大基本原则
OOP的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution P
2017-08-02 09:59:33
266
原创 Cron参数解析
Cron参数:1、Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:Seconds Minutes Hours DayofMonth Month DayofWeek Year或Seconds Minutes Hours DayofMonth Month DayofWeek2、每一个域可出现的字符如下:Se
2017-07-31 16:13:45
1063
原创 Linux文件属性
Linux系统是一种典型的多用户系统,不同的用户拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。我们可以用ll命令来显示文件的属性及文件所属的用户和组;如下图:在Linux中第一个字符代表这个文件的类型 当为[ d ]则是目录当为[ - ]则是文件;若是[ l ]则表示为链接文档
2017-07-27 11:54:18
268
原创 进程与线程
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功
2017-07-24 23:16:02
177
原创 MongoDB GridFS
GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。同时GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中
2017-06-27 15:21:18
361
原创 Spring中映射Mongodb中注解的解释
spring-data-mongodb中的实体映射是通过MongoMappingConverter这个类实现的。它可以通过注释把java类转换为mongodb的文档。它有以下几种注释:@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。@Document - 把一个j
2017-06-26 10:32:40
1697
原创 Java项目中对MongoDB数据库进行文件上传
在mongo-java-driver3.x以上的版本中逐渐弃用了Mongo和getDB等一系列方法,所以原来的GridFS的用法也发生了一些改变改进前:import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import org.slf4j.Logger;
2017-06-22 16:58:04
4371
1
原创 IOS/Iphone 中的Safari不兼容JavaScript的中的Date()
工作中遇到需要在js中将后台传递来的时间字符串格式化成yyyyMMddHHmmss的形式,最开始使用的是DateFormat.js,Format.js,SimpleDateFormat.js三个插件,js代码如下:var sdf = new SimpleDateFormat();sdf.applyPattern("yyyyMMddHHmmss"); var formatTime=new
2017-06-06 14:35:19
1163
原创 Java生成二维码
1.jquery.qrcode实现方式 (1)首先引用js文件:jquery.min.js和jquery.qrcode.min.js (2)设置一个div (3)加入一段js脚本$('#qrcode').qrcode("生成二维码的内容");2.zxing实现方式//设置二维码参数int width = 300;int height =
2017-06-02 14:18:15
345
原创 PDFObject.js的使用
首先导入PDFObject.js文件,然后在加入下面的代码段window.onload = function (){ var myPDF = new PDFObject({ url:"这里是pdf的文件地址" }).embed(); };PDFObject.js可跨域访问文件。
2017-05-27 16:09:19
4947
1
原创 PDF.js插件的使用--在线浏览PDF文件
pdf.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,,一个负责API解析,一个负责核心解析。
2017-05-27 15:33:03
9559
原创 JRE和JDK的区别
做Java开发必须首先要做的就是Java环境的搭建,而Java环境又分为开发环境和运行环境。开发环境需要安装jdk,安装过jdk就不需要再安装jre了JDK(Java Development Kit)指的是Java开发工具集。JDK是整个Java的核心,包括了Java基础类库、Java运行环境(JRE)和Java开发工具。是做Java开发必须要安装的。JRE(Java
2017-05-02 14:55:00
382
原创 编译型语言与解释型语言
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:1)编译2)解释由此高级语言也分为编译型语言和解释型语言。(一)编译型语言:使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该
2017-04-27 15:29:45
233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人