Java
GhostRiderQin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA 秒转时分秒 hh:mm:ss 格式
/** * 功能描述 秒转时分秒 * @author qinda * @date 2020/10/29 * @param sumSecond 总秒数 * @return java.lang.String 返回 “ 01:01:01 ” 格式的时间 */ private static String sumSecondToTime(int sumSecond) { if(sumSecond <= 0){ ...原创 2020-10-29 17:25:39 · 3012 阅读 · 0 评论 -
JVM---执行引擎
执行引擎执行引擎是Java虚拟机核心的组成部分之一“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虛拟机的执行引擎则是由软件自行实现的,因.此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字原创 2020-07-04 19:07:17 · 406 阅读 · 0 评论 -
JVM---方法区
方法区栈、堆、方法区的交互关系方法区基本理解方法区(Method Area)与Java堆一 样, 是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区–样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误: java. lang . OutOfMemoryError:PermGen space 或者原创 2020-07-04 19:04:16 · 293 阅读 · 0 评论 -
JVM---堆(垃圾回收机制)
图解对象分配过程为新对象分配内存是一件非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC执行完内存回收后是否会在内存空间中停生内存碎片。1.new的对象先放伊甸园区。此区有大小限制。2.当伊甸园的空间填满时,程序又需要创建对象,JVM的垃圾 回收器将对伊甸园区进行垃圾回收(Minor GC), 将伊甸园区中的不再被其他对象所引用的对象进行销毁。再加载新的对象放到伊甸园区3.然后将伊甸园中的剩余对象移动到幸存原创 2020-06-22 15:45:16 · 1110 阅读 · 0 评论 -
JVM---堆(概述)
堆概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理.上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocation Buffer, TLAB) 。《Java虛拟机规范》中对Java堆的描述是:所原创 2020-06-22 15:42:51 · 361 阅读 · 0 评论 -
JVM---本地方法接口与本地方法栈
本地方法接口什么是本地方法?简单地讲,一个Native Method就 是一个Java调用非Java代码的接口。 一个Native Method是这样-一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告 知C+ +编译器去调用-一个C的函数。"A native method is a Java method whose implementation is provided by non-j原创 2020-06-18 10:40:48 · 358 阅读 · 0 评论 -
JVM---虚拟机栈
虚拟机栈虚拟机栈出现的背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的栈与堆栈是运行时的单位,而堆是存储的单位。即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。Java虚拟机栈是什么?Java虚拟机栈(Java Virtual Machine Stack) ,早期也叫Java原创 2020-06-18 10:39:48 · 240 阅读 · 0 评论 -
JVM---程序计数器(PC寄存器)
程序计数器简介JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有 把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。作用PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。原创 2020-06-18 10:37:31 · 491 阅读 · 0 评论 -
JVM---运行时数据区(线程)
2、运行时数据区前言内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java|在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。方法区与堆是线程共享的,程序计数器、本地方法栈、虚拟机栈是线程私有的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZUpgO9n6-1592447原创 2020-06-18 10:35:52 · 219 阅读 · 0 评论 -
JVM---内存管理(类加载子系统)
JVM内存管理:1、类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只 负责class文件的加载, 至于它是否可以运行,则由ExecutionEngine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)加载过程class file 存在于本地硬盘上原创 2020-06-18 10:30:12 · 231 阅读 · 0 评论 -
JVM---生命周期与发展历程
JVMJVM生命周期:虚拟机的启动:是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class) 来完成的,这个类是由虚拟机的具体实现指定的。虚拟机的执行:一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虛拟机的进程。JVM发展历程Sun Classic VM早在1996年Javal.0版本的时候,Sun公原创 2020-06-18 10:25:37 · 340 阅读 · 0 评论 -
设计模式之责任链模式思考题(servlet中filter过滤器是如何实现的?)
对责任链不熟悉的朋友们可以参考我上一篇文章:设计模式之责任链模式问题:servlet中的过滤器是这样的:如何实现过滤器,使其处理request时是f1,f2,f3,f4的顺序,处理response时的顺序是f4,f3,f2,f1?解答:建立新的Resquest,Response类用来模拟请求与响应class Request{ String str;}class Response{ String str;}修改接口,改为三个参数,第三个为当前的FilterChain原创 2020-06-03 12:06:35 · 675 阅读 · 0 评论 -
设计模式之责任链模式(Chain of Responsibility)
责任链模式用过tomcat或者springMVC的人应该都对过滤器不陌生吧,过滤器的实现就是责任链模式。且看如何一步一步推到。话不多说,直接上代码。//这段代码是实现将骂人词汇过滤:public class Main { public static void main(String[] args) { Msg msg = new Msg(); msg.setMsg("djsiaohfioja shit dsjakljf wtf is"); St原创 2020-06-02 17:40:03 · 334 阅读 · 0 评论 -
设计模式之代理模式(通过字节码探究执行过程)
代理模式代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。1、静态代理我们有一个接口Movable,实现该接口的类都是可移动的:interface Movable{ void move();}public class Car implements Movable { @Override public void move() { System.out.println("Car原创 2020-05-26 17:15:20 · 311 阅读 · 0 评论 -
设计模式之工厂模式(简单工厂,工厂方法,抽象方法)
工厂模式1、简单工厂模式: 首先我们有一个Car类,这个Car可以go:public class Car { public void go() { System.out.println("car go ..."); }}还有一个调用者,这样就可以造出车来跑:public class Main { public static void main(String[] args) { Car car = new Car(); c原创 2020-05-22 13:41:19 · 350 阅读 · 0 评论 -
设计模式之策略模式
策略模式从comparator与comparable谈起先从最基本的讲起,定义一个Sorter类,sort方法是选择排序的实现,实现对int数组a排序:public class Sorter { public void sort(int[] a) { for (int i=0;i<a.length;i++) { int minPos = i; for (int j = i; j < a.leng原创 2020-05-21 12:58:29 · 199 阅读 · 0 评论 -
设计模式之单例模式
单例模式单例模式最主要的是将构造器私有化。饿汉式单例:简单实用,缺点就是有可能浪费空间public class SingletonPatternDemo02 { private static SingletonPatternDemo02 INSTANCE = new SingletonPatternDemo02(); private SingletonPatternDemo02() { } public static SingletonPatternDemo02 get原创 2020-05-21 12:55:29 · 192 阅读 · 0 评论 -
ThreadPoolExecutor执行原理
线程池基本概念: 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。不要使用Executor创建线程池,而是通过ThreadPoolExecutor的方式创建,这样的处理方式能让编写代码的人更加明确线程池的运行规则,规避资源耗尽的风险。说明:Executors 返回的线程池对象的弊端如下:1)FixedThreadPool和SingleThreadPool:允许请求的队列长度为Interger.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。2)CachedTh原创 2020-05-11 21:50:37 · 1344 阅读 · 0 评论 -
通过几个例子,进一步理解Java的Synchronized锁中对象锁与类锁
资源类:电话,有发短信与打电话的功能。class Phone{ public void send() throws InterruptedException { TimeUnit.SECONDS.sleep(4); System.out.println("发短信"); } public void call() { System.out.println("打电话"); }}1、电话类中的方法都用s原创 2020-05-11 12:06:45 · 285 阅读 · 0 评论 -
Synchronized 和 Lock 区别
Synchronized 和 Lock 区别1、Synchronized 内置的JAVA关键字,Lock是一个JAVA类2、Synchronized 无法判断获取锁的状态,Lock可以判断是否获得锁3、Synchronized 会自动释放锁,Lock必须要手动释放锁,不释放会引发死锁问题。4、Synchronized 两个线程操作时,若向线程1获得锁但是阻塞了,线程2会一直等,Lock不会。5、Synchronized 可重入锁,不可以中断的,非公平;Lock,可重入锁,可以判断锁、非公平(可.原创 2020-05-08 20:58:20 · 199 阅读 · 0 评论
分享