- 博客(78)
- 收藏
- 关注
原创 动态规划
最后,由于每次计算只需要前三个状态,所以可以用滚动变量把空间从。以 “1137.第 N 个泰波那契数” 为例,总结动态规划模版。可以简单的理解为,dp 表里的值所表示的含义(dp[i])也就是说,计算当前状态时,前面的状态必须已经计算出来。所以没有必要保存整个数组,只需要保存最近的三个值即可。需要用到前三项,所以必须先确定前三个位置的值。因为仍然需要循环计算,但是只用了固定的几个变量。因为当前值依赖前面的值,所以填表顺序是从左到右。dp[i] 表示:第 i 个泰波那契数的值。但是我们发现,计算当前的。
2026-05-20 01:06:05
187
原创 数据链路层
本文介绍了以太网及其相关协议的基本概念。主要内容包括:1)以太网数据帧格式,包含目的/源MAC地址、类型字段、数据长度和CRC校验;2)MAC地址的作用及与IP地址的区别;3)MTU(最大传输单元)对UDP、TCP和IP协议的影响;4)ARP协议在IP与MAC地址映射中的作用;5)DNS域名解析系统的原理和分布式架构。文章详细阐述了网络通信中各层协议如何协同工作,包括数据链路层的寻址、网络层的分片重组以及应用层的域名解析等关键机制。
2025-11-29 23:00:37
979
原创 IP 协议
IP协议格式由固定长度的20字节基本头部和可选的可变长度选项部分组成,基本头部包含版本、头部长度、服务类型、总长度、标识符、标志位、片偏移、生存时间、协议类型、头部校验和、源IP地址及目的IP地址等关键字段,其中版本字段标识IPv4或IPv6,头部长度以4字节为单位,总长度限制数据报不超过65535字节
2025-11-27 15:55:08
648
原创 TCP 协议
摘要:本文介绍了TCP协议的六大核心机制及其特性。滑动窗口通过批量发送数据提升传输效率;流量控制和拥塞控制分别基于接收方处理能力和网络状况调节发送速率;延时应答和捎带应答通过优化ACK返回时机提高效率;面向字节流特性需解决粘包问题。异常处理机制包括进程崩溃、正常关机、主机掉电和网线断开等情况下的连接处理。这些机制在保证可靠传输的同时,通过多种优化手段尽可能接近UDP的传输效率。
2025-11-22 21:24:26
592
1
原创 UDP / TCP 协议
本文对比分析了UDP和TCP协议的核心特性。UDP作为无连接协议,具有不可靠传输、面向数据报、全双工等特点,依靠16位长度限制和校验和确保基本功能。TCP则通过有连接、可靠传输、面向字节流等机制保证数据传输质量,其核心在于确认应答、超时重传和连接管理三大可靠机制。重点阐述了TCP三次握手建立连接和四次挥手断开连接的原理,解释了TIME_WAIT和CLOSE_WAIT状态的意义。文章指出确认应答和超时重传是TCP可靠传输的关键,而非三次握手本身,三次握手主要用于验证通信双方的收发能力及网络通畅性。
2025-11-11 14:27:52
720
原创 HTTP协议
本文摘要:HTTP协议中的请求报头(header)采用键值对结构,遵循RFC标准,包含Host、Content-Type等重要字段。详细解析了HTTP请求处理流程,包括请求分割、body长度判定等。介绍了常见状态码的含义及HTTPS加密原理:通过对称和非对称加密结合,配合CA证书验证,解决中间人攻击问题。HTTPS工作过程涉及三组密钥,分别用于证书验证、密钥协商和数据传输加密,确保通信安全。同时讲解了Cookie机制、User-Agent识别等Web开发中的重要概念。
2025-11-06 15:08:15
630
原创 初识 Spring Boot
Spring让Java程序更加快速,简单和安全。Spring对于速度、简单性和生产力的关注使其成为世界上最流行的Java框架
2025-10-28 19:45:21
914
原创 网络编程
本文介绍了TCP和UDP协议的特点及Socket编程实现。TCP是有连接、可靠传输、面向字节流、全双工的协议;UDP则是无连接、不可靠传输、面向数据报、全双工的协议。Socket套接字分为流套接字(TCP)、数据报套接字(UDP)和原始套接字三类。 文章详细讲解了如何使用DatagramSocket和DatagramPacket实现UDP回显服务器,以及通过ServerSocket和Socket构建TCP回显服务器。UDP实现中,服务器接收数据报并原样返回;
2025-10-11 16:01:22
913
原创 初识网络原理
本文概述了计算机网络的发展历程和基础概念。从单机时代到移动互联网时代,网络经历了独立模式、局域网(LAN)和广域网(WAN)的演变。文章详细解释了IP地址和端口号在网络通信中的作用,以及协议分层的重要性。重点介绍了TCP/IP五层模型(应用层、传输层、网络层、数据链路层和物理层)及其各层功能,描述了网络数据传输的封装与分用过程。
2025-09-22 22:57:49
1157
原创 文件操作和 IO -- 2
本文摘要: Java文件操作主要分为文件系统操作和文件内容操作。文件系统使用File类处理目录和文件;文件内容操作通过流对象实现,包括字节流(InputStream/OutputStream)和字符流(Reader/Writer),分别用于二进制文件和文本文件处理。
2025-09-22 21:18:15
713
原创 文件操作和 IO
本文介绍了文件操作的基本概念和Java中的实现方式。主要内容包括:1. 文件分类(狭义/广义)及存储介质比较;2. 文件路径(绝对/相对路径)及操作系统差异;3. 文件种类(文本/二进制文件)的区分方法;4. Java中操作文件的两种方式:文件系统操作(File类)和文件内容操作(流对象);5. 详细说明了InputStream的使用方法,包括字节读取、资源关闭、异常处理等。
2025-09-15 23:26:15
758
原创 JUC的常见类、多线程环境使用集合类
本文介绍了Java并发编程工具包(JUC)中的常见类及其应用场景。主要内容包括:原子类(AtomicInteger等)使用CAS实现高性能计数;线程池的创建与使用;信号量(Semaphore)实现资源控制;CountDownLatch用于任务同步;以及多线程环境下集合类的安全使用方案,重点分析了ConcurrentHashMap的优化策略:分段锁、CAS更新、扩容优化等。文章比较了Hashtable、HashMap和ConcurrentHashMap的线程安全实现差异,为开发高性能并发程序提供了实用指导。
2025-09-10 15:56:04
975
原创 锁优化、CSA
本文摘要: 文章系统介绍了Java并发编程中的关键技术与工具。1. synchronized优化机制包括锁升级(无锁→偏向锁→轻量级锁→重量级锁)、锁消除和锁粗化;2. CAS原理及其应用(原子类、自旋锁)与ABA问题解决方案;3) JUC核心组件:Callable接口(带返回值线程)、ReentrantLock(可重入锁,支持公平/非公平模式)、原子类(基于CAS实现)的性能优势;
2025-09-10 14:35:24
835
原创 线程池、锁策略
本文介绍了线程池和定时器的实现原理,以及常见的锁策略。线程池通过预先创建固定数量的线程并复用,避免了频繁创建销毁线程的开销。定时器基于优先级队列或时间轮实现,可精确或高效地执行定时任务。文章详细分析了各种锁策略,包括乐观锁/悲观锁、重量级锁/轻量级锁、读写锁等,并深入探讨了synchronized的工作原理,包括其自适应特性、锁升级过程(从偏向锁到轻量级锁再到重量级锁)以及可重入、非公平等特点。最后总结了锁策略的选择依据和使用场景,为并发编程提供了实用的技术参考。
2025-08-31 17:30:04
1260
1
原创 多线程案例、线程池
本文主要介绍了多线程编程中的两个重要案例:单例模式、阻塞队列与生产者消费者模型,以及线程池的实现与应用。单例模式分为饿汉式和懒汉式两种实现方式,通过私有构造方法确保唯一实例。阻塞队列具有线程安全特性和阻塞机制,是生产者消费者模型的核心组件,能够解耦系统组件并平衡处理能力。文章详细讲解了Java标准库中的BlockingQueue使用和模拟实现。线程池部分介绍了ThreadPoolExecutor的核心参数配置、工厂模式应用和四种拒绝策略,并对比了Executors工具类的便捷性与局限性。
2025-08-31 15:09:14
951
原创 wait / notify、单例模式
本文主要介绍了Java多线程中的wait/notify机制和单例模式。在wait/notify部分,详细讲解了wait方法的使用条件、与sleep的区别、notify的唤醒机制以及线程饥饿问题,强调wait必须配合synchronized使用并会释放锁。在单例模式部分,对比了饿汉模式(类加载时创建实例)和懒汉模式(首次使用时创建实例)的实现方式,重点分析了懒汉模式在多线程环境下的线程安全问题及解决方案,包括双重检查锁定、volatile关键字的使用等。
2025-08-18 23:15:04
895
原创 线程安全 -- 2
本文摘要: 1.监视器锁(synchronized)实现线程同步,支持可重入机制,通过计数器避免自锁。 2.死锁的三种情况与四个必要条件,通过打破循环等待或固定加锁顺序可避免死锁。 3.线程安全类分析:Vector等带锁类性能较低,推荐使用ConcurrentHashMap;String因不可变天然线程安全。 4.内存可见性问题:编译器优化可能导致读取线程无法感知修改,volatile关键字强制读内存并禁止重排序。 5.指令重排序是编译器优化的另一风险,volatile能限制相关操作的重排序。
2025-08-18 22:58:02
1015
原创 线程安全
线程安全问题产生的主要原因是:1)操作系统线程调度具有随机性;2)多个线程同时修改同一变量;3)修改操作非原子性。通过count++案例展示了非原子操作导致的线程不安全现象,每次执行结果可能不同。解决方案核心是使用synchronized关键字实现互斥:1)修饰代码块时可指定锁对象;2)修饰普通方法时锁定当前对象(this);3)修饰静态方法时锁定类对象。正确使用锁需要注意代码块位置和锁对象选择,在保证线程安全的同时兼顾执行效率。
2025-07-28 21:33:11
1280
原创 Thread 类 -- 2
讲解了线程终止的三种方式:立即终止(break)、不终止或延迟终止。其次说明join()方法用于控制线程执行顺序,包括带超时参数的版本。接着介绍sleep()方法实现线程休眠及其特殊用法(如sleep(0))。最后详细解析了Java线程的6种状态(NEW、TERMINATED、RUNNABLE等)及其转换关系,并提供了线程调试的基本方法,包括状态分析和调用栈检查。这些内容涵盖了线程控制的核心机制,为处理多线程问题提供了实用指导。
2025-07-28 09:03:48
1050
原创 初识线程
并发编程 是一种让程序能够执行多个任务的编程技术,多个任务的执行时间有重合,如交替执行、同时执行等。相对于传统的从上到下依次同步执行代码,我们也称并发编程为异步编程。目前,常见的并发模型主要有两种,一是多线程模型,二是单线程事件循环模型。
2025-07-21 16:01:47
645
原创 JDBC编程
JDBC(Java Data Base Connectivity,Java数据库连接)是Java程序和数据库之间的桥梁,包含了一套Java定义的用于执行SQL语句的接口,使开发者能够编写数据库的程序。JDBC的主要作用是:与数据库建立连接、发送SQL语句和处理数据库执行结果。
2025-07-16 10:57:24
691
原创 [MySQL]事务
事务是数据库中将一组SQL语句打包执行的机制,确保要么全部成功要么全部失败。具有ACID特性:原子性(整体执行)、一致性(数据正确)、隔离性(事务间独立)和持久性(持久保存)。
2025-06-30 17:48:11
1572
原创 索引 -- 2
当我们为一张表加主键约束(Primary key),外键约束(Foreign Key),唯一约束(Unique)时,MySQL会为对应的的列自动创建一个索引
2025-06-30 16:40:53
999
原创 视图、索引介绍
MySQL的索引是⼀种数据结构,它可以帮助数据库高效地查询、更新数据表中的数据。索引通过 ⼀定的规则排列数据表中的记录,使得对表的查询可以通过对索引的搜索来加快速度。 类似于书籍的目录,通过指向数据行的位置,可以快速定位和访问表中的数据
2025-06-27 21:32:23
747
原创 数据库操作复习
表连接的执行过程:1. 先计算参与表连接的笛卡尔积 2. 通过连接条件过滤无效数据 3. 加入查询条件得到想要的结果行 4. 精简列名得到最终想要查询的列
2025-06-16 18:13:16
751
原创 联合查询 -- 2
自连接:自己与自己进行表连接,可以把行转化在列,在查询的时候可以使用where条件进行过滤,也就是说可以实现行与行之间的比较功能
2025-05-24 10:59:42
783
原创 表的增删改查 -- 2
1. 全列查询 select * from 表名;2. 指定列查询 select 列名 from 表名;3. 表达式查询 select 表达式 from 表名;
2025-05-12 15:06:59
837
原创 数据库介绍
数据库存储的数据,希望存储的数据量比较大,持久化存储,所以一般存储在硬盘(也有少数数据库是使用内存的,追求速度的最大化,例如redis)
2025-04-22 23:42:12
766
原创 [Java]反射、String类补充
Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制
2025-04-19 21:11:13
932
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅