自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(538)
  • 资源 (16)
  • 收藏
  • 关注

原创 常见分布式ID解决方案

分布式ID解决方案是用于在分布式系统中生成唯一标识符的方案。常见的分布式ID解决方案可总结为3点:数据库方案、算法方案、开源组件方案。

2024-03-20 10:57:21 1272

原创 分布式唯一ID方案

其核心思想是:使用41bit作为毫秒数,10bit作为work ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDMS使用B-tree的数据结构来存储索引数据,在主键的选择上面应该尽量使用有序的主键保证写入性能。1)每次生成的ID是无序的,无法保证趋势递增,不能作为数据库主键,否则会引起索引数据位置频繁变动,严重影响性能。

2024-03-20 10:56:06 878

原创 SpringBoot各类扩展点解析

其实说白了,SpringBoot能够如此的盛行,很重要的一部分就是它默认提供了一系列自动配置的依赖模块,而这些依赖模块都是基于以上的@Conditional复合注解实现的,这也就说明这些所有的依赖模块都是按需加载的,只有复合某些特定的条件,这些依赖模块才会生效,这也解释了为什么自动配置是“智能”的。​  在实现自动配置的过程中,我们除了可以提供基于条件的配置之外,我们还能对当前要提供的配置或组件的加载顺序进行个性化调整,以便让这些配置或者组件之间的依赖分析和组装能够顺利完成。

2024-03-06 16:29:02 919

原创 盘点 SpringBoot 的那些常用扩展点

https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247524146&idx=2&sn=ebfa45facb58a19ca52936b71b5bf900&chksm=ebd5a01edca229089d406e4ce2b39eb4456ed4e873d345c1d7793df547c76e5a678a235f3ad1&scene=27&poc_token=HDjG5mWjtSgMJR5AFuUcSDfXJA0cT4K3iba1AAqT

2024-03-06 16:25:53 362

原创 spring-boot自定义网站头像(favicon.ico文件)

一、将ico文件存放到resources目录的static中的favicon下。二、在application.properties文件中增加配置。

2024-03-01 16:52:05 638

原创 Springboot版本管理API接口

*** 版本控制*/@Mapping// 路径中版本的前缀, 这里用 /v[1-9]/的形式@Override// 采用最后定义优先原则,则方法上的定义覆盖类上面的定义@Override@Override// 优先匹配最新的版本号@Override@Override@Override版本测试类HelloController/*** 接口版本测试类*/version 1";version 2";

2024-02-20 16:20:46 433

原创 从 git 分支中合并特定文件,而不是整个分支的内容

在Git中,如果你想从另一个分支合并一些特定的提交(而不是整个分支的内容),你可以使用cherry-pick命令。在git 中,我们可以使用 git merge 命令,合并整个分支,覆盖当前分支的内容,但是有时候我们并不想这么做,而是想 merge 某个文件。找到要合并的提交的哈希值:在你合并之前,你需要知道那些提交的哈希值。使用git cherry-pick合并提交:一旦你有了提交的哈希值,你可以使用git cherry-pick命令来合并这些提交到你的目标分支。复制你想要合并的提交的哈希值。

2024-02-20 09:10:07 689

原创 AI热门开源项目

项目同时提供了多种实用的子项目,例如candle-nn等,用于深度学习模型训练和推理,并且与Hugging Face的其他项目有良好的协同效果。简介:专注于提升文本提示和生成性能的项目。该项目通过整合最新的深度学习模型和技术,提供了一种强大的方式,用于理解和处理图像内容,特别适合于图像和视频编辑等应用场景。简介:AnimateDiff是一个专注于动态图像合成的官方实现库,特点是利用差分方法生成有生命力的动画效果,适用于将静态图像转换为动态图像,增加视觉效果的丰富性和吸引力,尤其适合内容创作者和动画师使用。

2024-02-20 09:05:06 832

原创 盘点AI大模型

而且进步的速度一日千里,从问答对话到辅助编程,从图画解析到自主创作,AI所展现出来的能力,超出了多数人的预料,让不少人惊呼:“未来是属于AI的”。随着ChatGPT的公布,全球主要的科技企业都开始加快AI大模型的研发,为这个崭新的领域带来无限的可能,接下来,

2024-02-20 09:03:54 1042

原创 Java统计GitLab代码量

【代码】Java统计GitLab代码量。

2024-02-05 17:01:45 479

原创 try-with-resources与try-finally优缺点比较

在正式分析之前,我们先看一波finally的执行顺序。

2024-01-19 09:26:38 437 1

原创 Java泛型图文详解

实际上编译器不仅关注一个泛型方法的调用,它还会为某些返回值为限定的泛型类型的方法进行强制类型转换,由于类型擦除,返回值为泛型类型的方法都会擦除成 Object 类型,当这些方法被调用后,编译器会额外插入一行 checkcast 指令用于强制类型转换,这一个过程就叫做『泛型翻译』。我们定义了一个泛型类,定义了一个属性成员,该成员的类型是一个泛型类型,这个 T 具体是什么类型,我们也不知道,它只是用于限定类型的。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

2024-01-17 14:32:29 878

原创 过滤器、拦截器、AOP、ControllerAdvcie执行顺序对比

来自J2EE中的Servlet技术实现原理:基于servlet的函数回调实现只可以获取到请求中的request和response,无法获取到响应方法的信息可以拦截所有请求支持使用xml配置和注解配置应用场景:权限认证、敏感词检测、访问日志记录等来自Spring,不依赖于servlet容器,但依赖于Spring实现原理:通过反射机制,动态代理实现可以获取到Spring中存在的Bean,通过注入的方式只对action请求起作用,并可以获取到action请求的上下文。

2024-01-16 09:43:13 447

原创 SpringBoot源码分析

由Pivotal团队提供的全新框架其设计目的是用来简化新Spring应用的初始搭建以及开发过程使用了特定的方式来进行配置快速应用开发领域。

2024-01-12 16:00:27 857

原创 SpringBoot3.X源码分析(启动流程)

所以SpringApplicationRunListener和ApplicationListener之间的关系是通过ApplicationEventMulticaster广播出去的SpringApplicationEvent所联系。构造一个SpringApplication的实例,然后再调用这里实例的run方法就表示启动SpringBoot。静态辅助类,可用于运行使用默认配置(即我们添加的一系列注解)的指定源的 SpringApplication。获取配置的监听器名称,并实例化所有的类。

2024-01-12 15:46:55 1087

原创 SpringBoot 原理深入及源码剖析

Starter 使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Springboot 自动通过classpath 路径下的类发现需要的 bean,并织入相应的 Bean。

2024-01-12 15:28:49 520

原创 线程池 - TaskDecorator线程的装饰(跨线程传递ThreadLocal的方案)

ThreadPoolTaskExecutor在执行线程时,存在一个配置,可以装饰线程类。

2024-01-05 15:12:08 589

原创 TransmittableThreadLocal使用踩坑

子线程必须使用TtlRunnable\TtlCallable修饰或者线程池使用TtlExecutors修饰,这一点很容易被遗漏,比如上下文和异步逻辑不是同一个人开发的,那么异步逻辑的开发者就很可能直接在异步逻辑中使用上下文,而忽略装饰线程池,造成线程复用时的“数据污染”。封装的上下文,成员变量RequestHeader。

2024-01-05 15:03:32 1279

原创 java字节码

Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。

2024-01-05 14:53:34 856

原创 Java 线程池四种拒绝策略

当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。但是,由于调用者自己运行任务,如果任务提交速度过快,可能导致程序阻塞,性能堪忧。可以看出,只有 5 个任务得到了执行,实际数量就是 maximumPoolSize + workQueue.size() 的值。是线程池默认的拒绝策略。当触发拒绝策略,只要线程池没有关闭的话,丢弃阻塞队列 workQueue 中最老的一个任务,并将新任务加入。可以看到里面 main 线程执行相关的任务,所有的任务都得到了执行,并且没有抛出异常。

2024-01-05 14:35:50 437

原创 SkyWalking部署-K8S

一、安装K8S集群kubeadm部署K8s集群V1.19.0二、部署skywalking2.1.创建命名空间2.2.给节点打标签。

2024-01-02 10:40:06 824

原创 分布式调用链对比(pinpoint、skywalking、jaeger、zipkin等)

(Application Performance Management)是对企业的应用系统进行实时监控,它是用于实现对应用程序性能管理和故障管理的系统化的解决方案。追踪系统Jaeger使用介绍和案例(PHP Hprose Go 跨语言调用)Apache SkyWalking 5.0中文版图文详解使用手册。ES,mysql,Cassandra,内存。ES,kafka,Cassandra,内存。java,c#,go,php等。java,c#,go,php等。OpenTracing兼容。实现方式-代码侵入性。

2024-01-02 10:22:30 1154

原创 RPC框架选型:gRPC、Thrift、Dubbo、Spring Cloud

而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。Spring Cloud 基于 Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。

2023-12-27 11:24:40 1106

原创 搞懂SkyWalking(40张图)

从图中可以看出我们只采用了 SkyWalking 的 agent 来进行采样,放弃了另外的「数据上报及分析」,「数据存储」,「数据可视化」三大组件,那为啥不直接采用 SkyWalking 的整套解决方案呢,因为在接入 SkyWalking 之前我们的 Marvin 监控生态体系已经相对比较完善了,如果把其整个替换成 SkyWalking,一来没有必要,Marvin 在大多数场景下都能满足我们的需求,二来系统替换成本高,三来如果重新接入用户学习成本很高。对于技术方案的选型,一定要避免过度设计,过犹不及。

2023-12-26 18:35:20 904

原创 spring 定时任务Scheduler和异步任务Async

2. 在org.springframework.boot.autoconfigure.task package下,有两个*Properties类,这两个类就是配置项对应的Bean。通过查看spring-boot-autoconfigure:***.jar 下类 org.springframework.boot.autoconfigure.task.TaskExecutionProperties,可以得知异步任务相关配置项。spring提供了一些配置项对scheduler进行配置。

2023-12-20 14:53:07 494

原创 git 不小心操作 reset current branch to here后,怎么还原

通过git log -g命令来找到需要恢复的信息对应的commitid,可以通过提交的时间和日期来辨别,找到执行reset --hard之前的那个commit对应的commitid。这样,就把到commitid为止的代码、各种提交记录等信息都恢复到了recover_branch分支上。通过git branch recover_branch commitid 来建立一个新的分支。可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除。

2023-12-16 15:17:14 785

原创 快速学习Java Agent

OpenTracing通过提供平台无关、厂商无关 的API,使得开发人员能够方便的添加(或更换)追踪系统的实现。OpenTracing中最核心的概念就是 Trace。

2023-12-13 17:39:57 960

原创 SpringBoot-Swagger3

Swagger2(基于openApi3)已经在17年停止维护了,取而代之的是 sagger3(基于openApi3),而国内几乎没有 sagger3使用的文档,百度搜出来的大部分都是swagger2的使用,这篇文章将介绍如何在 java 中使用 openApi3(swagger3)。SpringBoot——2.7.3版本整合Swagger3-CSDN博客。

2023-12-12 15:55:46 483

原创 JSQLPARSER解析SQL知识入门

操作的工具包,但是发现此类文章较少,文档也不太详细,所以写个博客供参考。转换为Java类的可遍历层次结构。语法都在动态变化,可以解析某些(不是全部)。Parser就是一个把。

2023-11-30 15:40:50 1252

原创 Java使用pdfbox进行pdf和图片之间的转换

Apache。

2023-11-01 14:41:43 739

原创 Java 比对两张图片的差异

【代码】Java 比对两张图片的差异。

2023-11-01 14:30:16 150

原创 JAVA 实现PDF转图片(spire.pdf.free版)

导入方法1:手动引入。将Free Spire.PDF for Java下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:导入方法2:如果您想通过安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

2023-11-01 14:23:41 1918 1

原创 JAVA 实现PDF转图片(pdfbox版)

System.out.println("PDF文档转PNG图片失败:" + "创建" + imgFolderPath + "失败");// 获取图片文件名。// 获取图片存放的文件夹路径。PdfFilePath = relativelyPath + "/uploadTest/"+"文档.pdf";// 创建PDF文档。} else if (type == 2) {// 纵向。/* dpi越大转换后越清晰,相对转换速度越慢 */// ImageMergeUtil 图片的合并,多张图片合成长图。

2023-11-01 14:18:04 956

原创 kafka3.X基本概念和使用

参考: 【kafka专栏】不用zookeeper怎么安装kafka集群-最新kafka3.0版本在本专栏的之前的一篇文章《kafka3种zk的替代方案》已经为大家介绍过在kafka3.0种已经可以将zookeeper去掉。上图中黑色代表broker(消息代理服务),褐色/蓝色代表Controller(集群控制器服务)在搭建kafka3.0集群之前, 我们需要先做好kafka实例角色规划。(四个broker, 需要通过主动配置指定三个作为Controller, Controller需要奇数个, 这一点和zk是

2023-10-25 15:50:18 1144

原创 kafka3.X集群安装(不使用zookeeper)

kafka3.X集群安装(不使用zookeeper)

2023-10-25 15:46:35 3107 1

原创 Kafka3.x安装以及使用

选择在任一磁盘创建空文件夹(不要使用中文路径),解压之后把文件夹内容剪切进去(本人选择 D:\env-java\路径下,即完成安装)。因为选择下载的是 .zip 文件,直接跳过安装,一步到位。windows直接解压即可,windows环境下指令是在。/:表示当前的根路径,即D盘。没有就会创建对应的文件夹。注意:不同系统指令所在的目录不同。,linux环境下指令是在。

2023-10-23 09:29:07 848

原创 flatten-maven-plugin使用

将pom工程父子pom的版本,提出作为变量定义在properties。这样仅修改变量的值(如在运行mvn命令时指定) 即可实现版本整体切换。

2023-09-08 13:32:32 831

原创 Java 字符转码之UTF-8互转GBK

本文详细介绍了Java GBK转UTF-8的具体实现方法,包括文件编码转换、字符串编码转换和使用字符集Charset实现编码转换。在进行GB2312到UTF-8编码转换时,需要注意文本文件编码格式、源代码文件编码格式和字符串编码格式的一致性。

2023-08-25 15:51:25 3249 1

原创 Git之回退

git回退

2023-07-25 17:30:33 878

原创 java 创建带构造参数的泛型实例

@date: 2020年12月17日 0017 15:19。* @date: 2020年12月17日 0017 15:23。* @date: 2020年12月17日 0017 15:29。关键点在于:class.newInstance()。说明:该方法本身并没有实际意义,不要追究。* @return: T 实例对象。* @param: p 构造参数。* 通过一个参数来创建泛型对象。第二步:通过构造方法创建对象;第一步:创建有参构造方法;本质:通过反射来完成。2.生成无参泛型对象。* 创建无参泛型对象。

2023-07-24 14:48:35 143

SpringCloudAlibaba-Seata

SpringCloudAlibaba-Seata

2023-02-14

Springboot-Seata

Springboot-Seata

2023-02-14

2009年-2020年系统架构师考试案例分析(真题解析).pdf

2009年-2020年系统架构师考试案例分析

2021-08-19

2009年-2020年系统架构师考试综合知识(真题解析).pdf

2009年-2020年系统架构师考试综合知识(真题解析)

2021-08-19

2005-2020信息系统项目管理师案例分析.pdf

2005-2020信息系统项目管理师案例分析

2021-07-13

2005-2020信息系统项目管理师历年真题试题和答案.zip

2005-2020信息系统项目管理师历年真题试题和答案

2021-07-13

《软件架构设计文档》ADMEMS模板v2.docx

ADMEMS方法推荐的《软件架构设计文档》

2021-06-09

dlib-19.21.1-cp38-cp38-win_amd64.zip

dlib.whl免编译安装,快速使用。Dlib是一个现代化的C ++工具箱,其中包含用于在C ++中创建复杂软件以解决实际问题的机器学习算法和工具。它广泛应用于工业界和学术界,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。

2021-01-08

dlib-19.21.99-cp38-cp38-win_amd64.whl

dlib.whl免编译安装,快速使用。Dlib是一个现代化的C ++工具箱,其中包含用于在C ++中创建复杂软件以解决实际问题的机器学习算法和工具。它广泛应用于工业界和学术界,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。

2021-01-08

Shiro详细教程

Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。 本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。

2018-11-23

统计学习方法-李航

统计学习是计算机及其应用领域的一门重要的学科。本书全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机、k近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与最大熵模型、支持向量机、提升方法、em算法、隐马尔可夫模型和条件随机场等。除第1章概论和最后一章总结外,每章介绍一种方法。叙述从具体问题或实例入手,由浅入深,阐明思路,给出必要的数学推导,便于读者掌握统计学习方法的实质,学会运用。为满足读者进一步学习的需要,书中还介绍了一些相关研究,给出了少量习题,列出了主要参考文献。

2018-11-20

Spring5高级编程第五版

Spring5高级编程第五版

2018-11-20

activity编程宝典

适合阅读本书的读者有以下几类: Activiti用户和爱好者 Activiti代码贡献者 流程引擎相关的项目经理或者需求人员 Activiti开发者,或运维人员 使用Activiti开发流程平台的公司

2018-11-20

nginx学习资料

介绍了处理负载均衡问题的相关概念和工具,说明了如何避免性能退化和服务器上的服务突然崩溃的风险,阐述了单个服务器以及可以执行cookie 插入或者改善ssl 吞吐量的负载均衡器,最后还探讨了云计算中的负载均衡。 适合对系统架构、性能维护感兴趣的初级、中级读者以及有经验的系统架构师和运维师。

2018-11-20

Java WEB实现URL重写

URL重写,其实就是把带一大堆参数的url,变成一个看上去很规矩的url。本例是URL重写的Java WEB实现。

2018-05-22

空空如也

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

TA关注的人

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