
Java每日复习
Java每日复习
你们卷的我睡不着QAQ
学生党一枚,平时看Python和Java多一点。一般看到什么就记录什么,看到好的文章会给大家分享,希望能得到看官老爷的喜爱。
展开
-
SpringBoot 启动原理
Springboot application 启动原理原创 2022-07-27 12:40:02 · 476 阅读 · 0 评论 -
Java8新特性:stream计算
package JAVA_stream学习;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.IntStream;import static java.util.stream.Collectors.toList;public class streamlearn { public static void main(String[] args原创 2022-04-19 22:17:34 · 418 阅读 · 1 评论 -
Hashmap的底层实现(以JDK1.8为例)
Hashmap是我们常用的一个数据结构。我们今天来剖析一下hashmap底层是怎么样的?由于hashmap的版本经常更迭,我们今天就以JDK1.8为例来说。**hashmap其实是一个entry数组,**一个entry中包括一个key value 。而entry的存储参考数组的方式。你可以把hashmap看做一个大号的数组,只不过里面存放的是一个个的entry。hashmap的entry存放并不是根据key来存放的,而是hash值。当一个数据put进来的时候,hashmap会计算他的hash值,再根据原创 2022-04-08 10:59:23 · 823 阅读 · 0 评论 -
AOP概述
package 设计模式;/*动态代理 */import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;//接口其实更应该定义成一种规范interface Human{ String getBelief(); void eat(String food);}class SuperMan implements Hum.原创 2022-03-25 18:23:20 · 493 阅读 · 1 评论 -
动态代理初步理解
动态代理就是在程序编码时,不需要指定某类来了person类就做person类的代理类来了annimal类就做annimal类的代理类因此实现动态实现动态代理的理论基础是JAVA反射Spring框架很多地方都用到了java反射比如JAVA Bean的读取package 设计模式;/*动态代理 */import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.r原创 2022-03-25 18:05:10 · 341 阅读 · 0 评论 -
JAVA-IO
File初步使用@Testpublic void test01(){ //一种是相对路径 File file=new File("hello.txt"); //一种是绝对路径 File file1= new File("C:\\Users\\61692\\Desktop\\hello.txt"); System.out.println(file.getPath()); //输入hello.txt System.out.println(file1.g原创 2022-03-25 17:59:41 · 262 阅读 · 0 评论 -
死锁问题与解决
死锁就是各个线程分别都拿了对方需要的同步资源不放,都在等对方放弃自己手里的资源,因此互相对待,形成了线程的死锁。package 多线程;/** * 死锁的案例 * 一线程握住锁s1 然后就睡了 * 二线程执行握住锁2 然后也睡了 * 一线程醒来以后,要获取锁2,但是2线程拿着呢 * 2线程醒来后,要获取锁1,但是1线程拿着呢 * 然后死锁了 * */public class deadThread { public static void main(String[] args)原创 2022-03-25 17:56:29 · 282 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式分为两种一种工厂方法,一种抽象工厂工厂的存在就是为我们new对象的,这样节省了我们的开发时间。在JAVA中应用十分广泛其中XXXFactory的都是采用的工厂模式,专门生产XXX的工厂这是简单工厂模式作为引例package 设计模式;//简单工厂模式/** * 缺点就是你要是扩展新的产品时,必须修改CarFactory类的代码 * 会产生不安全 */interface Car { void run();}class Audi implements Car {原创 2022-03-24 10:41:28 · 620 阅读 · 0 评论 -
设计模式之代理模式
代理有两种一种静态代理,一种动态代理动态代理又分JDK原生代理和clib动态代理本案例是静态代理就是这个代理只能为我一个被代理对象所服务比如这里又出现一个被代理对象,那么只能再重写一个代理再为它服务动态代理则不是,理论基础是JAVA反射package 设计模式;public class 代理模式 { public static void main(String[] args) { Server server=new Server(); //serve原创 2022-03-24 10:35:59 · 192 阅读 · 0 评论 -
throws与throw的异同
throws:在方法体命名,一旦满足后的异常对象,立即抛出异常,并显示给调用者,后续代码不再执行throw手动抛出一个异常对象其实Java的异常处理可以理解为一个“抓抛模型”过程1:抛的过程发现异常代码,生成异常对象并抛出(1)系统自动生成异常对象(2)程序员手动生成异常对象过程2:抓的过程可以理解为对异常的处理(1)try catch finally(2)throws由此可以看出:throw是抛出异常,是生成异常对象的方式throws是声明异常,是处理异常的方式。...原创 2022-03-23 22:04:34 · 686 阅读 · 0 评论 -
单例模式(饿汉模式与懒汉模式实现)
单例模式是只会实例化一个对象,程序就用这一个对象。构造器为private饿汉模式:package 设计模式;public class 单例模式 { Bank bank1 =Bank.getInstance(); Bank bank2 =Bank.getInstance(); //bank1 与bank2 相同}class Bank{ //私有化类构造器 private Bank(){ } //内部创建类的对象 private st原创 2022-03-23 21:37:52 · 241 阅读 · 0 评论 -
实现同步方式的三种方式:同步监视器、同步方法、lock
Lockprivate ReentrantLock lock = new ReentrantLock();lock.lock();//上锁lock.unlock();//解锁同步方法public synchronized void run(){ //}同步监视器synchronized(s1){ //}Lock案例package 多线程;import java.util.concurrent.locks.ReentrantLock;class Window原创 2022-03-23 14:00:32 · 441 阅读 · 0 评论 -
volaitale 与synchronized的区别
volaitale 与synchronized的区别(1)不是原子 原子操作(2)volaitale 仅保证数据在各线程可见性,但不能不保证线程安全,尤其i++synchronized能保证(3)前者不是锁,更像是监视器,或者叫轻量级锁;synchronized就是锁了(4)前者性能好,后者性能差锁的出现之所以会让性能变差,是因为是让多线程变成单线程了;还有会让线程从就绪变成阻塞态,再从阻塞变成就绪态,这会极大损耗cpu的性能。voliatle怎么能保证数据在各线程的可见性?因为,在没加该原创 2022-03-23 13:56:48 · 205 阅读 · 0 评论 -
sleep与wait()的区别 与 wait()与nodify()
sleep与wait()的区别相同点:都可以让线程进入阻塞状态不同点:(1)sleep()在Thread类声明;wait()在Object类中声明(2)sleep没有执行要求,爱在哪里,就在那里;wait()只能在同步代码块【加锁区】。(3)若两个方法都在同步代码块内,sleep()不会释放锁,但是wait()会释放锁。wait()与nodify()这个哥俩要配合一个使用wait()会使object对象的线程都阻塞;那么nodify()就唤醒object对象的阻塞线程。这两个方法一正一反,原创 2022-03-22 18:20:24 · 219 阅读 · 0 评论 -
多线程实战 生产者与消费者问题
package 多线程;/** * 生产者-》店员(20个固定)-》消费者 * 店员若满,会让生产者停一下 * 店员若空,会让消费者停一下 */class Clerk{ private int product_num=0; //生产 public synchronized void produceProduct() throws InterruptedException { if(product_num<20){ pr原创 2022-03-22 17:39:52 · 88 阅读 · 0 评论 -
java反射实战
Java反射是JAVA的一个bug级的存在我们可以利用java反射去获取任何字段、任何类。包括私有的。获取类模板的两种方式一Class<Blog> blogClass =Blog.class;二Blog blog =new Blog();Class<? extends Blog> blogclass1 =blog.getClass();这样我们就可以利用类模板进行操作了:我们可以利用blogclass 或者blogclass1来操作System.out.p原创 2022-03-19 19:13:50 · 523 阅读 · 0 评论 -
Session鉴权【登录】
我们经常会遇到去一个网站,当你执行一个操作的时候需要登录那么网站或者app是如何获知我们是否登录的呢?今天介绍一个比较经典的方法 httpsessionSession在HttpServletRequest request//serivce层//将之前mapper层的注入过来@Autowriedprivate SysUserService sysusermapper;public Returndata login(Sysuser user,HttpServletRequest reques原创 2022-03-19 19:04:47 · 897 阅读 · 0 评论 -
ArrayList与LinkedList的两者区别
我们在日常开发中经常会使用到AL 与 LL。arraylist和linkedlist的区别是:数据结构不同,效率不同,自由性不同,主要控件开销不同。两者对比:1、数据结构不同ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)双向链表的数据结构。2、空间灵活性ArrayList其实最好需要指定初始容量的(当然有些程序员为了偷懒,根本不会去初始化,这其实对于代码质量低的项目而言是无关紧要的)《1.其实在代码规范里,都要手动设置,只是我们用默认而已,如果公原创 2022-03-07 21:15:18 · 9817 阅读 · 9 评论 -
HashMap、Hashtable、HashSet三种hash集合的区别
转载于https://blog.youkuaiyun.com/u011109589/article/details/80535412总体来说Hashtable是线程安全的(内部有synchronzied锁实现),相对的会有性能代偿。HashMap是线程不安全的,内部没有锁的实现,但是相对hashtable来讲是性能高的,如要线程安全必须用Collections.synchronizedMap()添加键值对(key-value)可以使用 put() 方法:remove(key) 方法来删除 key 对应的键值对转载 2022-03-05 11:14:28 · 206 阅读 · 0 评论 -
i++与++i的区别
***i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2***package 剑指offer;public class test { public static void main(String[] args) { int i = 0; while(i<=10){ System.out.println原创 2022-03-03 12:16:18 · 180 阅读 · 0 评论 -
Day10
1 IP对应的哪个类的哪个对象? InetAdress实例化这个类的两种方式是?最常用的两个方法是?InetAdress 类注意的是InetAdress类不能实例化对象只能使用他的方法才能实例化对象。InetAddress.getByName(String Host) //Host 可以是IP地址 InetAddress.getlocalHost()//该方法可以获取本地的ip地址两个最常用的方法是?getHostName()//获得这个域名的名字 (域名送给DNS解析器,返回原创 2022-01-23 21:55:27 · 2986 阅读 · 0 评论