
hacker_java基础知识
java
睹小物
change is always better
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java设计模式-工厂模式
Java设计模式-工厂模式原创 2022-09-08 14:19:03 · 401 阅读 · 0 评论 -
Java设计模式-代理模式
Java 代理分静态代理,动态代理,静态代理在运行前就已经生成代理类字节码,而动态代理是在运行期生成的代理类字节码 假设一个场景,手机制造商(委托类)找一个店面(代理类)销售手机 静态代理实现 定义手机接口 public interface Phone { void size(); void color(); } 手机制造商(委托类) public class Producer implements Phone{ @Override public vo原创 2022-05-13 13:24:03 · 351 阅读 · 0 评论 -
Java 泛型的使用
当代码逻辑不关注具体的数据类型时,只注重代码的逻辑的时候,可以考虑使用泛型。泛型可以很好的对类型参数化处理。 泛型的使用 泛型类 public class java_day01 <T> { } 泛型接口 public interface java_day01 <T> { public T getData(T t); } // 实现类,指定具体参数类型 class java_day01Impl implements java_day01<St原创 2022-05-11 21:21:22 · 455 阅读 · 0 评论 -
java 公平锁与非公平锁区别
ReentrantLock默认为非公平锁,非公平锁比公平锁效率高 非公平锁抢锁源码 公平锁抢锁源码 区别一:源码对比,发现非公平锁先cas一次自旋抢锁,自旋抢锁失败,会执行acquire(1) acquire方法源码 非公平锁tryAcquire主要执行方法 公平锁tryAcquire主要执行方法 区别二:源码对比,发现公平锁考虑AQS锁队列中等待的线程,无队列才进行cas自旋操作 ...原创 2021-04-01 07:56:50 · 598 阅读 · 0 评论 -
java回调函数
java调方法的方式有三种 一种同步方法调用 第二种异步方法调用 第三种回调原创 2020-12-30 13:49:09 · 252 阅读 · 0 评论 -
java基本类型与引用类型
基本类型在方法之间是值的传递,引用类型在方法之间是地址的传递 案例一: 结果: 案例二: 结果: 你可能会疑惑,为什么第二次的结果不是null? 首先需要明确的是,对象都是放在堆里面的,main方法与changeUser方法的user都是对象的一个名称,都是保存着new User()对象的引用地址;changeUser方法的user名称为null,表示断开new User()对象的连接。 ...原创 2020-12-23 14:40:43 · 159 阅读 · 0 评论 -
CountDownLatch并发案例
CountDownLatch这个类,这个工具可以让我们的线程在一开始都处于“同一起跑线” 代码: public class hacker_01_CountDownLatchDemo { final List<Integer> datas= new ArrayList<>(); final ExecutorService TASK_POOL= Executors.newFixedThreadPool(20); final CountDownLatch c原创 2020-12-21 18:32:15 · 168 阅读 · 0 评论 -
java 反射后的成员变量对象、构造方法对象、成员方法对象
知识背景:java文件加载阶段 反射:将类的各个组成部分封装为其他对象,这就是反射机制 * 好处: 1.可以在程序运行过程中,操作这些对象。 2.可以解耦,提高程序的可扩展性。 * 获取Class对象的方式: 1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象 * 多用于配置文件,将类名定义在配置文件中。读取文件,加载类 2...原创 2020-10-26 20:59:04 · 241 阅读 · 0 评论 -
java Session缓存
Session原理 1.原理:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession2.快速入门:1.获取HttpSession对象:HttpSession session = request.getSession();2.使用HttpSession对象方法:Object getAttribute(String name)...原创 2020-10-20 17:28:32 · 1319 阅读 · 0 评论 -
java Cookie缓存
Cookie原理图 1.设置及获取Cookie :1.创建Cookie对象,绑定数据* new Cookie(String name, String value)2.发送Cookie对象* response.addCookie(Cookie cookie)3.获取Cookie,拿到数据* Cookie[]r...原创 2020-10-20 17:27:06 · 413 阅读 · 0 评论 -
java volatile与Synchronized知识点了解
java多线程下,如果对一个共享变量进行并发操作的话会引发线程安全问题 前提了解 volatile关键字: 并发环境下,每个线程都会有自己的工作内存,每个线程只能访问各自的工作内存,而共享变量会被加载到每个线程的工作内存中,所以这里面就有一个问题,内存中的数据什么时候被加载到线程的工作内存中,而线程工作内存中的内容什么时候会回写到变量内存中去。这两个步骤处理不当就会造成数据的不一致,比如某个共享变量被线程A修改了,但是没有回写到内存中去,而线程B在加载了内存中的数据之后读取到的共享变量是脏...原创 2020-10-15 17:50:16 · 225 阅读 · 0 评论 -
java自定义注解案例详解
注解有三种分类: 注解本质上是一个继承Annotation的接口 第一种为jdk预定义注解 * @Override:检测被该注解标注的方法是否是继承自父类(接口)的 * @Deprecated:该注解标注的内容,表示已过时 * @SuppressWarnings:压制警告 * 一般传递参数all@SuppressWarnings("all") 第二种为元注解 * @Target:描述注解能...原创 2020-10-15 12:08:52 · 590 阅读 · 1 评论 -
高并发下,spring框架中dbutils.QueryRunner可以单例存储
1:了解单例与多例的区别 2:了解子类对象中对父类成员变量的存储方式 抽象父类父类是不可能new 3:了解QueryRunner类 3:从spring容器中获取对象 4:countDownLatch高并发验证 百度网盘资源获取连接: ...原创 2020-10-11 12:16:50 · 487 阅读 · 0 评论 -
java 多线程创建及应用
java 多线程创建的三种方式 1:estends Thread 类 2:implements Runnable 接口 3:new Thread(Runnable接口实现类) 最常用第二种方式,类可以实现多个接口,类只能继承一个父类 实现Runnable接口的实现对象,当被多次start会创建多个多个线程执行,共享成员变量,造成线程不安全问题。 解决方式:一种同步代码块,一种同步方法,一种锁对象 ...原创 2020-09-30 11:28:57 · 267 阅读 · 0 评论 -
ThreadLocal的详解
前提条件 知道强、软、弱、虚引用的区别及作用; 强引用: 软引用:应用场景在缓存 弱引用:应用场景在事务 虚引用:应用场景在直接内存管理 ThreadLocal是线程隔离的,每个线程间互不干扰; import java.util.concurrent.TimeUnit; public class hacker_01_ThreadLocalDemo { public static ThreadLocal<User> th=new ThreadLocal&l..原创 2020-09-29 13:16:12 · 259 阅读 · 0 评论 -
java 左移<< 与右移 >>
针对正整数 <<左移 按二进制形式把所有的数字向左移动对应的位数,低位的空位补零。 >>右移 按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),最高位则移入原来高位的值。 举例:如:a = 00110111,则a>>2=00001101,b=11010011,则b>>2 = 11110100 public static void main(String[] args) { int a=53; .原创 2020-09-11 10:58:35 · 503 阅读 · 0 评论