自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangzhensea的专栏

一点改变,一点不同就是一次进步

  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

转载 MyBatis 批量插入别再乱用 foreach 了,5000 条数据花了 14 分钟。。

mybatis实现批量插入大数据处理

2023-03-09 13:11:54 176

转载 阿里又开源一款数据同步工具 DataX,稳定又高效,好用到爆!

阿里数据库备份工具

2023-03-09 08:26:49 1319 1

转载 这可能是Spring Boot Starter 讲的最清楚的一次了

讲解starter实现内容

2023-02-24 08:29:26 124

转载 14.3k star,这是我见过最强的第三方登录工具库!!

不错的平台

2023-02-22 16:41:59 252

转载 springcloudalibaba学习路线

springcloudalibaba

2023-02-21 16:27:48 118

转载 Spring Boot 程序优化的 14 个小妙招!

springboot小技巧

2022-11-25 10:29:48 102

转载 如何将 @Transactional 事务注解运用到炉火纯青?

Transactional 事务

2022-11-24 10:10:10 58

转载 公司新来一个同事,把优惠券系统设计的炉火纯青!

优惠券设计

2022-11-22 10:10:17 252

转载 一顿操作后,FGC频率降低到原来的1/400

通过这一个多月的努力,将 FullGC 从 40 次/天优化到近 10 天才触发一次,而且 YoungGC 的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。对于JVM垃圾回收,之前一直都是处于理论阶段,就知道新生代,老年代的晋升关系,这些知识仅够应付面试使用的。前一段时间,线上服务器的FullGC非常频繁,平均一天40多次,而且隔几天就有服务器自动重启了,这表明的服务器的状态已经非常不正常了,得到这么好的机会,当然要主动请求进行调优了。未调优前的服务器GC数据,FullGC非常频繁。

2021-09-24 09:18:05 209

转载 一口气说出 Redis 16 个常见使用场景

目录 缓存 数据共享分布式 分布式锁 全局ID 计数器 限流 位统计 购物车 用户消息时间线timeline 消息队列 抽奖 点赞、签到、打卡 商品标签 商品筛选 用户关注、推荐模型 排行榜 1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String

2021-08-05 09:07:53 172

转载 Spring Boot 中的线程池,这也太好用了!

前言前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了。后面就想到了线程池ThreadPoolExecutor,而用的是Spring Boot项目,可以用Spring提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用。使用步骤先创建一个线程池的配置,让Spring Boot加载,用来定义如何创建一个ThreadPoolTaskExecutor,要使用@Config

2021-06-03 14:26:25 216

转载 一文搞定并发面试题

来源: cnblogs.com/Sinte-Beuve1、Object 的 wait()和notify() 方法下图为线程状态的图:图片Object 对象中的 wait()和notify()是用来实现实现等待 / 通知模式。其中等待状态和阻塞状态是不同的。等待状态的线程可以通过notify() 方法唤醒并继续执行,而阻塞状态的线程则是等待获取新的锁。 调用 wait()方法后,当前线程会进入等待状态,直到其他线程调用notify()或notifyAll() 来唤醒。 调用

2021-05-29 14:59:54 100

转载 电商金额计算的 4 个坑,千万注意了!

前言电商项目开发时肯定少不了金额计算,金额计算时有很多让人坑人的地方,在此记录,以免被坑。1、多精度计算问题多精度不能直接计算,会存在经度缺失的问题。publicstaticvoidmain(String[]args){doublenum1=1;doublenum2=31.2;doublenum3=323.03;System.out.println(num1+num2+num3);/***355.22999999999...

2021-05-26 14:49:05 99

转载 MySQL索引-B+树(看完你就明白了)

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引 Hash 索引 全文索引我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结

2021-05-26 14:34:58 74

转载 InnoDB 中一棵 B+ 树可以存多少行数据?

- 前言 -InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最...

2021-05-26 11:51:06 72

转载 Spring MVC用ResponseEntity返回可实现更强大的功能

今天有粉丝询问胖哥开源微信支付V3开发包Payment Spring Boot下载对账单接口的一些细节,并问我为什么要返回ResponseEntity对象而不是直接返回一个业务实体对象。今天就来统一解答一下并科普一下它的用途。ResponseEntityResponseEntity对象是Spring对请求响应的封装。它继承了HttpEntity对象,包含了Http的响应码(httpstatus)、响应头(header)、响应体(body)三个部分。一个获取用户信息的Spring MVC接口通常我们直

2021-05-26 08:25:19 1143

转载 一次深夜优化,MySQL亿级数据分页的奇妙经历

下班后,愉快的坐在在回家的地铁上,心里想着周末的生活怎么安排。突然电话响了起来,一看是我们的一个开发同学,顿时紧张了起来,本周的版本已经发布过了,这时候打电话一般来说是线上出问题了。果然,沟通的情况是线上的一个查询数据的接口被疯狂的失去理智般的调用,这个操作直接导致线上的MySql集群被拖慢了。好吧,这问题算是严重了,下了地铁匆匆赶到家,开电脑,跟同事把Pinpoint上的慢查询日志捞出来。看到一个很奇怪的查询,如下POST domain/v1.0/module/method?order.

2021-05-25 09:41:32 74

转载 记一次性能优化,单台 4 核 8G 机器支撑 5 万 QPS

来源 |https://segmentfault.com/a/1190000018075241前言这篇文章的主题是记录一次性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。如何优化首先大家要明确的一点是,脱离需求谈优化都是耍流氓,所以有谁跟你说在xx机器上实现了百万并发,基本上可以认为是不懂装懂了,单纯的并发数完全是无意义的。其次,我们优化之前必须要有一个目...

2021-05-25 09:29:44 142

转载 Nginx 常用配置清单

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰富的功能集、稳定性、示例配置文件和低系统资源的消耗受到了开发者的欢迎。本文,我们总结了一些常用的 Nginx 配置代码,希望对大家有所帮助。侦听端口server{#StandardHTTPProtocollisten80;#StandardHTTPSProtocollisten443ssl;#Forhttp2listen44...

2021-04-30 14:11:16 61

转载 你管这破玩意叫 CPU ?

每次回家开灯时你有没有想过,用你按的简单开关实际上能打造出复杂的 CPU 来,只不过需要的数量会比较多,也就几十亿个吧。伟大的发明过去200年人类最重要的发明是什么?蒸汽机?电灯?火箭?这些可能都不是,最重要的也许是这个小东西:这个小东西就叫晶体管,你可能会问,晶体管有什么用呢?实际上晶体管的功能简单到不能再简单,给一端通上电,那么电流可以从另外两端通过,否则不能通过,其本质就是一个开关。就是这个小东西的发明让三个人获得了诺贝尔物理学奖,可见其举足轻重的地位。无论程序员编写.

2021-04-29 10:50:16 57

转载 经过我翻来覆去的思想斗争了一个月,最后做出了一个明智的决定

最近写了几个Spring Boot组件,项目用什么功能就引入对应的依赖,配置配置就能使用,香的很!那么Spring Security能不能也弄成模块化,简单配置一下就可以用上呢?JWT得有,RBAC动态权限更得有!花了小半天就写了个组件,用了一个月感觉还不错。是我一个人爽?还是放出来让大家一起爽?经过我翻来覆去的思想斗争了一个月,最后做出了一个明智的决定,放出来让想直接上手的同学直接使用...

2021-04-27 09:13:10 132

转载 我踩过的Spring Boot统一返回体中的坑

在Spring Boot项目中我们可以通过RestControllerAdvice配合实现ResponseBodyAdvice<T>接口来保证Spring MVC接口具有统一的返回格式,以保证前端同学能够封装统一的数据接收工具。但是很多网上的文章并没有对实际开发中的细节作出更多的讲解。今天胖哥就来分享一下我的一些细节处理,也算作一个总结。 控制作用范围 我记得在前面关于S...

2021-04-26 17:19:47 210

转载 面试官:说说什么是Java内存模型?

在面试中,面试官经常喜欢问:『说说什么是Java内存模型(JMM)?』面试者内心狂喜,这题刚背过:『Java内存主要分为五大块:堆、方法区、虚拟机栈、本地方法栈、PC寄存器,balabala……』面试官会心一笑,露出一道光芒:『好了,今天的面试先到这里了,回去等通知吧』一般听到等通知这句话,这场面试大概率就是凉凉了。为什么呢?因为面试者弄错了概念,面试官是想考察JMM,但是面试者一听到Java内存这几个关键字就开始背诵八股文了。Java内存模型(JMM)和 Java 运行时内存区域区别可大了呢,

2021-04-21 10:29:24 102

转载 让你的代码更加简练,springboot使用JSR303校验

痛点相信不少人写过这样都代码,对方法入参进行了各种校验。上面还是比较少的校验。如果遇到什么邮箱、手机号更复杂,对格式也需要进行校验。可能洋洋洒洒几百行代码就过去了。这种代码其实跟业务流程没有太多关系,但是又不能不做。那么有没有一种方法可以避免呢。当然有!就是JSR-303(JSR是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求,是Java界的一个重要标准)校验规范。JSR-303JSR-303 是 JAVA EE 6...

2021-04-21 09:20:59 76

转载 封装了一个Excel导入加校验的工具,同事们用了都说好

❝ 最近太忙了,刚刚到家赶紧抽空赶一篇,不知道能不能帮到你。 最近在做Excel导入功能,产品要求对导入数据先进行校验然后再入库。于是简单封装了一个工具,结果兄弟们用了都说好,今天就把思路分享出来。 easyexcel 库 我们都知道POI是Java操作Excel的基础库。为了通用性并没有做定制,而且还有一些局限性。经过一番调研决定采用二次封装库easyexcel来进行业务开发。 &...

2021-04-21 09:17:39 357 1

转载 SQL 子查询怎么优化?写的很深!

作者:Eric Fu链接:https://ericfu.me/subquery-optimization/子查询(Subquery)的优化一直以来都是 SQL 查询优化中的难点之一。关联子查询的基本执行方式类似于 Nested-Loop,但是这种执行方式的效率常常低到难以忍受。当数据量稍大时,必须在优化器中对其进行去关联化(Decoorelation 或 Unnesting),将其改写为类似于 Semi-Join 这样的更高效的算子。前人已经总结出一套完整的方法论,理论上能对任意一个查询进行去关联

2021-04-15 09:47:33 956

转载 Java函数式断言接口Predicate的一个小小实践

最近在搞Excel导入,数据校验是少不了的,但是不同的数据字段有不同的校验策略,五花八门的,甚至不确定,没有办法使用JSR303。所以就搞一个校验策略工具,把校验策略抽象出来。这里尝试了Java 8 提供的一个断言函数接口java.util.function.Predicate<T>,非常给力!把校验策略完美地封装了起来。Predicate接口Predicate的应用先来看看效果:booleanvalidated=newValidator<String...

2021-04-14 08:52:09 427

转载 终于搞懂了Java8的内存结构,再也不纠结方法区和常量池了!

java8内存结构图虚拟机内存与本地内存的区别Java虚拟机在执行的时候会把管理的内存分配成不同的区域,这些区域被称为虚拟机内存,同时,对于虚拟机没有直接管理的物理内存,也有一定的利用,这些被利用却不在虚拟机内存数据区的内存,我们称它为本地内存,这两种内存有一定的区别:JVM内存 受虚拟机内存大小的参数控制,当大小超过参数设置的大小时就会报OOM 本地内存 本地内存不受虚拟机内存参数的限制,只受物理内存容量的限制...

2021-04-10 08:44:10 96

转载 别再面向 for 循环编程了,JDK 自带的观察者模式就很香!

大家好,你还在面向 for 循环编程吗?还有谁不会用观察者模式吗?本篇栈长带来《观察者模式》理论及实战~什么是观察者模式?观察者模式(Observer Pattern)定义了对象间的一种一对多的依赖关系,这样只要一个对象的状态发生改变,其依赖的所有相关对象都会得到通知并自动更新。在观察者模式中,发生改变的对象叫做观察目标,而被通知更新的对象称为观察者,一个观察目标对应多个观察者,观察者一般是一个列表集合,可以根据需要动态增加和删除,易于扩展。使用观察者模式的优点在于观察目标和观察者之

2021-04-08 14:52:33 51

转载 RocketMQ快速入门,看这篇就够了~

RocketMQ快速入门,看这篇就够了~原创汪伟俊Java技术迷3天前汪伟俊|作者Java技术迷|出品MQ,是消息队列(Message Queue)的简称,它是一种跨进程的通信机制,作用是传递消息。MQ最常见的场景是用户注册,当用户在某个网站成功注册后,需要发送注册邮件和短信通知,以告知用户注册成功;传统的做法是在用户注册成功后便立马发送邮件和短信,当发送完成后才返回结果给客户端,用户才能够登录。这种做法的弊端是,用户在注册完成之后其实已经可以登录了,没有必要再等待...

2021-04-05 08:43:29 296

转载 SQL 查找是否“存在“,别再 count 了,很耗费时间的!

SQL 查找是否"存在",别再 count 了,很耗费时间的!点击关注 ????Java技术迷昨天来源:https://urlify.cn/aqmAfe根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count目前多数人的写法多次REVIEW代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有

2021-04-05 08:33:27 56

转载 阿里程序员常用的 15 款开发者工具

阿里程序员常用的 15 款开发者工具点击关注 ????Java技术迷昨天来源:阿里巴巴中间件从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:1、工

2021-04-05 08:27:44 121

转载 图解 | 你管这破玩意叫动态规划?

在递归计算 F(9) 时要计算 F(8) 和 F(7),这样 F(8) 在这里重复计算了,浪费了时间。闪客:没错,其实计算新一个阶段的值,只需要一直将其前两个阶段的值保存起来,就可以一直算到最终的结果了。比如定义两个变量 a 和 b 用于存储前两个阶段的值,在计算 F(3) 时。台阶 1 2 3 4 ... 10 走法 a=1 b=2 3 计算 F(4) 时,F(1) 的值就不用保存了,a 和 b 依次替...

2021-03-30 08:59:32 63

转载 了解这些,你真就可以在Spring启动时为所欲为了

如何重构千行“又臭又长”的类?IntelliJ IDEA 几分钟就搞定!【文末送书】点击关注Java技术迷昨天作者| 围军儿来源|juejin.cn/post/6844904038383747086粉丝福利:感谢大家的积极参与,上次送书活动没有中书的朋友请不要灰心,今天的活动继续等着你~这次真不要错过啦~最近在对已有项目进行扩展的时候,发现要改动的一个类它长766行,开放了近40个public接口,我流着泪把它给改完了。为了防止这样的惨剧再次发生在我的身上,我觉得有必要写...

2021-03-30 08:50:55 63

转载 如何重构千行“又臭又长”的类?IntelliJ IDEA 几分钟就搞定!

一个类开放几十个接口,绝对存在职责过多的问题,就像图中的Tom猫一样手忙脚乱,一个类的职责过多也有巨大问题: 违反设计原则——单一职责原则(单一职责原则要求一个类只实现一个职责,比如一只Tom只做扫地、擦桌、拖地中的一件事,而其他事的实现可以转移给史派克狗或肥胖女佣),违反了这个原则会导致发散式变化、发散式修改、类过长等代码问题,还会让你的类难以扩展,甚至会让其他程序猿认为你不专业 发散式变化(指引发此类修改的地方很多),如果一个类的职责很多,那它的扇入(调用者)一定很多,每个调用者的修改都

2021-03-30 08:45:49 83

转载 opentsdb部署与安装

OpenTSDB部署与使用OpenTSDB 是基于 HBase 存储时间序列数据的一个开源数据库,对于存储监控系统采集的数据来说非常合适,不仅在写入查询上有很高的效率,而且节省存储空间。安装 HBase因为 OpenTSDB 的后端存储使用的是 HBase,所以我们需要先安装 HBase。参考文档: Quick Start - Standalone HBase这里简单搭建了

2017-09-08 08:19:18 3562

W3CSchool.chm

各种网页技术,包括:html、js、css、xml

2012-09-12

空空如也

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

TA关注的人

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