自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序新视界

每一步成长都与你分享。公众号:程序新视界

  • 博客(889)
  • 资源 (11)
  • 问答 (4)
  • 收藏
  • 关注

原创 《Drools 规则引擎视频教程》相关事宜

非常感谢大家能够有时间来看这篇博客,本篇博客主要介绍一下最近本人正在致力于的Drools 7 规则引擎文档和视频教程相关事项。Drools 本身在国内的技术网站上的资料就比较少,最近的视频教程更是几乎没有。本人最近一段时间正在致力于文档编写(已经完成过半)和视频的录制。同时,博客的编写发表也在同步进行。后期会根据项目中的时间录制实战教程。欢迎大家多多支持。文档、博客、Github代码完全免费开放,视

2017-08-12 10:38:45 13287 15

原创 最强Markdown编辑器Typora,基于picgo和阿里云OSS图床教程

关于Typora的下载就不多说了,我们先直接来安装下载PicGo图床上传工具。在Typora中,关于PicGo的下载和安装有多种形式,可打开其【偏好设置】,点击左侧边栏的【图像】选项,在右边内容面板可看到上传服务。与PicGo相关的有两个选项,一个是【PicGo Core (command line)】,一个是【PicGo (app)】,还有【Custom Command】方式,本文主要讲解第三中方式。无论Typora或PicGo都支持Mac或Windows操作系统,这里以Mac OS为例进行安装演示。

2023-01-17 07:28:24 37

原创 select for update是行锁还是表锁,还真得看情况

对于软件或框架来说,特别是在有大版本更新的情况下,脱离了具体版本的结论往往是无意义的。此时,数据库一共加了8把锁,一把表级别的IX意向排他锁,6把基于主键的针对数据记录(总共6条)的X锁,一把针对记录的supremum pseudo-record锁。通过上面的结论,我们可以看出,并不是简单的说“有索引就是行锁,无索引就是表锁”,因为在事务隔离级别为RC时,无索引,同样表现(被优化)为行锁。此时,可以看到四把锁,一把表级别的IX锁,一把基于普通索引的X排他锁,一把基于主键的行级排他锁,一把基于普通索引的。

2023-01-16 09:39:31 601 2

原创 Spring获取Bean的9种方式

随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean。比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean。本文为大家整理汇总了常见的获取Bean的方式,并提供一些优劣分析,方便大家在使用到时有更好的选择。同时,也会为大家适当的普及和拓展一些相关知识。

2023-01-13 09:16:03 110

原创 不懂Nacos没关系,可以看看它是怎么运用代理模式的

在上述测试类中,先创建了被代理类的对象,然后通过Proxy的newProxyInstance方法构建了代理对象,生成的代理对象实现了目标类的所有接口,并对接口的方法进行了代理。本文从Nacos中的静态代理模式实现,延伸拓展讲解了代理模式的定义、代理模式的运用场景、静态代理模式、动态代理模式、Cglib动态代理、Spring中AOP所使用的代理等。第三步,定义代理类。通常情况下,一个代理类代理一个委托类,但在Nacos中,代理类实现了区分到底是临时实例还是永久实例的逻辑,因此代理类同时代理了上述两个委托类。

2022-12-26 09:11:52 295

原创 Docker踩坑,又涨知识了

但笔者又遇到另外一个问题,就是Docker中应用的日志,由于之前的失误默认通过root用户创建的,此时使用了testuser来启动应用程序,发现Docker无法启动,原因很简单testuser启动的应用无法向root创建的日志文件写日志。而问题的排查过程也很有意思,不仅涉及到了Docker的操作命令,也涉及到了Linux的一些基础知识,知识和技能就是在出现问题、解决问题的过程中增长的。既然找到问题的原因解决起来就比较容易了,下面记录一下解决问题及涉及到的一些Docker命令和Linux操作。

2022-11-18 09:12:29 7787 3

原创 扒去Spring事件监听机制的外衣,竟然是观察者模式

Spring中提供了一套默认的事件监听机制,在容器初始化时便使用了这套机制。同时,Spring也提供了事件监听机制的接口扩展能力,开发者基于此可快速实现自定义的事件监听功能。Spring的事件监听机制是在JDK事件监听的基础上进行的扩展,也是在典型观察者模式上的进一步抽象和改进。所以,结合Spring的事件监听机制与观察者模式来学习,可以达到理论与实践的完美融合。本篇文章就以观察者模式和Spring事件监听机制作为切入点,结合具体的实例来对两者进行系统的学习和实践。观察者模式是一个典型的发布-订阅。

2022-11-15 09:07:11 179

原创 Mac OS中Git版本更新(亲测有效)

原本系统中装Git,但版本比较老,已经无法支持最新的IDEA 2022版本,那么如何将Git版本进行更新呢?但如果去通过其他形式安装的,则需要先通过Homebrew进行安装,安装完成之后,再进行链接操作。安装完成之后,查看版本,会发现依旧是原来的版本,需要通过上述命令进行链接。首先,如果在Mac系统下未安装Homebrew,可先参考官网进行安装。可在使用Git的项目中进行操作,看是否影响到原来的Git项目管理。显示路径与原来的Git安装路径一致。此时安装的便是基于Homebrew最新版本的Git。

2022-11-02 13:16:15 871

原创 一台机器下,多个Java版本的粗放与精细管理

在软件开发过程中,经常会遇到“古老”的项目,这些项目的JDK还处于Java 6、Java 7甚至更早的版本。同时,在学习新的JDK特性时,往往又需要安装最新版本的JDK。鉴于这些情况,我们就需要在在本机环境中安装多个JDK,并且能够方便的切换。本篇文章以Mac OS操作系统为例,演示一下如何安装多个JDK版本,并且进行切换。这里重点介绍两种方式,基于别名的形式和基于jenv软件的形式。

2022-11-02 09:04:37 157 2

原创 代码中被植入了恶意删除操作,太狠了!

表中是用于存储触发定时任务的表达式,到这里也就明白了,为啥前面的业务跑不起来,全部是中间态了。在文件的修改时间上还真找到了一些问题,发现在打镜像的两个小时前,项目中一个多个项目底层依赖的jar包被修改过,另外还有两个class文件被修改过。事情是这样的,一老板接手了一套系统,可能因为双方在交接时出现了什么不愉快的事情,对方不提供源代码,只是把生产环境的服务器打了一个镜像给到对方。找到了问题的根源,解决起来就不是啥事了,由于没有源代码,稍微费劲的是只能把原项目整个反编译出来,然后将改修改地方进行了修改。

2022-09-06 09:05:38 178 1

原创 Linux下如何配置普通用户的sudo命令权限?

读完这篇文章的朋友,现在你已经解锁了新的、更方便的命令。如果你的用户在切换时,如果出现”不在 sudoers 文件中“的警告信息,那么核查一下,对应的用户应该没有在该文件中进行配置,因此也无法使用。此时切换到test_user用户,执行需要root权限的命令时,前面添加sudo即可。参考ubuntu用户的配置,将需要提升权限的用户(比如test_user)添加到。,即以超级用户(root 用户)的方式执行命令。需要注意的是只有root用户有该命令的执行权限。如果普通用户并未进行配置相应的配置,则在使用。..

2022-08-04 08:58:43 2569

原创 SpringBoot:如何优雅地进行响应数据封装、异常处理?

本篇文章介绍了基于SpringBoot的实现,如果你的项目中采用了其他的技术栈,则可考虑对应的处理方式。像上面的示例,用200表示返回成功,这就是遵循HTTP响应状态码的形式来返回,比如还有其他的400、401、404、500等。在上述方法中,对一些常见的异常进行了统一处理。通常情况下,根据业务需要还会定义业务异常,并对业务异常进行处理,大家可以根据自己项目中异常的使用情况进行拓展。在此,笔者暂不评论每种形式的好坏,只列举了常规的几种形式,大家了解对应的情况,做到心中有数,有所选择即可。...

2022-08-03 09:01:06 251

原创 Spring Boot + EasyExcel导入导出,简直太好用了!

在EasyExcel执行write方法之后,获得ExcelWriterBuilder类,通过该类的registerWriteHandler方法可以设置一些处理策略。/***设置单元格样式(仅用于示例)**@return样式策略*///表头策略//表头水平对齐居中//背景色//自动换行//内容策略//设置数据允许的数据格式,这里49代表所有可以都允许设置//设置背景色该类中示例设置了Excel的基础格式。/**/**...

2022-08-01 07:13:06 1985

原创 为了实现CI/CD,先来定制一个Docker镜像【实战精华篇】

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。常见的指令比如有FROM、RUN、ADD、COPY、CMD、ENV等。在镜像构建时,需要注意的一点是镜像的构建是一层层构建的,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。像上面提到的指令,每一次操作都会构建一层。比如删除前一层的文件,在最终容器运行时,虽然看不到这个文件,但是实际上该文件会一直跟随镜像。&&将其合并成一条。...

2022-07-29 07:08:13 383 4

原创 Linux安装Docker完整教程

当然,如果对Docker感兴趣的话,可以直接根据本文的步骤操作起来。最近接手了几个项目,发现项目的部署基本上都是基于Docker的,幸亏在几年前已经熟悉的Docker的基本使用,没有抓瞎。Docker支持64位版本的CentOS7和CentOS8及更高版本,它要求Linux内核版本不低于3.10。执行一下命令,安装最新版本的DockerEngine-Community和containerd。Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。...

2022-07-28 08:48:36 3848

原创 一篇搞定CAS,深度讲解,面试实践必备

CAS是的缩写,直译就是比较并交换。CAS是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令,这个指令会对内存中的共享数据做原子的读写操作。其作用是让CPU比较内存中某个值是否和预期的值相同,如果相同则将这个值更新为新值,不相同则不做更新。本质上来讲CAS是一种无锁的解决方案,也是一种基于乐观锁的操作,可以保证在多线程并发中保障共享资源的原子性操作,相对于synchronized或Lock来说,是一种轻量级的实现方案。C/C++...

2022-07-22 08:44:36 253

原创 不掌握这些坑,你敢用BigDecimal吗?

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于不需要准确计算精度的数字,可以直接使用Float和Double处理,但是Double.valueOf(String)和Float.valueOf(String)会丢失精度。所以如果需要精确计算的结果,则必须使用BigDecimal类来操作。...

2022-07-19 07:09:42 195

原创 缓存穿透、缓存雪崩、缓存击穿?再也不怕了,你随便问吧

在现代软件架构中,缓存的应用已经非常普及。缓存的使用在面试和实践中都是避不开的硬技能、硬知识,如果你说还不太熟悉缓存的使用,可能都不好意思说自己是程序员。在上篇文章《如果不知道这4种缓存模式,敢说懂缓存吗?》中,我们介绍了缓存使用的四种策略,如果能够结合不同的场景进行灵活运用,你已经超过了大多数人。毕竟,那四种策略,很多开发多年的人可能都没听说过。这篇文章,带大家进一步学习在缓存使用中不得不考虑三个特殊场景:缓存穿透、缓存雪崩、缓存击穿。为什么说不得不考虑?因为如果不考虑这些特殊的场景,在高并发的情况可能直

2022-07-11 07:35:12 461

原创 IDEA 创建Maven Web项目

公司有一个非常老的项目,决定进行简单重构,纳入自动化流水线部署的序列。原项目采用很古老的Jar包依赖模式,也就是直接将jar包放在项目中。同时,项目结构也非常奇特,不是标准的Web项目目录结果。于是,决定基于Idea创建Maven项目,然后将原来的基于lib形式依赖jar包,改为Maven管理,方便后续部署、发布、进一步改造。这篇文章带大家一起通过IDEA创建一个Maven的Web项目。第一步:在IDEA中依次选择File->New->Project:第二步:依次选择Maven,Create from ar

2022-07-08 14:46:40 3456

原创 JDK的一个Bug,监听文件变更要小心了

在某些业务场景下,我们需要自己实现文件内容变更监听的功能,比如:监听某个文件是否发生变更,当变更时重新加载文件的内容。看似比较简单的一个功能,但如果在某些JDK版本下,可能会出现意想不到的Bug。本篇文章就带大家简单实现一个对应的功能,并分析一下对应的Bug和优缺点。监听文件变动并读取文件,简单的思路如下:这里写一个简单功能实现(不包含定时任务部分)的demo:在上述代码中,先创建一个文件(方便测试),然后两次读取文件的修改时间,并用LAST_TIME记录上次修改时间。如果文件的最新更改时间与上一次不一致

2022-07-06 17:34:45 5266 5

原创 IDEA崩溃:A fatal error has been detected by the Java Runtime Environment解决方案

最近在使用IDEA时,打开项目莫名其妙的就崩溃了,重启了电脑,重启了IDEA依然无效。仔细回顾这两天做了什么操作,除了从GitHub上clone了一个项目,并用IDEA打开过该项目之外,并无其他操作。于是只好分析错误日志,IDEA每次崩溃都会在特定的目录下生成一个错误日志,崩溃的时候也会弹框显示错误原因。崩溃日志可在Help->Edit Custom VM Options中进行查看:我这里找到的IDEA崩溃信息如下:很奇怪的错误描述,明明用的Java 8,为什么描述信息中显示的是OpenJDK 11呢?

2022-07-06 06:56:22 4617 1

原创 如果不知道这4种缓存模式,敢说懂缓存吗?

在系统架构中,缓存可谓提供系统性能的最简单方法之一,稍微有点开发经验的同学必然会与缓存打过交道,最起码也实践过。如果使用得当,缓存可以减少响应时间、减少数据库负载以及节省成本。但如果缓存使用不当,则可能出现一些莫名其妙的问题。在不同的场景下,所使用的缓存策略也是有变化的。如果在你的印象和经验中,缓存还只是简单的查询、更新操作,那么这篇文章真的值得你学习一下。在这里,为大家系统地讲解4种缓存模式以及它们的使用场景、流程以及优缺点。本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。例如

2022-07-04 07:02:08 10785 16

原创 奇怪,为什么ArrayList初始化容量大小为10?

看ArrayList源码时,无意中看到ArrayList的初始化容量大小为10,这就奇怪了!我们都知道ArrayList和HashMap底层都是基于数组的,但为什么ArrayList不像用HashMap那样用16作为初始容量大小,而是采用10呢?于是各方查找资料,求证了这个问题,这篇文章就给大家讲讲。在聊ArrayList的初始化容量时,要先来回顾一下HashMap的初始化容量。这里以Java 8源码为例,HashMap中的相关因素有两个:初始化容量及装载因子:在HashMap当中,数组的默认初始化容量为

2022-06-18 17:12:12 468 2

原创 Java实现监听文件变化的三种方法,推荐第三种

背景在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载。当然,在其他业务场景下,比如想实现配置文件的动态加载、日志文件的监听、FTP文件变动监听等都会遇到类似的场景。本文给大家提供三种解决方案,并分析其中的利弊,建议收藏,以备不时之需。方案一:定时任务 + File#lastModified这个方案是最简单,最能直接想到的解决方案。通过定时任务,轮训查询文件的最后修改时间,与上一次进行对比。如果发生变化,则说明文件已经修改,进行重新加载或对应的

2022-05-30 08:24:14 2448 3

原创 EasyExcel太方便易用了,强烈推荐

背景系统中经常要导出大量的数据,格式基本上都是Excel,然而每次导表都是对系统内存的一次挑战。在Java领域,生成或解析Excel的框架比较有名的当属Apache的poi和jxl了。但使用它们,会面临着严重的内存损耗问题。如果系统的并发量还不行,一旦导出大量数据,便会出现JVM频繁full gc,甚至导致OOM。EasyExcel是阿里巴巴开源的一个Excel处理框架,使用简单、节省内存。节省内存的原理也很简单,在解析Excel时没有将文件数据全部加载到内存当中,而是从磁盘文件中一行行读取。今天这

2022-05-27 08:23:43 662

原创 突发状况,数据库表被锁,抓瞎了?

背景在程序员的职业生涯中,总会遇到数据库表被锁的情况,前些天就又撞见一次。由于业务突发需求,各个部门都在批量操作、导出数据,而数据库又未做读写分离,结果就是:数据库的某张表被锁了!用户反馈系统部分功能无法使用,紧急排查,定位是数据库表被锁,然后进行紧急处理。这篇文章给大家讲讲遇到类似紧急状况的排查及解决过程,建议点赞收藏,以备不时之需。故障追踪用户反馈某功能页面报502错误,于是第一时间看服务是否正常,数据库是否正常。在控制台看到数据库CPU飙升,堆积大量未提交事务,部分事务已经阻塞了很长时间,基本

2022-05-12 07:15:27 285

原创 使用HTTP Client踩到的一个坑,你一定要避免

前言作为软件开发者,我们知道一切看似正常的系统,不知埋藏着多少坑。今天跟大家分享一个实战过程中遇到的HTTP Client使用不当导致的坑。笔者通过问题的表象一路追踪下去,最终找到导致问题的根源:HTTP Client。结论很简单,先卖个关子,但分析的过程值得你借鉴。问题现象场景:几乎每个系统都有异步调用三方服务的功能,所负责的系统基于阻塞队列实现了一个消息队列,来调用三方服务。为了确保幂等性,队列是顺序消费。这就导致一个问题,一旦其中一个消息被阻塞,后面的消息就无法消费。当队列满时,也无法向队列中

2022-04-29 06:43:24 450

原创 捕获了一只发生概率小于万分之一的Bug

前言在开始这篇文章之前想先说一句:如果一套系统暂时没问题,那只是因为它的并发量不够而已。上周在查看系统日志时,发现了一条与众不同的日志。日志中有一半内容是正常的报文数据,而另一半内容是0x00这样的空数据。虽然系统没抛出任何异常,但这些日志肯定是反常的。多年的经验告诉我,这其中一定有什么不对的地方,加上好奇心的驱使,终于揭开了一个隐藏非常深的Bug。有时候找到Bug,解决Bug很容易,难的是如何发现Bug,并推理出哪里出问题解决。下面就带大家来剖析一下这个Bug。奇怪的日志输出一个调用外部接口的

2022-04-21 21:10:17 4614 8

原创 各大框架都在使用的Unsafe类,到底有多神奇?

前言几乎每个使用 Java开发的工具、软件基础设施、高性能开发库都在底层使用了sun.misc.Unsafe,比如Netty、Cassandra、Hadoop、Kafka等。Unsafe类在提升Java运行效率,增强Java语言底层操作能力方面起了很大的作用。但Unsafe类在sun.misc包下,不属于Java标准。很早之前,在阅读并发编程相关类的源码时,看到Unsafe类,产生了一个疑惑:既然是并发编程中用到的类,为什么命名为Unsafe呢?深入了解之后才知道,这里的Unsafe并不是说线程安全

2022-03-28 21:05:27 429

原创 Mybatis的where标签,还有这么多知识点

背景在上篇文章,我们系统地学习了where 1=1 相关的知识点,大家可以回看《不要再用where 1=1了!有更好的写法!》这篇文章。文章中涉及到了Mybatis的替代方案,有好学的朋友在评论区有朋友问了基于Mybatis写法的问题。于是,就有了这篇文章。本篇文章会将Mybatis中where标签的基本使用形式、小技巧以及容易踩到的坑进行总结梳理,方便大家更好地实践运用d原始的手动拼接在不使用Mybatis的where标签时,我们通常是根据查询条件进行手动拼接,也就是用到了上面提到的where 1

2022-03-03 07:01:58 2978 2

原创 不要再用where 1=1了,有更好的写法

背景刚入行的同学,看到在SQL语句中出现where 1 = 1这样的条件可能会有所困惑,而长时间这样使用的朋友可能又习以为常。那么,你是否还记得当初为什么要这样写?是否有性能问题?有没有更好的写法?今天这篇文章,带大家从头到尾梳理一下where 1 = 1的使用及改进,或许你能从中得到更多意想不到的收获。where 1=1的作用如果要问在SQL语句的where条件中多加1=1目的是什么,很简单:使得where条件语句永远为真。本质上就是虽然加了where条件,但实际上永远为真,也就相当于没有加任何

2022-03-01 07:55:44 5088 11

原创 15个必知的Mysql索引失效场景,别再踩坑了

背景无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑。常见的现象就是:明明在字段上添加了索引,但却并未生效。前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参数下生效,在某些参数下不生效,这是为什么呢?另外,无论是面试或是日常,Mysql索引失效的通常情况都应该了解和学习。为了方便学习和记忆,这篇文件将常见的15种不走索引情况进行汇总,并以实例展示,帮助大家更好地避免踩坑。建议收藏,以备不时之需。数据库及索引准备创建表结构为了逐项验证索引的使用情况,我们先

2022-02-28 09:13:26 2474 1

原创 Mysql查询条件为大于时,不走索引失效问题排查

我们都知道在数据库查询时,索引可以极大的提高查询效率。通常在使用的时候,都会针对频繁查询的关键字段建立索引。比如,当以交易日期(trans_date)来查询交易记录时,通常会对该字段添加索引,以便在大量数据的情况下提升查询效率。针对trans_date字段,创建union_idx_query索引,那么在下面以trans_date为查询条件的语句中,毫无疑问是会走索引的:select count(1) from A; // 40000EXPLAIN select * from A where tra

2022-02-24 09:45:21 4779 2

原创 雪花算法:分布式唯一ID生成利器

前言无论是在分布式系统中的ID生成,还是在业务系统中请求流水号这一类唯一编号的生成,都是软件开发人员经常会面临的一场景。而雪花算法便是这些场景的一个解决方案。以分布式ID为例,它的生成往往会在唯一性、递增性、高可用性、高性能等方面都有所要求。并且在业务处理时,还要防止爬虫根据ID的自增进行数据爬取。而雪花算法,在这些方面表现得都不错。常见分布式ID生成市面上比较常见的分布式ID生成算法及类库:UUID:Java自带API,生成一串唯一随机36位字符串(32个字符串+4个“-”)。可以保证唯一性,但

2022-02-23 09:13:27 1767

原创 Mysql时间范围查询不走索引问题

使用Mysql进行数据查询时,如果在SQL语句中出现范围查询,类似如下语句:select * from logs where create_time >= '2020-01-01' ;此时,虽然在create_time字段上添加了索引,但是否会走索引还需要看数据量的情况。如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。因此,在进行范围查询时,比如>、< 、>=、<=等,如果数据量过大的话where语句的条件虽然添加了索引,但也有

2022-02-22 17:28:54 5645

原创 Maven常见操作命令

背景最近在基于Maven构建自动化发布流水线,发现当项目多、项目之间依赖多时,了解Maven的命令使用,真是如虎添翼。特为大家整理了一套Maven常见命令及使用小技巧。建议收藏,甚至打印出来放在办公桌以备快速使用。废话不多说,直接上干货。Maven常见命令使用项目目录结构:--P(父工程pom) -- A (子工程 - common) -- B (子工程 - biz 依赖common) -- C (子工程 - Web 依赖B、间接依赖A)创建类命令创建普通Maven项目mvn arc

2022-02-07 14:33:27 1845

原创 分布式任务调度系统XXL-Job快速入门体验

背景为了能够更加灵活的控制定时任务,最近在项目中开始推行定时任务调度系统,跟不少大厂朋友交流之后,发现XXL-Job市场还是挺广的,功能强大,定为首选。再加上XXL-Job是基于Spring Boot的开源项目,二次开发非常容易,所以就选定了XXL-Job。这篇文章就带大家领略一下XXL-Job的魅力,可以不用,但不可不知道。XXL-Job简介访问官方网站会看到XXL-Job各类特性介绍,这里总结一下就是:学习简单、轻量级、易扩展、动态生效、调度中心HA、执行器HA、弹性扩容缩容、路由策略、故障转移

2022-01-28 16:13:58 1669 2

原创 架构师聊的四层代理和七层代理,都在聊什么?

日常与大佬沟通或看文章,时不时总会遇到两个概念“四层代理负载均衡”和“七层代理负载均衡”,那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这篇文章就带大家聊聊这方面的知识点。OSI七层模型要聊几层代理,需要先看一下网络分层,在之前的文章中也提到,标准的七层网络分层,也就是OSI七层模型。TCP/IP五层模型和TCP/IP四层模型是从OSI七层优化而来。这里所谈的四层代理和七层代理,便是基于OSI七层模型来划分的。从下往上看,第四层为传输层、第七层为应用层。再来看看每层对应的常见

2022-01-20 20:59:01 2213

原创 Mysql的复合索引,生效了吗?来篇总结文章

背景最近频繁出现慢SQL导致系统性能问题,于是决定针对索引进行一些优化。一些表结构本身已经有了不少索引,如果再继续添加索引,势必会影响到插入数据的性能。那么,是否可以使用组合索引来达到目的呢?这篇文章咱们来一探究竟。认识复合索引如果where条件中使用到多个字段,并且需要对多个字段建立索引,此时就可以考虑采用复合索引(组合索引)。比如查询地址时需要输入省、市,那么在省、市上建立索引,当数据量大时会明显提高查询速度。组合索引有啥优势呢?减少查询开销:建立复合索引(c1,c2,c3),实际上相当于建

2021-12-29 21:01:06 255 1

原创 Log4j一波未平,Logback 一波又起,再爆漏洞

背景前些天Log4j的漏洞,不知多少程序被抓去加班,关键漏洞还是接连出现的,真是辛苦了程序员,也辛苦了Log4j的开源作者。为此,二师兄还专门写了一篇还原漏洞的文章【原文点这里】。竟然有朋友在评论区说”就这么一个小漏洞,值得这么大肆的写吗?“。看来那位朋友还没意识到漏洞的严重性。本来以为使用的是Logback能够躲过一劫,没想到,又看到朋友圈在讨论Logback的爆出的新漏洞,吓得赶紧看了一下项目中的版本。漏洞详情为了了解一下是什么情况,先去官网(https://logback.qos.ch/ne

2021-12-25 17:27:06 2398 1

技术顾问协议模板,word版本

技术顾问协议模板,word版本

2022-08-01

从Drools规则引擎到风控反洗钱系统v0.3.2.pdf

从Drools规则引擎到风控反洗钱系统v0.3.2.pdf ,此版本文档在不断刚更新升级中。

2017-08-22

从Drools规则引擎到风控反洗钱系统V0.2.3

从Drools规则引擎到风控反洗钱系统V0.2.3

2017-08-03

springboot集成drools实现重新加载规则

springboot集成drools实现重新加载规则

2017-08-02

drools calendar 使用demo

drools calendar 使用demo

2017-07-28

drools集成springboot demo

drools集成springboot demo

2017-07-18

建模工具StarUML的使用手册

StarUML的使用手册

2017-05-19

高性能MySQL(第2版)

高性能MySQL(第2版)

2017-04-09

node-v4.5.0-linux-x64.tar.xz

官网下载是在太慢,好不容易下载下来了,索性分享在这里。

2016-11-08

kie-drools 6.4.0 依赖jar包

kie-drools 6.4.0 依赖jar包

2016-09-09

pdf格式文件阅读器

pdf格式文件阅读器pdf格式文件阅读器

2011-06-22

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

TA关注的人

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