Posts
All the articles I've posted.
-
Hibernate 实现增删查改
Hibernate 是一种 Java 语言下的对象关系映射的解决方案,它为面向对象的领域模型到传统的关系型数据库的映射提供了一个使用方便的框架。 本文讲述如何使用 Hibernate 来实现数据库中基本的增删查改操作。 创建数据库表 为实现我们的例子,我们先创建一个表并插入一些数据。 创建 M...
-
IntelliJ IDEA 添加 MySQL 图形访问界面
IntelliJ IDEA 不愧为一款强大的 Java IDE,其提供的访问 MySQL 数据库的图形界面也异常的强大。 本文讲述如何配置 IntelliJ IDEA 来添加访问 MySQL 的图形界面。 打开 Database 选项窗口,View Tool windows Database。...
-
使用 JDBC 连接MySQL
JDBC(Java Database Connectivity,Java数据库连接)是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。 本文讲述如何使用 JDBC 来连接和访问数据库。 为方便引入 JDBC 依赖包,我们创建 Mave...
-
CentOS 7 安装 MySQL
官方推荐使用 yum 源来安装 MySQL,本文讲述如何使用 yum 源来安装 MySQL。 一、添加 MySQL yum 源 可以采用命令来添加 MySQL 源。在 https://dev.mysql.com/downloads/repo/yum/ 页面选择合适 rpm 包,这些 rpm 包...
-
Python 实现 Shell 脚本功能
最近生产环境上发现有服务器进程出现任务堆积的情况,由于一时无法定位出原因,故对堆积的任务数量进行监控。进程日志中已有任务数量的输出,故只需要编写一个脚本读取日志中的任务数量,发现任务数量超过某个阈值就发送告警短信即可。 本想使用 Shell 脚本来实现,没想到 Shell 的语法实在不好掌握,...
-
Python 实例方法、类方法和静态方法
在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆。本文通过代码例子来说明它们的区别。 实例方法 Python 的实例方法用得最多,也最常见。我们先来看 Python 的实例方法。 输出: >...
-
Hexo 网站配置免费阿里云证书
原来的个人网站 leehao.me 使用了阿里云的负载均衡服务,因此 HTTPS 证书也是部署在负载均衡服务器上。文章《在阿里云部署 Hexo 网站》介绍了采用负载均衡方式来部署网站的方法。 考虑到网站访问流量不高且为了减少费用,决定不再使用负载均衡服务,而是直接采用单个 ECS 服务器的方式...
-
Python 装饰器浅析
Python 装饰器是 Python 中常常使用到的一种语法糖,它可以大幅度减少重复代码,使用起来十分方便。另一方面,装饰器的定义往往会导致出现函数重重嵌套的情况,这会给装饰器的实现者带来阅读代码的困难。 本文剖析 Python 装饰器的定义与用法。 不带参数的装饰器 我们先来看一下不带参数的...
-
Python 名称空间与作用域
这篇文章介绍 Python 的名称空间以及变量的作用域。 Python 的名称 Python 的名称(Name)是对象的一个标识(Identifier)。我们知道,在 Python 里面一切皆对象,名称就是用来引用对象的。说得有点玄乎,我们以例子说明。 例如,在这个语句中,是个存储在内存中的一...
-
记一次 BUG 的排查过程
最近生产上上线了一个新的功能,在业务人员使用过程中,通过查看日志我们发现一个诡异的问题。这篇文章记录一下这个问题的排查过程以及解决方法。 存在问题的程序使用了 C 语言的 Redis 客户端 hiredis 来连接和操作 Redis。由于处于分布式的环境,所以我们使用了 Redis 的事务的特...
-
Nginx 日志接入 Elastic Stack 系统
文章《搭建 Elastic Stack 日志系统》 描述了如何利用 Kibana,Elasticsearch,Filebeat 来搭建日志系统。本文在上一篇 Elastic Stack 文章的基础上,说明如何将 Nginx 的日志接入 Elastic Stack 日志系统。 为了更新在 Kib...
-
Nginx 日志改成 JSON 格式
Nginx 日志默认为普通文本的格式,例如,下面是 Nginx 的一行访问日志: 为了便于利用 Elastic Stack 日志平台收集展示 Nginx 的日志,可以将 Nginx 的日志改成 json 的格式。修改后的 json 日志格式如下所示: 为了修改 Nginx 的日志格式改成 js...
-
Node.js 概览
Node.js 是一个开源的项目,可以让 JavaScript 的代码在浏览器之外运行。 我们知道,JavaScript 代码可以在浏览器中运行,它可以访问 window 和 document 这样的全局对象以及其他 API 和库函数。 为了支持 JavaScrip 在浏览器以外的环境运行,...
-
Python 和 Java 进行 DES 加密和解密
DES 为 Data Encryption Standard (数据加密标准)的缩写,是一种常见的对称加密算法。有关对称加密与非对称加密的特点及其应用场景,本文就不描述了,读者可以自行 google 。本文说明如何使用 Java 和 Python 两种语言来实现 DES 的加解密。 最近碰到的...
-
搭建 Elastic Stack 日志系统
Elastic Stack 是原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼。Elastic Stack 在实时日志处理领域已开成开源界的第一选择。 本文讲述如何搭建 Elastic Stack 日志系统,使用的套件包括 Kibana,Elasticsearch,以及...
-
GDB 调试
GDB 是一个功能强大的调试器,也是 Linux 系统中默认的调试器。GDB 主要提供以下四种功能,这些功能可以方便我们定位程序的 BUG。 启动程序 设置断点 检查程序运行状态,例如查看变量的值 修改程序运行状态,例如修改变量的值 本文简单讲述 GDB 的调试方法。 我们需要调试的程序如下所...
-
记一次程序优化记录
忙了几个月的项目终于在生产环境上上线,虽然接下来还有不少工作需要跟进,但终究不像上段时间那么忙了,因此也就能利用周末的时间,对之前优化程序性能的过程作下记录,也当是个小小的经验总结。 程序的应用场景是往 Redis 写入具有大量记录的二维表,或者从 Redis 读取具有大量记录的二维表数据。由...
-
使用 Supervisor 来管理 Redis 进程
Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor 可谓运维利器,使用 Supervisor 来管理进程,可以提高系统的高可用特性。 随着 Re...
-
Redis AOF 持久化学习笔记
文章 Redis 快照持久化学习笔记 介绍 Redis 快照持久化的功能,除了快照持久化外,Redis 还提供了 AOF(Append Only File)持久化功能。与快照持久化通过直接保存 Redis 的键值对数据不同,AOF 持久化是通过保存 Redis 执行的写命令来记录 Redis ...
-
Redis 快照持久化学习笔记
Redis 是一种内存数据库,它将数据存储在内存中,所以如果不将数据保存到硬盘中,那么一旦 Redis 进程退出,保存在内存中的数据将会丢失。为此,Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面。一种方法叫做快照(snapshotting),它可以将存在于某一时刻的所有数据写入硬...