- 博客(95)
- 收藏
- 关注

原创 【JVM】之堆内存、逃逸分析、栈上分配、同步省略、标量替换详解
本文针对堆内存结构做了详细分析。讲解了堆内存中的垃圾回收、内存分配以及TLAB等概念,在最后针对是否所有对象都分配在堆内存中这一问题做了详细分析。
2022-07-06 22:07:35
708
1

原创 【Netty】模型篇二:通过案例分析Netty线程模型以及Netty的核心组件
快速入门案例Netty 服务器在 6668 端口监听,浏览器发出请求 "http://localhost:6668/ ";服务器可以回复消息给客户端 "Hello! 我是服务器 5 ",并对特定请求资源进行过滤;目的:Netty 可以做Http服务开发,并且理解Handler实例和客户端及其请求的关系。...
2022-04-28 21:13:33
912

原创 【Netty】模型篇一:Netty 线程模型架构 & 工作原理 解读
本文通过与传统I/O模型以及三种Reactor模型进行对比,详细分析了Netty的线程模型是怎么设计的,以及它的工作流程。
2022-04-25 21:14:27
10800
6

原创 Java NIO 编程:Buffer、Channel、Selector原理详解
1 Java 中的 I/O模型:BIO、NIO、AIO1.1 BIO、NIO、AIO概念介绍I/O 模型简单的理解:就是 用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。Java共支持3种网络编程模型/IO模式:BIO、NIO、AIO。Java BIO:同步并阻塞(传统阻塞型),服务器实现模式为 一个连接对应一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。Java NIO: 同步非阻塞,服务器实
2022-04-21 10:55:40
3101
1

原创 【MySQL】 MVCC:正确理解MVCC及其实现原理
本文针对 MVCC实现原理(ReadView),以及网上众说纷纭的只用MVCC能否解决幻读问题进行详细解读。另外针对MVCC在READ COMMITED 和REPEATABLE READ级别下是如何工作举例详细的例子进行分析,并对 InnoDB 下如何解决幻读也通过实际例子进行了详细分析。............
2022-04-18 15:57:46
2847
2

原创 【MySQL】 锁机制:InnoDB引擎中锁分类以及表锁、行锁、页锁详解
本文首先分析了数据并发场景下回出现的问题,并针对这些问题说明了MySQL中有哪些解决这些问题的方式,并对innodb中的锁的分类进行了详细阐述。
2022-04-17 16:30:20
4604
4

原创 【MySQL】 事务:事务基础知识、MySQL事务实现原理、事务日志 redolog & undolog 详解
本文对事务基础知识、隔离级别,以及事务的实现原理,事务日志 redo log、undo log的结构、原理以及什么时候产生,什么时候删除做了详细讲解。
2022-04-15 10:34:33
2619
2

原创 Redis 跳跃表实现原理 & 时间复杂度分析
本文回顾了一下跳表这种数据结构,并分析了Redis的跳跃表是怎么实现的以及它的常用API的时间复杂度
2022-04-05 15:51:41
4428

原创 【JVM】之虚拟机栈
1 虚拟机栈概述1.1 虚拟机栈出现的背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。1.2 内存中的栈与堆首先栈是运行时的单位,而堆是存储的单位栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放,放哪里1.3 虚拟机栈的基本内容Java虚拟机栈是什么?Java虚拟机栈(Java Vi
2022-04-01 21:28:32
330

原创 Spring源码分析之 Bean的生命周期、循环依赖
Spring Bean的生命周期1 前置知识什么是Spring Bean,它和Java 对象的区别spring bean是受spring容器管理的对象,可能经过了完整的spring bean生命周期(为什么是可能?难道还有bean是没有经过bean生命周期的?答案是有的,具体我们后面文章分析),最终存在spring容器当中;一个bean一定是个对象。任何符合java语法规则实例化出来的对象,但是一个对象并不一定是spring bean。Spring会根据配置文件或者配置类来生成描述Bean的
2022-02-17 14:18:51
1141
原创 【谷粒商城】开发篇三:微服务组件 SpringCloud & SpringCloud Alibaba
SpringCloud Alibaba 简介Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托Spring Cloud Alibaba,我们只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。为什么使用SpringCloud Alibaba。
2023-08-31 12:33:50
635
原创 【谷粒商城】报错记录
原先gulimall-common中SpringCloud Alibaba的版本是2.1.0.RELEASE,无法从Nacos中获取配置文件信息。改为2.1.0.RELEASE版本成功解决问题。
2023-08-27 22:57:28
358
原创 【谷粒学院】开发篇二:后台管理系统搭建&逆向生成代码
本篇文章主要内容如下:1.使用人人开源人人开源绞手架搭建后台管理系统的前端和后端框架。2.使用renren-generator逆向生成微服务(gulimall_pms、gulimall_oms、gulimall_sms、gulimall_ums、gulimall_wms)的CRUD代码。
2023-08-26 21:30:01
1083
原创 【谷粒商城】环境搭建二:开发环境配置
登录进入gitee,在设置里面找到SSH KEY 将.pub 文件的内容粘贴进去;,连续三次回车生成 ssh key公钥;一般用户目录下会生成密钥文件或者使用。进入git bash,执行。查看 ssh key;
2023-08-23 13:23:00
482
原创 【谷粒商城】环境搭建一:Docker容器部署
测试:sudo docker exec -it redis redis-cli。配置持久化操作,在redis.conf中添加如下内容,然后重启容器。
2023-08-22 22:58:35
322
原创 Docker基础操作入门
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:利用 Dockerfile 定义运行环境镜像使用 docker-compose.yml 定义组成应用的各服务运行 docker-compose up 启动应用。
2023-08-21 21:29:50
334
原创 C++入门之数组、函数、指针、结构体
所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};
2023-08-13 22:10:55
218
原创 【操作系统】:操作系统概述
操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。...
2022-06-22 13:51:37
2803
4
原创 HotStuff公式算法
HotStuff是基于View的的共识协议,View表示一个共识单元,共识过程是由一个接一个的View组成。在一个View中,存在一个确定leader来主导共识协议,并经过三阶段投票达成共识,然后切换到下一个View继续进行共识。假如遇到异常状况,某个View超时未能达成共识,也是切换到下一个View继续进行共识。............
2022-06-20 14:21:01
785
原创 区块链的认识与总结
1 区块链基础概念中心化服务器 ==》 分布式系统 (点对点网络) ==》 区块链网络1.1 区块链的由来区块链系统的分类公链系统:无准入限制的去中心化分布式区块链系统,对地域无限制, 节点可以随进随出,属于单链区块链系统。联盟链系统:具有严格准入限制 的弱中心化分布式区块链系统,地域相对固定,节点需要审核进入,属于多链系统,一个通道表示一条链,联 盟链系统一般支持多通道。私有链:纯中心化区块链系统,除了具备链式数据结构以外,本质上与 现在传统的互联网业务系统没什么区别。演进过程:
2022-05-30 11:38:51
5807
原创 【Netty】进阶篇二:websocket长连接开发
知识回顾:WebSocket协议案例要求Http协议是无状态的,浏览器和服务器间的请求/响应一次,下一次会重新创建连接。要求实现基于webSocket的长连接的全双工的交互:改变Http协议多次请求的约束,实现长连接了,服务器可以发送消息给浏览器;客户端浏览器和服务器端会相互感知,比如服务器关闭了,浏览器会感知,同样浏览器关闭了,服务器会感知。...
2022-05-05 21:07:33
1420
原创 看完代码回首看论文:YOLOv3重读
1 Abstract 解读摘要中主要介绍了它相对于之前网络上性能的提升:At 320 × 320 YOLOv3 runs in 22 ms at 28.2 mAP,as accurate as SSD but three times faster.yolov3在输入图片为 320 × 320 的大小下,处理时间为 22ms,换算下来大概 50FPS,并且在COCO数据集上达到了 28.2mAP 的平均精度,在同样精度下,速度比SSD块了三倍When we look at the old .5 IOU
2022-05-04 17:16:53
1848
原创 【Netty】进阶篇一:心跳检测机制
1 案例要求编写一个 Netty心跳检测机制案例:当服务器超过3秒没有读时,就提示读空闲;当服务器超过5秒没有写操作时,就提示写空闲;实现当服务器超过7秒没有读或者写操作时,就提示读写空闲;2 代码实现分析2.1 代码实现public class MyServer { public static void main(String[] args) { NioEventLoopGroup bossGroup = new NioEventLoopGroup(1);
2022-05-04 14:13:44
1362
原创 【Netty】模型篇三:Netty核心组件讲解
本文针对上一篇文章 【Netty】模型篇二:通过案例分析Netty线程模型以及Netty的核心组件 中涉及到的Netty核心组件进行分析讲解。注意:这里强烈建议大家先学习一下 Java NIO,再来看本文。
2022-05-01 15:56:20
2748
原创 【Netty】实战:入门案例 之 HTTP开发
1 案例需求分析Netty 服务器在 6668 端口监听,浏览器发出请求 http://localhost:6668/ ;服务器可以回复消息给客户端 Hello! 我是服务器 , 并对特定请求资源进行过滤;目的:了解如何使用Netty做HTTP服务开发,并且理解 Handler 实例和客户端及其请求的关系。2 代码实现2.1 总体思路代码总体实现思路说明步骤一:创建两个线程组 BossGroup 和 WorkerGroup,他们的类型都是 NioEventLoopGroup。boss
2022-04-30 18:47:10
689
原创 【Netty】模型篇四:异步模型 Future-Listener 机制
异步模型异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。Netty 中的 I/O 操作是异步的,包括 Bind、Write、Connect 等操作会简单的返回一个ChannelFuture。调用者并不能立刻获得结果,而是通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果Netty 的异步模型是建立在 future 和 callback 的之上的。callba
2022-04-30 15:50:03
1025
原创 【Netty】模型篇五:任务队列 taskQueue
前面两篇文章提到了 BossGroup 和 WorkerGroup ,它们的类型是 NioEventLoopGroup,NioEventLoopGroup 相当于一个 事件循环组,这个组中 含有多个事件循环 ,每一个事件循环是 NioEventLoop,而NioEventLoop 中有两个重要属性:Selector 和 TaskQueue。那么这个 TaskQueue,即任务队列,有什么作用呢?我们前面分析了在 事件循环(NioEventLoop) 的过程中,我们会在 pipline 中调用 Handle
2022-04-29 16:59:56
2573
原创 美团二面:498. 对角线遍历
498. 对角线遍历题目描述:给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
2022-04-24 11:48:50
312
原创 Java NIO 与 零拷贝
零拷贝是网络编程的关键,很多性能优化都离不开。在 Java 程序中,常用的零拷贝有 mmap(memory map,内存映射) 和 sendFile。那么它们在 OS(操作系统) 中,到底是怎么样的一个的设计?另外我们看下NIO 中如何使用零拷贝?
2022-04-23 21:36:52
680
原创 Java NIO 应用案例:实现一个简单的群聊系统
本文基于NIO实现了一个简单的群聊系统来巩固NIO所学的知识。该案例实现了服务器端和客户端之间的数据简单通讯。服务器端功能:监测用户上线,离线;实现客户端消息的转发功能(将该客户端的消息转发给其它客户端)。客户端功能:通过 channel 无阻塞地发送消息给其它所有用户,同时可以接受其它用户发送的消息(由服务器转发得到)。
2022-04-23 19:03:44
2304
1
原创 二分法应用:875. 爱吃香蕉的珂珂
875. 爱吃香蕉的珂珂思路分析我们要找的是速度。因为题目限制了珂珂一个小时之内只能选择一堆香蕉吃,因此速度的最小值肯定需要大于等于 1,同时也要小于等于这几堆香蕉中,数量最多的那一堆。还是因为珂珂一个小时之内只能选择一堆香蕉吃,因此:每堆香蕉吃完的耗时 = 这堆香蕉的数量 / 珂珂一小时吃香蕉的数量。根据题意,这里的 / 在 不能整除 的时候,需要 向上取整 。代码实现class Solution { public int minEatingSpeed(int[] piles, int
2022-04-22 14:26:21
252
原创 0-1背包问题讲解 & leetcode相关题目总结
1 0-1背包问题理论基础1.1 0-1背包问题描述0-1背包问题描述有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。其实这个问题我们也可以用暴力解法,每一件物品其实只有两个状态,取或者不取,所以可以使用 回溯法 搜索出所有的情况,那么时间复杂度就是o(2^n),这里的n表示物品数量。暴力的解法是 指数级别 的时间复杂度。进而才需要动态规划的解法来进行优化!在下面的讲解
2022-04-22 13:54:19
2425
原创 回溯算法 之 全排列问题 & 46. 全排列 & 47. 全排列 II
46. 全排列这里要说明一点:排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,它和子集以及组合是不同的。注意:这里题目中说明了数组中不包含重复数字。思路一:使用used数组来标记已经选择的元素思路分析:使用一个额外的数组used来记录的是此时数组中的哪些元素已经在path中了,因为一个排列里一个元素只能使用一次。class Solution { List<List<Integer>> result = new ArrayList<>();
2022-04-18 09:50:58
225
原创 JavaWeb三大组件之Servlet详解:Servlet使用案例、继承关系、生命周期、会话跟踪 以及 服务器内部转发和客户端重定向 详解
本文通过一个Servlet使用案入门,进而分析Servlet 的继承关系、生命周期、会话跟踪 以及 服务器内部转发和客户端重定向 详解,通过本章学习,还能巩固计算机网络的相关知识,并且能实际体验如何使用cookie和session来维持客户端和服务端的会话的。
2022-04-15 15:46:05
1815
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人