- 博客(94)
- 收藏
- 关注
原创 Swagger
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用 Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述 文件可以去更新接口文档,以及生成各端代码。而Springfox-swagger,则可以通过扫描代码去生成这个 描述文件,连描述文件都不需要再去维护了。所有的信息,都在代码里面了。代码即接口文档,接口文 档即代码。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。
2024-08-23 15:35:14
633
原创 微服务保护
什么是雪崩问题?微服务之间相互调⽤,因为调⽤链中的⼀个服务故障,引起整个链路都⽆法访问的情况。可以认为:限流是对服务的保护,避免因瞬间⾼并发流量⽽导致服务故障,进⽽避免雪崩是⼀种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在⼀定范围,避免雪崩。是⼀种补救 措施。Sentinel是阿⾥巴巴开源的⼀款微服务流量控制组件。
2024-08-22 16:13:37
875
原创 微服务⽹关
⽹关搭建步骤:1. 创建项⽬,引⼊nacos服务发现和gateway依赖2. 配置application.yml,包括服务基本信息、nacos地址、路由路由配置包括:1. 路由id:路由的唯⼀标示2. 路由⽬标(uri):路由的⽬标地址,http代表固定地址,lb代表根据服务名负载均衡3. 路由断⾔(predicates):判断路由的规则,4. 路由过滤器(filters):对请求或响应做处理。
2024-08-21 15:02:36
898
原创 微服务通信
Feign可以⽀持很多的⾃定义配置,如下表所示:⼀般情况下,默认值就能满⾜我们使⽤,如果要⾃定义时,只需要创建⾃定义的@Bean覆盖默认Bean 即可。配置⽂件⽅式feign:client:config:default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置loggerLevel: FULL # 日志级别feign:client:config:default: # 这⾥⽤default就是全局配置,如果是写服务名称,则是针对某个微服务的配置。
2024-08-20 18:03:43
549
原创 微服务注册中⼼
Nacos 致⼒于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易⽤的特性集,帮助您快 速实现动态服务发现、服务配置、服务元数据及流量管理。nacos的作⽤就是⼀个注册中⼼,⽤ 来管理注册上来的各个微服务是 Netflixfa 发布的⼀个负载均衡器,有助于控制 HTTP 和 TCP客户端⾏为。在 SpringCloud 中, Nacos⼀般配合Ribbon进⾏使⽤,Ribbon提供了客户端负载均衡的功能,Ribbon利⽤从Nacos中读取到 的服务信息,在调⽤服务节点提供的服务时,会合理的进⾏负载。
2024-08-20 17:44:51
945
原创 微服务基础知识
SOA 全称为 Service-Oriented Architecture,即⾯向服务的架构。它可以根据需求通过⽹络对松散耦合 的粗粒度应⽤组件(服务)进⾏分布式部署、组合和使⽤。⼀个服务通常以独⽴的形式存在于操作系统进程 中。站在功能的⻆度,把业务逻辑抽象成可复⽤、可组装的服务,通过服务的编排实现业务的快速再⽣,⽬ 的:把原先固有的业务功能转变为通⽤的业务服务,实现业务逻辑的快速复⽤。通过上⾯的描述可以发现 SOA 有如下⼏个特点:分布式、可重⽤、扩展灵活、松耦合。
2024-08-20 12:14:04
973
原创 Spring中Bean的生命周期
BeanDefinition存储到一个名为beanDefinitionMap对象存储在一个名为singletonObjects的MapSpring Bean的生命周期是从 Bean 实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。Bean的实例化阶段。
2024-08-19 19:14:57
749
原创 SpringBoot 自动配置
自定义启动器(Custom Starter)是Spring Boot的一种常见功能,主要用于打包一些自动配置功能和相关的依赖,以便其他Spring Boot项目能够方便地使用。创建一个独立的 Maven 或 Gradle 项目创建一个新的项目,用于实现自定义启动器。2.添加必要的依赖3创建自动配置类:并添加注解//@EnableConfigurationProperties开启对特定配置属性类的支持。它允许将一个或多个配置属性类注册到 Spring 的上下文中。
2024-08-17 12:59:49
694
原创 Redis面试题
-旦有请求到达,就会交给Redis线程处理,这就实现了- -个Redis线程处理多个1O流的效果。之所以Redis为「关闭文件、AOF 刷盘、释放内存」这些任务创建单独的线程来处理,是因为这些任务的操作都是很耗时的,如果把这些任务都放在主线程来处理,那么Redis主线程就很容易发生阻塞,这样就无法处理后续的请求了。单台设备的Redis的QPS (Query Per Second,每秒钟处理完请求的次数)是MySQL的10倍,Redis单机的QPS能轻松破10w,而MySQL单机的QPS很难破1w。
2024-08-16 12:30:18
811
原创 Spring-data-redis
说明: 在 SpringBoot2.x 之后,原来使用的jedis 被替换为了 lettuce: 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接池: 采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据 了。
2024-08-15 19:33:33
650
原创 SpringBoot 自动配置(Condition)
ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean ConditionalOnClass:判断环境中是否有对应字节码文件才初始化Bean ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean。:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判 断,返回 boolean值。:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory等。将类的判断定义为动态的。
2024-08-15 18:21:35
306
原创 SpringBoot事务-调度-缓存
通过和@Async注解,Spring 允许你轻松地将方法异步执行,从而提高应用的吞吐量和响应速度。同时,自定义配置线程池也可以使你更好地控制异步任务的执行。使用异步任务时要注意,异步方法不能被同一类中的其他方法直接调用,因为那样不会触发代理,方法会在同一线程中执行。通过和@Scheduled注解,Spring 提供了一种简单而强大的方式来实现定时任务。你可以根据需要自定义 cron 表达式,以满足不同的调度需求。
2024-08-14 19:42:59
896
原创 Redis
1 redis入门1.1 NoSQL的引言NoSQL(Not Only SQL),意即不仅仅是SQL, 泛指非关系型的数据库。Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。1.2 为什么是NoSQL随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如商城网站中对商品数据频繁查。
2024-08-14 18:20:47
826
原创 Spring面试题
等行为;。ApplicationContext接口作为BeanFactory 接口的子接口,包含BeanFactory 所具备的功能外,还提供了其它框架功能:继承MessageSource (支持国际化) ,资源文件访问、可以同时加载多个配置文件、可以通过监听器管理bean的生命周期;●Bean的创建加载方式.。BeanFactroy 采用的是延迟加载形式来注入Bean,
2024-08-14 17:00:12
789
原创 Mybatis_springboot与mybatis-plus
MyBatis 是一个流行的持久层框架,可以与 Spring Boot 无缝集成。下面是如何在 Spring Boot 项目中使用 MyBatis 的基本步骤。
2024-08-13 17:54:51
1187
原创 Spring Boot 的Web开发
只要静态资源放在类路径下: called /static (or /public or /resources or /METAINF/resources访问 : 当前项目根路径/ + 静态资源名。
2024-08-12 19:02:24
1008
原创 Spring Boot
YAML全称是 YAML Ain't Markup Language。YAML是一种直观的能够被电脑识别的的数据数据序列化 格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比 如:C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简 洁。YAML文件的扩展名可以使用.yml或者.yaml。xml:简洁,以数据为核心。
2024-08-10 16:31:31
795
原创 Spring---AOP(面向切面编程)
将那些与业务无关,却为业务模块所共调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽取成一个可重用的模块,这个模块被命名为“切面”(Aspect),便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性;
2024-08-08 18:02:38
1064
原创 Spring的设计模式----工厂模式及对象代理
工厂模式通过将对象的创建与使用分离,提供了更好的灵活性和可维护性。选择合适的工厂模式可以根据具体的需求和场景来决定。二、代理模式什么是代理模式?代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介自己喜欢的车,然后付钱就可以了。
2024-08-08 16:23:13
1180
原创 SpringIOC和SpringAOC
1.同一个业务方法的多个dao方法公用一个connection对象。功能:对实体类自动,动态生成getset,无参有参.....@Before====>@Test运行之前。@After=====>@Test运行之后。@Test======>可以运行的方法。.update() 增删改。1.事务管理应该由service层进行实现。.query() 查询。3.通过连接对象进行事务的统一管理。1.idea安装插件(只做一次)dbUtil-阿帕奇提供操作数据库的插件。目的:业务层进行事务管理。2.注解(修饰方法)
2024-08-07 21:22:52
353
原创 Spring
关键字Spring框架是一款轻量级的开发框架,核心思想是和为java应用程序开发提供,用于组件之间的(JMS、任务调度、缓存、ORM框架),是一个;Spring框架包括:IOC容器、 Validation数据校验、AOP面向切面编程Transactions事务管理、Spring JDBC、
2024-08-06 19:05:41
896
原创 Servlet
B/S 架构: Browser/Server (浏览器/服务器) 结构,是随着Internet技术的兴起,对C/S结 构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现• Tomcat服务器• Apache Jakarta的开源项目• JSP/Servlet容器Tomcat 的目录结构。
2024-08-05 19:07:31
506
原创 MyBatis动态SQL
where>= null"></if>= nuLL">= nuLl ">说明set 标签元素主要是用在更新操作的时候, 它的主要功能和 where 标签元素其实是差不 多的,主要是在包含的语句前输出一个 set, 然后如果包含的语句是以逗号结束的话将会 把该逗号忽略,如果 set 包含的内容为空的 话则会出错。有了 set 元素就可以动态的更 新那些修改了的字段。prefix: 开始前添加一个什么prefixOverrides :开始前去掉一个什么suffix :结束后添加一个什么。
2024-08-02 12:25:30
859
原创 MyBati s 动态代理和映射器
定义映射规则ORM 的特性,POJO 类和数据 库的映射关系;级联操作多表存在主外键关系时,主表和 从表之间的关联操作;类型转换数据库字段的类型和 POJO 类 属性的类型转换。级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率一对一一个对象对应唯一的对象, 举例:中国公民和身份证;一对多一个对象对应多个对象, 举例:班级和学生;多对多多个对象对应多个对象, 举例:公司角色和公司员工。
2024-08-01 17:52:59
614
原创 初识MyBati s
J D B C 编 程 和 O R M 模 型J D B C 编 程 和 O R M 模 型导 入 J D B C 连 接 数 据 库 的 j a r 包 , 利 用 C L A S S . f o r N a m e 加 载 驱 动;利 用 D r i v e r M a n a g e r 获 取 C o n n e c t i o n , 然 后 创 建 S t a t e m e n t;
2024-07-30 12:14:10
876
1
原创 集合面试题
1.Collection 接口用于表示单例集合,主要包括三个子接口:List、SetQueue是有序的、可重复的集合。它维护元素的插入顺序,可以包含重复元素;。主要实现类包括:基于动态数组实现,提供随机访问和插入性能;基于双向链表实现,适合频繁插入和删除操作:·Vector:类似 ArrayList,基于动态数组实现,使用synchronized 实现线程安全,性能略低;类的子类,提供了FILO先进后出的线结构;基于动态数组实现,使用ReentrantLock实现线程安全;
2024-07-29 13:15:07
538
原创 JDBC标准实现
真正的实现是数据库厂商提供的驱动包 完成的。JDBC希望用相同的方式访问不同的数据库,让具体 的数据库操作与数据库厂商实现无关,从而在不同数 据库之间轻易的进行切换。• 下载对应的数据库的驱动 mysql-connector-java-5.0.4-bin.jar。• 执行查询SQL语句后返回的结果集,由 ResultSet接口接收。,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去。注:不同的SQL语句,要调用不同的方法来执行。
2024-07-26 12:50:23
440
原创 事务、函数和索引
Session A和Session B各开启了一个事务,Session B中的事务先将studentno列为1的记录的name 列更新 为'张三' ,然后Session A中的事务再去查询这条studentno为1的记录,如果读到列name的值为' 张三' ,而 Session B中的事务稍后进行了回滚,那么Session A中的事务相当于读到了一个不存在的数据, 这种现象 就称之为 脏读。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立 最优秀的索引,或优化查询语句。
2024-07-25 13:39:03
471
原创 存 储 过 程 及 触 发 器
存 储 过 程存 储 过 程为什么使用存储过程:业务复杂时,SQL语句相互依赖, 顺序执行;:每条SQL语句都需单独连接和访 问数据库;:SQL语句的执行需要先编译。什么是存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存 储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数)来执行它。创建存储过程( [ [IN |OUT |INOUT ] 参数名 数据类型…])BEGIN。
2024-07-24 12:57:51
1055
原创 高级数据查询语句
•连接查询的分类•1、右连接:从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行;•2、左连接: 从左表(表1)中返回所有的记录,即便在右(表2)中没有匹配的行;•3、内连接:在表中至少一个匹配时,则返回记录。•子查询等特殊查询•where子查询•from子查询•exists子查询•any,some(or),all(and)子查询•特殊查询。
2024-07-22 16:58:03
819
原创 DML数据操作语句和基本的DQL语句
DML语句DML语句增加数据(INSERT语句)INSERT INTO `表名` [(`字段1`,`字段2`,...`字段n`)]VALUES/VALUE ('值1','值2',...'值n')[,('值1','值2',...'值n')...];其中: •“[]” 包含的内容可以省略;• 字段或值之间用英文逗号隔开;• 可同时插入多条数据,values 后用英文逗号隔开;• values和value的方式均可。增加数据(INSERT INTO SELECT )
2024-07-20 18:01:15
895
原创 Mysql数据库
在MySQL数据库提供了一个自增的数字,专门用来自动生成主键值,主键值不用用户维护,自动生成,自增数从1开始,以1递增(auto_increment)-- 一般主键的建立方式-- int bitint 自增-- 主键的值是不会回补tid int primary key auto_increment, -- 自增。
2024-07-19 18:03:40
621
原创 Java集合框架
数组:Object[ ] elementData查找、遍历效率高,插入、删除效率低:数组的初始化容量为0,添加第一个元素时,数组容量扩容为10:数组按指定容量初始化按照数组现有容量的1.5倍扩容链表:双向链表插入、删除效率高,查找效率低链表动态扩容,每添加一个节点,链表动态扩容一个元素空间数组:Object[ ] elementData:数组的初始化容量为10:数组按指定容量初始化按照数组现有容量的2倍或指定容量值(capacityIncrement)进行扩容通过“”同步锁实现。
2024-07-18 20:13:56
615
原创 Shell
(1)变量名称可以由字⺟、数字和下划线组成,但是不能以数字开头,环境变量名建议⼤ 写。(2)等号两侧不能有空格(3)在bash中,变量默认类型都是字符串类型,⽆法直接进⾏数值运算。(4)变量的值如果有空格,需要使⽤双引号或单引号括起来。Bash中需要使⽤⼀对括号来包含所有元素Bash 不会将逗号视为分隔符,并且在 names 数组中只有⼀个元素 Yang,Elon,Bill ⽽不是预期的三个语法注意:(1)必须在调⽤函数地⽅之前,先声明函数,shell脚本是逐⾏运⾏。不会像其它语⾔⼀样先编 译。
2024-07-17 20:28:17
1052
原创 网络和安全操作
使用别名来域名来表示一个网络IP,做这样的域名和IP映射的服务叫DNS DNS 域名服务器:它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。:vi与vim编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
2024-07-17 19:42:02
660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人