自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (6)
  • 收藏
  • 关注

原创 rabbitmq 消息类型

可以根据routingkey分发到不同的队列,如下图的info分配到q1,error和warning的key 分配到q2队列。,会将消息分发到所有绑定的队列,如下图的q1和q2。以下消息会被q1和q2命中。

2023-01-31 12:17:19 208

原创 TypeScript

【代码】TypeScript。

2022-11-24 12:38:30 247

原创 TypeScript Interface

【代码】TypeScript Interface。

2022-11-24 12:15:51 266

原创 linux 删除目录下所有纯数字文件夹

删除目录下所有数字文件夹。

2022-09-23 15:21:27 766

原创 redis key数量及单个key占用的空间

如果有密码,需要加-a参数。

2022-09-12 10:58:30 2269

原创 docker-composer mongodb error: authentication failed.

后来研究了一下发现第一次安装的时候,有脚本会给你自动创建账号,账号和密码就是你.env的账号密码。下次再docker-composerup的时候就不会再次初始化了。第一次执行docker-composerup的时候没有任何问题的,也都能正常连上,后来我改了一下mongodb的密码(.env)重新docker-composerup时就登陆不上了!,也就是挂载mongodb数据目录volumesmongodb_data/data/db,再重新docker-composerup就好了。...

2022-07-21 10:41:07 933

原创 docker迁移Docker Root Dir数据目录

docker 迁移docker root dir

2022-07-06 12:15:13 406

原创 linux查看磁盘占用

LINUX查看服务器磁盘占用,并按大小排序

2022-06-30 12:24:24 189

原创 elasticsearch No alive nodes found in your cluster 解决

首先检一下host及端口是否正确,网络通不通。其次想一下你的代码有没有bulk这类批量发送数据的操作,如果发送的数据超过默认的100MB,也会报这个错,我就中招了。解决办法就是把http.max_content_length这个参数调大即可。我是docker安装的es,因此我们把这个elasticsearch.yaml配置文件映射到宿主机。在挂载之前先在宿主机上创建这个文件!!elasticsearch.yaml增加http.max_content_length配置然后重新开一下容器(特别注意一下,如

2022-06-20 12:51:43 4598

原创 docker 百度云镜像加速

百度云DOCKER加速

2022-06-15 15:01:39 1044

原创 docker elasticsearch 数据目录迁移到宿主机

最近使用docker 安装了elasticsearch,后来发现系统盘越来越小,直到es无法写入数据。。。后来才发现装elasticsearch的时候没有映射数据目录,现在如果删除容器的话,之前的数据就清空了,所以需要做两步操作,先把docker elasticsearch的数据目录拷贝到宿主机,然后新建容器并挂载数据目录参照1参照2...

2022-06-15 10:21:30 784

原创 docker hypref 增加mongodb 扩展

先修改dockerfile,增加:完整Dockerfile(注意):运行容器:

2022-06-08 18:28:57 331

原创 mysql root外网连不上,提示密码错误

首先考虑是不是root的账号限制了host,如果root的host是localhost的话,就需要改成%,表示不限制host(慎用)

2022-06-06 18:43:59 284

原创 mysql删除重复数据

删除重复数据,只保留一条(匹配多列条件):来源:扩展资料

2022-06-01 16:13:04 99

原创 iTerm2 ssh 自动登陆脚本

新建一个shell文件,如ssh_setting/autologin.sh#!/usr/bin/expectset timeout 30set host [lindex $argv 0]# This line is to set a variable , Variable names can be used casually , Try to make sense , The parameters passed in are shown later ,0 Represents the firs

2022-04-18 08:20:07 434

原创 composer 本地包

第一步:初始化扩展包,并配置composer init在composer.json中设置PSR-4自动加载{ "name": "hou/common", "description": "公用包", "type": "library", "autoload": { "psr-4": { "Common\\": "./common/" } }}第二步:在实际项目中配置:composer.json

2022-03-03 12:22:30 997

原创 使用Docker运行Hyperf项目(Ubuntu + PHP7.4 + Swoole)

把 Dockerfile文件复制到项目目录,然后在项目目录内执行以下命令docker build -t hyperf:test --build-arg ALPINE_VERSION=3.14 . # 构建镜像,注意最后有个小数点!!!docker run -it -v /mnt/hgfs/www:/www -p 9501:9501 hyperf:test /bin/bash # 运行容器,...

2022-02-22 14:37:34 527

原创 用Redis 有序集合设计粉丝关注表

在用关系型数据库(Mysql)设计粉丝关注表时,感觉要写很多判断,比如:新增关注时,要判断之前的关联是否存在,如果不存在才插入。又或者获取粉丝数量或关注的人数量,一般做法是在数据库里查出来再存到Redis,新增关注后再用redis的incr命令+1,在查询的过程中又要考虑索引问题。。。总之比较的麻烦后来有考虑过用redis的的集合(Set)来存粉丝和关注的人,但问题是集合是无序的,想要获取关注时间就无能为力了。最后用Redis的有序集合解决了上述的所有问题,有顺集合中有一个score分数,会根据这个

2022-02-10 12:49:05 877

原创 golang nohup 后台守护进程运行

nohup ./bin/test > nohub.out 2>&1 &意思是将test这个程序的输入重定向到nohub.out中,最后的&表示后台运行如果要停止,需要找到该进程再杀掉$ pa aux|grep testroot 123 0.0 0.1 1079748 8336 pts/0 Sl 09:58 0:00 ./bin/testroot 456 0.0 0.0 6300 736 pts/0 S+

2022-01-26 10:03:39 1099

原创 如何在 Go (Golang) 中重用 HTTP 连接(复用TCP)

在Golang中想要复用之前的TCP连接,必须要把上一个连接的Body读取完毕才能复用检查工具:httptrace.ClientTrace测试代码:package mainimport ( "context" "io" "io/ioutil" "log" "net/http" "net/http/httptrace")func main() { // client trace to log whether the request's underlying tcp connect

2022-01-21 10:17:16 4541

原创 golang go协程并发请求与WaitGroup

在go里面执行N次并发请求是非常简单的,比如并发执行100次请求,就启100个协程就好了func main() { i := 0 wg := &sync.WaitGroup{} for i < 10 { wg.Add(1) // 放在循环里面,就+1,放在循环外面,要执行多少次计算就加几,比如在for外面:wg.Add(10)是一样的效果 url := "https://www.baidu.com" go func(url string) { resp, _ :=

2022-01-20 12:05:08 937

原创 golang Reqeust Header.Add key 自动转大写的问题

发送请求时,想自定义一些header,但在golang里面使用req.Header.Add或Header.Set时,会自动把我们的KEY转成大写。如果不想转成大写的话,可以用下面的方法(经测试,go的做法是正确的。因为不管你转不转大写在接收端都会按大写接收,因此不必纠结大小写问题) req, err := http.NewRequest("GET", reqUrl, nil) if err != nil { return nil, err } req.Header["my_header"] =

2022-01-19 10:20:54 1449

原创 golang gorm update or insert

在gorm中,想要实现“如果存在就更新,否则就插入”的需求,可以通过以下方式实现 db.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "id"}}, // 这里的列必须是唯一的,比如主键或是唯一索引 DoUpdates: clause.AssignmentColumns([]string{"num", "title"}), // 更新哪些字段 }).Create(&User{ Desc: "ee"

2022-01-14 12:52:47 3916

原创 golang time.Parse timezone 时区问题

当使用time.Parse解析日期时,会发现和实际的时间不一致,这是因为parse是默认时区是UTC。解决方案是用ParseInLocation代替Parseimport ( "time")func main() { t1, err := time.ParseInLocation("2006-01-02 15:04:05.000", "2022-01-12 10:55:00.000", time.Local)}转载:原文...

2022-01-12 10:56:45 970

原创 go 迭代变量捕获

在go中,循环变量使用相同的变量地址,只是每次迭代的时候不断更新其值。证明一下:func main() { sli := []int{1, 2, 3, 4, 5} for _, v := range sli { fmt.Printf("%x %d\n", &v, v) }}c000014098 1c000014098 2c000014098 3c000014098 4c000014098 5知道了它的特性后,就很容易理解go迭代变量捕获问题var slice []fun

2022-01-10 12:29:08 396

原创 Postman response base64转json

在用postman调试接口时,后端约定返回的内容全部base64编码格式返回,这样我们自己测试的时候非常不方便。我们可以利用postman的Visualize功能自动帮我转成json格式,(其他格式也可以,反正就是返回的body随便处理)方便调试打开postman的Test选项卡:输入以下代码pm.visualizer.set(`<pre id="response" style="font-size:12px;"/><script src="https://cdn.bootc.

2022-01-07 11:08:15 1375

原创 MongoDB获取每个分类最新一条完整记录(会话列表、每个班级成绩最高的一名学生....)

最近在做一个消息中心功能,其中有个私信功能用了MongoDB做分表存储,要解决的问题是“获取与每个人聊天的最后一条消息”,也就是像聊天软件的会话列表一样

2022-01-04 15:16:29 2525 1

原创 MySQL创建存储过程批量插入百万条测试数据

有时候为了分析SQL,不得不插入大量数据进行测试,以验证是否利用索引,这时我们就可以利用MYSQL的存储过程来批量插入

2021-12-29 12:07:16 867

原创 go 编译包

编译当前目录下的所有目录(不会产生输出)go build ./...编译当前目录下的所有目录(输入到GOPATH下)go install ./...

2021-11-02 08:45:36 959

原创 golang slice 切片

slice本身不存储值,只是对低层array的viewpackage mainimport "fmt"func main() { arr := [...]int{0,1,2,3,4,5,6,7} s1 := arr[2:6] // 2 3 4 5 s2 := s1[3:5] // 5 6 这里用到了slice的向后扩容特性,只要没超过底层数组长度都可以,但不能向前扩容 fmt.Println(s1) fmt.Println(s2) }修改切片的值会直接修改底层的数组.

2021-10-28 14:43:55 52

原创 golang 声明数组

package mainimport "fmt"func main() { var arr [4]int arr1 := [3]int{1, 2, 3} arr2 := [...]int{5, 6} // 个数不确定 arr3 := [3][5]int{ // 3和5分别代表行,列 {1, 3, 4, 4, 4}, {1, 3, 4, 4, 4}, {1, 3, 4, 4, 4}, } fmt.Println(arr, arr1, arr2, arr3) // [0 0

2021-10-28 13:59:02 772

原创 golang 接收闭包函数

func sum(a, b int) int { return a + b}func apply(f func(a, b int) int, x, y int) int { return f(x, y)}func main() { val := apply(sum, 5, 6) val2 := apply(func(a, b int) int { return a -b }, 8, 6) fmt.Println(val, val2) // 11 2}

2021-10-28 12:53:02 53

原创 golang 函数返回 error

func getNum() (v int, err error) { return 0, fmt.Errorf("err %s", "haha")}func main() { if v, err := getNum(); err != nil { fmt.Println(err) // err haha } else { fmt.Println(v) }}

2021-10-28 12:18:27 1244

原创 golang 通过NewScanner读取文件内容

func printFile(filename string) { file, err := os.Open(filename) if err != nil { panic(err) } scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) }}func main() { printFile("users.txt")}

2021-10-28 12:03:36 310

原创 go int 转 string

package mainimport ( "fmt" "strconv")func main() { i := 1 fmt.Println(strconv.Itoa(i))}

2021-10-28 11:54:15 653

原创 golang switch

func main() { status := 2 var msg string switch status { case 1: msg = "success" // go会自动break,不需要手动break case 2: msg = "warning" } fmt.Println(msg)}可以在switch内写条件func main() { status := 2 var msg string switch { case status == 1

2021-10-28 11:44:12 51

原创 go const iota

const ( aa = iota // iota是系统常量,值为0,使用iota时,后面的常量自动递增 bb _ dd ) fmt.Println(aa, bb, dd) // 0 1 3同时iota也可以参与运算 const ( b = 1 << (10 * iota) kb mb ) fmt.Println(b, kb, mb)...

2021-10-28 11:36:03 3367

原创 MYSQL索的三种方式 hash btree

MYSQL索的三种方式HASH有序数组BTREEHASHkey => value 的存储方式,有点类似NoSQL,适合查询等值的数据,比如 ID=2。但如果要查询ID > 100 且 ID < 200这种范围的数据时,就会非常慢,因为内部是无序排列,必须要全部扫描BTREE主键索引存的是该行数据,非主键索引(二级索引,比如index、unique)存的是主键的值假设name是二级索引,where name=‘A’ 时,得到ID=100,再到ID索引树查询一次,这一步

2021-08-03 17:14:16 106

原创 Mysql事务之隔离性

Mysql事务事务是基于存储层,而不是Server层,例如Innodb支持事务而MyISAM不支持事务的四大特性(ACID):原子性一致性隔离性持久性原子性一个事务包含多个操作,这些操作要么全部执行,要么全都不执行一致性一致性是指事务使得系统从一个一致的状态转换到另一个一致状态隔离性当多个事务同时执行的时候,就需要考虑到隔离级别概念读未提交:一个事务还没提交时,它做的变更就能被别的事务看到读提交:一个事务提交之后,它做的变更才会被其他事务看到可重复读:简单来说,该事务在没提交

2021-08-03 16:06:02 70

原创 mysql redo log与binlog

redo logredo log是innodb独有的日志,用来记录“在哪个数据页上做了什么修改”。在innodb引擎里面,更新数据时,并不是直接把写入磁盘(因为这样效率会较低),而是先将记录记录到redo log里面,到一定的时机(空闲)才更新到磁盘。redo log如果满了的话,会将其中部份数据写入到磁盘,腾出空间binlogbinlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用建议innodb_flush_log_at_trx_commit = 1sync_binl

2021-08-02 18:10:41 70

php开发客服系统(持久连接+轮询+反向ajax) - php严程序

php开发客服系统。真正的实时聊天,使用持久连接+轮询+反向ajax实现 用户端(可直接给客户发送消息) 客服端(点击用户名.即可给该用户回复消息) 讲两种实现方式: 一:iframe + 服务器推技术comet(反向ajax,即服务器向浏览器推送数据) 二:ajax持久连接 + 长轮询 客服端采用第一种方式:iframe + 服务器推技术 思路: 1:新建comentbyiframe.php 该用文件使用while(true)一直连接到服务器不断开. 如果在while的过程中查到了新数据.使用ob_flush推给apache服务器.apache再用flush推给浏览器. 2:新建html页面,插入一个iframe. 该iframe的src为comentbyiframe.php。 并隐藏iframe。comentbyiframe.php获取的数据用js输出到父窗口中的某个函数.该函数把信息追加到指定的聊天窗口中 3:只要客户端收到用户发来的数据. 就显示为"xx对你说..". 客服端只要点击用户名。即可给该用户发送数据. 用户端采用第二种方式:ajax持久连接 + 长轮询 ajax持久连接:文档加载完毕后(或其他时机),使用ajax请求一个php文件 被请求的php文件通过while(true)循环.迟迟不给apache返回数据的目的. 轮询指:请求服务器的时候.如果服务器没有数据.则一直等.当服务器有数据后.就返回给客户端. 这样请求、响应过后就完成了一次HTTP请求. 还没完.客户端收到数据后又到服务器要数据.这就是轮询 就好像一个乞丐一样. 不给他钱,他就一直跟着你要. 你给他钱以后.他还不满足,又跑来找你要. 实现思路: 进入用户端后.如果没有用户名.使用setcookie设置一个用户名.然后通过ajax持久连接. 不停向服务器索要数据(即客服发送给该用户的记录). 详情:http://www.phpyan.com/home/article/350.html

2014-08-19

php贴吧项目实战源码+数据库

这是一个小型的贴吧项目,文件里面有的视频下载地址。

2014-07-09

php项目实战,11集高清

php贴吧项目实战,11集高清,更多请登录“php严程序”官网下载

2014-06-30

php实战项目:贴吧开发第一讲。php严程序

该项目分为11集讲完,高清版请登录"php严程序"官网->"资源下载"中下载。www.phpyan.com

2014-06-30

(PHP完整项目)ThinkPHP3.0仿家具网整站源码

-ThinkPHP仿家具网整站源码加介绍---------------------------------------- 注意:本站页面,来源于他人设计. 我们尊重他人劳动成果!  本站仿造家具网, 页面简单清晰.后台易维护 ======================================================================= 1:请将本程序除ywtcms.sql文件和本文件以外,上传至服务器 2:导入数据库文件. ywtcms.sql是该网站的数据库文件 3:安装完成以后.输出网站地址即可访问, 后台管理地址为:网站域名/admin.php.用户名和密码都是admin ====================================================================== 项目作者:小严 QQ: 1798545970 如果需要重新开发 或 网站建设 网站改版美容,请联系我们! 我们专注企业网站建设! ----------------------------------------------------------------------

2012-12-04

ThinkPHP仿家具网 整站成品源码+数据库

该网站是自己使用ThinkPHP3.0框加开发的,后台管理方便.简约.无任何功能限制.供大家学习使用.如果需要进行二次开发的.或者需要网站建设.网站改版.网站美容.升级的.

2012-12-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除