- 博客(55)
- 收藏
- 关注
原创 Java并发编程3:线程Thread常用的API
文章目录一、Java线程相关的API1、start():启动线程2、run():3、join() 等待线程运行结束4、getId(): 获取线程长整型的id,id唯一5、getName():获得线程名, setName(): 设置线程名6、getPriority():获取线程的优先级, setPriority(int):修改线程优先级7、getState():获取线程状态8、isInterrupted()、interrupt()、Thread.interrupted()9、isAlive():线程是否存活(
2021-08-22 09:02:09
323
原创 Java并发编程2:线程的创建和启动
基本概念的了解:程序:完成特定任务,用编程语言聪明些的一组指定的集合,即一段静态的代码。进程(process):是程序的一次执行过程,或是正在运行的一个程序。是一个动态过程:有它自身的产生、存在、消亡 的过程(生命周期)。进程作为资源分配的单位,系统在运行时会为每个而进程分配不同的内存区域。线程(thread):进程可以进一步细化为线程,即一个程序内部的一条或多条执行路径在java程序员中,是支持多线程的,一个进程可同一时间并行执行多个线程线程作为调度和执行的单位,每个线程久拥有独立的运行
2021-08-21 23:12:30
204
原创 Java并发编程1:了解进程和线程的概念及其关系
了解进程和线程的概念及其关系线程和进程1、进程2、线程进程和线程的关系线程和进程1、进程程序由指令和数据组成,这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。当指令运行过程中还需要用到磁盘、网络等设备,进程就是用来加载指令、管理内存、管理IO的当一个程序运行看,从磁盘加载这个程序的代码至内存,就开启了一个进程。进程可以看作是程序的一个实例,大部分的程序可一个同时运行多个实例进程,也有的程序只启动一个实例进程。2、线程一个进程可以包含多个线程一个线程就是一个指
2021-08-12 00:03:16
179
原创 JVM10:元空间(Meta Space,方法区)
文章目录元空间(Meta Space)1、元空间的基本介绍2、Meta Space的演进永久代为什么要被元空间替换3、设置方法区大小和OOMJDK 8及以后4、元空间( Meta Space)存储什么?类型信息域(Field)信息方法(Method)信息静态变量(non-fianal的类变量)运行时常量池(Runtime Constant Pool)5、运行时常量池VS常量池元空间(Meta Space)1、元空间的基本介绍在Java 8 中称为元空间(Meta Space),在Java 7 及以前称
2021-04-22 07:58:58
6528
原创 JVM9:堆空间(Heapspace)
文章目录堆(Heap)1、堆的相关概念2、堆空间大小的设置3、堆空间的划分堆(Heap)1、堆的相关概念一个JVM实例只存在一个堆内存,是所有线程共享的,堆也是Java内存管理的主要区域。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配 。但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么“绝对”了。Ja
2021-04-18 21:43:49
883
原创 JVM8:Java虚拟机栈——方法返回地址(Return Address)
文章目录方法返回地址(Return Address)1、方法结束的两种方式1)正常执行完成2)出现未处理的异常,非正常退出方法返回地址(Return Address)存放调用该方法的PC计数器的值。1、方法结束的两种方式一个方法开始执行后,结束有两种方式:正常执行完成异常退出1)正常执行完成方法正常退出时,调用者的PC计数器的值作为返回地址,即调用该方法的指令的下一条指令。执行引擎遇到任何一个返回的字节码指令return,都会有返回值传递给上层的调用者,简称正常完成出口(Norma
2021-04-18 16:39:29
1150
原创 JVM7:Java虚拟机栈——动态链接(Dynamic Linking)
动态链接(Dynamic Linking)每一个栈帧内部都包含一个指向运行时数据常量中的该栈帧所属方法的引用,包含这个引用的目的就是为了支持当前方法的方法的代码能够实现动态链接。比如invokedynamic指令在Java源文件中被编译到字节码的中时,所有的变量的和方法的引用都作为符号引用(Symbolic Reference),保存在class文件的常量池中。字节码中的方法调用指令就以常量池中指向方法的符号引用作为参数。 - 比如描述一个方法调用 另一个方法的时,就是通过常量池中指向方法的符号引用
2021-04-18 16:11:26
1135
1
原创 JVM6:Java虚拟机栈——操作栈(Operand Stack)
操作栈(Operand Stack)每一个独立的栈帧包含了局部变量表以外,操作栈,也可以称为表达式栈(Expression Stack)操作数栈,在方法执行过程中,根据字节码指令,往栈中存储数据或提取数据,也就是入栈(push)/出栈(pop)某些字节码指令将值压入操作数栈,其余的字节码指令将操作数取出栈,使用他们后再将他们压入栈中,主要用于保存计算过程中的中间结果,同时作为计算过程中变量临时的存储空间比如:执行复制、交换、求和等操作。是JVM执行引擎的一个工作区,当一个方法刚开始执行的时
2021-04-18 00:35:47
254
原创 JVM5:Java虚拟机栈——局部变量表(Local Variables)
文章目录Java虚拟机栈——局部变量表(Local Variables)1、局部变量表的相关概念1)线程安全问题2)线程安全问题3)局部变量表的容量大小及存储单位2、局部变量表的存储单位是slot(变量槽)1)关于Slot 的理解Slot中存放数据如何访问Slot中的数据2)slot的重复利用3、变量的分类按类型按声明位置Java虚拟机栈——局部变量表(Local Variables)1、局部变量表的相关概念局部变量表(也被称为局部变量数组或者本地变量表):定义一个数组,主要用于存储方法参数和定义在方
2021-04-18 00:05:02
480
原创 JVM2:类加载的机制——双亲委派机制(双亲委派模型)
一、双亲委派机制Java虚拟机堆class文件采用的是按需加载的方式,也就是说只有在使用的时候才会将对应的class文件加载到内存中,生成class对象。在加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把加载的请求交由父类处理,他是一种任务委派模式。原理1)当一个类加载器收到了加载请求时,先是把这个请求委托给父加载器器去执行,而不是自己去先去加载。2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将达到顶层的启动类加载器3)从启动类加载器尝试去
2021-04-14 23:34:39
194
原创 JVM1:Java类的加载过程
Java类的加载过程(附加载流程图)一、加载(Loading)二、连接(Linking)三.初始化(Initalization)
2021-03-23 23:58:50
180
原创 Java设计模式之 装饰者模式
**装饰者模式:** 在`已经有的功能上`,`将新的功能附加到已有的功能上`,`在对象功能拓展方面`,`比继承更有弹性`,该模式体现了`开闭原则(OCP)`
2021-03-13 01:53:01
216
原创 Java设计模式之原型设计模式
文章目录原型设计模式一、举个小栗子二、原型模式的相关概念1、原型模式(Prototype)2、实现思路一:利用Object的clone()方法(浅拷贝的方式)3、深拷贝的实现方式两种实现方式三、通过对象序列化和反序列化来实现深拷贝(推荐)1、一言不合就是上代码2、行不行,试试就只知道3、深度拷贝的结果原型设计模式一、举个小栗子举个栗子:现在有一个对象,如果我们需要对创建多个与该对象属性一致的对象,不能是使用 = 直接进行赋值的。在创建新的对象的时候,总是要重新获取原始对象的属性,设置到新建的对象中
2021-03-11 23:54:42
225
2
原创 Java设计模式之单例设计模式
文章目录Java设计模式之单例设计模式一、单例设计模式的介绍1、介绍2、单例模式的两种形式:饿汉式和懒汉式。二、单例模式之饿汉式的实现1、静态常量实现2、静态代码块实现3、枚举类实现三、单例模式之懒汉式的实现1、同步方法实现2、同步代码块(双检查法)实现3、静态内部类实现Java设计模式之单例设计模式一、单例设计模式的介绍1、介绍单例设计模式就是采取一定的方法措施保证在整个软件系统中,对该类的实例对象有且仅有一个。这里采取的措施是:为了限制该类的对象被随意地创建,需要保证该类构造方法是私有的,
2021-03-10 23:05:21
100
原创 Java基础:继承、组合以及两者的区别
文章目录Java基础:继承、组合以及两者的区别一、面向对象三大特征1、三大基本特征:封装、继承、多态1)封装2)继承3)多态二、继承的特性三、继承和组合的区别1、区别2、关系图3、实际使用中选用继承和组合的两个原则Java基础:继承、组合以及两者的区别一、面向对象三大特征1、三大基本特征:封装、继承、多态1)封装封装是指将客观事物抽象成类,每个类对自身的数据和方法实行保护。类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。2)继承继承是一种联结类的层次模型,并且允许和鼓
2021-03-09 23:29:44
520
原创 Java基础:浅复制、深复制、克隆接口Clone以及clone()方法
1.了解浅复制和深复制2.实现Cloneable接口,覆盖clone()方法,实现对一个对象的克隆。
2021-03-09 22:47:33
464
原创 消息中间件ActiveMQ 5:持久化之JDBC消息存储
ActiveMQ使用JDBC进行消息的持久化的原理、配置的步骤和JDBC消息日志的配置。
2021-03-09 00:53:24
285
3
原创 消息中间件ActiveMQ 5:可持久化方式AMQ和KahaDB
主要内容是ActiveMQ的持久化方式 AMQ message Store 和 KahaDB消息存储的讲解。
2021-03-08 22:46:26
398
原创 消息中间件ActiveMQ 4: 传输协议
文章目录ActiveMQ的传输协议1、 Transmiss Control Protocol(TCP)默认2、New I/O API Protocol (更好的性能)3、由于主要是Java开发,这里就不对其他协议进行细讲。ActiveMQ的传输协议ActiveMQ支持的client-broker通讯协议有:其中配置Transport Connector的文件在${ActiveMQ_HOME}/conf/activemq.xml中的标签之内。官方文档地址: http://activemq.apach
2021-03-08 01:12:06
167
原创 消息中间件ActiveMQ 3:JMS的可靠性
文章目录ActiveMQ(JMS)的可靠性1、transaction(事务)2、Acknowledge(签收)3、Persistent持久化(在生产者设置)1)Queue(队列的持久性)2)Topic(主题的持久性)4、签收和事务的关系ActiveMQ(JMS)的可靠性1、transaction(事务)事务偏生产者ActiveMQ中有关事务的方法 /** * *@param: transacted 是否开启事务 *@param: Acknowledge 签收 * */public Se
2021-03-07 23:27:39
105
原创 MyBatis的Mapper映射文件
MyBatis映射文件Mybatis文件的整体结构:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="Mapper接口对应的全路径名称"> <!--可包含多个select、ins
2021-03-07 17:33:54
601
原创 消息中间件ActiveMQ 1 :入门篇
ActiveMQ的介绍ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,现在先来入门了解ActiveMQ的java编码。
2020-12-29 22:50:27
138
1
原创 Spring MVC:拦截器(Interceptor)的定义和配置
SpringMVC中组件: 拦截器(Interceptor)拦截器(Interceptor)对我们来说是非常实用的,也是经常使用的,可以在所有的HandlerMapping的前后进行拦截,当我们需要将特定功能应用于符合某种规则的请求的时候,这个时候就可以使用拦截器。
2020-12-20 23:29:42
5665
2
原创 Spring MVC:使用Java配置类的方式来替代web.xml文件
了解通过Java配置类的方式来配置Spring MVC的方式是非常重要,因为这是Spring官方的推荐,同时了解其原理,更能了解Springboot是如何帮助我们自动配置的。
2020-12-20 22:17:44
1574
3
原创 操作系统:操作系统的概念
文章目录操作系统的概念操作系统的特征:并发(Concurrence)共享(Sharing)虚拟异步(Asynchronism)操作系统的目标和功能操作系统的概念计算机系统自上而下可区分为:(从操作系统的角度)硬件操作系统应用程序用户计算机系统的概述:在计算机中的CPU、内存、输入/输出设备等硬件,提供了基本的计算机资源;应用程序等规定了按何种方式来使用这些资源来为用户服务;操作系统控制和协调各用户程序对硬件的分配和调用.所以操作系统是:指控制和管理整个计算机系统的硬件和软件资源,合理
2020-12-19 22:27:57
634
原创 Spring框架的关键组件之Aop配置
至于最常见的 execution表达式;由于网上一搜基本都是用的这个,这里就不在赘述了;这里将我知道的分享给大家;//@Around("@annotation(自定义注解)")//自定义注解标注在方法上的方法执行aop方法如:@Around("@annotation(org.springframework.transaction.annotation.Transactional)")//@Around("@within(自定义注解)")//自定义注解标注在的类上;该类的所有方法(不包含子类方法)执行a
2020-12-14 22:37:48
177
原创 Java设计模式之代理模式(静态代理、JDK代理和Cglib代理)
静态代理JDK动态代理原理:接口public abstractpublic interface work{ void work(); boolean isComplete(String name);}实现类:public class GeneralWorker implements work{ @Override public void work(){ System.out.println("我正在做一般的工作"); } @Override public boole
2020-12-14 22:12:03
117
原创 Java虚拟机中的内存分配
Java技术体系中所提倡的自动内存管理最终可以归结为自动化的解决下面两个问题:给对象分配内存空间回收分配给对象的内存一起来看看给对象在内存分配空间的过程:对象优先在堆内存的新生代中Eden分配:大多数情况下,对象在新生代Eden区中分配,当Eden没有足够的空间进行分配的时候,就会发起一次Minor GC。虚拟机中提供了 -XX:+PrintGCDetails这个收集器日志参数,运行的时候配置该参数,虚拟机就会在发生垃圾回收行为的时候打印内存回收日志,同时在进程退出结束的时候输出当前的内存各
2020-12-14 00:10:16
341
原创 Java语法基础:泛型(Generic)
Java的泛型,可以在我们编码时候给一定的编码规范,也避免了在集合类使用的过程中进行强制转换,简化了代码,只有编译通过,就不容易引起ClassCastException异常
2020-12-05 21:20:22
522
原创 Java语法基础:反射reflect
Java中的反射是非常重要的一部分,很多框架主要也是应用了反射和设计模式,所以深入了解Java的反射实在Java的基础学习中非常重要的一部分。
2020-12-05 15:26:56
172
原创 Java注解:三个基本的注解(Annotation)
从三个基本的注解@Override、@Deprecated和@SuppressWarnings 开始了解Java的注解
2020-12-05 13:23:44
705
原创 Java数据结构之线索化二叉树
这里写自定义目录标题在之前的学到对二叉树的遍历,无论是前序遍历、中序遍历和后序遍历,都是将二叉树中的节点排列成一个线性的序列进行输出的,简单点说对一个非线性结构进行线性化的操作。对于线性数据结构中每一个元素(头尾节点除外)都存在直接的前驱节点和后继节点,如果我们想在树形结构中保留前驱节点和后继节点的话,最简单的方法就是在节点类中再多添加两个指针域来指针前驱节点和后继节点,但是这样的结果是导致结构的存储密度大大降低,相应的操作也会变得更加复杂。我们再来看一下二叉树的结构图,发现在对叶子节点来说,存在左
2020-08-16 21:00:28
253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人