2020-10-09 11:32:36    9    0    0
首先命令行新建.gitignore文件。 ``` touch .gitignore ``` 然后打开.gitignore文件 ``` vi .gitignore ``` 添加要忽略的文件或目录 ``` node_modules/ .project unpackage/ .DS_Store ``` 如果之前已经提交过被忽略的文件夹(比如unpackage文件夹),那需要执行以下命令行: ```
2020-10-08 21:10:59    5    0    0
## 添加远程仓库 ``` git remote add origin https://github.com/admpub/nging.git ``` ## 把本地库的所有内容推送到远程库上 ``` git push -u origin master ``` 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 由于远程库是空的,我们第一次推送mast
2020-10-06 11:58:38    6    0    0
如果,还未升级macOS Catalina 10.15 系统,你的Mac电脑软件更新图标是不是有一个红点,明晃晃的提示着“您有一个软件未更新”,强迫症的你是不是分分钟想取消系统更新的红点? 此文章适用于:**不愿意升级到MacOS Catalina新系统**,又想取消系统更新的红点的小伙伴们! 1. 退出系统偏好设置 2. 在“终端”命令行中输入以下命令: ``` sudo
2020-09-30 11:58:06    12    0    0

解压 .tar.gz

  1. tar xzvf x.tar.gz -C /home/targetDir

解压 .zip

  1. unzip x.zip -d /home/targetDir
2020-09-30 11:57:20    4    0    0

CentOS

  1. cat /etc/redhat-release

Ubuntu

  1. cat /etc/os-release
2020-09-30 08:22:43    13    0    0
**前言** 本篇主要讲述Go语言的命名规范。优秀的代码必须具备良好的可读性,而可读性的关键即在于命名风格。 Go的函数、变量、常量、自定义类型、包(Package)的命名方式遵循以下规则: 1)首字符可以是任意的Unicode字符或者下划线 2)剩余字符可以是Unicode字符、下划线、数字 3)字符长度不限 Go只有25个关键字 break default
2020-04-06 22:49:52    16    0    0
### 1. 可以查看各个硬盘和分区的大小 ``` fdisk -l ``` ### 2. 给新的硬盘分区 ``` #具体哪个硬盘,得看你新加的是哪个,一般第二个就是sdb或xvdb fdisk /dev/sdb ``` 输入`m`打开选择菜单: 一般新建一个分区的输入 n ,分区的类型选 p 然后选分区起始扇区和结尾扇区。 分配完成后,输入w 保存 ### 3. 设置分区格式 ``` mk
2020-03-30 22:12:28    11    0    0
通常,Linux系统中swap分区可以通过两种方式指定,分别为: 一、在磁盘分区的时候格式化一个swap分区; 二、在文件系统中创建一个swap文件作为swap分区。此文主要介绍第二种方式。步骤如下: ### 1. 创建文件 ``` sudo fallocate -l 1G /swapfile ``` CentOS 使用 dd 创建 ``` dd if=/dev/zero of=/swapfi
2019-10-19 11:25:56    67    0    0
# Mac交叉编译linux go-sqlite3错误 ## 交叉编译配置 ``` export CGO_ENABLED=1 export GOOS=linux export GOARCH=amd64 go build -o ./bin/example ./cmd/ ``` ## 错误详情 ``` sqlite3-binding.c:32753:42: error: use of undecla
2019-08-30 11:10:41    42    0    0

【业务场景】:10 万用户在同 1 秒种进行抢红包的操作,红包只有 10 个

【回答1】:
对于这种大并发抽奖, 注意 3 点
1. redis incr 使用原子计数可以解决, 并发情况下不会超发
2. 用户锁, 解决同一用户同时多次秒杀, 除非你不在乎一个用户中了多次奖品
3. 防人机, 简单的方案是图形码 或者是 CSRF 都可以
注意一下流控, 不要让大流量冲垮你的系统, 宁愿让用户看到系统忙, 也不要让用户看到 500

【回答2】:
因为 Redis 支持原子操作,所以可以使用 Redis 做。

  1. 比如 redis incr ,因为是原子操作,你不需要担心并发的问题,你只需要判断每次 incr 后的值是否小于等于 10.
  2. 使用有限资源的模式,比如使用 redis list ,先创建好 10 个资源,然后每次操作都是 pop ,因为只有 10 个资源,不会 pop 出来 11 个资源的,谁拿到资源谁就中奖。

另外,一般的配置, Redis 并发几万的请求一点问题也没有。

【回答3】:
1. 用 Redis 的 queue ,开奖前 enqueue 10 个元素进去,开奖后 dequeue ;
2. 用 Redis 的 setNx ,预定义 10 个 key ,能 setNx 成功表示得奖了

【参考文档】:
redis incr: http://redisdoc.com/string/incr.html
redis setnx:http://redisdoc.com/string/setnx.html

【相关实现】:
PHP:https://github.com/zhaocong6/lock
GO:https://github.com/go-redsync/redsync https://github.com/go-locks/distlock

1/4