自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 188

原创 Mybatis与Hibernate的比较

量级:mybatis更轻量,上手简单, 插件丰富;而Hibernate比较重,精通较难 自定义SQL:mybatis可以自己定义灵活的SQL;Hibernate也可以自定义sql,不过一般不推荐,而只是使用自带的sql语句支持 缓存:mybatis缓存机制较差;Hibernate缓存集制较好可以避免脏读 效率:mybatis需要自己编写sql,效率较慢,不过目前一些插件可以自动生成一些预设的...

2020-02-05 23:40:05 166

原创 选择排序

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 119

原创 插入排序

代码如下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 126

原创 冒泡排序

代码如下:​​​​​​​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 84

原创 spring-boot子模块打包的jar中去掉BOOT-INF文件夹

一般springboot maven项目在pom文件里都会加上下面的配置这样的话mvn install 打成的jar包里就会变成这样而我们需要的各种类却在BOOT-INF下面,这就会导致其他项目在引入这个依赖时找不到对应的类。解决办法: 如果A子模块包依赖了B子模块包,在B子模块的pom文件,加上如下配置这样打出jar包目录如下...

2019-11-01 11:44:15 643

原创 线程安全的单例模式

双重检查加锁public class Singleton { private volatile static Singleton uniqueSingleton; private Singleton(){ } public Singleton getSingleton(){ if(uniqueSingleton == null){ synchronized (...

2019-09-04 09:41:27 79

原创 为什么要用redis而不用map/guava cache做缓存?

缓存分为本地缓存和分布式缓存。以java为例,使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用redis或memcached之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持redis或...

2019-08-01 13:57:19 2270

原创 SQL执行很慢的原因分析

sql执行很慢的时候可以大致分为两种情况:一、大部分情况下正常,偶尔慢 1.数据库刷新脏页redolog写满:更新数据或者插入数据时,会先在内存中将相应的数据更新,并不会立刻持久化到磁盘中去,而是把更新记录存到redolog日志中去,待到空闲时,再通过redolog把最新数据同步到磁盘中去。所以当redolog写满的时候,就不会等到空闲时,而是暂停手中的活,去把数据同步到磁盘中,所...

2019-04-30 17:25:33 2823

原创 java 自动装箱拆箱

除了对变量的初始化和赋值情形,还有一些容易被忽视的地方用到了自动拆箱和装箱1.包装类型和基本类型的大小比较 Integer i = 4;Sysotem.out.println(i&lt;20);//true2.包装类型的==、+、-、*、/的计算Integer num1 = 10;Ingeger num2 = 20;Long num3 = 30;Syste...

2019-03-14 15:32:21 95

原创 java无参构造器的意义

无参构造器的意义Java 程序在执行子类的构造方法之前,如果没有显示的来调用父类的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来显示的调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。...

2019-03-13 15:20:45 996

原创 重载和重写的区别

重载(overload):在同一类中,方法名相同,方法参数的类型、个数和顺序不相同,返回值类型不必相同,权限修饰符不必相同。重写(override):发生在父子类中,子类对从父类继承的方法的实现过程进行重新编写, 返回值和方法签名都不能改变。具体实现过程可以不同。满足子类的特殊需求。java 类重写时的注意要点:子类方法名、参数列表必须和父类对应的方法相同,返回值类型小于等于父类,抛出...

2019-03-13 11:41:11 99

原创 wangEditor图片批量上传

    最近公司网站改版,个人负责后台管理系统的开发,其实内容比较简单,前台展示页面大部分为静态页面,后台管理系统负责文章内容的编写和文章分类管理和标签的分类。在进行内容编辑的时候采用了wangEditor富文本编辑,在使用过程中图片多张上传时遇到了一个坑:        editor.customConfig.customUploadImg = function (files, ins...

2018-05-31 16:27:57 4050 1

原创 线性表与数组的对比

1、线性表的长度可以改变,但数组的长度是固定的;2、线性表可以插入元素,数组不能插入元素;3、线性表可以删除元素,数组无法删除元素,数组只能将指定元素赋为null,但各种元素依然存在;4、线性表提供方法来搜索指定元素的位置,数组一般无该方法;5、线性表提供方法来清空所有元素,但数组一般无该方法;...

2018-02-23 17:40:55 2868

原创 基于数组的顺序线性表的实现

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 197

原创 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 3172

原创 对象的四种引用

一、强引用     这是java程序中最常见的引用方式,程序创建一个对象,并把这个对象赋给一个引用变量,这个引用变量就是强引用。      Java程序可通过强引用来访问来访问实际的对象。强引用是Java编程中广泛使用的引用类型,被强引用所引用的Java对象绝不会被垃圾回收机制回收,即使系统内存非常紧张;即使有些Java对象以后永远都不会被用到,JVM也不会回收被强引用所引用的Java对象

2017-12-20 16:38:53 500

原创 MyBatis(mysql) 批量更新的坑

mybatis批量更新MySQL的坑

2017-11-24 16:39:13 1207

原创 类变量初始化时机

publicclass Price {     finalstatic Price INSTACE = new Price(2.8);     staticdouble initPrice = 20;     doublecurrentPrice;     publicPrice(doubled

2017-10-31 11:01:14 652

原创 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 527

原创 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 537

原创 Maven 中的scope的值

maven依赖关系中Scope的作用 Dependency Scope 在POM 4中,中还引入了,它主要管理依赖的部署。目前可以使用5个值:     * compile,缺省值,适用于所有阶段,会随着项目一起发布。     * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。     * runtime,只在运行

2017-10-09 14:08:04 305

原创 一方库,二方库,三方库

一方库:本项目中的各模块的相互依赖二方库:公司内部自己的依赖库,一般指公司其他项目发布的依赖三方库:其他的各种开源依赖库

2017-09-29 17:59:57 583

原创 面向对象的六大基本原则

OOP的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution P

2017-08-02 09:59:33 239

原创 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 1039

原创 Linux文件属性

Linux系统是一种典型的多用户系统,不同的用户拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。我们可以用ll命令来显示文件的属性及文件所属的用户和组;如下图:在Linux中第一个字符代表这个文件的类型        当为[ d ]则是目录当为[ - ]则是文件;若是[ l ]则表示为链接文档

2017-07-27 11:54:18 249

原创 进程与线程

进程概念  进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功

2017-07-24 23:16:02 160

转载 BSON与JSON的区别

BSON与JSON的区别

2017-06-27 15:57:15 245

原创 MongoDB GridFS

GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。同时GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中

2017-06-27 15:21:18 350

原创 Spring中映射Mongodb中注解的解释

spring-data-mongodb中的实体映射是通过MongoMappingConverter这个类实现的。它可以通过注释把java类转换为mongodb的文档。它有以下几种注释:@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。@Document - 把一个j

2017-06-26 10:32:40 1679

原创 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 4297 1

转载 MongoDB中游标的使用

MongoDB中游标的使用

2017-06-21 09:53:49 518

原创 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 1133

原创 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 330

原创 PDFObject.js的使用

首先导入PDFObject.js文件,然后在加入下面的代码段window.onload = function (){  var myPDF = new PDFObject({ url:"这里是pdf的文件地址" }).embed();  };PDFObject.js可跨域访问文件。

2017-05-27 16:09:19 4909 1

原创 使用PDF.js如何显示pdf文件的电子签章

使用PDF.js如何显示pdf文件的电子签章

2017-05-27 15:55:26 19020 10

原创 PDF.js插件的使用--在线浏览PDF文件

pdf.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,,一个负责API解析,一个负责核心解析。

2017-05-27 15:33:03 9518

原创 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 368

原创 编译型语言与解释型语言

计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:1)编译2)解释由此高级语言也分为编译型语言和解释型语言。(一)编译型语言:使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该

2017-04-27 15:29:45 224

java真题库

Java面试题

2017-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除