- 博客(373)
- 资源 (35)
- 收藏
- 关注

原创 element-ui表格列排序错乱问题解决方案
因为element-ui的排序默认是按照字母顺序排序的,首字母9和首字母8相比,倒序排序首先是9。首字母优先排序,不会考虑到后面小数点的问题。如果我们希望按照数字的大小排序,需要我们自定义。
2023-02-11 09:27:39
3969
1

原创 长篇图解etcd核心应用场景及编码实战
etcd有哪些应用场景?这些应用场景的核心原理是什么?最后不能光动嘴不动手。先搭建一个etcd单机版,再使用java的客户端操作etcd数据。本文旨在帮助大家理解etcd,从宏观角度俯瞰etcd全局,掌握etcd的基本操作技能。后续我还会写一个系列的文章,将每一种应用场景代码化,期待大家关注我和我的公众号:字母哥杂谈。后续计划章节内容如下:《搭建高可用etcd集群》《基于etcd实现分布式锁(java代码实现)》...
2022-08-30 18:40:06
1575

原创 【kafka专栏】目录篇-入门到精通的修炼之道
本专栏主要是面向kafka开发者,介绍kafka的概念、架构、核心原理,并重点介绍开发方法。特点是:系统化、完整的向读者介绍面向kafka的开发体系!
2022-05-17 07:23:46
900
2
原创 高频时序数据的储存与统计方案
在第二步中已经提到,数据量较大时,无法将数据都放在内存中计算,所以考虑采用冷热分层方案,将数据分为三层,每天的冷数据按测点号、时间有序(下文中的所有外存文件存储均采用该序,不再重复说明),用组表存储,因为大表对性能的影响很大,存储成组表有利于提升系统整体性能;第四层,每天的组表冷数据。系统中,用户期望的统计响应延迟为:从20万个测点中任取100个测点,统计频率最高可能每隔若干秒调用一次,从总时间跨度中统计任意一天的数据,预期执行时间在1分钟内,另外还会有少许离线任务,最长的时间段跨度长达一年。
2022-12-26 09:37:27
1931
18
原创 数据源太多,报表工具该如何兼容?
现代应用已经进入多数据源阶段了,不再是一个单一的数据库包打天下,一个应用中会涉及除关系数据库外各种数据源,如文本文件类数据、NOSQL、多维数据库、HTML Webservice等等,即使是关系数据库,也可能不止一个
2022-11-14 10:57:30
5135
13
原创 如何集成开源图表及报表到自研项目中
应用中怎么实现自助报表功能,最难的地方其实是:怎么找一个功能全面且能集成的工具,这个难题解决后,剩下的具体集成对于工程师来说就不算什么难事了,现在难题也被解决了,站在别人的肩膀上不说看的更高走的更远吧,起码能省很多事了,接下来要做的,就是实际集成一次,亲自验证一下看看到底能不能满足自己的需求了。
2022-10-27 08:09:37
7645
20
原创 使用开源计算引擎提升Excel格式文件处理效率
直接基于POI完成Excel文件的处理(特别是查询计算)的开发效率很低。如果针对POI进行封装,形成简单易用的高级读写函数,并额外提供查询计算能力,就能大幅度提高开发效率了。esProc SPL就是其中的佼佼者。
2022-10-13 11:15:45
3771
17
原创 数据批处理速度慢?不妨试试这个
业务系统产生的明细数据通常要经过加工处理,按照一定逻辑计算成需要的结果,用以支持企业的经营活动。这类数据加工任务一般会有很多个,需要批量完成计算,在银行和保险行业常常被称为跑批,其它像石油、电力等行业也经常会有跑批的需求。大部分业务统计都会要求以某日作为截止点,而且为了不影响生产系统的运行,跑批任务一般会在夜间进行,这时候才能将生产系统当天产生的新明细数据导出来,送到专门的数据库或数据仓库完成跑批计算。第二天早上,跑批结果就可以提供给业务人员使用了。
2022-09-27 05:39:17
5146
19
原创 etcd v3版本生产级集群搭建以及实现一键启动脚本
etcd除了搭配k8s进行使用,还有很多其他的应用场景,比如:分布式锁、配置变更通知、分布式系统多节点的leader选举等。所以此文为大家介绍的etcd集群安装脱离k8s,就是在linux服务器上直接安装etcd的高可用服务集群。
2022-09-07 19:38:20
1081
1
原创 [springboot专栏]文件本地上传与提供访问服务
spring boot 为我们提供了使用配置自定义静态文件的位置。配置为与项目代码分离的静态资源路径,即:文件上传保存根路径配置,除了带上Spring Boot默认的静态资源路径之外,加上file:${web.upload-path}指向外部的文件资源上传路径。该路径下的静态资源可以直接对外提供HTTP访问服务。
2022-09-02 06:44:17
1160
2
原创 [springboot专栏]使用redisson实现分布式锁
Redisson是Redis官方推荐的Java版的Redis客户端(Jedis、letture也是官方推荐的java版本redis客户端程序)。它提供的功能非常多,也非常强大,特别是它默认提供的分布式锁支持功能。,包含多个子项目,对于我们本节比较有用的是集成redisson-spring-data-2x之后能够支持Spring Data redis及RedisTemplate。...
2022-08-25 18:38:18
2208
原创 [PostgreSql]生产级别数据库安装要考虑哪些问题?
要知道生产级别的应用安装方式,和自己在练习过程中安装的小玩具相比,要严谨的多,考虑的问题也更多。
2022-08-25 18:15:50
1162
2
原创 用了这跨操作系统远控软件,我再也不出差了
有的时候需要一边调试问题,一边和用户沟通,需要在个人主机和服务器之间不断的切换,造成了很大的沟通麻烦。并且由于终端产品大多数都是linux 系统,导致很多在windows上的产品都无法进行使用。所以很多时候都需要开发人员每一年都在四处奔波,来往于各地出差进行实地调试。
2022-08-24 06:08:52
8605
45
原创 延时任务(三)-基于redis zset的完整实现
所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消。这两种方法都有一个缺点:都是基于单体应用的内存的方式运行延时任务的,一旦出现单点故障,可能出现延时任务数据的丢失。所以此篇文章给大家介绍实现延时任务的第三种方式,结合redis zset实现延时任务,可以解决单点故障的问题。给出实现原理、完整实现代码,以及这种实现方式的优缺点。
2022-08-22 08:18:39
3266
84
原创 延时任务-基于netty时间轮算法实现
为了大家能够理解下文中的代码,我们先来简单了解一下netty时间轮算法的核心原理时间轮算法名副其实,时间轮就是一个环形的数据结构,类似于表盘,将时间轮分成多个bucket(比如:0-8)。假设每个时间轮轮片的分隔时间段tickDuration=1s(即:指针经过每个格子花费时间是 1 s),当前的时间bucket=3,那么在18秒后需要被执行的任务需要落到((3+18)%8=5取余运算)的5号bucket上。假如有多个需要在该时间段内执行的任务,就会组成一个双向链表。...
2022-08-18 18:37:53
836
原创 [springboot专栏]RedisLockRegistry实现分布式锁
org.springframework.integration.redis.util.RedisLockRegistry的核心源码非常简单,就RedisLockRegistry这一个类。前提项目里面已经正确的集成了spring-boot-starter-data-redis,参考本专栏前面文章《单例、哨兵、集群模式整合》使用RedisLockRegistry完成获取锁、加锁以及完成业务之后的释放锁的操作。这种实现使用上非常简单,但是笔者不建议使用这种方式,有几个原因。...
2022-08-18 17:21:33
2336
2
原创 [springboot专栏]redis分布式锁实现及常见问题解析
在我们写Java程序的时候,多线程争取同一个资源的时候,经常会使用到诸如syncchronize或Lock来实现锁操作,这种锁通常被称为“本地锁”。但是本地锁只能适用于在同一个进程内(同一个应用内的线程之间锁定资源),如果应用是分布式部署的,彼此之间是独立的进程,进程之间又存在需要争夺的资源,那么该如何对资源进行锁定?这就需要使用到分布式锁。其实分布式锁和本地锁的基本原理是一样的,举个例子:上厕所4人去上厕所,厕所只有2个坑位先到坑位的人先占,占有后锁门(也就是上锁)后到的人...
2022-08-17 17:46:01
798
2
原创 完整实现-通过DelayQueue实现延时任务
需要说明的是,这里的while-true循环的延时任务处理是顺序执行的,在订单并发量比较大的时候,需要考虑异步处理的方式完成订单的关闭操作。使用DelayQueue实现延时任务非常简单,而且简便,全部都是标准的JDK代码实现,不用引入第三方依赖(不依赖redis实现、消息队列实现等),非常的轻量级。BlockingQueue即阻塞队列,java提供的面向多线程安全的队列数据结构,当队列内元素数量为0的时候,试图从队列内获取元素的线程将被阻塞或者抛出异常。说明我们的实现是正确的。小概念:什么是延时任务?...
2022-08-17 17:25:35
1010
2
原创 数据分表Mybatis Plus动态表名最优方案的探索
Student 实体类与student表是一一对应的关系,如果我们希望将学员表按照月份进行分表,比如:student_202206、student_202207、student_202208,即产生了**「一个实体类及其Mapper需要操作多个数据库分月表,这种情况在Mybatis plus下我们该如何操作数据呢?这说明我们的动态表名实现是成功的。大家在使用Mybatis进行开发的时候,经常会遇到一种情况:按照月份month将数据放在不同的表里面,查询数据的时候需要跟不同的月份month去查询不同的表。..
2022-08-12 07:14:07
2287
7
原创 流式结构化数据计算语言的进化与新选择
JAVA开发中经常会遇到不方便使用数据库,但又要进行结构化数据计算的场景。JAVA早期没有提供相关类库,即使排序、分组这种基本计算也要硬写代码,开发效率很低。后来JAVA8推出了Stream库,凭借Lambda表达式、链式编程风格、集合函数,才终于解决了结构化数据计算类库从无到有的问题。...
2022-08-11 06:27:23
3262
52
原创 web项目访问引用jar内部的静态资源
web项目访问引用jar内部的静态资源,在Servlet3协议规范中,包含在JAR文件`/META-INFO/resources/`路径下的资源可以直接访问。
2022-08-09 10:53:01
957
原创 [开源项目]可观测、易使用的SpringBoot线程池
在开发spring boot应用服务的时候,难免会使用到异步任务及线程池。spring boot的线程池是可以自定义的,所以我们经常会在项目里面看到类似于下面这样的代码),方便集成到Spring Boot项目里面去。。需要说明的是:zimug-monitor-threadpool并未改变SpringBoot线程池的实现,只是在其基础上添加了初始化阶段的配置自动化加载,运行时的状态监控。所以任何有关Spring Boot线程池运行时性能的讨论,都与本文及其实现无关。...
2022-08-08 12:37:35
1103
5
原创 还在纠结报表工具的选型么?来看看这个
还是那句话,如果有个功能无穷好,价格无穷低的产品,那选型当然就不用纠结了润乾报表就是接近这个理想的存在,它的功能接近无穷好,因为它一直是行业的功能标杆,它的价格也接近无穷低,因为它一年3W就可以不限数量、节点的去使用最高版本,平摊下来单套的成本可能都不过百功能全面、低价透明的润乾,已经逐渐让大家都形成了一种共识选报表,就按着润乾报表的功能和价格去选就行了,报表工具的选型,再也没什么好纠结的了。...
2022-08-01 08:27:06
3029
99
原创 双维有序结构提速大数据量用户行为分析
用户分析(或帐户分析),是指对用户、帐户明细数据进行统计分析计算。常见的有用户行为分析、银行帐户统计、漏斗转化率、保险单分析等等。这类场景涉及众多用户的历史数据,总数据量巨大(几千万甚至上亿),需要外存;而每个用户的数据量相对较小(几条到几千条)。用户分析经常是在线计算的,要即时得到结果,对计算速度要求很高。需要深入分析这类场景的计算和数据特征,并以此为依据选择合适的优化算法,从而达到最佳性能。用户分析的特征之一一般都要对时间维度做过滤。全部数据涉及时间跨度较长,但过滤后数据的对应时间跨度相对不大。...
2022-07-25 04:50:08
3984
44
原创 效率低?响应慢?报表工具痛点及其解决方案
许多朋友曾和我诉苦:使用报表工具不就是为了解决手工开发报表效率低、困难多等这些让人头痛的难题的吗?怎么用了大牌工具还会头痛,是功能不行解决不了这些问题?**不,并不是,因为用错了报表工具,或者没有用对姿势。...
2022-07-20 04:26:46
4884
122
原创 [springboot专栏]利用redis实现集群多节点应用session共享
因为我们在同一台机器上启动多个实例,ip相同所以session是共享的。如果你在不同的服务器上启动多个实例(IP)不同,你需要在应用前方加上负载均衡逆向代理才可以实现session共享。但cookies是可以跨域共享的,但是不能跨域名(IP)共享。在启动类上方加上注解,启动SpringSession管理应用的session,并设置session数据的有效期30分钟。为了实现验证一个应用的多个实例的session共享,我们启动多个服务实例。做好上文的配置之后,并加入如下的测试代码,后文测试的时候会用到。...
2022-07-14 20:15:40
1299
5
原创 【kafka专栏】使用KafkaTool(Offset Explorer)可视化工具管理kafka集群
在专栏前面的内容中,我都是使用命令行的方式来操作管理kafka,下面给大家推荐一个简单便捷的小工具KafkaTool(目前改名叫做OffsetExplorer)。该工具面向个人使用是免费的,根据自己的操作系统类型直接下载安装即可。......
2022-07-14 19:47:12
2018
原创 【kafka专栏】安全认证之SCRAM动态用户管理的方式
PLAIN认证在实际的生产环境中很少被使用,因为用户名密码是在配置文件里面写死的,所以无法动态的新增或删除用户。在实际生产环境中,这是不太能接受的,生产环境不能因为你需要新增或删除用户就重启。那么下面我们为大家介绍的SCRAM认证方式就是非常常用的安全认证方式,它支持动态新增或删除用户。.........
2022-07-13 19:35:09
1604
1
原创 【kafka专栏】安全认证之SASL_PLAINTEXT用户名密码方式
在本专栏之前的文章中,安装kafka没有添加任何安全认证方式,这样是不安全的。因为任意的kafka生产者及消费者客户端只要知道kafka服务的ip、端口就可以向kafka生产数据或者从kafka消费数据。所以我们需要为kafka服务添加认证方式,此文就为大家介绍最简单的认证方式:SASL_PLAINTEXT用户名密码认证方式。.........
2022-07-12 20:14:06
1885
原创 【kafka专栏】Spring kafka的JSON日期序列化Long类型问题解决方案
解决问题:Spring kafka采用JSON序列化方式过程中的日期序列化问题。
2022-07-12 16:38:06
782
原创 【小程序专栏】总结uniapp开发小程序的开发规范
遵循Vue 单文件组件 (SFC) 规范、组件及接口规范、全局样式与局部样式、尺寸响应式、字体的使用、请使用flex布局方式
2022-07-11 09:44:17
10033
87
原创 【kafka专栏】spring kafka处理反序列化异常(毒丸)及消费过程异常
spring kafka处理反序列化异常(毒丸)及消费过程异常
2022-07-10 17:57:05
2169
原创 【kafka专栏】Spring kafka监听器模式配置自动、手动、单条、批量消费的使用
* Spring Kafka监听器模式(`spring.kafka.listener.type`配置属性)有两种:single - 监听器消息参数是一个对象;batch - 监听器消息参数是一个集合。* 消费者偏移量提交的方式:自动提交、手动提交
2022-07-10 17:47:48
2837
2
原创 【kafka专栏】SpringBoot下`@KafkaListener`消费监听属性详解
KafkaListener有若干的配置属性,这些配置属性使用或者是结合使用,可以方便快捷的帮助我们实现kafka消费者数据监听的需求。这里的属性比较多,先大概了解一下,后续我会介绍。通常我们会把消费者监听的主题,消费者组名称,消费者组中消费者数量等常用信息做成自定义配置(而不是在代码中写死),如下所示:下面的消费者监听器监听了两个topic:topic-a,topic-b(使用SpEL表达式逗号分割为字符串数组),该消费者组命名为group-demo,包含5个消费者线程并行消费。三、指定Topic分区
2022-07-09 20:22:26
4237
4
原创 【kafka专栏】Spring kafka消息发送事务处理
在《幂等与事务处理的》的文章中,我们已经为大家介绍使用apache kafka原生API 如何保证:数据被发送Exactly One,发送一次并且只发送一次,不重发不漏发。幂等性的设置仍然很简单,只需要将生产者客户端参数设置为true即可。本文主要为大家介绍下在SpringBoot环境下结合Spring kafka如何实现幂等性和事务的处理。我们看下面的一段代码,使用向kafka发送数据,但是发送数据之后方法内部抛出了异常。假如我们的代码含义是下面的这样的订单支付未成功,可能用户余额不足,抛出异常。但是向
2022-07-09 20:00:16
1025
原创 【kafka专栏】SpringBoot-kafka同步异步生产数据以及拦截器分区器配置
KafkaTemplate的Send方法,最简单的使用方式就是传递一个Topic名称,传递一条数据使用send方法发送数据。在Spring KafkaTemplate的send()方法还支持其他参数,具体如下:上文介绍的使用send方法的方式,发送之后就不再等待服务端对该消息的确认,如果出现异常生产者客户端不会有任何的感知。为了能够使生产者能够感知到消息是否真的发送成功了.........
2022-07-08 19:58:42
949
原创 【kafka专栏】SpringBoot整合kafka客户端实现生产消费
如果需要在Spring Boot项目中集成kafka客户端,首先需要引入下面的maven坐标。Spring Boot的版本与kafka对应关系,如:https://spring.io/projects/spring-kafka
2022-07-08 19:49:54
1509
原创 [springboot专栏]缓存雪崩、穿透、击穿的代码级解决方案
正常情况下,我们去查询数据大部分都是存在的。如果请求去查询一条压根儿数据库中根本就不存在的数据,也就是缓存和数据库都查询不到这条数据,但是请求每次都会打到数据库上面去,造成对后端数据库的较大压力。这种查询不存在数据的现象我们称为缓存穿透。(有可能会是某些不法份子的恶意行为,多线程打满去向服务查询不存在的数据)解决办法在平常高并发的系统中,大量的请求同时查询一个 key 时,此时这个key正好失效了,就会导致大量的请求都打到数据库上面去。这种现象我们称为缓存击穿。...
2022-07-08 07:45:33
1442
25
原创 [springboot专栏]整合EhCache实现单服务缓存
在Spring框架内我们首选Spring Cache作为缓存框架的门面,之所以说它是门面,是因为它只提供接口层的定义以及AOP注解等,不提供缓存的具体存取操作。缓存的具体存储还需要具体的缓存存储,比如EhCache 、Redis等。Spring Cache与缓存框架的关系有点像SLF4j与logback、log4j的关系。...
2022-07-08 07:17:48
542
java8-集合元素归约.pdf
2022-07-10
java8-Stream元素的匹配与查找.pdf
2022-07-10
Kubernetes修炼手册 ((英)奈吉尔·波尔顿(Nigel Poulton)) .epub
2022-07-02
使用Oracle 官方JDK11构建docker镜像的Dockerfile及源文件
2022-04-03
Screenshot_2022-03-21-11-01-24-639_net.csdn.csdnplus.png
2022-03-21
kafka单机版自动安装shell脚本
2022-02-19
HTTP 超全汇总.pdf
2020-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人