自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

959

gitee.com/Z_959

  • 博客(36)
  • 收藏
  • 关注

原创 Java晋升路线图

初级:系统,辅助中级:模块的开发高级:系统的优化和维护,培养初级中级技术管理路线,架构师路线,产品经理路线

2021-03-04 14:47:32 2674 3

原创 jvm之操作数栈

Runtime data Area什么是操作数栈?与局部变量表一样,均以字长为单位的数组。不过局部变量表用的是索引,操作数栈是弹栈/压栈来访问。操作数栈可理解为java虚拟机栈中的一个用于计算的临时数据存储区。存储的数据与局部变量表一致含int、long、float、double、reference、returnType,操作数栈中byte、short、char压栈前(bipush)会被转为int。数据运算的地方,大多数指令都在操作数栈弹栈运算,然后结果压栈。java虚拟机栈是方法调用和执

2021-03-28 22:06:47 597

原创 log4j.propertie_入门

1.导入Maven <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dep

2021-03-18 22:21:23 174

原创 JVM_08 执行引擎_1

执行引擎:翻译:将字节码翻译为os可以识别的机器指令这里有前端编译和后端编译前端编译为.java -> .class后端编译为执行引擎.class编译为机器指令

2021-03-16 22:03:26 194

原创 JVM_13 字节码跨平台性与执行细节举例

想要让一个Java程序正确地运行在JVM中,Java源码就必须要被编译为符合JVM规范的字节码。前端编译器的主要任务就是负责将符合Java语法规范的Java代码转换为符合JVM规范的字节码文件。javac是一种能够将Java源码编译为字节码的前端编译器。Javac编译器在将Java源码编译为一个有效的字节码文件过程中经历了4个步骤,分别是词法解析、语法解析、语义解析以及生成字节码。一个语言是否高效(程序性能是否高效),跟语言本身并没有太大关系,主要有关系的是编译器,java语...

2021-03-16 15:55:30 206

原创 Mybatis配置文件详解

文章目录1.从 XML 中构建 SqlSessionFactory2.mybatis-config.xml3.根据数据库字段配置POJO4.配置Mapper(Dao)5.测试类6.Maven要防止资源流出7.结果8.生命周期说明Mybatis文档网站:https://mybatis.org/mybatis-3/zh/configuration.html1.从 XML 中构建 SqlSessionFactory每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的

2021-03-16 11:23:22 242

原创 JVM_07 运行时数据区4-对象的实例化内存布局与访问定位

文章目录1.对象的实例化2. 对象的内存布局3.对象的访问定位1.对象的实例化1.new最常见的方式变形1 : Xxx的静态方法变形2 : XxBuilder/XxoxFactory的静态方法Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求使用clone() :不调用任何构造器,当前类需要实现Cloneable接

2021-03-15 21:47:08 149 1

原创 JVM_05 运行时数据区2-堆_2

文章目录1.图解对象分配过程2.Minor GC、Major GC、Full GC3.TLAB(线程私有缓存区域)1.图解对象分配过程特殊情况public class HeapInstanceTest { byte[] buffer = new byte[new Random().nextInt(1024 * 200)]; public static void main(String[] args) { ArrayList<HeapInstanceTest&

2021-03-14 21:26:37 163

原创 JVM_05 运行时数据区2-堆_1

文章目录1.堆的细分内存结构2.设置堆内存大小与OOM3.年轻代与老年代1.堆的细分内存结构JDK 7以前: 新生区+养老区+永久区Young Generation Space:又被分为Eden区和Survior区 Young/NewTenure generation Space: Old/TenurePermanent Space: PermJDK 8以后: 新生区+养老区+元空间Young Generation Spac

2021-03-14 21:17:44 138 1

原创 AQS_1

markword1.锁状态2.GC状态3.hashcodemarkword为8字节,最后两个字节记录锁状态作用为如果加锁的话改变的是markword的内容。锁升级:无锁态:new -> 偏向锁 ->轻量级锁 -> 重量级锁 ->GC标记信息乐观锁CAS悲观锁Synchronized,vector,hashtable自旋锁CAS可重入锁Synchronized,Reentrantiock,Lock读写锁ReentrantReadWrtieLock,CopyOnW

2021-03-14 16:54:04 163

原创 JVM永久代和元空间的区别

绝大部分 Java 程序员应该都见过 "java.lang.OutOfMemoryError: PermGen space "这个异常。这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是 JVM 的规范,而后者则是 JVM 规范的一种实现,并且只有 HotSpot 才有 “PermGen space”,而对于其他类型的虚拟机,如 JRockit(Oracle)、J9(IBM) 并没有“PermGen space”。由于方法区主要存储.

2021-03-13 17:58:08 357 1

原创 JVM_03 运行时数据区1_本地方法栈_Native Method stack

3 本地方法栈Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用本地方法栈,也是线程私有的。允许被实现成固定或者是可动态拓展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverFlowError异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么java虚拟机将会抛出一个OutOfMemoryError

2021-03-09 15:51:48 139

原创 JVM_04 本地方法接口

本地方法简单来讲,一个Native Method就是一个java滴啊用非java代码的接口,一个Native Method 是这样一个java方法:该方法的实现由非Java语言实现,比如C。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非java语言在外面实现的。本地接口的作用是融合不同的

2021-03-09 15:47:34 136

原创 JVM_03 运行时数据区1_Stack_方法返回地址_Return Address

方法返回地址(Return Address)存放调用该方法的PC寄存器的值。一个方法的结束,有两种方式:正常执行完成出现未处理的异常,非正常退出无论通过哪种方式退出,在方法退出后都返回到该方法被调用的位置。方法正常退出时,调用者的pc计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址。而通过异常退出时,返回地址是要通过异常表来确定,栈帧中一般不会保存这部分信息。本质上,方法的退出就是当前栈帧出栈的过程。此时,需要恢复上层方法的局部变量表、操作数栈、将返回值也如调

2021-03-09 15:39:57 292

原创 ELK介绍

文章目录1.ELK简介2.ELK架构图3.Filebeat工作原理4.Logstash工作原理1.ELK简介ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:

2021-03-09 15:04:40 44939

原创 JVM_03 运行时数据区1_Stack_动态链接机制_Dynamic Linking

动态链接(Dynamic Linking)每一个栈帧内部都包含一个指向运行时常量池或该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接。比如invokedynamic指令在Java源文件被编译成字节码文件中时,所有的变量和方法引用都作为符号引用(symbolic Refenrence)保存在class文件的常量池里。比如:描述一个方法调用了另外的其他方法时,就是通过常量池中指向方法的符号引用来表示的,那么动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用。

2021-03-09 14:31:01 220

原创 JVM_03 运行时数据区1_Stack_操作数栈_Operand Stack

操作数栈(Operand Stack)栈 :可以使用数组或者链表来实现每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出的操作数栈,也可以成为表达式栈操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取数据,即入栈(push)或出栈(pop)某些字节码指令将值压入操作数栈,其余的字节码指令将操作数取出栈,使用他们后再把结果压入栈。(如字节码指令bipush操作)比如:执行复制、交换、求和等操作2.4.1 概述操作数栈,主要用于保存计算过程的中间结果,同时

2021-03-09 14:03:02 160

原创 JVM_03 运行时数据区1_Stack_局部变量表_Local Variables

2.虚拟机栈2.1概述2.1.1 背景由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。2.1.2 内存中的堆与栈栈是运行时的单位,而堆是存储的单位即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。一般来讲,对象主要都是放在堆空间的,是运行时数据区比较大的一块栈空间存放 基本数据类型的局

2021-03-09 12:44:52 228

原创 JVM_03 运行时数据区1_pc

01 内存内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)(图源阿里)JDK8的元数据区+JIT编译产物 就是JDK8以前的方法区02 分区介绍java虚拟机定了了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则

2021-03-08 21:27:17 146

原创 Redis缓存穿透和缓存雪崩以及解决方法

Redis缓存穿透以及解决方法一、缓存穿透1.当用户查询的key在redis中不存在,对应的id在数据库也不存在,此时被非法用户进行攻击,大量的请求会直接打在db上,造成宕机,从而影响整个系统,这种现象称之为缓存穿透。2.解决方案一:把空的数据也缓存起来,比如空字符串,空对象,空数组或list,代码如下if (list != null && list.size() > 0) { redisOperator.set("subCat:" + root

2021-03-07 21:30:48 228

原创 Shell_逻辑语句

1.条件语句2.流程控制文章目录条件判断1.基本语法2. 常用判断条件3.案例实操流程控制(重点)1 if 判断1.基本语法2.案例实操2 case 语句1.基本语法2.案例实操3 for 循环1.基本语法12.案例实操3.基本语法24.案例实操4 while 循环1.基本语法2.案例实操条件判断1.基本语法[ condition ](注意condition前后要有空格)注意:条件非空即为true,[ atguigu ]返回true,[] 返回false。2. 常用判断条件(1)两个整数之间

2021-03-07 21:22:33 272

原创 Shell_read_function

1.read2.function文章目录read读取控制台输入1.基本语法2.案例实操系统函数1.basename基本语法2.案例实操3. dirname基本语法4.案例实操自定义函数1.基本语法2.经验技巧3.案例实操read读取控制台输入1.基本语法read(选项)(参数)选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。参数变量:指定读取值的变量名2.案例实操(1)提示7秒内,读取控制台输入的名称[atguigu@hadoop101 datas]$ to

2021-03-07 20:06:14 309

原创 Shell工具

1.cut2.sed3.awk4.sord文章目录1.cut1.基本用法2.选项参数说明3.案例实操2.sed1.基本用法2.选项参数说明3.命令功能描述4.案例实操3.awk1.基本用法2.选项参数说明3.案例实操4 sort1.基本语法2. 案例实操1.cutcut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。1.基本用法cut [选项参数] filename说明:默认分隔符是制表符2.选项参数说

2021-03-07 18:36:02 179

原创 Redis GEO

文章目录Redis GEOgeoaddgeoposgeodistgeoradius、georadiusbymembergeohashRedis GEORedis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。Redis GEO 操作方法有:geoadd:添加地理位置的坐标。geopos:获取地理位置的坐标。geodist:计算两个位置之间的距离。georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。georadiusb

2021-03-07 16:34:56 180

原创 Redis_服务器

Redis 服务器Redis 服务器命令主要是用于管理 redis 服务。实例以下实例演示了如何获取 redis 服务器的统计信息:redis 127.0.0.1:6379> INFO# Serverredis_version:2.8.13redis_git_sha1:00000000redis_git_dirty:0redis_build_id:c2238b38b1edb0e2redis_mode:standaloneos:Linux 3.5.0-48-generic x86

2021-03-07 16:30:14 138

原创 贪吃蛇_java应用Gui

1.GUI介绍早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。后来,Microsoft公司推出了风靡

2021-03-05 20:29:35 160

原创 深入理解双亲委派机制

文章目录1.什么是双亲委派机制2.类加载器3.类加载器的加载路径4.源码了解1.流程图2.过程5.双亲委派机制的作用1、保证安全性2、保证唯一性1.什么是双亲委派机制当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。2.类加载器BootstrapClassLoader(启动类加载器)c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由

2021-03-04 17:23:42 420 2

原创 Stream操作_中间操作

Stream流失操作#Lambda表达式filterskiplimitditinctmapsortfilter @Test public void test3(){ ArrayList<Integer> list = new ArrayList<>(); list.add(2); list.add(3); list.add(4); list.stream().filter

2021-03-03 21:58:21 250 1

原创 Stream流式操作_造流操作

Java8 中添加了一个新的接口类 Stream,相当于高级版的 Iterator,通过 Lambda 表达式对集合进行各种非常便利、高效的聚合操作(Aggregate Operation),或者大批量数据操作 (Bulk Data Operation)。Stream不仅可以通过串行的方式实现数据操作,还可以通过并行的方式处理大批量数据,提高数据的处理效率。如何建流1.集合转流 @Test //集合转流 public void test2(){ ArrayList

2021-03-03 17:39:05 365 1

原创 NIO(New IO)_Buffer_Channel

Java NIO(New IO或 Non Blocking IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。java IO 与 java NIO 的区别一、通道(Channel)与缓冲区(Buffer)若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。简而言之,Channel 负责传输, Buf

2021-03-02 20:03:18 241

原创 BlockingQueue_阻塞队列_juc

BlockingQueueLinkedBlockingQueue,ArrayBlockingQueueQueue:Deque,AbstractQueue,BlockingQueue加入和移除1抛出异常的情况 @Test public void test1(){ ArrayBlockingQueue arr = new ArrayBlockingQueue<>(1); System.out.println(arr.add("A"));/

2021-03-02 19:52:20 313

原创 辅助类_juc

1.CountDownLatch计数器减为0的时候开始后面的代码CountDownLatch.countDown()CountDownLatch.await()package Demo;import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException {

2021-03-02 17:33:36 397

原创 Callable_实现多线程

package CallableDemo;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class Demo01 { public static void main(String[] args) throws ExecutionException, InterruptedExc

2021-03-02 17:05:36 305

原创 8锁问题

8锁问题:关于锁的8个问题public class demo01 { public static void main(String[] args) { Phone1 phone = new Phone1(); new Thread(()->{ phone.send(); },"A").start(); // 延时2秒 try { TimeUnit.SECONDS

2021-03-02 15:13:49 164

原创 juc_lock

一个不是juc一个是juc情况class Data2{ private int number = 0; Lock lock = new ReentrantLock(); Condition condition = lock.newCondition(); public void increment() throws Exception{ lock.lock(); try { while (number != 0){.

2021-03-02 12:01:02 292

原创 Juc_无juc情况

Synchronized和Lock的区别import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class Ticket{ private int number = 30; private Lock lock = new ReentrantLock(); public void sale(){ lock.lock(); tr

2021-03-02 11:41:13 498

react hooks.zip

react hooks.zip

2023-09-17

空空如也

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

TA关注的人

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