自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(274)
  • 收藏
  • 关注

原创 synchronized关键字的使用和原理

synchronized使用方式,锁原理,锁升级。

2023-12-13 14:01:08 190

原创 Java实现多线程的三种方式

Java有三种方式实现多线程,继承 Thread 类、实现 Runnable 接口、实现 Callable 接口。还有匿名内部类方式,Lambda 表达式方式简化开发。

2023-12-11 23:17:09 1490

原创 数据库三大范式

数据库三大范式举例

2023-08-25 15:54:59 221

原创 Java使用线程池异步处理并返回结果

【代码】Java使用线程池异步处理并返回结果。

2023-08-17 17:21:46 1233

原创 sql中in后面元素过多导致索引失效解决方案

可以使用临时表,也可以分片查询。

2023-08-01 17:38:54 886

原创 设计一个RPC框架

一个基本的RPC框架的设计方案

2023-05-12 10:32:19 276 1

原创 缓存与数据库一致性

大致分成四种情况。

2023-05-11 20:10:59 489

原创 CAS底层

CAS操作在底层有一条对应的汇编指令,硬件直接支持。LOCK_IF_MP,如果是多个CPU,前面还要加一条LOCK指令,本身cmpxchg指令是没有原子性的,在多个cpu执行时,加上LOCK指令就是保证一个CPU执行后面的empxchg指令时,其他CPU不能执行。在硬件层,LOCK指令在执行后面指令的时候锁定一个北桥信号(不采用锁总线方式)。所以CAS最终实现就是lock cmpxchg指令。

2023-03-30 19:51:40 407

原创 MySQL三大日志(redo log、binlog、undo log)

redo log、binlog、undo log

2023-03-16 15:42:33 422

原创 Java死锁

什么是死锁、死锁的必要条件、如何预防死锁、如何检测死锁。

2023-03-05 10:07:46 433

原创 Java除自身以外数组的乘积leetcode_238

技巧题

2022-11-27 13:20:20 207

原创 Java数组中的第K个最大元素leetcode_215

基于快排的快速选择排序.

2022-11-25 21:39:57 191

原创 Java课程表leetcode_207

dfs,拓扑排序

2022-11-22 23:57:02 141

原创 Java反射常用命令

反射使用

2022-11-20 20:16:27 174

原创 Java多线程Callable

Callable可以有返回值,返回值通过 Future 进行封装。FutureTask 实现了 RunnableFuture 接口,该接口继承自 Runnable 和 Future 接口,这使得 FutureTask 既可以当做一个任务执行,也可以有返回值。

2022-11-17 21:19:19 286

原创 Java四数之和leetcode_18

剪枝

2022-11-15 20:32:43 131

原创 Java环形链表2_leetcode142

指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。如果链表中有某个节点,可以通过连续跟踪。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。给定一个链表的头节点。如果链表无环,则返回。,则在该链表中没有环。

2022-11-13 16:54:11 65

原创 Java环形链表_leetcode141(快慢指针、set)

指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。1、解法一:设置快慢指针,只要快指针速度>慢指针速度就可以。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。空间:42.3MB 击败79.54%空间:42.3MB 击败79.54%仅仅是为了标识链表的实际情况。我使用快指针速度2,慢指针速度1。(即,常量)内存解决此问题吗?时间:4ms 击败13.80%时间:0ms 击败100%,判断链表中是否有环。给你一个链表的头节点。

2022-11-13 16:08:55 330

原创 Java买卖股票的最佳时机 IV_leetcode188(dp+空间优化)

随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3。在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4。在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。空间:39.1MB 击败94.93%时间:1ms 击败99.78%

2022-11-13 10:04:50 123

原创 Java集合做栈的性能比较

输出:在数据插入删除多的情况下LinkedList较快;

2022-10-28 15:26:36 614

原创 光纤的基本知识

通讯用光纤是由通过内部全反射来传输光信号的玻璃构成的。玻璃光纤的标准直径为125微米(0.125毫米),表面覆盖有直径250微米或900微米的树脂保护涂敷层。玻璃光纤的传送光的中心部分称为“纤芯”,其周围的包层的折射率比纤芯低,从而限制了光的流失。石英玻璃非常脆弱,因此覆有保护涂层。通常有三种典型的光纤涂敷层。

2022-10-10 17:17:05 3486

原创 Java通过URL进行多线程下载

*** 通过 URL 多线程下载文件* URL 对象提供的openStream() ,再通过它获取 URL 资源的 InputStream。// 获取当前时间 long begin_time = new Date() . getTime();//获取该URL的资源名,然后获取文件名 String fileName = url . getFile();System . out . println("开始下载>>>");

2022-10-09 15:21:35 498 2

原创 Java提供的网络支持

URL 地址里包含中文时,关键字就会变成所谓的"乱码"—— application/x-www-form-urlencoded MIMF 字符串。URL格式:protocol://host:port/resourceName 如:http://www.baidu.com。URL(Uniform Resource Locator):统一资源定位器,包含一个可打开到达该资源的输入流,URI的特例。的类,他还有两个子类:Inet4Address(IPV4)、Inet6Address(IPV6)。

2022-10-08 21:25:30 265

原创 Java 常用注解

Inherited:子类可以继承父类中的该注解,如果某个类使用 @XXX 注解,其子类将自动继承 @XXX。@Deprecated:标识某个程序元素(类、方法等)已过时,当其他程序使用时编译器会给出警告。@Target:指定被修饰的 Annotation 能用于哪些程序单元。@Override:强制一个子类必须覆盖父类的方法(只能修饰方法)。@Documented:该注解将被包含在 javadoc 中。@Retention:注解的保留位置。

2022-10-06 21:26:12 204

原创 自定义Annotation

使用自定义的Annotation。

2022-10-06 19:03:52 104

原创 @FunctionalInterface

Java8函数式接口:接口中只有一个抽象方法(可以包含多个默认方法或者多个static方法),Java允许使用 Lambda 表达式创建函数式接口的实例。@FunctionalInterface 用来指定某个接口必须是函数式接口。如果再增加一个抽象方法 func4(),就会编译出错。

2022-10-06 18:00:17 151

原创 Java颜色的分类leetcode_75

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。内存消耗:40.1 MB, 在所有 Java 提交中击败了32.37%的用户。执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。通过测试用例:87 / 87。

2022-09-22 18:52:14 131

原创 Java深入数组

一旦数组的初始化完成,数组在内存中所占用的空间将被固定下来,即数组的长度不可改变。Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组,这个Arrays类里包含了如下几个static修饰的方法(static修饰的方法可以直接通过类名调用)。当使用foreach循环迭代访问数组时,foreach中的循环变量相当于一个临时变量,系统会把数组元素依次赋值给这个临时变量,而这个临时变量并不是数组元素,它只是保存了数组元素的值。数组是一种引用数据类型,数组引用变量只是一个引用,

2022-09-21 21:25:55 275

原创 Java爬楼梯leetcode_70

内存消耗:38.3 MB, 在所有 Java 提交中击败了51.78%的用户。执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户。还能优化空间,用三个元素就可以,我就不优化了;你有多少种不同的方法可以爬到楼顶呢?通过测试用例:45 / 45。

2022-09-21 18:47:54 103

原创 Java最小路径和leetcode_64

内存消耗:43.8 MB, 在所有 Java 提交中击败了82.78%的用户。执行用时:2 ms, 在所有 Java 提交中击败了94.58%的用户。,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。给定一个包含非负整数的。每次只能向下或者向右移动一步。通过测试用例:61 / 61。

2022-09-21 18:29:59 150

原创 Java字母异位词分组leetcode_49

​ 比如将 [b,a,a,a,b,c] 编码成 a3b2c1,使用编码后的字符串作为 HashMap 的 Key 进行聚合。​ groupingBy 算子计算完以后,返回的是一个 Map,map 的键是。​ 将所有字符串根据字母排序,因为每种字母的个数都是相同的,那么排序后的字符串就一定是相同的。​ 编码计数,对每个字符串计数得到该字符串的计数数组,对于计数数组相同的字符串,就互为异位词。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

2022-09-13 20:17:06 245

原创 Java获取Stream流的方式

​ 我们通过调用stream()方法,将数组中的数据存放到Stream对象中,直接对Stream中的数据进行操作。

2022-09-13 19:59:20 601

原创 Java旋转图像leetcode_48

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。给定一个 n × n 的二维矩阵 matrix 表示一个图像。输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]

2022-09-06 21:58:42 136

原创 Java接雨水leetcode_42

内存消耗:42 MB, 在所有 Java 提交中击败了62.39%的用户。执行用时:1 ms, 在所有 Java 提交中击败了75.74%的用户。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。通过测试用例:322 / 322。个非负整数表示每个宽度为。

2022-09-01 22:01:55 110

原创 Java学习路线(个人学习总结)

框架:Spring,SpringMVC,Mybatis,SSM,MybatisPlus(*)分布式:Nginx,Zookeeper,Dubbo,nacos(*)数据库:MySQL,JDBC,Redis,MongDB(*)容器:Linux,Docker,kubernetes(*)计算机网络,设计模式,JVM,多线程,netty。中间件:kafka,ActiveMQ(提升效率:Maven,Git(*)微服务:SpringCloud。(*)选学,可以后面用到再学。性能测试:JMeter(*)......

2022-09-01 10:14:24 694 1

原创 NettyServer fe

【代码】NettyServer fe。

2022-08-26 21:58:08 141

原创 Java Socket 全双工通信

最初在认识上有这样的误区,认为只有在 netty,nio 这样的多路复用 IO 模型时,读写才不会相互阻塞,才可以实现高效的双向通信,但实际上,Java Socket 是全双工的:在任意时刻,线路上存在A 到 B和 B 到 A的双向信号传输。即使是阻塞 IO,读和写是可以同时进行的,只要分别采用读线程和写线程即可,读不会阻塞写、写也不会阻塞读。...

2022-08-26 19:50:22 1069

原创 NIO Netty(六)netty实现简单的服务端与客户端

Netty: 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。

2022-08-26 15:35:04 148

原创 NIO Netty(五)零拷贝、同步异步

所谓的【零拷贝】,并不是真正无拷贝,而是在不会拷贝重复数据到 jvm 内存中,零拷贝的优点有。这期间用户线程阻塞,操作系统使用 DMA(Direct Memory Access)来实现文件读,其间也不会使用 cpu。可以看到中间环节较多,java 的 IO 实际不是物理设备级别的读写,而是缓存的复制,底层的真正读写是操作系统来完成的。(即 byte[] buf),这期间 cpu 会参与拷贝,无法利用 DMA。,去调用操作系统(Kernel)的读能力,将数据读入。,调用操作系统的写能力,使用 DMA 将。..

2022-08-26 15:06:26 182

原创 NIO Netty(四)Selector处理write事件、多线程优化

【代码】NIO Netty(四)

2022-08-26 10:53:52 509

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除