spring bus.
request /actuator/bus-refresh
BusRefreshEndpoint received request
ApplicationEventPublisher.publish(RemoteApplicationEvent)
BusAutoConfiguration#
|
request /actuator/bus-refresh
BusRefreshEndpoint received request
ApplicationEventPublisher.publish(RemoteApplicationEvent)
BusAutoConfiguration#
@EventListener(classes = RemoteApplicationEvent.class) |
$?
表示上个命令执行的结果值,0
表示上个命令执行成功,非0表示上个命令执行失败
$$
当前shell的进程ID
$_
上个命令的最后一个参数
$!
为最近一个后台执行的异步命令的进程 ID
$0
为当前 Shell 的名称(在命令行直接执行时)或者脚本名(在脚本中执行时)
$-
为当前 Shell 的启动参数。
$@
和$#
表示脚本的参数数量
https://tool.4xseo.com/a/24067.html
锁分类:
读锁(共享锁):针对同一份数据,多个读操作可以同时进行不会互相影响
写锁(排他锁,也叫独占锁):当前操作没有完成之前,会阻塞其他写锁或读锁
在开启事务的且自动提交为关闭的状态下`
select for update
和 update
会创建 排他锁
,
如果带有索引查询,则会加行锁
,如果查询整个表,则会加间隙锁
session 1
lock table my_table read;
select * from my_table;
unlock tables;
sessoin 2
select * from my_table;
update my_table set id = 1; -- will blocked until session 1 unlock tables
session 1
-- session a |
session 2
set @@autocommit=0; |
session 1
先执行的话 session 2
的查询for update
更新会被锁住
steps
|
READ_UNCOMMITED
READ_COMMITED
REPEATABLE-READ
可重复读,但会幻读(读取到新加入的行)
READ_PHANTOM
serialization
|
|
//AES加密,模式为CBC,填充方式:PKCS5Padding |
PlayInfoList.PlayInfo[0]
{ |
假设视频文件的AES key
为 realKey
浏览器生成一个随机串 r1
利用RSA
公钥加密,结果为randStr
服务器接受到randStr
,利用私钥解密出随机串 r1
把r1
利用MD5
生成数字摘要,再截取(8,24)位的字符串 记为rs1
convert(rs1)
得到第一段加密的IV
和KEY
,记为KEY1
,IV1
再生成一段随机字符串记为r2
,利用AES.encrypt(r2,KEY1,IV1)
得到上面返回结果中的 Rand
拼接r1 + r2
,利用MD5
生成数字摘要,再截取(8,24)为的字符串,记为rs2
convert(rs2)
得到第二段加密的KEY
,记为KEY2
利用AES.encrypt(realKey,KEY2,IV1)
得到上面返回的结果Plaintext
至此,整个加密逻辑分析完毕
用到的工具EasyICE
,DVB Inspector
,tsduck
ts-header(32byte)
字段名 | 位数 | 说明 |
---|---|---|
sync_byte | 4bit |
TS package 标识,固定值0x47 |
transport_error_indicator | 1bit |
传输错误标识 |
payload_unit_start_indicator | 1bit |
PES包开始标识,可以用掩码0x40 判断 |
transport_priority | 1bit |
传输优先级 |
PID | 13bit |
TS package identity 0x100:视频数据 ,0x101:音频数据 , -1:id3Track ,应该从PMT表中查找 |
transport_scrambling_control | 2bit |
是否有干扰码 |
adaptation_field_control | 2bit |
是否有扩展字段,0x01:payload only ,0x02:adaptation field only ,0x03:adaptation field follow payload |
continuity_counter | 4bit |
pack seq |
var data = [] |
https://gist.github.com/manyuanrong/39f151181a193b454c3b11dac1b60e15#file-jsencrypt-js
https://g.alicdn.com/de/prismplayer/2.9.0/hls/aliplayer-hls-min.js
https://stackoverflow.com/questions/28562894/how-to-loop-an-mpeg-ts-stream
cd your-project |
note:
-N,--non-recursive Do not recurse into sub-projects
p |
mvn install -pl a -am -amd
|
-pl, –projects
构建指定的模块,模块间用逗号分隔;适合无依赖的项目
-am, –also-make (常用)
同时构建所列模块的依赖模块,比如A依赖B,B依赖C,构建B,同时构建C
-amd, –also-make-dependents
同时构建依赖于所列模块的模块,比如A依赖B,B依赖C,构建B,同时构建A
```
// create worker |
Type chrome://inspect/#workers
in chrome location bar;
You can find https://socialclub.rockstargames.com/Home/SocketWorker
in the Shared workers
Click inpect as you can debug like debug normal session;
//https://www.right.com.cn/forum/thread-4052504-1-1.html
//https://www.jianshu.com/p/01262e314eab
//http://alisdk-api-doc.oss-cn-hangzhou.aliyuncs.com/player/5.1.6/android/index.html?com/aliyun/player/VidPlayerConfigGen.EncryptType.html
hidden the network request detail;
increase debugging difficulty;