Java
Java 中反射、注解、动态代理、AOP 之间的联系
AOP 和 Aspect 是什么? AOP 即 Aspect Orient Programming 是以一种编程范式,在不同业务中横着切一刀形成一个切面,在此切面上做一些相同的事情。Aspect 就是切面。 规定了一些概念性的东西: Pointcut:是一个(组)基于正则表达式的表达式,有点绕,就是说他本身是一个表达式,但是他是基于正则语法的。通常一个pointcut,会选取程序中的某些我们感兴
@Retention注解 【rɪˈtenʃn】
@Retention注解是一个Java注解,用于修饰注解,表示注解的生命周期1。 它是一个元注解,作用是设置注解的生命周期,生命周期的长短取决于@Retention的属性RetentionPolicy指定的值1。 @Retention注解传入的是RetentionPolicy枚举,该枚举有三个常量,分别是SOURCE、CLASS和RUNTIME1。 SOURCE:代表着注解仅保留在源级别中,编译
CommonJS 和 ECMAScript 转换
CommonJS 和 ECMAScript 前言:在完成一个加密工具的过程中,本来只想使用 commonjs 语法完成该功能,但是在使用 chalk 的时候发现 chalk 是通过 ES 模块导出的,无法使用 require 引入(当然也有一些方法,可以使用 bable 去转化,但是本人想实现使用 es 语法,目前还没写多少内容,以下是转化注意的地方) 1. 将自己工具函数的导出方式进行改
@Documented注解
@Documented注解是一个标记注解,用于指示将被注解的元素包含在生成的Java文档中1。 它本身没有任何属性或配置选项,通常用于自定义注解时,确保其注解信息能在生成的文档中显示1。 例如:如果声明注解时指定了@Documented,则它会被javadoc之类的工具处理,所以注解类型信息也会被包括在生成的文档中。
@Inherited注解
在Java中,@Inherited是一个注解(annotation),用于指示一个类的继承行为。当一个类被标记为@Inherited时,它的子类将继承父类的注解。 具体来说,当一个类被标记为@Inherited时,它的所有方法、字段和构造函数都将被子类继承。这意味着,如果子类没有显式地声明与父类相同的方法、字段或构造函数,那么这些方法、字段或构造函数将自动从父类继承过来。 需要注意的是,@Inhe
@AliasFor注解
@AliasFor是一个Java注解,用于注解自定义注解的两个属性,表示这两个属性互为别名1。 自定义注解中,若某个属性命名上为了体现其含义,导致属性名称比较复杂,调用方每次使用自定义注解时,都需要写明属性名称,并设置属性值,这样比较繁琐。同时,若自定义注解继承了另一个注解,要想让调用方能够设置继承过来的属性值,就必须在自定义注解中重新定义一个属性,同时声明该属性是父注解某个属性的别名1。 使用@
@Deprecated注解【ˈdeprəkeɪtɪd】
@Deprecated注解是Java语言中的一种注解,用于表示某个类、方法或属性已被废弃或过时12。 在Java中,使用@Deprecated注解可以提醒开发人员某些代码已经过时,可能不再被推荐使用,或者存在一些问题。使用@Deprecated注解时,需要在注释中说明废弃此方法后的代替方法,或者处理原逻辑的代替方案。如果使用了废弃的类、方法或属性,编译器会给出警告信息12。 @Deprecated
Java学习——基础知识补充
1.作用域 1.1 public 定义为public的class、interface可以被其他任何类访问,定义为public的field、method可以被其他类访问,前提是首先有访问这个类的权限。 注意: 一个.java文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。 如果不确定是否需要public,就不声明为publi
代码随想录算法训练营第二天
代码随想录算法训练营第二天 | LeetCode 977(有序数组的平方) LeetCode 209(长度最小的子数组) LeetCode 59(螺旋矩阵II) 977:有序数组的平方 LeetCode 977(有序数组的平方) 思路: 方法一:暴力方法 直接原地平方后,直接调用数组排序 方法二:双指针前后遍历,构造结果数组,保证有序 方法一 方法二 209:长度最小的子数组 LeetCo
26.二叉树的最近公共祖先
236.二叉树的最近公共祖先 1、概要 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 说明: 所有节点的值都是唯一的。 p、q 为不同节点且均存在于给定的二叉树中。 首先想的是要是能自底向上
23.验证二叉搜索树
98.验证二叉搜索树 1、概要 中序遍历下,输出的二叉搜索树节点的数值是有序序列。 验证二叉搜索树,就相当于变成了判断一个序列是不是递增的了。 注意二叉搜索树中不能有重复元素 这道题目比较容易陷入两个陷阱: 不能单纯的比较左节点小于中间节点,右节点大于中间节点就完事了。(要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点。) 避免 初始化最小值,取到最左面节点的数值来比较。当前
24.二叉搜索树的最小绝对差
530.二叉搜索树的最小绝对差 1、概要 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 注意是二叉搜索树,二叉搜索树可是有序的。想成在一个有序数组上求最值,求差值 要学会在递归遍历的过程中如何记录前后两个指针,这也是一个小技巧 2、思路 递归 在二叉搜素树中序遍历的过程中,我们就可以直接计算了。需要用一个pre节点记录一下cur节点的前一个节点。 迭代 3
25.二叉搜索树中的众数
501.二叉搜索树中的众数 1、概要 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 如果不是二叉搜索树 如果不是二叉搜索树,最直观的方法一定是把这个树都遍历了,用map统计频率,把频率排个序,最后取前面高频的元素的集合。 是二叉搜索树 既然是搜索树,它中序遍历就是有序的。遍历有序数组的元素出现频率,从头遍历,那么一定是相邻两个元素作比较,然后就把出现频
c#入门基础之面向对象
C# 中常见的访问权限修饰符: public:最高级别的访问权限修饰符,表示成员对所有代码都可见,无限制地访问。 private:最低级别的访问权限修饰符,表示成员只能在声明它的类内部访问,对于类的外部代码是不可见的。 protected:表示成员对于声明它的类以及该类的派生类可见。它只能在继承体系内部访问。 internal:表示成员对于同一程序集中的所有代码可见。这
🥪MyBatis操作Oracle(实现兼容Oracle和MySQL)
MyBatis操作Oracle(实现兼容Oracle和MySQL) 以Oracle11g来演示,只需要创建序列,不需要创建触发器,通过ORM框架操作来生成主键 MySQL版本是8.x 代码地址:https://gitee.com/zhang-zhixi/springboot-mp-oracle-auto.git 1、分别创建Student表 Oracle: CREATE TABLE "STU
Java后端学习路线经验分享--全网最靠谱
简介 本文是Java自学的经验分享,5个月即可入职Java后端开发岗位。 我之前是自学的Java,Java零基础,用了5个月的时间,拿到了6家offer:恒生电子(12K)、九翊科技(13K)、良业科技(12K),九慧科技(9K),还有一家忘记名字了。 有的东西不能复制,但学习Java的方法是可以复制的。在本站学习,你将能复制站长的历程,你也可以Java零基础拿到月薪10K左右的offer。 目
1.Java编程基础
1.计算机————脑力劳动工具 2.按程序自动进行信息加工处理的工具 数据——符号化的信息 3.编程 将“China“译成密码,密码规律是:用原来的字母后面第3个字母代替原来的字母。
软件测试——测试的分类(重点:黑盒测试、白盒测试、单元测试、集成测试、系统测试)
一、 按照测试对象进行划分 1)界面测试 界面是直接和用户进行交互的,界面设计的好坏决定了用户使用软件的直观感受 界面测试(UI 测试)一般包括以下内容: 对比 UI 设计稿,验证系统显示界面的一致性和正确性 验证界面上每个功能的正确性 验证界面排版布局是否合理。字体大小、图片排版、清晰程度等 验证界面控件的功能是否正常。滚动条、按钮、文本框等 对不同分辨率下的界面进行测试 保证页面从大变小(
13分钟聊聊并发包中常用同步组件并手写一个自定义同步组件
前言 上篇文章10分钟从源码级别搞懂AQS(AbstractQueuedSynchronizer)说到JUC并发包中的同步组件大多使用AQS来实现 本篇文章通过AQS自己来实现一个同步组件,并从源码级别聊聊JUC并发包中的常用同步组件 本篇文章需要的前置知识就是AQS,如果不了解AQS的同学可以看上一篇文章哈~ 阅读本篇文章大概需要13分钟 自定义同步组件 为了更容易理解其他同步组件,我们先来使用
1.1 Java 简介
● Java SE(Java Platform Standard Edition)标准版,是为开发普通桌面和商务应用程序提供的解决方案。JavaSE是三个平台中最核心的部分,JavaEE和JavaME都是从JavaSE的基础上发展而来的,JavaSE平台中包括了Java最核心的类库,如集合、IO、数据库连接以及网络编程等。 ● Java EE(Java Platfor
JDK 代理和 CGLib 有什么区别?
JDK 代理和 CGLib 有什么区别? 动态代理是一种机制,程序通过该机制在运行时动态生成代理对象并调用代理方法。动态代理主要有两种实现机制,一种是基于反射动态代理的JDK,另一种是基于ASM动态代理机制的CGLib实现。现在让我们谈谈两种实现之间的区别以及如何实现它们 JDK 代理和 CGLib 之间的区别 JDK动态代理采用反射机制实现,而CGLib基于ASM机制实现,性能不同 JD
【JS】实现 MaxQueue
class MaxQueue { constructor() { this.queue = [] this.max = [] } enqueue(el) { this.queue.push(el) while(this.max.length && this.max[this.max.lengt
SpringApplication
SpringApplication是Spring Boot驱动Spring应用上下文的引导类。 SpringApplication的run()方法启动Spring应用,作用为Spring应用创建并初始化Spring上下文。 SpringApplication可以自定义Banner和自定义SpringApplication实例1。 @SpringBootApplication //使用这个注解必须