博客园 - 刘哇勇
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=649971
2022-10-17T03:44:14Z
刘哇勇
https://www.cnblogs.com/Wayou/
feed.cnblogs.com
https://www.cnblogs.com/Wayou/p/15307049.html
[golang] 数据类型及变量 - 刘哇勇
零值 未显式指定初始值的变量会自动获取零值,具体来说, 整形:0 浮点:0.0 布尔类型:false 字符串:"" (空字符串) interfaces,slices,channels,maps,pointers 及 functions: nil 字面量 对于数字字面量,可在值中穿插 _ 分隔以提高可
2021-09-18T00:36:00Z
2021-09-18T00:36:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】零值 未显式指定初始值的变量会自动获取零值,具体来说, 整形:0 浮点:0.0 布尔类型:false 字符串:"" (空字符串) interfaces,slices,channels,maps,pointers 及 functions: nil 字面量 对于数字字面量,可在值中穿插 _ 分隔以提高可 <a href="https://www.cnblogs.com/Wayou/p/15307049.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14966922.html
[golang] go 常用命令 - 刘哇勇
go run 编译生成临时可执行文件,程序结束后删除。适合用于小程序的调试,或者把 Go 当成脚本语言来用的场景。 go build 编译并生成可执行文件,默认与源码文件同名,可通过 -o 指定名称。 go install Go 程序除了可通过预先编译成可执行文件进行分发外,常用的工具包等三方依赖,
2021-07-03T09:46:00Z
2021-07-03T09:46:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】go run 编译生成临时可执行文件,程序结束后删除。适合用于小程序的调试,或者把 Go 当成脚本语言来用的场景。 go build 编译并生成可执行文件,默认与源码文件同名,可通过 -o 指定名称。 go install Go 程序除了可通过预先编译成可执行文件进行分发外,常用的工具包等三方依赖, <a href="https://www.cnblogs.com/Wayou/p/14966922.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14966916.html
[golang] GOROOT 及 GOPATH - 刘哇勇
GOROOT: 标识 Go SDK 的位置,一般情况下不用改,除非要切换到其他 Go 版本 GOPATH: 定义工作区(workspace)的位置。 默认情况下为 ~/go 目录。其中包含 bin: go 编译后的可执行文件 pkg:包含编译后的包代码,即 .a 文件 src: 源码目录,包含诸如
2021-07-03T09:44:00Z
2021-07-03T09:44:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】GOROOT: 标识 Go SDK 的位置,一般情况下不用改,除非要切换到其他 Go 版本 GOPATH: 定义工作区(workspace)的位置。 默认情况下为 ~/go 目录。其中包含 bin: go 编译后的可执行文件 pkg:包含编译后的包代码,即 .a 文件 src: 源码目录,包含诸如 <a href="https://www.cnblogs.com/Wayou/p/14966916.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14924196.html
从 axios 源码中了解到的 Promise 链与请求的取消 - 刘哇勇
axios 中一个请求取消的示例: axios 取消请求的示例代码 import React, { useState, useEffect } from "react"; import axios, { AxiosResponse } from "axios"; export default fun
2021-06-23T11:27:00Z
2021-06-23T11:27:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】axios 中一个请求取消的示例: axios 取消请求的示例代码 import React, { useState, useEffect } from "react"; import axios, { AxiosResponse } from "axios"; export default fun <a href="https://www.cnblogs.com/Wayou/p/14924196.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14906728.html
使用 Docker 部署 Node 应用 - 应用在服务器上的部署 - 刘哇勇
前面使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化一文中,通过各种手段将镜像文件的大小已经降到了一个理想的状态,此时再进行分发就会方便很多了。毕竟,传递上 G 大小的文件和 100+M 大小的文件,还是很不一样的。 发布与部署 通过将镜像发布到 Docker Hub, 在服务器再安
2021-06-20T06:27:00Z
2021-06-20T06:27:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】前面使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化一文中,通过各种手段将镜像文件的大小已经降到了一个理想的状态,此时再进行分发就会方便很多了。毕竟,传递上 G 大小的文件和 100+M 大小的文件,还是很不一样的。 发布与部署 通过将镜像发布到 Docker Hub, 在服务器再安 <a href="https://www.cnblogs.com/Wayou/p/14906728.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14906726.html
使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化 - 刘哇勇
前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化。 镜像的优化 通过 docker images 看到简单的一个 node 服务端应用,超过 1G 大小,因此需要优化一下使其更加轻量。 通过如下命令查看镜像文件里都有什么文件以及分
2021-06-20T06:26:00Z
2021-06-20T06:26:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化。 镜像的优化 通过 docker images 看到简单的一个 node 服务端应用,超过 1G 大小,因此需要优化一下使其更加轻量。 通过如下命令查看镜像文件里都有什么文件以及分 <a href="https://www.cnblogs.com/Wayou/p/14906726.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14901465.html
使用 Docker 部署 Node 应用 - 刘哇勇
容器将应用与环境打包整合,解决了应用外部依赖的痛点,打包后通过窗口可方便地部署到任意环境,用过就知道很香。 创建示例应用 以 NestJS 为例,先创建一个示例应用。 $ npm i -g @nestjs/cli $ nest new my-app $ cd my-app $ yarn && yar
2021-06-18T14:31:00Z
2021-06-18T14:31:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】容器将应用与环境打包整合,解决了应用外部依赖的痛点,打包后通过窗口可方便地部署到任意环境,用过就知道很香。 创建示例应用 以 NestJS 为例,先创建一个示例应用。 $ npm i -g @nestjs/cli $ nest new my-app $ cd my-app $ yarn && yar <a href="https://www.cnblogs.com/Wayou/p/14901465.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14870820.html
Intersection Observer API - 刘哇勇
Intersection Observer API 随着 Web 应用的丰富和成熟,检测元素是否可见的需求增多。之前一般是通过三方库来实现,各自有各自的实现方式,性能也有差异。Intersection Observer API 便是这种功能的一个原生支持。 适用场景 页面滚动过程中的懒加载。 长页面
2021-06-10T06:07:00Z
2021-06-10T06:07:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】Intersection Observer API 随着 Web 应用的丰富和成熟,检测元素是否可见的需求增多。之前一般是通过三方库来实现,各自有各自的实现方式,性能也有差异。Intersection Observer API 便是这种功能的一个原生支持。 适用场景 页面滚动过程中的懒加载。 长页面 <a href="https://www.cnblogs.com/Wayou/p/14870820.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14868217.html
Objective-C 中实现 Monkey-Patching - 刘哇勇
Monkey-Patching 的目的是修改原方法同时为其注入新的逻辑。可以理解成劫持。这样系统在执行的时候,实际上执行的是被替换的版本。 大部分时候,这里的操作隐含了对原方法的保留,只是向其中添加自己的新逻辑。毕竟,你不想修改掉系统某个方法后整个程序就崩掉。所以最安全的做法就是在劫持的时候保留对原
2021-06-09T10:55:00Z
2021-06-09T10:55:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】Monkey-Patching 的目的是修改原方法同时为其注入新的逻辑。可以理解成劫持。这样系统在执行的时候,实际上执行的是被替换的版本。 大部分时候,这里的操作隐含了对原方法的保留,只是向其中添加自己的新逻辑。毕竟,你不想修改掉系统某个方法后整个程序就崩掉。所以最安全的做法就是在劫持的时候保留对原 <a href="https://www.cnblogs.com/Wayou/p/14868217.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14852587.html
HTTP 内容协商/ Content Nagotiation - 刘哇勇
访问同一个 URI 时,服务器可以返回不同类型的资源。比如在浏览器中访问 http://www.example.com/user 可以是个网页,也可以是个 JSON 接口,甚至可以是张图片等。 具体返回哪种类型,就需要引入内容协商的机制,以达到返回正确资源类型的目的。 内容协商分为服务器主导(ser
2021-06-05T05:31:00Z
2021-06-05T05:31:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】访问同一个 URI 时,服务器可以返回不同类型的资源。比如在浏览器中访问 http://www.example.com/user 可以是个网页,也可以是个 JSON 接口,甚至可以是张图片等。 具体返回哪种类型,就需要引入内容协商的机制,以达到返回正确资源类型的目的。 内容协商分为服务器主导(ser <a href="https://www.cnblogs.com/Wayou/p/14852587.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14850956.html
MySQL 不同版本数据导入的问题 - 刘哇勇
一般地,本地会安装到最新的 MySQL,比如 8 点几开发调试。而云服务上的 MySQL 很可能是老版本的,比如 MySQL 5 点几。 那么问题来了,将本地高版本的 MySQL 导出的建表语句及数据导入到低版本时,毫不意外会有问题,这里记录两点。 准备工作 整个 dabase 的导出 数据导出使用
2021-06-04T11:20:00Z
2021-06-04T11:20:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】一般地,本地会安装到最新的 MySQL,比如 8 点几开发调试。而云服务上的 MySQL 很可能是老版本的,比如 MySQL 5 点几。 那么问题来了,将本地高版本的 MySQL 导出的建表语句及数据导入到低版本时,毫不意外会有问题,这里记录两点。 准备工作 整个 dabase 的导出 数据导出使用 <a href="https://www.cnblogs.com/Wayou/p/14850956.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14846523.html
利用 ps 命令查看进程的位置 - 刘哇勇
首先,理解一下 ps -ef 的输出。 以下是该命令的一个输出示例: $ ps -ef UID PID PPID C STIME TTY TIME CMD 0 1 0 0 9:05PM ?? 0:05.03 /sbin/launchd 0 93 1 0 9:05PM ?? 0:00.33 /usr/
2021-06-03T11:08:00Z
2021-06-03T11:08:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】首先,理解一下 ps -ef 的输出。 以下是该命令的一个输出示例: $ ps -ef UID PID PPID C STIME TTY TIME CMD 0 1 0 0 9:05PM ?? 0:05.03 /sbin/launchd 0 93 1 0 9:05PM ?? 0:00.33 /usr/ <a href="https://www.cnblogs.com/Wayou/p/14846523.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14842713.html
MySQL 重置 root 密码 - 刘哇勇
使用以下语句尝试修改 root 密码时, mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 如果提示如下错误: ERROR 1819 (HY000): Your password does not satisfy the
2021-06-02T11:57:00Z
2021-06-02T11:57:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】使用以下语句尝试修改 root 密码时, mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 如果提示如下错误: ERROR 1819 (HY000): Your password does not satisfy the <a href="https://www.cnblogs.com/Wayou/p/14842713.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14837065.html
killall 中的 signal - 刘哇勇
Flutter 开发时,会遇到另的任务挂起导致新的 Dart 服务无法启动的问题,提示如下: Waiting for another flutter command to release the startup lock... killall 命令 此时可以通过以下命令,将所有当前运行的 Dart
2021-06-01T06:27:00Z
2021-06-01T06:27:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】Flutter 开发时,会遇到另的任务挂起导致新的 Dart 服务无法启动的问题,提示如下: Waiting for another flutter command to release the startup lock... killall 命令 此时可以通过以下命令,将所有当前运行的 Dart <a href="https://www.cnblogs.com/Wayou/p/14837065.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14833037.html
Kafka 的安装及启动 - 刘哇勇
Linux 服务器 CentOS 为例。 Kafka 安装 获取下载地址,下载后解压。 $ wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.12-2.5.0.tgz $ tar -zxvf kafka_2.12-2.5.0.tgz
2021-05-31T12:06:00Z
2021-05-31T12:06:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】Linux 服务器 CentOS 为例。 Kafka 安装 获取下载地址,下载后解压。 $ wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.12-2.5.0.tgz $ tar -zxvf kafka_2.12-2.5.0.tgz <a href="https://www.cnblogs.com/Wayou/p/14833037.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14814748.html
Objective-C 中不带加减号的方法 - 刘哇勇
显而易见的事实是,Objective-C 中,+ 表示类方法,- 表示实例方法。 但看别人代码过程中,还会发现一种,不带加减号的方法。 @implementation MyViewController void foo(){ printf("msg from foo..."); } - (void)
2021-05-26T11:11:00Z
2021-05-26T11:11:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】显而易见的事实是,Objective-C 中,+ 表示类方法,- 表示实例方法。 但看别人代码过程中,还会发现一种,不带加减号的方法。 @implementation MyViewController void foo(){ printf("msg from foo..."); } - (void) <a href="https://www.cnblogs.com/Wayou/p/14814748.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14808535.html
TypeScript 中 Optional Chaining 和 Nullish Coalescing - 刘哇勇
Optional Chaining 解决的问题是重复且无意义的判空,之所以说无意义,是对业务来说它不是必需的,但不判空,程序直接就挂了,比如: let x = foo.bar.baz(); 这里的访问链路上 foo bar baz 任何一个为 undefined,程序就停止工作。 使用 Option
2021-05-25T06:06:00Z
2021-05-25T06:06:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】Optional Chaining 解决的问题是重复且无意义的判空,之所以说无意义,是对业务来说它不是必需的,但不判空,程序直接就挂了,比如: let x = foo.bar.baz(); 这里的访问链路上 foo bar baz 任何一个为 undefined,程序就停止工作。 使用 Option <a href="https://www.cnblogs.com/Wayou/p/14808535.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14798093.html
iTerm2 中实现命令完成时进行通知 - 刘哇勇
执行一个耗时很长的命令时,或命令耗时不确定,可以配置 iTerm2 在命令完成或失败时主动通知,而不用我们自己时不时地去检查。以下是一些获取完成通知的方式。 say 可在命令后跟 say done 来使用声音提示。这里 say 是 mac 上文本转语音的工具,后面跟需要朗读的文本,可以是任意文本。
2021-05-22T01:06:00Z
2021-05-22T01:06:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】执行一个耗时很长的命令时,或命令耗时不确定,可以配置 iTerm2 在命令完成或失败时主动通知,而不用我们自己时不时地去检查。以下是一些获取完成通知的方式。 say 可在命令后跟 say done 来使用声音提示。这里 say 是 mac 上文本转语音的工具,后面跟需要朗读的文本,可以是任意文本。 <a href="https://www.cnblogs.com/Wayou/p/14798093.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14791198.html
Redis 的使用 - 刘哇勇
安装 $ brew install redis 检查安装: $ redis-server -v Redis server v=6.0.3 sha=00000000:0 malloc=libc bits=64 build=5bce11175f58e836 启动 $ brew services star
2021-05-20T11:32:00Z
2021-05-20T11:32:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】安装 $ brew install redis 检查安装: $ redis-server -v Redis server v=6.0.3 sha=00000000:0 malloc=libc bits=64 build=5bce11175f58e836 启动 $ brew services star <a href="https://www.cnblogs.com/Wayou/p/14791198.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Wayou/p/14787954.html
TypeScript 中限制对象键名的取值范围 - 刘哇勇
当我们使用 TypeScript 时,我们想利用它提供的类型系统限制代码的方方面面,对象的键值,也不例外。 譬如我们有个对象存储每个年级的人名,类型大概长这样: type Students = Record<string, string[]>; 理所当然地,数据就是长这样: const studen
2021-05-19T15:09:00Z
2021-05-19T15:09:00Z
刘哇勇
https://www.cnblogs.com/Wayou/
【摘要】当我们使用 TypeScript 时,我们想利用它提供的类型系统限制代码的方方面面,对象的键值,也不例外。 譬如我们有个对象存储每个年级的人名,类型大概长这样: type Students = Record<string, string[]>; 理所当然地,数据就是长这样: const studen <a href="https://www.cnblogs.com/Wayou/p/14787954.html" target="_blank">阅读全文</a>