Java基础
文章平均质量分 65
Java基础
guobinhui
一个IT青年的编程笔记
展开
-
Springboot读取properties配置文件的List、Map格式的配置项(属性)
最近收到有小伙伴咨询Springboot项目怎样读取application.properties文件的List、Map等复杂对象格式属性,笔者针对这个问题,写了个demo来演示,希望对需要的小伙伴有帮助。首先,不管是什么框架的java项目,读取properties文件属性,实际就相当于把properties文件当做Map对象读取其中属性而已,明白了这个道理后,那么在此通过下面demo来作为演示实现过程。一、properties文件里构造数据这里构造1个员工对象格式的结构化数据,员工对象里有id(原创 2020-07-17 15:34:29 · 19309 阅读 · 0 评论 -
SpringBoot集成ElasticSearch以及通过ElasticSearch的Java API实现增删改查
一、简介ElasticSearch,简称ES, 是一个基于Lucene的分布式可扩展的实时搜索和分析引擎,是基于分词和分段的全文搜索引擎,具有分词,同义词,词干查询的功能,ES天生具有分布式和实时的属性。当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。Elast...原创 2019-12-16 15:16:08 · 1869 阅读 · 0 评论 -
springcloud微服务之间通过feign调用方式上传文件MultipartFile
通过我们使用spring系列的框架上传文件,都会利用MultipartFile文件流进行文件的上传。但是我在最近的项目中遇到一个问题,我们的项目是基于springboot框架的springcloud微服务搭建的,后端服务技术层面整体上分为business服务和core服务,business服务用于作为应用层,直接连接用户端,通常用于聚合数据,core服务用于基本很少变动的非业务核心接口。那么用户的...原创 2019-11-01 16:07:09 · 10289 阅读 · 9 评论 -
基于不同方式实现任意复杂结构的Bean对象和Map的转换工具类
平时我们常会遇到Bean对象和Map的转换,对于字段比较少并且结构简单的Bean对象和Map的转换,常规做法就是逐个去set属性和值,或者逐个put属性和值,但是如果对于字段比较多或者嵌套结构复杂的Bean对象和Map转换,常规做法就远远力不从心了,那么我们就需要封装一个公共的高效的泛型工具类去进行转换。笔者结合平时的编码经验积累,经过整理,本案例给大家分享5种方式实现Bean对象和Map的转换,...原创 2019-02-13 15:51:40 · 1789 阅读 · 0 评论 -
springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并以及背景色,字体颜色的填充,文本内容的对齐方式等)。实现思路:首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体...原创 2019-02-12 18:48:35 · 13021 阅读 · 2 评论 -
MyBatis一对多级联查询 关联查询 映射查询 xml映射文件配置详解
Mybatis框架一对多级联查询的场景很多,很多人往往对具体的Xml映射文件配置的细节不太注意,今天笔者就给大家做个详细的讲解。常用的一对多有2种配置方式。 表名字和实体名字对应,作为讲解,为了易懂,这里只设置了几个必要字段。实体结构如下图: 商品实体Product(对应product表) public class Product { private String p...原创 2019-02-11 14:41:14 · 1115 阅读 · 0 评论 -
springboot图片压缩后上传 MultipartFile转为File文件流 按照指定宽高压缩上传
在开发中,前端上传的文件流,在后台接口中通常是用MultipartFile类型的流格式接收,但是接收到的文件流往往不能满足我们的使用要求,我们需要转为File类型的文件流再去读取文件的宽高,大小等属性进行压缩上传等操作。本工具类为大家分享具体实现过程。接口规范:接收前端传的文件流,以及指定的目标压缩宽高,和压缩完需要上传到的指定目录。首先封装一个动态生成文件目录的文件路径工具类packa...原创 2019-02-16 11:49:38 · 5059 阅读 · 0 评论 -
springboot重写适配器addResourceHandler 虚拟路径映射文件磁盘路径 读取磁盘文件 预览文件
文件上传的功能很常见,但是很多人并不清楚文件上传后预览的具体原理,也就是把上传至服务器指定物理磁盘相关目录(绝对路径)的文件通过浏览器直接访问预览。这种具体实现其实是要配置一个映射关系的,即配置一个虚拟路径来映射文件的真实绝对路径(完美的隐藏了文件的真实物理路径,可以说不但很安全,而且外网可以直接访问)。配置虚拟路径映射物理路径常规二种方式方式一:在tomcat的tomcat-7.0.39...原创 2019-02-16 11:11:39 · 11730 阅读 · 5 评论 -
基于JDK实现图片上传压缩 按照指定宽高压缩图片 生成缩略图
在很多项目中我们会把上传的图片做压缩处理,图片上传尺寸过大会对服务器的容量和网络带宽有很大浪费,如果不是必须的高清图片,我们可以通过代码来做压缩处理。我们压缩图片的目的是让web页面或者移动端打开的速度很快,并且节省空间。下面通过2种方式分享压缩图片具体实现过程:方式一:按照指定的宽高压缩原图/** * 按照指定的宽高压缩原图 * @param img * @param w...原创 2019-02-14 18:07:59 · 535 阅读 · 0 评论 -
Java面试题问到的排序 Java排序算法 冒泡排序升序排序实现
冒泡排序的核心思想是每一轮排序,前后2个元素做比较,互换位置,比如,数组为K,第一轮排序,第一个和第二个比较,然后第二个和第三个比较,第三个和第四个比较,依次类推,K.length -2和倒数第一个元素(下标为K.length-1)比较。第二轮排序,从第2个元素开始(下标为1),依次第二个和第三个比较,第三个和第四个比较......,以下是具体的代码实现,重在理解这种思想package d...原创 2019-01-03 15:06:28 · 873 阅读 · 0 评论 -
SpringBoot集成mybatis整合redis实现缓存教程 springboot配置redis教程
缓存:即将常用的并且不会频繁变更的数据存入内存当中,从而减少服务器数据库压力,提升访问速率。使用redis作为缓存技术方案,主要是redis缓存技术的特点就在于高效,因为目前涉及的数据量逐渐增多,在对于数据的存储上面和sql以及服务器资源优化上面就来的特别的重要。而redis可以帮助解决由于数据库压力造成的延迟现象,针对于很少做改变的数据并且经常使用的数据,我们可以一致性加入内存。这样可以...原创 2018-12-25 16:37:25 · 1739 阅读 · 1 评论 -
公众号/小程序开发 签名参数拼接 MD5/SHA1加密参数获取JS-SDK接口权限
在公众号或者小程序开发中,无论是微信小程序,百度小程序还是支付宝小程序开发,涉及到的很多官方sdk接口调用,都需要有接口权限,而这些接口权限的获取都要对接口参数做特殊处理后再加密签名,才有接口权限,比如小程序API里面的多媒体接口(上传,下载等),支付接口,统一下单接口等。下面直接上代码 /** * MD5 加密,转为指定类型 * * @param t...原创 2018-12-17 12:21:03 · 2053 阅读 · 2 评论 -
Spring Cloud微服务连载(一):搭建服务注册中心以及注册服务提供者
10万+IT人都在关注的史上最全面的企业级微服务快速开发学习脚踩:5分钟快速搭建一个标准的Spring Cloud服务注册中心前言:springcloud项目是基于springboot框架,我们演示的都创建springboot工程一、创建一个普通的Spring Boot工程首先我们通过spring官网创建一个普通的Spring Boot工程,官网地址 https://start.spr...原创 2019-03-05 16:52:43 · 413 阅读 · 0 评论 -
SpringBoot @ControllerAdvice注解自定义全局异常处理类 统一处理异常
在Springboot或者Springcloud开发中为了统一处理业务异常,需要自定义全局异常处理类统一处理业务异常。在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping注解的方法中,本篇内容笔者讲解一下使用@ControllerA...原创 2019-03-02 14:57:32 · 2850 阅读 · 0 评论 -
Java设计模式之策略模式详解_Strategy模式案例
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改,这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示多个策略的对象和一个行为随着策略对象改变而改变的 context 对象。每个策略对象会改变 context 对象的执行算法。这个描述读起来有点绕口,接下来笔者还是通过具体应用案例和代码演示,读者通过阅读代码就可以体会到Java设计模式中策略...原创 2019-07-15 17:36:05 · 606 阅读 · 0 评论 -
Spring Boot获取配置文件application.yml的属性值
在 Spring Boot 项目中,配置文件格式有两种,一个是 properties ,另一个是 yml 。虽然 properties 文件比较常见,但是相对于 properties 而言,yml 文件的配置项更加简洁明了,可读性很强,不仅如此,yml 文件还有另外一个重要的特点,就是 yml 中的数据是有序的,properties文件中的数据是无序的。我们都知道SpringBoot工程默认的配置...原创 2019-07-11 10:33:11 · 6942 阅读 · 0 评论 -
SpringBoot集成MyBatis配置多数据源详细教程
一、工程创建申明一点本案例使用的springboot版本是1.5.6.RELEASE。首先需要创建springBoot项目,添加springBoot框架对MyBatis支持的相关依赖Jar:分别添加MyBatis、MySQL以及Web依赖以及Druid依赖,这里添加Druid依赖必须是Spring boot支持的Druid,不能使用传统的Druid。完整的依赖jar如下:<depe...原创 2019-07-04 17:35:13 · 1332 阅读 · 0 评论 -
Java设计模式之观察者模式详解_消息发布/订阅_广播机制_监听器模式
一、观察者模式定义 观察者模式是广播机制,是消息订阅和推送的核心设计。观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式,通俗来讲在对象之间定义了多对一的订阅,让多个观察者对象同时监听某一个主题对象,当主题对象改变状态时,主题对象的所有订阅者对象都会收到通知并自动更新。...原创 2019-07-08 17:09:18 · 858 阅读 · 0 评论 -
微信公众号开发 公众号接口开发 封装统一的GET/POST请求接口
10万+IT人都在关注,史上最全面的微信开发实战教程:包含公众号,小程序,微信支付等开发案例欢迎关注笔者个人博客:http://blogs.chenyunkeji.com/在微信公众号/小程序开发过程中,后端服务要用到微信公众平台提供的各种接口,比如创建个性化菜单的接口,网页授权接口,消息事件接口等,事件推送接口等,几乎大多数的微信接口都要用到GET/POST方式的http请求,那么就需要...原创 2019-05-09 11:12:32 · 2031 阅读 · 0 评论 -
图片上传文件流格式转换 File文件流转为MultipartFile流详解
10万+IT人都在关注的IT技术博客,实用的技术干货持续更新......通常从界面上传的文件,后台接口都用MultipartFile格式的文件流接收,如果要直接对物理磁盘目录里的文件进行操作,则只能实用File流进行操作,有时由于一些定制化的需求,需要对File流和MultipartFile流转换,笔者分享一个已经完美实现的转换工具类,如果觉得对您有帮助,敬请点赞并分享给更多需要的人,废话不多...原创 2019-03-15 16:19:53 · 15891 阅读 · 2 评论 -
Spring Cloud微服务连载(二):搭建高可用Eureka服务注册中心集群
10万+IT人都在关注,史上最全面的企业级微服务快速开发学习教程:5分钟快速搭建一个高可用服务注册中心集群前言:springcloud项目是基于springboot框架,我们演示的都创建springboot工程上篇博客【Spring Cloud微服务连载(一):搭建服务注册中心以及注册服务提供者】中我们介绍了如何使用Spring Cloud搭建一个服务注册中心以及注册服务,但是搭建好...原创 2019-03-07 17:09:16 · 706 阅读 · 0 评论 -
最全面的springBoot集成mybatis+mysql项目搭建经验分享
大家都知道,现在Spring框架几乎无处不用,目前最新版本据说是Spring5,现在常用的基本还是Spring4.X,很多公司甚至用的还是Spring3.x,而Spring领域其中最好用的莫过于SpringBoot,这是从SpringMVC衍变出来的,本质还是SpringMVC,但是要比SpringMVC好用的多,因为很好用,所以笔者闲暇之际用SpringBoot从头至尾摸索着搭建了一个案例,分享...原创 2018-02-08 15:56:23 · 45625 阅读 · 39 评论 -
Java实现批量压缩图片 裁剪压缩多种尺寸缩略图 一键批量上传图片
10万+IT人都在关注的图片批量压缩上传方案(完整案例+代码)背景需求:为了客户端访问图片资源时,加载图片更流畅,体验更好,通常不会直接用原图路径,需要根据不同的场景显示不同规格的缩略图,根据商品关键属性,能够获取到图片不同尺寸规格的图片路径,并且能根据不同缩略图直观看到商品的关键属性,需要写一个Java小工具把本地磁盘中的图片资源一键上传至分布式FastDFS文件服务器,并把图片信息存入本地...原创 2019-03-13 22:11:09 · 5598 阅读 · 2 评论 -
数据库连接池原理之(二):数据库连接池处理并发,事务,配置以及维护
笔者个人博客地址:http://www.chenyunkeji.com,欢迎关注数据库连接池原理分析,点击这里:《通俗易懂的数据库连接池实现机制讲解》本节内容紧接着上篇的数据库连接池原理分析,继续讲解连接池需要考虑的其他重要问题1、并发问题 为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为java语言自身提供了对并发管理的...原创 2018-12-21 12:05:17 · 2016 阅读 · 2 评论 -
数据库连接池原理之(一):通俗易懂的数据库连接池原理以及实现机制讲解
本篇内容综合广大网友提供内容,笔者经过整理,对数据库连接池原理和实现过程做个很系统的并且通俗易懂的分析讲解,以及手写一个连接池实现过程作为演示。一、早期通过JDBC方式操作数据库我们先来看早期使用JDBC的方式操作数据库的过程,这里以mysql数据库为例讲解JDBC操作数据库原理:一般来说,java应用程序访问数据库的过程是: ①装载数据库驱动程序; ②通过jdbc...原创 2018-12-21 11:45:02 · 39978 阅读 · 23 评论 -
springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证
综合笔者多年的微信公众号以及微信产品开发经验,本篇内容把微信公众号测试账户的接口配置过程分享给广大开发者朋友,开发语言是Java,采用目前流行的springmvc框架开发。开发前必读以及准备工作:1、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请开发者前往微信开放平台接入。2、在申请到认证公众号之前...原创 2018-12-15 11:54:57 · 7282 阅读 · 4 评论 -
java 代码Springmvc框架结合JS 动态生成随机图形验证码完整案例
平时我们日常见到的有登录功能的系统都会有图形验证码的识别,现在大多数图形验证码都是通过第三方插件可以生成,那么运用我们平时的Java知识自己动手写一个生成随机图形验证码的案例,是不是很有意思 了,不废话了,直接上代码,快来围观。首先案例采用的是Springmvc框架的maven项目,在maven项目的pom.xml文件引入权限控制shiro的依赖jar包<!-- shiro start --...原创 2018-06-29 15:29:14 · 1166 阅读 · 0 评论 -
使用Eclipse+Tomcat搭建本地服务器部署web项目详细教程
1. 下载 tomcat 解压至本地磁盘,比如这里我的解压路径是D:\ProgramFiles\apache-tomcat-7.0.68 - 副本,解压后就能用。2.测试tomcat是否可以使用,打开tomcat的bin目录,点击如下的 startup.bat,启动服务。3. 打开自己的浏览器输入 localhost:8080 如果出现如下页面则可以使用自此代表Tomcat服务器安装成功。 ...原创 2018-04-21 23:14:59 · 8303 阅读 · 2 评论 -
Oracle+Mybatis的foreach insert批量插入这些坑的解决方案
最近做一个批量上传附件的需求,将多个附件的信息批量插入数据库中。解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入。期间遇到了“SQL 命令未正确结束 ”的错误,最终解决,记录下来供以后查阅和学习。 首先,有关Mybatis的foreach insert的,具体如下:...原创 2018-03-28 16:19:23 · 10022 阅读 · 1 评论 -
Mybatis 版本问题引起的Parameter '0' not found. Available parameters are【0, 1, param1, param2】解决方案
按照mybatis,今天按照常规写法,在Dao层mapper接口的方法中,有多个参数,以0,1,2…的序列为keyName,填充参数结果运行时一直报下面这个错:Parameter '0' not found. Available parameters are【0, 1, param1, param2】最后查了相关资料,说是mybatis常规版本的jar包都是支持这种按照0,1,2索引填充参数,目前...原创 2018-04-09 17:38:28 · 1384 阅读 · 0 评论 -
springMVC 框架 Request.getParameter(“参数名”) 中文乱码解决方法
在Java 开发中,如果框架搭建的不完善或者初学者在学习过程中,出现中文乱码是经常的事儿(哈。谁让发明Java语言的不是中国人呢)今天跟大家分享几个解决java Web开发中,request.getParameter()获取URL中文参数乱码的解决办法解决问题,先要研究问题,URL传中文参数为什么会出现乱码?原因:Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以IS...原创 2018-04-02 13:37:49 · 2267 阅读 · 0 评论 -
ActiveMQ编写JMS(Java消息服务)实例分享
这篇博文,我们使用ActiveMQ为大家实现一种点对点的消息模型。如果你对点对点消息传送模型的认识较浅,可以看一下上一篇博文 JMS(Java消息服务)入门教程JMS其实并没有想象的那么高大上,看完这篇博文之后,你就知道什么叫简单,下面直接进入主题。开发环境我们使用的是ActiveMQ 5.11.1 Release的Windows版,官网最新版是ActiveMQ 5.12.0 Release,大家...原创 2018-02-09 22:06:40 · 367 阅读 · 0 评论 -
Spring AOP之AspectJ(面向切面编程) 案例详解
一.前言 今天看了一篇关于Spring AOP的详解,写得还不错,就转载学习一下,也在此分享给更多的朋友。AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开...转载 2018-02-09 10:54:19 · 701 阅读 · 0 评论 -
JMS(Java消息服务)入门教程
什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JAVA应用程序开发。在J2EE中,当两个应用程序使用JMS进行通信时,它们之间并不是直接相连的,而是通过一个共同的消息收发服务连接起来,可以达到解耦的效果,我们将会在接下来的教程中详细介绍。为什么需要JMS ...转载 2018-02-09 19:58:18 · 494 阅读 · 0 评论 -
Maven学习 (一) 搭建Maven环境
有两种方式可以配置maven的环境配置,本人推荐使用第二种,即使用本地的maven安装文件,个人感觉这样可以方便管理下载jar包的存放位置,错误信息的输出等,可以在dos窗口中可以清晰看到,虽然比较麻烦,每次都要敲dos命令,但可以写批处理文件来解决.方式一: 不使用本地的maven安装文件环境配置(也即使用的是m2eclipse插件的默认配置) settings.xml设置localRep原创 2016-07-30 22:18:49 · 279 阅读 · 0 评论 -
java面试中一个经典的switch选择结构面试题
写出下面代码的结果(注意switch选择结构的每个case块以break结束,如果没有使用break关键字,则程序会按顺序一直匹配到最后一个case块才能终止)public static void main(String[] args) { int i=0; int j=-1; switch(i){ case 0 :j=1; case 1 :j=1;原创 2016-04-07 22:55:27 · 4002 阅读 · 0 评论 -
MyBatis使用association实现一对一级联查询的几种案例
我们平日经常会遇到需要级联查询的场景,这里通过案例给大家展示实现过程。我们要查询的用户信息里面有个角色信息,一个用户对应一个角色,我们现在要求查出用户信息的同时,关联查出用户的角色信息,那么这个时候我们可以通过级联属性的方式,将角色中的数据查出来封装到用户User的role属性里面,我们还有另外一种方式来实现数据的封装。接下来我们将介绍一下association标签的相关用法,包括嵌套查询和分段查...原创 2018-07-03 17:44:20 · 3194 阅读 · 4 评论 -
微信小程序根据经纬度动态定位计算周边商家导航距离
据说,有码农的地方就有江湖,近期有朋友向编者咨询关于小程序开发定位的若干问题,那么今天小编就本着无私奉献的精神把自己的实战经验整理分享出来,仅供各位江湖朋友参考。应用场景:根据当前移动设备上小程序的定位(基准点),计算周边不同商家的导航距离,此刻编者就给大家把小程序根据经纬度计算导航距离的具体代码分享出来,希望能帮到各位同行。首先需要自行去腾讯位置服务网站通过自己的appid(做过小程序的都懂...原创 2018-08-20 14:45:54 · 12833 阅读 · 11 评论 -
Java设计模式之《抽象工厂模式》详解 实现抽象工厂及应用场景
抽象工厂模式(Abstract Factory) 抽象出来一个基础接口定义了产品功能(对应抽象产品角色),每个实现此接口的子类就是具体产品(对应具体产品角色),然后定义一个工厂接口(对应抽象工厂角色),实现了工厂接口的子类就是具体工厂(对应具体工厂角色),这时候,接口编程的优点就体现了,我们可以随时新增具体产品类(只需要实现产品接口),只需要同时新增一个工厂类,客户端就可以轻松调用...原创 2018-12-19 18:58:10 · 3209 阅读 · 0 评论 -
Java设计模式之《工厂方法模式》详解 实现工厂方法
工厂方法模式(Factory Method)常用的工厂方法模式是静态工厂,利用static方法,作为一种类似于常见的工具类Utils等辅助效果,一般情况下工厂类不需要实例化,只需通过类名调用静态方法即可实现。首先定义一个工厂类,里面定义三个静态方法public class StaticFactory { private StaticFactory(){} public...原创 2018-12-19 18:26:46 · 160 阅读 · 0 评论