随笔分类 - 【技术专区-Java】
摘要:前提概要 针对于后端开发者而言的,作为报表的导入和导出是一个很基础且有很棘手的问题!之前常用的工具和方案大概有这么几种: JXL(Java Excel API 工具服务),此种只支持xls的文件格式,而且对于内存的管理特别的差,现在基本不用了! 目前大多数会操作Excel工具服务或者解析都是利用Ap
阅读全文
摘要:前提介绍 本章主要介绍相关线程声明周期的转换机制以及声明周期的流转关系以及相关AQS的实现和相关的基本原理,配合这相关官方文档的中英文互译的介绍。 线程状态流转及生命周期 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪
阅读全文
摘要:JVM内存分配及申请过程 当使用new关键字或者其他任何方式进行创建一个类的对象时,JVM虚拟机需要为该对象分配内存空间,而对象的大小在类加载完成后已经确定了,所以分配内存只需要在Java堆中划分出一块大小相等的内存,JVM虚拟机中有指针碰撞和空闲列表两种方式分配内存。 指针碰撞方式 如果Java堆
阅读全文
摘要:承接上文 ☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(上),继续开展我们的下篇的TestNG的技术特性。 分组测试 分组测试即为使用group,如果你使用xml的话就是里边的标签,如果是直接在class中,是通过@Test(groups="group2")这种方
阅读全文
摘要:TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便。 详细使用说明请参考官方链接:https://testng.org/doc/index.html TestNG安装 <dependency> <groupId
阅读全文
摘要:Win10下编译OpenJDK8 编译环境 Windows10专业版64位; 编译前准备 Tip: 以下软件的安装和解压目录尽量不要包含中文或空格,不然可能会出现问题 安装 Visual Studio 2010 Professional 在windows下编译JDK需要使用Visual Studio
阅读全文
摘要:前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令。这个过程是Java虚拟机做的,这个过程也叫编译。是更深层次的编译。 在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤: 根据完成任务不同,可以将编译器的组成部分划分为前端(Front
阅读全文
摘要:问题概括 静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定,所以Java针对某些情况制定了常量优化机制。 常量优化机制 给一个变量赋值,如果等于号的右边是常量的表达式并且没有一个变量,那么就会在编译阶段计算该表达式的结果。 然后判断该表达式的结果是否在左边类型所表
阅读全文
摘要:Google Guava Collections 使用介绍 简介 Google Guava Collections 是一个对 Java Collections Framework 增强和扩展的一个开源项目。由于它高质量 API 的实现和对 Java特性的充分利用,使得其在 Java 社区受到很高评价
阅读全文
摘要:背景 SMP(Symmetric Multi-Processor) 对称多处理器结构,它是相对非对称多处理技术而言的、应用十分广泛的并行技术。 在这种架构中,一台计算机由多个CPU组成,并共享内存和其他资源,所有的CPU都可以平等地访问内存、I/O和外部中断。 虽然同时使用多个CPU,但是从管理的角
阅读全文
摘要:前言 在目前众多编程语言中,Java 语言的表现还是抢眼,不论是企业级服务端开发,还是 Andorid 客户端开发,都是作为开发语言的首选,甚至在大数据开发领域,Java 语言也能占有一席之地,如Hadoop,Spark,Flink 大数据等。而作为已经诞生 24 年的 Java 相比其他语言来说,
阅读全文
摘要:承接上篇文章: 【SpringCloud技术专题】「原生态Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上) 为什么选择Feign而不是其他 你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。 你也可以直接使用 Apac
阅读全文
摘要:前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令。这个过程是Java虚拟机做的,这个过程也叫编译。是更深层次的编译。 在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤: 根据完成任务不同,可以将编译器的组成部分划分为前端(Front
阅读全文
摘要:延时队列前提 定时关闭空闲连接:服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。 定时清除额外缓存:缓存中的对象,超过了空闲时间,需要从缓存中移出。 实现任务超时处理:在网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。 应用在session超时管理:网络应答通讯协议的请求超时处理。
阅读全文
摘要:前提概要 Java调式、热部署、JVM背后的支持者Java Agent: 各个 Java IDE 的调试功能,例如 eclipse、IntelliJ ; 热部署功能,例如 JRebel、XRebel、spring-loaded; 各种线上诊断工具,例如 Btrace、Greys,还有阿里的 Arth
阅读全文
摘要:前提概要 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明显的缺点,就是,没有返回值。这时候,大家可能会去尝试使用Callable中的call方法,然后用Future返回结果,如下: public static void main(S
阅读全文
摘要:前提概要 我们都知道开发语言整体分为两类,一类是编译型语言,一类是解释型语言。那么你知道二者有何区别吗?编译器和解释器又有什么区别? 这是为了兼顾启动效率和运行效率两个方面。Java程序最初是通过解释器进行解释运行的,当虚拟机返现某个方法或代码块的运行特别频繁时,就会把这段代码标记为热点代码,为了提
阅读全文
摘要:a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。 b) 缓存。缓存中的对象,超过了空闲时间,需要从缓存中移出。 c) 任务超时处理。在网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。 一种笨笨的办法就是,使用一个后台线程,遍历所有对象,挨个检查。这种笨笨的办法简
阅读全文
摘要:在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。 JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册
阅读全文