- 博客(25)
- 收藏
- 关注
原创 Synchronized 和Lock区别
Synchronized 和Lock区别 1.Synchronized是内置的java关键字,Lock是一个java类 2.Synchronized无法判断获取锁的状态,Lock可以判断是否获取到了锁 3.Synchronized会自动释放锁,lock必须要手动释放锁,不然会死锁 4.Synchronized线程1(获得锁,阻塞),线程2(等待,一直等):Lock锁就不一定会等待下去 5.Synchronized可重入锁,不可以终端,非公平锁;Lock,可重入锁,是够公平可以自己设置,默认非公平,在()加上
2020-10-16 14:54:03
164
原创 sleep和wait的区别
sleep和wait的区别 1.来自不同的类 wait=>Object sleep=>Thread 2.关于锁的释放 wait会释放锁,sleep睡觉了,抱着锁睡觉,不会释放! 3.使用的方位是不同的 wait必须在同步代码块中使用 sleep可以在任何地方使用 4.是否需要捕获异常 wait不需要捕获异常 sleep需要捕获异常 ...
2020-10-15 15:06:21
200
原创 什么时候会发生类初始化
什么时候会发生类初始化 类的主动引用(一定会发生类的初始化) 当虚拟机启动,先初始化main方法所在的类 new一个类的对象 调用类的静态成员(除了final常量)和静态方法 使用java.lang.reflect包的方法对类进行反射调用 当初始化一个类,如果其父类没有被初始化,则会先初始化它的父类 类的被动引用(不会发生类的初始化) 当访问一个静态域时,只有真正声明这个域的类才会被初始化.如:当通过子类调用父类的静态变量,不会导致子类初始化 通过数组定义类引用,不会触发此类的初始化 引用常量不会
2020-10-10 09:46:01
378
原创 类的加载与ClassLoader的理解
类的加载与ClassLoader的理解 加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象. 链接:将Java类的二进制代码合并到JVM的运行状态之中的过程. 验证:确保加载的类信息符合JVM规范,没有安全方面的问题 准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配. 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程. 初始化:
2020-10-09 14:57:11
191
原创 获取Class类的实例
获取Class类的实例 若已知具体的类,通过类的class属性获取,该方法最为安全可靠,程序性能最高. Class clazz = Person.class; 已知某个类的实例,调用该实例的getClass()方法获取Class对象 Class clazz = person.getClass(); 已知一个类的全类名,且该类在类路径下,可通过Class类的静态方法forName()获取,可能抛出空指针异常 Class clazz = class.forName("demo01.Stude
2020-10-09 14:56:30
210
原创 元注解
元注解 @Target:表示我们的注解可以用在哪些地方 //表示该注解只能使用在类和方法上 @Target(value = {ElementType.Method,ElementType.Type}) @Retention 表示我们的注解在什么地方还有效 //runtime(运行时,编译时,源码时有效)>class(编译时,源码时有效)>source(只在源码时有效) @Retention (value = RetentionPolicy.RUNTIME ) @Documented
2020-09-29 09:49:10
271
原创 转换流InputStreamReader&&OutputStreamWriter
转换流InputStreamReader&&OutputStreamWriter InputStreamReader(转换输入流)继承自Reader: 创建InputStreamReader对象,构造方法中传递字节输出流(FileInputStream)和指定的编码表名称 //编码表不一致会导致乱码 使用InputStreamReader对象中的方法read读取文件 释放资源 //1.创建InputStreamReader对象,构造方法中传递字节输出流和指定的编码表名称 InputSt
2020-09-24 11:35:37
288
转载 Jquery Validate用法简介
转自:https://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html 一导入js库 二、默认校验规则 (1)required:true 必输字段 (2)remote:“check.php” 使用ajax方法调用check.php验证输入值 (3)email:true 必须输入正确格式的电子邮件 (4)url:true
2020-09-23 16:06:13
838
原创 IO流
IO流 字节输出流的使用步骤: 内存–>硬盘 java程序–>JVM虚拟机–>OS操作系统–>OS写入数据的方法–>写入数据 创建一个FileOutputStream对象,构造方法中传递写入数据的目的地 调用FileOutputStream对象中的方法write,吧数据写入到文件中 释放资源 public class DemoFileOutputStream { public static void main(String[] args) t
2020-09-22 14:43:51
124
原创 如何利用IO流复制文件
如何利用IO流复制文件 文件复制的步骤: 创建一个字节输入流对象,构造方法中绑定要读取的数据源 创建一个字节输出流对象,构造方法中绑定要写入的目的地 使用字节输入流对象中的方法read读取文件 使用字节输出流的中的方法write,把读取到的字节写入到目的地的文件中 释放资源 public class Demo01CopyFile { public static void main(String[] args) throws IOException { //1.创建一个字节输入
2020-09-22 14:43:02
313
原创 Lambda表达式
Lambda表达式 使用前提: 使用Lambda必须具有接口,切要求接口中有且仅有一个抽象方法 使用Lambda必须具有上下文推断.也就是方法的参数活局部变量必须为Lambda对应的接口类型才能使用Lambda作为该接口的实例. Lambda表达式课省略的内容: (参数列表):括号中参数列表的数据类型,可以省略不写 (参数列表):括号中的参数如果只有一个,那么类型和()都可以省略 {代码块}:如果{}中的代码只有一行,无论是否有方绘制,都可以省略({},return,分号) 注意:要省略{},r
2020-09-21 09:53:58
130
原创 Lambda表达式的标准格式
Lambda表达式的标准格式 有三部分组成: 1. 一些参数 2. 一个箭头 3. 一段代码 格式:(参数列表) -> {一些重写方法的代码} ():接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号分割 ->:传递,把参数传递给方法体{} {}:重写接口的抽象方法的方法体 public class DemoLambda{ public static void main(String[] args) { //使用匿名内部类的方式实现多线程
2020-09-17 11:00:14
214
原创 线程池的使用步骤
线程池的使用步骤 使用线程池的工厂类Executors里面提供的静态方法newFixedThreadPool生产一个指定线程数量的线程池 创建一个类,实现Runnable接口,重写run方法,设置线程任务 调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法 调用ExecutorService中的方法shutdown销毁线程池(不建议执行) public class ThreadPool{ public static void main(Str
2020-09-17 09:53:31
2922
原创 位运算
位运算 A = 0011 1100 B = 0000 1101 A&B = 0000 1100 全部为1才为1,否则为0 A|B = 0011 1101 只要有一个为1,结果为1,否则为0 A^B = 0011 0001 相同为0,不相同为1 ~B = 1111 0011 取A&B得值的反 2*8 4个2相乘 || <<等比于乘2 >>等比于/2 2<<3 int a = 10; in
2020-09-16 15:31:38
140
原创 如何在cmd运行java程序
如何在cmd运行java程序 先找到程序所在的文件夹,Show in Explorer,在上面地址栏最前面输入cmd空格进入cmd窗口,窗口中输入javac 名称.java,再输入java 名称。
2020-09-16 15:31:06
419
原创 如何用javadoc生成java帮助文档
如何用javadoc生成java帮助文档 找到要生成帮助文档的.java文件位置,在地址栏最前面输入cmd+空格,打开doc窗口。 先输入javac+空格 文件名+.java,生成.class文件 输入java+空格,文件名 输入:javadoc -encoding UTF-8 -charset UTF-8 文件名.java 然后在文件夹内打开index.html帮助文档 ...
2020-09-16 15:28:50
188
原创 匿名、静态代码块
匿名、静态代码块 Public class Person{ //2 { System.out.println("匿名代码块"); } //1 static{ System.out.println("静态代码块"); } //3 public Person(){ System.out.println("构造方法"); } } 执行顺序:静态代码块–>匿名代码块–>构造方法 静态代码块只会执行一次。 ...
2020-09-16 15:28:29
180
原创 类型转化
类型转化 低----------------------------------------------->高 byte,short,char->int->long->float->double 强制装换 高–>低 自动装换 低–>高 变量作用域 类变量:方法外面,类里面,static修饰。 实例变量:方法外面,类里面。 局部变量:定义在方法里面。 ...
2020-09-16 15:27:47
123
原创 进制
进制 二进制 0b 八进制 0 十进制 十六进制 0x char底层原理 u0000-uffff char c3 = ‘\u00ff’; 尽量避免使用浮点数进行比较 float:有限 离散 四舍五入 接近但不等于
2020-09-16 15:25:31
97
原创 多态
多态 多态是方法的多态,属性没有多态 存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1 = new Son(); Person 父类 Student 子类 Student s1 = new Student (); Person s2 = new Student (); Student能掉用的方法都是自己的或者继承父类的! Person父类型,可以指向子类,但是不能调用子类独有方法! ...
2020-09-16 15:24:53
59
原创 解决线程安全的三个方法
解决线程安全的三个方法 同步代码块 Obj obj = new Obj(); synchronized(obj){ //代码块 可能会阐释线程安全问题的代码 } 当线程1进入到synchronized,他先会判断是否有锁(obj)对象,如果有,会拿走锁(obj)并且进入到代码块.此时如果线程2进到synchronized,会发现没有锁(obj)对象,该线程就会进入到阻塞状态.等到线程1执行完代码块的内容,线程1就会释放锁(obj),线程2拿到锁(obj)对象就会
2020-09-16 15:24:12
213
原创 多线程
多线程 并发:交替进行 并行:同时进行 创建多线程: 创建一个继承Thread类的类 重写Thread类中的run()方法 创建一个调用Thread类的对象,调用start()方法 创建一个Runnable接口的实现类 在实现类中重写Runnable接口的run方法,设置线程任务 创建一个Runnable接口的实现类对象 穿件Thread类对象,构造方法中传递Runnable接口的实现类对象 调用Thread类中的start方法,开启心得线程执行run方法 实现Runna
2020-09-16 15:23:23
91
原创 安装卸载jdk
卸载JDK 删除JDK的安装目录 删除JAVA_HOME 产出path下关于java的目录 java -version 安装JDK 百度搜索JDK8,找到下载地址 下载电脑对应版本 双击安装JDK 记住安装路径 配置环境变量 我的电脑–>右键–>属性 环境变量–>JAVA_HOME 配置path变量 java -version ...
2020-09-16 15:22:03
178
1
原创 MarkDown学习
MarkDown学习 #+空格 二级标题 三级标题 四级标题 字体 Hello,World! Hello,World! Hello,World! Hello,World! 引用 java是世界上最受欢迎的语言之一 大于号+空格 分割线 三减号或者三星号 图片 超链接 点击跳转到博客园 列表 1顿号空格–有序列表 a c -空格–无序列表 a b c 表格 名字 性别 生日 张三 男 1997.1.1 代码 public ...
2020-09-03 10:49:35
86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅