工作经验归档
工作中遇到的问题、经验、复盘
快乐的提千万
据说喜欢分享的,后来都成了大神
展开
-
Go使用协程批量获取数据,加快接口返回速度
服务端经常需要返回一个列表,里面包含很多用户数据,常规做法当然是遍历然后读缓存。使用Go语言后,可以并发获取,极大提升效率。原创 2023-02-07 20:03:42 · 1058 阅读 · 0 评论 -
Go redis hash存储结构体
需求需要存储用户数据到redis,结构是hash。然后取出来,自动转成结构体。结构体type UserCache struct { Id int64 `json:"id"` }基本步骤https://studygolang.com/articles/20302核心代码:func DoHashStore(conn redis.Conn) { //以hash类型保存 conn.Do("hmset",redis.Args{"struct1"}.AddFl原创 2022-03-10 10:47:26 · 2272 阅读 · 0 评论 -
Go 跳出 for-switch 和 for-select 代码块
没有指定标签的 break 只会跳出 switch/select 语句,若不能使用 return 语句跳出的话,可为 break 跳出标签指定的代码块:// break 配合 label 跳出指定代码块func main() {loop: for { switch { case true: fmt.Println("breaking out...") //break // 死循环,一直打印 breaking原创 2021-03-03 15:14:40 · 245 阅读 · 1 评论 -
PHP redis扩展与编程
下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz上传到某个目录,我选择的/usr/local/src安装tar zxvf phpredis-2.2.4.tar.gz #解压cd phpredis-2.2.4 #进入安装目录/usr/local/php7/bin/phpize #用phpize生成c...原创 2018-08-21 10:43:45 · 124 阅读 · 0 评论 -
phpstorm里面json函数有下划线
在composer.json 中添加json 依赖 "require": { "php": ">=7.1.3", "ext-json": "*", //这一行 },原创 2019-05-30 20:06:02 · 1338 阅读 · 0 评论 -
PHP怎样写延时队列(定时器)
背景PHP没有定时器,依托的都是crontab这样的系统工具,也没有go中defer这样的延时方法,本文介绍几种PHP写延时队列的几种姿势。延时队列的定义普通的队列是先进先出,但是延时队列并不是,而是加上了时间这一权重。希望到达时间点的先执行。从某种意义上来讲,延迟队列的结构并不像一个队列,而更像是一种以时间为权重的有序堆结构。Hash将key使用一个唯一标识,保证每个任务都不重复,也方便删除,然后value中添加需要调用的函数名和时间戳,以及参数。没秒进行遍历,然后将时间到的取出来执行,原创 2022-04-06 13:03:11 · 829 阅读 · 0 评论 -
php上传文件存本地
前端<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="http://v5.api.meixing.vli...原创 2019-05-16 20:23:15 · 905 阅读 · 0 评论 -
PHP接入PayPal教程
参考:https://learnku.com/articles/26282SDK地址: http://paypal.github.io/PayPal-PHP-SDK/步骤1.注册账号 认证 直到能正常转账2.下载SDK3.撸代码 沙盒测试4.正式环境测试1.注册账号商家控制台:https://developer.paypal.com开发者中心:https://developer.paypal.com/developer/accounts/注意:看文档可以挂梯子,进控制台不要,不然会打原创 2020-08-05 16:40:46 · 3674 阅读 · 0 评论 -
后端开发必须知道的缓存知识
作为一个后端,如果你没用过缓存,证明你的业务是真的很小,或者你的数据库是真的厉害。那么,你真的会用缓存么?什么时候需要缓存首先最常见的就是接口的返回值加缓存,避免直接查库,尤其是榜单这种查起来很慢,但是访问很频繁的地方。其次是元数据缓存,比如一个用户的信息,一条朋友圈的数据,查的时候只用查ID,然后去点查缓存。最后是异步缓存,比如延时批次写,或者延时批次发包等等。不会有人用缓存做消息队列吧,不会吧不会吧。//todo 为什么不能用Redis做消息队列 (后面我放到消息队列的架构篇说吧)怎么原创 2021-07-31 10:14:15 · 523 阅读 · 0 评论 -
PHP日志类
class BLog { const LOG_EMERGENCY = 'EMERGENCY'; //紧急状况,比如系统挂掉 const LOG_ALERT = 'ALERT'; //需要立即采取行动的问题,比如整站宕掉,数据库异常等, const LOG_CRITICAL = 'CRITICAL'; //严重问题,比如:应用组件无效,意料之外的异常...原创 2019-08-08 10:53:48 · 185 阅读 · 0 评论 -
搭建FTP
安装yum install vsftpd -y service vsftpd start netstat -nltp | grep 21 配置权限vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:* vsftpd.conf 为主要配置文件* ftpusers 配置禁止访问 FTP 服务器的用户列表* user_list 配置用户访问控制vsftpd.conf:# 禁用原创 2017-12-20 17:09:01 · 341 阅读 · 0 评论 -
搭建svn
安装 SVN 服务端yum install -y subversion创建 SVN 版本库创建项目版本库 mkdir -p /data/svn/myproject svnadmin create /data/svn/myproject配置 SVN 信息配置文件简介 版本库中的配置目录 conf 有三个文件:* authz 是权限控制文件* passwd 是帐号密码文件* svnserv原创 2017-12-20 17:39:23 · 401 阅读 · 0 评论 -
检查能否ping通
#include <stdio.h>#include <string.h>int main(){ system("ping 112.24.234.47 -c 4 |grep 'Unreachable' > 1.txt"); FILE* fp = fopen("1.txt","r"); char ch = fgetc(fp); if(EOF == ch) {原创 2016-08-12 16:52:01 · 335 阅读 · 0 评论 -
ADO经典例子
//数据库操作最好用try和catchtry{}catch (_com_error &e){ AfxMessageBox(_T("Initiate failed!")); cout<<e.Description()<<endl;}//添加动态库#import "C:\Program Files\Common Files\System...原创 2019-05-31 20:36:23 · 331 阅读 · 0 评论 -
composer添加git仓库
composer.json"require":{ "teemo/models":"dev-master", //添加目录}"repositories": [ { "type":"git", "url":"git地址" } ]新建一个目录auth.j原创 2018-10-17 09:55:56 · 3801 阅读 · 0 评论 -
画圆
圆分为两种,一种空心圆环,一种实心圆饼。###先说圆环:先设立圆心:鼠标第一次按下时候取到的坐标设立半径:根据鼠标第二次按下时候取得的坐标求距离。设立点的数量,从极限的角度说,圆其实是一个无线多边的多边形,只是我们眼睛看起来是个圆就行了, 这里测试发现90个点就已经显得比较圆了,如果要求更高则设定更多个点。然后设定第一个点,然后根据角度一次向一个方向打点,直到回到第一个点。下面是个例子代码原创 2017-04-29 11:28:33 · 1193 阅读 · 0 评论 -
mysql 导入大型文件
本地导入超过2G的mysql文件,navicat已经不再适用,这里安利一款神器,laragon。安装后自带nmp或者amp环境,还有composer,cmder等等一系列神器,不用再单个安装。如果没有下载cmder,就用cmd也是可以的。基本命令:mysql -uroot -p --default-character-set=utf8#一定要在连接mysql时,使用–default-ch...原创 2018-10-17 09:49:21 · 206 阅读 · 0 评论 -
go写爬虫
package mainimport ( "fmt" "net/http" "os" "regexp" "strconv" "strings")func main() { var start, end int fmt.Printf("请输入起始页( >= 1) :") fmt.Scan(&start) fmt.Printf("请输入终止页( >= ...原创 2019-10-08 16:23:05 · 186 阅读 · 1 评论 -
PHP 获取毫秒
function msec_time() { list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); return $msectime;}原创 2019-05-16 20:28:44 · 1667 阅读 · 0 评论 -
【ab测试】 从安装到使用
安装yum -y install httpd-tools # centos,redhatapt-get install apache2-utils #ubuntu Debian 测试ab -n1000 -c 10 http:/www.taoquan.ink/ # -n访问1000次, -c并发10个参数://在测试会话中所执行的请求个数。默认时,仅执行一个请求-n reque...原创 2020-04-21 09:09:45 · 500 阅读 · 0 评论 -
crontab指定运行用户
通常运行php时都是指定用户,如www,php。这里以www为例。通过WEB端访问,PHP写入的文件都是属于www用户权限。如果缓存文件,日志文件。如果使用管理员命令行运行php脚本会赋予root权限,导致文件权限混乱。如果通过命令行方式如何使用www用户运行?1.直接运行sudo -u www php -V2.定时任务a.直接管理用户下的定时任务crontab -e -u wwwb.修改定时任务文件vi /etc/crontab代码如下:/3 * * * * www /root/te原创 2021-06-30 11:40:54 · 2973 阅读 · 0 评论 -
php AES加密解密
public static function encrypt($data, $key) { $data = openssl_encrypt($data, 'aes-128-ecb', base64_decode($key), OPENSSL_RAW_DATA); return base64_encode($data);}public static function decry...原创 2019-05-16 20:22:39 · 6001 阅读 · 0 评论 -
Go语言实现APPID登录
package thirdpartyimport ( "crypto/rsa" "fmt" "github.com/dgrijalva/jwt-go" "github.com/lestrrat-go/jwx/jwk" "github.com/pkg/errors" "github.com/wonderivan/logger" "math/big" "net/http")func bigFromByte(s []uint8) *big.Int { ret := new(big.In原创 2022-04-06 13:01:55 · 670 阅读 · 0 评论 -
Go AES加密
package functionimport "crypto/aes"// =================== ECB ======================func AesEncryptECB(origData []byte, key []byte) (encrypted []byte) { cipher, _ := aes.NewCipher(generateKey(ke...原创 2020-01-19 10:19:28 · 177 阅读 · 0 评论 -
Golang 接入MySQL timestamp类型 是[]int8
表中有一个字段create_time, 在mysql中的类型是timestamp, 在go中对应的类型是 *time.Time. 在导出查询结果的时候, 遇到这样的报错 sql: Scan error on column index 6: unsupported Scan, storing driver.Value type []uint8 into type *time.Time看起来是驱动读取timestamp类型的数据时, 直接读取为int8的格式, 然后在尝试赋值到time.Time的时候出原创 2021-02-23 20:25:38 · 2725 阅读 · 0 评论