avatar
Articles
40
Tags
120
Categories
22
Home
Archives
LogoLittleYのBlog
Search
Home
Archives

LittleYのBlog

类的生命周期及类加载器
Created2025-12-24|JVMJava
1. 类的生命周期类的生命周期整体为:加载、连接、初始化、使用、卸载。其中连接阶段分为:验证、准备、解析。如下图所示: 1.1 加载阶段 首先,[[#2. 类加载器|类加载器]]根据类的全限定名通过不同的渠道(从磁盘、网络等)以二进制流的方式获取字节码信息; 然后JVM将字节码中的信息保存到内存的方法区中。在方法区生成一个InstanceKlass对象,保存类的所有信息; 并且在堆中保存一份与方法区中类似的java.lang.Class对象,用于在Java代码中获取类信息。 1.2 连接阶段如上图所示,连接阶段包含验证、准备、解析三个阶段。 1.2.1 验证这个阶段主要目的是检测字节码文件是否遵循《Java虚拟机规范》中的约束。主要包含一下几点: 文件格式验证,如:魔数的验证,注册版本号是否满足当前虚拟机的要求等; 元信息验证,如:所有类必须有父类,即super不能为空; 验证程序执行指令的语义; 符号引用验证,如:是否访问其他类中的private方法等。 1.2.2 准备一般情况下,此阶段将会为静态变量分配内存并设置初值。当静态变量为final修饰的话,准备阶段将直接按...
ReentrantReadWriteLock详解
Created2025-12-24|后端开发并发编程
本文来讨论ReentrantReadWriteLock的实现原理。本文的内容客观上看不算太难,但是内容相对较多,需要有一定AQS的基础,如:AQS、独占锁、共享锁等。这些内容可以参考之前的一些文章,如:[[ReentrantLock详解(一)—— 加锁和解锁|ReentrantLock详解]]、[[CountDownLatch详解]]、[[CyclicBarrier详解]]等。 1. ReentrantReadWriteLock是什么?翻译过来,名为读写锁。其中有两个锁示例,用于分别对读操作和写操作进行同步控制。其中读锁是共享锁,可以同时被多个线程同时使用,写锁是独占锁,只能由一个线程持有。且持有写锁的时候可以获取读锁,但是持有读锁的时候无法持有写锁。 OK,现在还是老规矩,直接看看JavaDoc中给出的例子: 1234567891011121314151617181920212223242526272829303132class CachedData { Object data; volatile boolean cacheValid; fina...
扫盲——脏读、不可重复读、幻读
Created2025-12-24|数据库MySQL
MySQL的InnoDB存储引擎是支持多个事物并发执行的,这虽然提高了性能,但同时也带来了一些并发的问题。具体来说就是:脏读、不可重复读、幻读。本文来解释这几种现象是什么意思。 1. 脏读脏读就是在事务A中可以读到未提交的事务B中的数据。这些数据由于是未提交的,那么也可能会回滚。因此事务A可能会读到一些不存在的数据,这就是脏读。 事务A 事务B 开始事务 开始事务 更新数据x 查询到未提交的x数据 回滚数据 2. 不可重复读不可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据出现不一致的情况。举个例子: 事务A 事务B 开始事务 开始事务 第一次查询数据x 修改数据x 提交事务 第二次查询数据x 这种情况下,就会出现在同一个事务内,多次查询同一条数据结果不一致的情况。 3. 幻读幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。例如:select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,...
JVM中的引用
Created2025-12-24|后端开发Java
JVM中的引用有五种,分别是:强引用、软引用、弱引用、虚引用、终结器引用(引用强度逐渐减弱)。区分这几种引用的主要原因是可以根据不同强度的引用来使用不同的垃圾回收策略。 1. 强引用(Strongly Reference)JVM中的默认的引用关系就是强引用,即对象被局部变量、静态变量等GC Root关联的对象引用,只要这层关系存在,普通对象就不能被回收。 2. 软引用(Soft Reference)软引用的引用强度弱于强引用,当一个程序的内存不足时,就会将软引用中的数据进行回收。 软引用主要用于实现缓存。如: 12345678910111213141516public class MyCache { private static Map<Integer, SoftReference<Object>> cache = new ConcurrentHashMap<>(); public static Map<Integer, SoftReference<Object>> getIns...
End-to-End Encrypted Traffic Classification with One-Dimensional Convolution Neural Networks
Created2025-12-24|论文笔记深度学习
此篇方法是第一个将端到端的方法应用到加密流量分类领域,使用数据集ISCX-VPN-NonVPN-2016数据集进行研究。 1、概念介绍1.1 流量加密技术依据ISO/OSI层的不同,加密技术可以分为 应用层加密:应用程序在应用层实现自己的协议以实现数据的安全传输(如BitTorrent或Skype),在一些论文中也称为常规加密。 表示层加密 网络层加密:如IPSec加密协议 1.2 常见加密协议 IPSec协议:网络层加密协议。分为传输与隧道两种模式 传输模式:在IP报头和高层协议报头中插入一个IPSec报头,该模式不会改变IP报头中的目的地址,源IP地址也保持明文状态。 隧道模式:报文的源IP地址以及数据被封装成一个新的IP报文,并在内部和外部报头之间插入一个IPSec报头,原来的IP地址作为需要进行安全业务处理的一部分来提供安全保护,并且该模式下,可以对整个IP报文进行加密操作,常用来实现虚拟专用网VPN。 SSL/TLS协议:传输层协议。对于TLS,简单地说,是在TCP层之上再封装了SSL层。安全套接层协议 SSL 提供应用层和传输层之间的数...
Windows下scoop的安装与配置
Created2024-12-24|工具使用
1. scoop安装条件 Windows 7 以上 64位系统 powershell 3 以上 查看powershell版本: 1$PSVersionTable.PSVersion 2. 安装2.1 设置环境变量123$env:SCOOP='D:\Scoop'[Environment]::SetEnvironmentVariable('SCOOP',$env:SCOOP,'User') 此步骤非必需,若无此步骤,scoop文件夹以及未来安装的软件都会放在C盘。因此建议自定义安装路径。 2.2 安装命令123456789# 脚本执行策略更改Set-ExecutionPolicy RemoteSigned -scope CurrentUser# 输入Y或A,同意Y# 执行安装命令iex (new-object net.webclient).downloadstring('https://get.scoop.sh')## 或者iwr-useb get.scoop.sh|iex 由于墙的原因,...
Windows下终端的美化——oh-my-posh
Created2024-12-24|工具使用终端配置
1. 前言在Windows下,实现对powershell的美化,一般都使用oh-my-posh实现,类似于Linux和Mac下[[安装oh-my-zsh]]。 2. 安装根据个人习惯,本安装教程为使用scoop安装。 1scoop install oh-my-posh 或者 1scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json 若未安装scoop,请移步 [[Windows下scoop的安装与配置]]。 3. 激活 oh-my-posh可以通过 $PROFILE 来获取 powershell 配置文件所在的位置。因此可以编辑此配置文件以激活 oh-my-posh。 1notepad $PROFILE 注意:当以上语句报错时,说明不存在此配置文件,可以通过一下命令创建: 1New-Item -Path $PROFILE -Type File -Force 此时,powershell 也可能会阻止本地脚本的运行。要解决这个问...
关于Synchronized的一些讨论
Created2024-12-24|后端开发Java并发
本文主要目的是以synchronized为切入点来讨论相关的一些知识点。如下: synchronized介绍 synchronized锁升级 1. synchronized1.1 synchronized的作用synchronized通过使用互斥锁来锁定共享资源,使得同一时刻,只有一个线程可以访问和修改它,其他线程必须等待,当前线程修改完毕,释放互斥锁后,其他线程才能访问。其作用总结如下: 原子性:确保线程互斥的访问同步代码; 可见性:保证共享变量的修改能够及时可见,其实是通过Java内存模型中的 “对一个变量unlock操作之前,必须要同步到主内存中;如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在其他线程使用此变量前,需要重新从主内存中load” 来保证的; 有序性:有效解决重排序问题,即 “一个unlock操作先行发生于后面对同一个锁的lock操作”。 注意:这里的有序性是由于synchronized保证了原子性和可见性,在同一时刻只有一个线程可以执行同步代码块,而指令重排序在单线程的情况下,无论如何重排执行结果都不能被改变。因此,当以其他线程...
frp内网穿透配置
Created2024-12-24|运维部署网络配置
1. 介绍1.1 frp 是什么?frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 1.2 为什么使用 frp?通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括: 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。 代理组间的负载均衡。 端口复用,多个服务通过同一个服务端端口暴露。 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。 服务端和客户端 UI 页面。 2. 安装可以使用系统的包管理工具一键安装。如:scoop 、apt 、brew 等工具,比较简单。由于手动安装实用性更强,因此以下以Ubuntu距离介绍手动安装的过程。 2.1 下载访问 fr...
安装oh-my-zsh
Created2024-12-24|工具使用终端配置
1. 安装zsh本教程的为Ubuntu下操作。 1234567891011#安装zshsudo apt install zsh# 输出本机echo $SHELL # 修改本机默认shell (交互式修改)chsh # 修改默认Shell为zshchsh -s /bin/zsh 2 . 安装oh-my-zsh12345# giteesh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)" # githubsh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"**** 如果使用官方的github源,速度可能有点慢。因此可以使用改造过的gitee源,若失效,百度即可。 3. 相关文件 配置文件位置位于 ~/.zshrc oh-my-zsh 的数据文件位于 ~/.oh-my-zsh 文件夹下 当需要修改...
1234
avatar
LittleY
Articles
40
Tags
120
Categories
22
Follow Me
Announcement
欢迎光临
Recent Posts
公网家庭服务器安全部署方案2026-02-17
Tmux常用命令与快捷键2025-12-28
CyclicBarrier详解2025-12-24
CountDownLatch详解2025-12-24
Deep Packet: A Novel Approach For Encrypted Traffic Classification Using Deep Learning2025-12-24
Categories
  • JVM1
    • Java1
  • 后端开发21
    • JVM3
    • Java5
    • Java并发4
    • 并发编程7
    • 网络编程2
Tags
ByteBuf 命令行 可达性分析 网络编程 zsh Python脚本 oh-my-zsh 设计模式 模板方法 CNN 堆内存 CMS Shell脚本 线程封闭 轻量级锁 分代GC InnoDB ThreadLocalMap 系统配置 反向代理 偏向锁 frp 1D-CNN CountDownLatch synchronized Git Mac Channel PowerShell NIO EventLoop 包管理器 类加载 Halo 事务 并发控制 Linux 锁 Windows 虚拟机
Archives
  • February 2026 1
  • December 2025 24
  • December 2024 12
  • April 2024 1
  • January 2024 2
© 2025 - 2026 By LittleY
Search
Loading Database