扩展资料: Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。...Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。...5.稳健性 Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。...6.安全性 Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。 7.可移植性 Java使得语言声明不依赖于实现的方面。...Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。 8.高性能 Java是一种先编译后解释的语言,所以它不如全编译性语言快。
通过 String 构造器创建,比如 String newString =new String(“aa”),java compiler 会创建一个新的 object 并存入 heap 中。 4....在 Java 7 开始,Java String Pool 存储在 Java Heap 中,可以被 GC 回收,一定程度上可以减少 OOM。...Java 7 之前存储固定大小在 PermGen space 中。 3....参考 Guide to Java String Pool
Arrays.java是Java中用来操作数组的类。使用这个工具类可以减少平常很多的工作量。了解其实现,可以避免一些错误的用法。...super T> c); 他的实现方式如下: // java/utils/Arrays.java static final class LegacyMergeSort { private...从注释上来看,在未来某个版本,Arrays.java中的merge方法将会被删除掉。 这个排序方法是 稳定 的。 查找 Arrays.java中只提供了二分查找。...,而是Arrays.java中定义的一个简单的静态内部类--ArrayList。...@file java/util/Arrays.java @SafeVarargs public static List asList(T... a) { return new ArrayList
Arrays.java是Java中用来操作数组的类。使用这个工具类可以减少平常很多的工作量。了解其实现,可以避免一些错误的用法。...super T> c); 他的实现方式如下: // java/utils/Arrays.java static final class LegacyMergeSort { private static...从注释上来看,在未来某个版本,Arrays.java中的merge方法将会被删除掉。 这个排序方法是稳定的。 查找 Arrays.java中只提供了二分查找。...,而是Arrays.java中定义的一个简单的静态内部类--ArrayList。...@file java/util/Arrays.java @SafeVarargs public static List asList(T... a) { return new ArrayList
大家有兴趣可以自己读一遍,我在下面贴出我看代码过程中的注释。对逻辑所有的解释都在注释中。阅读的方法是从static void sort(T[] a, Comparator c)两个方法开始, 顺着逻辑一路往下读就可以。 除了上面提到的Galloping Mode,还有源码中还有一个概念叫作 run, 可以把它理解为一段已经排好序的数列。...java的源码在java安装路径下的src.zip文件内,不需要要去网上下载 例如:我的ubuntu 系统在 /usr/lib/jvm/java-7-oracle/src.zip内 import...java.util.Arrays; import java.util.Comparator; /** * Created by yxf on 16-5-30...* 这里对TimSort算法在java中的实现做了注释,部分实现逻辑相似的注释没有处理,直接是原来的注释。
4 Techniques for Writing Better Java一文中,作者提到了 4个小技巧。 1.协变返回类型,说了就是可以返回子类。...java4( java 编程思想第四版) 中已经介绍过了,这里就不再细究。...通过实现 AutoCloseable 接口 4.final 类以及final 方法就不再论述,Java编程思想已经说得很透彻了。
对,就是看别人写的JS代码。文档嘛,自然是没有的。 之前也有试过看代码,但项目中N多JS文件,每个JS文件上千行,一行一行的看下来,用不了几分钟就完全晕掉了。...于是,这一次,我决定换一个方式读JS源码。 这个项目中有N个JS文件,我把入口的JS文件拿出来先看,然后我把它里面所有的函数名,都用思维导图写出来,就像这样, ?...在这样做的时候,只是看看函数名在做什么,不去读函数内部的细节。我觉得这种方法会比较适合这种上百个JS文件,每个文件至少一千行以上的复杂项目。 这样做的好处首先就是从文件和函数上理解项目的结构。...虽然看小说和看源码,都是用读的。但区别在于,小说是给人看的,所以是从人的易于理解角度去编写,但程序是写给机器看的,所以是从机器易于理解的角度去写。...看小说一行行看就OK,但读源码的重点,不在于要读完并理解每一行JS代码,而在于通过图表和笔记,理解系统的结构和它们之间的关系。
二、资源帖 1.JAVA执行javascript方法 2.在Java中直接调用js代码 3.Java执行js脚本 4.Java 8 Nashorn 教程 5.Java 脚本引擎
因为这个号叫 Java4ye,所以第一个专栏就从 Java 开始吧! 那么现在的 Java 生态发展到什么情况了呢?...这里我收集了四份报告,一起看看吧 Java 生态报告 —— InfoQ 有四大专栏,下面简单介绍下。...Fast JVM Startup (CRaC) CRaC(协调恢复检查点)项目研究 Java 程序的协调机制,以便在 Java 实例执行时检查点(生成映像、快照)。...Quarkus 是一个为 GraalVM 和 HotSpot 定制的 Kubernetes 原生 Java 框架 Late Majority Clojure 是一种现代、功能性、动态的编程语言,它基于Java...Java 生态报告 —— Jetbrains 说好的 “你发任你发,我用 Java8” ,结果这么多 17 了。
背景 本文聊聊Java 虚拟机的一些知识。 2.知识 Java Virtual Machine(Java虚拟机,简称JVM)是一个抽象的计算机器。...拆分几个过程来理解概貌 JVM 使得 Java程序 与 操作系统(及硬件)保持独立性。JVM 并不依赖 Java 编程语言 ,它只知道一种特定的二进制格式,即class文件格式。...一个class文件包含着Java虚拟机指令(或字节码)和符号表,以及其它辅助信息。...拆分几个过程来理解: 1、Java 语言写的 Java 文件,比如 xxx.java 文件 经过编译后 变成 class 文件格式的 “字节码” 文件。...它就可以运行任何 Java 字节码程序。
在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术读取...Excel数据到MySQL 你也可以在 : java的poi技术读取和导入Excel 了解到写入Excel的方法信息 使用JXL技术 : java的jxl技术导入Excel 本文主要讲的是java中...poi读和写excel(版本是2003-2007,2010) 项目结构: ?...; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.InputStream...; 11 import java.io.OutputStream; 12 import java.util.ArrayList; 13 import java.util.List; 14 15
JVM 允许应用程序同时运行、执行多个线程,每个线程都有优先权,具有较高优先级的线程优先于优先级较低的线程执行 在Java中线程分为两类:User Thread(用户线程)、Daemon Thread(...public static native Thread currentThread(); 这是一个 Native 方法,明这个方法是原生函数,是用C/C++语言实现的,并且被编译成了DLL,由java...这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。...---- JAVA 中锁的种类与区别 在代码执行过程中,一些数据需要进行排他性的控制以保证最终计算结果的正确性,所以需要有一种机制保证在执行过程中此数据被锁住不会被外界修改,这种机制就是锁机制 同时,根据锁的特性...ReadWriteLock 的读锁是共享锁,写锁是独占锁。ReentrantLock 的独享锁和共享锁也是通过 AQS 来实现的 互斥锁/读写锁 互斥锁 = 独享锁,读写锁 = 共享锁。
private 的内部类(其构造函数默认也是 private ) , 外部类也是无法直接去创建它的实例的、其实换句话来说、对于类的定义来说、不管你是作为一个内部类定义在另一个类中、还是单独定义在一个 java... 文件,java 的可见性都是起效的。...至于为啥可以在外部内直接创建一个 private 的类的实例、无外乎就是 java 编译器帮我们做了一些额外的工作。 回到上面的例子中、因为 Father03Son.
文件系列往期文章: java 字节流入门(文件流) java 字节流入门(内存数组流) java 字节流入门(内存数组流->文件流) 从磁盘到内存的流程大体介绍完了,本文主要介绍读文件中的坑,在实际系统中...但是读文件一般不是顺序读的,为了实现想读哪里读哪里的功能,通常需要 RandomAccessFile。...而这个方法的实现是将原来的读方法套了个循环:一次没读完,我就接着读!直到读到 0 个字节,也就是读到文件末尾了。 ?...因此,完整的读流程为:使用 RandomAccessFile 的 readFully + 检查 ?...不管使用什么读方法,都要检查是否读取到了想要的数据,并进行异常处理。至此,java 字节流入门系列就完整了,包括读写文件,内存和磁盘交互。 微信今天开了赞赏码,安卓和苹果都可以使用了。
Java8读文件方法代码学习 JDK7中引入了新的文件操作类java.nio.file.File,它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件。...import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import...sb.toString(); System.out.println(fromFile); } } 如果使用的不是JDK7,而是JDK8,那么一行代码即可完成读文件...) throws IOException { // 一行代码搞定读文件,默认是UTF-8编码 out.println(new String(readAllBytes(get("d:/jd.txt...) throws IOException { // Java8用流的方式读文件,更加高效 Files.
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况...: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(Java)代码 4) HTML中js...脚本设置 Android(Java)与js(HTML)交互的接口函数是: mWebView.addJavascriptInterface(getHtmlObject(), "jsObj"); /.../ jsObj 为桥连对象 Android容许执行js脚本需要设置: webSettings.setJavaScriptEnabled(true); (2) js(HTML)访问Android(Java...Java)访问js(HTML)代码 Android(Java)访问js(HTML)端代码是通过loadUrl函数实现的,访问格式如:mWebView.loadUrl("javascript: showFromHtml
Java 9之前的类加载器: Bootstrap ClassLoader:负责加载rt.jar包中的类 Extension ClassLoader: 负责加载Java的扩展类库,jre/lib/...ext目录或者java.ext.dirs属性指定的目录 System ClassLoader: 负责加载classpath配置路径的类文件 Java 9 之后: Bootstrap ClassLoader...创建图层会通知Java虚拟机有关可从模块加载的类,以便Java虚拟机知道每个类所属的模块 NegativeArraySizeException 如果应用程序尝试创建负大小的数组,则抛出该异常 NoClassDefFoundError...比如通过Java 启动一个记事本。 ProcessBuilder Java调用本地程序或者脚本。 每个ProcessBuilder实例管理一组进程属性。...,用于保存对表示Java关键字void的类对象的引用
虽然轮子造好了,但是根据《阿里巴巴Java开发手册》,线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险...这样就不会影响读。适合读操作多于写操作的场景,提升读性能。 ConcurrentLinkedQueue 非阻塞队列,链表+cas。非分别有head指针指向队列链表头,tail指针指向队列链表尾。
【读码JDK】java.lang包目录 java.lang.Boolean类Api介绍及测试 package lang; import org.junit.Test; /** * @author...*/ @Test public void getBoolean() { System.out.println(Boolean.getBoolean("java"));