
java高级
介绍java中一些高级知识点
是宇哥啊
叩首问路 码梦为生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java注解(上篇)
接近一个月没有分享博客了,今天晚上睡的很早,差不多七点多就睡着了,然后睡醒了就很人间清醒。最近为什么这么长时间没有去分享呢,是因为一直在筹划一件事情。个人准备从8月份开始在腾讯课堂讲课啦,当然目的不是为了赚钱哦。是为了顺便带带有需求的同学,也让自己获得一些成长吧。 好了,话不多说,进入今天的主题。 我们好多同学在面试或者考核环节会遇到这样的问题,被认为没有架构能力。今天要讲的东西就被大量运用在各种开源框架中间。 1.注解的定义 首先,什么是注解?我的理解注解就是一种标志位。就是给方法或者类打上.原创 2021-07-31 04:14:26 · 201 阅读 · 0 评论 -
java泛型(下篇)
时间真的是很快,又到了周末,又到了每周分享的时刻。本周将继续讲解java的泛型,上周分享的文章貌似效果不是很好。本周呢还是会继续下去,如果看的人不是很多就当作自己的一个学习笔记吧。 首先我们来看一个东西,泛型继承: 1.泛型继承规则 public class A { } public class B extends A { } public class Pair<T> { } 我们先定义一个类A,然后再定义一个类B,我们让B继承A。再定义一个泛型类Pair。 我们使用原创 2021-06-27 01:47:06 · 166 阅读 · 2 评论 -
java泛型(上篇)
又到了一周一次的开车时刻,为什么要一周一次,这个是有科学讲究的。虽然我们还很年轻,但开车也不宜过多,要注意身体。这一周以来啊,吃的挺好,喝的也不错,肉没长多少,甚是欣慰。前几天我就在想zhe yi z ...原创 2021-06-20 02:04:37 · 137 阅读 · 0 评论 -
线程池原理
为什么要用线程池? 1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2.提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。线程池技术正是关注如何缩短或调整T1,T3时间的技术,从而提高服务器程序性能的。它把T1,T3分别安排在服务器程序的启动和结束的时间段或者一些空闲的时间段,这样原创 2021-01-30 21:51:26 · 278 阅读 · 0 评论 -
悲观锁和乐观锁
悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。Java中synchronized就是悲观锁思想的实现。 乐观锁 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提原创 2021-01-30 20:26:25 · 131 阅读 · 0 评论 -
线程拓展(join用法)
我们一起来看一张图: 如何让出当前线程的执行权 yield()方法,只在JDK某些内部实现才能看到,是让出执行权,基本用不到。让出之后变成可运行状态。 join方法 t.join()方法只会使主线程(或者说调用t.join()的线程)进入等待池并等待t线程执行完毕后才会被唤醒。并不影响同一时刻处在运行状态的其他线程。 分析: package 优快云; public class TestJoin { public static void main(String[] args) thr原创 2021-01-30 17:43:38 · 192 阅读 · 0 评论 -
线程与进程
什么是进程和线程? 进程是程序运行资源分配的最小单位 进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘IO等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的、静态的,进程是活的、动态的。进程可以分为系统进程和用户进程。凡是用于完成操作系统...原创 2021-01-30 14:13:28 · 212 阅读 · 0 评论 -
ArrayList的数据结构
ArrayList本质上是一个动态数组,第一次添加元素时,数组大小将变化为 DEFAULT_CAPACITY 10,不断添加元素后,会进行扩容。删除元素时,会按照位置关系把数 组元素整体(复制)移动一遍。原创 2021-01-12 22:08:24 · 432 阅读 · 0 评论 -
String、StringBuffer、StringBuilder
1.String是final类,不能被继承。对于已经存在的Stirng对象,修改它的值,就是重 新创建一个对象 2.StringBuffer是一个类似于String的字符串缓冲区,使用append()方法修改Stringbuffer的值,使用toString()方法转换为字符串,是线程安全的 3.StringBuilder用来替代于StringBuffer,StringBuilder是非线程安全的,速度更快 ...原创 2021-01-12 22:02:29 · 125 阅读 · 0 评论 -
java中ClassLoader详解
问题:调用String.class.getClassLoader(),会返回null,为什么? Bootstrap ClassLoader是由C++编写的。 Bootstrap ClassLoader是由C/C++编写的,它本身是虚拟机的一部分,所以它并不是一个JAVA类,也就是无法在java代码中获取它的引用,JVM启动时通过Bootstrap类加载器加载rt.jar等核心jar包中的class文件,int.class,String.class都是由它加载。然后呢,我们前面已经分析了,JVM初始化..原创 2021-01-12 21:58:53 · 204 阅读 · 0 评论 -
JVM工作流程
简单地说:就是.java文件通过编译器编辑成.class文件,.class文件通过类加载器加载到内存中。 下面重点来讲一讲JVM的内存模型: 就是我们常说的栈,堆,方法区。 Java堆 此内存区域唯一的目的就是存放对象实例,几乎所有的对象都在这分配内存 本地方法栈 与VM栈发挥的作用非常相似,VM栈执行Java方法(字节码)服务,Native方 法栈执行的是Native方法服务 java虚拟机栈 Java方法执行的内存模型,每个方法执行的时候,都会创...原创 2021-01-12 21:18:12 · 269 阅读 · 0 评论 -
static关键字(java)
static关键字修饰的方法或者变量可以直接通过类名来访问; static关键字修饰的变量在内存中只有一个副本,仅在类被加载时初始化; static关键字不允许修饰局部变量; 可以通过this访问静态成员变量。 ...原创 2021-01-11 21:27:47 · 88 阅读 · 0 评论 -
volatile关键字详解
我们经常这样写单例模式: public class LzySingleInstance { public static volatile LzySingleInstance lzySingleInstance; private LzySingleInstance(){ } public static LzySingleInstance getLzySin...原创 2019-12-30 14:26:28 · 171 阅读 · 0 评论 -
java高级 - 泛型
泛型在我们的日常开发中经常会用到,一般可以分为两大类: 01.类泛型 ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("lzy"); 这样类型就被限定死了! 02.方法泛型 protected <T extends View> T findId(int resId) { ...原创 2019-12-17 16:08:40 · 134 阅读 · 0 评论 -
java高级 - 注解
/** * Created by Michael on 2019/12/17. * @interface代表注解 */ @Target(ElementType.FIELD) //放到哪里,这里代表放到属性上面 @Retention(RetentionPolicy.RUNTIME) //什么时候起作用 .RUNTIME运行时 .CLASS编译时 public @interface View...原创 2019-12-17 15:36:22 · 134 阅读 · 0 评论 -
java高级 - 反射02
我们来看一个类: public class LzyBean { private String name; public LzyBean(String name){ this.name = name; } private void getTag(){ Log.e("lzy","getTag()被调用了!"+name); ...原创 2019-12-17 14:50:53 · 119 阅读 · 0 评论 -
java高级 - 反射01
我们一起来看一个类: public class LzyBean { private String name; public LzyBean(){ } public void getTag(){ Log.e("tag","hello"); } } 我们可以通过以下方法创建对象: public class MainActivi...原创 2019-12-17 14:40:31 · 108 阅读 · 0 评论