自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 理解java对象

本文用于探讨Java对象的创建、布局和访问的全过程:对象的创建过程: 类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加...

2020-01-27 20:06:11 205

原创 理解内存区域模型

java虚拟机根据在执行java程序过程把管理的内存分为以下几部分:线程私有部分: 虚拟机栈 生命周期与线程相同,描述的是java方法执行的内存模型:每个方法在执行的同时创建一个栈帧,用于存储局部变量表、程序计数器、操作数栈、动态链接、方法出口等信息。每一个方法从调用知道执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本区域的两种异常情况:StackOverf...

2020-01-27 12:51:12 200

原创 JavaMail简单使用

@Override @Async public void sendEmail(String[] sendTo, String emailType, Object emailContent) { SysEmail sysEmail = sysEmailMapper.selectList(new EntityWrapper<>()).get(0);...

2019-08-14 19:14:08 395

原创 Java8-CompletableFuture简单api用法

常见实现线程方法:继承thread类 实现runnable接口上述方式不能获得返回值,若想获得返回值其常见方式为实现callable接口,用Future描述一个异步计算的结果,但是获取一个结果时方法较少,要么通过轮询isDone,确认完成后,调用get()获取值,要么调用get()设置一个超时时间。但是这个get()方法会阻塞住调用线程,这种阻塞的方式显然和我们的异步编程的初衷相违背。...

2019-02-20 19:23:24 609

原创 Java8-Optional简单用法

Optional:这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。public class OptionalTest { private String name; private int age; private boolean sex; public OptionalTes...

2019-01-17 11:06:43 501

原创 Java8日期处理

新增日期时间类介绍:新的时间及日期API位于java.time中,Java.time包中的是类是不可变且线程安全的。Instant:Instant类是用在机器可读的时间格式上的,它以Unix时间戳的形式存储日期 public static void main(String[] args) { //当前时间戳2019-01-16T06:02:35.081Z ...

2019-01-16 18:16:05 231

转载 switch简单用法及性能

 switch 用法  switch适用于byte,int, short, char(Java1.6),Java1.7增加string  如果case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句  如果没有满足条件的case语句,就执行default内容。default语句不是必须,可不写 /**...

2019-01-09 16:32:05 1438

原创 java多线程基础

本文就java多线程的基本使用方法、线程同步、线程状态、线程函数等记录一些总结。        进程:进程是资源分配的最小单位。每个进程都有独立的代码和数据空间,进程间切换会有较大的开销,一个进程往往包含多个线程。        线程:线程是CPU调度的最小单位。同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程切换开销较小。       并行 :多核CPU下两个任...

2018-09-19 14:38:58 120

原创 java基础-代理(静态代理、动态代理、cglib代理)

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法.1.  静态代理静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接...

2018-09-13 15:06:48 174

转载 Java基础-反射实例

反射最重要的用途就是开发各种通用框架,是框架设计的灵魂很多框架(比如 Spring)都是配置化的(比如通过 XML文件配置JavaBean,Action之类的),为了保证框架的通用性,他们可能根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。反射使用用例:1.获取对象的三种方式    student类package com...

2018-09-12 16:35:33 175

原创 fastJson判断是JSONObject还是JSONArray

  问题描述:在获取json返回值变化的情况下(上层接口返回值定义为:若为一条数据以“{}”返回,若为多条以数组形式返回),在jsonObject还是jsonArray判断上有一定困难。 解决方法1:直接判断getJsonArray(“xxx”)== null 进行判断解决结果:gg(类型转换异常)java.lang.ClassCastException: com.al...

2018-09-06 15:03:48 8745 1

翻译 阿里巴巴开发手册手记

 所有相同类型的包装类对象之间值的比较,全部使用equals方法比较。          说明:Integer var = ? 在-128~127范围的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间的Integer值可以直接使用==进行判断,但是在这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,推荐使用equals方法判断。    2. ...

2018-05-25 11:24:30 376

原创 Java优化汇总

1. 减少对变量的重复计算for (int i = 0; i &lt; list.size(); i++) {}应变成for (i = 0; length = list.size(); i &lt; length; i++) {}2. 乘法喝除法使用移位操作for (int i = 0; i &lt; 100; val += 1){  a = i * 8;  b = i / 2;}...

2018-05-23 15:24:14 181

原创 entryset和keyset

package com.wuyuan.demo;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;public class TestMap { //方法一: 用entrySet() public void test1() {...

2018-05-09 14:02:30 1001

原创 mysql从零开始学随笔

一 数据库 1)数据库基本操作      数据库安装完成连接(MySQL -u root -p)      显示已有数据库(show databases)      创建数据库(create database ***)      切换数据库(use database ***)2)表基本操作    显示所有已存在表(show tables)    约束:主键(primary key)唯一且非空,  ...

2018-03-30 16:26:07 256

原创 spring-设计原则

1 . 使用POJO进行轻量级和最小侵入式开发。2.  通过依赖注入和基于接口编程实现松耦合。3.  通过aop和默认习惯进行声明式编程。4.  使用aop和模板(template)减少模式化代码。...

2018-02-09 11:50:18 496

Kubernetes权威指南

传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。

2019-06-12

JMM&JSR;.rar

Java程序是需要运行在Java虚拟机上面的,Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。

2019-05-24

空空如也

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

TA关注的人

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