Loading

摘要: class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: nums1_len = len(nums1) nums2_len = len(nums2) def find( 阅读全文
posted @ 2024-09-06 11:53 Duancf 阅读(22) 评论(0) 推荐(0)
摘要: hashcode()/equals()/== == 当 == 左右两边是基本类型的时候,比较的是数值是否相等; 当 == 左右两边是对象(引用)类型的时候,比较的是p和p2这两个对象所指向的堆中的对象地址 对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用 阅读全文
posted @ 2024-09-06 11:03 Duancf 阅读(31) 评论(0) 推荐(0)
摘要: 如何设计一个短网址服务(TinyURL)? 使用场景(Scenario) 微博和Twitter都有140字数的限制,如果分享一个长网址,很容易就超出限制,发不出去。短网址服务可以把一个长网址变成短网址,方便在社交网络上传播。 需求(Needs) 很显然,要尽可能的短。长度设计为多少才合适呢? 短网址 阅读全文
posted @ 2024-09-05 22:28 Duancf 阅读(31) 评论(0) 推荐(0)
摘要: 最大为 N 的数字组合 给定一个按 非递减顺序 排列的数字数组 digits 。你可以用任意次数 digits[i] 来写的数字。例如,如果 digits = ['1','3','5'],我们可以写数字,如 '13', '551', 和 '1351315'。 返回 可以生成的小于或等于给定整数 n 阅读全文
posted @ 2024-09-05 11:42 Duancf 阅读(29) 评论(0) 推荐(0)
摘要: 有效的电话号码 grep -E '^(\([0-9]{3}\) [0-9]{3}-[0-9]{4}|[0-9]{3}-[0-9]{3}-[0-9]{4})$' file.txt 打印第十行 awk "NR==10" file.txt sed -n '10p' file.txt tail -n +10 阅读全文
posted @ 2024-09-05 10:38 Duancf 阅读(15) 评论(0) 推荐(0)
摘要: class Solution: def trap(self, height: List[int]) -> int: n = len(height) pre = [0]*n post = [0]*n max_pre = 0 max_post = 0 for i in range(n): pre[i] 阅读全文
posted @ 2024-09-05 09:49 Duancf 阅读(24) 评论(0) 推荐(0)
摘要: MySQL中一个B+树能存储多少数据 MySQL中InnoDB页的大小默认是16k。也可以自己进行设置。(计算机在存储数据的时候,最小存储单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)最小单元是块,一个块的大小是 4KB。 InnoDB 引擎存储数据的时候,是以页为 阅读全文
posted @ 2024-09-04 22:53 Duancf 阅读(115) 评论(0) 推荐(0)
摘要: ![image](https://img2024.cnblogs.com/blog/1533409/202409/1533409-20240904220429579-1230290363.png) 阅读全文
posted @ 2024-09-04 22:04 Duancf 阅读(19) 评论(0) 推荐(0)
摘要: ping 命令之所以不会收到 ICMP 差错报告报文,是因为 ping 命令本身使用的是 ICMP Echo 请求(ICMP Echo Request)和回显应答(ICMP Echo Reply)报文,而 ICMP 差错报告报文(例如目标不可达、时间超时等)只会发送给原始数据包的发送者。 下面详细解 阅读全文
posted @ 2024-09-04 21:01 Duancf 阅读(36) 评论(0) 推荐(0)
摘要: 什么是双亲委派机制 首先,我们知道,虚拟机在加载类的过程中需要使用类加载器进行加载,而在Java中,类加载器有很多,那么当JVM想要加载一个.class文件的时候,到底应该由哪个类加载器加载呢? 这就不得不提到"双亲委派机制"。 首先,我们需要知道的是,Java语言系统中支持以下4种类加载器: Bo 阅读全文
posted @ 2024-09-04 20:23 Duancf 阅读(32) 评论(0) 推荐(0)
摘要: Java switch case 语句 switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 switch case 语句语法格式如下: switch(expression){ case value : //语句 break; //可选 case value : 阅读全文
posted @ 2024-09-04 18:43 Duancf 阅读(193) 评论(0) 推荐(0)
摘要: 用队列实现栈 class MyStack: def __init__(self): self.length = 0 self.queue1 = [] self.queue2 = [] def push(self, x: int) -> None: self.queue1.append(x) self 阅读全文
posted @ 2024-09-04 10:21 Duancf 阅读(19) 评论(0) 推荐(0)
摘要: http 1.0 无状态,无连接, 无法复用连接,多次的建立断开连接导致性能不好, 队头阻塞,下一个请求必须等待上一个请求返回, http 1.1 长连接 多次请求可以使用同一个TCP连接 请求管道化 下一个请求不必等待上一个请求返回,但是在服务端必须按照顺序返回结果,这样浏览器才能识别这次返回的是 阅读全文
posted @ 2024-09-02 14:36 Duancf 阅读(47) 评论(0) 推荐(0)
摘要: 两个线程交替打印0-100 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; public class Main { public static Reentran 阅读全文
posted @ 2024-09-01 14:15 Duancf 阅读(61) 评论(0) 推荐(0)
摘要: 多线程循环打印ABC import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; public class Main { public static ReentrantLo 阅读全文
posted @ 2024-09-01 14:14 Duancf 阅读(63) 评论(0) 推荐(0)
摘要: class Node: def __init__(self, key=0, value=0): self.key = key self.value = value self.prev = None self.next = None class LRUCache: def __init__(self, 阅读全文
posted @ 2024-09-01 14:13 Duancf 阅读(19) 评论(0) 推荐(0)
摘要: class Node: def __init__(self, key=0, val=0, pre=None, next=None, fre=0, tail=None): self.key = key self.val = val self.pre = pre self.next = next sel 阅读全文
posted @ 2024-09-01 14:09 Duancf 阅读(26) 评论(0) 推荐(0)
摘要: 二分法 二分法的几个位置 比如 0 1 2 3 4 5 6 7 8 9 1 2 3 3 3 3 3 4 5 6 有时候想要寻找小于3的最大数字 有时候想要寻找第一个满足>=3的数字, 有时候想要寻找最后一个满足>=3的数字, 有时候想要寻找小于4的最大数字 nums = [1, 2, 3, 4, 5 阅读全文
posted @ 2024-08-31 11:34 Duancf 阅读(18) 评论(0) 推荐(0)
摘要: Leetcode 面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 给出python实现 class Solution: def smallestK(self, arr: List[int], k: int) -> List[int]: def t 阅读全文
posted @ 2024-08-31 11:34 Duancf 阅读(59) 评论(0) 推荐(0)
摘要: 检测环 快慢指针法是一种用于检测链表中是否存在环的有效方法,同时也可以找到环的起点。该方法的原理基于两个指针在链表上同时移动,其中一个移动得更快,而另一个移动得更慢。 检测环的存在: 使用两个指针,一个称为快指针(fast),一个称为慢指针(slow)。 在每一步中,快指针向前移动两步,而慢指针只移 阅读全文
posted @ 2024-08-31 11:32 Duancf 阅读(93) 评论(0) 推荐(0)
摘要: num1 = input() num2 = input() def compare(num1,num2): for i in range(len(num1)): if num1[i]>num2[i]: return 0 elif num1[i]<num2[i]: return 1 return 2 阅读全文
posted @ 2024-08-31 11:30 Duancf 阅读(24) 评论(0) 推荐(0)
摘要: intset 小整数集合 set 集合容纳的元素都是整数并且元素个数较少时, Redis 会使用 intset 来存储集合元素。 intset 是紧凑的数组结构,同时支持 16 位、 32 位和 64 位整数 struct intset<T> { int32 encoding;//决定整数位宽是 1 阅读全文
posted @ 2024-08-30 22:59 Duancf 阅读(28) 评论(0) 推荐(0)
摘要: Semaphore是一种同步辅助工具,翻译过来就是信号量,用来实现流量控制,它可以控制同一时间内对资源的访问次数. 无论是Synchroniezd还是ReentrantLock,一次都只允许一个线程访问一个资源,但是Semaphore可以指定多个线程同时访问某一个资源. Semaphore有一个构造 阅读全文
posted @ 2024-08-27 22:56 Duancf 阅读(77) 评论(0) 推荐(0)
摘要: public interface Strategy { void doWork(); } public class AliPay implements Strategy { @Override public void doWork() { System.out.println("正在使用支付宝支付" 阅读全文
posted @ 2024-08-27 21:02 Duancf 阅读(27) 评论(0) 推荐(0)
摘要: 注入 Bean 的注解有哪些? Spring 内置的 @Autowired 以及 JDK 内置的 @Resource 和 @Inject 都可以用于注入 Bean。 Annotation Package Source @Autowired org.springframework.bean.facto 阅读全文
posted @ 2024-08-27 13:31 Duancf 阅读(30) 评论(0) 推荐(0)
摘要: 索引底层数据结构选型 Hash 表 哈希表是键值对的集合,通过键(key)即可快速取出对应的值(value),因此哈希表可以快速检索数据(接近 O(1))。 为何能够通过 key 快速取出 value 呢? 原因在于 哈希算法(也叫散列算法)。通过哈希算法,我们可以快速找到 key 对应的 inde 阅读全文
posted @ 2024-08-25 22:12 Duancf 阅读(22) 评论(0) 推荐(0)
摘要: Spring 事务是复杂一致性业务必备的知识点,掌握好 Spring 事务可以让我们写出更好地代码。这篇文章我们将介绍 Spring 事务的诞生背景,从而让我们可以更清晰地了解 Spring 事务存在的意义。 接着,我们会介绍如何快速使用 Spring 事务。接着,我们会介绍 Spring 事务的一 阅读全文
posted @ 2024-08-25 20:31 Duancf 阅读(40) 评论(0) 推荐(0)
摘要: 从阻塞 I/O 到 I/O 多路复用 阻塞 I/O,是指进程发起调用后,会被挂起(阻塞),直到收到数据再返回。如果调用一直不返回,进程就会一直被挂起。因此,当使用阻塞 I/O 时,需要使用多线程来处理多个文件描述符。 多线程切换有一定的开销,因此引入非阻塞 I/O。非阻塞 I/O 不会将进程挂起,调 阅读全文
posted @ 2024-08-25 17:22 Duancf 阅读(59) 评论(0) 推荐(0)
摘要: Blocking I/O, Nonblocking I/O, And Epoll January 10, 2017 In this post I want to explain exactly what happens when you use nonblocking I/O. In particu 阅读全文
posted @ 2024-08-25 17:10 Duancf 阅读(18) 评论(0) 推荐(0)
摘要: 虚拟线程(Virtual Thread)是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。 虚拟线程和平台线程有什么关系? 在引入虚拟线程之前,java.la 阅读全文
posted @ 2024-08-24 20:54 Duancf 阅读(993) 评论(0) 推荐(0)
摘要: 三次握手 四次挥手 TCPIP模型 全双工 全双工(Full-Duplex)是指在通信中,数据传输能够在两个方向上同时进行,允许双方在同一时间既能发送数据,又能接收数据。这种方式使得通信的双方可以实现同时进行的双向交流,类似于电话通话中的双方可以同时说话和听到对方说话的情况。 半双工 半双工(Hal 阅读全文
posted @ 2024-08-24 20:21 Duancf 阅读(40) 评论(0) 推荐(0)
摘要: 线程 阅读全文
posted @ 2024-08-24 20:16 Duancf 阅读(11) 评论(0) 推荐(0)
摘要: 当CPU想要访问一个逻辑地址的时候,我们需要做两个步骤,地址转换和内存访问 地址转换 逻辑地址是程序内部使用的地址,并非真正的物理地址。 从逻辑地址到物理地址的映射,由页表来完成,页表的内容包括,逻辑页号,物理页号,有效位,有效位表示这一页是否在内存中。 页表存放在内存中,如果需要频繁访问页表,需要 阅读全文
posted @ 2024-08-24 19:14 Duancf 阅读(42) 评论(0) 推荐(0)
摘要: 死锁 死锁是指在并发系统中,两个或多个进程因为互相等待对方释放资源而无法继续执行的状态。 死锁发生的条件通常包括以下四个条件: 互斥条件(Mutual Exclusion):至少有一个资源被标记为只能被一个进程占用,即一次只能有一个进程使用该资源。 请求与保持条件(Hold and Wait):一个 阅读全文
posted @ 2024-08-24 19:01 Duancf 阅读(43) 评论(0) 推荐(0)
摘要: Redis如何实现消息队列 1、使用List List最为简单和直接,主要通过lpush、rpop存储和读取消息队列的(先进先出) ruby 代码解读复制代码127.0.0.1:6379> lpush mq "firstMsg" #推送消息 firstMsg (integer) 1 127.0.0. 阅读全文
posted @ 2024-08-23 21:59 Duancf 阅读(36) 评论(0) 推荐(0)
摘要: 什么是分布式一致性 ? 分布式系统通常由异步网络连接的多个节点构成,每个节点有独立的计算和存储,节点之间通过网络通信进行协作。分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值即被确定。在大量客户端并发请求读/写的情况下,维护数据多副本的一致性无疑非常重要,且富有挑战。因 阅读全文
posted @ 2024-08-23 21:58 Duancf 阅读(62) 评论(0) 推荐(0)
摘要: Kafka 如何保证消息的消费顺序? 我们在使用消息队列的过程中经常有业务场景需要严格保证消息的消费顺序,比如我们同时发了 2 个消息,这 2 个消息对应的操作分别对应的数据库操作是: 更改用户会员等级。 根据会员等级计算订单价格。 假如这两条消息的消费顺序不一样造成的最终结果就会截然不同。 我们知 阅读全文
posted @ 2024-08-23 21:58 Duancf 阅读(101) 评论(0) 推荐(0)
摘要: 首先来看线程不安全的转账 public class Bank { private int[] accounts; public Bank() { this.accounts = new int[10]; for (int i = 0; i < 10; i++) { accounts[i] = 100 阅读全文
posted @ 2024-08-22 20:37 Duancf 阅读(60) 评论(0) 推荐(0)
摘要: 执行一条 select 语句,期间发生了什么? 学习 SQL 的时候,大家肯定第一个先学到的就是 select 查询语句了,比如下面这句查询语句: // 在 product 表中,查询 id = 1 的记录 select * from product where id = 1; 但是有没有想过,My 阅读全文
posted @ 2024-08-22 17:05 Duancf 阅读(120) 评论(0) 推荐(0)
摘要: 事务传播行为之一 事务传播行为是为了解决业务层方法之间互相调用的事务问题。 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 举个例子:我们在 A 类的aMethod()方法中调用了 B 类的 bMethod 阅读全文
posted @ 2024-08-22 16:31 Duancf 阅读(80) 评论(0) 推荐(0)