自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 etcd 中 raft 算法的使用方法

raft 协议是一个一致性算法,解决多台机器之间数据一致的问题。raft 声称简介明了,可以取代非常复杂的 PAXOS 算法。然而翻看 raft 的论文后,会发现即便声称简洁明了,自己完整地实现 raft 还是很麻烦的。etcd是一个分布式的 key-value 存储组件,它通过 raft 算法保证多台机器数据的一致性。那么 etcd 中的 raft 算法可以提取出来用在自己的项目中吗?答案是...

2020-01-18 09:54:12 1723

原创 100行PHP解析LevelDB SSTable文件

<?php$data = file_get_contents('testdb/000009.ldb');$size = strlen($data);// footer = meta block handle + index block handle + padding + 8-byte magic number// footer is fixed 48 byte, parse fro...

2019-09-10 22:25:39 411

原创 Linux如何将进程绑定CPU核心以提高性能

在Linux系统中,进程的调度切换是由内核自动完成的,在多核CPU上,进程有可能在不同的CPU核上来回切换执行,这对CPU的缓存不是很有利。为什么呢?先看一张 Intel i5 CPU 的缓存简单示意图:在多核CPU结构中,每个核心有各自的L1、L2缓存,而L3缓存是共用的。如果一个进程在核心间来回切换,各个核心的缓存命中率就会受到影响。相反如果进程不管如何调度,都始终可以在一个核心上执行,那...

2019-02-26 23:43:39 5564 2

原创 Nginx中的频控模块示例

简介陶辉老师《深入理解Nginx》中的示例代码,支持IP+URL级别的频控。频控以模块的方式嵌入Nginx。采用 红黑树+链表 的方式实现,每当一个IP访问一次URL,红黑树将会插入一个节点,节点包含本次访问时间。当相同的IP短时间内访问同样的URL时,红黑树就会查找到刚插入的节点,找出上次的访问时间,判断间隔是否够长,间隔太短的会返回 403 Forbidden,间隔够长就允许访问,并把这...

2019-01-24 07:58:07 599

原创 《深入理解Nginx》upstream机制完整代码

陶辉老师写的《深入理解Nginx》一书很赞,书中 5.3节 使用upstream的示例 的代码略有缺失,编译通不过,我补充成了完整可跑的,供大家参考。nginx自制模块的编译见书本3.3节。config文件:ngx_addon_name=ngx_http_mytest_moduleHTTP_MODULES=&quot;$HTTP_MODULES ngx_http_mytest_module&quot;NGX_...

2018-10-10 07:29:21 1437

原创 优化Visual Studio Code的自动补全

Visual Studio Code (简称VS Code)是个很棒的代码编辑器,内置多种语言的自动补全功能,写JavaScript也不例外,VS Code提供的自动补全还是很赞的。不过自动补全功能在有些情况下会失效,比如 document.getElementById() 或 document.querySelector() 返回的对象,是没有自动补全的:就像图中展示的,canvas...

2018-06-11 21:58:11 67203 4

原创 Webpack 4.0 + Vue多页配置

Webpack 4.0 + Vue 的多页配置,注意 vue-loader 目前还请使用 14.2.2 版本,15版本在编译时会有问题。package.json{ "name": "learn", "version": "1.0.0", "description": "", "main": "index.js", &q

2018-05-01 08:04:41 2639

原创 Workerman如何在WebSocket响应中添加Header

最近在用 Workerman 学习 WebSocket 的时候,遇到了一个问题:var ws = new WebSocket('ws://' + document.domain + ':8081', 'encrypt');结果浏览器报了这个错: Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Pro...

2018-04-28 08:43:37 20734

原创 PHP实现Huffman编码/解码

Huffman 编码是一种数据压缩算法。我们常用的 zip 压缩,其核心就是 Huffman 编码,还有在 HTTP/2 中,Huffman 编码被用于 HTTP 头部的压缩。本文就来用 PHP 来实践一下 Huffman 编码和解码。1. 编码字数统计Huffman编码的第一步就是要统计文档中每个字符出现的次数,PHP的内置函数 count_chars() 就可以做到:...

2018-04-19 18:34:08 1010

原创 PHP内核队列使用一例

写了一段代码,展示了PHP如何使用内核队列。场景是:父进程产生消息,放入队列,子进程从队列读取消息,并处理。&lt;?php$msg_key = ftok(__FILE__, 'a');$msg_queue = msg_get_queue($msg_key, 0644);/** * 父进程往队列发送消息 * @param $msg_queue * @param $chil...

2018-04-09 19:55:58 212

原创 用 div 实现自制滚动条

https://math-digital.cn/blog/11

2018-03-21 09:27:35 2528

原创 Bootstrap 4风格的select2下拉框

https://math-digital.cn/blog/8

2018-03-16 23:14:53 7283 2

原创 Workerman的reusePort属性详解

http://math-digital.cn/blog/1

2018-02-28 22:06:53 868

原创 Bootstrap4 定制自己的颜色和风格

https://math-digital.cn/blog/2

2018-02-25 17:47:16 15760 3

原创 Vue实现带进度条的文件拖动上传

https://math-digital.cn/blog/3

2018-02-22 17:36:15 4866

原创 不另写CSS,Bootstrap 4 实现步骤条

https://math-digital.cn/blog/9

2018-02-10 11:23:03 4590

原创 PHP OpenSSL扩展 - 非对称加密

https://math-digital.cn/blog/4

2018-02-08 20:41:58 457

原创 PHP OpenSSL扩展 - 对称加密

https://math-digital.cn/blog/5

2018-02-05 22:11:29 1470 1

原创 图解Numpy的tile函数

Numpy的 tile() 函数,就是将原矩阵横向、纵向地复制。tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来。举个例子,原矩阵:mat = array([[1,2], [3, 4]])横向:tile(mat, (1, 4))# 等同于tile(mat, 4)结果:[[1 2 1 2 1 2 1 2] [3 4 3 4 3

2018-01-26 16:47:33 579

原创 Vue多页应用的极简配置

Vue的官方脚手架工具 vue-cli 提供了很多种已配置好的模板,但这些模板的webpack配置看起来比较麻烦,而且有些配置在项目中也许根本用不到。本文就提供个思路,只保留最必须的代码,搭建出一个Vue多页应用的开发环境。整体思路整体思路如下图。每一个Vue组件,按照官方推荐的方式,写在单独的.vue文件中(图中绿色部分)。经过Webpack编译后,组件会全部打包到 Bundle.js 中,Bun

2018-01-17 09:25:46 1082

原创 Drools7.x环境搭建与简单示例

Drools是个规则引擎的开源实现。官方文档比较长。这里提供一个方法,搭建最基本的Drools运行环境,并提供一个简单示例。环境准备:JDK至少需要JDK 1.5以上,JDK去这里下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html安装好之后,把 [JDK安装目录]/bin 加入到PATH 中

2018-01-10 13:15:45 8973 1

原创 Vue标签输入框

Vue组件、使用方法都在代码里了。效果如下:附上所有代码:html lang="en">head> meta charset="UTF-8"> meta name="viewport" content="width=device-width, initial-scale=1.0"> meta http-equiv="X-UA-Compatible" cont

2018-01-09 09:56:11 7365

原创 用BulmaCSS模仿知乎搜索页面

用BulmaCSS模仿知乎搜索页面

2018-01-03 01:01:53 3179

原创 PHP读取命令行输入

PHP读取命令行输入

2017-12-26 18:57:49 5165

原创 PHP并行查询MySQL

PHP并行查询MySQL

2017-12-18 23:35:09 1330

原创 CentOS 7防火墙设置开放80端口

CentOS 7防火墙设置开放80端口

2017-12-14 09:36:19 1060

原创 PHP Trait实现Singleton单例模式

PHP Trait实现Singleton单例模式

2017-12-03 09:44:49 1452

原创 占位图片生成器:holder.js

https://math-digital.cn/blog/10

2017-11-27 23:38:18 11546 1

原创 PHP解析大型Excel表格的库:box/spout

PHP解析大型Excel表格的库:box/spout

2017-11-25 09:49:25 8100

原创 Bootstrap中col-*-offset和col-*-push的区别

Bootstrap中col-*-offset和col-*-push的区别

2017-11-24 15:35:24 22958 2

原创 Visual Studio Code编写并实时预览Markdown

Visual Studio Code编写并实时预览Markdown

2017-11-21 20:40:44 111185 8

原创 PHP读写protobuf3示例

PHP读写protobuf3示例

2017-11-18 09:18:50 9210 4

原创 PHP常用代码汇总,持续更新

收集一些日常开发中一些有用的PHP代码段,会持续更新。 如果代码有BUG或者任何建议,欢迎在评论区评论!把一个数字限定在某个范围内,比如要限定$a在区间[1, 12]内,当$a=17时,就令$a=12:min(max($a, 1), 12);检查一个日期是不是有效,比如非闰年时给了个2月29日:$date = '2016-2-29';list($year, $month, $d

2017-11-14 20:52:19 1225

原创 这么小改一下,PHP json_decode内存节省70%

https://math-digital.cn/blog/7

2017-11-08 08:46:13 6259

原创 Vue组件中如何获取非Prop特性的值

Vue组件中如何获取非Prop特性的值

2017-11-05 08:40:17 2558 1

原创 CSS Flex column排列时的容器宽度问题

CSS Flex垂直排列时的容器宽度问题

2017-11-03 11:52:33 10526 5

原创 怎样用一个DIV绘制熊猫头像

纯HTML+CSS3实现的图片

2017-10-27 07:11:04 2277 1

原创 CentOS 安装PHP7的正确姿势

教你如何使用CentOS官方软件库安装PHP7

2017-10-22 09:50:09 24187 5

原创 VIM命令模式

VIM命令模式

2017-09-26 11:45:12 236

原创 PHPMailer向QQ邮箱发送邮件

PHPMailer向QQ邮箱发送邮件

2017-09-24 12:00:28 13431

JavaScript Loading动画

HTML5 Loading动画,采用TweenMax制作

2015-04-05

遗传算法(三角形判定)

一个关于遗传算法的例子。为检测“判定三角形类型”函数中的分支是否能全部覆盖,我们用遗传算法生成了最佳测试用例。

2009-10-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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