- 博客(101)
- 收藏
- 关注
原创 JVM类加载机制
在类加载过程的加载阶段,通过类的完全限定名,获取描述类的二进制流的实现类,被称为“类加载器”隔离加载类。在某些框架内进行中间件与应用的模块之间进行隔离,把类加载到不同的环境。修改类加载方式。扩展加载源。比如:从数据库、网络、电视机顶盒进行类加载。防止源码泄漏。比如:编译时字节码进行加密,需要通过自定义类加载器对字节码进行解密还原。
2024-09-25 14:39:20
1072
1
原创 JVM基本了解
如果是热机状态,正常情况下,集群中的一半的机器可以勉强支撑负载流量,但由于刚启动的 J 均是解释执行,还没有进行热点代码统计和JT动态编译,导致机器启动之后,当前 1/2 发布成功的服务器马上全部宕机。剩余部分中的每个字节均代表一个字节码指令,由于每个指令的长度按照 1 个字节存储,所以每个指令被称为字节码(Bytecode),Java 所有的字节码指令有 200 多个。字节码必须通过类加载器,通过加载、验证、解析等校验步骤,将字节码文件中的类,加载至 JVM 的中运行时数据区,才可以执行字节码。
2024-09-24 18:50:03
710
原创 线程池的状态
线程池已经完全终止,所有的任务均已完成,所有资源已被释放。线程池的状态分为:RUNNING, SHUTDOWN, STOP, TERMINATED。■当工作队列为空时,并且线程池中执行的任务也为空时,线程池进入TDNG状态;该状态的线程池会接收新任务,并处理工作队列中的任务。:线程池被一旦被创建,就处于RUNNING状态,并且线程池中的。:该状态的线程池不会接收新任务,但会处理工作队列中的任务;:该状态表明所有的任务已经运行终止,记录的任务数量为O;■线程池中执行的任务为空,进入TIDYING状态;
2024-09-22 10:37:28
320
原创 线程池的执行流程
如果需要更细粒度的控制,可以使用类自定义线程池。核心线程数 (: 线程池中的基本线程数量,核心线程创建后不会被回收,大于核心线程数的线程,在空闲时间超过keepAliveTime后会被回收。在创建了线程池后,默认情况下,线程池中并没有任何线程,当调用 execute()方法添加一个任务时,如果正在运行的线程数量小于 corePoolsize ,则马上创建新线程并运行这个任务。
2024-09-19 16:50:18
753
原创 线程池的类型
在指定的延迟后执行一次任务。: 在指定的初始延迟后,按照固定的周期执行任务。: 在任务完成后,等待指定的延迟再执行下一个任务。延迟3秒钟后执行,任务只执行1次executorservice.schedule(new Task("线程A"),3,TimeUnit.SECONDS);延迟2秒钟后,每隔3秒钟执行任务1次/ /方式1executorService.scheduleAtFixedRate(new Task("线程A"),2,3,TimeUnit.SECONDS);// 方式2。
2024-09-19 11:52:21
1064
原创 Java反射机制
Java 反射是一种强大的特性,允许程序在运行时检查和操作类、方法、字段等。通过反射,Java 程序可以动态地加载类、创建对象、调用方法和访问字段,而无需在编译时知道这些类的具体信息。每个。
2024-09-09 19:17:32
1101
原创 Swagger
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用 Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述 文件可以去更新接口文档,以及生成各端代码。而Springfox-swagger,则可以通过扫描代码去生成这个 描述文件,连描述文件都不需要再去维护了。所有的信息,都在代码里面了。代码即接口文档,接口文 档即代码。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。
2024-08-23 15:35:14
989
原创 微服务保护
什么是雪崩问题?微服务之间相互调⽤,因为调⽤链中的⼀个服务故障,引起整个链路都⽆法访问的情况。可以认为:限流是对服务的保护,避免因瞬间⾼并发流量⽽导致服务故障,进⽽避免雪崩是⼀种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在⼀定范围,避免雪崩。是⼀种补救 措施。Sentinel是阿⾥巴巴开源的⼀款微服务流量控制组件。
2024-08-22 16:13:37
957
原创 微服务⽹关
⽹关搭建步骤:1. 创建项⽬,引⼊nacos服务发现和gateway依赖2. 配置application.yml,包括服务基本信息、nacos地址、路由路由配置包括:1. 路由id:路由的唯⼀标示2. 路由⽬标(uri):路由的⽬标地址,http代表固定地址,lb代表根据服务名负载均衡3. 路由断⾔(predicates):判断路由的规则,4. 路由过滤器(filters):对请求或响应做处理。
2024-08-21 15:02:36
1065
原创 微服务通信
Feign可以⽀持很多的⾃定义配置,如下表所示:⼀般情况下,默认值就能满⾜我们使⽤,如果要⾃定义时,只需要创建⾃定义的@Bean覆盖默认Bean 即可。配置⽂件⽅式feign:client:config:default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置loggerLevel: FULL # 日志级别feign:client:config:default: # 这⾥⽤default就是全局配置,如果是写服务名称,则是针对某个微服务的配置。
2024-08-20 18:03:43
580
原创 微服务注册中⼼
Nacos 致⼒于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易⽤的特性集,帮助您快 速实现动态服务发现、服务配置、服务元数据及流量管理。nacos的作⽤就是⼀个注册中⼼,⽤ 来管理注册上来的各个微服务是 Netflixfa 发布的⼀个负载均衡器,有助于控制 HTTP 和 TCP客户端⾏为。在 SpringCloud 中, Nacos⼀般配合Ribbon进⾏使⽤,Ribbon提供了客户端负载均衡的功能,Ribbon利⽤从Nacos中读取到 的服务信息,在调⽤服务节点提供的服务时,会合理的进⾏负载。
2024-08-20 17:44:51
1018
原创 微服务基础知识
SOA 全称为 Service-Oriented Architecture,即⾯向服务的架构。它可以根据需求通过⽹络对松散耦合 的粗粒度应⽤组件(服务)进⾏分布式部署、组合和使⽤。⼀个服务通常以独⽴的形式存在于操作系统进程 中。站在功能的⻆度,把业务逻辑抽象成可复⽤、可组装的服务,通过服务的编排实现业务的快速再⽣,⽬ 的:把原先固有的业务功能转变为通⽤的业务服务,实现业务逻辑的快速复⽤。通过上⾯的描述可以发现 SOA 有如下⼏个特点:分布式、可重⽤、扩展灵活、松耦合。
2024-08-20 12:14:04
1034
原创 Spring中Bean的生命周期
BeanDefinition存储到一个名为beanDefinitionMap对象存储在一个名为singletonObjects的MapSpring Bean的生命周期是从 Bean 实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。Bean的实例化阶段。
2024-08-19 19:14:57
893
原创 SpringBoot 自动配置
自定义启动器(Custom Starter)是Spring Boot的一种常见功能,主要用于打包一些自动配置功能和相关的依赖,以便其他Spring Boot项目能够方便地使用。创建一个独立的 Maven 或 Gradle 项目创建一个新的项目,用于实现自定义启动器。2.添加必要的依赖3创建自动配置类:并添加注解//@EnableConfigurationProperties开启对特定配置属性类的支持。它允许将一个或多个配置属性类注册到 Spring 的上下文中。
2024-08-17 12:59:49
754
原创 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
879
原创 Spring-data-redis
说明: 在 SpringBoot2.x 之后,原来使用的jedis 被替换为了 lettuce: 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接池: 采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据 了。
2024-08-15 19:33:33
807
原创 SpringBoot 自动配置(Condition)
ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean ConditionalOnClass:判断环境中是否有对应字节码文件才初始化Bean ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean。:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判 断,返回 boolean值。:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory等。将类的判断定义为动态的。
2024-08-15 18:21:35
449
原创 SpringBoot事务-调度-缓存
通过和@Async注解,Spring 允许你轻松地将方法异步执行,从而提高应用的吞吐量和响应速度。同时,自定义配置线程池也可以使你更好地控制异步任务的执行。使用异步任务时要注意,异步方法不能被同一类中的其他方法直接调用,因为那样不会触发代理,方法会在同一线程中执行。通过和@Scheduled注解,Spring 提供了一种简单而强大的方式来实现定时任务。你可以根据需要自定义 cron 表达式,以满足不同的调度需求。
2024-08-14 19:42:59
1083
原创 Redis
1 redis入门1.1 NoSQL的引言NoSQL(Not Only SQL),意即不仅仅是SQL, 泛指非关系型的数据库。Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。1.2 为什么是NoSQL随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如商城网站中对商品数据频繁查。
2024-08-14 18:20:47
846
原创 Spring面试题
等行为;。ApplicationContext接口作为BeanFactory 接口的子接口,包含BeanFactory 所具备的功能外,还提供了其它框架功能:继承MessageSource (支持国际化) ,资源文件访问、可以同时加载多个配置文件、可以通过监听器管理bean的生命周期;●Bean的创建加载方式.。BeanFactroy 采用的是延迟加载形式来注入Bean,
2024-08-14 17:00:12
872
原创 Mybatis_springboot与mybatis-plus
MyBatis 是一个流行的持久层框架,可以与 Spring Boot 无缝集成。下面是如何在 Spring Boot 项目中使用 MyBatis 的基本步骤。
2024-08-13 17:54:51
1392
原创 Spring Boot 的Web开发
只要静态资源放在类路径下: called /static (or /public or /resources or /METAINF/resources访问 : 当前项目根路径/ + 静态资源名。
2024-08-12 19:02:24
1201
原创 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
838
原创 Spring---AOP(面向切面编程)
将那些与业务无关,却为业务模块所共调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽取成一个可重用的模块,这个模块被命名为“切面”(Aspect),便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性;
2024-08-08 18:02:38
1139
原创 Spring的设计模式----工厂模式及对象代理
工厂模式通过将对象的创建与使用分离,提供了更好的灵活性和可维护性。选择合适的工厂模式可以根据具体的需求和场景来决定。二、代理模式什么是代理模式?代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介自己喜欢的车,然后付钱就可以了。
2024-08-08 16:23:13
1368
原创 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
391
原创 Spring
关键字Spring框架是一款轻量级的开发框架,核心思想是和为java应用程序开发提供,用于组件之间的(JMS、任务调度、缓存、ORM框架),是一个;Spring框架包括:IOC容器、 Validation数据校验、AOP面向切面编程Transactions事务管理、Spring JDBC、
2024-08-06 19:05:41
934
原创 Servlet
B/S 架构: Browser/Server (浏览器/服务器) 结构,是随着Internet技术的兴起,对C/S结 构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现• Tomcat服务器• Apache Jakarta的开源项目• JSP/Servlet容器Tomcat 的目录结构。
2024-08-05 19:07:31
534
原创 MyBatis动态SQL
where>= null"></if>= nuLL">= nuLl ">说明set 标签元素主要是用在更新操作的时候, 它的主要功能和 where 标签元素其实是差不 多的,主要是在包含的语句前输出一个 set, 然后如果包含的语句是以逗号结束的话将会 把该逗号忽略,如果 set 包含的内容为空的 话则会出错。有了 set 元素就可以动态的更 新那些修改了的字段。prefix: 开始前添加一个什么prefixOverrides :开始前去掉一个什么suffix :结束后添加一个什么。
2024-08-02 12:25:30
886
原创 MyBati s 动态代理和映射器
定义映射规则ORM 的特性,POJO 类和数据 库的映射关系;级联操作多表存在主外键关系时,主表和 从表之间的关联操作;类型转换数据库字段的类型和 POJO 类 属性的类型转换。级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率一对一一个对象对应唯一的对象, 举例:中国公民和身份证;一对多一个对象对应多个对象, 举例:班级和学生;多对多多个对象对应多个对象, 举例:公司角色和公司员工。
2024-08-01 17:52:59
662
原创 初识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
971
1
原创 集合面试题
1.Collection 接口用于表示单例集合,主要包括三个子接口:List、SetQueue是有序的、可重复的集合。它维护元素的插入顺序,可以包含重复元素;。主要实现类包括:基于动态数组实现,提供随机访问和插入性能;基于双向链表实现,适合频繁插入和删除操作:·Vector:类似 ArrayList,基于动态数组实现,使用synchronized 实现线程安全,性能略低;类的子类,提供了FILO先进后出的线结构;基于动态数组实现,使用ReentrantLock实现线程安全;
2024-07-29 13:15:07
560
原创 JDBC标准实现
真正的实现是数据库厂商提供的驱动包 完成的。JDBC希望用相同的方式访问不同的数据库,让具体 的数据库操作与数据库厂商实现无关,从而在不同数 据库之间轻易的进行切换。• 下载对应的数据库的驱动 mysql-connector-java-5.0.4-bin.jar。• 执行查询SQL语句后返回的结果集,由 ResultSet接口接收。,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去。注:不同的SQL语句,要调用不同的方法来执行。
2024-07-26 12:50:23
477
原创 事务、函数和索引
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
513
原创 存 储 过 程 及 触 发 器
存 储 过 程存 储 过 程为什么使用存储过程:业务复杂时,SQL语句相互依赖, 顺序执行;:每条SQL语句都需单独连接和访 问数据库;:SQL语句的执行需要先编译。什么是存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存 储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数)来执行它。创建存储过程( [ [IN |OUT |INOUT ] 参数名 数据类型…])BEGIN。
2024-07-24 12:57:51
1453
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人