java
文章平均质量分 80
TerrenceTian
良好的判断力来源于经验,而经验则往往来自于错误的判断。
展开
-
基于Apollo动态日志级别配置
在实际使用Apollo配置中心的项目中,可以通过修改日志级别让应用即时生效,免去了重启应用的昂贵操作。原创 2023-04-10 15:20:36 · 597 阅读 · 1 评论 -
在Spring框架中实现属性配置动态刷新,不需要重启应用。
相当于增加一份配置文件,它可以来源于文件或网络,这取决于你如何拿到数据。下面是一个示例,这个属性源有一个名字:myPropertySource,里面只包含了一个属性:abc_123。/*** 自定义属性源} }事实上你可以从外部网络,比如某个HTTP接口获取一堆属性值,对于你来说无非是将它们映射成KV结构。当然你用其它结构也可以,但是要保证能将一堆属性存储下来,并且能够根据名字(键)快速查找出来。/*** 自定义属性源,从HTTP接口获取配置属性集。原创 2023-03-19 12:26:50 · 2344 阅读 · 0 评论 -
在Spring boot项目中实现多数据源的方案
定义一个拦截器,在请求时检查Controller类和方法上的注解,根据配置的值设置当前请求用什么数据源。在请求响应回去时清除当前线程绑定的数据,做一个资源的释放动作。在实际项目开发过程中,因为业务发展和技术实现的需要,我们会在项目中同时连接多个数据库,具体该怎么做呢?解决异步执行时上下文传递的问题。原创 2023-02-21 04:00:00 · 726 阅读 · 0 评论 -
在Spring框架中创建Bean实例的几种方法
我们希望Spring框架帮忙管理Bean实例,以便得到框架所带来的种种功能,例如依赖注入等。将一个类纳入Spring容器管理的方式有几种,它们可以解决在不同场景下创建实例的需求。为了获取Spring容器,一般会创建一个工具类,方便开发者在代码任意位置就能拿到容器,下面代码可以拿走即用。获取ApplicationContext来构建。原创 2023-02-17 10:36:43 · 415 阅读 · 0 评论 -
利用redis实现分布式锁
Redis是一个理想的选择。作为轻量级内存数据库,它具有快速,事务性和一致性等特点,这是我们分布式锁所需的关键特性。锁本身很容易,因为它只是redis数据库中的一个key。那如何设置锁定状态呢?使用SET命令保存某个key。然后使用GET命令查询上步设置进去的key是否存在,如果存在则表示锁定了该资源。不过如果使用两条命令来达到目的,显然会因为网络延时造成假锁的问题,这在线程并发激烈时最容易出现。好在redis提供了SETNX命令,它可以直接满足我们的要求,也就是不需要像刚才那样再发一条GET。原创 2023-02-07 09:47:29 · 98 阅读 · 0 评论 -
使用MapStruct框架实现Bean之间属性映射
MapStruct是一个代码生成器,它基于约定优于配置的方法极大地简化了Java bean类型之间映射的实现。通过上面的介绍我们应该能够理解到这么几点,首先它是一个代码生成器,就是用来帮开发者自动生成代码的工具,只需要通过简单的代码就可以实现原来手工编写的样板代码,因为它采用约定大于配置的设计思想,所以开发者只需要掌握简单的代码编写就可以了。也就是说人家框架帮你自动生成了原先手工编写的代码,但实际上那些手工编写的代码还是存在的,只不过你没有编写,框架帮你自动生成了而已。原创 2023-02-07 09:47:26 · 390 阅读 · 0 评论 -
在Gradle或Maven中切换中央仓库地址为国内镜像源以加速jar包下载
在Gradle或Maven中切换中央仓库地址为国内镜像源以加速jar包下载。原创 2023-02-06 11:10:35 · 2036 阅读 · 0 评论 -
基于Apache Maven构建多模块项目
多模块项目由管理一组子模块的聚合器 POM 来构建。在大多数情况下聚合器位于项目的根目录中,并且必须是pom类型的项目。子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。通过聚合器 POM 构建项目时会一并构建下属的所有子模块。原创 2023-02-08 21:15:10 · 313 阅读 · 0 评论 -
Apache Maven实现不同环境差异化编译和配置
Apache Maven实现不同环境差异化编译和配置。原创 2023-02-08 21:14:46 · 402 阅读 · 0 评论 -
Java虚拟机(JVM)调优思路
Java虚拟机(JVM)调优思路。原创 2023-02-13 20:48:39 · 442 阅读 · 0 评论 -
解决 IDEA 下载源码失败的问题maven-default-http-blocker (http://0.0.0.0/) Blocked mirror for repositories
解决 IDEA 下载源码失败的问题maven-default-http-blocker (http://0.0.0.0/) Blocked mirror for repositories。查到是 maven 3.8.1 版本带来的限制,详见。最后解决这个问题也比较简单,使用。原创 2023-02-08 21:12:53 · 711 阅读 · 0 评论 -
SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder
当项目启动时若出现SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder错误,可通过添加具体日志实现框架解决。原创 2023-02-07 09:48:24 · 1902 阅读 · 0 评论 -
在本地搭建spring-framework5环境
在本地搭建spring-framework5环境。原创 2023-02-08 21:14:22 · 297 阅读 · 0 评论 -
JDK源码分析之Hashtable
本类是接口的一个线程安全实现,自JDK1.0时就被添加进来。任何非空对象都可以用作键或值。为了保证从哈希表存储和检索对象,用作键的对象必须实现hashCode方法和equals方法。为什么说Hashtable是线程安全的呢?因为它里面的方法均加上了synchronized,在保证多线程并发修改时的安全性同时也降低了程序性能。建议构造Hashtable时明确指出初始容量和负载因子,如果触发扩容动作会增加程序无谓消耗,所以对于已知容量的情况下一定要指定这两个参数。原创 2023-02-08 21:13:10 · 110 阅读 · 0 评论 -
常用排序方式分析与比较
常用排序方式分析与比较下面选取在实际项目中应用较多的排序方式作一个性能比较,并会对各个方式作一个分析总结。原创 2023-02-08 21:13:22 · 90 阅读 · 0 评论 -
Hystrix使用介绍
通常一个分布式系统是由许多相互依赖的服务所组成的,这些被依赖的服务极易出现故障或响应延迟的问题。如果其中某个服务失败则会影响其他服务并进一步降低整体性能,并导致应用程序其他功能无法正常访问,在最坏的情况下,整个应用程序将崩溃。Hystrix框架通过提供熔断和降级来控制服务之间的交互依赖,通过隔离故障服务并停止故障的级联效应以提高系统的总体弹性。当依赖的远程服务开始变慢时,应用程序仍然会继续调用该远程服务,该应用程序不知道远程服务是否正常,并且每次请求进入时都会产生新线程。原创 2023-02-08 21:15:55 · 271 阅读 · 0 评论 -
在maven中处理多环境配置问题
在maven中处理多环境配置问题实际工作中项目会依次部署到多套环境,例如测试、灰度和生产。一般来说每套环境的资源地址都是独立的,这意味着项目在构建时要动态决定启用哪套配置以适应当前的环境。下面介绍在maven中实现根据环境动态处理配置的两种方式。原创 2023-02-08 21:13:49 · 656 阅读 · 0 评论 -
ApacheMaven插件开发
ApacheMaven插件开发Apache Maven本身实际上只是一个插件驱动引擎。换句话说,真正干活的是插件,例如:创建jar文件,创建war文件,编译代码,单元测试代码,创建项目文档等。原创 2023-02-08 21:14:00 · 331 阅读 · 0 评论 -
介绍JVM中OOM的8种类型
title: 介绍JVM中OOM的8种类型。原创 2023-02-07 09:48:50 · 790 阅读 · 0 评论 -
JVM垃圾回收
跟踪所有仍在使用的对象并将其余对象标记为垃圾的这一过程就叫做垃圾回收。原创 2023-02-07 09:49:01 · 141 阅读 · 0 评论 -
JVM内存模型
JVM内存模型对于Java开发人员来说,了解Java内存模型是必不可少的知识。原创 2023-02-07 09:49:12 · 298 阅读 · 0 评论 -
了解JVM架构
了解JVM架构。原创 2023-02-07 09:49:55 · 325 阅读 · 0 评论 -
构建基于SpringBoot2和Dubbo2.7的微服务应用开发框架
简单点说就是一个完整的应用被拆分成了多个应用,每个拆出来的应用都可以单独部署,每个应用负责原来那个完整应用的一部分功能,只有当这些应用全部提供服务时才是完整的。这其实很好理解,举个例子,比如某商城系统被划分成了营销子系统、订单子系统和会员子系统,在这里面每个子系统有其固有职责,对于整个商城系统来说是不可缺少的一部分,通常这种划分也被称为垂直拆分。其实所谓微服务应用算是分布式应用的一种特殊形式,它们之间区别不大,相同点很多。唯一比较明显的区分是前者对系统拆分的更加细。原创 2023-02-07 09:47:13 · 367 阅读 · 0 评论 -
从源码JAR包中生成javadocHTML页面
在javadoc目录中可以看到生成的HTML文件,单击index.html文件可以看到javadoc首页。原创 2023-02-06 11:12:16 · 304 阅读 · 0 评论 -
介绍项目前期调研、需求分析阶段的工作
架构师需要做什么?介绍项目前期调研、需求分析阶段的工作。原创 2023-02-10 22:24:32 · 2260 阅读 · 3 评论 -
使用jvisualvm连接JMX远程端口监控jvm内部情况
title: 使用jvisualvm连接JMX远程端口监控jvm内部情况对于应用程序的监控是必要的,特别是在生产环境上,我们应该始终能够提前发现潜在的问题,并在问题产生后要第一时间就知道。在真实的业务运营中监控是多维度的,几乎涵盖了软硬件以及各项业务指标。就java应用程序本身来讲,我们最关注的是jvm的内部情况,比如CPU和堆内存使用率、线程状态和垃圾回收等情况。那如何得到这些监控数据呢?好在JDK里面自带了一些工具帮我们分析这些数据并呈现报告,接下来介绍。more。原创 2023-02-06 11:13:40 · 631 阅读 · 0 评论 -
怎样在代码中记录日志
title: 怎样在代码中记录日志。原创 2023-02-04 23:41:20 · 715 阅读 · 0 评论 -
关于写好代码注释的一些建议
程序员在开发过程中编写的与业务实现无关仅说明目标代码正在做什么的一段文本描述。这段文本描述包含在代码文件中,但不影响代码的执行,也不会带来任何附加的作用,并且在代码解释或编译执行时将忽略所有的注释内容,就好像他们并不存在一样。正确使用注释可以使代码维护变得更容易,并且帮助更快找到错误。而且在维护其他人写的代码时,注释变得尤为重要。编写完善的代码与正确运行的代码一样重要。不同语言之间会有差异,下面作一个列举。根据注释的位置不同可以分成两大类。原创 2023-02-04 23:15:16 · 97 阅读 · 0 评论 -
用Maven管理第三方jar包依赖
目前绝大多数项目用apache maven做java应用依赖管理,当我们缺少某个jar包,只需要在maven中央仓库查找它的GAV坐标,然后在POM文件中声明,在构建时这个jar包会被下载。但有时候也会遇到一个情况,别人给你一个jar包,这个jar包在中央仓库、公司私有仓库和本地仓库都不存在。既然这个jar包都不在仓库里面,那还怎么使用maven管理依赖呢?原创 2023-02-04 23:02:12 · 1982 阅读 · 0 评论 -
This request has been blocked; the content must be served over HTTPS.
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an ins转载 2015-10-23 14:03:12 · 137523 阅读 · 7 评论 -
CAS单点登录(SSO)介绍及部署
介绍CASCAS 是Yale(耶鲁)大学的一个开源的企业级单点登录系统,它的特点:Java (Spring Webflow/Spring Boot) 服务组件可插拔身份验证支持(LDAP,Database,X.509,MFA)支持多种协议(CAS,SAML,OAuth,OpenID,OIDC)跨平台客户端支持(Java,.Net,PHP,Perl,Apache等)与uPortal,Lif原创 2017-02-19 23:11:13 · 21397 阅读 · 0 评论 -
正则表达式
简介 * 正则表达式 又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 * 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。概念正则原创 2016-10-17 09:57:15 · 1356 阅读 · 0 评论 -
Linux下安装Activemq-5.11.1
经过几次重复的安装activemq后,决定将详细的安装步骤写下来,不用每次都得找一大堆资料。步骤下载 (这里提供的版本是5.12.0)由于activemq是用java开发的,所以需要安装java运行环境,百度一大把博文,本文不再赘述。解压下载的文档 tar -zxvf apache-activemq-5.11.1-bin.tar.gz给解压出来的目录重新命名 mv apache-act原创 2016-04-27 15:44:39 · 2082 阅读 · 0 评论