06 2022 档案
摘要:在建立工具类时,由于不指定相关参数与返回值常用 R 来代表任意类型变量,用 Function<参数,返回值> 来代表不确定的函数。 示例 //<R,ID> 定义任意类型 R、ID,返回值类型是 R //ID id 代表传入任意类型参数 id //Function<ID,R> f 代表传入的函数(方法
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/longest-palindrome 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串
阅读全文
摘要:在 spring 中使用 AnnotationConfigServletWebServerApplicationContext 时用 @PropertySource 注入绑定默认只支持xml或properties, 如果配置文件是 yaml 的需要加上工厂属性 factory = YamlPrope
阅读全文
摘要:RequestMappingHandlerMapping 与 RequestMappingHandlerAdapter 俩是一对,分别用来 处理 @RequestMapping 映射 调用控制器方法、并处理方法参数与方法返回值 DispatcherServlet 初始化 点击查看代码 public
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,
阅读全文
摘要:监控 通过软件的方式展示另一个软件的运行情况,运行的情况则通过各种各样的指标数据反馈给监控人员。例如网络是否顺畅、服务器是否在运行、程序的功能是否能够整百分百运行成功,内存是否够用,等等。 监控的意义 监控服务状态是否处理宕机状态 服务是否正常运行 监控服务运行指标 比如内存占用严重,请求无法及时响
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/linked-list-cycle-ii 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达
阅读全文
摘要:消息 Java处理消息的标准规范 目前企业级开发中广泛使用的消息处理技术共三大类,具体如下: JMS AMQP MQTT 为什么是三大类,而不是三个技术呢?因为这些都是规范,就想JDBC技术,是个规范,开发针对规范开发,运行还要靠实现类,例如MySQL提供了JDBC的实现,最终运行靠的还是实
阅读全文
摘要:邮件 概念: SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议 POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议 IMAP(Internet Mail Access Pro
阅读全文
摘要:SpringBoot内置缓存解决方案 springboot技术提供有内置的缓存解决方案,可以帮助开发者快速开启缓存技术,并使用缓存技术进行数据的快速操作,例如读取缓存数据和写入数据到缓存。 步骤①:导入springboot提供的缓存技术对应的starter <dependency> <group
阅读全文
摘要:任务 #### Quartz Quartz技术是一个比较成熟的定时任务框架 Quartz的概念。 工作(Job):用于定义具体执行的工作 工作明细(JobDetail):用于描述定时工作相关的信息 触发器(Trigger):描述了工作明细与调度器的对应关系 调度器(Scheduler):用于描
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/reverse-linked-list 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 点击查看代码 public ListNode reverseList(ListNode head
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/merge-two-sorted-lists 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 点击查看代码 public ListNode mergeTw
阅读全文
摘要:带参数绑定的通知方法调用 点击查看代码 @Aspect static class MyAspect { @Before("execution(* foo(..))") // 静态通知调用,不带参数绑定,执行时不需要切点 public void before1() { System.out.print
阅读全文
摘要:SQL 数据源技术 数据源技术是Druid,运行时可以在日志中看到对应的数据源初始化信息,具体如下: INFO 28600 [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource INFO 28600 [ mai
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/is-subsequence 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/isomorphic-strings 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个
阅读全文
摘要:静态通知调用 代理对象调用流程如下(以 JDK 动态代理实现为例) 从 ProxyFactory 获得 Target 和环绕通知链,根据他俩创建 MethodInvocation,简称 mi 首次执行 mi.proceed() 发现有下一个环绕通知,调用它的 invoke(mi) 进入环绕通知1,执
阅读全文
摘要:代理创建器 点击查看代码 package org.springframework.aop.framework.autoproxy; // 包名与 AnnotationAwareAspectJAutoProxyCreator 一致,方便调用方法。 import org.aopalliance.inte
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/richest-customer-wealth 给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产
阅读全文
摘要:热部署 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍,这就是热部署。 非springboot项目热部署实现原理 开发非springboot项目时,我们要制作一个web工程并通过tomcat启动,通常需要先安装tom
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/find-pivot-index 给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,
阅读全文
摘要:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/number-of-steps-to-reduce-a-number-to-zero 给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去
阅读全文
摘要:切点匹配规则 点击查看代码 public class S15 { public static void main(String[] args) throws Exception { //根据切点表达式判断当前方法是否匹配 AspectJExpressionPointcut pointcut1 = n
阅读全文
摘要:Spring 中对切点、通知、切面的抽象如下 切点:接口 Pointcut,典型实现 AspectJExpressionPointcut 通知:典型接口为 MethodInterceptor 代表环绕通知 切面:Advisor,包含一个 Advice 通知,PointcutAdvisor 包含一个
阅读全文
摘要:SpringBoot程序的打包与运行 我们以后制作的程序是运行在专用的服务器上的,简单说就是将你做的程序放在一台独立运行的电脑上,这台电脑要比你开发使用的计算机更专业,并且安全等级各个方面要远超过你现在的电脑。 那我们的程序如何放置在这台专用的电脑上呢,这就要将我们的程序先组织成一个文件,然后将这
阅读全文
摘要:SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。 SpringBoot工程快速启动 后端可以将 SpringBoot 工程打成 jar 包,该 jar 包运行不依赖于 Tomcat 和 Idea
阅读全文
摘要:基础 概述 同步调用 将后端服务器Servlet拆分成三层,分别是web、service和dao web层主要由servlet来处理,负责页面请求和数据的收集以及响应结果给前端 service层主要负责业务逻辑的处理 dao层主要负责数据的增删改查操作 servlet处理请求和数据的时候,存在的问题
阅读全文
摘要:给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了
阅读全文
摘要:cglib 如何避免反射 点击查看模拟代码 /** * 模拟 methodProxy invoke() 方法调用生成的代理类,和代理对象配合使用 * 为什么类名是 FastClass 呢,因为动态生成的代理类的父接口就是它 */ public class S13ProxyFastClass { pr
阅读全文
摘要:cglib 代理进阶 模拟 cglib 代理 示例 public static void main(String[] args) { S12Target target = new S12Target(); S12Proxy s12Proxy = new S12Proxy(new MethodInte
阅读全文
摘要:AOP简介 什么是AOP? AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。 OOP(Object Oriented Programming)面向对象编程 AOP作用 作用:在不惊动原始设计的基础上为其进行功能增强,前面咱们有技
阅读全文
摘要:IOC/DI注解开发 注解开发定义bean 在上述环境的基础上,我们来学一学Spring是如何通过注解实现bean的定义开发? 步骤1:删除原XML配置 将配置文件中的<bean>标签删除掉 <bean id="bookDao" class="com.itheima.dao.impl.BookDao
阅读全文
摘要:参考:https://www.bilibili.com/read/cv9965357 IOC 容器 基础 点击查看代码 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema
阅读全文
摘要:给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。 answer[i] == "Fizz" 如果 i 是 3 的倍数。
阅读全文
摘要:jdk 动态代理进阶 模拟 jdk 动态代理 点击查看代码 public static void main(String[] args) { B b = new B(); A proxyInstance = (A) new $Proxy0(new InvocationHandler() { @Ove
阅读全文
摘要:jdk 动态代理 jdk 动态代理要求目标必须实现接口,生成的代理类实现相同接口,因此代理与目标之间是平级兄弟关系 点击查看代码 //注意包别导错了,一般我们使用的类都在 lang 包下,是基础类。 `import java.lang.reflect.Proxy;` interface A{ voi
阅读全文
摘要:1.Filter 1.1 Filter概述 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 如下图所示,浏览器可以访问服务器上的所有的资源(servlet、jsp、html等)
阅读全文
摘要:参考:力扣 (leetcode.cn) 给你两个字符串:child 和 parent,判断 child 能不能由 parent 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 child 中的每个字符只能在 parent 中使用一次。 自己的垃圾代码: public stat
阅读全文
摘要:动态数组求和 public static void main(String[] args) { System.out.println(Arrays.toString(runNums(new int[]{1, 2, 3, 4, 5, 6}))); } public static int[] runNu
阅读全文
摘要:AOP 实现之 ajc 编译器 aspectj 编译器 编译器也能修改 class 实现增强,直接通过修改字节码实现增强。 编译器增强能突破代理仅能通过方法重写增强的限制:可以对构造方法、静态方法等实现增强 3.在编译阶段进行增强 注意 版本选择了 java 8, 因为目前的 aspectj-mav
阅读全文
摘要:Scope 在当前版本的 Spring 和 Spring Boot 程序中,支持五种 Scope singleton,容器启动时创建(未设置延迟),容器关闭时销毁 prototype,每次使用时创建,不会自动销毁,需要调用 DefaultListableBeanFactory.destroyBean
阅读全文
摘要:初始化销毁顺序 Spring 提供了多种初始化手段,除了课堂上讲的 @PostConstruct,@Bean(initMethod) 之外,还可以实现 InitializingBean 接口来进行初始化,如果同一个 bean 用了以上手段声明了 3 个初始化方法,那么它们的执行顺序是 @PostCo
阅读全文
摘要:会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理解什么是会话,然后再去理解什么是会话跟踪: 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 从浏览器发出请求到服务端响应数据给前端之后,一次会话(在浏
阅读全文
摘要:Request和Response的概述 Request是请求对象,Response是响应对象。 request:获取请求数据 浏览器会发送HTTP请求到后台服务器[Tomcat] HTTP的请求中会包含很多请求数据[请求行+请求头+请求体] 后台服务器[Tomcat]会对HTTP请求中的数据进行解析
阅读全文
摘要:HTTP 简介 HTTP概念 HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看
阅读全文
摘要:Aware 接口 Aware 接口及 InitializingBean 接口 Aware 接口提供了一种【内置】 的注入手段,例如 BeanNameAware 注入 bean 的名字 BeanFactoryAware 注入 BeanFactory 容器 ApplicationContextAware
阅读全文
摘要:参考视频:https://www.bilibili.com/read/cv9965357 JDBC Java DataBase Connectivity java 数据库连接 用 Java 语言来操作关系型数据库的一套 API JDBC 是一套标准接口,而面对不同的关系型数据库需要各个关系型数据库厂
阅读全文
摘要:BeanFactory 后处理器的作用 ConfigurationClassPostProcessor 可以解析 @ComponentScan @Bean @Import @ImportResource ConfigurationClassPostProcessor 具体作用 对于候选配置类使用CG
阅读全文
摘要:视频教程:https://www.bilibili.com/video/BV1P44y1N7QG?p=16&spm_id_from=pageDriver&vd_source=db863e08ec5aa68867005dee5c547a8c 后处理器作用 1. @Autowired 等注解的解析属于
阅读全文
摘要:视频教程:https://www.bilibili.com/read/cv9965357 网络编程基础 常见通信模式 CS 客户端服务端 BS 浏览器服务端 网络编程三要素 ip 地址:设备在网络中的地址 唯一标识 ipv4:32bit 4字节大小 ipv6:128bit 16字节大小 ip 地址形
阅读全文
摘要:多线程 实现多线程方法 1.定义线程类继承 Thread 类,重写 run 方法,创建自定义线程类调用 start 方法启动另一个线程调用 run 方法,直接调用 run 方法还是当前线程运行 2.定义任务类实现 Runnable 接口,重写 run 方法,创建 Thread 对象,传入自定义任务类
阅读全文
摘要:参考:https://www.bilibili.com/read/cv9965357 不可变集合 在 List Set Map 接口中都存在 of 方法创建不可变集合,不能修改不能添加不能删除 Stream 流 stream of 获取当前集合数组可变数据 stream 流 中间方法,可链式编程,返
阅读全文
摘要:Bean 的生命周期 graph LR 创建 --> 依赖注入 依赖注入 --> 初始化 初始化 --> 可用 可用 --> 销毁 点击查看代码 @Autowired public void autowired(@Value("${JAVA_HOME}")String home){ log.info
阅读全文
摘要:集合 Collection 单列集合的父接口 add 方法:将给定对象添加到当前集合 返回 true clear 方法:清空集合元素 返回 true remove 方法:删除指定元素 返回 true isEmpty 方法:判断集合是否为空 返回 true contains 方法:判断集合是否包含指定
阅读全文
摘要:容器的实现 DefaultListableBeanFactory :BeanFactory 最重要的实现,控制反转,依赖注入都由它实现 ,ApplicationContext 组合了它 beanFactory 可以通过 registerBeanDefinition 注册一个 bean definit
阅读全文
摘要:内部类 定义在一个类里面的类 静态内部类:new 外部类名.内部类构造器 不可以访问外部类实例成员,但能访问静态成员 成员内部类:new 外部类构造器.new 内部类构造器 可以访问外部类实例成员 外部类名.this. 因为先要有外部类对象才能有成员内部类 局部内部类:放在方法,代码块,构造器等执行
阅读全文
摘要:return 单独使用跳出当前方法结束方法的运行。 在 Java 中,必须先有类才能有对象,先要类加载。 对象的成员变量有默认值。0 0.0 false null 构造器用于初始化一个类的对象,并返回对象的地址。任何类定义出来就有一个默认的无参构造器(语法糖),定义了有参构造器后就没有了默认无参构造
阅读全文
摘要:javac 运行 .java 文件 java 运行 .class 文件 在表达式中小范围变量自动转换为较大范围变量进行计算,结果类型由最高的类型决定,byte char short 自动转换为 int 计算,float 转换为 double 计算。 浮点型强转为整型,丢掉小数部分,直接返回整数部分。
阅读全文
摘要:容器的接口 1.ApplicationContext 组合了 BeanFactory , ApplicationContext 的 getbean 方法其实内部是调用了 BeanFactory 的 getbean ,spring 容器中的单例 bean 都在 beanFactory 实现类中的 si
阅读全文
摘要:typora-root-url: JVM.assets 写在之前:太懒了,图片没上传,有想要的可以评论,我给你发。 参考视频:https://www.bilibili.com/video/BV1yE411Z7AP JVM 图解 ![image-20220604083609235](/image-
阅读全文