随笔分类 - Java基础
摘要:keytool VS openssl keytool 和 openssl 是俩个证书管理工具。 keytool 是 java JDK 自带的证书管理工具,使用 keytool 可以生成密钥,创建证书。只要装了 jdk,并正确设置了环境变量,就可以之间通过命令行执行 keytool 命令来管理证书。
阅读全文
摘要:什么是时区? 1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1-12区,西1-12区。每个时区横跨经度15度,时间正好是1小时。 时区的分类? 理论时区 上述时区定义其实是理论时
阅读全文
摘要:一、概述 guava⽬前有三种刷新本地缓存的机制: expireAfterAccess:当缓存项在指定的时间段内没有被读或写就会被回收。 expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。-- 常用 refreshAfterWrite:当缓存项上一次更新操作之后的多久会被
阅读全文
摘要:一、TCP TCP(Transmission Control Protocol),传输控制协议,对“传输、发送、通信”进行“控制”的协议,它充分地实现了数据传输时的各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。此外,TCP 是面向有连接的协议,只有在确认通信端存在时才会
阅读全文
摘要:BASIC 认证 BASIC 认证(基本认证)是从 HTTP/1.0 就定义的认证方式。 BASIC 认证会将“用户名:密码”经过 Base64 加密后放入请求头部的 Authorization 字段用于服务端校验,因为采用的是 Base64 加密,密码被盗用的风险极高,另外一般的浏览器也无法实现认
阅读全文
摘要:一、前言 HTTP 协议具有无状态、不连接、尽最大努力的特点,对于 Web 网站的攻击基本也是针对 HTTP 协议的这些特点进行的。比如无状态的特点,就要求开发者需要自行设计开发"认证"和"会话管理"功能来满足 Web 应用的安全,而形形色色的自行实现,也为用户会话劫持、SQL 注入等攻击埋下了风险
阅读全文
摘要:前言: 网上聊 HTTPS 的文章已经数都数不过来了吧,厚着脸皮,整理下读书笔记,结合平常项目的实践,也来聊聊 HTTPS。 ##一、为什么需要 HTTPS? 众所周知,HTTP 协议具有无连接、不可靠、尽最大努力的特点,这也为 HTPP 协议带来信息窃听或身份伪装等安全问题。主要体现在几个方面:
阅读全文
摘要:一、概述 HTTP 首部字段是构成 HTTP 报文的要素之一。在客户端与服务器之间以 HTTP 协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。 使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。 HTTP/1.1 首部字段根
阅读全文
摘要:一、HTTP 请求流程 最初,HTTP 协议的出现主要是为了解决文本传输的难题,由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了实际使用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了各种场景里。 目前主流的 HTTP 版本还是 HTTP/1.1。 HTTP 协议基
阅读全文
摘要:一、写在前面 Java Agent 这个技术出现在 JDK1.5 之后,对于大多数人来说都比较陌生,但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于 Java Agent 实现的,例如常见的热部署 JRebel,各种线上诊断工具(Btrace, Greys),还有阿里开源的 Arthas
阅读全文
摘要:一、为什么要序列化? 1、一般情况下,只有当 JVM 处于运行时,Java 对象才可能存在,即这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中,就可能要求在 JVM 停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能。
阅读全文
摘要:一、概述 最早看到 SPI 这个机制是在 "dubbo 实现" 中,最近发现原来也不是什么新东西,竟然就是 JDK 中内置的玩意,今天就来一探究竟,看看它到底是什么玩意! SPI的全称是 Service Provider Interface,它是一种服务发现机制,它通过在 classPath 路径下
阅读全文
摘要:一、JDK动态代理 Java 在 java.lang.reflect 包中有自己的代理支持,该类(Proxy.java)用于动态生成代理类,只需传入目标接口、目标接口的类加载器以及 InvocationHandler 便可为目标接口生成代理类及代理对象。我们称这个Java技术为:动态代理 在 Jav
阅读全文
摘要:一、概述 JDK7 之前和之后的版本,String 的 intern() 方法在实现上存在差异,本文的说明环境是 JDK8,会在文末说明 intern() 方法的版本差异性。 intern() 方法是一个 native 的方法,返回常量池中的字符串引用,主要体现在以下两点: 1. 如果常量池中已存在
阅读全文
摘要:JDK 1.0 1991年4月,由 James Gosling 博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成
阅读全文
摘要:一、简介 所谓异步调用其实就是实现一个无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 JDK5新增了 Future 接口,用于描述一个异步计算的结果。
阅读全文
摘要:一、multipart/mixed 请求 multipart/mixed 和 multipart/form date 都是多文件上传的格式。区别在于:multipart/form data 是一种特殊的表单上传,其中普通字段的内容还是按照一般的请求体构建,文件字段的内容按照 multi
阅读全文
摘要:一、函数接口 |接口|参数|返回类型|描述| |: :|: :|: :|: :| |Predicate<T>|T|boolean|用来比较操作| |Consumer<T>|T|void|没有返回值的函数| |Function|T|R|有返回值的函数| |Supplier<
阅读全文
摘要:一、介绍和使用 Lombok 是一个 java 库,能以简单的注解形式来简化 java 代码,提高开发人员的开发效率。 常见使用在开发过程中需要写的 javabean,往往开发需要花时间去添加相应的 getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大
阅读全文
摘要:一、概念 Java 反射(Reflection)就是 Java 程序在运行时可以加载一个才知道类名的类,获得类的完整构造方法,并实例化出对象,给对象属性设定值或者调用对象的方法。这种在运行时动态获取类的信息以及动态调用对象的方法的功能称为 Java 的反射机制。 在性能方面,因为类型动态解析,所以特
阅读全文