Posts
Cloud Li
Cancel

选择排序

原理 将整个序列作为无序区,有序区为空。 从无序区中选出最小(大)的元素,将它与无序区中的第一个元素交换,有序区个数增加 1 个,无序区个数减少 1 个。 重复第 2 步,到第 n - 1 个元素时,排序完成。 Java 实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class Se...

插入排序

原理 首先将第一个元素视为已排序的序列。 取未排序序列中的一个元素,在已排序的序列中从后向前查找,直到找到比当前元素小(大)的位置,然后插入进去。 重复第 2 步,直到整个序列有序。 Java 实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 public class InsertionS...

使用 docker-compose 运行 MySQL

目录结构 1 2 3 4 5 6 7 8 9 . │ .env │ docker-compose.yml │ └─mysql ├─config │ my.cnf │ └─data mysql 目录下的 data 为数据目录,mysql 的数据表、二进制日志文件就在这里。.env 文件包含了一些变量,这些变量可以在 docker-compos...

Java 线程的状态

线程状态 线程有以下 6 种状态: New(新创建) Runnable(可运行) Blocked(被阻塞) Waiting(等待) Time waiting(计时等待) Terminated(被终止) 确定一个线程的当前状态,可以调用 getState 方法。 新创建线程 使用 new 创建线程时,比如 new Thread(r),线程还没有运行,它...

Java lambda表达式

lambda 表达式是一个可传递的代码块,可以在以后执行一次或多次。 lambda 表达式的语法 参数,箭头(->)以及一个表达式或代码块: 1 2 3 4 5 6 7 8 (String first, String second) -> { if (first.length() < second.length()) return -1; ...

Java 对象克隆

什么是对象克隆 如果为一个包含对象引用的变量建立副本,原变量和副本都是同一个对象的引用。任何一个变量的改变都会影响另一个变量。 1 2 3 Employee original = new Employee("Tom", 50000); Employee copy = original; copy.riseSalary(10); // 会影响 original 如果希望 copy ...

TCP 建立与释放连接

TCP 连接的建立(三次握手) TCP 建立连接的过程叫握手,握手需要在客户端与服务器之间交换三个 TCP 报文段(简称三次握手)。 一开始,B 的服务器进程处于 LISTEN 状态,等待客户端的连接请求。 A 的客户端进程建立 TCP 连接,向 B 发出连接请求报文段,首部中的同部位 SYN = 1,同时选择一个初始的随机序号 seq = x。这时,客户进程进入 SYN-SENT...

Spring Boot & MyBatis 实现乐观锁和悲观锁

以转账操作为例,实现并测试乐观锁和悲观锁。 全部代码:https://github.com/imcloudfloating/Lock_Demo 死锁问题 当 A, B 两个账户同时向对方转账时,会出现如下情况: 时刻 事务 1 (A 向 B 转账) 事务 2 (B 向 A 转账) T1 ...

Search Results