Win10下编译OpenJDK8 编译环境 Windows10专业版64位: 编译前准备 Tip: 以下软件的安装和解压目录尽量不要包含中文或空格,不然可能会出现问题 安装 Visual Studio 2010 Professional 在windows下编译JDK需要使用Visual Studio 2010 Professional,推荐下载地址:https://msdn.itellyou.cn/ 最好下载英文版的IDE,不然可能会出现问题,下载完成后只用勾选安装C++部分就行 准备OpenJ…
技术分析 大家都知道Eclipse已经实现了自己的编译器,命名为 Eclipse编译器for Java (ECJ). ECJ 是 Eclipse Compiler for Java 的缩写,是 JavaTM 认可的 Java 编译工具(类似 javac).可以单独下载使用. IDEA所支持的编译器,也有几种:javac(Java原生编译器).ECJ(支持使用Eclipse编译器).ACJ编译器(不太清楚),其中默认使用的是Javac,同时也推荐使用Javac. 有兴趣可以看看ECJ编译器的相关使…
前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令.这个过程是Java虚拟机做的,这个过程也叫编译.是更深层次的编译. 在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤: 根据完成任务不同,可以将编译器的组成部分划分为前端(Front End)与后端(Back End). 前端编译主要指与源语言有关但与目标机无关的部分,包括词法分析.语法分析.语义分析与中间代码生成. 后端编译主要指与目标机有关的部分,包括代码优化和目标代码生成等…
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-SpringBoot+Mybatis 环境搭建 SpringBoot图文教程2-日志的使用「logback」「log4j」 SpringBoot图文教程3-「'初恋'情结」集成Jsp SpringBoot图文教程4-SpringBoot 实现文件上传下载 SpringBoot图文教程5-SpringBoo…
关键词:郑州 二本 物理专业 先前端实习生 后Java程序员 更多文章收录在码云仓库:https://gitee.com/bingqilinpeishenme/Java-Tutorials 前言 没有正式复工,就一直在老家待着,已经很长时间没有在三月份时候待在老家了,好久好久,从08年去县城上高中开始,在外多,在家少,一直没有机会好好停下来看看家乡. 坐的时间越长,回忆越多,想的越多,就想要整理一下这些年的经历,尤其是从事Java至今,算是一种回忆,也算是一种复盘. 分享给朋友们一张杨花. 大学…
背景 SMP(Symmetric Multi-Processor) 对称多处理器结构,它是相对非对称多处理技术而言的.应用十分广泛的并行技术. 在这种架构中,一台计算机由多个CPU组成,并共享内存和其他资源,所有的CPU都可以平等地访问内存.I/O和外部中断. 虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样. 操作系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力. 但是随着CPU数量的增加,每个CPU都要访问相同的内存资源,共享资源可能会…
问题概括 静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定,所以Java针对某些情况制定了常量优化机制. 常量优化机制 给一个变量赋值,如果等于号的右边是常量的表达式并且没有一个变量,那么就会在编译阶段计算该表达式的结果. 然后判断该表达式的结果是否在左边类型所表示范围内. 如果在,那么就赋值成功,如果不在,那么就赋值失败. 注意如果一旦有变量参与表达式,那么就不会有编译期间的常量优化机制. 结合问题,我们就可以大致猜出,如果常量能在编译期确定就会有优化,不能…
TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便. 详细使用说明请参考官方链接:https://testng.org/doc/index.html TestNG安装 <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.10&l…
前提概述 Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行. 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成: 算法原理介绍 相信大家此前或多或少有了解到ForkJoin框架,ForkJoin框架其实就是一个线程池ExecutorService的实现,通过工作窃取(work-stealing)算法,获取其他线程中未完成的任务来执行.可以充分利用机器的多处理器优势,利用空闲的线程去并行快速完成一…
前提概要 在开发过程中在使用多线程进行并行处理一些事情的时候,大部分场景在处理多线程并行执行任务的时候,可以通过List添加Future来获取执行结果,有时候我们是不需要获取任务的执行结果的,方便后面引出ExecutorCompletionService. CompletionService的介绍 CompletionService 接口是一个独立的接口,并没有扩展ExecutorService . 其默认实现类是ExecutorCompletionService. 接口CompletionSe…