自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA单元测试用例——待续

JAVA单元测试用例总结

2022-08-26 20:03:44 1844 1

原创 JAVA内存泄漏与常见问题定位

JAVA后端开发知识总结(持续更新…)JAVA内存泄漏文章目录JAVA内存泄漏一、内存溢出二、内存泄漏2.1 定位与解决一、内存溢出  OutOfMemoryError:JVM内存过小;程序不严密,产生了过多的垃圾。其解决方法在于:增加JVM的内存大小,特别是对启动参数内存值的设定。从根本上解决Java内存溢出的唯一方法就是修改程序,及时地释放没用的对象,释放内存空间,避免死循环,防止一次载入太多的数据。二、内存泄漏  内存泄露,是指程序在申请内存并且用完这块内存后(对象不再需要.

2021-08-02 23:53:32 1649

原创 JAVA后端面经总结——应用类

JAVA后端开发知识总结(持续更新…)JAVA后端面经总结——应用类文章目录JAVA后端面经总结——应用类一、方法总结十、应用类一、方法总结滑动窗口系列十、应用类Word单词拼写检错你怎么实现hashmap存储所有单词然后比较如何读取多个文件,并统计单词出现的频率递归读取文件;每行读;正则表达式分割;HashMap给定一个2亿数字的数组,如何判定某个数是否在集合中,假设数组中没有重复元素,且数字大小在5亿以内。HashSet可以,还有一种方法0\1表.

2021-07-25 21:33:10 309

原创 QLExpress

JAVA后端开发知识总结(持续更新…)QLExpress文章目录QLExpress一、概述二、语法2.1 操作符2.2 Operator扩展2.3 Function相关——绑定某个 Method2.4 Macro 宏定义三、API参考文档一、概述  由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 它是线程安全的,引擎运算过程中产生的临时变量都是ThreadLocal类型。二、语法2.1 操作符操作.

2021-07-15 15:53:17 1902 1

原创 Spring中的设计模式

JAVA后端开发知识总结(持续更新…)Spring中的设计模式文章目录Spring中的设计模式一、Spring中的设计模式总结1.1 依赖倒置原则1.2 工厂模式1.3 单例模式1.4 代理模式1.5 模板方法模式1.6 观察者模式1.7 适配器模式1.8 装饰者模式1.9 责任链模式1.10 策略模式参考文档一、Spring中的设计模式总结  只大致进行总结,核心的使用需要自己结合源码进行分析。1.1 依赖倒置原则控制反转(IoC)依赖注入(DI)1.2 工厂模式BeanF.

2021-07-05 23:15:04 92

原创 JAVA后端面经总结——算法与数据结构

JAVA后端开发知识总结(持续更新…)JAVA后端面经总结——算法与数据结构文章目录JAVA后端面经总结——算法与数据结构一、算法与数据结构一、算法与数据结构栈和队列解决什么问题?八大排序各自的复杂度,稳定性等v拓扑排序、无向图找闭环DFStopK问题?大数加法,36 进制,‘0’ - ‘9’ 为阿拉伯数字 0 - 9,‘a’ - ‘z’ 为阿拉伯数字 10 - 35。https://mp.weixin.qq.com/s/bgD1Q5lc92m.

2021-07-04 22:21:21 491 2

原创 Spring Boot源码解析——Spring Boot的Web原理

JAVA后端开发知识总结(持续更新…)Spring Boot源码解析——Spring Boot的Web原理文章目录Spring Boot源码解析——Spring Boot的Web原理一、Servlet 3.0 规范1.1 不用web.xml的两种方法1.2 Spring对Servlet 3.0的支持——SpringServletContainerInitializer二、Spring Boot加载Servlet等组件2.1 不用web.xml进行三大组件(Servlet、Filter、Listen.

2021-07-03 00:10:47 195 1

原创 JAVA基本数据类型

JAVA后端开发知识总结(持续更新…)JAVA基本数据类型文章目录JAVA基本数据类型一、概述二、基本数据类型的转换2.1 String 和 char2.2 自动类型转换和强制类型转换2.3 四则运算中的类型提升一、概述数据类型整数类型默认为int类型,小数类型默认为double。基本数据类型大小二、基本数据类型的转换2.1 String 和 charStringString转化为char类型时,只能用char类型的数组来接收。String进行Long类.

2021-06-22 00:02:13 106

原创 Spring Boot源码解析——启动配置原理

JAVA后端开发知识总结(持续更新…)Spring Boot源码解析文章目录Spring Boot源码解析一、@SpringBootConfiguration1.1 注解分析1.2 AutoConfigurationImportSelector类参考文档一、@SpringBootConfiguration1.1 注解分析  该注解标注在某个类上说明这个类是Spring Boot的主配置类,Spring Boot应该运行这个类的main方法来启动Spring Boot应用。@Target(.

2021-06-20 16:31:24 138

原创 RocketMQ概念与使用

RocketMQ详解文章目录RocketMQ详解《深入理解NameServer》

2021-06-14 15:34:11 150

原创 RocketMQ源码解析

JAVA后端开发知识总结(持续更新…)RocketMQ源码解析文章目录RocketMQ源码解析一、原理1.1 Producer的启动流程1.2 Producer的顺序消息参考文档一、原理1.1 Producer的启动流程1.2 Producer的顺序消息  Producer:将需要保证顺序的消息按某个属性来自定义选择 MessageQueue,相同属性的分到同一个MessageQueue,然后采取同步发送的方式发送,这时也能保证前一个消息发送成功并返回响应后,才能发送下一个。 .

2021-06-11 09:51:58 392

原创 Git命令使用

JAVA后端开发知识总结(持续更新…)Git命令使用文章目录Git命令使用一、命令总结1.1 git config1.2 文件状态——git status (-s)1.3 文件操作1.4 远程仓库1.5 Git分支二、基本流程2.1 git clone一、命令总结1.1 git config  每一个级别会覆盖上一级别的配置,所以当前用户的gitconfig配置(.git/config)会覆盖系统通用配置(/etc/gitconfig):–global:Git 读写当前用户的配置文件.

2021-06-10 11:16:32 184 2

原创 Maven详解

JAVA后端开发知识总结(持续更新…)Maven详解文章目录Maven详解一、概述二、常用POM属性三、Maven的使用一、概述  Maven是一个构建工具,能够进行自动化构建,还能够抽象构建过程,提供构建任务实现。它跨平台,对外提供了一致的操作接口。同时,它是一个依赖和项目管理工具,提供了中央仓库,能自动下载构件。Maven解决了项目结构混乱、依赖添加麻烦等问题;同时,它分离了测试代码,保证在打包时不会被一并发布到生产环境;此外,简化了测试、打包、部署流程。二、常用POM属性三、Ma.

2021-06-09 11:08:29 259 1

原创 Mac pro的Terminal(终端)简述

JAVA后端开发知识总结(持续更新…)Mac pro的Terminal(终端)简述文章目录Mac pro的Terminal(终端)简述《玩转 Terminal 终端:入门指南及进阶技巧

2021-06-07 21:36:03 538

原创 Nginx反向代理

JAVA后端开发知识总结(持续更新…)Nginx反向代理文章目录Nginx反向代理一、正向代理与反向代理二、反向代理服务器的作用2.1 Nginx的缓冲2.2 伪内部服务器2.3 负载均衡Nginx配置文件一、正向代理与反向代理  Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器。正向与反向相对于自己这台电脑来说,帮我们去上网的就是正向代理,帮助对方服务器的就是反向代理。正向代理  想要访问谷歌,搭建一台代理.

2021-05-30 20:36:30 105

原创 MySQL的binlog和redo log

JAVA后端开发知识总结(持续更新…)MySQL的binlog和redo log文章目录MySQL的binlog和redo log一、binlog1.1 概述1.2 binlog刷盘时机1.3 binlog日志格式二、redo log2.1 概述2.2 redo log记录形式三、binlog 和 redo log 的区别参考文档一、binlog1.1 概述  binlog用于记录数据库执行的写入操作(不包括查询),即所有的 DDL 和 DML 语句,以二进制的形式保存在磁盘中。binlo.

2021-05-25 15:25:07 174

原创 Semaphore源码分析

JAVA后端开发知识总结(持续更新…)Semaphore源码分析文章目录Semaphore源码分析零、前言一、概述二、常用方法2.1 非公平锁实现——nonfairTryAcquireShared()2.2 公平锁实现——tryAcquireShared()2.3 释放信号量——tryReleaseShared()实现零、前言在阅读本篇文章前,建议先学习下面两篇文章:《AQS源码解析》《await和signal源码解析》一、概述  Semaphore(信号量)常用于流量控制,结构和R.

2021-05-19 21:35:50 96

原创 CyclicBarrier源码分析

JAVA后端开发知识总结(持续更新…)CyclicBarrier源码分析文章目录CyclicBarrier源码分析零、前言一、CyclicBarrier 与 CountdownLatch 的区别二、概述三、常用方法3.1 nextGeneration()——开启新的一代3.2 breakBarrier()3.3 reset()3.4 await() 与 await(long timeout, TimeUnit unit)3.4.1 dowait()零、前言在阅读本篇文章前,建议先学习下面两篇.

2021-05-19 20:25:40 112

原创 CountDownLatch源码分析

JAVA后端开发知识总结(持续更新…)CountDownLatch源码分析文章目录CountDownLatch源码分析零、前言一、概述二、常用方法2.1 countDown()——tryReleaseShared()的实现2.2 await()——tryAcquireShared()的实现零、前言在阅读本篇文章前,建议先学习下面两篇文章:《AQS源码解析》《await和signal源码解析》一、概述  CountDownLatch 是为了解决某些操作只能在一组操作全部执行完成后才能执.

2021-05-18 20:17:45 120

原创 ReentrantLock源码分析

JAVA后端开发知识总结(持续更新…)ReentrantLock源码分析文章目录ReentrantLock源码分析一、Lock接口二、ReentrantLock2.1 概述一、Lock接口public interface Lock { // 四种获取锁的方式 void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock.

2021-05-18 19:14:44 92

原创 Netty——简单Dubbo实现

JAVA后端开发知识总结(持续更新…)Netty——文章目录Netty——一、RPC一、RPCRPC(Remote Procedure Call):远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。两个或多个应用程序分布在不同的服务器上,但它们之间的调用都像是在本地方法调用一样。RPC调用流程:RPC 的目标是将 2 - 8 步都封装起来:服务消费方(client)以本地调用方式调用服务.

2021-05-15 11:01:20 326 1

原创 Netty——源码解析

JAVA后端开发知识总结(持续更新…)Netty——文章目录Netty——零、前言一、Netty服务器启动源码零、前言在 io.netty.example 包下,有很多 Netty 源码案例,可以用来分析。一、Netty服务器启动源码源码需要剖析到 Netty 中调用 doBind 方法,追踪到 NioServerSocketChannel 的 doBind。同时要 Debug 程序到 NioEventLoop 类的 run 方法,无限循环,在服务器端运行。...

2021-05-13 21:33:07 1313

原创 Netty——TCP粘包和拆包

JAVA后端开发知识总结(持续更新…)Netty——TCP粘包和拆包文章目录Netty——TCP粘包和拆包一、概述二、TCP粘包演示三、解决方案——自定义协议一、概述  对于TCP,发送端为了更高效地发送多个发给接收端的包,使用了优化方法——Nagle算法,将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。在接收端处理消息边界问题,就是粘包、拆包问题。粘包拆包情况:二、TC.

2021-05-11 22:08:10 132

原创 Netty——Handler链调用机制及编解码器

JAVA后端开发知识总结(持续更新…)Netty——Handler链调用机制及编解码器文章目录Netty——Handler链调用机制及编解码器一、Netty的入站和出站机制1.1 概述1.2 Handler 编解码器1.2.1 ByteToMessageDecoder1.2.2 ReplayingDecoder1.2.3 HttpObjectDecoder二、Handler链调用机制2.1 服务端2.2 客户端2.3 结果一、Netty的入站和出站机制1.1 概述  ChannelHand.

2021-05-11 20:54:42 459

原创 Netty——Protobuf序列化协议

JAVA后端开发知识总结(持续更新…)Netty——Google Protobuf序列化协议文章目录Netty——Google Protobuf序列化协议一、编码与解码1.1 概述1.2 Protobuf序列化协议1.2.1 Protobuf 格式1.2.2 Protobuf 文件实例1.2.3 Netty 中的使用参考文档一、编码与解码1.1 概述  编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时需要编码,接收数据时需要解码。codec(编解码器) 由dec.

2021-05-11 19:08:25 357 2

原创 Netty——核心组件

JAVA后端开发知识总结(持续更新…)Netty——文章目录Netty——一、Netty核心组件1.1 Bootstrap 和 ServerBootstrap一、Netty核心组件1.1 Bootstrap 和 ServerBootstrap一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件。Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。...

2021-05-10 21:06:29 119 1

原创 Netty——群聊系统与心跳机制与WebSocket开发

JAVA后端开发知识总结(持续更新…)Netty——文章目录Netty——一、Netty核心组件1.1 Bootstrap 和 ServerBootstrap1.2 Future 和 ChannelFuture1.3 Channel1.4 Selector1.5 ChannelHandler及其实现类1.6 Pipeline 和 ChannelPipeline二、EventLoop组件2.1 ChannelHandlerContext2.2 ChannelOption2.3 EventLoopGr.

2021-05-10 21:03:14 446

原创 Netty——入门+任务队列+异步模型

JAVA后端开发知识总结(持续更新…)Netty——文章目录Netty——一、Netty入门1.1 服务端1.2 客户端实现二、案例源码分析2.1 服务端三、任务队列 TaskQueue3.1 三种使用场景一、Netty入门要求:引入Netty:1.1 服务端创建BossGroup 和 WorkerGroup创建两个线程组,bossGroup 和 workerGroup;bossGroup 只是处理连接请求,真正的和客户端业务处理,会交给 workerGrou.

2021-05-10 15:53:19 189

原创 Netty——Reactor模式及Netty模型

JAVA后端开发知识总结(持续更新…)Netty——文章目录Netty——一、Netty概述1.1 NIO的问题1.2 Netty简介二、线程模型2.1 传统阻塞I/O模型2.2 Reactor模式2.2.1 单Reactor + 单线程2.2.2 单Reactor + 多线程2.2.3 主从Reactor + 多线程一、Netty概述1.1 NIO的问题NIO 的类库和 API 繁杂,使用麻烦。对多线程和网络编程需要非常熟悉,才能编写出高质量的 NIO 程序。容易遇到客户.

2021-04-28 15:18:27 160

原创 Netty——JAVA的三种网络编程模型

JAVA后端开发知识总结(持续更新…)Netty文章目录Netty一、概述1.1 底层本质1.2 应用场景一、概述1.1 底层本质Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 主要针对在 TCP 协议下,面向 Client 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续传输的应用。Netty 本质是.

2021-04-27 20:56:24 243

原创 NIO与零拷贝

JAVA后端开发知识总结(持续更新…)NIO与零拷贝文章目录NIO与零拷贝一、零拷贝1.1 概述1.2 拷贝方式一、零拷贝1.1 概述零拷贝:  从OS的角度来看,文件的传输不存在CPU的拷贝,只存在DMA拷贝。在内核缓冲中,不存在重复数据(即只有kernel buffer中存在数据)。在Java程序中,常用的零拷贝有 mmap(内存映射)和 sendFile。零拷贝是网络编程和性能优化的关键。  零拷贝不仅带来更少的数据复制,还能减少线程的上下文切换,减少CPU缓存伪共享以及无.

2021-04-27 20:51:33 106

原创 Spring中的事务失效问题

JAVA后端开发知识总结(持续更新…)Spring中的事务失效问题文章目录Spring中的事务失效问题一、@Transactional 注解失效一、@Transactional 注解失效@Transactional 作用在非 public 修饰的方法上,虽然不报错,但是会导致失效。  @Transactional注解使用的是AOP,在使用动态代理的时候只能针对public方法进行代理,源码依据在AbstractFallbackTransactionAttributeSource类中的.

2021-04-21 15:47:23 246

原创 IO多路复用的Select,Poll,Epoll

JAVA后端开发知识总结(持续更新…)IO多路复用的Select,Poll,Epoll文章目录IO多路复用的Select,Poll,Epoll一、基本概念一、基本概念   I/O多路复用(详细可见《五大I/O模型》)的本质是通过系统内核缓冲I/O数据,让单个进程可以监视多个文件描述符(Socket),一旦某个描述符就绪(读就绪或写就绪),就能够通知用户进程进行相应的读写操作。文件描述符   UNIX、Linux中的一个概念。本身是一个非负整数,本质上是一个文件指针数组的索引,指向内.

2021-04-05 17:24:15 157

原创 await和signal源码解析

JAVA后端开发知识总结(持续更新…)Condition接口源码解析文章目录Condition接口源码解析一、概述1.1 与wait/notify机制的对比1.2 条件队列与CLH队列一、概述看这篇文章前,最好先了解AQS的原理:《AQS源码解析》。1.1 与wait/notify机制的对比  Condition接口的方法:  Condition接口的await/signal机制是针对监视器monitor的wait/notify机制的不足进行改进设计的。其方法对比如下所示:.

2021-04-01 16:05:18 289

原创 ThreadLocal详解

JAVA后端开发知识总结(持续更新…)ThreadLocal详解文章目录ThreadLocal详解一、概述二、源码分析2.1 set()2.2 threadLocals 和 ThreadLocalMap2.3 get()三、内存泄漏一、概述  ThreadLocal提供了线程的局部变量,只有当前线程可以访问。每个线程都可以通过set()和get()来对这个局部变量进行操作,它实现了线程的数据隔离,每一个线程都有自己的共享变量。  需要注意的是,为线程分配对象不由ThreadLocal自动.

2021-03-30 22:31:03 107

原创 ConcurrentHashMap源码详解

JAVA后端开发知识总结(持续更新…)ConcurrentHashMap源码详解文章目录ConcurrentHashMap源码详解一、1.7和1.8的ConcurrentHashMap异同二、1.8中的主要方法源码解析2.1 put()2.2 get()参考文档一、1.7和1.8的ConcurrentHashMap异同都不允许key和value为null,否则会抛出异常。和HashMap的功能基本一致,重点解决了HashMap多线程的不安全问题。安全并发实现原理:JDK1.7中的.

2021-03-22 17:53:52 263

原创 AQS源码解析

JAVA后端开发知识总结(持续更新…)AQS源码解析文章目录AQS源码解析一、AQS简介一、AQS简介  AQS(AbstractQuenedSynchronizer)是抽象的队列式同步器框架,是除了java自带的synchronized关键字之外的锁机制。  AQS的核心思想在于,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实.

2021-03-21 22:21:58 296

原创 synchronized详解

JAVA后端开发知识总结(持续更新…)synchronized详解文章目录synchronized详解三、锁优化monitor简介synchronized关键字在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,很多人都会称呼它为重量级锁,随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。Synchr.

2021-03-21 17:13:32 458 1

原创 ConcurrentLinkedQueue源码

JAVA后端开发知识总结(持续更新…)ConcurrentLinkedQueue源码解析文章目录ConcurrentLinkedQueue源码解析一、ConcurrentLinkedQueue简介及基本结构二、ConcurrentLinkedQueue的常用方法解析2.1 入队方法offer()一、ConcurrentLinkedQueue简介及基本结构  ConcurrentLinkedQueue是可以用来实现高并发的无界线程安全队列,底层是一个单向链表。它采用非阻塞算法,通过循环CAS保.

2021-03-20 17:51:40 123

原创 MVCC原理

JAVA后端开发知识总结(持续更新…)MVCC与MySQL单表优化分页查询文章目录MVCC与MySQL单表优化分页查询一、ACID靠什么保证二、MVCC(多版本并发控制)2.1 MVCC简述2.2 undo log2.3 InnoDB的MVCC新增的三个字段2.4 当前读与快照读及版本读取三、MySQL单表优化分页查询一、ACID靠什么保证原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql。一致性一般由代码层面来保证。隔离性由MVCC来保证.

2021-03-18 20:47:49 202

空空如也

空空如也

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

TA关注的人

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