- 博客(337)
- 资源 (29)
- 收藏
- 关注
原创 Java:excel模板文件打包后乱码问题
问题:项目中resources目录下的excel模板打包后文件乱码了原因:maven打包会对资源统一编码解决方式:忽略maven打包时需要编码的文件在pom.xml加入下面代码 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>...
2020-03-31 09:49:30
1509
7
原创 SpringBoot:elasticsearch简单使用
对ES的增删改查、创建索引、删除索引都封装到下面这个service里面了package com.qingqing.bi.service.es.impl;import com.qingqing.bi.service.es.EsService;import com.qingqing.common.exception.CallServiceErrorException;import com.q...
2020-03-11 15:04:02
469
原创 Java:企业微信开发——上传临时素材
请求方式:POST(HTTPS)请求地址:https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE素材上传得到media_id,该media_id仅三天内有效media_id在同一企业内应用之间可以共享这个media_id在推送图表、文件、语言等消息时需要用到的type...
2020-03-11 14:35:57
6046
3
原创 Java:企业微信推送消息到个人和部门
第一步:我们需要组装请求参数,比如下面这种的JSON字符串这里接收的个人企业微信ID和部门ID是用符号 | 隔开的{ "touser" : "UserID1|UserID2|UserID3", "toparty" : "PartyID1|PartyID2", "totag" : "TagID1 | TagID2", "msgtype" : "text", "age...
2020-03-11 14:26:26
3266
1
原创 Java:获取企业微信Token
1、获取条件:企业ID、应用的凭证密钥官方API:https://work.weixin.qq.com/api/doc/90000/90135/91039代码:corpid:企业IDcorpsecret:应用的凭证密钥 public static AccessToken getAccessToken(){ if(StringUtils.isEmpty(corpid)){...
2020-03-04 17:34:08
2247
2
原创 SpringBoot:redis哨兵模式配置
@Configuration@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 21600,redisNamespace ="CBOARD")public class RedisConfig { //节点之间以逗号隔开: 172.0.0.0,172.1.1.1 @Value("${redis.sentinel.nodes...
2020-03-04 17:24:59
599
原创 Java多张图片合成一张(横向或竖向)
代码说话package com.example.demo.image;import sun.misc.BASE64Decoder;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import ...
2020-03-02 17:46:37
2201
1
原创 SpringCloud:配置中心(Config)
1、Config简介当项目越来越多,每个项目又要去维护多个配置文件,而且每个配置文件还要区分各个环境(开发、测试、预发布、线上等),想想都头大,不过市面上已经存在很多好用的开源的配置中心,如百度的disconf,携程的Apollo等,这些开源的软件确实都很棒,但是SpringCloud Config确更加轻量级,功能也强大,可以无缝的和spring体系相结合,简单易用。它包含了Client和Se...
2019-11-29 11:40:44
317
原创 SpringCloud:网关服务(Zuul)
1、Zuul简介Zuul作为微服务系统的网关组件,用于构建边界服务(Edge Service),致力于动态路由、过滤、监控、弹性伸缩和安全。其在微服务架构中有着重要的作用,主要体现在以下六个方面:Zull、Ribbon以及Eureka相结合可以实现智能路由和负载均衡的功能,Zull可以按照某种策略将请求分发到不同的实例上网关作为边界服务,将内部服务的API接口进行聚合并统一对外暴露接口。保...
2019-11-28 15:27:22
236
原创 SpringCloud:断路器(Hystrix)
1、Hystrix简介在微服务架构中,服务与服务之间会存在相互调用、依赖的情况,假如其中某一个由于网络原因或本身就挂了导致服务不可用,大量请求进来可能就会把系统资源用尽,导致其他服务都不可用,这不是我们希望看到的,你自己挂了就挂了,还把其他服务都搞挂了就不好了,这也就是常说的故障传播,雪崩效应,而Hystrix就是来解决这个问题,当系统中某个服务发生故障或当调用一个特定的服务达到一定阈值(默认5...
2019-11-28 11:41:34
893
原创 SpringCloud:服务消费(Feign)
1、Feign简介Feign是一个声明式的web客户端,封装Htttp请求的整个过程,构造请求、建立连接、解析响应结果等,并且整合了Ribbon来实现负载均衡,Feing有两个主要注解: @EnableFeignClients 用于开启feign功能,@FeignClient 用于定义feign 接口。2、创建一个Feign工程引入核心依赖:spring-cloud-starter-netf...
2019-11-26 11:42:36
353
原创 SpringCloud:服务消费(Ribbon+RestTemplate)
上篇文章介绍了服务的注册和发现,那我们如何去消费服务呢?在SpringCloud中服务消费有两种方式,一种是ribbon+restTemplate的方式,也是本篇文章将要介绍的,另一种方式Fegin下篇文章会说到。1、Ribbon简介Ribbon是一个基于HTTP和TCP的负载均衡客户端,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的R...
2019-11-22 16:39:17
282
1
原创 SpringCloud:服务注册与发现(Eureka)
1、Eureka简介Eureka是一个服务注册与发现组件,主要有两部分组成:注册中心(Eureka-Server)和服务提供端(Eureka-Client),Eureka-Server通过一个注册表维护了所有向Eureka-Server注册的Eureka-Client的主机地址和端口,同时Eureka-Client可以向Eureka-Server获取该注册表。2、创建一个SpringBoot项...
2019-11-22 14:56:24
226
原创 Java数组实现栈和队列
队列实现:package com.example.javabase.test;/** * @author XuJD * @create 2019-11-21 10:11 * 基于数组实现队列 **/public class Queue3 { /** * 队列 */ private String[] data; /** * 队列最...
2019-11-21 11:08:09
863
转载 Synchronized和Lock的区别
Synchronized和Lock的区别并发编程中,锁是经常需要使用的。在开发中我们常用的锁有两种Synchronized和Lock。线程安全问题线程安全是在多线程编程中,有可能会出现同时访问同一个 共享、可变资源 的情况,始终都不会导致数据破坏以及其他不该出现的结果。这种资源可以是一个变量、一个对象、一个文件等。共享:多个线程可以同时访问该共享变量。可变:数据在生命周期中可以被改变。...
2019-11-01 14:35:31
10498
转载 一篇文章让你了解Hive和HBase的区别
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。HBase是Hadoop的数据库,一个分布式、可扩展、大数据的存储。单个的从字面意思上或许很难看出二者的区别,别急,下面我们就对二者做个详细的介绍。两者的特点Hive帮助熟悉SQL的人运行MapReduce任务。因为它是JDB...
2019-10-30 11:17:25
277
转载 拜托!面试请不要再问我Spring Cloud底层原理
目录一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七、总结概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Sp...
2019-09-30 18:13:53
200
转载 深入浅出并发编程底层原理
1.Java内存模型——底层原理1.1 什么是底层原理Java程序编译到运行需要经过将.java后缀的文件通过javac命令编译成.class文件(此时与平台无关),然后将对应的.class文件转化成机器码并执行,但是由于不同平台的JVM会带来不同的“翻译”,所以我们在Java层写的各种Lock,其实最终依赖的是JVM的具体实现和CPU指令,才能帮助我们达到线程安全的效果。2 三兄弟:J...
2019-09-30 17:43:08
472
转载 MQ消息最终一致性解决方案
随着分布式服务架构的流行与普及,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使用自己单独维护的数据库,它们彼此之间不在同一个事务中,假如A执行成功了,B执行却失败了,而A的事务此时已经提交,无法回滚,那么最终就会导致两边数据不一致性的问题;尽管很早之前就有基于两阶段提交的XA分...
2019-09-30 10:01:48
2242
转载 浅析redo log、undolog、binlog
redo log 和 undo logredo log 是重做日志,提供 前滚 操作;undo log 是回退日志,提供 回滚 操作。只用 undo log 实现原子性和持久性的缺陷:事务提交前需要将 Undo Log 写磁盘(提供可回滚功能,保证原子性),这会造成多次磁盘 IO(不考虑各种优化例如 SQL 解析优化等),这些 IO 算是顺序 IO;事务提交后需要将数据立即更新到数据库...
2019-09-23 16:38:33
368
转载 聊聊分布式事务,再说说解决方案
前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布...
2019-08-29 10:59:38
150
转载 巧用Java8中的Stream,让集合操作飞起来!
简介java8也出来好久了,接口默认方法,lambda表达式,函数式接口,Date API等特性还是有必要去了解一下。比如在项目中经常用到集合,遍历集合可以试下lambda表达式,经常还要对集合进行过滤和排序,Stream就派上用场了。用习惯了,不得不说真的很好用。Stream作为java8的新特性,基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合操作...
2019-08-28 17:21:42
187
转载 mybatis二级缓存实现
背景SpringBoot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果。本篇博客将介绍如何使用SpringBoot快速搭建一个Web应用,并且采用Mybatis作为我们的ORM框架。为了提升性能,我们...
2019-08-27 20:01:40
548
原创 服务器端如何优雅的统一返回值和统一接收值?
1、在做服务器端开发的时候,我们经常要返回特定格式的数据给调用方,通常有状态码、消息和数据,如何将这些返回结果统一起来呢?请看下面…public class ResponseVO<T> extends PageVO { private ResultCode status; private String msg; private T data; ...
2019-07-31 13:50:13
616
转载 TCC分布式事务落地实现
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。1|0业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做...
2019-07-22 14:32:57
1092
转载 mysql必备知识点
标题有点标题党的意思,看了文章之后希望大家不会有这个想法,绝对干货!!!这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL常见面试问题。文末有公众号二维码,欢迎关注获取笔主最新更新文章,并可免费获取笔主总结的《Java面试突击》以及Java工程师必备学习资源。什么是MySQL?MySQL 是一种关系型数据库,在Ja...
2019-07-04 16:12:55
288
原创 单链表反转
代码public class LinkDo { int data; LinkDo next; public LinkDo(int data) { this.data = data; } public int getData() { return data; } public void setData(i...
2019-05-24 11:21:48
170
1
原创 Map五种遍历方式
/*map遍历方式*/ @org.junit.Test public void mapTest(){ Map<String,String> map = new HashMap<>(); map.put("a","一"); map.put("b","二"); map.put("c","三");...
2019-05-10 15:21:24
517
转载 spring 事务传播行为实例分析
Spring事务传播行为:spring特有的事务传播行为,spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制)下图所示为7钟事务传播机制o 传播行为含义PROPAGATION_REQUIRED(XML文件中为REQUIRED)表示当前方...
2019-04-26 11:57:06
175
原创 RabbitMQ消息接收确认机制ACK
默认情况下,rabbitMQ消息队列中的消息一旦有消费者接收了就会被删除,假如这个时候消费者宕机了或者异常了,就可能会导致消息丢失(接收到消息了,但并没有处理完这个消息),这时候就需要消费端在处理完消息后告诉rabbitMQ:“我已经成功消费完这个消息了,你可以删除这个消息了”。1.修改消费端rabbitmq配置信息,将消息确认机制设置为手动确认,因为默认是自动确认。/** * @XuJD...
2019-04-15 16:32:10
1578
原创 Git强制覆盖本地代码,保持与远程仓库一致
git强制覆盖: git fetch --all git reset --hard origin/master git pull也可以一行执行 git fetch --all &amp;&amp; git reset --hard origin/master &amp;&amp; git pull
2019-03-10 15:33:59
1077
原创 Communications link failure The last packet successfully received from the server was xxx millise
1、问题原因mysql服务器中断了我们的连接,虽然连接池有连接(连接池认为该连接有效,mysql确认为无效)2、解决办法(我是这么解决的)数据库地址加上autoReconnect=true,开启断开自动连接jdbc_url=jdbc:mysql://xxx.xx.xx.xxx:3306/xxx?autoReconnect=true配置文件配置,testOnBorrow默认为false,我...
2019-01-31 10:26:24
4213
原创 mybatis批量更新数据
sql写法:UPDATE user_table SET user_name= CASE id WHEN 1 THEN '张三' WHEN 2 THEN '李四' WHEN 3 THEN '王二' END WHERE id IN (1,2,3)更新多个字段:UPDATE user_...
2019-01-29 16:25:04
370
原创 Java实现https请求
/** * @author XuJD * @create 2019-01-21 17:21 **/public class HttpsUtil { private static Logger logger = LoggerFactory.getLogger(HttpsUtil.class); public static JSONObject httpsRequest(St...
2019-01-23 19:06:08
9453
2
原创 Java数组和链表三种遍历效率对比
数组结构示例代码: /*数组结构的三种循环遍历效率对比*/ @org.junit.Test public void test13(){ List<Integer> list = new ArrayList<>(10000000); for(int i=0;i<1000;i++){ lis...
2019-01-20 12:11:21
4867
4
转载 正向代理与反向代理的区别
正向代理的概念正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我从网站的角度,只在代理服务器来取内容...
2019-01-20 09:56:03
158
原创 Java实现栈
栈:先进后出基于数组实现的栈/** * 基于数组实现的栈 * @author XuJD * @create 2019-01-17 17:26 **/public class StackTest { private String[] data = null; private int maxSize = 0; private int top = -1; ...
2019-01-17 19:03:38
272
原创 angularjs-dropdown-multiselect使用
介绍一个非常好用下拉列表插件:springboot整合rabbitmq
rabbitMQ:MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行...
2018-12-24 16:02:38
217
原创 一起学习Springboot(六):文件上传
本篇文章主要介绍在Springboot中如何上传文件引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependenc...
2018-11-02 15:08:28
281
dubbo+zookeeper+SpringMVC+Spring+Mybatis+Freemarker集成
2017-06-12
springboot+angularJS+AdminLTE
2018-08-21
java网络爬虫模拟登入抓取数据
2017-12-30
FlashFXP5.4.0中文破解版
2017-12-13
SVN1.8插件
2017-09-25
JDK1.8 API 中文 高清完整版
2017-09-04
Shiro入门项目
2017-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人