Fork me on GitHub

jdk

Java NIO 概述

在 java 1.4 以前, Java 对 I/O 的支持并不完善,开发人员在开发高性能 I/O 程序的时候,会面临一些巨大的挑战和困难,主要问题如下: 没有数据缓冲区, I/O 性能存在问题; 没有 C 或者 C++ 中的 Channel 概念,只有输入和输出流 同步阻塞式 I/O 通信(BIO),通常会导致通信线程被长时间阻塞 支持的字符集有限,硬件可移植性不好。 所以在 JDK 1.4 以后, Java 支持非阻塞的 I/O 通信模型的类库,被称为 NIO。可...

JDK 动态应用实例

公司需要新开发一个项目,功能在这里不需要Care,主要是基于我们之前的会员网关以及资金网关。这两个服务都是支持 GET/POST 的 https 请求的调用。因为我们这个项目是第三方支付,所以安全方面比较关注。请求方式使用的是 https 方式,然后数据在传输过程过程中需要把请求的数据进行加签,对于敏感数据(比如手机,实名,银行卡等)还需要加密。其中请求参数包括基本参数与业务参数,而对于响应参数的格式是 JSON 的数据 基本参数就是所有请求都需要传递的参数:主要包...

Java AES 加密算法

转载地址:JAVA版AES加密算法 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密...

Jdk8 Optional 的正确姿势

转载地址:jdk8 Optional 的正确姿势 我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 NullPointException 的问题, 于是代码就开始这么写了. 1234567891011Optional<User> user = ......if (user.isPresent()) { return user.getOrders();&#...

Java Class Object

刚开始学的时候,老师对我们说的第一句话就是在Java的世界里一切都是对象。那么这个对象是什么呢?就是在java.lang包下面的Object对象。Object是一个具体的类,它的设计主要是为了扩展。在JDK中对于Object的描述如下: /** Class {@code Object} is the root of the class hierarchy. Every class has {@code Object} as a superclass. All obj...

Java Annotation 原理

引用地址:Java注解(Annotation)原理详解 注解在Java中到底是什么样的东西?具体是如何实现的?本文将一层一层深入探究注解的实现原理。为了尽可能的将分析的过程呈现出来,所以文章包含了大量的截图和代码。(ps:如果图片看不清楚,请将网页放大来看,chrome可以通过ctrl+鼠标滚轮放大) ###1、前期准备开始分析前,提醒一下,下面的分析必须具备以下知识 知道如何自定义注解 理解Java动态代理机制 了解Java常量池 如果不具备以上的知识,会...

Java IO 总结

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 ###1、IO流的分类 根据不同的类型或者按流向可以把IO分为以下两种不同的类型: 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 ####1.1 Java IO相关的类:|类|说明||—|—||InputStream|字节输入流||OutputStre...

Java Custom HashMap

我们都知道hashmap的数据结构是基于数组+链表,现在自己就仿照JDK里面的HashMpa来实现一个简易的自己的hashmap。主要考虑以下功能点: put:把值放入到Map中储存起来 get:从Map中获取一个键值的值 size:获取Map的储存数据的个数 ###1、定义接口 – MyMap定义一个MyMap接口,用于实现简单的Map接口 MyMap.java123456789101112131415public interface MyMap<K, V...

Java8 Interface Lambda

Java是一门面向对象编程语言。面向对象编程语言和函数式编程语言中的基本元素(Basic Values)都可以动态封装程序行为:面向对象编程语言使用带有方法的对象封装行为,函数式编程语言使用函数封装行为。但这个相同点并不明显,因为Java的对象往往比较“重量级”:实例化一个类型往往会涉及不同的类,并需要初始化类里的字段和方法。 在Java8中接口也很多变化: ####1、接口变量的访问1) 局部变量: 从Java8开始,如果在内部类里面访问局部变量,会自动给局部变量加...

Java Collection Stack

栈只允许访问一个数据项:即最后插入的数据项。移除这个数据项后才能访问倒数第二个插入的数据项,依此类推。而Stack这个类就是实现这种数据结构的类,也就是说Stack这个类代表着last-in-first-out(LIFO).Stack继承自Vector并且添加了5个方法,然后就可以把它对待成一个栈结构。 push() 添加一个元素入栈. pop() 删除在栈顶的元素,并且返回这个元素 peek() 查看在栈顶的元素,但是并不会把这个元素从栈中移除 empty() 测试...