- 博客(39)
- 收藏
- 关注
原创 通过filebeat实现对docker服务的通用日志收集
通过filebeat实现对docker容器的日志收集,并按照服务进行切割展示,以便多主机实例集中展示。
2024-04-24 11:12:03 2487 1
原创 JAVA POI Excel 使用数组公式 FREQUENCY
有时候我们希望导出的excel能够包含一些基本公式,普通的单个公式如 SUM, COUNT等直接在cell单元格设置即可,如下代码但对于一些特殊公式如FREQUENCY这样需要一组公式共同完成结果集的,需要额外设置才能获取对应结果。
2024-04-08 16:56:22 440
原创 应用缓存与同机部署的Redis缓存性能对比
有相当一部分开发同学认为,有了Redis就没必要使用应用缓存。这其实是相当错误的观念。为了验证,我通过基于JMH基准测试工具,对应用内存操作及同一台机器上的Redis进行操作进行性能对比。通过实际结果来展示两者的性能差距。
2023-04-29 03:14:04 258
原创 druid报错 discard long time none received connection
druid报错 discard long time none received connection
2023-03-31 14:38:45 7344 1
原创 多维度实时排行榜
说起实时排行榜,最先能想到的方案就是这个,该方案无序额外依赖其他组件,只以日榜的维度来看,该方案能支撑的流水数最多也就百万级别,超过这个级别很可能对数据库造成严重的计算压力,甚至影响其他业务sql的执行。
2022-12-15 22:09:53 487
原创 apache.ibatis.binding.BindingException: Parameter ‘param1‘ not found. Available parameters are [et]
org.apache.ibatis.binding.BindingException: Parameter 'param1' not found. Available parameters are [et]
2022-10-29 15:54:24 1932
原创 基于Redis的分布式锁及看门狗机制的分析
原理分布式锁要满足 互斥,防死锁的基本要求。进一步要求 可重入(非必要,但重要),高效。Redisson下的实现以下源码阅读基于 redisson:3.12.0标记资源及占有者特定资源对应的key设置到可访问的redis,并配置一定的超时间和能表示占用者的value(该值可用ObjectId或者类雪花算法,及其他能全局唯一标识线程的算法)。value主要用于帮助实现可重入特性。Redison中简单的使用了UUID作为连接管理器的全局唯一标识,再结合本机的线程id,全局唯一标识线程
2022-02-21 11:38:11 4029
原创 mysql何时进行分表分库?
为何要对Mysql进行分表分库单表性能不足以支撑业务场景.存储空间不足.单库单表在记录达到一定程度时性能会极速下降.服务可靠性.除了第3点,其他都比较好理解.为何记录数多会导致单表性能下降此处以Mysql的InnoDB引擎的基础上讲解.InnoDB的索引采用B+Tree,结构如下:非叶子节点不存放数据,数据只存放与叶子节点.这种结构的查询速度稳定,IO次数在树干能被完全加载到内存时,只需要1次,性能非常好.但性能问题也出现在此处.如果Mysql服务的内存不足以完全加载树干(非叶
2021-06-26 23:26:37 225
原创 ant路径匹配及对应正则实现
总结ant风格的路径匹配就是通过独特的匹配符简化路径匹配。ant风格的匹配符ANT通配符有三种:通配符说明?匹配任何单字符,必须要有1个*匹配0或者任意数量的字符**匹配0或者更多的目录栗子:/home:f.a fa.a ff.a single sub sxngle./sub:a.file./sub/ssb:a.file./sub2:a.fileURL说明结果/home/*.a
2020-11-16 11:50:29 1665
原创 MongoDB 以json执行命令及原理分析
背景描述最近参加了公司的一个效能平台的开发,用到了MongoDB。由于不想频繁提交sql执行工单,因此弄了个sql执行的后台。使用Spring data框架携带的Mongodb工具,org.springframework.data.mongodb.core.MongoTemplate的executeCommand(String jsonCommand)作为执行的核心方法。但是做了大量的查询,也没找到对应操作如何以json去执行,为此做下记录。注意版本spring-boot-1.5.8.RELEA
2020-11-14 11:37:52 1794 2
原创 kafka高可用的措施
高可用系统通常会遇到下列问题元数据维护。数据持久化。数据同步。数据一致性。故障恢复。主备切换(某节点故障可自动切换为其他节点)。扩容。数据写入策略。下面就从这些问题入手,去探索kafka如何保证高可用。术语解释ARAssigned Repllicas指派的副本集合。分区中的所有副本统称为AR。ISRIn-Sync Replicas同步副本集。所有与leader副本保持一定程度同步的副本(包括Leader)组成ISR(In-Sync Replicas),ISR集合是AR集合
2020-10-18 23:34:31 1263
原创 基于Spring的FactoryBean接口,根据不同线程id返回不同对象
原理FactoryBean就是Spring容器中,用来专门生成Bean的一种特殊的Bean.主要是针对配置文件的表达能力有限应运而生的.在Spring MVC的特殊Scope的Reqesut就是通过实现FactoryBean从而达到每个请求生成的都是不同的对象.例子import lombok.Data;import org.springframework.beans.factory.FactoryBean;import org.springframework.context.annotatio
2020-10-08 23:55:46 275
原创 JAVA LinkedBlockingQueue详细分析
java.util.concurrent.locks.AbstractQueuedSynchronizer是JUC(Java Util Concurrent)中非常重要的类.其实现了同步锁的基本框架.
2020-10-01 15:17:56 3152
原创 Spring BeanPostProcessor,InitializingBean的作用及执行时机
以下源码基于 Spring 5.2.8.RELEASE 版本.BeanPostProcessor有2个方法,分别是在自定义初始化之前和之后执行的行为.InitializingBean只有一个方法,用于BeanFactory完成属性设置之后,执行自定义的初始化行为.postProcessBeforeInitialization方法会在Bean被Spring容器初始化时使用(在被管理的对象实例化后,由Spring容器进行的注入过程).看下Bean初始化的方法:// Spring容器初始化bean
2020-09-25 20:21:12 1564
原创 接口幂等性 常用场景简述
幂等性幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。个人理解: 幂等就是产生的结果不受执行次数影响.举栗:public class Customer{ private Integer id; public Integer
2020-09-18 20:13:13 727
原创 redis 在生产环境下执行keys的危害
问题描述最近碰到一前同事在群里聊天,说在因为错误使用keys导致生产事故,下面是他的自白(事件回顾):问题分析为什么测试,灰度环境使用keys没有导致任何问题,而到生产环境会导致服务挂了呢?这个问题首先得从keys这个命令说起。先看下官方对这个命令对说明:Available since 1.0.0.Time complexity: O(N) with N being the number of keys in the database, under the assumption th
2020-09-11 18:16:37 1744
原创 Mysql转移表
问题描述在日常运维中,会需要将表转移,包括不限于的原因:原表碎片率过高影响插入查询性能;数据量过大(行数太多);修改表结构但原表太大,想减少影响;操作步骤因此可能需要通过中间表先修改好结构;将原表数据倒入;修改表名替换原表;再2,3步之间插入但数据导入到新表;以 app_home_productlist_view表为例子:# 创建新表CREATE TABLE app_home_productlist_view_2 like app_home_productlist_view;#
2020-09-07 15:50:47 166
原创 java LocalDateTime序列化到redis报错
问题描述在使用spring的缓存框架时,利用redis做缓存时,试图序列化某个属对象打印出以下错误:org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Cannot construct instance of java.time.LocalDateTime (no Creators, like default construct, exist): cannot deserializ
2020-09-01 18:24:01 967
原创 Mysql InnoDB 出现 Waiting for table metadata lock
问题描述今日新版代码上线,需要对数据表修改,新增一列。虽然存在很多加锁事务,但是表并不大,占用空间和行数如下:因此没有考虑其他措施,决定直接通过DDL (ALTER TABLE xxx ADD COLUMN …)进行在线改表。然后就盯着ALTER但sql但执行时间一直增加,直到超过60秒,开始感觉事情有些蹊跷。按照过往经验,15w行的数据量,增加小字段是很快的,10秒足以。show PROCESSLIST;查看正在执行的会话,发现有很多state为Waiting for table met
2020-08-31 11:30:12 516
转载 转载 Git鲜为人知的四个命令:bisect,blame,reflog和提交范围
转载 Git鲜为人知的四个命令:bisect,blame,reflog和提交范围虫虫搜奇发布时间:18-04-2807:00科技达人,优质创作者现在每个人都在学编程,可能你就是正在成为百万码农大军中的一个。好吧,就算你没有,那么你也可能在你的日常工作中使用版本控制系统(也不是…好吧,那就忽略上面的两句话)。做版本管理最流行的工具是Git,什么,你是SVN!好吧,遇到杠精,老子也是服了!关于Git你可能用过,也知道基础知识,比如git add,git commit,git push,git pu
2020-08-28 14:22:41 343
原创 分布式锁及实现
基于ZooKeeper的分布式锁实现准备工作# 准备zookeeperdocker pull zookeeper:zookeeper@3.6# 根据官方的stack.yml文件 https://hub.docker.com/_/zookeeper 启动3个zk容器docker stack deploy -c stack.yml zookeeper代码实现emm先贴一下,之后再改,见谅.import org.apache.zookeeper.*;import org.apache.zoo
2020-08-24 00:37:56 132
原创 PC,移动端分页
概述在实际开发中,我们必然会遇到分页.传统的pc端分页,我们会通过传递2个参数pageNo(假设1表示第一页), pageSize去控制具体的分页号及大小.PC端分页以下我们以该表为例:create table users ( id int unsigned not null auto_increment, name varchar(8) null, age tinyint null, primary key (id)) engine = InnoDb;写过S
2020-07-07 23:47:56 634
原创 RabbitMQ 延迟队列实现
在开发中,我们经常会遇到需要延时任务,定时任务的时候.最初对任务精度要求不到,可以容忍一定的损耗时,最常用的是linux系统自带的crontab上实现的定时任务.而其只能精确到分钟,只能适用于一些粗粒度的场景.当然实现定时任务的方法很多,该文章主要是通过RabbitMQ来实现延时任务,定时任务.
2020-05-30 22:09:38 271
原创 修改商品信息的处理及思考
商品信息快照商城中,经常要对商品信息进行修改,这会影响到已存在的信息.如何保证商品信息的修改不对已有信息影响呢?常见方式就是快照.也就是一条商品记录的不同版本记录.在数据库表中,我们对记录商品信息的记录增加个版本字段 version,该字段有与没有并不影响结果,只是为了方便观察和历史追溯.原始表数据:如果在此时,我们想修改商品信息,比如改个名字,原来所执行的sql为:update...
2020-02-23 14:52:08 1699
原创 JS保留指定位数的小数的方法
四舍五入式1. toFixed(位数)let a = 12345678.12345678a.toFixed(7)"12345678.1234568"取整式1. 转换成字符串// 保留2位小数let a = 12345678.12345678let b = a.toString()b.substring(0, b.indexOf('.')+3)*12. 利用Math的取整...
2020-02-23 13:58:01 1178
原创 Mybatis懒加载时,springMVC返回JSON异常 Could not write JSON: No serializer found for class org.apache.ibatis.
Mybatis懒加载时,springMVC返回JSON异常 Could not write JSON: No serializer found for class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl最近在开发项目的时候,遇到这个问题.以下是...
2020-01-15 00:39:03 389
原创 问题: MyBatis:There is no setter for property named 'xxx' in 'class
MyBatis:There is no setter for property named ‘xxx’ in 'class如果在使用过程中碰到这个错误信息,2个可能:确实没有写对应属性的setter方法.属性名写错了,因为 mybatis 是使用字符串来映射的,idea无法关联,很容易写错,并且没有意识到.比如说:又比如说:...
2020-01-14 23:23:09 3750 1
原创 java java.util.concurrent.ThreadPoolExecutor 的翻译及解析
java.util.concurrent.ThreadPoolExecutor 应该是在java中创建线程使用最多的方式了. 因此对于这个类的实现和坑我们就需要了解的更加细致.
2020-01-03 18:32:54 6433
原创 Redis协议规范
译文Redis协议详细说明 (Redis Protocol specification)RESP可以序列化不同的数据类型,如整数(integers),字符串(strings),数组(arrays)。它还使用了一个特殊的类型来表示错误(errors)。请求以字符串数组的形式来表示要执行命令的参数从客户端发送到Redis服务器。Redis使用命令特有(command-specific)数据类型作为...
2019-12-25 08:19:22 284
原创 Failed opening the RDB file root (in server root dir /etc/cron.d) for saving: Permission denied
问题描述最近在自己的server上的redis命令行碰到set key错误的问题,返回结果如下:set a 1(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set...
2019-12-24 11:02:29 15506 7
原创 输入url后浏览器干了啥?
浏览器输入url后都干了些什么?主要知识点主要流程详细分析1. URL解析2. DNS查询3. 与服务器建立tcp连接4.下载url对应的资源5. 渲染html页面这是个在面试中可能碰到的问题.这个问题是比较开放的,根据自身的情况,能说多少是多少,说得越多,说的越细,面试官对你的评价就会越高.当然,前提是不能有什么大错.该问题涉及多个知识点,并且每个知识点还可以继续深入.由于每块内容都可以...
2019-12-24 09:41:42 160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人