自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

了不起的厂长

教,学半。

  • 博客(72)
  • 收藏
  • 关注

原创 Golang是如何操作excel的?

关键术语介绍为了方便开源库的快速上手,我们先来了解 excel 中的几个关键术语,如下图所示,①为sheet,也就是表格中的页签;②为row,代表 excel 中的一行;③为cell,代表 excel 中的一个单元格。正常情况下,创建一个表格的基本流程是打开 wps 点击新建,这时会默认创建一个 sheet,然后在该 sheet 中的第一行填写表头,接下来根据表头逐行填充内容,最后将文件另存为到硬盘的某个位置。这与 Golang 开源库创建 excel 的流程基本相同,下面演示一个极简表格的创建。创

2020-10-11 20:47:20 1016

原创 API 网关 Kong

什么是 API 网关?所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层。为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直接请求到该服务,但随着产品用户越来越多,单体应用存在显而易见的单点问题,除此之外,当单体应用大小升至几个 G 时,持续发布将会非常缓慢,所以服务的拆分成为了必然趋势。当服务拆分为多个之后,我们不得不面临一个问题,就是如何控制用户请求到对应服务节点,于是网关层应运而生,它不仅可以负责负载均衡,还可以让它处理

2020-05-16 22:08:18 1032

原创 进程管理工具 Supervisor

要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 nohup 命令来解决的,nohup 作用是忽略 SIGHUP 信号,而会话关闭时正好发送了该信号给会话内所有运行程序,简而言之,nohup 命令搭配 & 不仅可以在后台运行,还不受会话关闭的影...

2020-04-26 10:39:04 582

原创 如何用Github钩子做自动部署

最近机缘巧合的购置了域名和服务器,不用实在是浪费,再加上一直没有属于自己的个人网站,所以打算用hexo在服务器上玩一下,这样也就不用再纠结用Github pages还是Gitee pages了。当然,今天的主题并不是博客搭建,而是如何利用Github的钩子,将博客代码部署到服务器上。毕竟Github的钩子已经历史悠久了,网上有很多开源项目可以拿来用,所以我并没有造轮子,而是去找了5K star的...

2020-04-26 10:32:41 1015

原创 MySQL的事务隔离级别是什么?

????我是平也,这有一个专注Gopher技术成长的开源项目「go home」背景介绍想必事务大家都已经非常熟悉了,它是一组SQL组成的一个执行单元,要么全执行要么全不执行,这也是它的一个特性——原子性。而事务的应用场景也非常广泛,最经典的就是转账问题,A给B打钱,不能出现A钱扣了B还没收到的状况,否则业务就乱套了。事务的特性于是呢,根据用户对这些场景的严苛要求,总结出了事务应该具备的四个...

2020-04-20 16:16:02 1030

原创 Go语言的GPM调度器是什么?

????我是平也,这有一个专注Gopher技术成长的开源项目「go home」导读相信很多人都听说过Go语言天然支持高并发,原因是内部有协程(goroutine)加持,可以在一个进程中启动成千上万个协程。那么,它凭什么做到如此高的并发呢?那就需要先了解什么是并发模型。并发模型著名的C++专家Herb Sutter曾经说过“免费的午餐已经终结”。为了让代码运行的更快,单纯依靠更快的硬件已经无...

2020-04-17 20:18:30 1803

原创 超详细Go语言源码目录说明

开源项目「go home」聚焦Go语言技术栈与面试题,以协助Gopher登上更大的舞台,欢迎go home~导读学习Go语言源码的第一步就是了解先了解它的目录结构,你对它的源码目录了解多少呢?今天我整理了一份超详细的Go语言源码目录说明,基于Go1.14版本整理,欢迎收藏~目录总览.├── AUTHORS├── CONTRIBUTING.md├── CONTRIBUTORS├─...

2020-04-16 18:27:08 1470

原创 「一闻秒懂」你了解goroutine和channel吗?

开源库「go home」聚焦Go语言技术栈与面试题,以协助Gopher登上更大的舞台,欢迎go home~背景介绍大家都知道进程是操作系统资源分配的基本单位,有独立的内存空间,线程可以共享同一个进程的内存空间,所以线程相对轻量,上下文切换开销也小。虽然线程已经比较轻量了,但还是占近1M的内存,而今天介绍的有“轻量级线程”之称的Goroutine,可以小至几十K甚至几K,切换的开销更小。除...

2020-04-14 17:41:00 756

原创 Gin框架系列04:趣谈参数绑定与校验

导读在第二节,我们学习了Gin框架的路由定义与参数接收,今天应一位同学的要求,来讲解一下参数的绑定与校验。为什么校验参数?本不必抛出这个问题的,但顾及到初出茅庐的同学,这里解释一下。假设做一个注册接口,传过来的用户名是不是不能太骚气?比如一堆空格和符号之类的;密码是不是不能太长也不能太短?手机号是不是要符合规则?性别是不是不能填人妖?另外,登录的时候我们也需要验证账号密码是不是正确的...

2020-04-10 17:01:33 1903

原创 Gin框架系列03:换个姿势理解中间件

什么是中间件中间件,英译middleware,顾名思义,放在中间的物件,那么放在谁中间呢?本来,客户端可以直接请求到服务端接口。现在,中间件横插一脚,它能在请求到达接口之前拦截请求,做一些特殊处理,比如日志记录,故障处理等。这就是今天要讲述的中间件,那么,它在Gin框架中是怎么使用的呢?如何使用中间件我们来看一下逢gin必调的方法Default,方法中有一个变量engine,它Use了...

2020-04-09 16:01:34 1481

原创 Gin框架系列02:路由与参数

回顾上一节我们用Gin框架快速搭建了一个GET请求的接口,今天来学习路由和参数的获取。请求动词熟悉RESTful的同学应该知道,RESTful是网络应用程序的一种设计风格和开发方式,每一个URI代表一种资源,客户端通过POST、DELETE、PUT、GET四种请求方式来对资源做增删改查的操作。同样的,Gin框架给我们提供的除这4种动词外,还有PATCH、OPTION、HEAD等,详细内容可...

2020-04-08 15:03:29 958

原创 Gin框架系列01:极速上手

Gin是什么?Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。准备工作本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。https://github.com/pingyeaa/golang-examples/tree/master/gin没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作...

2020-04-06 17:57:41 1050

原创 Go语言库系列之email

导读大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。极速上手准备工作初始化项目go get github.com/jordan-wright/email本示例项目结构.├── go.mod├── go.sum└── main.go开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取...

2020-04-06 11:28:17 4156

原创 Go语言库系列之aurora

背景介绍今天跟大家推荐一款可以给终端输出上色的工具--aurora。极速上手准备工作初始化项目go mod init aurora演示项目结构.├── go.mod├── go.sum└── main.go安装aurora包go get -u github.com/logrusorgru/aurora代码演示首先引入aurora库import . "git...

2020-04-05 14:51:57 1212

原创 Go语言库系列之flag

背景终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗?$ flag girl -hUsage of girl: -height int 身高 (default 140)$ flag girl --height 170恭喜你获得了身高 170 的女朋友极速上手整个实现非常简单,只需要5个步骤第一步,引库import &quot...

2020-04-02 16:20:26 761

原创 Go语言库系列之dotsql

导读:能单独拎出SQL文件的某一行或几行执行,是不是非常有趣?今天我们来介绍一下这个有意思的库--dotsql。背景介绍dotsql不是ORM,也不是SQL查询语句的构建器,而是可以在一个SQL文件中拎出某几行来执行的工具,非常类似于ini配置文件的读取。如果还不理解,我们来看如下内容。-- name: create-users-tableCREATE TABLE users ( ...

2020-04-02 15:15:55 740

原创 一文读懂MySQL复制机制

背景介绍复制,就是对数据的完整拷贝,说到为什么要复制,首先能想到的是怕数据意外丢失,使得用户蒙受损失。当完成了数据复制之后,会发现它的优势不止这一点,假如一台机器宕机了,可以启用备份在另一台机器的数据。毕竟宕机的概率很小,闲暇时间还可以让备份机器分担主机器的流量压力。除此之外,当要升级数据库版本时,可以在不停止用户服务的情况下优先升级备用机器,待观测其可用稳定时再将主数据库升级。但是,...

2019-05-30 13:22:58 148

原创 高复杂性下的蓝牙安全危机

高复杂性下的蓝牙安全危机蓝牙就像胶水一样和我们的智能设备紧密的粘在一起,这意味着一旦出现BUG,可能会引发严重的后果。最近,位于美国加州圣克拉拉市的安全公司McAfee(迈克菲,是一家致力于创建最佳计算机安全解决方案的公司,该公司提供的杀毒软件是全世界最畅销的杀毒软件之一)的研究人员报告了一种名叫BoxLock(一款自带扫码功能的挂锁,可以支持蓝牙、扫码开锁)的智能挂锁存在蓝牙低能耗(BLE...

2019-05-24 09:46:14 189

原创 谷歌发布的Translatotron是什么?

背景介绍作为中国人,学好英语这件事从小学开始就让人苦恼,近些年随着AI的快速发展,语言差异是否会缩小甚至被消灭成了热门话题。在5月15日,谷歌AI在博客平台发出一篇文章,正式介绍了一款能保留原声的“同声传译”黑科技,消息一出,迅速席卷网络,为科技发烧友带来了更多曙光,下面,让我们来揭开这个叫做“Translatoron”的神秘面纱。Translatotron的出现目前市面常用的语音翻译产...

2019-05-19 11:24:21 912

原创 二十款热门有趣的机器学习开源项目

1. TensorFlow Star 126932 Watch 8582 Fork 74374 Github https://github.com/tensorflow/tensorflow 是一个基于数据流编程(dataflow...

2019-05-10 13:44:46 557

原创 为程序员爆肝整理的防治脱发大集锦

防治脱发“感觉有用”系列食疗多吃蛋白质,鸡蛋清、瘦肉、牛奶和豆腐等高蛋白食物都是头发的最爱。此外,每周最好吃3次亚麻籽油,每次1茶匙,其中的植物雌激素可防脱发。缺铁也会导致大量脱发,建议多吃绿色和黄色的蔬菜及水果,如菠菜黄豆等来补充铁元素。按摩每天睡觉前轻轻地按揉头部两侧,我们的耳朵偏上的地方,以及均匀地按摩后脑的枕部,都可以改善脱发的情况。注意按摩前,手要清洗干净,动作要轻柔,按摩要...

2019-05-10 13:40:06 1185

原创 操作系统:一个老汉的无声告白

老夫生于上世纪五十年代,作为八零后的大叔,九零后的老伯,同时也是你们动辄就要重装的操作系统,我的学名是“计算机管理控制程序”,英译“operating system”,小老弟们常喊我“OS”。虽说是老弟,目的却都不怎么单纯,大部分人只想玩我,剩下一小撮人却钟爱探索我的身体,他们沉迷于当下,但真正愿意了解我过去的所剩无几。今儿个趁机会给你们介绍一下我的过去。人工操作在我幼年时期,虽然跟我打交...

2018-11-21 21:44:02 220

原创 跟厂长学PHP7内核(八):深入理解字符串的实现

在前面大致预览了常用变量的结构之后,我们今天来仔细的剖析一下字符串的具体实现。一、字符串的结构struct _zend_string { zend_refcounted_h gc; /* 字符串类别及引用计数 */ zend_ulong h; /* 字符串的哈希值 */ size_t len; /* 字符串的长度...

2018-09-21 20:08:15 381

原创 跟厂长学PHP7内核(七):常见变量类型的基本结构

上篇文章讲述了变量的存储结构zval,今天我们就来学习一下几个常见变量类型的基本结构。一、类型一览zval中的u1.v.type用来存储变量的类型,而zval.value存储的是不同类型对应的值,所以type决定value取值的地方,以下是PHP7所定义的所有类型。#define IS_UNDEF 0 /* 标记未使用类型 */#define IS_NULL 1 /* N...

2018-09-19 12:17:56 431

原创 操作系统:进程的概念和与程序的区别

进程的概念和与程序的区别1、进程的定义进程是允许某个并发执行的程序在某个数据集合上的运行过程。进程是由正文段、用户数据段及进程控制块共同组成的执行环境。正文段存放被执行的机器指令,用户数据段存放进程在执行时直接进行操作的用户数据。进程控制块存放程序的运行环境,操作系统通过这些数据描述和管理进程。2、进程的特征进程是操作系统管理的实体,对应了程序的执行过程,具有以下几个特...

2018-09-14 09:07:11 1076

翻译 批判性阅读

Critical reading applies to non-fiction writing in which the author puts forth a position or seeks to make statement. Critical reading is active reading. It involves more than just understanding what ...

2018-09-12 22:26:00 2962

原创 跟厂长学PHP内核7(六):变量之zval

记得网上流传甚广的段子“PHP是世界上最好的语言”,暂且不去讨论是否言过其实,但至少PHP确实有独特优势的,比如它的弱类型,即只需要$符号即可声明变量,使得PHP入手门槛极低,成为大家所青睐的Web服务端语言。那么它的变量是如何实现的呢?我们今天就来学习一下PHP的基本变量。一、引言PHP的变量存储在zval结构体中,在执行阶段中编译为op_array时就能看到zval的身影。...

2018-09-11 12:43:05 208

原创 程序的并发执行

一、程序的顺序执行在早期无操作系统及单道批处理系统时,程序都是按照顺序进行执行的。先进入内存的先执行,在执行的过程中不能执行其他的程序。程序中的指令也是按照顺序执行,一条指令正在执行时不能开始执行另一条指令。所以程序顺序执行有以下几个特点。1.1、顺序性处理机的操作,严格按照顺序执行,前一操作还没执行完毕,后继操作则不能继续执行。1.2、封闭性程序是在封闭的环境下运行的...

2018-09-09 21:23:31 10622

原创 跟厂长学PHP7内核(五):系统分析生命周期

上篇文章讲述了模块初始化阶段之前的准备工作,本篇我来详细介绍PHP生命周期的五个阶段。一、模块初始化阶段我们先来看一下该阶段的每个函数的作用。1.1、sapi_initialize_request_empty函数// main/SAPI.cSAPI_API void sapi_initialize_empty_request(void){ SG(...

2018-09-06 20:47:55 216

原创 跟厂长学PHP7内核(四):生命周期之开始前的躁动

上一章我们对PHP的源码目录结构有了初步了解,本章我们继续从生命周期的维度对PHP进行剖析。一、概览生命周期是什么呢?你可以把它看作执行过程,PHP的生命周期也就是它从开始执行到结束执行的过程。PHP生命周期有五个阶段,分别为模块初始化阶段、请求初始化阶段、执行阶段、请求关闭阶段、模块关闭阶段。只是不同SAPI模式下,请求的情况略有不同,比如FastCGI下只经历了一次模块...

2018-09-06 20:47:14 210

原创 跟厂长学PHP7内核(三):源码目录结构

上篇文章我们已经介绍了源码分析工具的安装、配置以及调试方法,本文我们来讲述一下PHP源码的目录结构。一、目录概览以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目录的说明。 目录 说明 TSRM 线程相关安全的实现 Zend PHP解析器的核心实现 build linux下编译相关的目录...

2018-09-06 20:46:35 480

原创 跟厂长学PHP7内核(二):源码分析的环境与工具

本文主要介绍分析源码的方式,其中包含环境的搭建、分析工具的安装以及源码调试的基本操作。一、工具清单PHP7.0.12GDBCLion二、源码下载及安装$ wget http://php.net/distributions/php-7.0.12.tar.gz$ tar zxvf php-7.0.12.tar.gz$ cd php-7.0.12/$ ....

2018-09-06 20:45:42 621

原创 跟厂长学PHP7内核(一):发展史

PHP11994年,一位名叫Rasmus lerdorf的兄台为了在网上展示自己的履历和网页流量的统计,用Perl开发了一套脚本,后来因与日俱增的需求无法得到满足,lerdorf便使用c语言进行了重写,重写后的程序支持数据库的访问,以及web应用程序的简单开发,备受好评,随后便以Personal Home Page Tools为名发布了第一个版本。PHP2为了PHP的改...

2018-09-06 20:44:10 449

原创 Navicat Premium For Mac破解版

网上找了很多Navicat Premium For Mac的破解教程,实在费力,不过好在最终找到了破解版的安装包,现分享给大家 。安装包链接:https://pan.baidu.com/s/1BwsQH7-nA-YO7DbJkkLj-A 密码:8euz汉化包链接:https://pan.baidu.com/s/1YUEgUPqBV5HdQUk3Y2JztQ 密码...

2018-08-27 12:18:03 6290 5

原创 Ubuntu16.04如果设置开机启动

打开rc-local.servicecd /lib/systemd/systemsudo vim rc-local.service打开后看到如下内容[Unit] Description=/etc/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.local After=network.targ...

2018-08-26 11:42:26 448

原创 微服务之CAP定理

### 介绍 分布式系统中有三个方面需要权衡: - 一致性(consistency) - 可用性(availability) - 分区容忍性(partition tolerence)一致性是指当访问多个节点时返回相同的值。可用性是指每个请求都应该得到响应。分区容忍性指某些节点失效后,集群依然能够提供服务。但是CAP定理并不是以上三个条件,而是告诉我们实际情况中最多满足三个条件中的两...

2018-08-26 11:37:30 3329 1

原创 微服务之服务拆分

背景随着新功能的增加,代码库越来越大,当我们部署新功能时,需要将整个系统完整同步到生产环境,如果某同事的问题代码被发布到生产环境,可能会导致整个系统瘫痪,很难快速定位问题,这也是单块系统最大的弊端。为了解决该问题,人们便想方设法的模块化、清晰化自己的项目,将整个系统拆分为若干个小而单一的功能,以服务的方式提供给上层业务部门,每类服务有专人负责,通过单独部署某个服务来避免发布无关的代码导致的...

2018-08-26 11:36:28 3623

原创 silk文件转换pcm、wav、amr方法

这两天参加明源云的黑客马拉松,需要开发一款语音搜索房源的小程序。小程序上传的为silk文件,而语音转文字需要pcm、wav或amr格式文件,下面我来教你linux(ubuntu)环境下如何转换silk文件格式。安装ffmpeg添加源sudo add-apt-repository ppa:djcj/hybrid更新源sudo apt update...

2018-08-26 11:31:40 12151

原创 Ubuntu系统快捷方式创建小技巧

最近把笔记本系统换成了deepin,除了深度商店的应用外,很多软件都没有快捷方式。之前都是通过手动编写.desktop文件,很繁琐,今天无意中发现了一个小工具,可以通过图形化创建快捷方式,与大家分享一下。安装gnome-panelsudo apt-get install --no-install-recommends gnome-panel使用创建快捷方式文件...

2018-08-26 11:30:22 307

原创 Git如何同时发布到多个远程仓库

用github pages写博客很久了,一直没有考虑过网站SEO,这两天了解到百度搜索引擎是搜不到github pages的,因为github禁用了baidu spider。于是便找了一家国内的类github平台–coding,准备两家平台同时发布博客,那怎么样才能用git同时推送两个仓库呢?其实很简单,两条命令即可搞定。添加Git远程仓库git remote set-ur...

2018-08-26 11:29:17 310

空空如也

空空如也

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

TA关注的人

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