Lizhi Blog

博观而约取,厚积而薄发

Java Annotations

Java注解

初识Annotation 什么是Annotation 从JDK5开始,Java增加了对元数据(MetaData)的支持,通过Annotation(注解)为程序元素提供了设置元数据的方法。元数据:描述数据的数据。Annotation可以用来修饰包、类、构造器、方法、成员变量、参数、局部变量的声明等,元数据信息被存储在Annotation的“name=value”对中。Annotation是...

Clean Code

代码整洁之道

阅读本书有两种原因:第一,你是一个程序员;第二,你想成为更好的程序员。 第一章 整洁代码 代码会不会消失?人工智能会不会替代程序员的工作? 作者认为我们永远抛弃不掉代码,因为代码呈现了需求的细节,无法被忽略或者抽象,必须明确之。即便是人类,倾其直觉和创造力,也造不出满足客户模糊感觉的成功系统来。语言的抽象成都会继续提升,领域特定语言的数量也会继续增加,但代码终结不了。从我的认知...

Gradle

Gradle User Guide

Gradle 优点 构建脚本的基本知识 test

Java NIO

Java Non-Blocking I/O

参考: Java NIO浅析 理解Java NIO https://tech.meituan.com/linux-jvm-memory.html

Java Socket 编程

Java socket

一切皆Socket! Socket 的历史 套接字API起源于1983年发行的4.2BSD(Berkeley Software Distribution 也称为伯克利Unix),然而由于AT&T的专利保护着UNIX,所以只有在1989年伯克利大学才能自由地发布自己的操作系统和网络库。Berkeley套接字应用程序接口形成了网络套接字标准的精髓,被用于Unix域套接字。 ...

安全的HTTP协议和HTTP2.0

Coumputer network skills

安全的HTTP主要关于与对HTTP的客户端和服务端两端分别进行识别和认证,以及在传输过程加密防盗的问题。而HTTP2.0则将更多的现代网络技术融入的HTTP协议当中,从性能、功能等角度满足当代Web开发的需求。 用户识别与Cookie HTTP最初是一个匿名、无状态的请求响应协议。但是现代的Web站点希望提供个性化服务:个性化问候、推荐、管理信息存档、购物车等会话,所以需要各种针...

HTTP协议详解

Introduction to HTTP

HTTP协议的历史 HTTP(Hypertext Transfer Protocol 超级文本传输协议)是访问万维网的载体,也是与我们接触最密切的网络协议,REST API的概念就强依赖于HTTP协议。从之前的文章互联网协议概览可以看到,它位于应用层,基于TCP/IP协议做可靠的传输和路由,本身设计是为了文本以及多媒体内容的共享,后来随着Web技术的发展,HTTP也提供了诸如缓存、持久连接...

Working Effectively With Legacy Code

修改代码的艺术

什么是遗留代码 关于遗留代码,不同的人有不同的理解:1)从其他人那得到的代码;2)无法理解、难以修改的代码。 而作者的定义:没有编写相应测试的代码。 没有编写测试的代码是糟糕的代码。不管我们有多细心去编写它们,不管它们有多漂亮、面向对象或封装良好,只要没有编写测试,我们实际上就不知道修改后的代码是变得更好还是更糟了。反之,有了测试,我们就能迅速、可验证地修改代码的行为。 修改代码的概...

签名与证书

从微信支付、支付宝和PayPal三种支付API对签名和证书的调用中,总结签名和证书的原理

前置知识 TCP:通过三次握手,四次挥手,保证连接的可靠性; SSL(安全套接层)&TLS(传输层安全):在传输层对网络连接进行加密;通过Client生成的随机数R1,R3 + Server生成的随机数R2 根据算法生成对称秘钥; SSL双向握手:Server端请求Client发送证书和公钥,Client发送私钥加密后的Hash信息,Server用公钥验证。其他都类似单向握手;...

日志框架分析

Java的日志框架,logging,Log4j,Slf4j等功能对比及源码分析

Java中打印日志是最基本的操作,也是非常重要的一项功能,找Bug、监控应用都离不开log Java.util.logging 和 log4j都是实现层 slf4j 和 commons-logging是接口层,底层可以依赖不同的实现 Tips on logging in Java 为什么我们要在Java中打印日志?每个人都从System.out.println(...