自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Nacos动态配置

SpringBoot集成Naocs动态配置

2023-10-19 23:27:31 210

原创 JVM-图解

JVM内存结构定义:java程序的运行环境(java二进制字节码的运行环境)一次编写,到处运行自动内存管理,垃圾回收机制数组下标越界检查多态(虚方法表调用)比较jvm java二进制运行环境jre jvm+基础类库(所有类)jdk jvm+ jre +编译工具开发javase jdk+IDE工具开发javaee程序 jdk + 应用服务器+IDE工具常见JVMHotSpotOpenJ9。。。。。![img](https://ny

2021-09-11 18:09:36 398

原创 并发五-J.U.C

并发五-J.U.C18. JUC-原子类18.1 原子整数J.U.C并发包提供了:(基本类型)AtomicBooleanAtomicIntegerAtomicLong以AtomicInteger为例:package com.sunyang.concurrentstudy;import java.util.concurrent.atomic.AtomicInteger;/** * @program: ConcurrentStudy * @description: Dmeo

2021-09-11 18:07:34 328

原创 并发四-线程池

并发四-线程池20. 共享模型之不可变20.1 SimpleDateFormat与DateTimeFormatterpackage com.sunyang.concurrentstudy;import lombok.extern.slf4j.Slf4j;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.format.DateTimeFormatter;import ja

2021-09-11 18:06:03 219

原创 并发三-共享模型之内存

并发三-共享模型之内存11. 共享模型之内存11.1 Java内存模型JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。JMM 体现在以下几个方面原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响11.1.1 可见性退不出的循环package com.sunyang.concurre

2021-09-11 18:05:02 118

原创 并发二-锁

并发二-锁4. 共享模型之管程4.1 共享带来的问题老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快小南、小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用但小南不能一天24小时使用算盘,他经常要小憩一会(sleep),又或是去吃饭上厕所(阻塞 io 操作),有 时还需要一根烟,没烟时思路全无(wait)这些情况统称为(阻塞)在这些时候,算盘没利用起来(不能收钱了),老王觉得有点不划算另外,小女也想用用算盘,如果总是小

2021-09-11 18:03:52 273

原创 并发一-线程

并发1.进程与线程1.1 进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)1.2 线程一个进程之内可以分为一到

2021-09-06 17:38:12 82

原创 Java语法糖

语法糖编译期处理(javac)定义编译器在编译期javac会进行一些优化处理(语法糖)是指在java编译器把*.java源码编译成*.class字节码大的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是java编译器给的一些福利默认构造器不写构造方法时 ,编译器会默认生成一个无参的构造方法自动拆装箱JDK5之后加入Integer x = 1 ;int y = x;Integer x = Integer.valueOf(1); // -128 到

2021-08-27 09:55:03 82

原创 JVM-字节码

类加载-字节码字节码文件所谓的方法入口就是你调用的这个方法在实际内存中的地址,一段方法的代码块,一定是存在内存中的某个地址,那么这个代码块开始的地址,也就是所谓的方法的入口,因为你要从这个地址进入到你要调用的这个方法,然后去执行该方法的逻辑。而所谓的静态绑定,就是因为这个类的这个方法不能够被改变了,也就是说你不能重写这个方法了,类如 私有的,静态的,final的,即使你是子类继承了他,但是你也不能够重写这个方法,你要想调用这个方法,你只能以父类去调用这个方法,或者你想调用,你调用的也只能是父类中的这个

2021-08-27 09:50:27 429

原创 图解类加载

类加载类加载阶段加载将类的字节码载入方法区(1.8后为元空间,在本地内存中)中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有:_java_mirror 即 java 的类镜像,例如对 String 来说,它的镜像类就是 String.class,作用是把 klass 暴露给 java 使用,镜像起到一个桥梁的作用,Java对象不能直接访问instanceKlass 的信息,它得通过镜像_java_mirror 来访问。例如,对于String,Jav

2021-08-27 09:46:29 155

原创 Netty学习笔记八Reactor模型

Netty学习笔记八八. Reactor典型实现常见的线程模型传统阻塞IO服务模型: 一个线程处理一个连接,阻塞。Reactor模型: 基于IO复用模型。Reactor(反应器模式,分发者模式,通知者模式)三种典型实现单Reactor单线程单Reactor多线程主从Reactor多线程Netty线程模式(Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reacotr)核心组成Reactor:Reactor在一个单

2021-08-26 16:26:56 105

原创 Netty学习笔记七Netty源码

Netty学习笔记七七. Netty源码写的比较乱,请见谅。1. 启动剖析Nio流程// 1. 创建SelectorSelector selector = Selector.open(); // 2. 创建serverSocketChannelServerSocketChannel ssc = ServerSocketChannel.open(); // 3. 将serverSocketChannel注册到selector上SelectionKey selectionKey

2021-08-26 16:25:41 179

原创 Netty学习笔记六RPC框架简略版

Netty学习笔记六六. RPC框架服务端package com.sunyang.netty.study.server;import com.sunyang.netty.study.protocol.MessageCodecSharable;import com.sunyang.netty.study.protocol.ProtocolFrameDecoder;import com.sunyang.netty.study.server.handler.RpcRequestMessageHand

2021-08-26 16:23:17 122

原创 Netty学习笔记五Netty参数

Netty学习笔记五五. 优化与参数1. 优化1.1 扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[])反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理package com.sunyang.netty.study.protocol;import com.google.gson.*;import java.io.*;import java

2021-08-26 16:21:00 383

原创 Netty学习笔记四Netty进阶协议相关

Netty学习笔记四四. Netty 进阶1. 粘包半包1.1 粘包server端package com.sunyang.netty.study.nettydemo;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboun

2021-08-26 16:20:05 341

原创 Netty学习笔记三Netty基础

Netty学习笔记三三. Netty基础1. 概述1.1 Netty 是什么?Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端这里的异

2021-08-26 16:17:13 275

原创 Netty学习笔记二网络编程

Netty学习笔记二二. 网络编程1. 阻塞模式阻塞主要表现为:连接时阻塞读取数据时阻塞缺点:阻塞单线程在没有连接时会阻塞等待连接的到达,连接到了以后,要进行读取数据,如果没有数据,还要阻塞等待数据的到达。如果在等待连接期间其他线程发来了数据,依然读取不到数据,只能等待新的连接到达后,再次遍历所有channel的时候才能读取。如果在一个客户端连接上以后,迟迟不发送数据,那么下一个客户端来的时候,想请求连接就只能阻塞的等待,等待第一个客户端发送数据到服务器端,并处理完成,才会和新的客户

2021-08-26 16:15:05 171

原创 Netty学习笔记一NIO基础

Netty学习笔记一一. NIO 基础non-blocking io 非阻塞IO (也可称为new IO, 因为是JDK1.4加入的)1. 三大组件1.1 Channel通道:数据的传输通道。我们之前使用的Stream也是数据的传输通道,只不过他们是单向的数据传输通道(输出(流)通道,输入(流)通道),但是Channel是读写数据的**【双向通道】**,可以将数据读入buffer,也可以将buffer的数据写入channel,而之前的stream要么是输入,要么是输出,channel比stream

2021-08-26 16:10:13 192

空空如也

空空如也

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

TA关注的人

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