![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 62
jamesluozhiwei
个人博客:https://ccccyc.cn
展开
-
springboot 配置LocalDateTime JSON返回时间戳
方案一创建配置类注意:使用这种方式,所有Controller的JSON数据返回,只要是LocalDateTime类型都会被转成时间戳import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databin...原创 2019-12-18 17:36:33 · 6348 阅读 · 3 评论 -
mybaits-plus+druid 使用 LocalDateTime 出现nested exception is java.sql.SQLFeatureNotSupportedException
mybaits-plus+druid 使用 LocalDateTime 出现nested exception is java.sql.SQLFeatureNotSupportedException解决方案一(推荐)目前druid已经修复了这个问题并提交了新版本,最优直接选择升级druid 至 1.1.21 或以上releases 版本地址 https://github.com/alibab...原创 2019-12-18 16:43:20 · 1105 阅读 · 0 评论 -
redis key \xac\xed\x00\x05t\x004 乱码
解决使用RedisTemplate时 key出现乱码问题问题:127.0.0.1:6379> keys *1) "\xac\xed\x00\x05t\x00\x04user:xxxx"2) "\xac\xed\x00\x05t\x00\x04user:list:xxxx"所有的key前面都出现了乱码问题解决方案使用StringRedisTemplate直接使用StringR...原创 2019-12-02 19:14:27 · 822 阅读 · 0 评论 -
seata 指定公网ip出现 java.net.BindException: Cannot assign requested address
指定公网ipseata默认使用的内网ip注册到注册中心,如果需要使用公网 添加启动参数 -h 公网ip ,记得开启公网端口的安全组策略。启动出错 Cannot assign requested address使用seata-0.8.0的版本出现的这个问题,换成0.9.0之后解决,最新版本请访问官方社区或github查看报错如下Exception in thread "main" java...原创 2019-11-19 09:34:52 · 2075 阅读 · 1 评论 -
EasyPoi 使用html模板导出Excel
文章目录EasyPoi 使用html模板导出Excel依赖编写freemarker(.ftl)页面模版将数据渲染到模板中生成html并转换成ExcelEasyPoi 使用html模板导出Excel总体思路如下1、编写freemarker(.ftl)页面模版2、将数据渲染到模板中生成html3、将html转换成Excel表格依赖使用springboot集成的包 <!--eas...原创 2019-11-16 14:48:17 · 2145 阅读 · 3 评论 -
docker容器访问宿主机服务
在使用Docker部署应用时,Docker推荐的方式是将应用及其所依赖的服务(MySQL,Redis等)均使用Docker部署,并通过link或自定义网络相连接。但是,当应用所依赖的服务被安装在宿主机上时,我们需要让容器中的应用能够访问到部署在宿主机上的服务。本文将介绍实现这一目的的几种方案,并分析其优缺点。首先我们需要了解一些关于Docker网络的基础知识。Docker网络Docker提供...转载 2019-10-14 20:26:58 · 11593 阅读 · 1 评论 -
BIO、NIO、AIO的区别
BIO、NIO、AIO的区别IO通常分为几种,BIO(阻塞 Blocking IO)、NIO(非阻塞 Non-Blocking IO)、AIO(异步非阻塞)。BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要建立一堆线程等待请求,而客户端发送请求后,先询问服务...原创 2019-07-04 18:36:10 · 154 阅读 · 0 评论 -
Druid三种配置方式(ssm,springboot,纯yml)
文章目录Druid的简介Druid的功能Druid实践添加依赖SSM整合Druidapplication-mybatis.xml中druid的配置web.xml配置springboot 整合Druid添加config类配置application.yml配置存yml方式配置地址:localhost:端口号/项目名/druid/Druid的简介Druid是阿里巴巴开源平台上一个数据库连接池实现(网...原创 2019-07-10 17:48:30 · 6586 阅读 · 1 评论 -
七大排序之:冒泡排序和快速排序
排序是我们生活中经常会面对的问题。同学们做操时会按照从矮到高排列;老师查看上课出勤情况时,会按学生学号顺序点名;高考录取时,会按成绩总分降序依次录取等。排序是数据处理中经常使用的一种重要的运算,它在我们的程序开发中承担着非常重要的角色。排序分为以下四类共七种排序方法:交换排序:① 冒泡排序② 快速排序选择排序:③ 直接选择排序④ 堆排序插入排序:⑤ 直接插入排序⑥ 希尔排序合...原创 2019-07-05 19:42:53 · 237 阅读 · 0 评论 -
springboot+security+jwt+redis 实现微信小程序登录及token权限鉴定
tips:这是实战篇,默认各位看官具备相应的基础(文中使用了Lombok插件,如果使用源码请先安装插件)文章目录项目配置依赖application.yml程序代码security相关security核心配置类鉴权各种情况处理类无权访问用户未登录时返回给前端的数据用户登录失败时返回给前端的数据(本程序未使用)用户登录成功时返回给前端的数据登出成功JWT自定义过滤器SelfUserDetailsSe...原创 2019-07-11 16:36:36 · 15228 阅读 · 2 评论 -
springSecurity基于表达式鉴权
文章目录前言常见的表达式URL安全表达式在Web 安全表达式中引用Bean自定义鉴权Method安全表达式使用method注解开启方法级别的注解配置在方法上使用注解PreAuthorizePostAuthorizePreAuthorize针对参数进行过滤源码前言在上一篇文章已经介绍了springSecurity的使用了,本篇文章主要介绍一下使用spring EL表达式来控制授权,允许在表达式中...原创 2019-07-11 19:59:31 · 1631 阅读 · 13 评论 -
XStream实现XML与Java对象互转
文章目录概要XStream简介示例概要XStream简介示例概要XStream简介XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;从java对象序列化为xml,toXML()即可,很方...原创 2019-07-18 17:22:49 · 528 阅读 · 0 评论 -
Tesseract OCR+Tess4j实现图片中英文识别
文章目录Tesseract简介环境搭建下载语言库tess4j依赖demoTesseract简介Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生。在2005年,...原创 2019-07-22 10:11:12 · 6448 阅读 · 0 评论 -
基于seetaface2实现Java人脸对比、人脸搜索
文章目录seetafaceJNI项目介绍环境配置使用方法项目地址seetafaceJNI项目介绍基于中科院seetaface2进行封装的JAVA人脸识别算法库,支持人脸识别、1:1比对、1:N比对。seetaface2:https://github.com/seetaface/SeetaFaceEngine2环境配置1、下载model( https://pan.baidu.com/s...原创 2019-07-22 12:28:25 · 10737 阅读 · 29 评论 -
lambda表达式分组,过滤,求和,最值,排序,去重
文章目录简介实例先准备个实体类分组过滤求和最值List转Map排序去重获取list对象某个字段组装新的list批量设置list列表字段为同一个值简介Java 8 新特性java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。实例先准备个实体类import java.math.BigDecima...原创 2019-08-07 19:59:01 · 4652 阅读 · 1 评论 -
springcloud+seata+mybatis出现org.apache.ibatis.binding.BindingException: Invalid bound statement not
文章目录问题连接池配置程序入口配置完整配置问题org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): XXX.XXX.XXX.XXXXXXXXXXXXX在使用springcloud+seata+mybatis集成的时候出现了BindingException,起初以为是因为maven多模块...原创 2019-09-15 18:02:28 · 862 阅读 · 0 评论 -
七大排序之:直接选择排序和堆排序
上一篇总结了交换排序的冒泡排序和快速排序。这一篇要总结的是选择排序,选择排序分为直接选择排序和堆排序,主要从以下几点进行总结。1、直接选择排序及算法实现2、堆排序及算法实现1、直接选择排序及算法实现直接选择排序(Straight Select Sort) 是一种简单的排序方法,它的基本思想是:通过length-1 趟元素之间的比较,从length-i+1个元素中选出最小的元素,并和第i个元...原创 2019-07-09 19:30:42 · 108 阅读 · 0 评论 -
Java中ArrayList与LinkedList的区别
一般大家都知道ArrayList和LinkedList的区别: 1、ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。 2、对于随机访问,ArrayList优于LinkedList 3、对于插入和删除操作,LinkedList优于ArrayList 4、LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据...原创 2019-06-28 17:27:37 · 203 阅读 · 0 评论 -
Java中String、StringBuffer、StringBuilder的区别
1.从是否可变的角度String类中使用字符数组保存字符串,因为有“final”修饰符,所以String对象是不可变的。/** The value is used for character storage. */ private final char value[];StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在Abs...原创 2019-06-28 17:26:57 · 82 阅读 · 0 评论 -
在servlet中响应Ajax异步请求
servlet就不介绍了,直接看源码//在servlet中通过HttpServletResponse对象获取输出流,并输出即可响应Ajax异步请求//向客户端输出string为响应的内容,在servlet中要返回JSON数据的话就要转JSON字符串之后再输出response.getWriter().write(string);举个栗子 /** * @see HttpServle...原创 2018-12-21 11:51:13 · 701 阅读 · 0 评论 -
Java获取常用的日期数据
在后台很多时候都需要用的计算时间,整合了一个常用的计算日期工具类计算日期可直接调静态方法,具体可自己尝试一下//省略package,自己记得加上import java.util.Calendar;import java.text.DateFormat;import java.text.ParseException;import java.text.ParsePosition; im...原创 2018-12-22 16:05:33 · 368 阅读 · 0 评论 -
mybatis嵌套查询的使用
当我们遇到表与表之之间存在关联的时候,就可以使用mybatis的嵌套查询比如说当一个对象包含了另一个对象/** * 公交实体类中包含了司机信息和路线信息 */public class Bus implements Serializable { private Integer id; private String card; private Integer d...原创 2018-12-17 23:09:16 · 10356 阅读 · 3 评论 -
java.lang.IllegalArgumentException: Result Maps collection already contains value for XXXX.ResultMap
Mybatis配置出错 Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.XXX.BaseResultMap在启动项目时提示已存在结果集异常该错误是因为一个xml文件命名空间下中同时存在两个一样名称的结果集修改方法打开xml文件修改结果集名称主要...原创 2019-03-02 17:36:31 · 1040 阅读 · 0 评论 -
restful API文档生成工具swagger2的使用
Swagger介绍 swagger是一个规范和完整的框架,用于生成、描述、调用的RESTful风格API文档。总体来说,是让前后端的API文档始终保存同步。 我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Android开发或是Web开发等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然...原创 2019-04-03 12:55:59 · 1071 阅读 · 1 评论 -
Java Thread多线程volatile问题
问题当多个线程并发同时进行set、get时,其它线程能否感知到flag的变化public class ThreadSafeCache { boolean flag = true;//默认设置true public boolean isFlag() { return flag; } public synchronized ThreadSafe...原创 2019-06-18 20:11:39 · 276 阅读 · 0 评论 -
Java基础面试题系列
本文收集了一些经典的Java面试题1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中...原创 2019-06-20 18:33:10 · 9011 阅读 · 0 评论 -
springMVC 统一异常处理 返回JSON数据
需求在后台开发中,难免会存在一些异常,如果我们在controller中一个一个的去try catch处理,会很繁琐,并且不好维护;如果在web.xml配置错误页面,会导致返回一个试图给前台,对于前后端分离的不太友好,前台无法解析,这明显不是我们想要的,我们需要的是返回串JSON的错误码给前台;@ControllerAdvice从spring3.2开始,增加了新注解@ControllerAdv...原创 2019-06-11 12:00:20 · 1616 阅读 · 0 评论 -
了解JVM的内存区域
了解JVM的内存区域先来看看JVM运行时候的内存区域,如下图:大多数 JVM 将内存区域划分为 Heap(堆)、方法区、Stack(栈)、本地方法栈、程序计数器。其中 Heap 和 方法区 是线程共享的,Stack、本地方法栈 和 程序计数器 是非线程共享的。为什么分为线程共享和非线程共享的呢?请继续往下看。首先我们熟悉一下一个 Java 程序的工作过程。一个 Java 源程序文件,会被编...原创 2019-06-21 13:42:50 · 153 阅读 · 0 评论 -
JAVA有哪些数据类型?基本数据类型各占多少个字节
JAVA有哪些数据类型?基本数据类型各占多少个字节个人博客:https://www.cqwxhn.xinjava的数据类型分为:基本数据类型和引用数据类型。基本数据类型各占多少个字节:关于boolean占几个字节,众说纷纭,虽然boolean表现出非0即1的“位”特性,但是存储空间的基本计量单位是字节,不是位。所以boolean至少占1个字节。 JVM规范中,boolea...原创 2019-06-25 18:21:08 · 458 阅读 · 0 评论 -
Java类的加载机制
1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并向程序员提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“首次主动使用”时再加载它,J...原创 2019-06-22 13:43:31 · 94 阅读 · 0 评论 -
Java的参数传递是按值传递还是按引用传递
Java的参数传递是按值传递还是按引用传递当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是按值传递还是按引用传递?答:是按值传递。 Java 语言的参数传递只有按值传递。 当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。J...原创 2019-07-01 17:30:54 · 193 阅读 · 0 评论 -
Semaphore的工作原理及实例
Semaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。Semaphore是一种计数信号量,用于管理一组资源,内部是基于AQS的共享模式。它相当于给线程规定一个量从而控制允许活动的线程数。1、工作原理  ...原创 2019-06-26 15:25:48 · 186 阅读 · 0 评论 -
JVM的垃圾回收机制
1、前言理解JVM的垃圾回收机制(简称GC)有什么好处呢?作为一名软件开发者,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java程序。在学习GC前,你应该知道一个技术名词:“stop-the-world” ,无论你选择哪种GC算法,“stop-the-world”都会发生。“stop-the-world”意味着JVM停止应用程序,而去进行垃圾回收。...原创 2019-06-24 19:20:34 · 143 阅读 · 0 评论 -
java中堆和栈的区别
java中堆和栈的区别堆和栈都是Java用来在RAM中存放数据的地方。堆(1)Java的堆是一个运行时数据区,类的对象从堆中分配空间。这些对象通过new等指令建立,通过垃圾回收器来销毁。(2)堆的优势是可以动态地分配内存空间,需要多少内存空间不必事先告诉编译器,因为它是在运行时动态分配的。但缺点是,由于需要在运行时动态分配内存,所以存取速度较慢。栈(1)栈中主要存放一些基本数据类型的变...原创 2019-07-03 20:56:33 · 132 阅读 · 0 评论 -
mybatis逆向工程的使用
什么是逆向工程我们知道,mybatis是需要自己手写sql语句的,针对这一显现,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、pojo等) j建好数据库sql表的结构后, 我们就可以利用逆向工程直接生成相应的Dao和JavaBean代码, 并且生成的sql语句非常好用,这样能够大大减少我们平时开发的工作量.如何...原创 2018-12-15 11:57:58 · 1301 阅读 · 4 评论