自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 死锁、CPU飙高、内存泄漏、内存溢出、栈溢出 问题定位及解决方法汇总

死锁、CPU飙高、内存泄漏、内存溢出、栈溢出 问题定位及解决方法汇总

2022-09-09 15:59:35 4065 2

原创 【JVM】之堆内存、逃逸分析、栈上分配、同步省略、标量替换详解

本文针对堆内存结构做了详细分析。讲解了堆内存中的垃圾回收、内存分配以及TLAB等概念,在最后针对是否所有对象都分配在堆内存中这一问题做了详细分析。

2022-07-06 22:07:35 636 1

原创 【Netty】模型篇二:通过案例分析Netty线程模型以及Netty的核心组件

快速入门案例Netty 服务器在 6668 端口监听,浏览器发出请求 "http://localhost:6668/ ";服务器可以回复消息给客户端 "Hello! 我是服务器 5 ",并对特定请求资源进行过滤;目的:Netty 可以做Http服务开发,并且理解Handler实例和客户端及其请求的关系。...

2022-04-28 21:13:33 843

原创 【Netty】模型篇一:Netty 线程模型架构 & 工作原理 解读

本文通过与传统I/O模型以及三种Reactor模型进行对比,详细分析了Netty的线程模型是怎么设计的,以及它的工作流程。

2022-04-25 21:14:27 9502 5

原创 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 2903 1

原创 【MySQL】 MVCC:正确理解MVCC及其实现原理

本文针对 MVCC实现原理(ReadView),以及网上众说纷纭的只用MVCC能否解决幻读问题进行详细解读。另外针对MVCC在READ COMMITED 和REPEATABLE READ级别下是如何工作举例详细的例子进行分析,并对 InnoDB 下如何解决幻读也通过实际例子进行了详细分析。............

2022-04-18 15:57:46 2566 2

原创 【MySQL】 锁机制:InnoDB引擎中锁分类以及表锁、行锁、页锁详解

本文首先分析了数据并发场景下回出现的问题,并针对这些问题说明了MySQL中有哪些解决这些问题的方式,并对innodb中的锁的分类进行了详细阐述。

2022-04-17 16:30:20 4383 4

原创 【MySQL】 事务:事务基础知识、MySQL事务实现原理、事务日志 redolog & undolog 详解

本文对事务基础知识、隔离级别,以及事务的实现原理,事务日志 redo log、undo log的结构、原理以及什么时候产生,什么时候删除做了详细讲解。

2022-04-15 10:34:33 2474 2

原创 微信OAuth2.0 登录流程以及安全性分析

本文详细阐述的微信OAuth2授权流程详细说明,以及OAuth2.0是如何保证鉴权安全的

2022-04-09 16:05:51 15761 18

原创 Redis 跳跃表实现原理 & 时间复杂度分析

本文回顾了一下跳表这种数据结构,并分析了Redis的跳跃表是怎么实现的以及它的常用API的时间复杂度

2022-04-05 15:51:41 4065

原创 【JVM】之虚拟机栈

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

2022-04-01 21:28:32 300

原创 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 1065

原创 【谷粒商城】开发篇三:微服务组件 SpringCloud & SpringCloud Alibaba

SpringCloud Alibaba 简介Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托Spring Cloud Alibaba,我们只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。为什么使用SpringCloud Alibaba。

2023-08-31 12:33:50 572

原创 【谷粒商城】报错记录

原先gulimall-common中SpringCloud Alibaba的版本是2.1.0.RELEASE,无法从Nacos中获取配置文件信息。改为2.1.0.RELEASE版本成功解决问题。

2023-08-27 22:57:28 304

原创 【谷粒学院】开发篇二:后台管理系统搭建&逆向生成代码

本篇文章主要内容如下:1.使用人人开源人人开源绞手架搭建后台管理系统的前端和后端框架。2.使用renren-generator逆向生成微服务(gulimall_pms、gulimall_oms、gulimall_sms、gulimall_ums、gulimall_wms)的CRUD代码。

2023-08-26 21:30:01 1001

原创 【谷粒商城】开发篇一:微服务架构搭建

根据上面步骤创建剩余的微服务:创建时需注意一下几点:为 设置 (忽略垃圾文件)

2023-08-24 20:58:12 191

原创 【谷粒商城】环境搭建二:开发环境配置

登录进入gitee,在设置里面找到SSH KEY 将.pub 文件的内容粘贴进去;,连续三次回车生成 ssh key公钥;一般用户目录下会生成密钥文件或者使用。进入git bash,执行。查看 ssh key;

2023-08-23 13:23:00 460

原创 【谷粒商城】环境搭建一:Docker容器部署

测试:sudo docker exec -it redis redis-cli。配置持久化操作,在redis.conf中添加如下内容,然后重启容器。

2023-08-22 22:58:35 262

原创 Docker基础操作入门

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:利用 Dockerfile 定义运行环境镜像使用 docker-compose.yml 定义组成应用的各服务运行 docker-compose up 启动应用。

2023-08-21 21:29:50 307

原创 C++入门之数组、函数、指针、结构体

所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};

2023-08-13 22:10:55 195

原创 Git常用操作总结

本文总结了Git常用的命令,并介绍了在idea中的Git相关操作

2022-07-14 19:15:43 318

原创 【操作系统】:操作系统概述

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。...

2022-06-22 13:51:37 2705 4

原创 Java基础 & 常见数据结构与算法 & 项目总结

一些总结而已

2022-06-21 13:50:49 1511

原创 HotStuff公式算法

HotStuff是基于View的的共识协议,View表示一个共识单元,共识过程是由一个接一个的View组成。在一个View中,存在一个确定leader来主导共识协议,并经过三阶段投票达成共识,然后切换到下一个View继续进行共识。假如遇到异常状况,某个View超时未能达成共识,也是切换到下一个View继续进行共识。............

2022-06-20 14:21:01 678

原创 区块链的认识与总结

1 区块链基础概念中心化服务器 ==》 分布式系统 (点对点网络) ==》 区块链网络1.1 区块链的由来区块链系统的分类公链系统:无准入限制的去中心化分布式区块链系统,对地域无限制, 节点可以随进随出,属于单链区块链系统。联盟链系统:具有严格准入限制 的弱中心化分布式区块链系统,地域相对固定,节点需要审核进入,属于多链系统,一个通道表示一条链,联 盟链系统一般支持多通道。私有链:纯中心化区块链系统,除了具备链式数据结构以外,本质上与 现在传统的互联网业务系统没什么区别。演进过程:

2022-05-30 11:38:51 5692

原创 【Netty】进阶篇二:websocket长连接开发

知识回顾:WebSocket协议案例要求Http协议是无状态的,浏览器和服务器间的请求/响应一次,下一次会重新创建连接。要求实现基于webSocket的长连接的全双工的交互:改变Http协议多次请求的约束,实现长连接了,服务器可以发送消息给浏览器;客户端浏览器和服务器端会相互感知,比如服务器关闭了,浏览器会感知,同样浏览器关闭了,服务器会感知。...

2022-05-05 21:07:33 1338

原创 看完代码回首看论文: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 1794

原创 【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 1293

原创 【Netty】模型篇三:Netty核心组件讲解

本文针对上一篇文章 【Netty】模型篇二:通过案例分析Netty线程模型以及Netty的核心组件 中涉及到的Netty核心组件进行分析讲解。注意:这里强烈建议大家先学习一下 Java NIO,再来看本文。

2022-05-01 15:56:20 2677

原创 【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 634

原创 【Netty】模型篇四:异步模型 Future-Listener 机制

异步模型异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。Netty 中的 I/O 操作是异步的,包括 Bind、Write、Connect 等操作会简单的返回一个ChannelFuture。调用者并不能立刻获得结果,而是通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果Netty 的异步模型是建立在 future 和 callback 的之上的。callba

2022-04-30 15:50:03 984

原创 【Netty】模型篇五:任务队列 taskQueue

前面两篇文章提到了 BossGroup 和 WorkerGroup ,它们的类型是 NioEventLoopGroup,NioEventLoopGroup 相当于一个 事件循环组,这个组中 含有多个事件循环 ,每一个事件循环是 NioEventLoop,而NioEventLoop 中有两个重要属性:Selector 和 TaskQueue。那么这个 TaskQueue,即任务队列,有什么作用呢?我们前面分析了在 事件循环(NioEventLoop) 的过程中,我们会在 pipline 中调用 Handle

2022-04-29 16:59:56 2334

原创 美团二面:498. 对角线遍历

498. 对角线遍历题目描述:给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

2022-04-24 11:48:50 284

原创 Java NIO 与 零拷贝

零拷贝是网络编程的关键,很多性能优化都离不开。在 Java 程序中,常用的零拷贝有 mmap(memory map,内存映射) 和 sendFile。那么它们在 OS(操作系统) 中,到底是怎么样的一个的设计?另外我们看下NIO 中如何使用零拷贝?

2022-04-23 21:36:52 616

原创 Java NIO 应用案例:实现一个简单的群聊系统

本文基于NIO实现了一个简单的群聊系统来巩固NIO所学的知识。该案例实现了服务器端和客户端之间的数据简单通讯。服务器端功能:监测用户上线,离线;实现客户端消息的转发功能(将该客户端的消息转发给其它客户端)。客户端功能:通过 channel 无阻塞地发送消息给其它所有用户,同时可以接受其它用户发送的消息(由服务器转发得到)。

2022-04-23 19:03:44 2212 1

原创 二分法应用:875. 爱吃香蕉的珂珂

875. 爱吃香蕉的珂珂思路分析我们要找的是速度。因为题目限制了珂珂一个小时之内只能选择一堆香蕉吃,因此速度的最小值肯定需要大于等于 1,同时也要小于等于这几堆香蕉中,数量最多的那一堆。还是因为珂珂一个小时之内只能选择一堆香蕉吃,因此:每堆香蕉吃完的耗时 = 这堆香蕉的数量 / 珂珂一小时吃香蕉的数量。根据题意,这里的 / 在 不能整除 的时候,需要 向上取整 。代码实现class Solution { public int minEatingSpeed(int[] piles, int

2022-04-22 14:26:21 224

原创 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 1798

原创 回溯算法 之 全排列问题 & 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 207

原创 一套模板秒杀滑动窗口 & leetcode滑动窗口题目汇总

本文介绍了滑动窗口的通用方法,并对leetcode上常见的滑动窗口相关题目做了讲解

2022-04-16 15:12:23 769

原创 JavaWeb三大组件之Servlet详解:Servlet使用案例、继承关系、生命周期、会话跟踪 以及 服务器内部转发和客户端重定向 详解

本文通过一个Servlet使用案入门,进而分析Servlet 的继承关系、生命周期、会话跟踪 以及 服务器内部转发和客户端重定向 详解,通过本章学习,还能巩固计算机网络的相关知识,并且能实际体验如何使用cookie和session来维持客户端和服务端的会话的。

2022-04-15 15:46:05 1755

空空如也

空空如也

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

TA关注的人

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