![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java学习
学习Java的笔记
还行turbo
turbochang@sina.com
展开
-
关于ffmpeg解决主流浏览器无法播放wmv、avi等格式视频问题(内附linux环境相关安装包nasm、yasm、x264等)
最近接到一个老项目,由于老项目之前适配的是ie浏览器。该老项目中有很多wmv和avi格式的视频。最近需要更换视频其他浏览器访问,需要对除ie浏览器的其他浏览器进行适配。ie浏览器播放视频没有任何问题,但是在主流浏览器中,无法识别<embed>标签,只支持<video>、<audio>标签,然而这些标签支持的视频格式为主流的mp4格式的视频。导致兼容性问题,无法播放,以及主流浏览器无法播放非mp4格式的视频。尝试了很多,查阅了很多资料,前端无法解决该问题,最后尝试使用后端来原创 2020-12-14 15:13:02 · 2238 阅读 · 2 评论 -
JAVA8的ConcurrentHashMap为什么放弃了分段锁
为什么不用ReentrantLock而用synchronized ?减少内存开销:如果使用ReentrantLock则需要节点继承AQS来获得同步支持,增加内存开销,而1.8中只有头节点需要进行同步。内部优化:synchronized则是JVM直接支持的,JVM能够在运行时作出相应的优化措施:锁粗化、锁消除、锁自旋等等。...原创 2020-09-16 12:49:19 · 910 阅读 · 0 评论 -
什么样的对象能当根节点 GC roots?
Java通过可达性分析来判断对象是否存活。基本思想是通过一系列称为“GC roots”的对象作为起始点,可以作为根节点的是:1、虚拟机栈(栈帧中的本地变量表)中引用的对象2、本地方法栈中JNI(即一般说的Native方法)引用的对象3、方法区中类静态属性引用的对象4、方法区中常量引用的对象作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量)中。虚拟机、本地方法栈这都是局部变量,某个方法执行完,某些局部使用的对象可以被回收。...原创 2020-09-16 12:21:42 · 1030 阅读 · 0 评论 -
Java泛型:泛型擦除详细介绍、泛型擦除的体现
泛型擦除Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。-----百度百科泛型擦除的体现通过以下代码来感受以下什么是泛型擦除:public class Erase { public static void main(String[] args) { // 创建两个不同泛型的list集合原创 2020-09-14 20:50:27 · 698 阅读 · 0 评论 -
Java 反射:反射概念、Class类生成内存分析、类加载过程、通过反射机制加载对象、反射获取泛型和注解
文章目录反射1、Reflection 反射概念2、Class类 JDK 1.1常用方法获取Class类实例的方法有Class对象的类型3、Class类生成的内存分析类加载器加载过程4、类的初始化时刻5、类加载器6、获取运行时类的对象,使用方法7、反射机制创建对象,设置属性8、普通方式与反射机制 性能 对比9、反射获取泛型10、反射获取注解信息反射Java不是动态语言,但Java可称之为“准动态语言”。即Java有一定的动态性,可利用反射机制获得类似动态语言的特性。Java的动态性让编程的时候更加灵活,原创 2020-05-27 22:53:04 · 266 阅读 · 3 评论 -
Java 注解:内置注解、4大元注解、自定义注解
文章目录注解 JDK 1.51、内置的一些注解2、元注解@Target@Retention@Document@Inherited3、自定义注解注解 JDK 1.5Annotation是从JDK1.5(Java 5 ,JDK 5)开始引入的新技术可通过反射机制去读取注解作用:不是程序本身,可对程序作出解释可被其他程序(比如:编译器等)读取格式:注解是以@注释名在代码中存在,还可以添加一些参数值,如:@SuppressWarnings(value="unchecked")1、原创 2020-05-27 22:46:37 · 210 阅读 · 0 评论 -
Java 方法引用:通过对象名、类名、super、this、类的构造器、数组的构造器引用
文章目录方法引用1、语法引用符2、通过对象名引用成员方法3、通过类名称引用静态方法4、通过super引用成员方法5、通过this引用成员方法6、类的构造器引用7、数组的构造器引用方法引用1、语法引用符双冒号::为引用运算符,而它所在的表达式被称为方法引用。如果Lambda要表达的函数方案已经存在于某个方法的实现中,那么则可通过双冒号来引用该方法作为Lambda的替代者。语义分析如:System.out对象中有一个重载的println方法,其中System.out是已经存在的对象,其中print原创 2020-05-27 22:35:02 · 330 阅读 · 0 评论 -
Java Stream流:forEach、filter、map、count、limit、skip、concat、综合案例
文章目录Stream流 JDK 1.8引言 :通过案例展示Stream流的作用1、流式思想2、Stream特点3、获取Stream流对象4、常用方法逐一处理:forEach过滤:filter映射:map统计个数:count取用前几个:limit跳过前几个:skip组合:concat练习:集合元素的处理Stream流 JDK 1.8说到Stream容易想到 IO Stream,而流不一定是IO流。在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类原创 2020-05-27 22:31:47 · 950 阅读 · 0 评论 -
Java 函数式接口:函数式编程、4大函数式接口、Supplier、Consumer、Predicate、Function
文章目录一、函数式接口1、概念定义2、@FunctionalInterface 注解3、自定义函数式接口二、函数式编程1、Lambda的延迟执行性能浪费的日志案例通过Lambda优化日志案例2、使用Lambda作为参数和返回值三、4大函数式接口 JDK 1.81、Supplier\ 接口练习:求数组元素中最大的数2、Consumer\ 接口练习:格式化打印信息3、Predicate\ 接口练习:集合信息的筛选4、Function一、函数式接口1、概念定义函数式接口在Java中是指:有且仅有一个抽象方原创 2020-05-27 22:26:23 · 344 阅读 · 0 评论 -
Java 线程03:对ThreadLocal类的理解与运用
文章目录ThreadLocal\ 类 JDK 1.2常用方法1、在Spring中的应用场景2、ThreadLocal运用3、源码分析ThreadLocal<T> 类 JDK 1.2java.lang.ThreadLocal<T> ThreadLocal类是为共享变量在每一个线程中创建一个副本,每个线程可以访问自己内部的副本变量。创建一个ThreadLocal类一定是私有的、静态的。常用方法public T get()获取副本中的valuepublic void原创 2020-05-27 21:16:24 · 104 阅读 · 0 评论 -
Java 线程02:线程生命周期、Object中唤醒等待机制、生产者与消费者问题、线程的正确停止、线程优先级、守护线程
文章目录一、线程状态1、线程状态(生命周期)概述2、Timed Waiting(计时等待)3、BLOCKED (阻塞状态)4、Waiting (无限等待状态)案例 顾客与老板包子5、Object类中的方法wait()与sleep()区别wait()和wait(long timeout)区别sleep()和sleep(long timeout)区别notify()和notifyAll()区别二、线程等待唤醒机制1、线程之间通信2、等待唤醒机制练习:生产者与消费者问题三、线程正确停止四、线程优先级五、守护(da原创 2020-05-27 19:38:14 · 238 阅读 · 0 评论 -
Java 线程01:并发并行、进程线程、3种线程创建、线程安全与锁对象
文章目录一、线程概念1、并发与并行2、线程与进程3、线程调度二、线程1、主线程2、多线程原理多线程内存原理run()与start() 区别3、Thread类构造方法常用方法练习:通过继承线程类,开启多线程下载网络图片4、Runable接口5、Thread类 与 Runnable接口 的区别6、匿名内部类实现线程创建7、Callable\ 接口三、线程安全1、线程安全2、线程同步1)同步代码块同步代码块的原理2)同步方法3)Lock 接口 JDK 1.5一、线程概念1、并发与并行并发:指两个或多个事原创 2020-05-27 19:30:01 · 296 阅读 · 0 评论 -
Java IO流之Properties类
文章目录Properties类 属性集与IO流结合1、构造方法2、常用方法Properties类 属性集与IO流结合java.util.Properties继承于Hashtable ,来表示一个持久的属性集。它使用简直结构存储数据,每一个键及其对应的值都是一个字符串。该类也被许多java类使用,比如获取系统属性,System.getProperties方法就是返回一个Properties对象。Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。唯一和IO流相原创 2020-05-27 16:13:57 · 126 阅读 · 0 评论 -
Java IO流之序列化与反序列化、打印流:ObjectOutputStream、ObjectInputStream、PrintStream
文章目录一、序列化和反序列化1、ObjectOutputStream 类常用构造方法特有的成员方法序列化操作 Serializable接口2、ObjectInputStream 类常用构造方法特有的成员方法3、InvalidException 序列号冲突异常4、transient与static练习:序列化集合二、打印流1、PrintStream 类常用构造方法2、更改System.out.println()的输出目的一、序列化和反序列化java提供了一种对象序列化的机制。用一个字节序列可以表示一个对象原创 2020-05-27 16:09:44 · 262 阅读 · 0 评论 -
Java IO流之转换流、异常捕获:InputStreamReader、OutputStreamWriter
文章目录一、转换流1、字符编码和字符集2、InputStreamReader 类构造方法3、OutputStreamWriter 类构造方法练习:转换文件编码二、IO流的异常捕获1、JDK 7之前使用try catch finally捕获异常2、JDK 7捕获异常新特性3、JDK 9捕获异常新特性一、转换流转换流是InputStreamReader、OutputStreamWriter,他们的父类分别是Reader、Writer。转换流的作用就是将字节按照指定的编码规则进行解码或编码。1、字符编码和原创 2020-05-27 15:59:56 · 591 阅读 · 0 评论 -
Java IO流之缓冲流:字节缓冲流BufferedOutputStream BufferedInputStream、字符缓冲流BufferedWriter、BufferedReader
文章目录缓冲流1、字节缓冲流构造方法2、字符缓冲流构造方法练习:文章段落排序缓冲流缓冲流在基础的字节流和字符流上做功能的增强,能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化。缓冲流也称高效流,是对四个基本的Filexxx流的增强,可分:字节缓冲流:BufferedOutputStream 、BufferedInputStream字符缓冲流:BufferedWriter 、BufferedReader缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区原创 2020-05-27 15:52:23 · 296 阅读 · 0 评论 -
Java IO流之字符流:Reader、FileReader、Writer、FileWriter
文章目录字符流字符输入流1、Reader 抽象类 JDK 1.1常用方法2、FileReader 类构造方法读取字符流字符输出流1、Writer 抽象类 JDK 1.1常用方法2、FileWriter 类构造方法flush() 和 close() 的区别字符流当使用字节流读取文本时,可能会有一个问题,就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能会占用多个字节存储。所以java提供了一些字符流类,以字符为单位读写数据,专门用于处理文本文件。字符输入流1、Reader 抽象类原创 2020-05-27 15:43:13 · 486 阅读 · 0 评论 -
Java IO流之字节流:OutputStream、FileOutputStream、InputStream、FileInputStream
文章目录JAVA IO流一、字节流字节输出流1、OutputStream 抽象类 JDK 1.0常用方法2、FileOutputStream 类构造方法( 共5个 )写出字节流数据追加续写与换行字节输入流1、InputStream 抽象类 JDK 1.0常用方法2、FileInputStream 类构造方法读取字节流练习:文件复制JAVA IO流Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做写出数据。根据数据的流向分为:输入流和输出流输原创 2020-05-27 15:38:40 · 644 阅读 · 0 评论 -
Java 迭代器:Iterator集合、Enumeration集合
文章目录迭代器1、Iterator\集合 接口 JDK 1.2常用方法2、Enumeration\ 集合 接口 JDK 1.0常用方法迭代器1、Iterator<E>集合 接口 JDK 1.2在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口也是Java集合的一员,但它与Collection、Map接口不同,该两集合主要用于存储元素,而Iterator主要用于迭代访问(遍历)Collection中的原创 2020-05-27 15:06:51 · 163 阅读 · 0 评论 -
Java 集合框架之Map集合:HashMap、LinkedHashMap、HashTable、TreeMap集合
文章目录MapMap<K,V> 集合框架 常用实现类java.util.Map<K,V> 双列集合接口 键值对K 和 V 都是泛型,根据传递进来的值的类型所决定特点:键唯一,值不唯一,但一个键必须对应一个值键和值的类型可相同也可不相同无序常用实现类:HashMap<K,V> 底层是Hash表(查询速度快)。 此实现提供了所有可选的地图操作,并允许null的值和null键。 ( HashMap类大致相当于Hashtable ,除了它是不同步的,并原创 2020-05-27 14:45:57 · 276 阅读 · 0 评论 -
Java 集合框架之Collection集合:List、ArrayList、LinkedList、Vector、Set、HashSet、LinkedHashSet、TreeSet集合
文章目录集合框架Collection集合框架 常用关系结构图1、Collection\ 接口集合 JDK 1.2常用方法2、List\ 接口集合 JDK 1.2常用方法 (特有)3、ArrayList\集合 JDK 1.2常用方法4、LinkedList\集合 JDK 1.2常用方法5、Vector\ 集合 JDK 1.06、Set\ 接口集合 JDK 1.2HashSet、LinkedHashSet、TreeSet底层 源码7、HashSet\ 集合 JDK 1.2HashSet存储数据的结构(哈希表)s原创 2020-05-27 14:13:17 · 275 阅读 · 0 评论 -
Java 泛型:概述、自定义泛型、泛型通配符、泛型上限下限
文章目录泛型 JDK51、泛型概述2、自定义泛型自定义泛型类含有泛型的方法含有泛型的接口3、泛型通配符4、泛型高级使用,上限下限泛型 JDK51、泛型概述是JDK 5的新特性(JDK 1.5)1)创建集合对象,可不使用泛型好处:集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据弊端:不安全,容易发生异常public static void mian(Stirng[] args){ ArrayList list = new ArrayList();原创 2020-05-27 14:00:26 · 199 阅读 · 0 评论 -
Java 常用类:Objects、包装类、String类、Date、DateFormat、Calendar类、Math类、File类、Enum类、System类
文章目录常用类1、Object类与Objects类Object类Objects类2、基本数据类型 包装类1)自动装箱、自动拆箱2)缓存源码分析3、String类 == 与 equals1)StringBuilder类与StringBuffer类StringBuilder类常用方法4、Date、DateFormat、SimpleDateFormat、Calendar、GregorianCalendar类1)Date类2)DateFormat抽象类、SimpleDateFormat类3)Calendar抽象类、原创 2020-05-27 13:50:40 · 165 阅读 · 0 评论 -
Java 异常机制:两种异常一错误、异常处理、自定义异常
文章目录异常机制1、两种类型的异常 一个错误2、异常体系结构面试问题3、异常处理5个关键字1)try、catch、finally 捕获异常2)throw、throws 声明异常4、自定义异常5、实际应用中关于异常的经验总结异常机制1、两种类型的异常 一个错误检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这...原创 2020-04-30 22:06:32 · 317 阅读 · 0 评论 -
Java OOP面向对象:对象内存分析、Static关键字、抽象类、接口、成员内部类、静态内部类、局部内部类、匿名内部类
感谢:bilibli主播 —— 狂神说Java这个博主的教学视频十分良心!超级赞!全栈Java的学习指导!链接:https://space.bilibili.com/95256449/video本博客是本人观看 狂神说Java 的Java课程所做的笔记文章目录面向对象编程OOP1、面向过程 & 面向对象2、类与对象的关系3、构造器(构造方法)详解4、创建对象内存分析5、OOP三大...原创 2020-04-30 21:33:19 · 223 阅读 · 0 评论 -
Java 数组:数组声明创建与初始化、数组内存分析、多维数组、冒泡排序、二分查找法
文章目录Java数组1、数组声明创建与初始化2、内存分析3、多维数组4、Arrays类5、冒泡排序 面试常遇见6、稀疏数组 重点 压缩数组7、二分查找法(折半查找法) 面试常见Java数组数组是相同类型数据的有序集合。每个数据称一个数组元素,每个元素可通过下标来进行访问。1、数组声明创建与初始化语法:dataType[] arrayRefVar; // 首选,推荐使用dataType...原创 2020-04-28 23:47:50 · 199 阅读 · 0 评论 -
Java 方法:方法定义、方法重载、命令行传承、可变参数、递归、静态方法和非静态方法
文章目录Java方法1、方法的定义return两个作用值传递与引用传递 很重要2、方法的重载笔试可能遇到3、命令行传参4、可变参数5、递归递归在java中的缺点6、静态方法和非静态方法静态方法和非静态方法的理解静态代码块 匿名代码块 构造器Java方法Java方法是语句的集合,它们在一起执行一个功能。设计方法的原则:方法本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保...原创 2020-04-28 23:42:22 · 172 阅读 · 0 评论 -
Java 流程控制、Scanner对象
文章目录Java流程控制1、Scanner对象next()与nextLine()的区别2、顺序结构3、选择结构1)if选择结构4)Switch选择结构 Switch与hashCode4、循环结构1)while循环2)do...while循环3)for循环九九乘法表4)foreach 增强for循环5)break、continue区别寻找质数,最优方法Java流程控制1、Scanner对象引...原创 2020-04-25 19:16:59 · 124 阅读 · 0 评论 -
Java命名方式、关键字、数据类型、类型转换、运算、JavaDoc
一、关键字标识符命名规则:所有的标识符都应该以字母(A-Z a-z),美元符($),下划线(_)开始首字符之后可以是字母,美元符,下划线或数字等其他合法字符组合不能使用关键字作为变量名或方法标识符是区分大小写的可以使用中文作为变量名,但一般不建议,也不建议使用拼音二、数据类型强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用弱类型语言要求变...原创 2020-04-24 21:55:08 · 148 阅读 · 0 评论 -
初识Java — 特性、3大版本、环境变量配置
初识Java一、Java特性优势与3大版本Java特性优势简单性、面向对象、可移植性、高性能、分布式、动态性、多线程、安全性、健壮性、跨平台性3大版本 ( 一个框架也可说一个规范 )JavaSE:标准版(桌面程序,控制台开发…)JavaME:嵌入式开发(手机,小家电…)JavaEE:企业级开发(Web端,服务器开发…)二、JDK,JRE,JVMJDK: Java Develop...原创 2020-04-23 22:05:49 · 386 阅读 · 0 评论 -
Java 面向对象编程OOP的三大特点
OOP三大特点OOP特点 重点1)封装性2)继承性类不能被继承的情况super详解 关于super的重点方法重写3)多态性 面试高频问题重点理解多态性instanceofOOP特点 重点1)封装性追求高内聚,低耦合。(耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素即是功能,对象,系统,子系统。模块。内聚更为专业的说法叫做功能内聚,是对系统中元素职责的相关性和集中度的量度。...原创 2020-02-09 19:03:05 · 343 阅读 · 0 评论 -
GC垃圾回收常用算法
引用计数算法假设有一个对象A,任何一个对象对A的引用,那么对象A的引用计数器+1,当引用消失时,对象A的引用计数器就-1,如果对象A的计数器的值为0,就说明对象A没有引用了,可以被回收。优点:实时性较高,无需等到内存不够的时候,才开始回收,运行时根据对象的计数器是否为0,就可以直接回收。在垃圾回收过程中,应用无需挂起。如果申请内存时,内存不足,则立刻报outofmember 错误。区域...原创 2020-03-12 12:15:49 · 174 阅读 · 0 评论