分布式系统常见的事务处理机制

2017-04-13 Distributed Transaction

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。另外一个例子,当访问单一服务器管理的数据的进程数不断增加时,系统就需要对服务器的数量进行扩充,此时,对服务器进行复制,随后让它们分担工作负荷,就可以提高性能。但同时,如何保障多个数据节点之间数据的一致以及如何处理分布式事务,将成为为一个复杂的话题。本文将介绍常用的事务处理机制。


OAuth 2.0 认证的原理与实践

2017-03-24 OAuth2 Spring Security GitHub

使用 OAuth 2.0 认证的的好处是显然易见的。你只需要用同一个账号密码,就能在各个网站进行访问,而免去了在每个网站都进行注册的繁琐过程。 本文将介绍 OAuth 2.0 的原理,并基于 Spring Security 和 GitHub 账号,来演示 OAuth 2.0 的认证的过程。


Spring Data + Thymeleaf 3 + Bootstrap 4 实现分页器

2017-03-05 Spring Spring Data Thymeleaf Bootstrap

实际上分页器或者分页组件在现实中都有广泛着的应用,照理来说老卫没有必要单独撰文来提这茬。事实是,我近期刚好在写一门关于Spring Data、Thymeleaf 3、Bootstrap 4 的应用课程,所以用了Bootstrap 4的样式,结果之前很多例如 Bootstrap 3 的表格、分页器啊之类的插件都不能很好的兼容,百度谷歌无果,而且 Bootstrap 4 还没有出稳定版本,官网的示例也是少的可怜,最终下决心要自己写个分页器了,所用到的技术就是 Spring Data、Thymeleaf 3、Bootstrap 4 。


用大白话聊聊分布式系统

2017-03-05 Distributed

一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。


Thymeleaf 3 引入了新的解析系统

2017-02-19 Thymeleaf

如果你的代码使用了 HTML5 的标准,而Thymeleaf 版本来停留在 2.x ,那么如果没有把<input>闭合,如下:

<form>
 First name:<br>
<input type="text" name="firstname">
<br>
 Last name:<br>
<input type="text" name="lastname">
</form> 

就会抛出如下错误。

org.xml.sax.SAXParseException: 元素类型 "input" 必须由匹配的结束标记 "</input>" 终止。

使用 GFM Eclipse 插件时,不在项目里面生成 HTML 文件

2017-02-19 GFM

GFM 是 GitHub Flavored Markdown Viewer 的简称,是一款对 GitHub 友好的 Markdown 编辑器 ,在 Eclipse中可以以插件形式安装。

在使用过程中,我们发现对使用 GFM 编辑过的.md文件,都会在同个目录下生成.md.html的同名文件。显然,很多时候,我们并不需要保存.md.html文件,我们只想把.md文件存储到代码库。


使用 PMD Eclipse插件

2017-02-14 PMD

PMD 是一个源代码分析器。 它发现常见的编程缺陷,如未使用的变量、空 catch 块、不必要的对象创建等等。 它支持Java、JavaScript、Salesforce.com Apex、PLSQL、Apache Velocity、XML、XSL 等。

此外,它包括 CPD(copy-paste-detector,复制粘贴检测器)。 CPD 在Java、C、C++、C#、Groovy、PHP、Ruby、Fortran、JavaScript、PLSQL、Apache Velocity、Scala、Objective C、Matlab、Python、Go、Swift 和 Salesforce.com Apex 中能够发现重复的代码。

本文介绍了如何在 Eclipse 里面安装、使用 PMD 插件的过程。


使用 Eclipse Checkstyle Plugin

2017-02-13 Checkstyle

Checkstyle是一个开发工具,帮助程序员编写符合编码标准的Java代码。 好的代码规范,在一个项目协作的团队中尤为重要。Checkstyle 能够自动化检查Java代码的过程,免去了人工校验的繁琐。 同时,Checkstyle是高度可配置的,可以支持几乎任何编码标准。 只需要提供了一个示例配置文件,就能支持代码的约定。

本文介绍了如何在 Eclipse 里面安装、使用 Checkstyle 插件的过程。


imooc 讲课技巧

2017-02-12 imooc

总结自 imooc 上的讲课技巧。对比培养演讲、讲课培训还是比较有帮助的。



通过 WSL在Windows下愉快的玩耍Linux

2017-02-05 WSL Windows

WSL(Windows Subsystem for Linux) 是 在Windows系统中为那些熟悉Linux用户准备的诸多子系统功能。换言之,你可以在Windows环境下来执行Linux操作,运行 Linux程序。这对于Windows、Linux双系统有需求的用户来说是个不错的功能。本文详细介绍了如何使用 WSL。





为什么我们迫切需要持续集成(Continuous Integration)

2016-12-25 CI

持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了当前软件开发过程中存在的问题,讲解了持续集成、持续集成服务器的概念,最终探讨了为什么我们需要持续集成来解决这些问题。


ToadforDB2_Freeware_6.x 安装报错“Toad did not find a default DB2 client”

2016-12-21 DB2

ToadforDB2 是比较好用的图形界面的DB2管理工具,分为免费版和商业版本。在新版的 ToadforDB2_Freeware_6.x 进行安装时,会提示报错“Toad did not find a default DB2 client”,即找不到 DB2 的客户端,意思是 6 版本区别与 5 版本 所不同的是,它依赖于 DB2 client 的实现。



Apache Mesos 在不同平台下的安装

2016-11-20 Mesos

在传统上,物理机和虚拟机是数据中心的典型的计算单元。当应用部署后,这些机器需要安装各种配置工具来对这些应用做管理。机器通常被组织成集群,提供独立的服务,而系统管理员则来监督其日常的日常运作。最终,这些集群达到其最大容量时,需要多机联网来处理负载,这就对集群的扩展带来了挑战。

在2010年,UC Berkeley 大学就对上述问题,提出了解决方案,这就是现在的 Apache Mesos。Mesos 抽象了 CPU、内存、硬盘资源,让数据中心的功能对外就像是一个大的机器。Mesos 创建一个单独的底层集群来提供他们给应用程序所需要的资源,而不会超出虚拟机和操作系统的性能限制。

本节介绍了 Mesos 在不同平台上的安装和使用过程。


Zabbix 在不同平台下的安装

2016-10-16 Zabbix

Zabbix 是一个基于 Web 界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。

Zabbix 能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存在的各种问题。

本节介绍了 Zabbix 在不同平台上的安装和使用过程。


Nagios 在不同平台下的安装

2016-10-15 Nagios

Nagios 是一款开源的免费网络监视工具,致力于打造符合行业标准的 IT 基础架构的监控系统。Nagios 提供了服务器、网络和应用的完整的 IT 监控和报警,可以有效监控 Windows、Linux 和 Unix 的主机状态,以及交换机、路由器、打印机等网络设备。在系统或服务状态异常时可以发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信进行通知。

本节介绍了 Nagios 在不同平台上的安装和使用过程。


Redis 数据类型及抽象

2016-09-18 Redis

Redis 不仅仅是简单的 key value 存储,实际上它还是一个 data strutures server(据数结构服务器),用以支持不同的数值类型。在 key value 中,value 不仅仅局限于 string 类型,它可以是更复杂的数据结构:


Apache HBase 入门教程

2016-09-12 HBase

Apache HBase 是一个分布式的、面向列的开源数据库。正如上一节所提到的,该技术来源于 Google 的 Bigtable。就像 Bigtable 利用了 GFS 所提供的分布式数据存储一样,Apache HBase 在 Hadoop 之上提供了类似于Bigtable 的能力。HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 Apache HBase 基于列的而不是基于行的模式。


Apache Hadoop 入门教程

2016-08-28 Hadoop

Apache Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。可以让用户在不了解分布式底层细节的情况下,开发出可靠、可扩展的分布式计算应用。

Apache Hadoop 框架,允许用户使用简单的编程模型来实现计算机集群的大型数据集的分布式处理。它的目的是支持从单一服务器到上千台机器的扩展,充分利用了每台机器所提供本地计算和存储,而不是依靠硬件来提供高可用性。其本身被设计成在应用层检测和处理故障的库,对于计算机集群来说,其中每台机器的顶层都被设计成可以容错的,以便提供一个高度可用的服务。

Apache Hadoop 的框架最核心的设计就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,而 MapReduce 则为海量的数据提供了计算。


Quartz Cron Expressions 详解

2016-07-11 Quartz

Quartz 是一个完全由 Java 编写的开源企业级作业调度框架。在处理 CronTrigger 进行周期性任务触发时,需要进行时间的配置,其中就需要使用 Cron Expressions。本文将对 Cron Expressions 进行详细讲解。



远程过程调用(RPC)详解

2016-06-30 RPC

本文介绍了什么是远程过程调用(RPC),RPC 有哪些常用的方法,RPC 经历了哪些发展阶段,以及比较了各种 RPC 技术的优劣。



在浏览器里启用混合内容

2016-05-30 Web

本文介绍了在浏览器里什么是混合内容,为什么要禁用混合内容,以及在各种浏览器里面如何启用混合内容。



DB2 所有数据库表、表字段注释乱码问题的排查及解决方案

2016-04-21 DB2

问题背景:自2015年以来,国家项目测试平台 DB2 所有表的表名、表字段等中文注释均开始存在乱码问题,严重影响开发人员对于数据库表含义的理解(特别是在数据库设计文档缺乏的情况下)。

本文记录了解决该历史遗留问题的相关步骤,总结遇到的坑,最后提出解决该问题的方案。


RESTful API 设计最佳实践

2016-04-17 REST

Web API 近几年变得越来越火,而简洁的 API 设计在多后端系统交互应用中也变得尤为重要。通常,会使用 RESTful API 来作为我们的 Web API 。本文介绍了几种简洁 RESTful API 设计的最佳实践。


Hibernate 性能优化法则

2016-04-16 Hibernate Optimization

Hibernate 是 Java EE 应用中流行的 JPA 框架,简单易用,但很多使用过 Hibernate 的开发者都普遍反映 Hibernate 性能低下。究其原因,还是使用者没有对 Hibernate 进行过深入理解,对 Hibernate 的应用也只是浮于表面。本文介绍了几种简单实现 Hibernate 性能优化的方法。






Java I/O 模型的演进

2016-03-01 Java IO

什么是同步?什么是异步?阻塞和非阻塞又有什么区别?本文先从 Unix 的 I/O 模型讲起,介绍了5种常见的 I/O 模型。而后再引出 Java 的 I/O 模型的演进过程,并用实例说明如何选择合适的 Java I/O 模型来提高系统的并发量和可用性。


浅谈 CAP 理论

2016-02-28 CAP Distributed

本文介绍了介绍了分布式系统著名的 CAP 理论。什么是 CAP 理论?为什么说 CAP 只能三选二?了解 CAP 对于系统架构又有什么指导意义?本文将一一作答。


Way Lau

Software Engineer and Full Stack Developer, now work and live in Shenzhen, China. Detail

Donate

See the list of Donors.