java
文章平均质量分 63
Ghost1590
这个作者很懒,什么都没留下…
展开
-
java 学习路线
学习路线我目前的情况学习的路线我目前的情况学校是末流 985 ,不是什么加分项。刷题情况:目前力扣 500 题,竞赛积分1900,这次面试和上次失败加起来4次题都是直接秒,练到这个程度就差不多了后端技术:按照尚硅谷的路线从今年 7 月份开始自学,但没局限在尚硅谷的视频,我这里列一下我学过的课。(1)尚硅谷:javase ,mysql初级,jdbc, javaweb,框架ssm,mysql 高级,redis(2)黑马:并发编程,JVM(这两个一定要看黑马,讲的很深入),SpringBoot(3原创 2021-11-23 20:38:36 · 1854 阅读 · 8 评论 -
JVM 学习笔记 一 JVM 内存结构 垃圾回收
JVM 学习笔记 一JVM 内存结构StringTable 串池直接内存垃圾回收如何判断对象是否应该被垃圾回收五种引用垃圾回收算法JVM 内存结构线程独占的(1)程序计数器 PC(2)虚拟机栈:线程运行需要的内存空间,其中是一个一个栈帧。栈帧是每个方法运行时需要的内存,当前正在执行的方法对应的栈帧叫做活动栈帧。(3)本地方法栈:调用到本地方法时对应的内存空间。线程共享的(1)堆:主要存放 new 出来的对象。(2)方法区:一种规范,逻辑上属于堆内存,但也可以不在其中。1.6实现为永久代;1原创 2021-11-01 22:36:35 · 133 阅读 · 0 评论 -
并发编程学习笔记 二 park/unpark
并发编程学习笔记 二park / unpark 原理java 线程状态之间的相互转换死锁 活锁 饥饿ReentrantLock 可重入锁JMMvolatile 的原理乐观锁park / unpark 原理每个线程都有自己的一个 Parker 对象,由三部分组成 _counter , _cond 和 _mutex(1)当线程调用 park 方法时,会检查 counter 是不是为 0 ,若为 0 ,则获得 mutex 互斥锁,进入 cond 条件变量等待。设置 counter=0 。若为 1 ,则不阻塞原创 2021-10-30 20:32:16 · 127 阅读 · 0 评论 -
并发编程学习笔记 一 线程中断 两阶段终止模式 线程状态 synchronized原理
并发编程学习笔记 day01线程中断线程的状态线程中断两种 interrupt() 方法执行情况:当被中断的线程正处于 sleep join wait 状态在执行 thread.interrupt() 后,都会终止线程的阻塞状态,但是不会将该线程的中断标志为置为 true。当被中断的线程正处于正常运行的状态时在执行 thread.interrupt() 后,并不会立即终止该线程的执行,而是会先将该线程的中断标志为置为 true,当该线程内部检测到中断标志为改变时,可以选择先去料理后事(如释放锁原创 2021-10-15 22:00:02 · 183 阅读 · 0 评论 -
JDBC 学习笔记 day03 数据库事务 隔离级别 druid连接池 dbutils 工具类
JDBC 学习笔记 day03数据库事务事务的ACID属性数据库的并发问题四种隔离级别数据库连接池 (常用 druid(德鲁伊))Apache-DBUtils 工具类数据库事务事务的定义:一组逻辑操作单元,使数据从一种状态变换到另一种状态。事务处理原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务 回滚(rollback原创 2021-08-11 22:01:30 · 504 阅读 · 0 评论 -
JDBC 学习笔记 day02 用 PreparedStatement 实现 CRUD 操作
JDBC 学习笔记 day02PreparedStatement相比于 Statement 的好处PreparedStatement 实现 增,删,改 操作PreparedStatement 实现查询操作改进一:通过反射技术实现对一张表的通用查询改进二:通过泛型实现对任意表的通用查询PreparedStatement 实现对 Blob 类型操作PreparedStatement相比于 Statement 的好处解决了 Statement 的 SQL 注入问题PreparedStatement 能操原创 2021-08-10 21:30:14 · 113 阅读 · 0 评论 -
JDBC 学习笔记 day01 获取数据库连接
JDBC 学习笔记 day01获取数据库连接获取数据库连接说明:如下的多种方法,是以迭代的形式给出的,实际使用中只需记住最后一种方式,但了解迭代的过程也是很重要的。@Test //方式一: public void test() throws Exception { //1.获取 Driver 类的实现类对象 String driver = "com.mysql.cj.jdbc.Driver"; Class clazz = Class.fo原创 2021-08-09 21:02:58 · 91 阅读 · 1 评论 -
javaSE基础学习笔记 day22 JDK 8.0新特性 Lambda表达式 方法引用 Stream API
javaSE基础学习笔记 day22Lambda 表达式函数式接口方法引用Stream API创建 Stream 的方式Stream 的中间操作Stream 的终止操作Lambda 表达式格式:-> :Lambda 操作符左边:Lambda 形参列表(就是接口中抽象方法的形参列表)右边:Lambda 体(就是重写抽象方法的方法体)具体使用总结① 左边:参数类型可以省略(类型推断),如果左边只有一个参数,则“()”可以省略。② 右边:使用“{}”包住方法体,如果只有一条语句(可能是 r原创 2021-08-03 21:52:20 · 169 阅读 · 0 评论 -
javaSE基础学习笔记 day21 反射
javaSE基础学习笔记 day21反射关于 java.lang.Class 类的理解获取 Class 类的实例的方式了解 ClassLoader反射在反射前,如果想要操作类的属性需要:① new 一个该类的对象②通过对象调用属性或方法,在类的外部无法通过对象调用其内部的私有结构。简介:Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。关于 java.lang.Cl原创 2021-08-02 23:43:48 · 136 阅读 · 0 评论 -
javaSE基础学习笔记 day20 IO流续 网络编程
javaSE基础学习笔记 day20IO流续ObjectInputStream / ObjectOuputStreamRandomAccessFile 随机存取文件流网络编程通信要素一:IP地址和端口号通信要素二:网络通信协议 TCP / UDPIO流续ObjectInputStream / ObjectOuputStream简介:用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。要想一个对象是可序列化的,需满足以下要求原创 2021-07-31 20:48:28 · 157 阅读 · 0 评论 -
javaSE基础学习笔记 day19 IO流
javaSE基础学习笔记 day19IO流FileInputStream / FileOutputStream / FileReader / FileWriterBufferedInputStream / BufferedOutputStream / BufferedReader / BufferedWriterInputStreamReader / OutputStreamWriterIO流流的分类① 按操作数据单位不同分为:字节流(8 bit) 字符流(16 bit)。② 按数据流向不同分为:原创 2021-07-30 22:22:35 · 155 阅读 · 0 评论 -
javaSE基础学习笔记 day1 JDK JRE 文档注释
javaSE基础学习笔记 day1基础DOS命令JDK与JRE文档注释(java特有)编译与执行的过程基础DOS命令md:创建文件夹(同linux的mkdir)cd:进入某目录(同linux的cd,这里可以用cd\到根目录)dir:显示当前目录文件(同linux的ls)del:删除文件(同 rm)rd:删除目录(同redir,注意不可以删除非空目录)JDK与JREJDK = JRE + java开发工具集(javac.exe, java.exe, javadoc.exe)JRE (运行时环原创 2021-07-09 23:57:29 · 120 阅读 · 0 评论 -
javaSE基础学习笔记 day02 命名规范 变量
java命名规范包名:多单词组成的名字,所有的字符都要小写。例:xxxyyyzzz类名与接口名:多单词组成的名字,所有单词首字母大小写例:XxxYyyZzz变量名与方法名:多单词组成的名字,第一个小写,后面单词的首字母大写。例:xxxYyyZzz变量类型与定义变量必须先声明赋值后再使用。声明 long 类型时,变量值必须以“l”或“L”结尾,声明 float 类型时,变量值必须以“f”或“F”结尾。基础运算char, short, byte 三者再运算时的结果均为 int 型Str原创 2021-07-10 16:43:43 · 151 阅读 · 0 评论 -
javaSE基础学习笔记 day03 数组 Arrays 工具类
javaSE基础学习笔记 day03基础数据类型与引用数据类型数组定义以及初始化Arrays工具类数组常见异常基础数据类型与引用数据类型基础数据类型: int char double引用数据类型: 数组 String注意:引用数据类型的值,要么是null,要么是地址。数组定义以及初始化格式://静态初始化int[] ids;ids = new int[]{1, 2, 3};//动态初始化String[] names = new String[5];数组元素默认初始化的值:整型:0原创 2021-07-11 20:31:56 · 137 阅读 · 0 评论 -
javaSE基础学习笔记 day04 权限修饰 匿名对象 可变个数形参
javaSE基础学习笔记 day04成员变量与局部变量的初始化JVM内存结构匿名对象可变形参个数的方法(JDK5.0新特性)四种权限修饰符的作用范围javaBeanthis的特殊用法成员变量与局部变量的初始化成员变量:根据其类型,均有默认的初始化值。(与数组的默认初始化值相同)局部变量:没有默认的初始化值,使用前必须显示的赋值。JVM内存结构虚拟机栈:即平时提到的栈,局部变量存放在其中。堆:将 new 出来的结构(比如数组,对象),加载到堆空间中。对象的属性(非 static )的,也加载在堆原创 2021-07-12 22:01:40 · 77 阅读 · 0 评论 -
javaSE基础学习笔记 day05 重写与子类实例化过程
javaSE基础学习笔记 day05方法重写(OverWrite)子类实例化的过程方法重写(OverWrite)1.子类重写的方法的方法名和形参列表与父类被重写的方法完全相同。2.子类重写的方法的权限修饰符不小于父类被重写的方法的的权限修饰符。3.父类被重写的方法的返回值类型为 void 时,则子类重写的方法返回值必须时 void,父类被重写的方法返回值如果是A类型,则子类重写的方法返回值可以是A类型或A的子类,父类被重写的方法返回值如果是基本数据类型,则子类重写的方法返回值也必须是同一类型。原创 2021-07-14 19:04:56 · 90 阅读 · 0 评论 -
javaSE基础学习笔记 day06 Object类与包装类
javaSE基础学习笔记 day06向上转型与向下转型Object类的使用包装类的使用向上转型与向下转型向上转型: 子类型的引用赋值给父类型的引用(多态的实现方法)向下转型:父类型引用赋值给子类型引用。注意:为了必变在强制类型转换时发生异常,需要用 a instanceof A 判断对象 a 是否为 A 的实例(当 a instanceof A 返回 true 时,则 A 的父类也可以返回true)。Object类的使用boolean equals(Object obj) // 判断当前对象原创 2021-07-14 21:46:39 · 92 阅读 · 0 评论 -
javaSE基础学习笔记 day07 单例设计模式 代码块
javaSE基础学习笔记 day07单例设计模式代码块final关键字单例设计模式对于某个类,只能存在一个对象实例,具体实现方式有以下两种。饿汉式(在开始时就把对象创建好)class Bank{//1.私有化类的构造器(防止外部调用构造器创建多个对象) private Bank(){}//2.只在类的内部创建对象,此对象必须是static的 private static Bank instance = new Bank();//3.提供公共的静态方法,以返回对象的引用 public原创 2021-07-16 22:00:14 · 102 阅读 · 0 评论 -
javaSE基础学习笔记 day08 匿名类 接口
javaSE基础学习笔记 day08匿名类接口JDK8中接口的新特性匿名类与匿名对象一样,只是为了省事。如何创建一个匿名子类的对象?Person p = new Person(){ //如果Person中有抽象的方法,要在此内重写。};接口在 java 中,接口用 interface 来定义。java中接口与类时两个并列的结构。如何定义接口:定义接口内的成员。在 JDK7 及之前,接口内只能有全局常量(public static final)和抽象方法(public abstrac原创 2021-07-17 21:05:45 · 132 阅读 · 0 评论 -
javaSE基础学习笔记 day10 异常
javaSE基础学习笔记 day10异常处理:抓抛模型异常的分类用户自定义异常类异常处理:抓抛模型1.抛:程序在正常执行过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出,抛出对象后,其后的代码不再执行。关于异常对象的产生:①系统自动生成的对象②手动生成的对象,并抛出(throw)。例:throw new XxxExcepetion();2.抓:异常的处理方式①try-catch-finallytry{ //可能出现异常的代码块}catch(异常类型1 变量原创 2021-07-18 22:45:29 · 149 阅读 · 0 评论 -
javaSE基础学习笔记 day11 线程的创建 Thread类常用方法
javaSE基础学习笔记 day11线程的创建Thread类常用方法线程的创建继承 Thread 类①创建一个继承 Thread 类的子类。②重写 run() 方法。③创建一个该子类的对象。④通过该对象调用 start() 方法。public class Main { public static void main(String[] args){ ThreadTest t1 = new ThreadTest(); t1.start(); }}class ThreadTest原创 2021-07-21 17:29:24 · 76 阅读 · 0 评论 -
javaSE基础学习笔记 day12 线程创建的其他方法 线程安全 线程通信
javaSE基础学习笔记 day12解决线程安全的方式线程通信JDK5.0新增的线程创建方式解决线程安全的方式同步代码块同步监测器:俗称“锁”,任何一个类的对象都可以充当锁。要求:多个线程必须共用一把锁,才能达到同步的效果。synchronized(同步监测器){ //需要被同步的代码(操作共享数据的代码)}同步方法如果操作的共享数据的代码刚好在完整的一个方法中,则可以将这个方法声明为 synchronized 的,表面该方法为同步方法。注意:非静态同步方法的同步监测器默认为原创 2021-07-22 22:28:01 · 108 阅读 · 0 评论 -
javaSE基础学习笔记 day13 String StringBuffer StringBuilder Date类
javaSE基础学习笔记 day13Stirng类Stirng类常用方法String 与 char[] 和 byte[] 之间的转换StringBuffer与StringBuilderDate类Stirng类String 是 final 的,不可被继承。实现了 Serilizable 接口(支持序列化)和 Comparable (可比较大小)。内部定义了 final char[] value 用于存储字符串。String:代表了不可变的字符序列,体现了不可变性。①当 String 型对象被重新原创 2021-07-23 21:31:37 · 156 阅读 · 0 评论 -
javaSE基础学习笔记 day14 日期API续 实现对象比较的两个接口
javaSE基础学习笔记 day14日期相关的API实现对象间比较的两个接口日期相关的APISimpleDateFormat对 Date 类的格式化和解析① 格式化:日期类对象–>字符串,调用 format() 方法。② 解析:格式化操作的逆,字符串–>日期类对象,调用 parse() 方法。Calendar 日期类① getTime():取得当前对象时间戳。② setTime():设置当前对象时间戳。LocalTime LocalDate LocalDateTime ---原创 2021-07-24 18:56:22 · 80 阅读 · 0 评论 -
javaSE基础学习笔记 day15 枚举类 注解
javaSE基础学习笔记 day15枚举类如何定义枚举类Enum类中的常用方法使用 enum 关键字定义枚举类实现接口的情况注解(Annotation):JDK5.0新增枚举类背景: 一个类的对象只有有限个,确定的,如星期,季节。如需定义一组常量时,则优先考虑定义枚举类。如何定义枚举类JDK5.0 之前,自定义枚举类class Season { //1.声明对象的属性,为 private final的 private final String seasonName; //2.私有原创 2021-07-26 19:05:12 · 107 阅读 · 0 评论 -
javaSE基础学习笔记 day16 Collection List Set 接口 以及相关实现类
javaSE基础学习笔记 day16Collection 接口中的常用方法Iterator接口常用方法List接口以及其实现类ArrayListLinkedListVectorSet接口HashSetLinkedHashSetTreeSetCollection 接口中的常用方法添加:①add(Object obj);②addAll(Collection coll);获取有效元素的个数:int size();清空集合: void clear();是否是空集合:boolean isEmpty()原创 2021-07-27 22:15:11 · 91 阅读 · 0 评论 -
javaSE基础学习笔记 day17 Map接口以及其实现类 Collections工具类
javaSE基础学习笔记 day17Map接口中的常用方法HashMap实现类LinkedHashMap实现类TreeMap实现类Properties实现类Collections工具类Map接口中的常用方法Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中void putAll(Map m):将m中的所有key-value对存放到当前map中Object remove(Object key):移除指定key的key-va原创 2021-07-28 22:41:16 · 113 阅读 · 0 评论 -
javaSE基础学习笔记 day18 泛型 通配符 File类
javaSE基础学习笔记 day18泛型 (JDK 5.0新特性)泛型类 接口泛型方法泛型在继承方面的体现通配符的使用:?File 类及其使用。泛型 (JDK 5.0新特性)在集合中使用泛型:集合接口或集合类在 JDK 5.0 时都修改为带泛型的结构。在实例化集合时,可指明具体的的泛型类型。指明类型后,在集合接口或集合类中凡是定义的类或接口时,内部结构(如方法,属性,构造器)使用到泛型的位置,都指为实例化时指定的泛型类型。泛型类型必须是类,基本数据类型用包装类来代替。若不指定泛型类型,则默认原创 2021-07-29 21:12:23 · 223 阅读 · 0 评论