//usort 更适合处理 usort($list,function ($a,$b){ return $a['original_price'] == $b['original_price'] && $a['desc'] > $b['desc']; }); // $count = count($list); // for ($k = 1; $k < $count; $k++) { // for ($i = 0; $i < $count - $k; $i++) { // if (isset($list[$i + 1])) { // if ($list[$i]['original_price'] == $list[$i + 1]['original_price'] && $list[$i]['desc'] > $list[$i + 1]['desc']) { // $temp = $list[$i]; // $list[$i] = $list[$i + 1]; // $list[$i + 1] = $temp; // } // } // } // }
或者session没有可写权限
主要答案有修改runtime目录权限,还有关闭debug。其实这两个是共通的,tp5的默认log目录在runtime里面,并且tp5 默认打开debug的情况下生成日志。
所以目录权限不足,会导致500报错,应该是文件在写入的时候,没有权限导致,但是我的业务流程却是正常执行,说明tp5并没有把日志写入失败作为异常抛出,却改变了它的状态码。所以导致了数据正常返回,但是状态码却离奇变成了500。
微服务架构的设计原则
拆分足够微
轻量级通信
领域驱动原则
单一职责原则
DevOps(开发/运维)及两个披萨
不限于技术栈
微服务模块设计
服务拆分
服务注册
服务发现
服务消费
统一入口
配置管理
熔断机制
自动扩展
微服务拆分的意义
易于实现
易于维护
易于部署
易于更新
微服务拆分的方法
横向拆分:根据业务功能进行拆分。
纵向拆分:对于一个业务功能,根据不同层次进行拆分,如应用层、表现层、数据模型层等。
微服务拆分
1.根据服务职责拆分。把一个项目拆成多个服务,也就是多个单体应用
2.定义公用的输入输出。
3.定义公共库。比如说log,config,errors等基础库,还有redis,mongo,mysql等db的连接池初始化和rpc的连接池初始化
4.定义组件之间接口定义。比如说统一API网关,网关内部GRPC调用
将 C:\HashiCorp\Vagrant\embedded\gems 下所有文件中的
https://rubygems.org 替换为:https://gems.ruby-china.com
装个插件试试
vagrant plugin install vagrant-winnfsd
参考 https://gems.ruby-china.com/
解决方案如下:(主要两个 – 减号)
1. git config –system –unset credential.helper
2.试试能否拉取,如果不行,再试试用户目录下 .gitconfig 把如下删除
[credential]
helper = manager