Post List

1. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 12345678910111213public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode pA = headA;...

今日工作小结: 解了两天的 bug 最后发现是前端的问题😄(前端走了那块的逻辑,但是其实后端没有数据), 有点小麻,但是问题不大😃; 解了两天的主要原因是不够熟练,走到死胡同里去了;浪费了不少时间; 其中涉及到 es 的语法问题;可以去熟悉一下 es; 今日算法: 1. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 1234567891011121314151617181920class Solution { public ListNode reverseList(ListNode head) { if(head ==...

(开始为了秋招做一点记录吧,不然就摆了) 1. 移除链表元素 ​ 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 代码如下: 12345678910111213141516171819202122class Solution { public ListNode removeElements(ListNode head, int val) { ListNode dummyNode = new ListNode(0); dummyNode.next = head;...

IoC 和 DI 是 Spring 中最重要的两个概念,其中 IoC 为控制反转的思想,而 DI 依赖注入是 IoC 的具体实现。 # 概述 在 Spring 中实现依赖注入的常见方式有以下 3 种: 属性注入(Field Injection); Setter 注入(Setter Injection); 构造方法注入(Constructor Injection)。 # 属性注入 属性注入是日常开发中使用最多的一种注入方式: 1234567891011@RestControllerpublic class UserController { // 属性对象...

数据库和缓存的双写数据一致性问题,是一个和开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。 常见方案通常情况下,我们使用缓存的目的主要是为了提升查询的性能。 但是如果数据库中的某条数据,在放入缓存后又立马被更新了,那该如何更新缓存呢? 目前有4种方案: 先写缓存,再写数据库 先写数据库,再写缓存 先删缓存,再写数据库 先写数据库,再删缓存 先写缓存,再写数据库实际上这种方案不可取。 例如用户在刚写完缓存后,网络出现了异常,导致写数据库失败了。那么缓存这种数据库不存在的”假数据“就没有意义了。 先写数据库,再写缓存首先它可以避免之前的”假数据“问题,但是他有新的问题。...

在浏览器输入URL之后,它会执行以下几个流程: 执行DNS域名解析; 封装HTTP请求数据包; 封装TCP请求数据包 建立TCP连接(3次握手); 参数从客户端传递到服务器端; 服务器端得到客户端参数之后,进行相应的业务处理,再将结果封装成HTTP包,返回给客户端; 服务器端和客户端的交互完成,断开TCP连接(4次挥手); 浏览器通过自身执行引擎,渲染并展示最终结果给用户; DNS域名解析在网络中定位依靠IP进行身份定位,所以URL访问的第一步便是先要的到服务器端的IP地址。而得到服务器的IP地址需要使用 DNS(Domain Name System,域名系统)域名解析,DNS...

并发程序幕后的故事一个核心矛盾:cpu、内存、I/O设备的速度差异 cpu的速度是内存的100倍, 内存是I/O的100倍。 而程序大部分语句要访问内存,有些还要访问I/O,所以程序整体的性能屈居于最慢的操作—读写I/O设备。单方面提高cpu性能是无效的。 为了平衡这三者的速度差异,计算机体系结构,操作系统,编译程序都做出了贡献: cpu增加了缓存,以均衡与内存的速度差异; 操作系统增加了进程、线程,以分时复用cpu,以均衡cpu与I/O设备的速度差异; 编译程序优化指令执行次序,使得缓存能够得到更加合理的利用。 但是,并发程序很多问题的根源也在这里。 源头之一:缓存导致的可见性问题一个线...

由于计算机中保存的小数其实是十进制的小数的近似值,并不是准确值,所以,千万不要在代码中使用浮点数来表示金额等重要的指标。 建议使用BigDecimal或者Long(单位为分)来表示金额。

java 中共有三种变量,分别是类变量,成员变量和局部变量。分别存放在 jvm 的方法区、堆内区、和栈内区中。 123456789101112131415161718192021public class Variables { /** * 类变量 */ private static int a; /** * 成员变量 */ private int b; /** * 局部变量 * @param c */ public void test(int c){ int d; }} a 是类变量,b 是成员变量,而变量 c 和 d...