![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 74
Static Final
青春没有对与错,只有愿不愿意,值不值得!
展开
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1].方法一:暴...原创 2019-08-05 21:28:43 · 845 阅读 · 0 评论 -
JAVA类集---------5
3.资源文件操作(了解)Properties类资源文件内容都是k-v格式,并且无论key,value都是String类型设置属性:public synchronized Object setProperty(String key, String value) 取得属性:public String getProperty(String key)若没有指定key,返回null...原创 2019-07-09 15:14:18 · 69 阅读 · 0 评论 -
Java类集---------4
五. Map集合Map接口是JAVA中保存二元偶对象(键值对)的最顶层接口Collection是保存单个对象的接口public interface Map<K,V> Key 值唯一,通过一个key 值一定能唯一找到一个value值(一个账号对应唯一的一个密码)Map接口核心方法:import java.util.*;public class...原创 2019-07-09 13:10:47 · 107 阅读 · 0 评论 -
JavaIO--------3
3.转换流:将字节流转为字符流转换流用于将底层的字节流转为字符流供子类使用OutputStreamWriter:将字节输出流-->字符输出流InputStreamReader:将字节输入流-->字符输入流重点:通过程序进行文件拷贝import javax.sound.midi.Soundbank;import java.io.*;public class wl...原创 2019-06-24 21:51:28 · 104 阅读 · 0 评论 -
Java类集----------3
四. 集合输出(迭代器输出)--Iterator接口迭代器:为了遍历集合而生--------迭代器模式Iterator接口两个核心方法:public boolean hasNext():判断是否还有元素String next() :取得下一个元素代码如下:import java.util.*;public class wl {public static vo...原创 2019-07-08 16:28:01 · 79 阅读 · 0 评论 -
Java类集--------2
Set接口:不允许数据重复Set接口没有扩充方法Set接口常用子类HashSet(无序存储)底层使用哈希表+红黑树 允许存放nullTreeSet(有序存储):底层使用红黑树 不允许出现空值 自定义类要想保存到TreeSet中,要么实现Comparable接口,要么向TreeSet传入比较器(Comparator)Comparable接口与Compa...原创 2019-07-08 13:46:35 · 78 阅读 · 0 评论 -
ArrayList,Vector,LinkedList的区别
1.出现版本:ArrayList是从JDK1.2提供的,而Vector是从JDK1.0就提供了(出现在List,collection接口之前)2.初始化策略区别Vector在无参构造执行后将对象数组大小初始化为10ArrayList采用懒加载策略。在构造方法阶段并不初始化对象数组,在第一次添加元素时才初始化对象数组大小为103.扩容策略ArrayList扩...原创 2019-06-26 20:23:37 · 92 阅读 · 0 评论 -
Java类集--------1
JAVA类集(数据结构+多线程)在java.util.*;--动态数组(当元素个数达到最大值时,动态增加容量)JAVA类集产生-JDK1.2动态数组:解决数组定长问题1.2 Collection接口:单个对象保存的最顶层父接口单个对象保存:Collection接口以及其子接口,在每次数据操作时只能够对单个对象进行处理.(泛型就是为了类集而服务的)泛型:避免了...原创 2019-06-25 19:56:52 · 100 阅读 · 0 评论 -
JavaIO------2
字节流与字符流流的分类字节流:(byte)InputStream、OutputStream字符流:(char)Reader、Writer字节流与字符流操作的本质区别只有一个:字节流是原生的操作,而字符流是经过处理后的操作。注意:在进行文本文件,图像,音乐,视频,网络数据传输、磁盘数据,保存,所支持的数据类型只有:字节。而所有磁盘中的数据必须先读取到内存后才能进...原创 2019-06-21 20:52:44 · 100 阅读 · 0 评论 -
JavaIO------1
JAVAIO:BIO(阻塞式IO)-基于抽象类核心五个类(file,outputstream(字节的输出流),、InputStream、Reader(字符输入流)、Writer)一个接口(Serializable)File文件操作类-JAVA.IO包中,file类时唯一一个与文件本身操作(创建,删除,取得信息)有关,与文件内容无关的程序类1.1file类(即可描述真实文件,...原创 2019-06-21 19:51:24 · 204 阅读 · 0 评论 -
反 射1------JAVA
JAVA反射(没有反射就没有JAVA-EE框架)1认识反射反射指的是对象的反向处理,根据对象倒退类的组成。反射核心处理在于Object类的一个方法:取得类的class对象public final native Class<?> getClass()class类描述个各类的组成(类,构造方法,普通方法,普通属性)1.2 Class类对象的三种实...原创 2019-06-10 21:31:11 · 103 阅读 · 0 评论 -
多线程第十四旅
9. 线程池《JUC包下》-----面试重点1.使用线程池的三个优点如下:(1.省资源2.提速度3.好管理) 1. 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁带来的消耗。 2. 提高响应速度:当任务到达时,任务可以不需要等待线程创建就能立即执行。 3. 提高线程的可管理性:使用线程池可以统一进行线程分...原创 2019-06-10 16:28:22 · 174 阅读 · 0 评论 -
多线程第九旅
8. Lock体系:是 JAVA语言自己实现的 sync是调用JVM的monitor指令 AQS (同步器) ReentrantLock() //可重入锁 ReentReadWriteLock() //可重入读写锁 ...原创 2019-06-03 21:12:45 · 139 阅读 · 0 评论 -
反 射 3----JAVA
4.ClassLoader类加载器(发 生在JVM 一个进程中)Classpath:类加载路径4.1认识ClassLoader(启动,扩展,应用程序)类加载定义:通过一个类的全名称来获取此类的二进制字节流类加载器:类加载这个动作放在Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称之为"类加载器".4.2 JDK中内置的三大类加...原创 2019-06-14 14:32:44 · 106 阅读 · 0 评论 -
多线程第十三旅
4.condition接口的await与signal等待/通知机制wait,notify,必须在同步代码块和同步方法中使用4.1 Object的wait,notify方法是与内建锁(对象监视器monitor)搭配使用完成线程的等待与通知机制,属于jvm底层实现4.2而Condition的await与signal是与Lock体系配合实现线程的等待与通知,属于java语言级...原创 2019-06-08 11:24:12 · 152 阅读 · 0 评论 -
序列化与反序列化
序列化:概念:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。(将对象流变为二进制流)要想让类支持序列化,必须实现Serializable接口Serializable接口为标识接口,只有实现了Serializable接口的类才具备对象序列化的能力具体实现序列化与反序列化,需要使用java.io包中提供有两个处理类:序列化:ObjectO...原创 2019-07-09 17:45:05 · 137 阅读 · 0 评论 -
深浅拷贝-------JAVA
1.深浅拷贝(对象)Cloneable:CloneNotSupportedException只有子类实现了Cloneable接口后才可以使用Object类提供的clone方法protected native Object clone() throws CloneNotSupportedException;要想让对象具有拷贝的功能,必须实现Cloneable接口(标...原创 2019-07-09 18:44:34 · 99 阅读 · 0 评论 -
聊天宝(升级版)
package Chat;import java.io.IOException;import java.io.PrintStream;import java.io.UnsupportedEncodingException;import java.net.ServerSocket;import java.net.Socket;import java.util.Iterator;im...原创 2019-07-31 18:18:22 · 403 阅读 · 0 评论 -
Java实现--------输入年月日,输出这一天是这一年的第几天
方法1:package Chat;import java.util.Scanner;public class Test {public static void main(String[] args) { Scanner in = new Scanner (System.in); System.out.println("请输入年月日"); ...原创 2019-07-21 20:42:16 · 4624 阅读 · 0 评论 -
juc包下四大常用工具类
1.闭锁CountDownLatchpublic CountDownLatch(int count):需要等待的线程个数public void countDown() : 等待的计数器减一public void await() throws InterruptedException:调用await方法的线程会阻塞直到计数器值减为0CountDownLatch的对象当计数器值减为0时,...原创 2019-07-20 19:42:33 · 969 阅读 · 0 评论 -
懒汉式的线程安全问题
书写步骤:1.构造方法私有化2.类的内部提供好一个实例化好的对象3.返回其对象核心操作:singleton = new Singleton ();其语句操作的内容:1.在堆上分配空间2.属性初始化3.引用指向对象(singleton已经不为空)有可能顺序为1-3-2,所以引入两次检查及volatile关键字,均保证程序的顺序性及线程的安全性懒...原创 2019-07-12 11:10:58 · 953 阅读 · 0 评论 -
volatile型变量的特殊规则
两种特性:第一:保证此变量对所有线程的可见性。这里的"可见性"是指 : 当一条线程修改了这个变量的值,新值对于其他线 程来说是可以立即得知的。而普通变量做不到这一点,普通变量的值在线程间传递均需要通过主内存来完成。例如: 线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成之后再从主内存进行读取 操作,新值才会对线程B可见。关于volatile变量...原创 2019-07-12 10:21:27 · 128 阅读 · 0 评论 -
JMM内存三大特性
JMM内存三大特性:原子性(只有一个语句):基本数据类型的访问读写是具备原子性的,若如需要更大范围的原子性, 。(即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行,i++等操作) 需要synchronized关键字约束或lock体系的支持可见性:当一个线程修改了共享变量的值,其他线程能够立即得知此修改。volatile、 synchronized、fina...原创 2019-07-12 10:18:56 · 428 阅读 · 0 评论 -
JDK命令行工具
jps-JVM进程状态工具****列出正在运行的JVM进程,并返回进程IDJps-l:输出主类全名,返回进程ID 2. jstat:JVM统计信息监视工具显示本地或远程JVM中类加载,内存,垃圾回收等数据Jstat -gcutil PID:显示垃圾回收信息 3. jinfo:JVM配置信息查看工具Jinfo -flags PID 4. ...原创 2019-07-11 21:16:40 · 96 阅读 · 0 评论 -
Minor GC和Full GC的区别
区别:Minor GC又称为新生代GC :指的是发生在新生代的垃圾收集。因为Java对象大多都具备朝生夕灭的特 性,因此Minor GC(采用复制算法)非常频繁,一般回收速度也比较快。 Full GC 又称为 老年代GC或者Major GC : 指发生在老年代的垃圾收集。出现了Major GC,经常会伴随 至少一次的Minor GC(并非绝对,在Parallel Scavenge收集器中就...原创 2019-07-11 21:13:08 · 3225 阅读 · 0 评论 -
垃圾回收器与内存分配策略
4.如何判断对象已"死4.1 引用计数法 引用计数描述的算法为: 给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何时刻计数 器为0的对象就是不能再被使用的,即对象已"死"。引用计数法实现简单,判定效率也比较高,在大部分情况下都是一个不错的算法。比如Python语言就采用引用计数法进行内存管理。但是,在主流的JVM...原创 2019-07-11 21:08:58 · 86 阅读 · 0 评论 -
Java内存区域划分
一. 线程私有内存:每个线程都有,彼此之间完全隔离程序计数器 : 程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。(记录其上一次执行完的行号) 如果当前线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执 行的是一个Native方法,这个计数器值为空。 ...原创 2019-07-10 11:20:10 · 94 阅读 · 0 评论 -
多线程第十二旅
3.ReentrantReadWriterLock锁详解读写者模型:读写锁允许同一时刻被多个读线程访问,但是在写线程访问时,所有的读线程与其他的写线程均会阻塞写线程能够获取到锁的前提条件:没有任何读,而且写线程拿到锁ReentrantReadWriterLock中的内部类:FairSync,NonfairSync,ReadLock,WriterLock,SyncSync:...原创 2019-06-07 19:16:39 · 113 阅读 · 0 评论 -
多线程第十一旅
8.6 AQS源码解析独占式锁特性学习:1.1可中断获取锁public void lockInterruptibly() throws InterruptedException最终会调用:acquireInterruptibly(int arg)模板方法来响应中断public final void acquireInterruptibly(int arg)...原创 2019-06-07 17:05:09 · 99 阅读 · 0 评论 -
自动装箱和手工装箱的范围及装箱拆箱操作
自动装箱和手工装箱的范围:public class Test {public static void main(String[] args) {Integer i1= 10;//自动装箱Integer i2= new Integer (10);//手工装箱Integer i3= 150;Integer i4= 150;Integer i5= 10;System.out.print...原创 2019-03-26 12:10:27 · 301 阅读 · 0 评论 -
斐波那契数列——JAVA
打印前五个斐波那契数列package www.wl.javapublic class Test { public static void main(String[] args) { for(int i=1;i<=5;i++) { System.out.println (fibo(i)); } } public st...原创 2019-03-29 14:53:18 · 163 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别
1. String常量内容不可修改,而StringBuffer与StringBuilder的内容可以修改. 2. StringBuffer采用同步处理,属于线程安全操作,但是性能较低; 而StringBuilder采用异步处理,属于线程不安全操作,但性能较高3.在普遍场景下,推荐使用StringBuilder,当String对象使用“+”进行字符串拼接时,javac编译器会将St...原创 2019-03-25 21:39:51 · 58 阅读 · 0 评论 -
判断一个字符串是否全部由数字组成
public class Test{public static void main(String[] args){String str1 = "1234";String str2 = "123ab";System.out.println(isNumber(str1));System.out.println(isNumber(str2));}public stati...原创 2019-03-25 19:58:09 · 1019 阅读 · 0 评论 -
JAVA中多态的向上向下转型
class Person{public void print(){System.out.println("我是爸爸");}}class Student extends Person{public void print(){System.out.println("我是儿子");//多态的核心在于方法的覆写}public void fun(){System...原创 2019-03-18 19:59:41 · 161 阅读 · 0 评论 -
多线程第三旅
3.多线程常用操作方法3.1线程命名与取得a.通过构造方法在创建线程时设置线程名public Thread (string name)public Thread(Runnable target,String name)b.取得线程名称public final String getname()c.设置线程名称public final synchronized ...原创 2018-11-23 13:40:49 · 137 阅读 · 1 评论 -
多线程第四旅
3.4 线程等待(join)方法 等待其他线程终止join方法只是对object提供的wait()做了一层包装而已,wait方法释放了同步锁等待该线程终止。如果在主线程中调用该方法,会让主线程休眠,让调用该方法的线程子安执行完毕后再恢复执行主线程(从运行到阻塞状态,等待时间结束后,从阻塞态到就绪态)class MyThread implements Runnable { @...原创 2018-11-24 19:13:12 · 92 阅读 · 0 评论 -
多线程第二旅
2.3 Thread与Runnable区别首先从使用形式来讲,明显使用Runnable实现多线程要比继承Thread类要好,因为可以避免单继承局限。除了这点以外,Thread和Runnable还有什么区别呢?来看Thread类的定义:Public class Thread implements Runnable可见:Thread类是Runnable接口的子类,那么Thread...原创 2018-11-20 18:07:00 · 112 阅读 · 0 评论 -
开启多线程的旅途
说实话,听说多线程是个难点,所以我打算一点点啃,不求掌握多,只求精,慢慢来,老铁们,加油吧!开始我们的旅途吧!多线程一.进程与线程的概念进程:操作系统中一个程序的执行周期线程:一个进程同时执行多个任务,通常来讲,每个任务就称为一个线程1.与线程相比较,线程更加“轻量级”,创建,撤销一个线程比启动,撤销一个进程开销要小的多,一个进程中的所有线程共享此进程的所有资源2.没有...原创 2018-11-20 17:31:56 · 118 阅读 · 0 评论 -
(1).Person类有name,age,salary属性,要求实现至少两个构造方法,并且属性私有,提供对应的getter、setter。 2).覆写toString方法,要求在System.out.
/** (1).Person类有name,age,salary属性,要求实现至少两个构造方法,并且属性私有,提供对应的getter、setter。 2).覆写toString方法,要求在System.out.println()函数中传递Person对象能打印出三个属性值而不是对象地址。 3).覆写equals方法,要求两个Person类对象的值相同时返回true。*/ }package ww...原创 2018-11-13 12:30:52 · 1974 阅读 · 0 评论 -
猴子吃桃问题,用递归和非递归方法
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。public class Test{public static void main(String[] args) {System.o...原创 2018-11-13 12:17:56 · 3253 阅读 · 0 评论