框架全集
文章平均质量分 62
伟子涵
每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛
展开
-
Springboot Admin 服务监控
2.Spring Boot Admin 可以监控 Spring Boot 单机或集群项目,它提供详细的健康 (Health)信息、内存信息、JVM 系统和环境属性、垃圾回收信息、日志设置和查看、定时任务查看、Spring Boot 缓存查看和管理等功能。方式二 首先 被监控和管理的应用程序 注册到SpringCloud 集成的注册中心 然后Springboot Admin Server 通过注册中心获取到被监控和管理的应用程序。被监控和管理的应用(微服务) 注册到Admin Server 的两种方式。原创 2022-10-26 15:42:39 · 677 阅读 · 0 评论 -
微服务 领域驱动DDD之 服务拆分
认识领域驱动设计DDD 、电商工程业务解读及微服务模块拆分 工程通用与配置两大基础模块 1.领域是对功能需求的划分;大的领域下面还有许多小的子领域单一职责、高内聚低耦合:简单来说一张表划分为一个服务。通用性划分的形式,比如大中台 / 小中台。服务粒度适中:服务不要太细(有的团队甚至一个接口一个服务)。以业务模型切入:比如产品,用户,订单为一个模型来切入。演进式拆分:刚开始不要划分太细,可以随着迭代过程来逐步优化。避免环形依赖与双向依赖:尽量不要做服务之间的循环依赖。原创 2022-09-06 23:01:45 · 898 阅读 · 0 评论 -
重学缓存-Redis的优缺点
总结 一句话 Redis性能高、原子操作、支持多种数据类型,主从复制与哨兵监控,持久化操作 这才导致各大公司都使用它 Redis 6.0 之后的版本开始选择性使用多线程模型。Redis 选择使用单线程模型处理客户端的请求主要还是因为 CPU 不是 Redis 服务器的瓶颈,使用多线程模型带来的性能提升并不能抵消它带来的开发成本和维护成本,系统的性能瓶颈也主要在网络 I/O 操作上;...原创 2022-08-16 22:07:02 · 657 阅读 · 0 评论 -
在项目当中遇到坑 feign调用微服务数据格式转换为 linkedHashMap
因为rpc远程调用在底层还是使用的HTTPClient,所以在传递参数的时候,必定要有个顺序,当你传递集合(list/map)的时候集合里面的值也要有顺序,不然服务层在接的时候就出问题了,所以它才会从list转为linkedhashMap!这里很奇怪,我调用方,和被调用方都是用的一个bean,而且返回的是list,怎么会出现了LinkedHashMap,然后转换失败呢。这里我看到第三个的时候,想了想,我这里被调用端不用泛型返回,只在调用端,用实体类类型接收,feign是不是可以帮我自动转换类型。...原创 2022-08-15 17:37:34 · 1259 阅读 · 0 评论 -
重学设计模式之代理模式一 静态代理
当Bean 有实现接口时 ,Spring 就会用JDK 的动态代理。2.在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢。 1.代理模式能将代理对象与真实被调用的目标对象分离。 代理对象在客户端和目标对象之间起到中介的作用。为其他对象提供一种代理,以控制对这个对象的访问。1.代理模式会造成系统设计中类的数目增加。6.Spring 代理选择-扩展。 3.保护目标对象。 4.增强目标对象。 1、保护目标对象。 2、增强目标对象。...原创 2022-08-03 22:09:56 · 164 阅读 · 0 评论 -
重学设计模式之-桥接模式
2、一个类存在两个或多个独立变化的维度且这两个或多个维度都需要独立进行扩展。将抽象部分与它的具体实现部分分离使它们都可以独立地变化解耦。通过组合的方式建议两个类之间联系,而不是继承。3、不希望使用继承或因为多层继承导致系统类的个数增加。1、抽象和具体实现之间增加更多的灵活性。1.分离抽象部分及具体实现部分解耦。2.需要正确地设别出系统中两个独立变化的维度。1.2类型结构型。桥接模式jdk当中应用解析。桥接模式和适配器模式。...原创 2022-08-01 21:55:04 · 234 阅读 · 0 评论 -
重学设计模式之-组合模式-mybatis-SqlNode使用组合模式
1.清楚地定义分层次的复杂对象,表示对象的全部或部分层次。2.让客户端忽略了层次的差异方便对整个层次结构进行控制。将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使客户端对单个对象和组合对象保持一致的方式处理。1、希望客户端可以忽略组合对象与单个对象的差异时。类它使用的是接口而我的案例当中使用抽象类。在mybatis使用组合模式类。当中是用组合模式的代码如图。5.组合-相关的设计模式。组合模式和访问者模式。...原创 2022-07-31 10:13:54 · 274 阅读 · 0 评论 -
重学设计模式-享元设计模式-tomcat当中使用
运用共享技术有效地支持大量细粒度的对象一句话来说的话就是减少创建对象的数量从而减少内存的占用。1.减少对象的创建降低内存中对象的数量,降低系统的内存,提高效率。1、常常应用于系统底层的开发以便解决系统的性能问题。提供了减少对象数量从而改善应用所需的对象结构的方式。2、系统有大量相似对象、需要缓冲池的场景。享元设计模式jdk当中应用解析。当中是用享元模式的代码如图。当中大量的使用享元设计模式。1.2类型结构型。6.享元-相关的设计模式。...原创 2022-07-28 22:48:56 · 234 阅读 · 0 评论 -
重学设计模式-适配器模式-spring当中的应用
2、不是软件设计阶段考虑的设计模式,是随着软件维护由于不同产品不同厂家造成功能类似而接口不相同情况下的解决方案。1、以及存在的类,它的方法和需求不匹配时(方法结果相同或相似)1.能提高类的透明性和复用,现有的类复用但不需要改变。1.适配器编写过程需要全面考虑,可能会增加系统的复杂性。在SpringMvc当中使用适配器设计模式应用。将一个类的接口转换成客户期望的另一个接口。适配器模式和外观模式两个适配的粒度不同。1.2类型结构型。6.适配-相关的设计模式。.........原创 2022-07-27 22:23:46 · 514 阅读 · 0 评论 -
重学设计模式之 装饰者模式
1.继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能。2、动态的给一个对象添加功能,这些功能可以再动态的撤销。2.通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果。1、扩展一个类的功能或给一个类添加附加职责。在不改变原有对象的基础之上,将功能附加到对象上。1.会出现更多的代码,更多的类,增加程序复杂性。在mybatis当中使用装饰者模式应用为。1.2类型结构型。5.装饰者-相关的设计模式。装饰者模式和适配器模式。装饰者模式和代理模式。...原创 2022-07-26 22:56:29 · 163 阅读 · 0 评论 -
重学设计模式之外观模式
2、构建多层系统结构,利用外观对象作为每层的入口简化层间调用。又叫门面模式提供了一个统一的接口,用来访问子系统中的一群接口。1.简化了调用过程无需了解深入子系统,防止带来风险。外观模式定义了一个高层接口,让子系统更容易使用。1、子系统越来越复杂,增加外观模式提供简单调用接口。1.增加子系统扩展子系统行为容易引入风险。在mybatis当中使用外观设计模式应用。1.2类型结构型。外观模式和抽象工厂模式。外观模式和中介者模式。...原创 2022-07-25 23:13:57 · 208 阅读 · 0 评论 -
重学设计模式之 原型设计模式
定义1.类初始化消耗较多资源2.new产生的一个对象需要非常繁琐的过程 数据准备 访问权限等3.构造函数比较复杂4.循环体中生产大量对象时1.简化创建过程 2.原型模式性能比直接new一个对象性能高1.必须配备克隆方法2.对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风险。3.浅拷贝 深拷贝要运用得当1.0 邮件类2.0 发送邮件工具类3.0 测试类......原创 2022-07-22 22:51:20 · 143 阅读 · 0 评论 -
单例模式(三)最佳实践枚举单例与ThreadLocal的单例
6.单例模式在springmybatis框架当中的使用如图所示。3.编写ThreadLocalInstance单例模式。5.测试类这里就不写了测试代码都在代码如下当中。6.1spring当中这个类。在mybatis当中使用该类。原创 2022-07-21 22:53:36 · 273 阅读 · 0 评论 -
单例模式(二)懒汉式之多线程与内部类
在之前单例模式一文章基础上进行编写代码如下。1.使用线程安全情况进行改造。原创 2022-07-19 23:34:00 · 154 阅读 · 0 评论 -
重学设计模式之单例模式(一)
单例模式之懒汉模式 定义:保证一个类仅有有一个实例 病提供一个全局访问点原创 2022-07-18 22:55:02 · 121 阅读 · 0 评论 -
重学设计模式之 建造者模式
定义1.如果一个对象有非常复杂的内部结构 很多属性2.想把复杂对象的创建和使用分离1.封装性好 创建和使用分离2.扩展性好、建造类之间独立 一定程度上解耦1.产生多余的builder 对象2.产品内部发生变化 建造者都需要进行修改 成本较大1.建造者 注重方法调用顺序 可以创建一些复杂的产品 由各种复杂的组件组成2。工厂模式 注重创建产品 创建出来的都是一个样子创建对象粒度不同3.关注点工厂模式 创建出来就ok 工厂不关心顺序建造者 不当指创建出来 还要知道这些产品是那些组件组成的 关心顺原创 2022-07-14 00:00:38 · 179 阅读 · 0 评论 -
抽象工厂之设计模式三
定义1、客户端应用层不依赖于产品类实例如何被创建、实现等细节2、强调一系列相关的产品对象属于同一产品族一起使用创建对象需要大量重复的代码3、提供一个产品类的库、所有的产品以同样的接口出现,从而使客户端不依赖于具体的实现1、具体产品在应用层代码隔离 无须关心创建细节2、将一个系列的产品族统一到一起创建1、规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口2、增加了系统的抽象性和理解难度1.0 创建课程工厂2.0 写一个 抽象 Article 类 并且里面有个抽象方法3原创 2022-07-11 23:14:28 · 138 阅读 · 0 评论 -
SpringBoot 中的各种参数校验方案汇总
1、前言在控制器类的方法里自己写校验逻辑代码当然也可以,只是代码比较丑陋,有点“low”。业界有更好的处理方法,分别阐述如下。2、PathVariable校验用法是:路径变量:正则表达式。当请求URI不满足正则表达式时,客户端将收到404错误码。不方便的地方是,不能通过捕获异常的方式,向前端返回统一的、自定义格式的响应参数。3、方法参数校验如果前端传递的参数不满足规则,则抛出异常。注解Size、Min、Max来自validation-api.jar,更多注解参见相关标准 小节。4、表单对象/VO对象转载 2022-06-28 09:00:59 · 495 阅读 · 0 评论 -
造轮子 BeanUtils,优雅的实现 List 数据拷贝
BeanUtils.copyProperties();确实为我们做了很多事情,虽然不能完美完成深拷贝,但是对于po、vo、dto的拷贝已经足够用了。但是其还是有一些不够完美的地方1.不能拷贝list,而拷贝list的情况又大量存在,因此会有许多重复代码2.有一些简单的查询,仅仅需要转换一下vo也需要new Vo()3.这种拷贝方式是没有返回值的,现在jdk8支持stream()操作之后(参考:Jdk8 Stream),支持不是很友好,不方便lambda表达式的使用因此我们决定通过集成BeanUtils类转载 2022-06-24 18:49:51 · 144 阅读 · 0 评论 -
RocketMQ 公司面试题 -伟子涵
你们为什么使用 mq?具体的使用场景是什么?mq 的作用很简单,削峰填谷。以电商交易下单的场景来说,正向交易的过程可能涉及到创建订单、扣减库存、扣减活动预算、扣减积分等等。每个接口的耗时如果是 100ms,那么理论上整个下单的链路就需要耗费 400ms,这个时间显然是太长了。如果这些操作全部同步处理的话,首先调用链路太长影响接口性能,其次分布式事务的问题很难处理,这时候像扣减预算和积分这种对实时一致性要求没有那么高的请求,完全就可以通过 mq 异步的方式去处理了。同时,考虑到异步带来的不一致的问题,我们转载 2022-06-22 19:55:25 · 396 阅读 · 1 评论 -
springboot整合websocket
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。websocket 协议是在 http 协议上的一种补充协议,是 html5 的新特性,是一种持久化的协议。WebSocket的优势我们都知道HTPP协议是基于请求响应模式,并且无状态的。HTTP通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。举例来说,我们想要查询当前的排队情况,只能是页面轮询向服务器发出请求,服务器返回查询结果。轮询转载 2022-06-21 10:17:11 · 174 阅读 · 0 评论 -
xxl-job 简单使用
注意:xxl-job任务需用XxlJobLogger输出日志其中页面上JobHandler对应于代码上@XxlJob的value值,超时时间设置2s由于本地测试时 运行了多个执行器,所以路由策略那里选用了轮询。也可根据实际情况自行调整查看下运行日志发现当任务执行超时后,程序即被中断,后续的代码逻辑不再被执行。使用分片是为了更大效率地利用执行器集群资源,比如有一个任务需要处理20W条数据,每条数据的业务逻辑处理要0.1s。对于普通任务来说,只有一个线程来处理 可能需要5~6个小时才能处理完。如果将20转载 2022-06-20 20:27:42 · 1056 阅读 · 0 评论 -
转载 艿艿 大佬的 分析RuoYi-Vue 的权限相关功能
在开源项目翻了一圈,找到一个相对合适项目 RuoYi-Vue 。主要以下几点原因:基于 Spring Security 实现。基于 RBAC 权限模型,并且支持动态的权限配置。基于 Redis 服务,实现登录用户的信息缓存。前后端分离。同时前端采用 Vue ,相对来说后端会 Vue 的比 React 的多。考虑到方便自己添加注释,艿艿 Fork 出一个仓库, 地址是 https://github.com/YunaiV/RuoYi-Vue 。强烈推荐,生产级 Spring Security 项目实践,转载 2022-06-16 09:05:14 · 1476 阅读 · 0 评论 -
最近有时间 回顾一下2年前用这个Springboot的点点滴滴 Springboot Bean 配置
在使用spring 进行开发配置的时候有两类选择 *.xml 配置文件、配置的Bean( @Configure ) ,于是在Springboot的开发世界里面,为了继续崇尚所谓的 “零配置” 提供有一种简单的支持,也就是说如果现在你真的有配置需要通过*.xml 文件编写 但是又不想出现配置文件的话,这个时候最简单的做法就是使用Bean的方式来进行类的配置 前提 该配置程序的...原创 2019-01-03 15:44:58 · 224 阅读 · 1 评论 -
最近有时间 回顾一下2年前用这个Springboot的点点滴滴 Springboot 读取资源文件
在实际的项目开发之中资源文件一定不可或缺失,因为所有的提示文字信息都要求在资源文件之中进行定义,而且资源文件是实现国际化技术的主要手段。如果要想在Springboot里面进行资源文件的配置只需要做一些简单的application.yml配置即可而且所有注入的资源文件都可以像最初的Spring处理那样直接使用MessageSource进行读取 1.0 为了统一管理资源文件 在src/...原创 2019-01-03 15:25:39 · 205 阅读 · 0 评论 -
IDEA 编译错误:java: try-with-resources is not supported in -source 1.5
错误描述在用IDEA编译别人的项目的时候遇到下面的错误:java: try-with-resources is not supported in -source 1.6 (use -source 7 or higher to enable try-with-resources)按词面理解是编译器抱怨说source1.6 不支持try-with-resources 特性, 需...原创 2019-03-15 10:40:06 · 4059 阅读 · 0 评论 -
Spring Boot浅谈(是什么/能干什么/优点和不足)
1. Spring Boot是什么,解决哪些问题 1) Spring Boot使编码变简单 2) Spring Boot使配置变简单 3) Spring Boot使部署变简单 4) Spring Boot使监控变简单 5) Spring Boot的不足2. Spring Boot在平台中的定位,相关技术如何融合 1) Sp...转载 2019-01-04 09:40:34 · 276 阅读 · 0 评论 -
集合 asList操作 神坑之面试题
**在公众号 有朋友给我留言说最近找工作遇到比较坑的面试题那么我们就来看看吧** double [] arr = {1.1, 2.1, 3.2}; Double[] arrs={1.1,2.1,3.2}; List list = Arrays.asList(arr); List list2 = Arrays.asList(arrs); System.out.println(list); System.o...原创 2021-11-16 21:33:26 · 573 阅读 · 0 评论 -
SpringBoot的故事从一个面试题开始 来自于(祖大帅)
SpringBoot的故事从一个面试题开始Spring Boot、Spring MVC 和 Spring 有什么区别?分开描述各自的特征:Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的ioc和 aop,ioc 提供了依赖注入的容器, aop解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能...转载 2019-01-04 09:47:36 · 214 阅读 · 0 评论 -
线程池面试 ThreadPoolExecutor -伟子涵java
1 请说说ThreadPoolExecutor的参数的意义int corePoolSize, //核心线程数量int maximumPoolSize, //最大线程数long keepAliveTime, //超时时间,超出核心线程数量以外的线程空余存活时间TimeUnit unit, //存活时间单位BlockingQueue<Runnable> workQueue, //保存执行任务的队列ThreadFactory threadFactory,//创建新线程使用的工厂Reje原创 2022-02-10 11:26:59 · 299 阅读 · 0 评论 -
Lamda 表达式简介
一、前言 Lamda 表达式基于JDK1.8 1.0 认识一下Lamda 表达式的作用 2.0 掌握Lamda 表达式的基础语法 二、过程Lamda 是一种基于函数的编程语言,对于这种类型的语言典型的代表就是Haskell。但是从java 最早开始一直提倡的 是面向对象编程,也就是说一切的操作必须有类,所有的功能都要定义在类之中。 ...原创 2018-12-06 18:20:29 · 694 阅读 · 0 评论 -
knife4j 接口文档的使用-伟子涵Java
1. 修改pom.xml <!-- knife4j 接口文档工具 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.9</version&原创 2022-02-10 11:25:56 · 1122 阅读 · 2 评论 -
mybatis 顺便回顾一下 面试题加强 点点滴滴
问题 1:MyBatis 执行步骤 ?1. 创建 SqlSessionFactory 对象。2. 通过 SqlSessionFactory 获取 SqlSession 对象。3. 通过 SqlSession 获得 Mapper 代理对象。4. 通过 Mapper 代理对象,执行数据库操作。5. 执行成功,则使用 SqlSession 提交事务(查询单表一般不用开事务)。6. 执行失败,则使用 SqlSession 回滚事务。7. 最终,关闭链接。问题 2: MyBatis Mapper..原创 2021-12-08 22:33:44 · 299 阅读 · 0 评论 -
神坑面试题之策略模式
本图片来自深圳一家独角兽公司神坑面试题之设计模式当我看到这题目 觉得很有意思 不就是去除if else if 吗? 这不就是典型的策略模式吗?当然单独靠策略模式是无法全部消除if else if的 还需要靠工厂+策略模式 实现消除ifGOF的《设计模式》著作中认为策略模式可以消除一些条件语句,我对此持怀疑态度。正如上面的例子,虽然由于Context在初始化的时候已经指定了策略实现,在计算逻辑中不需要根据条件选择逻辑分支。但是,客户端代码在初始化Context的时候,如何判断应该传入哪个策略实现呢?其实原创 2021-11-28 22:43:16 · 814 阅读 · 2 评论 -
群里面有小伙伴 问我面试mybatis 面试 现在来了
问题: 请说一下mybatis 使用那些设计模式建造者模式 (XmlConfigBuilder)在建造者模式中在使用建造者单列模型 在mybatis 错误上下文使用 不是整个应用全局唯一 而是线程上全局唯一在mybatis 配置类也使用了外观模式 装饰者模式也在mybatis 当中使用了 等等问题 1:说说 Mybatis 与 Hibernate 的相同点和不同点参考答案:相同点Hibernate 与 MyBatis 都是优秀 ORM 框架,都可以通过 XML 配置文件由 Sessi原创 2021-11-18 19:34:38 · 934 阅读 · 1 评论 -
Spring Boot 中文乱码问题解决方案汇总
最近在公司项目当中 升级了Springboot 版本 出现一点小问题(乱码了)访问地址 本文当中使用是httpClient 测试###GET http://localhost:8081/ebook/list?pageNum=1&pageSize=10000Accept: application/json结果为跑起来后 发现乱码了 就去百度了一下 后面发现百度上说的都设置还是没有效果 不知道是不是自己傻 没有找到对应文章经过自己研究和看文档 有2种方式可以解决...原创 2021-09-28 20:16:05 · 9730 阅读 · 0 评论 -
基于RabbitMQ消息队列的分布式事务解决方案 – MQ分布式消息中间件实战
本文转载JavaEdge大佬的文章1 极速了解MQ介绍Rabbitmg用于解决分布式事务必须掌握的5个核心概念一款分布式消息中间件,基于erlang语言开发, 具备语言级别的高并发处理能力。和Spring框架是同一家公司。支持持久化、高可用核心5个概念:Queue: 真正存储数据的地方 Exchange: 接收请求,转存数据 Bind: 收到请求后存储到哪里 消息...转载 2019-11-12 21:00:12 · 455 阅读 · 0 评论 -
Spring Cloud Alibaba升级到2.1.0 所遇到的坑
TIPS本文基于Spring Cloud Greenwich SR3编写,理论支持Spring Cloud Greenwich所有版本。对于非Greenwich版本,请前往https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明查看Spring Cloud与Spring Cloud Alibaba的版本兼容性关系,自行升级到对...转载 2019-11-12 20:51:10 · 11391 阅读 · 1 评论 -
Spring4.x:Spring Aware
Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的。即你可以将你的容器替换成别的容器,例如Goggle Guice,这时Bean之间的耦合度很低。但是在实际的项目中,我们不可避免的要用到Spring容器本身的功能资源,这时候Bean必须要意识到Spring容器的存在,才能调用Spring所提供的资源,这就是所谓的SpringAware。其实Spring原创 2017-09-30 14:49:42 · 186 阅读 · 0 评论 -
SpringBoot的 Hello World
SpringBoot 的诞生 Spring 的重生 java 最火的框架长期以来 java 的开发一直让人很繁琐 java项目开发复杂度极其高 java项目的维护非常困难 在云时代如何实现项目的快速部署以及快速启动 我们使用了大量的开发架构 发现我们写的代码很少 但是在思考框架和选型 对于一个项目和它未来发展 至关重要 在我认识当中 java里面提供的原创 2017-11-07 22:13:49 · 173 阅读 · 0 评论