
java
sharecord
向代码致敬,寻找你的第83行
展开
-
BufferedReader reader= new BufferedReader(new InputStreamReader(System.in))解读
System.in的类型可以归结为节点流、字节流、输入流;InputStreamReader这个对象是处理流,字符流,输入流;BufferedReader的类型是缓冲处理流、字符流、输入流。 类 InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。原创 2017-09-26 22:09:41 · 20117 阅读 · 0 评论 -
java知识
静态方法不能被实例化,因此不能使用super或者是this关键字。关于抽象类JDK 1.8以前,抽象类的方法默认访问权限为protectedJDK 1.8时,抽象类的方法默认访问权限变为default关于接口JDK 1.8以前,接口中的方法必须是public的JDK 1.8时,接口中的方法可以是public的,也可以是default的JDK 1.9时,接口中的方法可以是priva...原创 2018-05-30 10:56:28 · 206 阅读 · 0 评论 -
JVM、栈(stack)、堆(heap)和静态区(static area)以及内存溢出的认识
一、认识JVM1. 什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上...原创 2018-08-05 20:24:33 · 2761 阅读 · 0 评论 -
什么是内存溢出以及java中内存泄漏5种情况的总结
内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间。 一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢...原创 2018-08-10 19:28:09 · 1739 阅读 · 0 评论 -
java解释执行和编译执行
解释执行:将编译好的字节码一行一行地翻译为机器码执行。编译执行:以方法为单位,将字节码一次性翻译为机器码后执行。前者的优势在于不用等待,后者则在实际运行当中效率更高。为了满足不同的场景,HotSpot虚拟机内置了多个即时编译器:C1,C2与Graal。C1:即Client编译器,面向对启动性能有要求的客户端GUI程序,采用的优化手段比较简单,因此编译的时间较短。C2:即Ser...原创 2019-05-16 16:55:14 · 1424 阅读 · 0 评论 -
java中排序算法
// 归并排序 需要占用额外空间 public static int[] sort(int[] a,int low,int high){ int mid = (low+high)/2; if(low<high){ sort(a,low,mid); sort(a,mid+1,high); ...原创 2019-05-16 16:58:31 · 230 阅读 · 0 评论 -
full GC触发的条件
full GC触发的条件除直接调用System.gc外,触发Full GC执行的情况有如下四种。1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError: Java heap space为避免以上两种状况引起的FullGC,调优时应尽量做到让对象...原创 2019-05-16 17:18:40 · 488 阅读 · 0 评论 -
lambda 表达式去重、查找元素、分组、过滤
1. lambda 表达式根据对象某个属性进行去重List<ReparationOperation> insuranceReparationsMoneyList = reparationOperationsList.stream().collect( Collectors.collectingAndThen( ...原创 2019-05-16 17:27:48 · 9198 阅读 · 0 评论 -
动态代理
反射最大的作用就在于我们可以不在编译时知道某个对象的类型,而在运行时得到。反射 一般使用 Class.forName()方法;动态代理就是实现InvocationHandler 接口;通过reflect.Proxy的类的newProxyInstance方法就可以得到这个接口的实例实现动态代理的方式有很多,比如JDK自身提供的动态代理,就是主要利用反射机制.还有其他的实现方式,比如利用传...原创 2019-05-21 21:00:09 · 378 阅读 · 0 评论 -
(转)简谈java中的阻塞非阻塞与同步异步
在学习java网络编程时,我遇到了同步/异步,阻塞/非阻塞着四种调用方式。在这里我就大概的说一下我对它们的理解。同步/异步主要针对客户端: 同步:就是当客户端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是说必须一件一件的事情去做,等一件做完了才能去做下一件。 异步:就是当客户端发出一个功能调用时,调用者不用等接收方发出响应。实际处理这个调用的部件在完成...转载 2018-06-11 11:17:02 · 196 阅读 · 0 评论 -
java表达式类型的自动提升
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?答案是:前者错,后者对。Java的8种基本数据类型及其所占用的空间 boolean 8bit/1byte byte 8bit/1byte char 16bit/2byte short 16bit/2byte f...原创 2018-05-16 16:28:53 · 289 阅读 · 0 评论 -
Java方法静态绑定与动态绑定讲解
原文地址一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。 二:静态绑定 静态绑定(前期绑定)是指:在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。 在Java中,final、private、static修饰的方法以及构造函数都是静态绑定...转载 2018-05-19 15:44:02 · 527 阅读 · 0 评论 -
Java中的有参无参构造方法与继承的关系
public class Father { //年龄 private int age; //仅有一个带参数的构造方法 public Father (int i){ this.age = i; System.out.println("实例化父类 ag = " + age); } public Father(原创 2017-10-09 22:11:28 · 3825 阅读 · 0 评论 -
Java中 tostring方法
public class Orc { public static class A { public String getString() { return "this is A"; } } public static void main(String[] args) { A obj = new A(); System.out.println原创 2017-10-10 16:27:00 · 423 阅读 · 0 评论 -
mysql 命令行启动出现不是内部命令
1.首先找到MySQL下载路径,找到bin文件下原创 2017-09-27 22:31:28 · 1036 阅读 · 0 评论 -
Java中的final关键字
定义final的作用: 1. final类不能被继承,没有子类,final类中的方法默认是final的。 2. final方法不能被子类的方法覆盖,但可以被继承。 3.final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final的好处: 1.final方法可以告诉编译器对于final方法的调用不需要动态的绑定,这会原创 2017-10-12 07:02:12 · 418 阅读 · 0 评论 -
Java中成员类、嵌套类和匿名类
内部类的注意事项:1.内部类仅仅是外部类的成员,因此可以被声明为public,private,protected或者是默认值。 外部类只能被声明为public或者是默认值,通常情况下,不会将内部类声明为public,除非真的 找到在外部类之外使用内部类对象的合理原因。2.内部类可以使用外部类的类和实例变量,以及封闭块的局部变量3.内部类可以是一个原创 2017-10-17 22:02:40 · 341 阅读 · 0 评论 -
java 注解学习笔记
1. @Override——指示被标记的方法必须去重写超类中的某个方法,如果不重写,编译器将会给出错误 (可以注释掉@Override 然后看一下运行结果)public class Test { public static void main(String[] args) { Cat cat =new Cat(); cat.saySomethi原创 2017-10-29 11:46:51 · 222 阅读 · 0 评论 -
Java中for-each语句
fo-each 循环有一定的局限性,可以实现对元素的访问,但却不能实现对元素的修改,不适合并行遍历多个集合的元素, 例如比较两个数组中的元素,只能用单个的循环来实现。fo-each结构是顺向的迭代器,如果只想访问数组中的一些元素, 可能需要传统的for循环。 java不像C#那样引入.NET引入foreach关键字,是因为要确保向后兼容J2SE5.0之原创 2017-09-26 22:19:16 · 962 阅读 · 0 评论 -
Java中接口与抽象类
Java接口的几个要点:1.接口与类非常类似。但接口只可以有隐式为共有的和静态的字段,以及隐式为共有的和抽象的方法2.接口被编译成.class文件并且被与加载类相同的线程加载3.可以创建类型是接口名字的变量,通过这个引用,只有定义在接口中方法是可见的4.接口中定义的常量可以不用前缀来访问,因为实现接口使他们相当于是实现类的一部分serializable: 为了保存对原创 2017-10-16 21:48:55 · 276 阅读 · 0 评论 -
Java学习集合笔记
Java集合分为Set、Map、List、Queue其中Set代表的是无序,不可重复的集合 List代表有序,重复集合 Map代表的是具有映射关系的集合 HashSet是Set接口的典型实现,大多数使用Set集合时都是使用这个实现类。HashSet按照Hash算法来存储集合中的元素,具有很好的存取和查找性能。 HashSet具有以下特点: 不能保证元素的排...原创 2018-04-10 12:26:53 · 179 阅读 · 0 评论 -
jsp和servlet区别
什么时候创建Servlet或者class文件:处理用户请求的,接收用来页面发来的请求,要返回到jsp页面就servlet,如登录(获取用户名密码),注册等(获取用户信息),分页。具体业务逻辑的实现,用来处理其他类发的请求,返回普通数据参数,如登录的实现处理,用Class类。(多看看mvc)。jsp和Servlet的区别:简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系...原创 2018-04-24 20:45:59 · 160 阅读 · 0 评论 -
Statement 和 PreparedStatement之间的关系和区别
Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。具体步骤: 1.首先导入java.sql.*;这个包。 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn。 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt原创 2018-05-09 22:38:34 · 304 阅读 · 0 评论 -
编译的类型和运行时的类型
public class TestDemo1 { public static void main(String[] args) { // TODO Auto-generated method stub Person p=new Women(); System.out.println("p.name:"+p.name); p.show...原创 2018-05-17 20:54:12 · 336 阅读 · 0 评论 -
java静态块和构造块的加载顺序
public class B { public static B t1 = new B(); public static B t2 = new B(); { System.out.println("构造块"); } static { System.out.println("静态块"); } publi...原创 2018-05-17 21:28:56 · 906 阅读 · 0 评论 -
类的加载顺序
public class Base { private String baseName = "base"; public Base() { callName(); System.out.println(); } public void callName() { System. out. println(b...原创 2018-05-17 21:42:46 · 197 阅读 · 0 评论 -
java 多线程
Java通过Executors提供四种线程池(1) newCachedThreadPool创建一个可缓存的线程池。如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。(2) newFixed...原创 2019-05-18 11:57:34 · 440 阅读 · 0 评论