JAVA

对于java程序员来说,java语言的好处和优点,本人想不用本人说了,大家自然会说出很多一套套的。但虽然各位同行作为java程序员,但各位同行不得不承认java语言也有一些它本身的缺点。比如在性能、和底层打交道方面都有它的缺点。所以java就提供了一些本地接口...

Java OAuth 2.0 客户端编程(一): 资源所有者密码凭据授权 Java OAuth 2.0 客户端编程(二): 客户端凭据授权 Java OAuth 2.0 客户端编程(三):认证码授权 概述 OAuth 是一个开放的授权标准,允许客户端代表一个资源所有者获得访问受保护服务器资源的访问...

1、背景 上文探讨了:【JVM】模板解释器–如何根据字节码生成汇编码? 本篇,各位同行来关注下字节码的resolve过程。 2、问题及准备工作 上文虽然探讨了字节码到汇编码的过程,但是: mov %rax,%(rcx,rbx,1) // 0x89 0x04 0x19 其中为什么要指定0×04和0×19...

本 系列 中以前的文章介绍了如何通过以下方式实现并发性: 并行地在多个数据集上执行相同的操作(就像 Java 8 流一样) 显式地将计算构建成异步执行某些操作,然后将结果组合在一起(就像 future 一样)。 这两种方法都是实现并发性的不错方式,但是您必须...

1、背景 仅针对JVM的模板解释器: 如何根据opcode和寻址模式,将bytecode生成汇编码。 ITJS的这篇文章的示例中所使用的字节码和汇编码,请参见上篇博文:按值传递还是按引用? 2、寻址模式 ITJS的这篇文章不打算深入展开寻址模式的阐述,各位同行聚焦Intel的I...

引言 HashMap在键值对存储中被经常使用,那么它到底是如何实现键值存储的呢? 一 Entry Entry是Map接口中的一个内部接口,它是实现键值对存储关键。在HashMap中,有Entry的实现类,叫做Entry。Entry类很简单,里面包含key,value,由外部引入的hash,还有指向...

一、ServletContext 1、生命周期:当Web应用被加载进容器时创建代表整个web应用的ServletContext对象,当服务器关闭或Web应用被移除时,ServletContext对象跟着销毁。 2、作用范围:整个Web应用。 3、作用: a)在不同Servlet 之间转发 this.getServletCont...

在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行 Java 开发时,JDK 已经为各位同行提供了一系列相应的类来实现基...

ITJS的这篇文章将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下: Gzip单个文件压缩 对于单个文件使用GZip压缩。 package date0805.demo1; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja...

wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。ITJS的这篇文章对这些关键字的使用进行了描述。 在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Ja...

ArrayList是Java中最常用的集合类型之一。它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序。在编码时各位同行经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求。这篇文章将给出两种从ArrayList中删除重复元素的方法。方法1:使用Ha...

Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动。特性之一便是随同发布的lambda表达式,它将允许各位同行将行为传到函数里。在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行...

Thread.interrupt真的能中断线程吗 在平时的开发过程中,相信都会使用到多线程,在使用多线程时,大家也会遇到各种各样的问题,今天各位同行就来说说一个多线程的问题——线程中断。在java中启动线程非常容易,大多数情况下本人是让一个线程执行完自己的任务...

这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。 程序员面试指南:https://www.youtube.com/watch v=0xcgzUdTO5M Java面试问题集合指南:https://www.youtube.com/watch...

Java对你而言是什么?一门你大学里学过的语言?一个IT行业的通用语言?你相信Java已经为下一次互联网爆炸做好了准备么?Java 一方面为嵌入式计算做了增强,而另一方面为实时应用做了精简,ITJS的这篇文章将介绍为什么 Java 是IoT(物联网)开发的最佳语言。为...

引言 各位同行知道java代码编译后生成的是字节码,那虚拟机是如何加载这些class字节码文件的呢?加载之后又是如何进行方法调用的呢? 一 类文件结构 无关性基石 java有一个口号叫做一次编写,到处运行。实现这个口号的就是可以运行在不同平台上的虚拟机和与平...

各位同行都会为各位同行的代码编写测试,不是吗?毫无疑问,本人知道这个问题的答案可能会从 “当然,但你知道怎样才能避免写测试吗?” 到 “必须的!本人爱测试 ”都有。接下来本人会给你几个小建议,它们可以让你编写测试变得更容易。那会帮助你减少脆弱的...

一、概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示: 下面就每一个区域进行阐述。 二、运行时数据区...

背景 LinkedHashMap继承自HashMap,内部提供了一个removeEldestEntry方法,该方法正是实现LRU策略的关键所在,且HashMap内部专门为LinkedHashMap提供了3个专用回调方法,afterNodeAccess、afterNodeInsertion、afterNodeRemoval,这3个方法的字面意思非常容易...

在编程时,开发者经常会遭遇各式各样莫名错误。近日,Sushil Das在 Geek On Java上列举了 Java 开发中常见的 5 个错误,与君共「免」。 1、Null 的过度使用 避免过度使用 null 值是一个最佳实践。例如,更好的做法是让方法返回空的 array 或者 collection 而...

谁在关心toString的性能?没有人!除非当你有大量的数据在批量处理,使用toString产生了许多日志。然后,你去调查为何如此之慢,才意识到大部分的toString方法使用的是introspection,它其实是可以被优化的。 不过,首先让各位同行一起看看Javadoc回忆下Obje...

一个性能较好的web服务器jvm参数配置: -server//服务器模式 -Xmx2g //JVM最大允许分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JVM重新分配内存。 -Xmn256m //年轻代内存大小,整个JVM内存=年轻代 + 年老代 + 持...

了解了Java 8中所有包的作用,对Java 8有了一个整体的了解,另外也是提高了自身的阅读能力。ITJS的这篇文章列出了Java 8中所有的包,并且对每一个包的功能做了简要的说明,希望对你有所帮助。 ----------------------------------------------------- Java...

JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理。冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所...

一、Mybatis介绍 MyBatis是一勘救嘶流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和PO...