- 博客(544)
- 资源 (16)
- 收藏
- 关注
原创 java小写数字转大写
String[] upperCaseDigit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};String[] unit = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿"};
2025-01-10 15:30:42
195
原创 wait/notify/notifyAll 方法的使用注意事项
2,如果把 wait/notify/notifyAll 方法定义在 Thread 类中,会带来很大的局限性,比如一个线程可能持有多把锁,以便实现相互配合的复杂逻辑,假设此时 wait 方法定义在 Thread 类中,如何实现让一个线程在持有多把锁的情况下,如何明确线程等待的是哪把锁呢?这个锁是对象级别的,而非线程级别的,wait/notify/notifyAll 也都是锁级别的操作,它们的锁属于对象,所以把它们定义在 Object 类中是最合适,因为 Object 类是所有对象的父类。
2024-12-03 15:04:11
702
原创 Windows系统下安装Etcd集群
最近在研究etcd,用于解决一个服务的主备切换的问题,工欲善其事必先利其器,先把本地所需的所有环境搭建好。涉及到本地Windows环境的etcd集群的搭建,以及etcd可视化web工具etcd-viewer的搭建。etcd使用go语言开发的,在Windows平台上最终编译成了可执行的exe文件,部署非常容易。
2024-08-02 17:14:35
835
原创 Redis Cluster集群配置安装
Redis集群是一种基于数据分片(sharding)的分布式缓存和存储系统。是一个由多个主从节点群组成的分布式服务集群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单。
2024-08-01 17:23:57
1543
原创 常见分布式ID解决方案
分布式ID解决方案是用于在分布式系统中生成唯一标识符的方案。常见的分布式ID解决方案可总结为3点:数据库方案、算法方案、开源组件方案。
2024-03-20 10:57:21
1456
原创 分布式唯一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
1316
原创 SpringBoot各类扩展点解析
其实说白了,SpringBoot能够如此的盛行,很重要的一部分就是它默认提供了一系列自动配置的依赖模块,而这些依赖模块都是基于以上的@Conditional复合注解实现的,这也就说明这些所有的依赖模块都是按需加载的,只有复合某些特定的条件,这些依赖模块才会生效,这也解释了为什么自动配置是“智能”的。 在实现自动配置的过程中,我们除了可以提供基于条件的配置之外,我们还能对当前要提供的配置或组件的加载顺序进行个性化调整,以便让这些配置或者组件之间的依赖分析和组装能够顺利完成。
2024-03-06 16:29:02
1111
原创 盘点 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
441
原创 spring-boot自定义网站头像(favicon.ico文件)
一、将ico文件存放到resources目录的static中的favicon下。二、在application.properties文件中增加配置。
2024-03-01 16:52:05
1403
原创 Springboot版本管理API接口
*** 版本控制*/@Mapping// 路径中版本的前缀, 这里用 /v[1-9]/的形式@Override// 采用最后定义优先原则,则方法上的定义覆盖类上面的定义@Override@Override// 优先匹配最新的版本号@Override@Override@Override版本测试类HelloController/*** 接口版本测试类*/version 1";version 2";
2024-02-20 16:20:46
650
原创 从 git 分支中合并特定文件,而不是整个分支的内容
在Git中,如果你想从另一个分支合并一些特定的提交(而不是整个分支的内容),你可以使用cherry-pick命令。在git 中,我们可以使用 git merge 命令,合并整个分支,覆盖当前分支的内容,但是有时候我们并不想这么做,而是想 merge 某个文件。找到要合并的提交的哈希值:在你合并之前,你需要知道那些提交的哈希值。使用git cherry-pick合并提交:一旦你有了提交的哈希值,你可以使用git cherry-pick命令来合并这些提交到你的目标分支。复制你想要合并的提交的哈希值。
2024-02-20 09:10:07
1599
原创 AI热门开源项目
项目同时提供了多种实用的子项目,例如candle-nn等,用于深度学习模型训练和推理,并且与Hugging Face的其他项目有良好的协同效果。简介:专注于提升文本提示和生成性能的项目。该项目通过整合最新的深度学习模型和技术,提供了一种强大的方式,用于理解和处理图像内容,特别适合于图像和视频编辑等应用场景。简介:AnimateDiff是一个专注于动态图像合成的官方实现库,特点是利用差分方法生成有生命力的动画效果,适用于将静态图像转换为动态图像,增加视觉效果的丰富性和吸引力,尤其适合内容创作者和动画师使用。
2024-02-20 09:05:06
1117
原创 盘点AI大模型
而且进步的速度一日千里,从问答对话到辅助编程,从图画解析到自主创作,AI所展现出来的能力,超出了多数人的预料,让不少人惊呼:“未来是属于AI的”。随着ChatGPT的公布,全球主要的科技企业都开始加快AI大模型的研发,为这个崭新的领域带来无限的可能,接下来,
2024-02-20 09:03:54
1306
原创 Java泛型图文详解
实际上编译器不仅关注一个泛型方法的调用,它还会为某些返回值为限定的泛型类型的方法进行强制类型转换,由于类型擦除,返回值为泛型类型的方法都会擦除成 Object 类型,当这些方法被调用后,编译器会额外插入一行 checkcast 指令用于强制类型转换,这一个过程就叫做『泛型翻译』。我们定义了一个泛型类,定义了一个属性成员,该成员的类型是一个泛型类型,这个 T 具体是什么类型,我们也不知道,它只是用于限定类型的。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
2024-01-17 14:32:29
935
原创 过滤器、拦截器、AOP、ControllerAdvcie执行顺序对比
来自J2EE中的Servlet技术实现原理:基于servlet的函数回调实现只可以获取到请求中的request和response,无法获取到响应方法的信息可以拦截所有请求支持使用xml配置和注解配置应用场景:权限认证、敏感词检测、访问日志记录等来自Spring,不依赖于servlet容器,但依赖于Spring实现原理:通过反射机制,动态代理实现可以获取到Spring中存在的Bean,通过注入的方式只对action请求起作用,并可以获取到action请求的上下文。
2024-01-16 09:43:13
1144
原创 SpringBoot源码分析
由Pivotal团队提供的全新框架其设计目的是用来简化新Spring应用的初始搭建以及开发过程使用了特定的方式来进行配置快速应用开发领域。
2024-01-12 16:00:27
959
原创 SpringBoot3.X源码分析(启动流程)
所以SpringApplicationRunListener和ApplicationListener之间的关系是通过ApplicationEventMulticaster广播出去的SpringApplicationEvent所联系。构造一个SpringApplication的实例,然后再调用这里实例的run方法就表示启动SpringBoot。静态辅助类,可用于运行使用默认配置(即我们添加的一系列注解)的指定源的 SpringApplication。获取配置的监听器名称,并实例化所有的类。
2024-01-12 15:46:55
1470
原创 SpringBoot 原理深入及源码剖析
Starter 使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Springboot 自动通过classpath 路径下的类发现需要的 bean,并织入相应的 Bean。
2024-01-12 15:28:49
766
原创 线程池 - TaskDecorator线程的装饰(跨线程传递ThreadLocal的方案)
ThreadPoolTaskExecutor在执行线程时,存在一个配置,可以装饰线程类。
2024-01-05 15:12:08
2263
原创 TransmittableThreadLocal使用踩坑
子线程必须使用TtlRunnable\TtlCallable修饰或者线程池使用TtlExecutors修饰,这一点很容易被遗漏,比如上下文和异步逻辑不是同一个人开发的,那么异步逻辑的开发者就很可能直接在异步逻辑中使用上下文,而忽略装饰线程池,造成线程复用时的“数据污染”。封装的上下文,成员变量RequestHeader。
2024-01-05 15:03:32
2975
原创 java字节码
Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。
2024-01-05 14:53:34
2244
原创 Java 线程池四种拒绝策略
当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。但是,由于调用者自己运行任务,如果任务提交速度过快,可能导致程序阻塞,性能堪忧。可以看出,只有 5 个任务得到了执行,实际数量就是 maximumPoolSize + workQueue.size() 的值。是线程池默认的拒绝策略。当触发拒绝策略,只要线程池没有关闭的话,丢弃阻塞队列 workQueue 中最老的一个任务,并将新任务加入。可以看到里面 main 线程执行相关的任务,所有的任务都得到了执行,并且没有抛出异常。
2024-01-05 14:35:50
748
原创 SkyWalking部署-K8S
一、安装K8S集群kubeadm部署K8s集群V1.19.0二、部署skywalking2.1.创建命名空间2.2.给节点打标签。
2024-01-02 10:40:06
1444
原创 分布式调用链对比(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
2096
原创 RPC框架选型:gRPC、Thrift、Dubbo、Spring Cloud
而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。Spring Cloud 基于 Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
2023-12-27 11:24:40
3408
原创 搞懂SkyWalking(40张图)
从图中可以看出我们只采用了 SkyWalking 的 agent 来进行采样,放弃了另外的「数据上报及分析」,「数据存储」,「数据可视化」三大组件,那为啥不直接采用 SkyWalking 的整套解决方案呢,因为在接入 SkyWalking 之前我们的 Marvin 监控生态体系已经相对比较完善了,如果把其整个替换成 SkyWalking,一来没有必要,Marvin 在大多数场景下都能满足我们的需求,二来系统替换成本高,三来如果重新接入用户学习成本很高。对于技术方案的选型,一定要避免过度设计,过犹不及。
2023-12-26 18:35:20
2138
原创 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
998
原创 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
1605
原创 快速学习Java Agent
OpenTracing通过提供平台无关、厂商无关 的API,使得开发人员能够方便的添加(或更换)追踪系统的实现。OpenTracing中最核心的概念就是 Trace。
2023-12-13 17:39:57
1297
原创 SpringBoot-Swagger3
Swagger2(基于openApi3)已经在17年停止维护了,取而代之的是 sagger3(基于openApi3),而国内几乎没有 sagger3使用的文档,百度搜出来的大部分都是swagger2的使用,这篇文章将介绍如何在 java 中使用 openApi3(swagger3)。SpringBoot——2.7.3版本整合Swagger3-优快云博客。
2023-12-12 15:55:46
508
原创 JSQLPARSER解析SQL知识入门
操作的工具包,但是发现此类文章较少,文档也不太详细,所以写个博客供参考。转换为Java类的可遍历层次结构。语法都在动态变化,可以解析某些(不是全部)。Parser就是一个把。
2023-11-30 15:40:50
3229
原创 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
3280
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
1196
原创 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
1197
dlib-19.21.1-cp38-cp38-win_amd64.zip
2021-01-08
dlib-19.21.99-cp38-cp38-win_amd64.whl
2021-01-08
Shiro详细教程
2018-11-23
统计学习方法-李航
2018-11-20
activity编程宝典
2018-11-20
nginx学习资料
2018-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人