- 博客(40)
- 收藏
- 关注

原创 php大文件切片/分片上传思路+代码[支持断点续传]
<!-- 分片上传的demo 请求接口: /xxxx/xxxxx 请求方法: post 请求参数: 见底下js的ajax --><!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>分片上传的事例</title> <script src="http://c.
2020-06-03 18:22:13
1655
6
原创 RabbitMQ分享
RabbitMQ遵循AMQP协议,自身采用Erlang生产者发消息,启动多个消费者实例来消费消息,每个消费者仅消费部分信息,可达到负载均衡的效果。
2024-03-04 10:04:58
1313
原创 H5页面打包成IOS应用(描述文件)
1.下面这个代码根据占位符做修改后 将内容copy到后缀为.mobileconfig 的文件中 即可在Safari中下载、安装描述文件。导出后就大工告成了,打开Safari 下载这个文件 就可以安装了~{{$appLogo}} app的base64Logo。{{$appName}} app的名称。{{$appDesc}} app的描述。{{$appUrl}} 要跳转的URl。
2023-06-13 15:12:58
3816
原创 关于一个容器Python环境和依赖相互隔离的事情
停用:$ source /my_project_dir/venvName/Scripts/deactivate。使用 virtualenv。
2023-05-31 20:38:20
177
原创 PHP中数组`+`运算符
输出:Array ( [a] => apple [b] => banana [c] => cherry )元素被忽略,并且合并后的结果数组中只保留了键名为。在上面的示例中,由于。数组中已经存在键名为。
2023-05-26 11:03:48
790
原创 记一次array_map的使用(代码优化)
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。该函数返回一个包含从 low 到 high 之间的元素的数组。range() 函数创建一个包含指定范围的元素的数组。array_map的使用方法。
2023-05-26 10:47:28
775
原创 直接插入排序实现
php版本:function insertSort($arr){ $count = count($arr); if ($count < 2) { return $arr; } for ($i = 1; $i < $count; $i++) { // 当前值 $temp = $arr[$i]; for ($k = $i - 1; $k >= 0; $k--) {
2022-03-22 14:12:54
530
转载 MySQL实战45讲学习笔记:第十四讲
一、引子在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数。这时候你可能会想,一条 select count(*) from t 语句不就解决了吗?但是,你会发现随着系统中记录数越来越多,这条语句执行得也会越来越慢。然后你可能就想了,MySQL 怎么这么笨啊,记个总数,每次要查的时候直接读出来,不就好了吗。那么今天,我们就来聊聊 count(*) 语句到底是怎样实现的,以及 MySQL 为什么会这么实现。然后,我会再和你说说,如果应用中有这种频繁变更并需要统计表
2022-03-12 10:20:36
386
转载 MySQL实战45讲学习笔记:第十三讲
一、引子经常会有同学来问我,我的数据库占用空间太大,我把一个最大的表删掉了一半的数据,怎么表文件的大小还是没变?那么今天,我就和你聊聊数据库表的空间回收,看看如何解决这个问题。这里,我们还是针对 MySQL 中应用最广泛的 InnoDB 引擎展开讨论。一个 InnoDB 表包含两部分,即:表结构定义和数据。在 MySQL 8.0 版本以前,表结构是存在以.frm 为后缀的文件里。而 MySQL 8.0 版本,则已经允许把表结构定义放在系统数据表中了。因为表结构定义占用的空间很小,所以我们今天主
2022-03-12 09:44:44
548
转载 MySQL实战45讲学习笔记:第十二讲
一、引子平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。看上去,这就像是数据库“抖”了一下。今天,我们就一起来看一看这是什么原因。二、你的 SQL 语句为什么变“慢”了在前面第 2 篇文章《日志系统:一条 SQL 更新语句是如何执行的?》中,我为你介绍了WAL 机制。现在你知道了,InnoDB 在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日
2022-03-10 11:32:17
205
转载 MySQL实战45讲学习笔记:第十一讲
一、如何在邮箱这样的字段上建立合理的索引现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题。假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的:mysql> create table SUser(ID bigint unsigned primary key,email varchar(64),...)engine=innodb;由于要使用邮箱登录,所以业务代码中一定会出现类似于这样的语句:mysql> sele
2022-03-10 10:35:53
213
转载 MySQL实战45讲学习笔记:第十讲
一 、本节内容概要前面我们介绍过索引,你已经知道了在 MySQL 中一张表其实是可以支持多个索引的。但是,你写 SQL 语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个索引是由MySQL 来确定的。二、优化器的逻辑在第一篇文章中,我们就提到过,选择索引是优化器的工作。而优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。在数据库里面,扫描行数是影响执行代价的因素之一。扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少。当然,扫描行数并
2022-03-10 10:15:53
153
转载 MySQL实战45讲学习笔记:第八讲
一、今日内容概要我在第 3 篇文章和你讲事务隔离级别的时候提到过,如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。但是,我在上一篇文章中,和你分享行锁的时候又提到,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等
2022-03-08 16:36:57
287
转载 MySQL实战45讲学习笔记:第六讲
一、概述数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。二、全局锁1.什么是全局锁?全局锁就是对整个数据库实例加锁。mysql提供了一个加全局锁的方法:Flush tables with read lock(FTWRL)当你需要让整个数据库处于只读状态的时候,可以使用上面那个命令。之后其他.
2022-03-06 11:25:03
84
原创 MySQL实战45讲学习笔记:第四讲
一、索引模型1.索引的作用索引的出现其实是为了提高数据查询的效率,就像书的目录一样 提高数据查询效率2.索引模型的优缺点比较哈希表/有序数组/二叉搜索/b+tree1>哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的键即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的
2022-03-04 21:04:17
158
原创 MySQL实战45讲学习笔记:第二讲
一、redo log工作原理生意红火的时候 酒店老板思路 mysql设计思路 1.先写到粉板上面 1.WAL(Write-Ahead Logging) 先写日志 2.等打烊后账本翻出来核算 2.WAL(Write-Ahead Logging) 在写磁盘 今天账特别多粉板写满了 1.把黑板上一部分账单更新到账本 1.当 checkpoint被追上的时候,不执行更新操作 停下来处理一些记录 推进checkpoint 2.把那些记录擦掉 2.从头开始写
2022-03-02 10:47:36
359
原创 记一次代码优化
优化前: $canUseCalculationPowerByBtc = 0; //可用算力 $cumulativeOutputByBtc = 0; //累计产出 $canUseCalculationPowerByEth = 0; //可用算力 $cumulativeOutputByEth = 0; //累计产出 foreach ($userOrderInfo as $key => $val.
2021-03-09 15:38:58
325
原创 rabbitmq-php服务的封装.
见我的github:https://github.com/wen1014/rabbitmq-server_php
2021-01-14 17:12:06
258
转载 redis del 通配符 批量删除 key
命令:redis-cli keys "user:login:*" | xargs redis-cli del解释:1.先查出所有的 keys 然后删除Linux xargs 命令xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令
2020-12-29 09:39:10
7586
1
原创 nginx 简单负载均衡
upstream love_note_api_v1 { server love_note_api_v1_01:30011 weight=10; #此处的weight是代表权重 server love_note_api_v1_02:30012 weight=20;}server { listen 80 default_server; #监听的服务器的端口 listen [::]:80; server_name xxx.xxxx.com; ..
2020-12-29 09:37:30
70
原创 docker logs 实时查看日志
docker logs -f -t --since="2017-05-31" --tail=10 container 解释:--since : 指定输出日志开始日期。-f : 查看实时日志-t : 查看日志产生的时间戳-tail=10 : 查看最后的 10 条日志。container : 容器名
2020-12-29 09:36:52
458
原创 golang http 解决跨域问题
w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")w.Header().Add("Access-Control-Allow-Headers", "accessToken,appKey,User-Agent,DNT,X-Mx-ReqToken,Keep-Alive,User-.
2020-12-29 09:36:12
966
转载 golang 代码注释规范
注释规范包注释每个包都应该有一个包注释,一个位于 package 子句之前的块注释或行注释。包如果有多个 go 文件,只需要出现在一个 go 文件中(一般是和包同名的文件)即可。 包注释应该包含下面基本信息(请严格按照这个顺序,简介,创建人,创建时间):// @Title // @Description // @Author 创建人 创建时间// @Update 创建人 修改时间结构(接口)注释每个自定义的结构体或者接口都应该有注释说明,该注释对结构进行简要介绍,放.
2020-12-29 09:35:17
1576
原创 golang时间操作
time.Now() 返回当前本地时间。time.Now().Local() 返回采用本地和本地时区,但指向同一时间点的 Time。time.Now().Location 返回 t 的地点和时区信息。time.Now().Unix Unix 将 t 表示为 Unix 时间,即从时间点 January 1, 1970 UTC 到时间点 t 所经过的时间(单位秒)。time.Now().UnixNano UnixNano 将 t 表示为 Unix 时间,即从时间点 January 1, 197.
2020-12-29 09:32:37
3754
转载 xsync 同步脚本的使用
https://blog.youkuaiyun.com/nalw2012/article/details/98322637
2020-12-29 09:30:54
365
转载 Git 合并指定文件到另一个分支
经常被问到如何从一个分支合并特定的文件到另一个分支。其实,只合并你需要的那些 commits,不需要的 commits 就不合并进去了。合并某个分支上的单个 commit首先,用 Git log 或 sourcetree 工具查看一下你想选择哪些 commits 进行合并,例如:比如 feature 分支上的 commit 82ecb31 非常重要,它含有一个 bug 的修改,或其他人想访问的内容。无论什么原因,你现在只需要将 82ecb31 合并到 master,而不合并 feature 上的其
2020-12-29 09:25:32
1053
转载 使 gitignore 文件生效
我们应该先把本地的缓存删除,然后再进行 push,操作步骤如下git rm -r --cached . // 删除本地缓存git add . // 添加要提交的文件 git commit -m 'update .gitignore' // 更新本地的缓存
2020-12-29 09:22:44
187
原创 Swoole 从0开始搭建直播平台
Swoole开发基础。 以下所有安装操作 全部基于Linux。(centos 6.8)版本. php7源码编译安装方法(6个步骤)1、先去www.php.net下载最新的php7版本.(建议用php7);2、下载下来然后解压:tar -xjvf 压缩包名字,然后yum install gcc (必须有gcc)3、 解压下来之后cd进去 然后输入命名: ./configur...
2018-05-10 14:24:01
11755
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人