记一下最近中国银行原油宝事件,中行原油宝产品在05期合约转期时被老美收割了,具体是怎么一个过程我也搞不懂,反正最终结果是以-266的价格进行了结算,似乎一下亏损了300亿,现在还想推卸责任想把损失给广大散户承担,不补钱还要纳入征信,损失惨重的散户要进行集体维权,想通过诉讼方式进行解决。不过最新的官方消息是“将就4月20日市场异常表现进行交涉,并在法律框架下承担应有责任”,不晓得是不是为了缓和广大散户的情绪。中行是本周一的转期,我幸好在上周5转期之前130的时候割了,不然像其他人一样扛转期的话我不仅本金不保了,还要欠银行10万,想想真可怕,这个期货理财(投机)太可怕了,瞬间让人倾家荡产,老美才是全世界的韭菜收割机啊,一个国家的国有大银行都被坑了!
牢牢己住下面的经验:

永远不要重仓、及时大胆止损

find ./ -name *.conf | xargs grep "php"

表示从当前目录以及其所有子目录下的所有后缀为.conf的文件中,搜索包含字符串"php"的文件

find ./ -name *.conf

表示从当前目录以及其所有子目录下的所有后缀为.conf的文件

sed -i "s/13368129461/13368128461/g" `grep 13368129461 -rl /www/wwwroot/www.lelehuanbao.com`

这个可以替换指定目录下 文本的字符串

下载m3u8视频

ffmpeg -i https://xxxxxxxxxx.com/really.m3u8 -c copy save_name.mp4 

压缩

ffmpeg -i input.mp4 -y -b:v 800k  -s 960*540 output.mp4

转ts文件

ffmpeg -y -i input.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts

ts转m3u8

ffmpeg -i 20200213.ts -c copy -map 0 -f segment -segment_list qt.m3u8 -segment_time 2  -segment_list_entry_prefix  qt%d.ts

转m3u8

ffmpeg -i zz.mp4 -c:v libx264 -hls_time 10 -hls_list_size 0 -hls_base_url /app/ -c:a aac -strict -2 -f hls gm.m3u8

优化你的sql和索引;加缓存,memcached,redis,或者开启mysql的查询缓存;开启读写分离;中间件分库分表等

下面记录一些sql语句的优化:
使用limit对查询结果的记录进行限定
避免select *,将需要查找的字段列出来
使用连接(join)来代替子查询
可通过开启慢查询日志来找出较慢的SQL
不做列运算:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边
sql语句尽可能简单:一条sql只能在一个cpu运算;大语句拆小语句,减少锁时间;一条大sql可以堵死整个库
OR改写成IN:OR的效率是n级别,IN的效率是log(n)级别,in的个数建议控制在200以内
不用函数和触发器,在应用程序实现
避免%xxx式查询
使用同类型进行比较,比如用'123'和'123'比,123和123比
尽量避免在WHERE子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
对于连续数值,使用BETWEEN不用IN:SELECT id FROM t WHERE num BETWEEN 1 AND 5
列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大

总结laravel路由

在laravel中必须定义路由才能访问,这点和thinkphp完全不同,tp中不开启强路由模式,可以直接访问module/controller/action

最简单的路由

Route::get("/hello",function(){
   echo "hello world";
});

在mvc模式中这样写

Route::get("/hello","HelloWorldController@sayHello");

路由动作可以有以下

Route::any(...)、Route::get(...)、Route::post(...)、Route::put(...)、Route::delete(...)等

其中注意Route::match的用法

Route::match(["get","post"],"/hello",function(){ })

路有参数

Route::get("/hello/{id}",function($id = 1){
  echo "id是".$id;
});

可以给id加上正则表达式约束

Route::get("/hello/{id}",function($id = 1){
  echo "id是".$id;
})->where("id","[0-9]+");

多个参数呢?

Route::get("/hello/{id}/{uid}",function($id = 1,$uid = 1){
  echo "id是".$id.",uid是".$uid;
})->where(["id"=>"[0-9]+","uid"=>"[0-9]+"]);

路由命名

方便在控制器或者视图中引用

Route::get("/hello/{id}",function($id = 1){
  echo "id是".$id;
})->where(["id"=>"[0-9]+","uid"=>"[0-9]+"])->name("hello.id");

在模板中这样使用

<a href="{{ route('hello.id', ['id' => 100]) }}">
// 输出:http://url/hello/100

路由分组
Route::group()把具有共同特征的路由组合起来

Route::group([], function () { 
    Route::get('hello', function () { return 'Hello'; }); 
    Route::get('world', function () { return 'World'; }); 
});

中间件分组

Route::middleware('auth')->group(function () {
    Route::get('dashboard', function () {
        return view('dashboard');
    });
    Route::get('account', function () {
        return view('account');
    });
});

路径前缀

Route::prefix('api')->group(function () {
    Route::get('/', function () {
        // 处理 /api 路由
    })->name('api.index');
    Route::get('users', function () {
        // 处理 /api/users 路由
    })->name('api.users');
});

其它类型路由查阅手册