放弃"Jenkins"的种种理由,期待更好赋能研发的持续交付平台
Jenkins 很酷,但是不完美,有历史局限性造成的问题。本文仅从“如何更好给研发团队赋能的角度”,剖析Jenkins, 探讨理想的持续交付平台, 不带货无广告~
不完美的Jenkins
Jenkins的前身是Hudson, Hudson是SUN公司时期就有的CI工具,后来因为ORA...[2023/11/20]
记录jdk17相对于jdk8增加的一下主要语法糖和新特性
jdk17 发布已经好久了,作为java的长期支持版本,引入了许多有趣且实用的新特性。这些特性不仅提高了开发效率,还增强了语言的表现力和安全性。并且是SpringBoot 3.0以后版本的硬性要求,之后势必会是java开发的主要版本。
经过我个人的测试体验,在 Java 17 环境中运...[2023/11/17]
简单地聊一聊Spring Boot的构架
本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
前言
本文小编将详细解析Spring Boot框架,并通过代码举例说明每个层的作用。我们将深入探讨Spring Boot的整体架构,包括展示层、业务逻辑层和数据访问层。通...[2023/11/15]
SpringBoot 项目优雅实现读写分离
一、读写分离介绍
当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。
读写分离实现主要是通过动态数据源功能实现的,动态数据源是一种通过在运行时动态切换数据库连接的机制。它允许应用程序根据不同...[2023/11/15]
Welcome to YARP - 7.目标健康检查 - coding-y
目录
Welcome to YARP - 1.认识YARP并搭建反向代理服务
Welcome to YARP - 2.配置功能
2.1 - 配置文件(Configuration Files)
2.2 - 配置提供者(Configuration Providers)
2.3 - 配置过滤器(C...[2023/11/15]
TIOBE 11月榜单:Java和 C# 之间的差距缩小到0.7
TIOBE 公布了 2023 年 11 月的编程语言排行榜。 虽然这期重点介绍的是Kotlin,本月,它的排名上升了 0.17%,从第 18 位上升到第 15 位,前进了 3 位。 TIOBE的10月份榜单,C# 和 Java 之间的差距越来越小,达到了历史新低,10月份两者的差距仅为 1.2%...[2023/11/13]
Spring Cloud Seata 系列:Seata-Server (1.7.1)安装与配置(集成 Nacos)
目录一、简介术语事务模式XA 模式AT 模式TCC 模式Sage 模式说明二、Seata Server 存储模式1、file 模式①修改application.xml②启动Seata-Server2、db 模式①运行mysql.sql脚本②修改application.xml③修改 config....[2023/11/13]
Spring 缓存注解这样用,太香了!
作者最近在开发公司项目时使用到 Redis 缓存,并在翻看前人代码时,看到了一种关于 @Cacheable 注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。
Spring 缓存常规配置
Spring Cache 框架给我们提供了 @Cacheable 注...[2023/11/10]
完蛋!我被 Out of Memory 包围了!
是极致魅惑、洒脱自由的Java heap space?
是知性柔情、温婉大气的GC overhead limit exceeded?
是纯真无邪、活泼可爱的Metaspace?
如果以上不是你的菜,那还有……
***蛮任性,无迹可寻的CodeCache!
性感火...[2023/11/8]
DDD技术方案落地实践
1. 引言
从接触领域驱动设计的初学阶段,到实现一个旧系统改造到DDD模型,再到按DDD规范落地的3个的项目。对于领域驱动模型设计研发,从开始的各种疑惑到吸收各种先进的理念,目前在技术实施这一块已经基本比较成熟。在既往经验中总结了一些在开发中遇到的技术问题和解决方案进行分享。
因为DDD的建...[2023/11/8]
前端常用设计模式
什么是设计模式?
? 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,设计模式并不是一种固定的公式,而是一种思想,是一种解决问题的思路;使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可维护性。
设计模式不区分...[2023/11/8]
JPA中@ElementCollection使用
转载请注明出处:
在JPA中,@ElementCollection注解主要用于映射集合属性,例如List、Set或数组等集合属性,以及Map结构的集合属性,每个属性值都有对应的key映射。这个注解可以用于实体类的字段,表示该字段是一个元素集合,每个元素都会被映射到数据库中的一行。
例...[2023/11/8]
设计模式六大原则设计模式六大原则
前言
什么是设计模式?
设计模式是软件设计人员、软件开发人员在程序代码编写中总结出来的一套编码规范,设计模式起一个指导作用,用来指导我们写出高内聚低耦合,具有良好的可扩展性和可维护性的代码。
为什么要学设计模式?
当然,设计模式不是非学不可,不了解设计模式一样可以在工作中写出符合产品要求的功能...[2023/11/6]
产品代码都给你看了,可别再说不会DDD(十):CQRS
这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https: www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。
本系列包含以下文章:
D...[2023/11/6]
小测试:HashSet可以插入重复的元素吗?
Set的定义是一群不重复的元素的集合容器。也就是说,只要使用Set组件,应该是要保证相同的数据只能写入一份,要么报错,要么忽略。当然一般是直接忽略。
如题,HashSet是Set的一种实现,自然也符合其基本的定义。它的自然表现是,一直往里面插入数据,然后最后可以得到全部不重复的数据集合...[2023/11/6]
c#中建造者设计模式详解
基础介绍:
??将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
??说白了就是将一个复杂的对象拆分成一个一个零件,然后按照既定顺序和规则进行组装,最终形成这个相对复杂的对象。
??具体可分为4个角色:
????Product(产品):复杂对象本身。
????B...[2023/11/6]
JUC并发编程学习(五)集合类不安全JUC并发编程学习(五)集合类不安全
集合类不安全
List不安全
单线程情况下集合类和很多其他的类都是安全的,因为同一时间只有一个线程在对他们进行修改,但是如果是多线程情况下,那么集合类就不一定是安全的,可能会出现一条线程正在修改的同时另一条线程启动来对这个集合进行修改,这种情况下就会导致发生并发修改异常(在jdk11的环境...[2023/11/3]
Java开发中的工作流程和步骤
前言
随着环境的变迁,大家总会更换工作,有裁员的,有跳槽的,除了进进出出的老人,还有源源不断入坑的新人。
很多人入职之后还不知道怎么快速适应工作,对我而言,除去寥寥可数的同事感情,对我而言,更换工作更像是换个环境办公。
今天记录一下每次功能开发的工作流程,当然这个流程并不具有代表...[2023/11/3]
SpringBoot数据响应、分层解耦、三层架构
响应数据
@ResponseBody
类型:方法注解、类注解
位置:Controller方法、类上
作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为json格式响应
说明:@RestController = @Controller + @ResponseBody
统一...[2023/11/3]
Prometheus+Grafana实现服务性能监控:windows主机监控、Spring Boot监控、Spring Cloud Alibaba Seata监控Prometheus+Grafana实现服务性能监控:windows主机监控、Spring Boot监控、Spring Cloud Alibaba Seata监控
1、Prometheus介绍
Prometheus使用Go语言开发,中文名称叫:普罗 米修斯。Prometheus是一个开源系统最初在SoundCloud构建的监控和警报工具包。自 2012 年成立以来,许多公司和组织已经采用了 Prometheus,它现在是一个独立的开源项目并独立于任何公司...[2023/11/3]
JUC并发编程学习笔记(四)8锁现象
8锁现象
八锁->就是关于锁的八个问题
锁是什么,如何判断锁的是谁
对象、cla 模板
深刻理解锁
锁的东西无外乎就两样:1、同步方法的调用者,2、Cla 模板。
同一个锁中,只有当前线程资源释放后才会被下一个线程所接手。
同步方法的调用者是两个不同的实例时,互不相关。
...[2023/11/3]
Spring/SpringBoot中的声明式事务和编程式事务源码、区别、优缺点、适用场景、实战
一、前言
在现代软件开发中,事务处理是必不可少的一部分。当多个操作需要作为一个整体来执行时,事务可以确保数据的完整性和一致性,并避免出现异常和错误情况。在SpringBoot框架中,我们可以使用声明式事务和编程式事务来管理事务处理。其中事务的坑也是不少,比较常见的就是事务失效,大家可以看看!后面...[2023/11/3]
【Spring】AOP实现原理
注册AOP代理创建器
在平时开发过程中,如果想开启AOP,一般会使用@EnableAspectJAutoProxy注解,这样在启动时,它会向Spring容器注册一个代理创建器用于创建代理对象,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,它实现了Sm...[2023/11/1]
为了简写这行代码,我竟使用静态和动态编译技术
背景
在我们系统中有这么一个需求,业务方会通过mq将一些用户信息传给我们,我们的服务处理完后,再将信息转发给子系统。mq的内容如下:
@Data
public cla Person {
第一部分
private Integer countryId;
...[2023/11/1]
HExcel,一个简单通用的导入导出Excel工具类 - huanzi-qchHExcel,一个简单通用的导入导出Excel工具类 - huanzi-qch
前言
日常开发中,Excel的导出、导入可以说是最常见的功能模块之一,一个通用的、健壮的的工具类可以节省大量开发时间,让我们把更多精力放在业务处理上中
之前我们也写了一个Excel的简单导出,甚至可以不依赖poi,还扩展了纯前端导出Excel!详情请戳:《POI导出Excel&nb...[2023/11/1]
Isito 入门(九):安全认证
本教程已加入 Istio 系列:https: istio.whuanle.cn
目录7,认证Peer AuthenticationPeerAuthentication 的定义实验RequestAuthencationRequestAuthencation 的定义AuthorizationPol...[2023/11/1]
Java-全网最详细反射Java-全网最详细反射
Java-反射
前言
Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动...[2023/10/30]
设计模式—创建型模式之原型模式
设计模式—创建型模式之原型模式
原型模式(Prototype Pattern)用于创建重复的对象,同时又能保证性能。
本体给外部提供一个克隆体进行使用。
比如我们做一个SjdwzMybatis,用来操作数据库,从数据库里面查出很多记录,其中很多记录改变很少。每次查数据库,把所有数据都封装一个...[2023/10/30]
C# 在流行度指数上将超过Java
2023年10月最新的TIOBE编程语言流行指数表明:C#和Java之间的差距从未如此之小,目前,差异仅为1.2%,如果趋势保持这种状态,C#将在大约2个月内超过Java,TIOBE Software首席执行官Paul Jansen的认为,C#的崛起是以牺牲Java为代价的 - Oracle和K...[2023/10/25]
Util应用框架 UI 开发快速入门
本文是Util应用框架 Angular UI 开发快速入门教程.
Util前端技术概述
Util 应用框架目前仅支持用于开发管理后台的 UI.
本文介绍了 Util UI 的技术特点和功能支持.
UI 技术选型
Js语言
TypeScript
TypeScript 是 微软开发的脚...[2023/10/25]
学习一下Java的ArrayList和contains函数和扩容机制学习一下Java的ArrayList和contains函数和扩容机制
起因
在Leetcode上做题写了两种暴力解法,但是执行效率上不太一样。
时间上差很远,内存虽然差不多但是前者击败30%,后者击败94%。这两种解法区别是用一条ArrayList还是两条来存数据,所以contains虽然执行次数一样但是检测的长度上不一样,而且ArrayList的扩容次数也...[2023/10/25]
一篇了解springboot3请求参数种类及接口测试
SpringBoot3数据请求:
原始数据请求:
原始方式
@RequestMapping(" impleParam")
public String simpleParam(HttpServletRequest request){
获取请求参数
...[2023/10/25]
IDEA工具第二篇:自定义Java方法注释模板
网上搜索类似的文章有很多,但是一味的复制粘贴总会出现各种奇葩问题,最后然并卵!今天特意自己研究琢磨一下,将最终结果分享给大家,100%亲测可用。
一、说明
想必大家都用过Eclipse的方法注释生成,方法上输入 /**,回车走你,巴拉巴拉如下的注释便生成了,今天就悄悄告诉大家如何自定义这样的模...[2023/10/25]
java后端操作树结构 - spiderMan1-1
一、树结构的三种组装方式(递归.双层for循环,map)
(1)递归
普通递归方法
public Result getBmsMenuList(UserSe ionVO userSe ionInfo) {
查询顶级节点菜单
List<BmsMenuV...[2023/10/25]
小景的工具使用--Java诊断工具Arthas的使用说明
小景最近在做程序和数据库的压测工作,期间监控压测数据,分析程序原因变成了一个待解决的问题,根据公司小伙伴的建议,接触了阿尔萨斯这个诊断工具,下面小景分别基于Linux操作系统和Windows操作系统,来详细的说下使用说明和使用心得。
Arthas(阿尔萨斯)是一个用于诊断Jav...[2023/10/25]
Java替换RequestBody和RequestParam参数的属性
Java替换RequstBody和RequestParam参数的属性
本文主要讲解在Java环境中如何替换RequestBody和RequestParam参数中的属性
背景
近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果(项目历史原因,不方便上Jwt授权这套),所...[2023/10/25]
jenkins实践篇(1)——基于分支的自动发布
问题背景
想起初来公司时,我们还是在发布机上直接执行发布脚本来运行和部署服务,并且正式环境和测试环境的脚本都在一起,直接手动操作脚本时存在比较大的风险就是将环境部署错误,并且当时脚本部署逻辑还没有检测机制,服务部署起来后,还必须登录到对应机器查看服务是否正确启动,整个部署过程可以说是很折磨人了。...[2023/10/25]
Facade 外观模式简介与 C# 示例【结构型5】【设计模式来了_10】Facade 外观模式简介与 C# 示例【结构型5】【设计模式来了_10】
〇、简介
1、什么是外观模式?
一句话解释:
??将一系列需要一起进行的操作,封装到一个类中,通过对某一个方法的调用,自动完成一系列操作。
外观模式是一种简单而又实用的设计模式,它的目的是提供一个统一的接口,使得客户端可以通过这个接口来访问子系统中的一组接口,而无需关心子系统中接口的具体实现...[2023/10/25]
轻松合并Excel工作表:Java批量操作优化技巧
摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
前言
在Excel中设计表单时,我们经常需要对收集的信息进行统计分析。例如,学校给老师统计课时,医院给医护人员统计班次等。传统的手工方式需要逐个对比数...[2023/10/23]
使用Spring Integration接收TCP与UDP请求
1. 简介
Spring Integration 是一个开源的项目,它是 Spring 生态系统的一部分,旨在简化企业集成(Enterprise Integration)的开发。它提供了一种构建消息驱动的、松散耦合的、可扩展的企业应用集成解决方案的方式。Spring Integration 基于...[2023/10/23]
基于SpringBoot+Netty实现即时通讯(IM)功能
简单记录一下实现的整体框架,具体细节在实际生产中再细化就可以了。
第一步 引入netty依赖
SpringBoot的其他必要的依赖像Mybatis、Lombok这些都是老生常谈了 就不在这里放了
<dependency>
<grou...[2023/10/20]
告别空指针让代码变优雅,Optional使用图文例子源码解读
一、前言
我们在开发中最常见的异常就是NullPointerException,防不胜防啊,相信大家肯定被坑过!
这种基本出现在获取数据库信息中、三方接口,获取的对象为空,再去get出现!
解决方案当然简单,只需要判断一下,不是空在去后续操作,为空返回!
所有在JDK8时出现了专门处理的方...[2023/10/20]
想让你的代码简洁,试试这个SimpleDateFormat类高深用法
本文分享自华为云社区《从入门到精通:SimpleDateFormat类高深用法,让你的代码更简洁!》,作者:bug菌。
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
@[toc]
前言
日期时间在开发中是非常常见的需求,尤其是在处...[2023/10/20]
Java开发面试--群面专区
目录一、群面背景二、群面流程三、群面角色四、群面细节五、群面礼仪六、群面话术七、个人演讲八、群面题型
群面也称无领导小组~ 候选人们被要求在一个相对自由的环境中展示他们的能力,并在没有明显领导者的情况下进行合作和协商。
一、群面背景
大规模招聘需求:互联网大厂通常规模庞大,每年需要招聘大量...[2023/10/20]
通过Lambda函数的方式获取属性名称
前言:
最近在使用mybatis-plus框架, 常常会使用lambda的方法引用获取实体属性, 避免出现大量的魔法值.
public List<User> listBySex() {
LambdaQueryWrapper<User> wrapper = new ...[2023/10/20]
JDK21的虚拟线程是什么?和平台线程什么关系?
虚拟线程(Virtual Thread)是 JDK 而不是 OS 实现的轻量级线程(Lightweight Proce ,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。
在引入虚拟线程之前,java.lang.Thread 包已经支...[2023/10/19]
手写商用Java虚拟机HotSpot,疯狂磨砺技术中
在当前Java行业激烈竞争的形式下,唯有掌握技术,心中才不能慌。在多年前,我就开始苦练底层技术,但是眼看百遍也不如手过一遍,所以我打算把虚拟机的精华实现部分用手敲出来,这个过程注定不会轻松,但是心态不能着急,要一步一步来,一年二年三年后终能达成。
这个过程还会录制一些免费视频,简单介绍一下这个...[2023/10/19]
Swagger系列:SpringBoot3.x中使用Knife4j
目录一、简介二、版本说明三、使用四、效果图
一、简介
官网:https: doc.xiaominfo.com/
Knife4j是一个集Swagger2 和 OpenAPI3 为一体的增强解决方案
Knife4j 是为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解...[2023/10/19]
高性能日志脱敏组件:已支持 log4j2 和 logback 插件
项目介绍
日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强,编写起来又特别麻烦。
sensitive提供基于注解的方式,并且内置了常见的脱敏方式,便于开发。
同时支持 logback 和 log4j2 等常见的日志脱敏插件。
拓展阅读
金融用户敏感数据如何优雅地实现...[2023/10/19]
Node.js中常用的设计模式有哪些?
本文由葡萄城技术团队首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
设计模式简介
设计模式是由经验丰富的程序员在日积月累中抽象出的用以解决通用问题的可复用解决方案,它提供了标准化的代码设计方案提升开发体验。Node.js 作为一款用来构建...[2023/10/19]