自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

molaifeng的专栏

道阻且长,行则将至;行而不辍,未来可期

  • 博客(247)
  • 资源 (5)
  • 收藏
  • 关注

原创 简单聊聊硬盘(上)

文章目录前言结构实物图逻辑图盘片、盘面和磁头磁道、柱面和扇区、簇/块磁盘容量计算CHS & LBA磁盘读取响应时间IOPS前言再过几个小时就 2021 了,趁着 2020 还有富余的几个小时,把这个月的博客给更新上。最近一直在补计算机底层的知识,于是把今年最后一更交给硬盘了。注:全文硬盘都是指机械硬盘,也就是 HDD 硬盘。结构实物图逻辑图盘片、盘面和磁头一张盘上下两面,每面都有一个磁头对应着。上图显示四个磁头,对着两个盘片,每个盘片上下两面。磁道、柱面和扇区、簇/块

2020-12-31 23:04:44 1108

原创 解决 Got error 28 from storage engine

下午开发的时候,发现页面成白板了,于是开始 debug。由于此项目的认证信息是通过 HTTP 接口获取的,查看日志,发现 “array_merge(): Argument #1 is not an array”,于是去目标服务器追踪了下,方面也是一个 HTTP 接口调用,返回的是 null,再顺着看过去,发现最终的那个接口查了数据库,然后卡在那了,再查看具体的消息为 “Got error 28 from storage engine”,又是 MySQL 的问题。基于以往的经验,是不是内存满了或是硬盘满了,

2020-11-26 16:04:08 2480 4

原创 读取csv并导出新的csv

用 editplus 打开 csv 格式的文件,会发现编码为 ANSI。在 ANSI 里,GBK 是专门来解决中文编码的,是双字节的,不论中英文都是双字节。通常程序保存文件的编码常为 UTF-8,因此读取 csv 文件时,需要进行编码转换,把 GBK 的转为 UTF-8,导出的时候再把 UTF-8 转换为 GBK。csv 格式的文件标题,日期测试1,2020-10-29处理代码<?phpfunction utf8ToAnsi($str){ return iconv('UTF-

2020-10-29 16:19:14 568

原创 php数组使用json_encode转换的一个小坑

前段时间客服系统出现了个小问题,不能切换中继线路。之前是中继线路是固定的,也就是账号配置的时候指定的,后来为了方便,在界面上以下拉框的形式让客服选择。问了下相关人员,说是添加了一个新的中继号后就歇菜了,于是在测试环境下复现了,发现是数组转换的问题。中继号都存在数据库,php 取出来,然后用 json_encode 转换为 js 的数组,最后在页面上组装成 select 相关内容展示出来供客服操作。<?php$array = [ '8001', '8002', '800

2020-09-30 18:01:52 1449 1

原创 解决 InnoDB: Cannot allocate memory for the buffer pool

解决 InnoDB: Cannot allocate memory for the buffer pool

2020-08-05 15:35:39 1187

原创 解决uploadify上传文件session失效的问题

据线上反馈,某个页面上传文件的时候失效,刷新页面后退出系统,于是在 beta 环境上尝试复现,成功,是个稳定的 bug 的,于是开始了探索、解决之旅。打开 Chrome 浏览器控制栏,仔细观察了下上传前后请求的变化,发现每当点击上传按钮上传文件时,都会更新 session_id。嚯,这个隐隐有种熟悉的感觉,再尝试几次后,定位到是上传组件 uploadify 的问题。这是个 flash 插件,以前遇到过一次,那时是在火狐浏览器上,每次上传文件都会遇到 session 失效情形,于是就用了个 hack 方法解

2020-07-31 14:48:28 1031

原创 Postman 批量测试接口

前言今天简单介绍下一个在接口开发中批量测试的工具 Postman。基础设置这个可以在官网下载,打开后界面如上所示。由于是批量测试接口,那咱们就把接口都归属到 Collections 里。按照 1、2、3 所示,点击 Create 保存,就出现如下图所示的聚合测试文件夹。接下来,就简单了,把开发的接口依次添加到此文件夹内。方法为:右键单击 接口批量测试,再点击弹出的菜单栏里的 Add Request 一栏。接着在弹窗里写下接口的名称,再点击 Save to 接口批量测试这里为了演示接口

2020-06-30 23:52:00 2923

原创 安装 API 网关 APISIX

Apache APISIX 是国人开源的微服务 API 网关,目前发展势头旺盛,性能强劲,不知道此为何物的可以去 GITHUB 官方仓库文档里看看详细介绍。系统版本

2020-05-15 23:24:31 2283 1

原创 Redis 之 Stream(上)

Stream 为 Redis 5.0 的一大亮点,可以功能完善的支持消息队列,是异步处理、应用解耦、限流削峰的一大利器。由于 Stream 涉及的知识点较多且出来的时间也不算长( 2018/10/17 正式 release),直接上来讲源码大家看着可能有些懵,于是把这一主题分为上、下两篇:上篇主要介绍 Stream 的应用,让大家对 Redis 的 Stream 作为消息队列有所了解;下篇就深入到...

2020-04-26 22:47:21 1040

原创 Redis 之快速列表

快速列表(quicklist)是在 Redis 3.2 版本中引入的,之前版本用的是 listNode 组成的无环双链表实现的。// adlist.htypedef struct listNode { struct listNode *prev; /* 前置节点 */ struct listNode *next; /* 后置节点 */ void *value; /* 节点的值 */}...

2020-04-16 23:24:41 681

原创 Redis 之整数集合

在 Redis 中,字典和整数集合是集合的两种实现方式。

2020-04-12 00:29:45 309

原创 Redis 之跳表

跳表,又称跳跃表,在 Redis 中表现为 skiplist,是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。在正式介绍跳表前,先来看看 Redis 中的有序集合。zadd class 87.5 alice 87.5 fred 65.5 charles 94.5 emily向 class 有序集合里插入 4 条数据,查看下底层编码实现。1...

2020-04-09 20:14:38 1173

原创 Redis 之压缩列表

Redis 中的五种类型,在底层存储上并不是唯一的,而是依据 redisObject 中 encoding 来选择更适合的编码方式。比如上一篇介绍的字符串,就有 int、embstr、raw 三种,而且在不同的场景是动态变动的,比如 embstr 进行 append 操作后 encoding 就改成了 raw。127.0.0.1:6379> hmset person name molaif...

2020-04-06 19:27:06 1195

原创 Redis 之简单动态字符串

介绍完字典,今天再来谈谈 Redis 中另一个广泛使用的数据结构 SDS,也被称为简单动态字符串。在看 Redis 各版本特性时,发现 SDS 结构是在 3.2 版本上做了速度和节省空间上的优化。下面是 3.2 版本之前的结构。// sds.hstruct sdshdr { int len; /* buf 数组已占用的字节数 */ int free; /* buf 数组中可用的字节数...

2020-04-04 01:23:08 356

原创 Redis 之字典

在前面 浅谈 Redis 简单介绍过字典,是用来存储数据库所有 key-value 的,同时如果指定 key 为 哈希时,字典也是其 value 的底层实现之一,今天就来聊聊字典。字典的数据结构主要由三部分组成:dict(字典)、dictht(哈希表)、dictEntry(哈希表节点)。接下来分别介绍下这三种结构。// dict.htypedef struct dict { dic...

2020-03-29 22:40:45 350

原创 Redis 管理工具 RedisInsight

Redis 安装好并运行一段时间后,如何清晰的看到 Redis 占了多大内存,有多少个 KEY,所占的网络如何,这个在 RedisInsight 下就是一目了然了,特别方便。下载也特别简单,到此网站下载你想要的版本就行。...

2020-03-16 19:14:43 9855 8

原创 测试环境搭建 redis-cluster

Linux 版本2.6.32-431.el6.x86_64Redis 版本redis-5.0.7安装见此博客集群搭建创建目录创建 redis-cluster 目录,并在里面创建如下目录mkdir -p /usr/local/redis-cluster/cd /usr/local/redis-cluster/mkdir 7001 7002 7003 7004 7005 70...

2020-03-16 19:09:39 466

原创 解决跨域上传文件时报错

下午群里@我说,上传文件有问题,看了下,发现报如下错误has been blocked by CORS policy: The "Access-Control-Allow-origin' header contains multiple values''*,* but only one is allowed.字面意思是设置了重复跨域了。于是开始着手解决问题:这个上次附件是页面上 js 直接调...

2020-03-05 18:49:37 1627

原创 linux 下批量操作善用 \

有快两个月没写博客了,今天就水一遍,主要源于本月中旬的一个需求,批量打包文件,但又懒得写 shell 脚本,想起了平常安装工具时的 \ 分成多行的符号,那么就简单了,只需写成如下即可tar czvf image.tar.gz a.png b.png \c.png \d.png \e.png...

2020-02-29 16:13:57 252

原创 Go 错误处理

错误处理在默认情况下,当发生错误后(panic) ,程序就会退出(崩溃)如果我们希望:当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。还可以在捕获到错误后,给管理员一一个提示(邮件短信…)基本说明Go 语言追求简洁优雅,所以,Go 语言不支持传统的 try…cact…finally 这种处理。Go 中引入的处理方式为: defer, panic, recov...

2019-12-31 22:03:24 173

原创 Go 数组、切片和 map

数组数组可以存放多个同一类型数据。数组也是一种数据类型,在 Go 中,数组是值类型。package mainimport "fmt"func main() { var hen [6]float64 hen[0] = 1.00 hen[1] = 1.00 hen[2] = 2.00 hen[3] = 3.00 hen[4] = 4.00 hen[5] = 50.00...

2019-11-30 18:25:01 988

原创 Go 面向对象

引言Go 的面向对象,语法清奇,思路独特,和传统的面向对象语言如 Java 完全不同,可开阔思路。结构体谈到面向对象,就不得不提其载体 structtype 结构体名称 struct{ field1 type field2 type}以上便是其定义的语法,使用也很简单type Student struct { Name,Address string Age in...

2019-10-31 23:38:06 351

原创 结构体大小计算、typedef、函数指针小记

结构体大小计算计算结构体大小的规则:每一个成员的偏移量都必须是该成员的倍数。结构体的大小必须是该结构体字节数最大成员的倍数。先来说说什么是偏移量,某个成员的实际地址和结构体首地址之间的距离struct data { int a; char b; int c;}因为 a 为首地址,因此偏移量为 0同时 int a 在内存中占 4 个字节,也就是是 b 的偏移量;由于 4...

2019-09-06 10:42:30 1239

原创 Go 初探

缘由现在用 Go 的公司越来越多,学 Go 的童鞋也越来越多,于是我便随大流开始学 Go,这篇博客便记录今晚安装及成功运行第一个 Hello World 的例子。安装进入 https://studygolang.com/dl 下载 https://dl.google.com/go/go1.13.windows-amd64.msi ,由于没有连上 Linux 环境,便在 Windows 上安...

2019-09-05 23:40:26 340

原创 Asterisk 控制台为什么日志不显示颜色

今天在群里有个人问到请问下,这个彩色日志是怎样设置打印出来的,我的这些呼叫日志怎么都是白色的呢于是追踪了下。在 Linux 终端上显示颜色的代码,格式为%c[%d;%d;%dm%s%c[%d;%dm如,下面两个实例echo -e "\033[44;37;5m ME \033[0m"echo -e "\e[32;1m[OK]\e[0m"字色 背景 ...

2019-08-12 17:10:27 456

原创 Heartbeat 安装教程

准备两台虚拟机10.254.124.22710.254.124.228虚拟 IP10.254.124.22关闭防火墙service iptables stop配置网络和主机名分别在两台服务器上的 /etc/hosts 加上10.254.124.227 Master10.254.124.228 Slave修改主机名vim /etc/sysconfig/network...

2019-07-10 17:45:19 630

原创 利用 inotifywait 和 rsync 实现文件秒级同步

安装 inotifywaityum install -y inotify-tools安装 rsyncyum install -y xinetd配置 rsync把 /etc/xinetd.d/rsync 里面的 disable 值由 yes 改为 no,启动 xinetd,“service xinetd start”,再看看 netstat -tunlp | grep 873 ,发现 ...

2019-07-05 11:24:36 503

原创 yum 安装 php7

安装 epel 和 remi 源wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -ivh epel-release-latest-7.noarch.rpmwget http://rpms.remirepo.net/enterprise/remi-release-7.rpmrpm ...

2019-06-27 18:07:50 1706

原创 浏览器跨域解决方案

今天介绍一个实用的浏览器跨域方案。比如 A 网址嵌入了 B 网址的页面,这时 B 网址的页面想要调用 A 网址的页面的方法,因为域名不同,由于浏览器同源策略的限制会被 blocked 掉的。一下给出一个方法在 A 网址的写下window.addEventListener("message",function(obj){ console.log(obj);});再在 B 网址的页面里...

2019-06-14 17:25:03 256

原创 C 和指针第 9 章 字符串、字符和字节 笔记

这章总体来说,简单,基本就是进一步介绍了字符串、字符和字节常用函数的使用,以及注意的事项。9.1 字符串基础字符串就是一串零个或多个字符,并且以一个模式为全 0 的 NUL 字节结尾。头文件 string.h 包含了使用字符串函数所需的原型和声明。9.2 字符串长度就是它所包含的字符个数。size_t strlen(char const *string);size_t 定义在 st...

2019-04-28 23:05:24 237

原创 C 和指针第 8 章 数组 笔记

这一章很重要,分别讲述了一维数组、多维数组以及指针数组,下面分别介绍一维数组数组名int a; int b[10];变量 a 称为标量,因为它是个单一的值,这个变量的类型是一个整型。在 C 数组名的值 b 是一个指针常量,也就是数组第 1 个元素的地址。它的类型决定数组元素的类型:如果它们是 int 类型,那么数组名的类型就是“指向 int 的常量指针”;如果它们是其他类型,那么数组...

2019-04-20 23:58:36 473

原创 C 和指针第 7 章 函数 笔记

这章主要介绍了函数的相关信息,但没有涉及到函数指针高级操作,这章很简单,以下简要说下函数定义类型名函数名 (形式参数)代码块intfunc(int a, int b){ return a+b;}函数声明以下为函数原型的格式类型名 函数名 (形式参数);int *func(char *str, int value);注意,没有声明函数原型的函数,会被编译器缺省认定(默...

2019-04-16 23:49:36 202

原创 C 和指针第 6 章 指针 笔记

第六章标题就是指针,可见重要程度,接下来我就总结下各个小节的知识点。内存和地址这里说的内存其实是 虚拟内存,而不是 物理内存,两者通过 内存映射 来管理,也就是将 虚拟内存地址 映射到 物理内存地址。同时记住以下两点1、内存中的每个位置由一个独一无二的地址标识2、内存的每个位置都包含一个值关于内存中的地址和内容,可以看下两张图名字和内存位置之间的关联并不是硬件所提供的,它是由编...

2019-04-14 19:36:00 255

原创 C 和指针第 5 章 操作符和表达式 笔记

总述这章标题为操作符和表达式,主要讲述了操作符、布尔值、左值和右值、表达式求值,下面分别简要介绍下操作符算术操作符+、- 、*、/、%这里说下 / 和%,前者求商,后者用来求模也就是求余数,例如#include <stdio.h>int main(void){ printf("10/3=%d\n", 10/3); // 10/3=3 printf("1...

2019-04-10 00:00:26 163

原创 C 和指针 1 至 4 章笔记

第 1 章 快速上手主要通过讲解一个例子,来让读者对 C 有一个的大概印象。#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_COLS 20#define MAX_INPUT 1000int read_column_numbers(int columns[], ...

2019-04-07 22:51:46 195

原创 GoAccess 分析 Nginx 日志

安装yum install -y glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-develyum install gccyum install -y GeoIP-updateyum install -y goaccess安装成功后,可以查看[root@molaifeng log]# goaccess -VGoAccess...

2019-04-05 22:21:05 549

原创 PHP 数组合并 array_merge 和加的区别

日常开发中,合并两个数组经常用 array_merge,偶尔用 +,但这两者有什么区别呢,下面结合两个例子分析。$arrA = ['hobby' =&amp;amp;gt; 'coding', 'age' =&amp;amp;gt; 17];$arrB = ['hobby' =&amp;amp;gt; 'dancing', 'age' =&amp;amp;gt; 27];print_r(array_merge($arrA, $arrB));/*A...

2019-03-18 14:53:53 646

原创 git rebase 合并多个 commit

有个 JAVA 的 SEO 项目,前前后后拖了三个月,下周一上线,于是打算合到 master 上。可当合并时才记起,我都在 test_branch 分支上开发了,一开始从主分支派生的分支没用到,同时由于历史原因,这个测试分支和主分支不同步,不能直接合并。出现问题了,就得解决问题。于是我就祭出了之前看的 rebase 合并多个 commit 的技巧,具体是这样的,先查看这期需求开始到现在工提交了多...

2019-03-15 19:09:14 2242

原创 192.168.0.1/27 表示什么

首先得明白 192.168.0.1 是个 IP 地址,更细一点的话,属于 C 类型的,后面的 /27 则表示 网络号 的长度。IP 地址是以 点 分割为 四部分,每部分 8 bit (位) 也就是一个 byte (字节)。在 C 类地址中,网络号占 24 bit,主机号占 8 bit网络号主机号11111111 11111111 1111111100000000...

2019-03-04 16:20:43 21417

原创 crypt 在 php 与 java 中互通

JAVA 新项目中登录模块用到之前 PHP 项目的用户表,由于密码是 crypt 加密存储的,于是整理了下二者的登录密码验证过程// 数据库操作$user = getUserInfo();if (crypt($_POST['password'], $user['password']) != $user['password']) { ajaxReturn(['status' =&gt;...

2019-02-25 13:35:34 698

epel.repo

yum install http://mirro rs.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm时报错“epel-release-6-8.noarch.rpm: does not update installed package”,可以下载此repo,再yum install -y docker-io

2016-06-06

XHProf简明教程

XHProf是Facebook开源的php性能分析工具,是php的一个扩展。windows平台可以通过此链接下载,同时还需下载制图工具Graphviz,最后去github下载相关的代码(只需xhprof_html、xhprof_lib、examples)。

2015-09-17

使用PHPMailer发送邮件

使用PHPMailer发送邮件的DEMO

2015-07-16

php_curl-5.4.3-VC9-x64的php_curl.dll

在windows上开发,下的是php_curl-5.4.3-VC9-x64版的wamp,在使用curl模块时出现错误,明明已经加载了,但是还是报curl没有加载的错误,后来在网上找了下,发现该版本的php_curl.dll有问题,于是又下载了份,覆盖掉本机上的,发现有用,资源就在附件内。

2015-01-04

FaustCplus的swf文件

解决因客户端flash版本升级而无法预览图片的bug

2014-08-05

空空如也

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

TA关注的人

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