HTTPS 原理与实现

HTTPS 原理与实现

在日常互联网浏览网页时,我们接触到的大多都是 HTTP 协议,这种协议是未加密,即明文的。这使得 HTTP 协议在传输隐私数据时非常不安全。因此,浏览器鼻祖 Netscape 公司设计了 SSL(Secure Sockets Layer) 协议,用于对 HTTP 协议传输进行数据加密,即 HTTPS 。

HTTPS 和HTTP 协议相比提供了:

  • 数据完整性:内容传输经过完整性校验
  • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
  • 身份认证:第三方无法伪造服务端(客户端)身份

SSL 目前版本是 3.0,之后升级为了 TLS(Transport Layer Security) 协议,TLS 目前为 1.2 版本。如未特别说明,SSL 与 TLS 均指同一协议。

阅读更多
如何选择各类开源许可证,有何异同?

如何选择各类开源许可证,有何异同?

IT 行业诞生初期,开源精神极大的推动了计算机行业的飞速发展。对于人类影响深远的例如 Internet 协议,邮件,FTP 服务,都是免费的。

计算机科学家们,无私共享出他们智慧结晶的产物。随着行业的发展,越来越多的从业者加入了这个行业,可如果秉持着开源免费的思想,缺乏市场足够的资金支持,行业也难以走的长远。因此,正是基于这个目的,开源社区衍生出了诸多的协议许可证。要使用开源自然可以,但使用者就必须遵守开源所附带的协议,只在许可范围内行事。

许可证是为了保护作者的合法权益(包括合理的知识产权和专利权力以及避免因开源惹火烧身的免责的权力),开源使软件开发者避免了重复造轮子,让后来者可以站在巨人的肩膀上做更多的事。有的许可协议宽松,有的协议严格,在此对这些协议进行一次梳理。

协议,当前有 开源许可证知识共享协议(Creative Commons, CC) 。开源许可证主要针对软件领域,知识共享协议主要针对文化产出,例如文章、数据、视频等。

阅读更多

Spring 与 MyBatis 集成详解

MyBatis 是介于 JDBC 与 Hibernate 之间的半 ORM 应用框架,在 Spring 开发中占有很重要的地位。
此文对此做简要的总结。

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

—— 摘自 MyBatis 中文官网

阅读更多

漫谈 JDBC 以及与 Spring 之整合

JDBC 是 Java 数据库连接(Java Database Connectivity)的简称,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,用来连接 Java 与数据库,提供了诸如查询和更新数据库中数据的方法。


JDBC 的 API 支持两层和三层处理模式进行数据库访问,但一般的 JDBC 架构由两层处理模式组成:

  • JDBC API : 提供了应用程序对 JDBC 管理器的连接。
  • JDBC Driver API : 提供了 JDBC 管理器对驱动程序连接。

JDBC API 使用驱动程序管理器和数据库特定的驱动程序来提供异构(heterogeneous)数据库的透明连接。

JDBC 驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。

阅读更多

Java 8 中的函数式编程与流之总结

还记得在上一份工作面试时,被问到了是否熟练 Java8Scala, 我说不会。

Java 8 本已是一项不新的技术,虽然不复杂,却没掌握,的确是我不该。入职新东家后,纯正的互联网基因给了我短时间掌握和使用的机会。在学习了 《Java 8 in Action》,并经过一段时间实践后,在此做一次后知后觉的总结。

Java 8 于 2014年 3月发布,主要的新特性我认为就是两个:流处理、函数式编程。

函数式编程是一个古老而久远的话题。一句话总结,就是函数被作为一等公民,方法可以直接传递函数,函数只有输入输出,而不对外界造成影响(无共享的可变数据)。例如方法 getBetterApple(Apple A, Apple B, Comparator<Apple> comp) 中的 Comparator<Apple> 就是一个函数,此处定义了一个方法实现获得一个更好的苹果,但具体什么是“好”的这个评判标准,则可以通过传入函数来改变,例如按照大小、颜色、水分等等来比较。为了适应函数式编程,Java 8 对原有的接口做了相应改变,允许了在 interface 中定义 default 默认方法

,是针对日常工程中最为常见的集合制造与处理过程,其基础是函数式编程。Java8 提供了过滤、映射、循环等常用操作的 Stream API,并支持开发者自定义实现。并在流基础上,提供了多线程封装,只需要将 stream() 改为 parallelStream() 就完成了从单线程向多线程的转变,非常简单,不过其中也有些细节(坑),下文会展开介绍。

除了以上两点,Java 8 还提供了 Optional 、异步 API、新的时间处理API 等。

阅读更多

关于 Maven (三) POM.xml 配置详解

POM 代表项目对象模型。它是工作在 Maven 的基本单位。这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。
POM 包含的项目是使用 Maven 来构建的,以及它也包含各种配置信息。
POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的 POM。它读取POM,得到所需要的配置信息,然后执行目标。

阅读更多

关于 Maven (一)介绍入门与安装

每次对一项新技术,都是从一个陌生名词开始的。记不起什么时候看到的 Maven 这词,觉得高大上(在IT这行混久了,一旦不学习,看什么都觉得高大上了),后来终于运用到了实践当中,问了下厂,发觉自己落伍太久了。抽个没加班的日子,把这个给梳理一下。

阅读更多

聊聊几种常用的 Java 构建工具: Maven, Ant+ivy 与 Gradle 之比较

在前公司开发时,为公司项目引入了 Maven,摆脱了无止境的 jar 管理,方便了工程打包和发布。当时的项目,由于我拥有着绝对的主导权,并且项目本身工程量不大。Maven 运行的非常好,迁移转交给同事,基本上能克服原有的复杂的环境配置和依赖管理,实现顺利的交接。
近了新的公司,发现这边对于项目构建,采用的是 Ant+ivy 方案,这么选择固然有其历史原因,作为后来者,想要改变原有的技术方案,是十分困难的(由于变更风险巨大,基本不可能实现),因此,我不得不去学习这种新的构建方案。

之前仅学习过使用过 Maven,在了解了 Ant 后发现了其诸多的优点。由于对 Maven、Ant+ivy、Gradle 这几种构建又存在着一些困惑,故在此做一个梳理,区分下优劣,仔细了解下应用场景。
几种构建方法,没有绝对的好坏之分,必须要针对引用场景具体问题具体分析

阅读更多

Markdown 语法简单小结

最终,我的博客还是回归到了起点。
博客断断续续几年,尽是折腾界面美化和各种网站框架或者建站工具,最终,失去了其核心价值,即内容和思想的沉淀。这更使得我的博客流于表面,对于自己的成长,也没有起到太多正面的作用。

反思后,决心回归最简单的格式外观,将重点集中于高质量内容的沉淀上。
这也是为什么又回到了 Markdown 的怀抱。

至于编辑器,我用过了众多纯编辑器,众多 Web 版的富文本编辑器,以及许许多多Markdown 编辑器后,决定使用最的 Vim。同时,也推荐一款 Markdown 编辑器Typora。这款软件足够轻量级,同时功能做到了尽可能的简单。至于 Web 编辑器,我使用简书

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×