php-二维数据排序
<?php $arr = [ [ 'aaifdddk' => 3, 'name' => 'test8', ], [ 'aaifdddk' => 5, 'name' => 'test8', ], [ 'aaifdddk' => 2, 'name' => 'test8', ], [ 'aaifdddk' => 4, 'name' => 'test8', ], [ 'aaifdddk' => 1, 'name' => 'test8', ], ]; //usort($arr,function ($a,$b){ // return $a['id'] > $b['id'] ? 1 : -1; //}); array_multisort($arr); var_dump($arr);tp5-布署-linux-注意事项
给 public 目录权限 项目根目录下新建空的 runtime 目录, 并设置 777 权限laravel--Request-类-通过后的-$request-包含无需验证的-字段
// Request 类: $rule = [ 'email' => 'required|email', 'password' => 'required|alpha_dash|between:6,20' ]; // form { name: 'abc', email: 'abc@qq.com', password: '123456', } // Request $request [ 'name' => 'abc', 'email' => 'abc@qq.com', 'password' => '123456', ] $request 里面会包含 name 这个没有 ( 无需 ) 验证的字段php-json_encode-报错-Malformed-UTF-8-characters
当使用了 substr() 进行字符串切割后, 再进行 json_encode() 时, 报错 改使用 mb_substr() 即可 原因: substr 按字节数进行截取产生了特殊字符, 而 mb_substr 按字符数截取, 则没有问题php-substr-截取中文出乱码
使用 mb_substr 解决即可, mb_substr 按字符来截取 而 substr 按字节来截取php文件上传临时目录
问题: 在上传表单中, 用户没有继续进行保存下去, 那么图片(或文件)会一直保存下去 ? 在 php.ini 中, php官方文档 (语言参考->特点->文件上传处理->post方法上传): 文件被上传后,默认地会被储存到服务端的默认临时目录中,除非 php.ini 中的 upload_tmp_dir 设置为其它的路径。服务端的默认临时目录可以通过更改 PHP 运行环境的环境变量 TMPDIR 来重新设置,但是在 PHP 脚本内部通过运行 putenv() 函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。 了解Redis过期策略及实现原理. 我们在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期。 当我们设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的。 redis设置过期时间: expire key time(以秒为单位)–这是最常用的方式 setex(String key, int seconds, String value)–字符串独有的方式 除了字符串自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间 如果没有设置时间,那缓存就是永不过期 如果设置了过期时间,之后又想让缓存永不过期,使用persist key 三种过期策略 定时删除 含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除 优点:保证内存被尽快释放 缺点:若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key. 定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严重 懒汉式式删除 含义:key过期的时候不删除,每次通过key获取值的时候去检查是否过期,若过期,则删除,返回null。 优点:删除操作只发生在通过key取值的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步(如果此时还不删除的话,我们就会获取到了已经过期的key了) 缺点:若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,那么可能发生内存泄露(无用的垃圾占用了大量的内存) 定期删除 含义:每隔一段时间执行一次删除过期key操作 优点:通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用–处理”定时删除”的缺点 缺点:在内存友好方面,不如”定时删除”(会造成一定的内存占用,但是没有懒汉式那么占用内存) 在CPU时间友好方面,不如”懒汉式删除”(会定期的去进行比较和删除操作,cpu方面不如懒汉式,但是比定时好) 难点:合理设置删除操作的执行时长(每次删除执行多长时间)和执行频率(每隔多长时间做一次删除)(这个要根据服务器运行情况来定了),每次执行时间太长,或者执行频率太高对cpu都是一种压力。每次进行定期删除操作执行之后,需要记录遍历循环到了哪个标志位,以便下一次定期时间来时,从上次位置开始进行循环遍历 说明:memcached只是用了惰性删除,而redis同时使用了惰性删除与定期删除,这也是二者的一个不同点(可以看做是redis优于memcached的一点);对于懒汉式删除而言,并不是只有获取key的时候才会检查key是否过期,在某些设置key的方法上也会检查(eg.setnx key2 value2:该方法类似于memcached的add方法,如果设置的key2已经存在,那么该方法返回false,什么都不做;如果设置的key2不存在,那么该方法设置缓存key2-value2。假设调用此方法的时候,发现redis中已经存在了key2,但是该key2已经过期了,如果此时不执行删除操作的话,setnx方法将会直接返回false,也就是说此时并没有重新设置key2-value2成功,所以对于一定要在setnx执行之前,对key2进行过期检查)。 Redis采用的过期策略 懒汉式删除+定期删除 懒汉式删除流程: 在进行get或setnx等操作时,先检查key是否过期; 若过期,删除key,然后执行相应操作; 若没过期,直接执行相应操作; 定期删除流程(简单而言,对指定个数个库的每一个库随机删除小于等于指定个数个过期key) 遍历每个数据库(就是redis.conf中配置的”database”数量,默认为16) 检查当前库中的指定个数个key(默认是每个库检查20个key,注意相当于该循环执行20次,循环体是下边的描述) 如果当前库中没有一个key设置了过期时间,直接执行下一个库的遍历 随机获取一个设置了过期时间的key,检查该key是否过期,如果过期,删除key 判断定期删除操作是否已经达到指定时长,若已经达到,直接退出定期删除。 对于定期删除,在程序中有一个全局变量current_db来记录下一个将要遍历的库,假设有16个库,我们这一次定期删除遍历了10个,那此时的current_db就是11,下一次定期删除就从第11个库开始遍历,假设current_db等于15了,那么之后遍历就再从0号库开始(此时current_db==0)laravel-使用-composer-dump-autoload
给 User.php 模型文件复制一次为 bak.User.php 后, 执行了一次 vendor:publish , 给出了warning: 再之后 , 依赖注入 User 模型提示 User 找不到 解决办法: 执行 composer dump-autoloadgit-修改本地及远程分支的名称
原文地址 git branch -m old_branch new_branch # Rename branch locally git push origin :old_branch # Delete the old branch git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote // 第三步不在推送时关联远程分支, 可改为如下 git branch --set-upstream-to origin/master git branch -u origin/new_branchgit-撤消commit,-并恢复改动
git reset HEAD^1laravel-生命周期--路由实例
{{host}}/api/topics/:topic/replies 如上路由(需要登录, 在中间件中使用了 api.auth) 实测发现 如果 :topic 不存在, 则报 404, 说明首先走的路由中隐性绑定的数据模型; 填入正确的 topic id 后, 报错 401, authenticate failed, 说明第二步走的中间件; 填入正确的 bearer token, 报错 422, Unprocessable Entity, 提示 xx 参数不能为空或格式不正确, 说明这里才开始进行 request 表单请求类验证
Recent Posts
Tags
- apache 4
- axios 1
- benchmark 1
- c 1
- canvas 1
- centos 3
- channel 1
- crontab 1
- css 2
- docker 4
- fail2ban 1
- frp 1
- gin 1
- github 1
- go 26
- goaccess 1
- goroutine 1
- http 1
- https 1
- jetbrains 1
- jquery 1
- js 2
- linux 20
- mermaid 1
- mysql 10
- nginx 3
- node 1
- php 43
- prisma 1
- react 8
- server 1
- ssh 2
- tarojs 1
- tcp/ip 1
- token 1
- ubuntu 1
- ufw 1
- unit-test 1
- vmware 1
- vscode 1
- vue 12
- yum 1
- 域名 3
- 安全 2
- 微信 3
- 算法 3