- 博客(421)
- 资源 (2)
- 收藏
- 关注
原创 【博客迁移,不再使用CSDN发新博文了】
首先感谢CSDN陪我度过这么多年,但是由于自己对博客的使用体验越来越发烧,CSDN已经不能满足我的需要了,于是自己设计开发了个人博客,新的文章将写在那里,之前在CSDN上的文章不会变动。新博客地址:https://blog.randspace.xyz/...
2021-10-16 21:41:21 356
原创 【本博客所有公开的原创博文皆允许转载,无须再征求作者本人(也就是我)同意】
CSDN转载博文增加了“经过作者本人同意”的选项,无非就是想避免版权的纠纷。个人认为,公开的博文,就是为了方便大家查阅资料和解决问题的,别人完全可以转载备份。因为这个闹版权纠纷的难道不是耍流氓?...
2021-04-10 20:02:46 299
原创 Ubuntu 卸载 gitlab
Remove servicessudo gitlab-ctl uninstallClean any data generated by usage of the packagesudo gitlab-ctl cleanseYou may also want to remove any accounts you configured. To do sosudo gitlab-ctl remove-accountsThen remove the package usingsudo dp.
2022-03-06 20:16:25 2324
原创 【NodeJS】Events 模块
const EventEmitter = require('events');const ee = new EventEmitter();ee.on('eventname', (a, b) => { console.log(a, b); // 1 r ee.removeAllListeners(['eventname']);});ee.emit('eventname', 1, 'r');
2021-09-26 10:30:06 176
原创 【CDN】https 证书通过 NodeJS SDK 接口上传
const fs = require('fs');const Core = require('@alicloud/pop-core');let client = new Core({ accessKeyId: 'xxxx', accessKeySecret: 'xxxx', endpoint: 'https://cdn.aliyuncs.com', apiVersion: '2018-05-10'});//获取所有加速的域名,然后批量设置同一个证书client..
2021-09-19 15:27:54 572
原创 【LetsEncrypt】ssl证书完全自动化续签
ssl证书如果用到很多个,手动更新将会比较烦,并且免费的LetsEncrypt 90天就要更新一次,总不能今天更新完了,明天或下周又要更新,如果能让它自动更新岂不美哉?实践证明,这是行得通的。首先,ssl证书我目前有2个用途,一个是自己服务器的nginx需要,nginx配置文件写好证书路径即可,每次获取到新的证书,nginx 需要重新加载配置文件,nginx -s reload。另一个用途是获取到证书之后上传给阿里云CDN使用,因为CDN开了https,上传证书通过CDN SDK的接口上传而不是手动。.
2021-09-19 15:16:26 4943
原创 【crontab】Ubuntu 设置定时任务
crontab 只有一个配置文件crontab-e 用vim编辑配置文件,退出之后,会自动运行crontab-l 查看有哪些任务#例子:* * * * * command分 时 日 月 周 命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令例子:*/30 * * * * /home/mysql_back.sh ...
2021-09-17 23:28:01 184
原创 【canvas】最小模板
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>canvas base</title> <style> *{ margin: 0; padding: 0; } body{ } #c.
2021-09-16 17:25:46 148
原创 【NodeJS】读文件 readFileSync
注:如果要读的文件是一个符号链接,那么它会将符号链接指向的文件内容读出来,符号链接也照读不误。const fs = require('fs');let cert = fs.readFileSync('./fullchain1.pem', 'base64');let key = fs.readFileSync('./privkey1.pem', 'utf8');// let b64 = cert.toString('base64');let res = encodeURIComponent(
2021-09-16 14:10:09 2501
原创 需要使用ssl证书的地方
1、nginx做域名转发可能需要配置多个,可以使用 Certbot 自动申请。2、阿里云CDN如果要开https,需要上传证书或者使用免费证书
2021-09-14 18:16:32 153
原创 锚点平滑滚动之scrollIntoView
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>锚点平滑滚动</title> <style> #d1{ background-color: #FFFCF0; height: 400px; } #d2{ .
2021-09-14 16:07:31 368
原创 【LetsEncrypt】 简介
Let’s Encrypt 是一个证书颁发机构,提供免费的ssl证书,有很多大公司赞助支持。要从Let’s Encrypt 获取你网站域名的证书,你必须展示对该域名的控制。要操作使用Let’s Encrypt,你需要在你的web服务器上安装ACME协议的软件。Let’s Encrypt 推荐使用 Certbot ACME 客户端,它可以在不停机的情况下自动化证书颁发和安装。...
2021-09-13 10:42:47 535
原创 【MongoDB】Convert a Standalone to a Replica Set
默认安装好的数据库都是Standalone,要使用事务需要转换为 Replica Set,不然无法使用1、MongoDB停止服务2、修改配置文件,如下:replication: replSetName: rs03、重新启动服务,需要携带配置文件参数4、初始化Replica Set,如下:rs.initiate()5、设置完成,查看状态:rs.status()...
2021-09-12 20:26:04 350
原创 【MongoDB】win10下安装注意事项
1、数据和日志不要使用默认路径,在其他盘新建目录存放2、事务transactions的执行需要副本集Replica Set,而安装好之后默认是Standalone,所以需要将运行方式替换为Replica Set,怎么替换见其他文章
2021-09-12 18:37:20 150
原创 async 与 await
const doSometing = t => { return new Promise(resolve => { setTimeout(() => { resolve(t); }, t); });};const doSometing2 = t => { return t;};const fun = async () => { let d3 = await doSometing2.
2021-09-11 21:52:11 131
原创 【Robo3T】启动后崩溃问题
创建私有npm包1、npm官网可以创建私有npm包,但是要收费,每人每月7$,先找免费的2、在线的免费的有GitHub,可以看文章:https://andreybleme.com/2020-05-31/hosting-private-npm-packages-for-free/3、自己本地搭建仓库,可以使用开源项目verdaccio,这个项目的前身是sinopia,前身已经不维护了,verdaccio 地址:https://github.com/verdaccio/verdaccio4、..
2021-09-07 19:26:33 1183 2
原创 【MongoDB】Update Operators
Update OperatorsFields Name Description $currentDate Sets the value of a field to current date, either as a Date or a Timestamp. $inc Increments the value of the field by the specified amount.
2021-06-13 19:56:07 209 1
原创 【JavaScript】String转Uint8Array
浏览器端:new TextEncoder().encode('zifuc');NodeJS:Buffer.from('你好')
2021-06-13 16:02:01 4664 3
原创 【Win10】磁盘重新分区,保留数据
本来我只有c盘和d盘,现在我要把d盘拆分,d盘里已经有很多文件不方便迁移,在不影响d盘已经存在文件的情况下,弄个e盘出来,可行吗?实践证明,可行。原理:在Win10下,
2021-06-08 11:28:10 2723
原创 校验和算法 rd16
randdigest 16bitconst modulus16 = 256 * 256;const rd16 = t => { let buf = Buffer.isBuffer(t) ? t : Buffer.from(t); let p = Math.floor(buf.length / 2); let r = buf.length % 2; let checksum = 0; for (let i = 0; i < p; i += 2) {.
2021-05-28 22:00:01 372
原创 【性能优化】【Brotli】使用Brotli压缩算法来压缩静态文件
Brotli 比 gzip 更强,压缩后体积更小,gzip可以淘汰了。静态文件可以使用Brotli 进行预压缩,会占用cpu资源,返回头需要指定:'Content-Encoding': 'br'不然浏览器无法识别Brotli 基本可以压缩任何静态文件或者直接压缩返回的字节流,使用也非常简单,代码如下:const zlib = require('zlib');let jquery = fs.readFileSync('./jquery-3.6.0.min.js', 'u...
2021-05-23 14:03:38 1633
原创 【NodeJS】【pm2】加参数运行
node index.js arg1 arg2pm2 start index.js -- arg1 arg2上面两个等价获取参数process.argv返回一个数组如下:[ '/usr/bin/node', '/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js', 'arg1', 'arg2']
2021-05-22 19:49:28 1878
原创 【CDN】
1、添加域名首先想好两个域名,一个引用域名,也就是加速域名,另一个回源域名。添加域名之后,会对加速域名生成一个cdn域名,需要给这个cdn域名设置别名也就是添加CNAME记录,别名就是加速域名。以后请求加速域名,实际请求的是cdn域名。如果cdn节点没资源,它会去源站,也就是回源域名获取信息。2、刷新和预热刷新的作用是清空cdn上的缓存,下次请求cdn就会回源。刷新可以根据url单个资源刷新,也可以根据目录刷新预热的作用就不用解释了。3、源站可以使用https 443端口..
2021-05-21 23:34:28 321
原创 生产环境网站部署
需求:1、需要做域名端口映射功能2、考虑使用cdn减轻服务器压力3、cdn只能设置一个缓存时间,不知道是文件在cdn服务器的缓存时间还是在用户浏览器的缓存时间模板文件,静态文件,需要去空格混淆压缩,然后brotli压缩,压缩之后...
2021-05-21 18:34:04 173
原创 nginx 启动 停止 重载配置文件
当安装好之后,默认都是开机自启动的,可以查看nginx状态:systemctl status nginx如果nginx已经启动并且没有使用systemctl的方式启动,可以先杀死nginx进程,再用systemctl启动启动:systemctl start nginx停止:systemctl stopnginxreload配置文件:nginx -s reload...
2021-05-20 20:57:16 157
原创 【LetsEncrypt】 证书获取
使用certbot 工具,网站:https://certbot.eff.org/lets-encrypt/ubuntubionic-other单域名证书申请:1、安装 snapdapt install snapdsnap install coresnap refreshcore2、使用snap安装certbotsnap install --classiccertbot3、准备certbot命令行ln -s /snap/bin/certbot /usr/bin/ce...
2021-05-19 23:03:12 144
原创 【MongoDB】连接池理解及测试 NodeJS
更新于2021-05-15最近对MongoDB连接池如何正确使用不是特别清楚,于是做了一些测试也查找了相关资料,终于知道了MongoDB的连接池是怎么工作的了。首先,在 nodejs web 应用中正确使用MongoDB,应该先 MongoClient.connect ,回调中会得到 client,然后 let db = client.db() ,将这个db作为全局对象使用即可,任何请求都可以使用db去执行语句。这是正确的,Stack Overflow上的答案也是一致的。连接池是怎么工作的.
2021-05-15 19:36:09 1918
原创 【MongoDB】版本选择
2021-05-12MongoDB官网版本有:4.4.6、4.2.14、4.0.24、3.6.23、3.4.24、3.2.22、3.0.15Robo 3T 最新版本:Robo 3T 1.4 brings support for MongoDB 4.2, and a mongo shell upgrade from 4.0 to 4.2, with the ability to manually specify visible databases.MongoDB各版本对操作系统的兼容情况:http
2021-05-12 15:07:24 7197 1
原创 任意Base编码的实现NodeJS
本程序参考开源项目:https://github.com/cryptocoinjs/base-x本程序还没有完全写完BaseN:let chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';let len = chars.length;let charCodeMap = Buffer.alloc(256);for (let i = 0; i < len; i++) { charC
2021-05-08 11:20:32 285
原创 256进制的转换
这个有什么意义,编码用的,把一串二进制,用一个字符表编码,比如base64就是一种常见的编码方案,那么编码有什么意义,可以参考:https://randtsui.blog.csdn.net/article/details/116064124。本文探讨的问题是,把一串二进制,用任意多个字符组成的字符表编码,这个字符表为BaseN,base64,N就是64个字符,比特币的base58,N就是58个字符,base32,N就是32个字符可以写一个函数,传入一个任意的字符串作为字符表,然后就可以用该表对一串二
2021-05-03 00:29:49 6493
原创 命名的字符支持
文件名不适合用:/\|:;*?"<>-=$.#&()[]{}!`~文件名可以用:_+,@%nodejs 对象 key value 支持utf-8,base64肯定支持nodejs 变量命名字符有限url 虚拟路径path可以自定义使用安全字符cookie有些字符不能使用,但是base64字符传输是安全的,querystring会把+号变成空格encodeURIComponent 会让utf-8字符串长度增加很多倍随机buffer转...
2021-05-02 20:59:05 245
原创 计算机存储的最小单位是字节byte,不是位bit
51单片机是8位的寄存器,汇编指令一次最小处理8位,也就是一个字节,不管是内存还是外存。内存、磁盘容量都是以多少字节为单位,没听说过多少个位的磁盘。磁盘的读写以字节为单位,磁盘驱动不会给你存入几个位。磁盘分区以字节为单位,不可能按多少位给你分。文件大小以字节为单位,操作系统不可能显示一个文件占多少位。ASCII码表,每个字符都是一个字节,没有低于8位的字符。所以计算机存储的最小单位是字节byte,1byte=8bit,单位是什么,单位就是1后面的byte。如果说计算机存储的...
2021-05-02 00:28:41 7159
原创 【systemctl】让程序以守护进程的方式在后台运行
首先需要创建一个systemdunit 配置文件,比如:verdaccio.service,一般放在 /lib/systemd/system/ 下添加配置如下:[Unit]Description=Verdaccio lightweight npm proxy registry[Service]Type=simpleRestart=on-failureUser=verdaccioExecStart=/usr/bin/verdaccio --config /etc/verdaccio/.
2021-05-01 17:22:56 3095
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人