vector和list
进程间通信
浏览器输入网址后的行为
- 网络线程请求http数据
- 通过IPC将数据传给渲染进程的主线程
- 渲染进程的主线程将解析并构造DOM树,然后进行样式计算
- 然后根据DOM树和样式计算生成Layout树
- 然后通过遍历Layout树生成绘制顺序表
- 接着遍历Layout树生成Layer树
- 然后旋转进程的主线程将Layer树和绘制顺序信息一起传给合成器线程
- 合成器线程按规则进行分图层
- 并把图层分为更小的图块传给栅格化线程进行栅格化
- 栅格化完成后,合成器线程拿到了栅格化线程传过来的图块信息
- 根据这些信息,合成一个合成器帧
- 然后这个合成器帧通过IPC传给了浏览器进程
- 浏览器进程再传到GPU进程进行渲染
浏览器进程间通信
- 管道
浏览器js、cpp绑定
一个进程感知另一个进程的结束
ShellExcute
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SHELLEXECUTEINFO ShExecInfo = {0}; ShExecInfo.cbSize = sizof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = NULL; ShExecInfo.lpFile = "C:\\MyPrograme.exe"; ShExecInfo.lpParameters = ""; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_SHOW; ShExecInfo.hlnsApp = NULL; ShellExecuteEx(&ShExecInfo); WaitForSingleObject(ShExecInfo.hProcess, INFINITE); |
CreateProcess
1 2 3 4 5 6 7 8 9 10 11 12 13 |
PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo; ZeroMemory(&StartupInfo, sizeof(StartupInfo)); if (CreateProcess("C:\\myprograme.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcessInfo)) { WaitForSingleObject(ProcessInfo.hProcess, INFINITE); CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); } else { // 启动未成功 } |
http get和post区别
get
- 从指定的资源请求数据(用来从服务器上获得数据)
- 将表单中数据的按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接
- 是不安全的
- 传输的数据量小,这主要是因为受 URL 长度限制
- 限制 Form 表单的数据集的值必须为 ASCII 字符
- Form 的默认方法
- 其他区别
- get请求可被缓存
- get请求保留在浏览器历史记录中
- get请求可被收藏为书签
- get请求不应在处理敏感数据时使用
- get请求有长度限制
- get请求只应当用于取回数据
post
- 向指定的资源提交要被处理的数据(用来向服务器上传递数据)
- 将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL
- Post 的所有操作对用户来说都是不可见的
- 可以传输大量的数据,所以在上传文件只能使用 Post
- 支持整个 ISO10646 字符集
- 其他区别
- post请求不会被缓存
- post请求不会保留在浏览器历史记录中
- post请求不能被收藏为书签
- post请求对数据长度没有限制
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 2022_02_1602/16
- ♥ 2022_03_0203/09
- ♥ 2022_02_2602/26
- ♥ 2022_09_1409/26
- ♥ 2025_03_1803/18
- ♥ 2020_11_2002/17