自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java否极泰来

学习、记录Java

  • 博客(12)
  • 收藏
  • 关注

原创 【Java】为什么char占两个字符却能存汉字

问题:Java的char占两个字节,而汉字的UTF-8编码需要至少三个字节,为什么char可以存储汉字? 参考:https://blog.youkuaiyun.com/u010297957/article/details/48495791 Unicode 字符集起源ASCII(American Standard Code for Information Interchange,美国标准信息交换代码),这是个单字节编码表,它能最多能表示256个字符(但实际上只用了7bit,128个。ISO8859-1使用8bit来表示

2021-12-03 18:26:08 2128

原创 【Java】异常处理

Throwable Error Error编译时不可检查,常见的StackOverflowError、OOMError /** * @author:sy104 * @date: 2021/11/28 * @desc: Error是错误,对于所有的编译时期的错误以及系统错误都是通过Error抛出的 */ public class ErrorDemo01 { public static void main(String[] args) { new ErrorDemo01().a(

2021-12-02 22:38:54 522

原创 【Java】Callable创建线程用到的适配器模式

Callable的用法 创建多线程的第三种方式是使用Callable接口: 实现Callable接口 创建FutureTask实例 创建Thread实例 class MyThread implements Callable<String>{ @Override public String call() throws Exception { System.out.println("call"); TimeUnit.SECONDS.sleep(5)

2021-11-25 20:03:16 664

原创 【Java】适配器模式的使用

现在有一根老的网线,可以连接上网: public class Adaptee { public void request(){ System.out.println("连接网线上网"); } } 现在买了一台新电脑,想要用老网线上网,但是发现插不上: public class Computer { public void net(){ } } 于是买来一个适配器,适配器符合接口: public interface Net2Usb { public

2021-11-25 18:40:01 463 1

原创 【Java】双亲委派机制分析

双亲委派机制:当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。 类加载器从上往下依次是: BootstrapClassLoader(启动类加载器) c++编写,加载java核心库 java.*,无法直接获取到启动类加载器的引用,不允许直接通过引用进行操作。 ExtClassLoader (标准扩展类加载器) java编写,加载扩展库,如classpath中的jre ,javax.*,可以通过引用获取

2021-11-21 16:18:46 353

原创 【Java】线程的概念和创建方法

线程的概念 核心概念 线程就是独立的执行路径 主线程也是main(),为系统入口,用于执行整个程序 后台也有线程,如gc 线程的运行由调度器安排,与操作系统相关,先后顺序不能人为干预 对同一份资源操作的时候,存在资源抢夺问题,加入并发控制 线程带来额外开销,如cpu调度时间 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致 进程和线程的区别 进程是程序的一次执行过程,是系统分配资源的单位。 一个进程中至少有一个线程,线程是CPU调度和执行的单位。 线程的创建(Thread,Runnable

2021-11-20 15:13:10 401

原创 【Java】WeakHashMap源码阅读笔记

HashMap中如果一个键指向的对象没有其他任何引用指向它,就不会被GC回收,需要手动remove。如果想要这种键值对被自动回收怎么办?带着问题看一下WeakHashMap的源码 WeakHashMap的属性 和HashMap中基本一样,不过WeakHashMap没有红黑树相关操作,还多了个ReferenceQueue。 ReferenceQueue存的是什么呢?这里可以推出是那些指向被回收的对象的弱引用。 /** * The default initial capacity -- MUS

2021-11-19 17:48:50 267

原创 【Java】弱引用的相关使用

Java的四种引用 1.强引用 最常见的引用类型,即使内存不够也不会回收。 思考:obj1这个强引用自身是否也是对象?占用内存吗? public class StrongReferenceDemo { public static void main(String[] args) { //obj1是一个强引用,指向new出来的实际对象 Object obj1 = new Object(); Object obj2 = obj1; obj1

2021-11-19 14:47:00 748

原创 【Java】SpringAOP的使用

房东租房的例子 有一个房东要出租房屋: package com.shin.demo04; public class Host implements Rent { public void rent() { System.out.println("房东出租房屋"); } } package com.shin.demo04; public interface Rent { void rent(); } 在动态代理的例子中,已经可以实现通过一个代理生成类给各种各样的被

2021-11-17 19:43:32 238

原创 【Java】动态代理的使用

房东租房的例子 有一个房东要出租房屋: public class Host implements Rent { public void rent() { System.out.println("房东出租房屋"); } } public interface Rent { void rent(); } 之前在静态代理的例子中,代理类是编译前写好的,并且对于每一个被代理的角色,都需要手动写一个代理类,非常麻烦。在动态代理中,我们可以根据被代理的角色动态生成需要的代理类:

2021-11-17 19:40:50 282

原创 【Java】静态代理的使用2

UserService的例子 有一个UserServiceImpl类实现了UserService接口的add和delete方法: public class UserServiceImpl implements UserService { public void add() { System.out.println("add"); } public void delete() { System.out.println("delete"); } }

2021-11-17 19:39:06 134

原创 【Java】静态代理的使用1

一个租房的例子 有一个房东要出租房屋,他可以自己完成出租房屋的操作: public class Host implements Rent{ public void rent() { System.out.println("房东出租房屋"); } } public interface Rent { void rent(); } 房东找了一个中介,因此中介通过房东也可以完成出租房屋的操作: public class Proxy implements Rent{

2021-11-17 19:34:23 215

空空如也

空空如也

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

TA关注的人

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