
Java
GorgeousGuo
这个作者很懒,什么都没留下…
展开
-
牛客试题---编辑距离(Edit Distance)
Given two words word1 and word2, find the minimum number of steps required to convert word1 toword2. (each operation is counted as 1 step.)You have the following 3 operations permitted on a word:a) In...原创 2019-08-02 17:51:33 · 675 阅读 · 0 评论 -
Java :new一个对象时发生了什么
在介绍双亲委派模型之前先介绍类加载器,对于任意一个类都需要由加载它的类加载器和这个类本身一同确立在JVM中的唯一性,每一个类加载器都有一个独立的类名称空间。类加载器就是根据全限定名称将class文件加载到JVM内存,然后转化为class对象。类加载器的分类启动类加载器(BootstrapClassLoader):虚拟机自身的一部分扩展类加载器(ExtensionClassLoader)应...原创 2019-09-30 12:57:30 · 332 阅读 · 0 评论 -
JVM
JVM:(Java Virtual Machine的简称。意为Java虚拟机。);通过软件模拟Java字节码的指令集,并不真实存在。1. Java内存区域与内存溢出异常1·1 运行时数据区域线程私有区域:程序计数器,Java虚拟机栈,本地方法栈线程共享区域:Java堆,方法区,运行时常量池程序计数器(线程私有):可看作是一个守护线程,是当前线程所执行的字节码的行号指示器。各个线程之...原创 2019-09-17 14:53:10 · 125 阅读 · 0 评论 -
Java异常体系
异常体系:当程序出现错误时能够最大化地减少损失的一种保护手段。Java中的异常也是类异常的类继承关系:只有Throwable以及其子类可以进行异常的捕获与处理Error :描述jvm运行时内部错误,栈溢出,堆的溢出Exception:程序中普遍纯在的由于代码问题产生的错误IOException:由于IO(输入输出)产生的异常,如在程序中打开了一个并不存在的文件RuntimeExcep...原创 2019-08-07 11:08:53 · 126 阅读 · 0 评论 -
简述volatile关键字
volatile基本特性可见性当一个线程修改了变量的值,新的值会立刻同步到主内存中,当其他线程读取到这个变量时,读取到的会是最新的值。禁止指令重排(Double-Check-Singleton);编译时JVM遵循内存屏障的约束,运行时依靠CPU屏障指令来阻止重排。volatile代码既不会提前也不会滞后。volatile代码前的所有代码一定全部执行完毕,后面的代码一定还未开始。适...原创 2019-08-07 10:36:53 · 261 阅读 · 0 评论 -
进程与线程
进程:操作系统中一个程序的执行周期称为一个进程。他是资源分配的最小单位,也是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。线程:一个程序执行的最小单位一个程序同时执行多个...原创 2019-08-01 10:31:41 · 122 阅读 · 0 评论 -
Java中的数组
数组是引用数据类型,有内存的分配问题。需要声明并初始化数组。eg:开辟一个长度为3的数组int x = new int[3];分立实现数组实例化int [ ] x = null;x = new int[3];二维数组int [ ] [ ] data = new int [ ] [ ]{{1,2,3},{4,5},{6,7,8}};java实现数组排序java.util.Arr...原创 2019-03-13 20:49:32 · 136 阅读 · 0 评论 -
Java三大类(String、Object、包装类)常用方法小结
String类(final class String)1·实例化方式直接赋值String str="hello world";通过构造方法赋值String str1=new String("hello string");2·字符串的相等比较“==”操作符用于比较两个变量的值是否相等,对于基本类型而言,比较的就是数值大小;对于引用类型而言,比较实际上是保存地址是否相等而不会比较内容所以在...原创 2019-03-20 19:36:14 · 287 阅读 · 0 评论 -
浅谈HashMap
a·线程安全问题采用异步处理,线程不安全,性能较高b·关于null,是否可以存放null值?HashMap:k,v都a允许为nullc·为Map接口下常用子类HashMap基于哈希表实现,TreeMap基于红黑树实现,Hashtable基于哈希表+红黑树(JDK1.8之后,JDK1.8之前基于哈希表)内部属性:负载因子:final float loadFactor(默认为0.7...原创 2019-07-18 23:44:45 · 135 阅读 · 0 评论 -
队列实现栈,栈实现队列
//队列实现栈class MyStack { private Queue<Integer> queue1; private Queue<Integer> queue2; private int size; /** Initialize your data structure here. */ public MyStack() {...原创 2019-07-21 15:37:00 · 111 阅读 · 0 评论 -
快速排序,寻找第K大值
public class Finder { public int findKth(int[] a, int n, int K) { return findKth(a, 0, n-1, K); } public int findKth(int[] a, int low, int high, int k) { int part = partation(a, low, high);...原创 2019-07-21 21:10:09 · 401 阅读 · 0 评论 -
next(),nextLine(),以及nextInt()的用法及区别
next(),nextLine(),nextInt()都为scanner的内置用法,在此总结他们的区别和作用。他们的不同之处在于对空格的处理以及返回值的不同。next( )该方法将空格看作两个字符串之间的间隔,返回值为String类型: public static void main(String[] args) { Scanner sc = new Scanne...原创 2019-07-22 09:05:10 · 643 阅读 · 0 评论 -
启动线程的四种方法
方式一1自定义类继承Thread类,覆写run方法(线程任务)2实例化自定义类对象,该对象就是一个具备线程执行的对象3线程类的对象run方法直接调用和普通类的对象调用没有区别,启动线程一律使用Thread类提供的start()方法* 直接调用run方法,实际还是同步执行,与线程无关javamyThread1.run();*调用start方法,才会异步执行,跟线程有关,该方法不能多次调用,只...原创 2019-07-23 15:25:25 · 2392 阅读 · 0 评论 -
Java常用的线程操作方法
1·线程名称获取取得JVM中正在执行的线程对象public static native Thread currentThread();线程名称的命名与取得线程创建建议设置一个简明思意的名称(表示线程功能)//两种方式public Thread (Runnable target,String name){}public Thread synchronized void setNa...原创 2019-07-25 17:35:17 · 351 阅读 · 0 评论 -
HashMap,TreeMap,Hashtable的关系与区别
都为Map接口下常用子类HashMap基于哈希表实现TreeMap基于红黑树实现Hashtable基于哈希表+红黑树(JDK1.8之后,JDK1.8之前基于哈希表)哈希表(K,V):数组根据相应的哈希算法计算key值的下标,返回值即为V存储的下标哈希算法:f(K) -> int即为V需要存储的数组下标%16查找O(1),添加O(1) 不存在别的元素时哈希冲突解决办法:...原创 2019-07-27 20:42:28 · 162 阅读 · 0 评论 -
final,finally , finalize()的区别
final-关键字(终结器)使用final修饰的变量会变为常量,常量必须在声明时赋值,且无法再次修改;修饰数据类型无论是基本类型还是引用类型,值不能变,对于引用类型而言,不可改变的是指向不能变(保存的堆内存地址不能变)修饰方法-封装被final修饰的方法不能被覆写。修饰类被final修饰的类没有子类(string)finally异常处理的一部分,用在try/cat...原创 2019-08-04 14:02:55 · 102 阅读 · 0 评论 -
Java与C/C++有什么异同
两者均为面向对象语言,都使用了面向对象思想(封装,继承,多态),两者有很好的可重用性。两者区别如下:Java为解释型语言,其运行过程为:程序源代码经过Java编译器编译成字节码,然后由JVM解释执行。C++为编译型语言,源代码经过编译和链接后生成可执行的二进制代码。因此Java执行速度比C++慢,但Java支持跨平台执行,C++不能。 Java为纯面向对象语言,所有代码必须在类中实现,...原创 2019-10-08 16:51:50 · 714 阅读 · 0 评论