![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
hacker_java基础知识
java
睹小物
change is always better
展开
-
Java设计模式-工厂模式
Java设计模式-工厂模式原创 2022-09-08 14:19:03 · 286 阅读 · 0 评论 -
Java设计模式-代理模式
Java 代理分静态代理,动态代理,静态代理在运行前就已经生成代理类字节码,而动态代理是在运行期生成的代理类字节码假设一个场景,手机制造商(委托类)找一个店面(代理类)销售手机静态代理实现定义手机接口public interface Phone { void size(); void color();}手机制造商(委托类)public class Producer implements Phone{ @Override public vo原创 2022-05-13 13:24:03 · 249 阅读 · 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 · 331 阅读 · 0 评论 -
java 公平锁与非公平锁区别
ReentrantLock默认为非公平锁,非公平锁比公平锁效率高非公平锁抢锁源码公平锁抢锁源码区别一:源码对比,发现非公平锁先cas一次自旋抢锁,自旋抢锁失败,会执行acquire(1)acquire方法源码非公平锁tryAcquire主要执行方法公平锁tryAcquire主要执行方法区别二:源码对比,发现公平锁考虑AQS锁队列中等待的线程,无队列才进行cas自旋操作...原创 2021-04-01 07:56:50 · 523 阅读 · 0 评论 -
java回调函数
java调方法的方式有三种一种同步方法调用第二种异步方法调用第三种回调原创 2020-12-30 13:49:09 · 202 阅读 · 0 评论 -
java基本类型与引用类型
基本类型在方法之间是值的传递,引用类型在方法之间是地址的传递案例一:结果:案例二:结果:你可能会疑惑,为什么第二次的结果不是null?首先需要明确的是,对象都是放在堆里面的,main方法与changeUser方法的user都是对象的一个名称,都是保存着new User()对象的引用地址;changeUser方法的user名称为null,表示断开new User()对象的连接。...原创 2020-12-23 14:40:43 · 107 阅读 · 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 · 120 阅读 · 0 评论 -
java 反射后的成员变量对象、构造方法对象、成员方法对象
知识背景:java文件加载阶段反射:将类的各个组成部分封装为其他对象,这就是反射机制* 好处:1.可以在程序运行过程中,操作这些对象。2.可以解耦,提高程序的可扩展性。* 获取Class对象的方式:1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象* 多用于配置文件,将类名定义在配置文件中。读取文件,加载类2...原创 2020-10-26 20:59:04 · 208 阅读 · 0 评论 -
java Session缓存
Session原理1.原理:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession2.快速入门:1.获取HttpSession对象:HttpSession session = request.getSession();2.使用HttpSession对象方法:Object getAttribute(String name)...原创 2020-10-20 17:28:32 · 1184 阅读 · 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 · 353 阅读 · 0 评论 -
java volatile与Synchronized知识点了解
java多线程下,如果对一个共享变量进行并发操作的话会引发线程安全问题前提了解volatile关键字: 并发环境下,每个线程都会有自己的工作内存,每个线程只能访问各自的工作内存,而共享变量会被加载到每个线程的工作内存中,所以这里面就有一个问题,内存中的数据什么时候被加载到线程的工作内存中,而线程工作内存中的内容什么时候会回写到变量内存中去。这两个步骤处理不当就会造成数据的不一致,比如某个共享变量被线程A修改了,但是没有回写到内存中去,而线程B在加载了内存中的数据之后读取到的共享变量是脏...原创 2020-10-15 17:50:16 · 183 阅读 · 0 评论 -
java自定义注解案例详解
注解有三种分类:注解本质上是一个继承Annotation的接口第一种为jdk预定义注解* @Override:检测被该注解标注的方法是否是继承自父类(接口)的* @Deprecated:该注解标注的内容,表示已过时* @SuppressWarnings:压制警告* 一般传递参数all@SuppressWarnings("all")第二种为元注解* @Target:描述注解能...原创 2020-10-15 12:08:52 · 468 阅读 · 1 评论 -
高并发下,spring框架中dbutils.QueryRunner可以单例存储
1:了解单例与多例的区别2:了解子类对象中对父类成员变量的存储方式 抽象父类父类是不可能new3:了解QueryRunner类3:从spring容器中获取对象4:countDownLatch高并发验证百度网盘资源获取连接:...原创 2020-10-11 12:16:50 · 407 阅读 · 0 评论 -
java 多线程创建及应用
java 多线程创建的三种方式1:estends Thread 类2:implements Runnable 接口3:new Thread(Runnable接口实现类)最常用第二种方式,类可以实现多个接口,类只能继承一个父类实现Runnable接口的实现对象,当被多次start会创建多个多个线程执行,共享成员变量,造成线程不安全问题。解决方式:一种同步代码块,一种同步方法,一种锁对象...原创 2020-09-30 11:28:57 · 216 阅读 · 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 · 214 阅读 · 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 · 452 阅读 · 0 评论