自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 收藏
  • 关注

原创 PDF文件添加图片、文字合成(java)

PDF文件添加图片、文字合成(java)

2022-07-01 19:17:22 1015 1

原创 文件流转换工具

InputStream转MultipartFile

2022-07-01 19:15:01 2142

原创 策略模式实现(无ifelse)基于注解实现

策略模式实现(无ifelse)基于注解实现

2022-06-06 10:09:04 220

原创 Java 责任链模式demo

BaseValidateChainpublic abstract class BaseValidateChain { // 当前处理节点 protected BaseValidateChain chain; // 设置下一个处理者 public void setNextChain(BaseValidateChain nextChain) { this.chain = nextChain; } // 处理方法,每一个处理者要实现该方法

2022-05-07 10:27:38 822

原创 MAC安装graphviz

使用命令brew installgraphviz问题:但是安装时报错 freetype 相关下载地址 502解决:执行 brew update

2022-02-28 14:22:17 967

原创 ConfigurationProperties 读取Apollo 修改配置不生效

例如读取Apollo配置@Component@ConfigurationProperties(prefix = "account.tenant")public class ShuidiAppCodePropertiesCopy { /** * shuidi-app-code列表, 按照,分割 */ private String appCode; public String getAppCode() { return appCode;

2021-12-15 15:02:57 1536

转载 支付宝架构真牛逼

转载自方志朋支付宝架构真牛逼https://mp.weixin.qq.com/s/z85EMMMPuGsQ5YlJQHs7_A自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限。2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这个数字变为了 25.6 万笔/秒。2018 年双 11 的支付峰值为 48 万笔/秒,2019 年双 11 支付峰值为 54.4 万笔/秒,创下新纪录,是 2009 年第一次双 11 的

2021-11-09 10:41:49 115

转载 还在用分页?试试 MyBatis 流式查询

转载自方志朋还在用分页?你out了 !试试 MyBatis 流式查询,真心强大!基本概念流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。流式查询的过程当中,数据库连接是保持打开状态的,因此要注意的是:

2021-11-05 14:06:45 88

原创 Java执行shell脚本并返回结果两种方法的完整代码

Java执行shell脚本并返回结果两种方法的完整代码简单的是直接传入String字符串,这种不能执行echo 或者需要调用其他进程的命令(比如调用postfix发送邮件命令就不起作用)执行复杂的shell建议使用String[]方式传递(对外可以封装后也传入String字符串)。/** * 运行shell脚本 * @param shell 需要运行的shell脚本 */ public static void execShell(String shel

2021-10-25 19:53:20 5056

原创 横向越权与纵向越权区别

横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源如何防止横向越权漏洞:可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的。对请求中的关键参数进行间接映射,避免使用原始关键参数名,比如使用索引1代替id值123等如何防止纵向越权漏洞:建议使用基于角色访问控制机制来防止纵向越权攻击,即预先定义不同的权限角色,为每个角色分配不同的权限,每个用户都属于特定的角色,

2021-10-15 16:48:32 2872

原创 idea使用git的时候,修改后文件变蓝后马上就变白,没有要提交的文件

正常情况下,使用idea的时候,修改后的git文件本来应该是蓝色的,然后右键是可以commit的,然后可以push。但是从昨天开始,修改后的文件变蓝色几秒钟马上变白色,和没修改过一样,右键commit也不在commit列表,问了几个人,都没遇到过。解决方案...

2021-07-24 00:28:09 2820 3

转载 正则表达式判断字符串是否为数字

public static void main(String args[]) { Pattern pattern = Pattern.compile("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); Matcher isNum = pattern.matcher("1"); if (!isNum.matches()) { System.out.println("不是数字"); }else{ System.out.print.

2021-05-25 19:07:37 3409 1

转载 Mybatis如何做到dao.java与mapper.xml对应的

转:http://www.jb51.net/article/116402.htm本文主要介绍的是关于mybatis通过接口查找对应mapper.xml及方法执行的相关内容,下面话不多说,来看看详细的介绍:在使用mybatis的时候,有一种方式是 1 BookMapper bookMapper = SqlSessi...

2021-04-15 14:44:47 1199

转载 Redis的五种常用数据类型、三种特殊数据类型详解、常见面试题

目录 简述Redis五种基本数据类型String字符串常用命令应用场景 Hash散列表常用命令使用场景 List链表常用命令应用场景 Set( 集合)常用命令应用场景 SortedSet( 有序集合) zset常用命令介绍应用场景 Redis三种特殊的数据类型Geospatial 地理位置命令介绍底层实现原理 Hyperloglog 基数统计命令介绍应用场景:适合做页面...

2021-04-06 14:45:04 848

原创 applicationPublish、eventListener实现java后端异步demo

发送事件public class DemoEvent extends ApplicationEvent { @Getter private UserInfo userInfo; public DemoEvent(UserInfo source) { super(source); userInfo = source; }}@RestController@RequestMapping(path = {"/api/hz/demo.

2021-03-31 14:26:51 172

转载 ApplicationContext发布事件和处理事件

ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口来提供的,通过ApplicationContext的publishEvent()方法发布到ApplicationListener;在这里包含三个角色:被发布的事件,事件发布者,事件的监听者。事件发布者在发布事件的时候->通知事件的监听者。1.要发布的事件public class OrderEvent extends ApplicationEvent {...

2021-03-30 19:54:34 1216

转载 Docker和k8s的区别与介绍

2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。LXC,就是Linux容器虚拟技术(Linux container)后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。正当他们快要坚持不下去的时候,脑

2021-01-30 21:24:45 330

转载 五分钟体验分布式事务框架Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。本教程旨在为读者提供一个快速入门seata的案例,详细使用请参考官方案例和文档。http://seata.io/zh-cn/docs/overview/what-is-seata.htmlseata-server搭建在seata中,事务管理器是单独的一个服务,无需读者做二次开发,开箱即用。下载地址h...

2021-01-26 11:42:26 130

转载 Caffeine 缓存

简介在本文中,我们来看看Caffeine— 一个高性能的 Java 缓存库。缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item。回收策略为在指定时间删除哪些对象。此策略直接影响缓存的命中率 — 缓存库的一个重要特征。Caffeine 因使用 Window TinyLfu 回收策略,提供了一个近乎最佳的命中率。填充策略(Population)Caffeine 为我们提供了三种填充策略:手动、同步和异步手动加载(Manual) Cache<Strin..

2021-01-25 14:52:11 1054

转载 springboot 之 自动配置原理

面试的时候,其实远远不需要回答的这么具体,你只需要这样回答:Spring Boot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxPrope

2021-01-21 17:50:55 431

转载 SpringBoot自动配置原理

SpringBoot自动配置原理备注:该SpringBoot自动配置原理不适合java刚入门学者以及不熟悉Spring4+Springmvc+maven的同学1、当SpringBoot应用启动的时候,就从主方法里面进行启动的。@SpringBootApplicationpublicclassSpringBoot02ConfigAutoconfigApplication{publicstaticvoidmain(String[]args){Spr...

2021-01-21 16:23:57 137

转载 java校验字符串是否为json格式

摘自原文链接觉得挺好玩的一个问题,如何校验字符串是否为标准的json格式,刚开始的回答是jsonObject或者jsonArray转换一下,如果可以转换,说明为json字符串,如果不能就抛出异常,捕获异常。但是不让用这种方式。于是查资料从字符串和字符下手。package com.xiaozu.gateway.util;import java.text.CharacterIterator;import java.text.StringCharacterIterator;/**...

2021-01-15 14:41:11 694 1

转载 四种线程池拒绝策略

一、前言线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。二、四种线程池拒绝策略当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是

2021-01-14 10:45:01 1191

转载 CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响应很慢进而影响了其他系统的调用。问题分析首先我们知道CompletableFuture的get()方法值会阻塞主线程,直到子线程执行任务完成返回结果才会取消阻塞。如果子线程一直不返回接口那么主线程就会一直阻塞,所以我们一般不建议直接使用Com

2021-01-13 14:27:55 3905

转载 CompletableFuture 使用详解

1、 runAsync 和 supplyAsync方法CompletableFuture 提供了四个静态方法来创建一个异步操作。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)public static <U&g.

2021-01-13 14:24:45 223

转载 mysql大数据量下修改表结构的方法

当表数据量是几百万条以上时,如果要修改原表结构,比如给原表加个列字段,同时在这个表上加索引。请勿使用以下方式:alter table video_names add column type VARCHAR(255) NOT NULL, add index(type)原因是:经过实际测试,表数据量是800多万条,运行上述语句时,几个小时执行不完。正确方式:1、创建一个新表tmp_names2、执行insert into tmp_names(****) select ***** from vide

2021-01-11 09:58:27 2112

原创 Mybatis中如何在SQL语句表名中使用参数${}和#{}

使用${}符号生效 #{} 无效insert into prefix_${table_name} (a, b, c) values (#{a}, #{b}, #{c})${} 表示直接使用字面量(literal value)#{} 表示这个是个参数如果 table_name 是 “ABC”则 ${table_name} 是 ABC#{table_name} 是 “ABC"...

2021-01-06 16:19:21 499

转载 MyBatis 配置 typeHandlers 详解

0x00:前言参考 之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作用和使用场景,这篇文章细说一下配置文件中 typeHandlers 标签的详细使用。 0x01:标签介绍 在 MyBatis 的 sql 映射配置文件中,为 sql 配置的输入参数最终要从 java 类型转换成数据库能识别的类型,而从 sql 的查询结果集中获取的数据,...

2020-12-23 15:44:02 1311

转载 Error attempting to get column time from result set. Cause: java.sql.SQLFe 错误 日期LocalDateTime序列化

备注:当使用sharding-JDBC的时候 此种解决方法无用 实体内使用Timestamp (java.sql.Timestamp)接收 错误原因: 错误信息: Error attempting to get column 'time' from result set. Cause: java.sql.SQLFe 错误原因: 日期无法正常序列化与反序列化 当前采用技术 1、数据库字段为 datetime 类型 2

2020-12-23 15:31:20 3471 1

转载 hystrix微服务参数优化设置(实战经验)

目录 一、概述 二、业务场景 三、线上经验—如何设置Hystrix线程池大小 四、线上经验—如何设置请求超时时间 五、问题解决 六、总结 七公式、30(每秒请求数量) * 0.2(每个请求的处理秒数) + 4(给点缓冲buffer) = 10(线程数量)     一、概述   上一篇文章讲了一个朋友公司使用Spring Cloud架构遇到问题的一个真实案例,虽然不是...

2020-12-22 17:50:00 443

转载 JFR定位由于可能的JDK11的bug导致Log4j2 CPU占用100%的问题

本文基于OpenJDK 11 最近使用Spring Cloud Gateway的时候,遇到了一个奇怪的问题: 线上有3个 API 网关实例,压力均衡,平稳运行3天后,突然有一个实例,CPU飚高,并且响应时间增加很多,从几十毫秒涨到了几分钟。 线上是 k8s 管理容器,立刻停掉了这个 pod,重建,恢复正常。 线上我们开启了 JFR 记录(可以参考我的另外系列文章:Java 监控 JFR),通过 JMC 查看下出问题的 JFR 记录。 首先...

2020-12-08 10:53:22 210

转载 MySQL批量插入遇上唯一索引避免方法(避免导入重复数据)

本票文章为转载,只为自己记录一下sql。 MySQL批量插入遇上唯一索引避免方法(避免导入重复数据) 未避免导入重复数据,建议建立唯一索引  防止批量插入时,遇上唯一索引,可以使用以下3种方法避免方法 (一)导入差异数据,忽略重复数据,IGNORE INTO的使用 (二)导入并覆盖重复数据,REPLACE INTO 的使用 (三)导入保留重复数据未指定字段,INSERT INTO ON DUPL...

2020-11-26 11:38:51 998

转载 mysql中redo和undo日志

在数据库系统中,既有存放数据的文件,也有存放日志的文件。日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件。 ​ MySQL中的日志文件,有这么两类常常讨论到:undo日志与redo日志。 1 undo 1.1 undo是啥 ...

2020-11-06 14:59:27 302

原创 监听checkbox事件

<br><!DOCTYPE html><html><head> <title></title></head> <script> function onClickHander(obj){ if(obj.checked){ console.log("selected"); }else{

2020-10-12 17:32:18 2151

转载 使用Nexus添加jar包到私服里

使用Nexus添加jar包到私服里 转载  2014年01月10日 21:35:49 7413 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问...

2020-10-12 14:49:34 652

转载 维度表、事实表、宽表

数据仓库一般拿来搭建BI平台, BI平台分为事实表、维表,然后两种表聚合成一个宽表,其实这个宽表就是指标表。 https://blog.csdn.net/qq_28666081/article/details/104686822   一、维度表:数据仓库中的表,其条目描述事实数据表中的数据。维度表包含创建维度所基于的数据。 二、事实表:也叫事实数据表,就是app埋点日志,主要特点是含有大量的数据...

2020-09-29 16:04:13 3935

转载 在Mac上安装Gradle,以及Idea使用Gradle

一、Gradle下载地址:http://services.gradle.org/distributions/ 二、在Mac上配置Gradle环境 本人Gradle文件的路径为 /Users/qianye/Documents/gradle-4.5 1.打开终端,输入o...

2020-09-21 11:03:21 810

原创 git删除本地与远程分支

删除本地分支命令行 : $ git branch -d <BranchName>删除远程分支命令行 : $ git push origin --delete <BranchName>

2020-09-12 17:39:12 130

转载 K8s Ingress Nginx使用

在此我们不讲述如何部署ingress-controller,只演示如何使用ingress之nginx使用。主要演示如何使用ingress nginx实现我们nginx的多样化配置,从而达到使用ingress nginx如同使用手动部署nginx同样的便利。在此使用以下几个案例作讲解: 案例1(基本转发,https配置与annotat...

2020-09-09 15:43:38 516

转载 Java ArrayList 为什么要实现 RandomAccess 接口?

总结:ArrayList通过for遍历比通过iterator遍历要稍快,LinkedList通过iterator遍历比通过for遍历要快。所以说在我们的应用中,要考虑使用List接口的哪种实现类,可以更好更高效的满足实际场景需求。所以在这里通过实现RandomAccess接口来区分List的哪种实现类。

2020-08-28 15:01:19 202

空空如也

空空如也

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

TA关注的人

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