- 博客(14)
- 收藏
- 关注
原创 Spring Java面试
"面向切面编程(AOP)是一种用于处理横切关注点的编程范式。在传统OOP中,像日志、安全和事务这样的功能往往会分散在各个业务模块中,导致代码重复和耦合。AOP通过将这些横切关注点模块化为'切面'来解决这个问题。在Spring AOP中,我们可以定义切入点表达式来指定哪些方法需要被拦截,然后通过前置通知、后置通知或环绕通知等方式在这些方法执行前后添加额外行为。例如,我们可以创建一个事务管理切面,用@Around注解确保方法在事务上下文中执行,而不需要在每个业务方法中重复事务代码。
2025-04-08 14:15:18
592
原创 Redis NoSql数据库
NoSql是一种非结构化数据库,存储的是并不完全严格定义的数据———键值对、文件、图。没有表,无关联的,数据库不会帮你维护表之间的关系。查询语句不固定,没有sql ,每个库都有自己的调用语法。ACID不一定完全满足,存在base理论【基本可用、软状态、最终一致性】。NoSql存储在内存,查询性能更高(对应对一致性,安全性要求不高 ,水平扩张性更好。特征:键值对;单线程,命令具有原子性;低延迟,速度快;(内存、IO复用、c语言编写)、数据持久化。
2025-04-04 00:09:11
888
原创 Java面试 数据库 MySql
数据库:由数据库管理系统管理的数据的集合。数据库管理系统 : 是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。数据库系统通常由软件、数据库和数据管理员(DBA)组成。数据库管理员 : 数据库管理员负责全面管理和控制数据库系统。元组(行)、码(唯一标识实体的属性,对应表中的列)、候选码(唯一的标识一个元组)、主码 : 主码也叫主键。主码是从候选码中选出来的。一个实体集中只能有一个主码。外码 : 外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。
2025-03-25 14:39:31
907
原创 Java面试 操作系统 JavaGuide速记
管理计算机硬件与软件资源的程序;屏蔽了硬件层的复杂性;内核是连接应用程序和硬件的桥梁进程和线程的管理;存储管理;文件管理;设备管理;网络管理;安全管理: 用户态运行的进程可以直接读取用户程序的数据,拥有较低的权限;:内核态运行的进程几乎可以访问计算机的任何资源包括系统的内存空间、设备、驱动程序等,不受限制,拥有非常高的权限。危险指令如内存分配、设置时钟、IO 处理等只能由操作系统内核态执行,也会导致导致系统资源的竞争和冲突(所有程序如果都有一样的权限)
2025-03-14 15:44:18
753
原创 Java 面试 计算机网络 JavaGuide速记版
应用层:为计算机用户提供服务,Http,FTP,POP3,SMTP表示层:数据压缩、加密解密会话层:管理应用程序间的会话,SSL传输层:端到端的数据传输服务,TCP、UDP网络层:路由和选址,IP4/v6、网关协议数据链路层:帧编码、物理地址物理层:比特流传输OSI 七层模型的精简版本应用层=应用层+表示层+会话层传输层网络层网络接口层:数据链路层+物理层。
2025-03-12 23:43:12
866
原创 Java 面试 IO javaguide速记
从输入流中读取一些字节存储到数组b中。如果数组b的长度为零,则不读取。如果没有可用字节读取,返回-1。等价于:读取输入流中的所有字节,返回字节数组:阻塞直到读取len个字节:将所有字节从一个输入流传递到一个输出流。用于读取指定类型数据,不能单独使用用于从输入流中读取 Java 对象(自动反序列化),用于将对象写入到输出流(自动序列化)。对象必须实现接口。
2025-03-07 00:46:46
1006
原创 Java并发 面试 JavaGuide速记
多个线程相互阻塞,它们一个或者多个都在等待某个资源的释放导致的永久的阻塞,程序不能正常结束。四个条件及破坏方法:互斥:一个时刻一个资源只能一个线程占用(一般成立);请求和保持:请求资源而阻塞时,不会释放占有资源(一次性申请所有资源)非抢占式:自己持有资源不会被抢夺,只能自己释放(可以主动释放)循环等待:线程之间形成一种头尾相接的循环等待资源关系(按序申请资源)可以利用算法避免死锁(银行家算法(假设不会,探究能不能执行完,可以就允许分配))
2025-03-05 15:31:05
732
原创 Java 集合 面试 javaguide速记版
1、List、Set、queue、map的区别List存储的是有序的、可重复的;set存储的不可重复的;queue注重排队规则,有序的可重复的Map键值对存储注意ArrayList(Object[]实现)和LinkedList(双向链表):从增删查改方面来说2、ArrayList的扩容机制答:ConcurrentHashMap默认构造10(可指定)(java8是先创建空数组,后面才分配空间)
2025-03-03 17:13:32
598
原创 Java 基础 面试 javaguide速记版
重写是子类对父类方法的重新编写(构造方法不可以),参数、名字都要相同,特别的,返回值类型应该更小(等),抛出异常更小(等),即:子类抛出的异常类型可以是父类异常类型的子类或不抛出检查异常;由于某些类之间具有共同的属性但又有某些自己特有的属性,这时候为了提高代码的复用性和节省效率,可以将共同的属性作为父类,而新类可以基于已有的类作创建的技术就叫做继承;多态指的是一个对象可以有多种状态,这个状态只有在运行的时候才能确定,表现为父类的引用指向子类的实例。多态执行的是子类实例的方法,子类没有则是父类。
2025-02-28 10:47:20
717
原创 leetcode 难题精讲 接雨水
什么样的,递增还是递减,存的是下表还是内容,遍历顺序是怎样的,这很大程度上影响后续的思路;接着接雨水的过程一定是一个先下降然后上升的过程,所以将下降的过程存储起来,然后在上升过程一步步计算雨水,显而易见,这是一个单调递减的栈;入栈的问题很简单,任何时候都需要入栈无论是下降还是上升,下降的过程自不必说,本身就是一个单调递减的栈,上升过程的不同在于它可能要与前面联动,进行出栈、计算等等,但是它本身的这个数在最后还是要入栈的,因为对于后面的数来说,它也是一个将要上升或者下降的节点。这里的left就是所谓水坑的。
2023-09-26 00:27:39
140
原创 leetcode 第三天 栈的简单实现和应用
使用一个辅助栈,普通栈正常压入、弹出,辅助栈在压入时须比较 辅助栈上置顶的值 与 压入数大小,并将小的压入,此时记录的就是此位置以下最小的值。empty():判断栈是否为空。2、基本操作如:pop():弹出最后一个置入的元素(没有返回值!1、一开始即栈为空时直接记min ,并压入 0;<0,top()取min值,弹出时需计算min值。2、当差值为负值时,先压入负值,再更新min值。此题需结合哈希表写,因为每一对括号都是相匹配的。1、先进后出(以下题目基本是运用了此特性)>0,正常计算复原值,正常弹出。
2023-09-15 19:38:25
58
原创 leetcode 第二天 链表中的递归、双指针与哨兵节点
1、链表在交换插入等操作时,头结点往往是非常特殊的存在,无论什么题,都要加一个哨兵节点(dummyNode),好处有二:一是同化所有操作,不必特殊写头结点的代码,二是利于返回找回head头结点的位置,只需要 head = dummyNode->next 即可迅速定位,少了许多的顾虑。3、双指针的巧用体现在对链表长度的把握,如相交链表相交之后长度相同、如找到倒数第二个节点意味着只需要固定一组距离为2的双指针,当一遍历到末尾时,另一个也到了指定节点。例:LeetCode 24、两两交换链表中的节点。
2023-09-11 17:14:00
122
1
原创 Leetcode 第一天 数组与双指针
此题同样可用上面的解法,一指针直接锁定第一的val值,另一指针以该指针为起点,遍历直到非val的出现,交换,此为一个循环;2、因为 i, j 同时推进,所以在某一刻会同时检测到非val值,这时候 i 不动,即 i 左边为 有效部分,继续向前推进。3、j遍历到 非 val 值时 ,这时候如果 i 锁定的是 val 值 ,说明可以交换。典型的双指针,一个 j 用于推进数组,一个 i 作为左边界。1、p1先行,直到找到第一个为1的值停留,作为计数的起点。3、p2前进,直到连续的1被数完,即p2所在为0。
2023-09-09 20:56:43
68
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人