自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leo的博客

记录开发的点滴,更好的阅读体验请访问:leehao.me

原创 C++ Lambda 学习笔记

C++ 中,对于一个对象或一个表达式,如果可以对其使用调用运算符(()),则称它是可调用的。即,如果 e 是可调用的,则可以这样使用: e(args) 其中,args 是一个逗号分隔的一个或多个参数的列表。 C++ 中可调用对象除了我们熟悉的函数或函数指针外,还包括函数对象以及 lambda 表...

2020-04-26 21:45:59 58 0

原创 C++ 函数对象学习笔记

函数对象本质上是一个类对象,它重载了函数调用操作符 operator()。调用操作符的函数体实现函数的功能。 例如,我们定义类 LessThan: class LessThan { public: bool operator() (const string &s1, const s...

2020-04-26 10:48:17 102 0

原创 POJ 1401 Factorial 解题报告

以下是算法的直观解释。 假设求60!的结果后面有几个0。 由《编程之美》可知其实是求1,2,3……60中共有几个5的因子,如,5有一个,10有两个,……一起加起来即得到结果。但是如果一个一个这样计算下去,会超时的。 其实还有更简单的计算方法。 我们知道,在1->60的数中,以下的数可以被5整...

2020-03-04 08:22:15 735 0

原创 在多线程环境中使用Jedis

Jedis是一个Java语言的Redis客户端,它为Java语言连接与操作Redis提供了简单易用的接口。Jedis不是线程安全的,故不应该在多线程环境中共用一个Jedis实例。但是,也应该避免直接创建多个Jedis实例,因为这种做法会导致创建过多的socket连接,性能不高。 要保证线程安全且...

2020-03-04 08:18:37 28763 7

原创 SOAP Web Services 简介

SOAP(Simple Object Access Protocol)是一种基于 XML 的 web 服务协议。SOAP 是平台独立的,不依赖于特定的语言,例如,我们可以使用 C#,C/C++,或者 Java 语言来实现 SOAP web 服务。SOAP 的优点SOAP 的优点有: WS Secu...

2020-03-04 08:17:35 1221 0

原创 Prometheus 使用阿里云邮件推送发送告警邮件

我们在文章 《使用 docker-compose 搭建 prometheus 监控系统》 的基础上,增加 prometheus 的告警功能。 Prometheus 指标的收集和存储与告警是分开的,告警功能由 alertmanager 提供。我们需要在 prometheus 定义告警规则,这些规则可...

2020-03-03 15:31:49 176 0

原创 使用 docker-compose 搭建 prometheus 监控系统
原力计划

Prometheus 是当前一套非常流行的开源监控和报警系统,于 2016 年加入了 Clound Native Computing Foundation,是继 kubernates 之后的第二个托管项目。 本文讲述如何使用 docker 快速搭建 prometheus 监控系统。 概览 本文的实...

2020-02-16 21:27:45 353 0

原创 使用 gitlab 搭建 docker 私有仓库

我们知道,gitlab 可以用来管理 git 提交的源代码,此外,gitlab 还集成了 docker registry 的功能,可以用来作为一个 docker 镜像私有仓库使用。 启用 gitlab registry 功能 我们假设已安装好 gitlab,具体安装可参考 《使用 docker 安...

2020-02-12 10:26:04 382 0

原创 使用 docker 安装 gitlab

Gitlab 作为开源的 git 代码仓库,功能强大,使用起来非常方便。本文讲述如何使用 docker 来安装 gitlab。 本文假定已安装好 docker,可以输入 docker --version 来验证是否已正常安装,输出: Docker version 19.03.5, build 6...

2020-02-11 15:45:11 146 0

原创 Docker Compose 入门教程
原力计划

Docker compose (以下简称为 compose)可用于定义和运行多容器 docker 应用程序。 通过 compose,我们可以使用 YAML 文件来配置应用程序的服务(services),然后只需要通过一个命令,就可以将配置的所有服务启动起来。 使用 compose 只需要三步: ...

2020-02-09 21:39:01 164 0

原创 Docker 数据持久化

概览 默认情况下,在 docker 容器(container)内创建的文件或产生的数据都只是保存在容器的可写层,这意味着当容器不存在时,容器内产生的数据也没有保存下来。 Docker 提供两种容器数据持久化的方法,使用这两种方法即使容器不存在时,数据也能持久化下来: Bind mount:bin...

2020-02-06 19:54:06 115 0

原创 gRPC C++ 入门教程

之前曾经写过 Python 使用 gRPC 收发消息的教程,可以参考文章 《体验 gRPC 那些事儿》。最近计划在 C++ 项目中使用 gRPC,故写一篇文章来记录一下如何使用 C++ 语言来实现一个简单的 gRPC 服务端和客户端程序。 本教程需要先安装 gRPC,有关 gRPC 的安装教程可以...

2020-02-01 20:38:14 656 0

原创 CentOS 7 安装 gRPC

之前的文章曾经介绍过有关 protobuf 的安装使用,《Google Protocol Buffers 体验日志》,不过那篇文章针对的 MacOS 系统。最近在公司环境引入 gRPC 的使用,服务器都是 CentOS 7 系统,故写篇文章记录 CentOS 7 下如何安装 gRPC。 安装依赖的...

2020-01-23 10:49:16 134 0

原创 分布式对象存储服务器 MinIO 牛刀小试

数据存储包括三种类型,分别是块存储,文件存储和对象存储。有关这三种类型的差别,可以参考 对象存储、文件存储和块存储的区别。 MioIO 是一个开源的分布式对象存储系统,非常适合于存储大容量非结构化的数据,例如图片,视频,日志文件,备份数据等。本文讲述如何快速搭建 MioIO 服务端和客户端,以便于...

2020-01-22 16:11:42 370 0

原创 携程 Apollo 配置中心初探

最近在对开源配置中心进行调研。当前流行的开源配置中心包括 Apollo,Nacos,以及 Disconf。Apollo 应该是当前最流行,所以写篇文章来记录 Apollo 的安装与使用。 Apollo 是携程开源的分布式配置中心,能够集中化管理不同环境,不同集群的配置,配置修改后能够实时推送到应用...

2020-01-21 09:24:20 207 0

原创 一文带你了解 RTO 和 RPO

RTO 和 RPO 都是企业灾难恢复(Disaster Recovery, DR)需要考虑的关键指标,这两个指标可以用来指导企业来制定合适的业务系统服务或数据的恢复方案。 本文介绍 RTO 和 RPO 的概念以及区别。 图:RPO(Recovery point object) 和 RTO(Rec...

2020-01-12 21:50:55 594 0

原创 记一次 socket 通信性能优化过程

上段时间测试人员对某个服务端程序进行了性能压力测试,发现当使用 JMeter 向程序并发发送 100 个请求后,再发送请求,则会出现程序无法响应的问题。想着这个问题比较棘手,拖了不少时间。最近其他事情少了点,可以专心下来优化这个程序的性能,就着手开干了。 利用 Wireshark 和 Python...

2019-09-20 18:09:37 285 1

原创 Oracle / PL SQL: CURSOR FOR LOOP 使用

FOR LOOP 介绍 为了对游标进行遍历,可以使用 FOR LOOP 语句实现,语法如下: FOR record IN cursor_name LOOP process_record_statements; END LOOP; 对游标进行 FOR LOOP 遍历时,省去了 ROWTYPE ...

2019-08-25 20:19:01 271 0

原创 SQL JOIN 的使用

由于工作需要,现在也开始写一些复杂一点的 sql 了。由于之前对于 join 与 where 关键字的使用一直有疑惑,故写一篇文章整理一下,算是对 sql 中各种表联结使用的一个总结。 SQL JOIN 的作用 sql 关键字 union 与 intersect 属于以行方向为单位的集合运算,进行...

2019-04-21 20:12:16 496 0

原创 贝叶斯公式学习笔记

贝叶斯公式有着广泛的应用。最近重新拿起上学时的教科书——浙大《概率论与数理统计(第三版)》,复习了一遍全概率公式与贝叶斯公式,算是捡起了一些记忆。 本文从条件概率出发,推导出全概率公式以及贝叶斯公式,并以例子说明贝叶斯公式的应用。 条件概率 条件概率研究如何计算事件 AAA 已发生的条件下事件 B...

2019-04-07 22:23:08 685 0

原创 CLion 实现远程调试

CLion 是 JetBrains IDE 全家桶产品之一,可以用来开发 C/C++ 项目,而 GDB 则可以用来对 C/C++ 程序进行调试。 作为一款调试器,GDB 为程序开发人员提供了强大的调试功能,但却需要使用命令来执行调试操作,操作起来不是很方便。(有关 GDB 的使用,可以参考文章《G...

2019-02-16 08:29:10 12209 8

原创 债券的价格

之前一直好奇债券的交易价格是如何确定的,最近查阅了一些资料,对债券的定价有了初步的了解。这篇文章记录对于债券定价的学习笔记。 一、背景知识 1. 货币时间价值 货币时间价值是指货币随着时间 的推移而发生的增值。衡量货币时间价值大小的指标即是利率。 2. 终值 终值用来表示货币时间价值的概念。已知期...

2019-02-10 11:54:18 1354 0

原创 使用 LaTeX 制作幻灯片

之前一直好奇大学里老师的那种看起来很专业的幻灯片是怎么制作的,只是知道他们使用 TeX 而一直没有动手实践。本着绝知此事要躬行的精神,决定动手实践一把。 由于在家主要使用 Mac 电脑,故本文讲述如何在 Mac OS 制作 LaTeX 幻灯片。 一、安装 MacTeX MacTeX 是 TeX ...

2019-01-26 12:03:52 3765 0

原创 Samba 服务器搭建与 Java 客户端实现

最近需要将原来使用阿里云 OSS 的程序模块改成使用公司内部搭建的文件服务器,由于目前使用的文件不多,且都是一些小文件,经过对比后,决定采用 Samba 来实现文件服务器。 Samba 是一个程序的集合,包括服务器与客户端程序,它允许在 Linux 与 Windows 实现共享文件的功能。本文先讲...

2019-01-03 12:32:52 535 0

原创 最大回撤线性算法实现

最大回撤是指投资组合在选定的周期内,任一时间点往后推,可能出现资产净值下降的最大幅度。回撤的意思是指在某一段时期内净值从最高点开始回落到最低点的幅度。最大回撤常用百分率来表示,是一个重要的风险指标。最大回撤的计算公式为 最大回撤=(波峰值−波谷值)/波峰值 最大回撤 = \left( 波峰值 - ...

2019-01-01 10:42:55 3138 1

原创 米筐开源量化框架 RQalpha 安装使用

RQalpha 是 Ricequant 开源的量化框架,提供数据获取,算法交易,策略回测,实盘模拟,实盘交易,数据分析等功能。RQalpha 的安装过程并不十分友好,本文讲述如何安装 RQalpha。安装环境是 Mac OS 操作系统。 安装步骤 1. 创建虚拟环境 RQalpha 推荐使用虚拟环...

2018-12-30 14:23:04 3487 0

原创 CAP 理论 —— 最通俗的解释

CAP 理论是分布式系统的一个基础理论,它描述了任何一个分布式系统最多只能满足以下三个特性中的两个: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP 理论听起来十分抽象,本文尝试以生活中的例子并用通俗易懂的...

2018-07-15 11:52:46 5680 2

原创 深入理解 Spring AOP

AOP,Aspect Oriented Programming,面向切面编程,是指在运行时,动态地将代码切入到类的指定方法、指定位置上的一种编程技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容。利用 AOP 可以对业务逻辑与横切关注点(cross-...

2018-06-27 15:18:24 692 0

原创 深入理解 Spring 控制反转与依赖注入

概览 对于 Spring 框架来说,控制反转(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)是个等同的概念,控制反转是通过依赖注入实现的。在这篇文章中,我们会详细介绍 IoC 和 DI 的概念,然后我们会讨论 Spring 框架...

2018-06-25 16:31:17 2251 0

原创 Java 使用 Rserve 实现与 R 的通信

Rserve 是一个基于 TCP/IP 的服务器程序,它允许其他语言调用 R 语言。由于 Rserve 采用 C/S (客户端/服务器)的调用方式,因此客户端并不需要链接 R 语言库,客户端程序与 R 程序可以实现低耦合的目的。 为调用 R 语言,需要实现一个与 Rserve 通信的客户端程序,...

2018-06-20 16:38:55 972 1

原创 Spring MVC 入门例子

Spring Web MVC 是一个建立在 Servlet API 的 Web 框架,它属于 Spring Framework 的产品。Spring Web MVC 名称来源于模块 spring-webmvc ,但它更常用的叫法是 Spring MVC。 本文讲述如何使用 IntelliJ ID...

2018-06-18 21:16:08 1281 0

原创 Hibernate 实现增删查改

Hibernate 是一种 Java 语言下的对象关系映射的解决方案,它为面向对象的领域模型到传统的关系型数据库的映射提供了一个使用方便的框架。 本文讲述如何使用 Hibernate 来实现数据库中基本的增删查改操作。 创建数据库表 为实现我们的例子,我们先创建一个表EMPLOYEES并插入...

2018-06-15 16:49:59 388 0

原创 IntelliJ IDEA 添加 MySQL 图形访问界面

IntelliJ IDEA 不愧为一款强大的 Java IDE,其提供的访问 MySQL 数据库的图形界面也异常的强大。 本文讲述如何配置 IntelliJ IDEA 来添加访问 MySQL 的图形界面。 打开 Database 选项窗口,View - Tool windows - Datab...

2018-06-15 10:20:17 5025 1

原创 使用 JDBC 连接MySQL

JDBC(Java Database Connectivity,Java数据库连接)是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。 本文讲述如何使用 JDBC 来连接和访问数据库。 为方便引入 JDBC 依赖包,我们创建 Mave...

2018-06-14 16:19:14 4183 0

原创 CentOS 7 安装 MySQL

官方推荐使用 yum 源来安装 MySQL,本文讲述如何使用 yum 源来安装 MySQL。 一、添加 MySQL yum 源 可以采用yum localinstall命令来添加 MySQL 源。在 https://dev.mysql.com/downloads/repo/yum/ 页面选择合...

2018-06-14 14:08:00 9061 0

原创 Python 实现 Shell 脚本功能

最近生产环境上发现有服务器进程出现任务堆积的情况,由于一时无法定位出原因,故对堆积的任务数量进行监控。由于进程日志中已有任务数量的输出,故只需要编写一个脚本读取日志中的任务数量,发现任务数量超过某个阈值就发送告警短信即可。 本想使用 Shell 脚本来实现,没想到 Shell 的语法实在不好掌握...

2018-05-15 14:08:29 6182 0

原创 Python 实例方法、类方法和静态方法

在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆。本文通过代码例子来说明它们的区别。 实例方法 Python 的实例方法用得最多,也最常见。我们先来看 Python 的实例方法。 ...

2018-03-30 20:17:19 35325 7

原创 Hexo 网站配置免费阿里云证书

原来的个人网站 leehao.me 使用了阿里云的负载均衡服务,因此 HTTPS 证书也是部署在负载均衡服务器上。文章《在阿里云部署 Hexo 网站》介绍了采用负载均衡方式来部署网站的方法。 考虑到网站访问流量不高且为了减少费用,决定不再使用负载均衡服务,而是直接采用单个 ECS 服务器的方式来...

2018-03-04 20:26:01 1306 0

原创 Python 装饰器浅析

Python 装饰器是 Python 中常常使用到的一种语法糖,它可以大幅度减少重复代码,使用起来十分方便。另一方面,装饰器的定义往往会导致出现函数重重嵌套的情况,这会给装饰器的实现者带来阅读代码的困难。 本文剖析 Python 装饰器的定义与用法。 不带参数的装饰器 我们先来看一下不带...

2018-02-20 09:35:42 685 0

原创 Python 名称空间与作用域

这篇文章介绍 Python 的名称空间以及变量的作用域。 Python 的名称 Python 的名称(Name)是对象的一个标识(Identifier)。我们知道,在 Python 里面一切皆对象,名称就是用来引用对象的。说得有点玄乎,我们以例子说明。 例如,在a = 2这个语句中,2是...

2018-01-20 08:51:46 1903 1

提示
确定要删除当前文章?
取消 删除