自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解JVM底层原理——执行引擎

aaa

2021-10-14 00:26:22 280

原创 深入理解JVM底层原理——直接内存

直接内存(Direct Memory)例:IO和NIO举例package com.atguigu.java;import java.nio.ByteBuffer;import java.util.Scanner;/** * IO NIO (New IO / Non-Blocking IO) * byte[] / char[] Buffer * Stream Channel * * 查看直接内存

2021-09-22 22:48:59 198

原创 深入理解JVM底层原理——方法区

运行时数据区结构图:1、栈、堆、方法区的交互关系从线程共享与否的角度来看运行时数据区的结构:栈、堆、方法区之间的交互关系2、方法区的理解官方文档:例:启动以下代码,并使用JVisualVM查看方法区加载的类元信息package com.atguigu.java;/** * 测试设置方法区大小参数的默认值 * * jdk7及以前: * -XX:PermSize=100m -XX:MaxPermSize=100m * *

2021-09-22 22:18:47 271

原创 深入理解JVM底层原理——堆

aaa

2021-09-15 00:03:33 379

原创 深入理解JVM底层原理——运行时数据区

运行时数据区概述和线程1.运行时数据区概述! 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典额JVM内存布局。Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机的启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应...

2021-09-07 22:15:10 154

原创 深入理解JVM底层原理——类加载器子系统

类加载子系统1.内存结构概述内存结构简图详细流程如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢?---》类加载器和执行引擎2.类加载器与类的加载过程- 类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识 - ClassLoader值负责class文件的加载,至于它是否可以运行,择优Execution Engine决定 - 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可

2021-08-16 20:59:09 129

原创 深入理解JVM底层原理——概述

虚拟机概述所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为**系统虚拟机**和**程序虚拟就** Visual Box、VMware属于系统虚拟就,它们**完全是对物理计算机的仿真**,提供了一个可运行完整操作系统的软件平台。 程序虚拟机的典型代表就是Java虚拟机,它**专门为执行单个计算机程序而设计**,在Java虚拟机中执行的指令我们称为Java字节码指令。 无论是系统虚拟机还是程序虚拟机,在上面运行...

2021-08-16 20:46:47 254

原创 Java设计模式——建造者模式

首先引入一个需求:盖房项目需求:需要建房子:这一过程为打桩、砌墙、封顶房子有各种各样的,比如普通房、高楼、别墅,各种房子的过程虽然一样,但是要求不是相同的传统方式解决盖房需求类图结构如下:代码实现:...

2021-06-08 23:13:09 102

原创 Mysql数据库优化

一、索引1.1 索引概述Mysql官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护这满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构实现高级查找算法,这种数据结构就是索引,如下面的示意图:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的),为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包括索引键值和一个

2021-05-13 22:53:27 378

原创 Java设计模式——代理模式

增加返回值(增加参数和上边动态代理proxy的原理一样)上边这个是没有返回值的控制台

2021-04-27 22:48:46 60

转载 Java设计模式——原型模式

上边的friend设置成public是为了测试方便访问上边浅拷贝例子中,对象只拷贝了引用,所有被克隆的对象的引用指向了同一个对象,默认的clone方法会对基本数据类型和字符串属性进行拷贝...

2021-04-26 22:14:23 67

转载 Java设计模式——策略模式

鸭子问题:有各种鸭子(比如野鸭、北京鸭、水鸭等,鸭子有各种行为,比如叫、飞行等)显示鸭子的信息传统方案解决鸭子的问题代码实现:package com.study.strategy.original;public abstract class Duck { public Duck() { } public abstract void display(); // 显示鸭子信息 public void quack() { System.ou

2021-04-25 22:47:33 99

转载 Java设计模式——解释器模式

首先看一个需求:四则运算问题通过解释器模式来实现size运算,如计算a+b-c的值,具体要求:先输入表达式的形式,比如a+b+c+d+e,要求表达式的字母不能重复;再分别输入a、b、c、d、e的值;最后求出结果:如图说明:由于只是为了使用设计模式,只适配加法和减法传统方案解决四则运算问题分析编写一个方法,接受表达式的形式,然后根据用户输入的数值进行分析,得到结果问题分析:如果加入新的运算符,比如*/(等等,不利于扩展,另外让一个方法来解析会造成程序结构混乱,不够清晰);解决方案:可

2021-04-21 23:18:38 118 1

原创 Java设计模式——备忘录模式

在讲解备忘录模式之前先看一个需求——游戏角色状态恢复问题传统方案解决游戏角色恢复传统方式的问题分析一个对象,就对应一个保存对象状态的对象,这样当我们游戏的对象很多时,不利于管理,开销也很大;传统方式是简单地做备份,new出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节;解决方案:==》备忘录模式备忘录模式基本介绍:备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对

2021-04-20 22:31:23 63

原创 Java设计模式——装饰者模式

在讲装饰者模式之前,先看一个需求——星巴克咖啡订单项目咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用OO的来计算不同种类咖啡的费用:客户可以点单品咖啡、也可以单品咖啡+调料组合方案一:解决咖啡订单项目方案一问题分析:Drink是一个抽象类,表示饮料des就是对咖啡的描述,比如咖啡的名称

2021-04-01 21:09:11 81

原创 Java设计模式(工厂模式)

使用传统方式完成package com.study.factory.simplefactory.pizzastore.pizza;// 将Pizza做成抽象的public abstract class Pizza { protected String name; // 名字 // 准备原材料,不同的pizza是不同的 public abstract void prepare(); // 烘烤 public void bake() { S...

2021-03-31 21:46:38 85

原创 Java设计模式——桥接模式

新增直立样式手机

2021-03-30 23:14:28 60

原创 Java设计模式概述与单例模式

代码示例:上边这个方法线程不安全上边例子中getinstance方法的sychronized需要删掉

2021-03-30 22:27:29 83

原创 多线程从实战到原理

问题:多线程真的有用吗?3W1H– where - 经典场景,查询多个系统数据尤其移动互联网(手机端),面临不定时、不定量的挑战,用户无时无刻在登录,所以并发量一定大于PC端。微服务的基本核心一个架构图...

2021-02-19 23:31:10 108

原创 java线程基础三

等待线程执行终止的join方法在项目实践中经常会遇到一个场景,就是需要等待某几件事情完成后才能继续往下执行,比如多个线程加载资源,需要等待多个线程全部加载完毕再汇总处理。Thread类中有一个join方法就可以做这个事情,前面介绍的等待通知方法是Object类中的方法,而join方法则是Thread类直接提供的。join是无参且返回值为void的方法。下面看一个简单的例子:public static void main(String[] args) throws InterruptedExcepti.

2021-01-06 22:57:15 109

原创 java线程基础二

线程通知与等待Java中的Object类是所有类的父类。鉴于继承机制,Java吧所有类都需要的方法放到了Object类里面,其中包括本节的通知与等待系列函数。1.wait()函数当一个线程调用一个共享变量的wait方法时,该调用线程会被阻塞挂起,知道发生下面几件事情之一才返回:(1)其他线程调用了该共享对象的notify()或者notifyAll()方法;(2)其他线程调用了该线程的interrupt()方法,该线程跑出InterruptedException异常返回。另外需要注意的是,如果调用w.

2021-01-06 22:53:52 72

原创 java线程基础一

什么是线程在讨论什么是线程前有必要先说一下什么是进程,因为线程是进程中的一个实体,线程本身是不会独立存在的。进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。操作系统在分配资源是是把资源分配给进程的,但是CPU资源比较特殊,它是被分配到线程的,因为真正要占用CPU运行的是线程,因为真正要占用CPU运行的是线程,所以说线程是CPU分配的基本单元。在Java中,当我们启动main函数时其实就启..

2021-01-06 22:51:24 52

原创 SQL性能优化-覆盖索引

一个非常常见的问题:10w条数据。要从其中100条不连续的数据,给id,来查name和password,如何才能高性能的去使用?一般的回答:在id上建立聚簇索引,然后使用in id 来缩小表搜索范围,最后使用条件查询小于最大id,大于最小id这样可以让sql速度能够比较快的展示,但是使用in的效率比较低若最小id是1,最大id是100000呢?这里就引入了覆盖索引的概念。一、什么是覆盖索引当sql语句的所求查询字段(select列)和查询条件字段(where子句)全都包含在一个联合索引

2020-06-21 20:43:35 342

转载 Java 集合汇总

Java 集合数据一、集合大纲1.集合和数组的区别:2.Collection集合的方法:3.常用集合的分类:Collection 接口的接口 对象的集合(单列集合)├——-List 接口:元素按进入先后有序保存,可重复│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全│—————-└ Vector 接口实现类 数组, 同步, 线程安全│ —

2020-06-21 17:55:57 112

空空如也

空空如也

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

TA关注的人

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