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