JAVA日知录

其他

SpringBoot 如何进行业务校验,老鸟们都这么玩的!

获取源码地址。新开了一个纯技术交流群,群里氛围还不错,无广告,无套路,单纯的吹牛逼,侃人生,想进的可以通过下方二维码加我微信,备注进群。JVM调优的几种场景(建议收藏)2022-01-14
2022年1月19日
其他

JVM调优的几种场景(建议收藏)

cnblogs.com/spareyaya/p/13174003.html大家好,我是飘渺!最近很多小伙伴跟我说,自己学了不少JVM的调优知识,但是在实际工作中却不知道何时对JVM进行调优。今天,我就为大家介绍几种JVM调优的场景。在阅读本文时,假定大家已经了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。cpu占用过高cpu占用过高要分情况讨论,是不是业务上在搞活动,突然有大批的流量进来,而且活动结束后cpu占用率就下降了,如果是这种情况其实可以不用太关心,因为请求越多,需要处理的线程数越多,这是正常的现象。话说回来,如果你的服务器配置本身就差,cpu也只有一个核心,这种情况,稍微多一点流量就真的能够把你的cpu资源耗尽,这时应该考虑先把配置提升吧。第二种情况,cpu占用率长期过高,这种情况下可能是你的程序有那种循环次数超级多的代码,甚至是出现死循环了。排查步骤如下:(1)用top命令查看cpu占用情况这样就可以定位出cpu过高的进程。在linux下,top命令获得的进程号和jps工具获得的vmid是相同的:(2)用top
2022年1月14日
其他

我懵了,那个听起来很厉害的微内核架构是个什么鬼?

还有Dubbo都实现了自己的微内核架构。那么,在介绍什么是微内核架构之前,我们有必要先阐述这些开源框架会使用微内核架构的原因。为什么要使用微内核架构?微内核架构本质上是为了提高系统的扩展性
2022年1月13日
其他

Logback日志这样配置,让你性能提升10倍!

https://juejin.cn/post/6844903909920604174大家好,我是飘渺。今天我们讲一下logback的异步日志配置,希望通过本文你可以了解以下内容:1.日志输出到文件并根据LEVEL级别将日志分类保存到不同文件2.通过异步输出日志减少磁盘IO提高性能3.异步输出日志的原理配置文件logback-spring.xmlSpringBoot工程自带
2022年1月7日
其他

SpringBoot启动时如何对配置文件进行校验?这种方法才叫优雅!(文末福利)

概述在项目开发过程中,某个功能需要依赖在配置文件中配置的参数。这时候就可能出现下面这种现象:有时候经常出现项目启动了,等到使用某个功能组件的时候出现异常,提示参数未配置或者bean注入失败。那有没有一种方法在项目启动时就对参数进行校验而不是在实际使用的时候再抛出提示呢?当然可以,答案就是使用Spring提供的Java
2022年1月5日
其他

SpringBoot中如何实现全链路调用日志跟踪?这种方法才叫优雅!

}}说明:继承ThreadPoolExecutor类,重新执行任务的方法通过ThreadMdcUtil对任务进行一次包装线程traceId封装工具类:ThreadMdcUtil.javapublic
2022年1月2日
其他

我懵了!架构描述是个啥玩意?

作为一名程序员,你历经千幸万苦终于成为了架构师。现在你接到了一个任务,需要设计一款软件。你满心欢雀,冥思苦想。系统在你心里一点一点成型,数据库如何设计?代码如何实现?组件如何部署?你脑海里都有了答案。是时候了,你倾尽全力设计的系统,应该让所有人都来欣赏!可是,该如何表达你的设计,你的思想呢?程序员的时候,你只需要跟相关开发同学打交道,完成组长分配给你的开发任务,那时候你的思想都在代码里,一个个设计模式,一行行代码,甚至几行零散的注释,都是你思想设计的结晶。现在你是架构师了,你需要跟业务、开发、测试、运维打交道,他们中很多一部分人根本就看不懂你的代码,况且项目刚开始还没有代码。所以我们要找一个合适,一个让相关方都看得懂的东西来呈现、来描述我这完美的架构,这就是架构描述,而最终通过某一个模板呈现出来的产物就是
2021年12月23日
其他

这才是业务用例,别再搞错了!

大家好,我是飘渺。前几天在做架构评审时发现一个现象:不少架构师在做业务建模时都将业务用例画错了,要么画的粒度很细,要么完全是将业务用例当成了系统用例来画。归根结底,其实是没理解业务建模的本质,没有抓住业务用例的精髓。而要理解业务用例的精髓,咱们得先知道什么是组织,理解了组织,业务建模的核心我们就掌握了一半。组织业务建模的目的是从
2021年12月14日
其他

一名架构师,他要如何做微服务技术选型?(文末福利)

作为一名架构师,需要规划产品技术路线,负责技术选型。而技术栈选型主要参考以下几个标准:安全稳定,不能经常被爆出安全漏洞开源社区活跃度,加入Apache的组件优先考虑一线互联网公司落地产品,有大公司为其背书文档阅读性好本篇为大家带来微服务架构的后端技术选型,当你需要进行技术选型时,可以参照他来设计自己的决策树。开发语言JAVA主流编程语言,适合构建大型后台服务GolangGo语言是谷歌2009发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。目前作为云计算领域的不二之选!开发IDEIntelliJ
2021年8月30日
其他

SpringBoot 如何进行参数校验?老鸟们都是这么玩的!

大家好,我是飘渺。前几天写了一篇《SpringBoot如何统一后端返回格式?老鸟们都是这样玩的!》阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数校验Validator,以及参数校验的高阶技巧(自定义校验,分组校验)。“此文是依赖于前文的代码基础,已经在项目中加入了全局异常校验器。(代码仓库在文末)”首先我们来看看什么是Validator参数校验器,为什么需要参数校验?为什么需要参数校验在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,例如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。靠代码对接口参数一个个校验的话就太繁琐了,代码可读性极差。Validator框架就是为了解决开发人员在开发的时候少写代码,提升开发效率;Validator专门用来进行接口参数校验,例如常见的必填校验,email格式校验,用户名必须位于6到12之间
2021年8月12日
其他

SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!

大家好,我是飘渺。今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常。首先我们来看看为什么要返回统一的标准格式?为什么要对SpringBoot返回统一的标准格式在默认情况下,SpringBoot的返回格式常见的有三种:第一种:返回
2021年7月16日
其他

软件工程师采用新技术的正确方式

新技术并不坏。我喜欢尝试使用新的框架和编程语言,但是作为领导者,你必须在好奇心和业务目标之间取得平衡。人们很容易陷入未经验证的新工具的泡沫中,因此,你应该制定标准来帮助你决定应该何时尝试新的工具。
2021年7月12日
其他

小团队中微服务的可怕之处

年,不应该把任何应用作为单体来构建,对吧?很遗憾,微服务并非在每一种环境下都可以发挥作用,在盲目使用之前,你必须确定它们提供了你所需要的价值。我见过几个典型的项目,有
2021年6月22日
自由知乎 自由微博
其他

史上最详细的docker学习手册,请查收!

"/var/lib/docker/volumes/cf527694ebafb92426a52f1916b26832b4c8977093083450a96fbccb3d866669/_data",
2021年6月15日
其他

给老板解释解释,为什么要用SpringCloud alibaba作为微服务开发框架???

在微服务架构中,考虑到服务数量和配置信息的分散性,一般都需要引入配置中心的设计思想和相关工具。通过部署配置中心服务器,将原本分散的配置文件从应用中剥离,集中转存到配置中心。一般配置中心会提供
2021年5月31日
其他

SpringBoot开发秘籍 - 集成参数校验及高阶技巧

ex.getAllErrors().stream().map(ObjectError::getDefaultMessage).collect(Collectors.joining(",
2021年5月18日
其他

使用MySQL,请用好 JSON 这张牌!

来源:http://t.hk.uy/aME关系型的结构化存储存在一定的弊端,因为它需要预先定义好所有的列以及列对应的类型。但是业务在发展过程中,或许需要扩展单个列的描述功能,这时,如果能用好
2021年5月10日
其他

一文读懂MySQL查询语句的执行过程

包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图、函数等,还有个通用的日志模块binlog日志模块;存储引擎层
2021年5月5日
其他

权限系统就该这样设计

给用户添加角色就是在用户管理页面,点击某个用户去授予角色,可以一次为用户添加多个角色;给角色添加用户就是在角色管理页面,点击某个角色,选择多个用户,实现了给批量用户授予角色的目的。
2021年4月25日
其他

SpringBoot开发秘籍 - 集成Graphql Query

概述REST作为一种现代网络应用非常流行的软件架构风格受到广大WEB开发者的喜爱,在目前软件架构设计模式中随处可见REST的身影,但是随着REST的流行与发展,它的一个最大的缺点开始暴露出来:在很多时候客户端需要的数据往往在不同的地方具有相似性,但却又不尽相同。如同样的用户信息,在有的场景下前端只需要用户的简要信息(名称、头像),在其他场景下又需要用户的详细信息。当这样的相似但又不同的地方多的时候,就需要开发更多的接口来满足前端的需要。随着这样的场景越来越多,接口越来越多,文档越来越臃肿,前后端沟通成本呈指数增加。基于上面的场景,我们迫切需要有一种解决方案或框架,可以使得在使用同一个领域模型(DO、DTO)的数据接口时可以由前端指定需要的接口字段,而后端根据前端的需求自动适配并返回对应的字段。这就是我们今天的主角GraphQL。场景模拟考虑下面的场景:用户
2021年4月21日
其他

基于 Kubernetes 的微服务项目设计与实现

项目很简单,分成了3个部分,一个是注册中心,也就是利用eureka实现注册中心服务,另一个则是基础库项目,大部分功能都在这里实现,最后则是各个微服务项目,微服务项目只需要简单调用基础库就能完成。
2021年4月7日
其他

架构设计方法论

而右边是基于领域驱动开发,在开发前先去思考业务的本质,先把领域层分析出来,再根据分析出来的领域层进行界面设计、架构设计、代码开发,这是由内而外的设计,这样做出来的系统就会比较稳定。
2021年4月2日
其他

如何写出让同事无法维护的代码?

操作符重载。重载操作符可以让你的代码变得诡异,感谢CCTV,感谢C++。这个东西是可以把混乱代码提高到一种艺术的形式。
2021年3月10日
其他

SpringCloud Alibaba微服务实战二十八 - 网关授权VS微服务授权

在SpringCloud架构中,实现授权功能有两种实现方式:在网关层进行授权由后端微服务自己授权两种方式在此系列文章中都有实现方案,那么问题来了:哪种才是最优方案,哪种方案更合理呢?很抱歉,看完这篇文章你也不一定能得到你想要的答案,因为结论是并没有最优方案,两种方案各有千秋,只有根据自身业务选择对应的方案。本文我们将两种方案做一个简单对比,以便大伙在做方案决策有个选择参考。解决方案对比首先我们看看两种方案实现的原理:如果对具体实现方式有疑问的同学可以参考这篇文章:SpringCloud
2021年3月9日
其他

面试被吊打 - Redis原理

AOF采用的是写后日志的方式,Redis先执行命令把数据写入内存,然后再记录日志到文件中。AOF日志记录的是操作命令,不是实际的数据,如果采用AOF方法做故障恢复时需要将全量日志都执行一遍。
2021年3月4日
其他

RBAC模型整合数据权限

按照上面的设计我们需要区分各个大区管理的数据权限则需要建立不同的大区角色,如安徽大区销售经理、上海大区销售经理,然后分别给角色勾选对应的数据规则。这里就类似于RBAC1中的角色继承的概念了。
2021年3月1日
其他

RESTful API如何进行版本控制

}}下图展示了我们如何使用Postman执行带有请求Accept的Get方法。请求:http://localhost:8080/student/produce
2021年1月25日
其他

SpringCloud Alibaba二十五 | 网关Restful接口拦截

GET、PUT、POST三种不同权限,很显然这样不能满足精细权限控制。本章内容我们就来解决这个Restful接口拦截的问题,使其能支持精细化的权限控制。场景演示我们看下实际的案例,演示下这种场景。在
2021年1月14日
其他

SpringCloud Alibaba微服务运维一 - 集成SkyWalking

概述大家都知道在微服务架构下的一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,如果没有及时处理很有可能会造成整个系统崩溃。面对以上情况,我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。本章内容我们来给我们的微服务集成SkyWalking监控,毕竟都2021年了,生产环境应该很少人使用zipkin来作为调用链监控吧。手动狗头原来在
2021年1月6日
其他

基于Prometheus和Grafana的监控平台 - 环境搭建

并且有很多开源的dashborad可以使用,可以快速地搭建起一个非常精美的监控平台。它与Prometheus的关系就类似于Kibana与ElasticSearch。
2020年12月16日
其他

SpringCloud Alibaba微服务实战二十一 - 整合Dubbo

自动续期的解决方案2、SpringBoot开发秘籍-事件异步处理3、架构师之路-服务器硬件扫盲4、架构师之路-微服务技术选型5、RocketMQ进阶
2020年12月8日
其他

SpringBoot开发秘籍 - 事件异步处理

{...}使用了Async后会使用默认的线程池SimpleAsyncTaskExecutor,一般我们会在项目中自定义一个线程池。@Configurationpublic
2020年9月14日
其他

架构师之路 - 服务器硬件扫盲

backup)在该模式下,一个端口处于主状态,一个处于备状态,所有流量都在主链路上发出和接收,备链路不会有任何流量。当主端口down掉时,备端口接管主状态。
2020年9月7日
其他

SpringCloud Alibaba微服务实战十九 - 集成RBAC授权

概述前面几篇文章我们一直是在实现SpringCloud体系中的认证功能模块,验证当前登录用户的身份;本篇文章我们来讲SpringCloud体系中的授权功能,验证你是否能访问某些功能。认证授权很多同学分不清认证和授权,把他们当同一个概念来看待。其实他们是两个完全不同的概念,举个容易理解的例子:你是张三,某知名论坛的版主。在你登录论坛的时候输入账号密码登录成功,这就证明了你是张三,这个过程叫做认证(authentication)。登录后系统判断你是版主,你可以给别人发表的帖子加亮、置顶,这个校验过程就是授权(authorization)。简而言之,认证过程是告诉你你是谁,而授权过程是告诉你你能做什么?在SpringCloud
2020年8月7日
其他

为什么微服务需要 API 网关?

https://kaiwu.lagou.com/course/courseInfo.htm?courseId=69#/detail/pc?id=1913作者:拉勾教育
2020年8月3日
其他

如何优雅的实现分布式锁

端点,一个正常执行业务逻辑,另外一个实例访问出现如下错误:说明第二个实例没有拿到锁,证明了分布式锁的存在。如果本文对你有帮助,别忘记给我个三连:点赞,转发,评论。咱们下期见!收藏
2020年7月20日
其他

关于JWT Token 自动续期的解决方案

但是这样又会导致前端用户需要频繁登录(token过期),甚至有的表单比较复杂,前端用户在填写表单时需要思考较长时间,等真正提交表单时后端校验发现token过期失效了不得不跳转到登录页面。
2020年7月16日
其他

还不了解ETL?看看这篇文章吧!

比对较复杂,设计较为复杂,速度较慢。与触发器和时间戳方式中的主动通知不同,全表比对方式是被动的进行全表数据的比对,性能较差。当表中没有主键或唯一列且含有重复记录时,全表比对方式的准确性较差。
2020年7月7日
其他

RocketMQ进阶 - 事务消息

注解,保证两个操作事务是一个原子操作。这样如果事务日志表中有这个本地事务的信息,那就代表本地事务执行成功,需要Commit,相反如果没有对应的事务日志,则表示没执行成功,需要Rollback
2020年7月1日
其他

架构师之路-微服务技术选型

Apollo:是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
2020年6月29日
其他

数据库优化 - 实例参数优化

fsync)到磁盘上,才能保证数据的持久性。这个刷盘,是一个随机写,性能较低,如果每次事务提交都要刷盘,会极大影响数据库的性能。所有数据库在架构设计中都会采用如下两个优化手法:
2020年6月27日
其他

数据库优化技巧 - SQL语句优化

CONTROL监控工具达梦数据库AWR报告测试工具loadrunner等达梦性能监控工具(dem)相关内部视图如v、session_wait等SQL编写技巧SQL编写有以下几个通用的技巧:
2020年6月23日
其他

使用Hexo 搭建你的技术博客

如果你不太喜欢nexo的默认主题,可以更换一个主题。这里我们选择Next作为我们的博客主题,官方地址为:https://github.com/theme-next/hexo-theme-next
2020年6月22日
其他

架构师之路 - 虚拟化技术与容器Docker

今天主要对虚拟化技术及容器做了个简单的梳理,虚拟化和容器初衷与目的都是为了更好的提高资源利用率,至于两者之间的不同大家要务必记住一点:虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。
2020年6月18日
其他

架构师之路 - 虚拟化技术与容器Docker

今天主要对虚拟化技术及容器做了个简单的梳理,虚拟化和容器初衷与目的都是为了更好的提高资源利用率,至于两者之间的不同大家要务必记住一点:虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。
2020年6月18日
其他

SpringCloud Alibaba微服务实战十四 - SpringCloud Gateway集成Oauth2.0

集成Oauth2。概念部分image.png在网关集成Oauth2.0后,我们的流程架构如上。主要逻辑如下:1、客户端应用通过api网关请求认证服务器获取access_token
2020年3月17日
其他

SpringCloud Alibaba微服务实战十三 - Oauth2.0安全认证

点击箭头处“JAVA日知录”,关注并星标哟!!导读:为了保证我们微服务的安全性,本章主要内容是使用Oauth2.0给我们微服务加上安全校验。概念为了保证服务的安全性,往往都会在接口调用时做权限校验。在分布式架构中我们会把复杂的业务拆成多个微服务,这样不得不在所有服务中都实现这样的权限校验逻辑,这样就会有很多代码和功能冗余。所以在微服务架构中一般会独立出一个单独的认证授权服务,供其他所有服务调用。在SpringCloud体系中,我们只对网关层开放外网访问权限,其他后端微服务做网络隔离,所有外部请求必须要通过网关才能访问到后端服务。在网关层对请求进行转发时先校验用户权限,判断用户是否有权限访问。我们一般使用Oauth2.0来实现对所有后端服务的统一认证授权。这期内容不讲Oauth2.0协议,只讲实现过程。如果大家对Oauth2.0不是很了解,可以翻看我之前的博客。Oauth2认证服务建立认证服务Auth-Service
2020年3月5日
其他

SpringCloud Alibaba微服务实战十二 - 网关限流

writeResponse方法接口修改Gateway配置类,注入CustomGatewayBlockExceptionHandler@Configurationpublic
2020年3月1日
其他

SpringCloud Alibaba微服务实战十一 - Swagger接口文档聚合

点击箭头处“JAVA日知录”,关注并星标哟!!导读:在SpringCloud体系架构中,我们需要的每个服务都需要对外输出接口文档,本篇内容主要是给我们的微服务配上Swagger的接口文档,并在网关层完成接口聚合。Swagger2简介在当下很多项目都会采用前后端分离的模式,前端和后端的工作由不同的开发人员完成。在这种开发模式下,我们需要维护一份及时更新且完整的Rest
2020年2月16日
其他

SpringCloud Alibaba微服务实战十 - 服务网关

在SpringCloud体系架构中,我们需要部署一个单独的网关服务对外提供访问入口,然后网关服务根据配置好的规则将请求转发至具体的后端服务,本章内容主要是给我们的微服务加上网关SpringCloud
2020年1月16日