主题上手指南
6 minRetypeset 是一款基于 Astro 框架的静态博客主题,中文名为重新编排。本主题以 活版印字 为设计灵感,通过建立全新的视觉规范,对所有页面进行重新编排,打造纸质书页般的阅读体验,再现版式之美。所见皆为细节,方寸尽显优雅。 主题配置...
Markdown 样式指南
7 min以下是一些基本的 Markdown 语法示例,及其在 Retypeset 主题中的样式效果。 标题 在文本前添加井号 # 与空格,即可创建标题。井号数量对应标题等级。 语法 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题...
怎么写简历
18 min简历格式 首先你要准备的是简历。简历很重要,这是别人了解你的第一个地方,所以简历要好好写。当然,我们知道真正的好简历是要用自己的经历去写的,比如,有人的简历就是一句话:我发明了 Unix。 当然,并不是所有的人都有这样的经历,但这依然告诉我...
程序员路在何方
6 min前言 程序员的未来在哪里?作为一个写了六年代码程序员,我对这个问题有亲身体会,也是我一直思考的问题。 程序员 35 岁后大概有这么几个方向: 管理方向,CTO/技术总监 技术方向,架构师 自由职业/副业 创业 得过且过 ( 大部分人 ) 管...
极限网关初探(2)配置
4 min配置 上一篇我们先学习了极限网关的安装和启动,今天学习配置。 读写分离 配置文档 现在我们遇到读写分离的需求,用网关该怎么做呢? 假设服务端现在从 http://127.0.0.1:8000 写入数据,从 http://127.0.0.1:...
极限网关初探(1) 安装启动
4 min产品介绍 极限网关(INFINI Gateway)是一个面向 Elasticsearch 的高性能应用网关。特性丰富,使用简单。 它和其他业务型网关最大的区别是业务网关把请求转发给各个底层微服务,而它把请求转发给 Elasticsearch...
Go并发编程
1 minMutex Mutex几种状态 mutexLocked 互斥锁的锁定状态 mutexWoken 从正常模式被唤醒 mutexStarving 当前的互斥锁进入饥饿状态 waitersCount 当前互斥锁上等待的Goroutine个数 Mu...
错误处理
7 minSentinel Error 预定义的特定错误,我们叫为 sentinel error,这个名字来源于计算机编程中使用一个特定值来表示不可能进行进一步处理的做法。所以对于 Go,我们使用特定的值来表示错误。 if err == ErrSom...
代码重构之图片上传
3 min背景 用户头像上传功能中,服务端上传流程如下: base64 解码成字符串 图片写入服务器本地临时目录 上传到 阿里云 OSS/七牛云存储 图片审核 代码如下 type Parms struct { Head string //客户端发送...
重学 C 语言 HelloWorld 篇
6 min前言 按照编程界的惯例,学习一门语言第一件事就是输出“Hello World”,这大概是专属程序员的情节(类似格子衫和植发)。 以下就是各个主流编程语言的 HelloWorld 写法,为什么要列出各个语言的 HelloWorld?我们比较他...
重学 C 语言
5 min前言 近几年一直在做 Web 开发,从PHP到Go,从数据库到缓存。随着技术的深入,越发感到非科班转行写代码的我在理解源码和技术细节的力不从心。万丈高楼平地起,基础知识不牢固很难继续提升。我计划近期重学 C 语言,夯实基础知识。 步骤 我不...
Go 1.13版本 xerrors 包装错误
6 min翻译自 https://crawshaw.io/blog/xerrors Go 1.13: xerrors Go 2 系列语言更改的一部分是新的错误检查提案。 错误检查提案为其他地方(在 github.com/pkg/errors 等包中...
Redis非阻塞模式
4 min非阻塞模式 设置socket网络模型的非阻塞模式,需要三个关键函数socket()、listen()和accept() 在socket模型中,不同操作调用后会返回不同套接字类型。socket()方法返回主动套接字,然后调用listen()方...
Redis单线程
5 minRedis 单线程本质 Redis 的单线程,指的是 Redis 的网络 IO 和键值对读写由一个线程完成,这是 Redis 对外提供键值存储服务的主要流程,但是 Redis 的其他功能,比如持久化、异步删除、集群数据同步都是由额外的线程执...
Rsa 通信原理
1 min原理 A 和 B 通信,双方生成各自的公钥和私钥,把各自的公钥给对方。 A 向 B 发送消息,A 使用 B 的公钥加密消息,发给 B。 B 收到消息,用 B 的私钥解密消息。 B 回复消息,用 A 的公钥加密消息,发送给 A。 A 收到消息...
Redis集合操作
3 min不同操作的复杂度 集合类型的操作类型很多,有读写单个集合元素的,例如 HGET、HSET,也有操作多个元素的,例如 SADD,还有对整个集合进行遍历操作的,例如 SMEMBERS。这么多操作,它们的复杂度也各不相同。 而复杂度的高低又是我们...
Redis底层数据结构
5 min数据操作效率 在 String 类型,查找到哈希桶就能直接对 value 增删改查,它的实际复杂度就是哈希表的时间复杂度 O(1)。而集合类型中找到哈希桶后还要在集合中进行下一步操作。 集合操作效率受哪些因素影响? 首先和集合底层数据结构有...
Node 开发 cms
2 min简介 所有的互联网产品都需要 CMS(内容管理系统),也就是我们常说的后台管理系统。它用于展示用户数据和产品信息,以及运营和推广产品。 曾经,CMS 是世界上最好的编程语言 --PHP 的天下。帝国、织梦、wordpress、phpcms...
Node 新手课(19)项目打包和部署
2 min上节课我们讲了首页列表,我们所有开发功能模块就已经讲完了,今天是最后一课,我们来讲项目部署到服务器。 需求 把项目部署到云服务器上,能够对外网提供接口服务。 功能流程 1)在云服务器上安装 nodejs 环境。 2) 将我们写好的 koa2...
Node 新手课(18)首页列表
1 min上节课我们讲了点赞,今天我们来讲查询首页列表。 需求 用户打卡小程序的首页就以列表的形式展示所有用户打卡发布的图片和内容。用户可以点赞某一条打卡。 功能流程 查询数据库中 card 表的所有记录,后期可以扩展加入分页或分类、标签等功能。 代...
Redis哈希表
6 min前言 我们对 Redis 的深刻印象就是"快",它在接收到一个键值对操作指令后在微妙内完成操作。 为什么它能这么快,一方面它是在内存中进行操作,内存访问本身速度快,另一方面是它有高效的数据结构。键值对是按一定的数据结构存储,操作键值对就是对...
Node 新手课(17)点赞
1 min上节课我们讲了讲和打卡,今天我们来讲点赞。 需求 用户对信息列表中的信息进行点赞操作。 功能流程 前端传到后端信息 card_id,后端根据 card_id 和 token 解析出来的 user_id,查询 card_praise 表,如果...
Node 新手课(16)打卡
1 min上节课我们讲了图片上传,今天我们来讲打卡。 需求 用户填写文字内容,上传图片,发送后首页列表可以展示出来。 功能流程 上传图片后前端获得图片地址,再把用户输入的文字内容 content 和 image 发到后端,后端插入记录到 card 表...
Node 新手课(15)图片上传
1 min上节课我们讲了修改用户信息功能,今天我们来讲图片上传。 需求 用户在打卡功能中,选择图片上传。类似微信发朋友圈的功能。 功能流程 安装 koa-body 包,用来接收图片上传的文件流。然后保存到 public 目录。 代码 $ npm i...
Node 新手课(14)修改用户信息
1 min上节课我们讲了用户信息展示,今天我们来讲修改用户信息功能。 需求 用户修改自己的信息,如头像,昵称,手机号等,我们以修改昵称为例。 功能流程 通过用户凭据 token 获取到用户 id,在数据库 user 表中找到用户记录,把前端传来的昵称...
Redis查找数据
4 min如何查找键值对 Redis 网络访问模块解析客户端的请求,获得要执行的操作,针对键值对的操作就先要查找键值对是否存在。这就要用到 Redis 的索引模块。在索引模块,Redis 根据 key 查找到 value 的存储位置 常见的索引有哈希...
Node 新手课(13)用户信息
1 min上节课我们讲了手机号登录,今天我们来讲展示用户信息接口。 需求 用户查看自己的信息,如头像,昵称,手机号等。 功能流程 通过用户凭据 token 获取到用户 id,在数据库 user 表中找到用户记录,返回前端用户的昵称和手机号。 代码 r...
Node 新手课(12)手机登录
2 min上节课我们讲了微信小程序登录,今天我们来讲绑定手机号。 需求 用户微信登录后绑定自己的手机号。 功能流程 通过用户凭据 token 获取到用户 id,在数据库 user 表中找到用户记录,把前端传来的手机号更新到记录中。 中间件 sir-k...
Redis操作接口
6 min前言 上一节我们学习了系统学习法的原理和作用,后续 Redis 的学习我们将按照系统学习法的方式学习,提升学习效率。 我们还学习了键值数据库关键功能数据模型和操作接口,了解不同键值数据库的数据模型的作用和意义,本节我们继续学习键值数据库 操...
Node 新手课(11)微信小程序登录
2 min上节课我们讲了 nodejs 操作 redis,今天我们来讲解微信小程序登录。 代码 微信服务端接口文档地址 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open...
Redis基础架构
5 min前言 我们应该怎样学习 Redis,大部分网上的教程从安装部署、介绍 API 开始,字符串、列表、集合等等。然后是发布订阅、持久化,再到主从复制,集群部署。这样的好处是我们能立刻掌握一个具体的知识点,甚至能马上解决一些现实业务场景中遇到的问...
Node 新手课(10)nodejs 操作 redis
1 min上节课我们讲了 nodejs 操作 mysql,今天我们来讲解 nodejs 操作 redis 安装 redis 包 在 sir-koa 目录下执行 $ npm i ioredis --save redis 配置和操作 config/red...
Node 新手课(9)nodejs 操作 mysql
2 min上节课我们讲了 koa2 的路由,今天我们来讲解 nodejs 操作 mysql 导入 sql 文件 sql 文件地址 https://github.com/guojiangclub/sir-node/blob/master/sir.sql...
Node 新手课(8)路由
2 min上节课我们来搭建项目架构,koa2 和 mysql。这节课我们讲解 koa2 的路由 路由 路由就是客户端的请求发送到服务端的的 url。我们打开浏览器输入 http://www.baidu.com 进入百度,这个网址就是路由。 根据功能划...
Node 新手课(7)搭建项目,配置开发环境
3 min上节课我们讲解了项目技术架构和项目展示,这节课我们来搭建项目架构,koa2 和 mysql koa2 介绍 为什么使用 koa2,框架给我们节省很多时间,制定了流程和标准,降低了我们开发难度。使我们遵循标准,专心开发我们的业务, 写更少的代...
Node 新手课(6)项目需求分析和展示
3 min上节课我们讲解了 js 中的 callback,promise,async 和 await。这节课我们介绍项目功能和技术架构。 项目介绍 果酱先生是一个男士穿搭推荐社区,分享当下男士生活穿搭,记录生活仪式感,手把手教你如何培养自己的穿搭理念...
Node 新手课(5)callback-promise 和 async-await
3 min上节课我们讲解了 nodejs 处理 http 请求,今天我们讲下 callback, promise 和 async, await callback js 代码处理逻辑都是异步,会造成 callback 层层嵌套。简称:回调地狱,非常不好...
Node 新手课(4)nodejs 处理 http 请求
3 min上节课我们成功用开启了一个 http 服务,写了个 helloworld,今天我们讲解下 nodejs 是如何处理 http 的 get 和 post 请求。 我们先新建个 http-test 目录,该目录主要是用做测试 nodejs 代码...
Node 新手课(3)nodejs 和 javascript 区别
3 min上节课我们成功用开启了一个 http 服务,写了个 helloworld,今天我们讲解下 nodejs 和 javascript 区别。 ECMAScript 定义了语法,写 javascript 和 nodejs 必须遵守它的语法规范 变...
Node 新手课(2)Hello World
1 min上节课我们讲解了 node 环境的搭建,按照编程语言的惯例,我们首先开始个 HelloWorld 程序。 创建项目 创建 sir-node 文件夹,这个就是我们要开发的项目 $ mkdir sir-node $ cd sir-node 新建...
Node 新手课(1)nodejs 下载安装
2 min上节课我们介绍了项目和课程,俗话说:工欲善其事必先利其器,今天我们就开始搭建 node 环境。 普通安装 访问 http://nodejs.cn,下载并且安装 打开 cmd 命令行 # 查看 node 版本 $ node -v $ v12....
Node 新手课(0)项目介绍
2 min简介 果酱团队历时一年精心打造,理论 + 实战打造前端全栈商业级应用开发课程 -《前端新星计划 - 果酱先生》,学完就能上手开发公司产品。 从前端到全栈,层层突破技术瓶颈,拓宽前端工程师职业边界,带你全栈开发上线产品。 后端干货 nodej...
Go 搭建内网代理
1 min前言 gitlab地址:gitlab.example.com:82 代理地址: test.com 修改host nginx配置 conf server { listen 80; server_name www.test.com test.c...
设计模式对我们的作用
1 min"note/geektime/设计模式之美/1.md"
PHP 和 Go 通过 jsonrpc 通信
2 min说明 PHP 和 GO 通过 jsonrpc 通信 代码 package main import ( "errors" "fmt" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os" ) // 算数运算...
Nginx 配置 Socket.IO 负载均衡
1 minnginx 配置 upstream nodes { ip_hash; server 192.168.1.114:3000; server 192.168.1.114:3001; server 192.168.1.114:3002; } se...
Python 在类中实现 swith 功能
1 min问题 Python 中没有 switch 的语法,但是很多时候需要多重条件判断,又不想写多个 if,那只能手动实现了。 实现代码 class RunMethod: def post(self,url=None,data=None,heade...
vscode 快捷键和扩展
2 min快捷键 文件资源管理器 Ctrl + Shift + E 跨文件搜索 Ctrl + Shift + F 源代码管理 Ctrl + Shift + G 启动和调试 Ctrl + Shift + D 管理扩展 Ctrl + Shift + X...
swoole 异步 task
2 min记录 今天做了项目异常监控,本来是用 nodejs 调用企业微信 sdk, 后来发现发送 http 请求到腾讯接口总是报错,就换成用 swoole 投递异步任务处理项目异常监控,记录一下代码。 服务端 class Server { priv...
PHP 7 新特性
1 min1. 太空船运算符 echo 1<=>1; //0 echo 2<=>1; //1 echo 1<=>2; //-1 2. 类型声明 declare(strict_type=1)//strict_type=1表示开启严格模式 functio...
PHP 运行模式
5 min运行模式 php 分为五大运行模式 cgi(通用网关接口 Common Gateway Interface) fast-cgi(cgi 升级版本) cli(命令行模式 Command Line Interface) isapi(Intern...
编程书籍推荐
2 min《编码:隐匿在计算机软硬件背后的语言》 书中有非常丰富和连贯的例子去讲述计算机的工作原理,用来辅助课程第一部分的学习,以及深化对课程内容的理解都是非常好的。 《鸟哥的 linux 私房菜:基础学习篇》 《鸟哥的 Linux 私房菜:基础学习...