自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (3)
  • 收藏
  • 关注

原创 JVM创建对象

创建普通对象: 1,当虚拟机遇到一条字节码指令时,首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载,解析和初始化过,如果没有,那必须先执行响应的类加载过程。 在类加载通过后,接下来虚拟机将为新生对象分配内存,对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务实际上便等同把一块确定大小的内存从java堆中划分出来,假设java堆内存是绝对规整的,所有被使用的内存被放在一边,空闲的内存被放在另一边, 中间放着一个指针作为分界点指示器,那所分

2021-06-15 11:21:24 1133 1

原创 直接内存区域

直接内存 1,直接内存并不是虚拟机运行时数据区域的一部分,也不时虚拟机规范定义的内存,但是它被频繁的使用。 2,JDK1.4中新加入了NIO类,引入了一种基于通道与缓冲的IO方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在JAVA堆里面的DirectByteBuffer对象作为这块内存的引用进行操作,这能在一些场景中显著提高性能,因为避免了在java堆与native堆中来回复制数据。 3,本机直接内存的分配不会受到java堆大小的限制,但是,既然时内存,则肯定还是会受到本机总内存大小以

2021-05-27 15:51:33 118

原创 JAVA运行时数据区域--方法区

方法区: 1,它用于存储已被虚拟机加载的类型信息,常量,静态变量,即时编译器编译后的代码缓存等数据,它是线程共享的(非堆)。 2,这个区域的内存回收目标主要针对的是常量池的回收和类型的卸载,一般回收的效果难令人满意。 3,方法区无法满足新的内存分配需求时,将抛出OutOfMemoryError异常,方法区与堆非常相似。 运行时常量池: 1,运行时常量池是方法区的一部分,class文件中除了有类的版本 ,字段,方法接口信息等描述外,还有一项信息是常量池表,用于存放编译期生成的各种字面量和符号引用,这部分内容将

2021-05-27 15:15:58 104

原创 JAVA运行时数据区域---java堆

JAVA堆 1,线程共享的,虚拟机启动时创建,虚拟机管理的最大的一块内存。 2,存放对象实例,几乎所有的对象实例都在这里分配, 例外:即时编译,逃逸分析技术,栈上分配,标量替换。垃圾收集的最大目标区域,分代收集理论–经典分代。 3,java堆可以处于物理上不连续的内存空间中,但逻辑上它应该被视为连续的,但大对象(如数组)多数虚拟机实现出于简单。存储高效的考虑,很可能要求连续的内存空间。 4,java堆可以被实现成固定的大小,也可以是可扩展的。(通过参数:-Xmx和Xms设定) 5,OutOfMemoryEr

2021-05-27 12:23:03 81

原创 JAVA运行时数据区域--本地方法栈

本地方法栈(与虚拟机栈相似) 1 区别:虚拟机栈为虚拟机执行java方法服务,而本地方法栈则是为虚拟机执行本地(native)方法服务。 2,不同:虚拟机根据需要自由实现。

2021-05-27 12:04:06 88

原创 JAVA运行时数据区域

JAVA运行时数据区域 1,方法区(Method Area 共享区) 2,虚拟机栈(VM Stack 私有的) 3,本地方法栈(Native Method Stack 私有的) 4,堆(Heap 共享区) 5,程序计数器(Program Counter Register 私有的)

2021-05-26 18:14:06 60

原创 JAVA运行时数据区域-java虚拟机栈

java虚拟机栈(Java Virtual Machine Stack) 1,它是线程私有的。 2,它的生命周期与线程相同,虚拟机栈描述的是java方法执行的线程内存模型,每个方法执行的时候,java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法被调用直至执行完毕的过程,都对应着一个栈帧在虚拟机中入栈与出栈的过程 3,局部变量表:存放了编译期可知的各种java虚拟机的基本数据类型(如long,int等),对象引用(引用地址),return

2021-05-26 18:05:16 64

原创 JAVA数据运行时数据区域-程序计数器

程序计数器(Program Counter register) 1,是一块很小的内存,可以看着成当前线程的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选择下一条需要执行的字节码指令,它是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成, 2,它是线程私有的,线程的切换与生命周期状态是通过它来控制,每个线程私有的部分 3,如果执行的是本地方法(Native)程序计数器的值位空。 ...

2021-05-26 17:32:09 64

原创 数据的逻辑结构和存储结构

(一)数据的逻辑结构 1,集合:数据元素之间无其他的关系,仅仅属于同一集合而已 2,线性结构:数据元素之间存在一一对应的关系,其开始节点和终端节点具有唯一性,除了开始开始节点和终端节点,其他的元素有且仅有一个前驱节点和后继节点,线性表就是一个典型。 3,树形结构:数据元素之间存在着一一对应的关系,每一个数据与水元素只有一个前驱节点,但是却又很多后继节点 终端节点可以有多个。二叉树就是一个典型。 4...

2019-09-07 22:42:21 12554 1

原创 数据结构基础介绍

1:好的程序:一个好的程序取决于选择一个好的数据结构和一种好的算法 (数据)1,相对于数据结构而言,数据就是描述客观事物的数和字符的集合 2相对于计算机而言,就是所有能输入到计算机中的,且能被计算机处理的符的集合。 2,数据的基本单位是:数据元素(有时候被称为元素,节点,顶点,记录) 3,一个数据元素是由很多数据项组成(比如一条学生记录就是由姓名,性别,班级,学号等数据项组成) 4,数据对象就是性...

2019-09-07 11:59:07 231

原创 生成图形验证码

1:前端 图形验证码 2:后端生成图形验证码 @Controller public class JCaptchaController { public static final int WIDTH = 120; /*...

2019-09-06 22:44:26 227

原创 设计模式的一种--命令模式

命令模式是关于怎么样处理一个对象请求另一个对象调用其方法完成某项任务的一种模式, 在命令模式中,当一个对象请求另一个对象调用其方法失,而又不想和被调用的对象发生直接关系,而是把请求组封装在一个请求对象中,既是把引用封装在方法中,以达到传送命令的效果 在调用时 被调用的只需要和命令对象打交道, 四种角色:1:接受者(Receiver):接受者是一个类的实例,执行与请求相关的方法。 2:命令(Co...

2019-08-24 23:22:51 108

翻译 防止高并发中的缓存穿透的方法:双重检测加同步代码块

@Service(“userServiceImpl”) public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Autowired private RedisTemplate<Object,Object> redisTemplate; @Overr...

2019-08-23 09:40:53 438

数据的脱敏操作.txt

在编写的过程中,当后端响应数据给前端的时候,有些数据过于敏感,涉及用户隐私不易表现出来,我们要对数据进行处理来保证用户的隐私安全,脱敏操作就是对后端响应给前端的数据进行脱敏操作 就是脱去敏感的部分而又能满足实际需要

2019-09-03

错误解答:端口被占用.txt

错误解答;一般造成这样的原因是:在关闭程序的时候,进程没有关闭完,依然存在,造成端口被占用,再一次启动程序的时候会报错 解决方法,可以在dos窗口杀死进程释放端口,或者直接重启计算机。

2019-09-03

缓存穿透.txt

@Service("userServiceImpl") public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Autowired private RedisTemplate&lt;Object,Object&gt; redisTemplate; @Override public Long queryAllUserCount() { Long allUserCount= (Long) redisTemplate.opsForValue().get(Constants.ALL_USER_COUNT); if(allUserCount==null){ //注意缓存穿透 synchronized (this){ allUserCount= (Long) redisTemplate.opsForValue().get(Constants.ALL_USER_COUNT); if(allUserCount==null){ allUserCount=userMapper.selectAllUserCount(); redisTemplate.opsForValue().set(Constants.ALL_USER_COUNT, allUserCount, 15, TimeUnit.SECONDS); } } } return allUserCount; } }

2019-08-23

空空如也

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

TA关注的人

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