- 博客(39)
- 收藏
- 关注
原创 chromium渲染
资料:https://blog.csdn.net/Luoshengyang/article/details/50916769Chromium的网页渲染机制可以用八个字来描述:纵向分层,横向分块。其中,分层是由WebKit完成的,就是把网页抽象成一系列的Tree。Tree由Layer组成,Layer就是我们所说的层。从前面Chromium网页加载过程简要介绍和学习计划这个系列的文章可以知道,We...
2020-05-06 20:36:42 415 1
原创 网页光栅化
资料:https://blog.csdn.net/luoshengyang/article/details/51348829总结来说,分块的光栅化过程包含了以下三个主要的步骤: 1. 根据分块的可见性,将它们划分到不同的Bin中。 2. 根据内存限制策略,从优先级较高的Bin中选集出需要光栅化的分块。 3. 为每一个需要光栅化的分块分配光栅化内存...
2020-05-06 20:35:53 258
原创 日期时间处理
可以使用boost/date_time/posix_time/posix_time_types.hpp库case1: 求1年1个月1天1小时1分钟1秒前的时间1、用ptime获取当前时间,2、处理输入字符串,得到需要回退的年、月、天、时、分钟、秒格式为:boost::gregorian::years years(year);boost::gregorian::months m...
2020-05-06 20:34:02 145
原创 读取文件
std::vector<char> v( (std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>() );std::vector<T>has a constructor that takes two itera...
2020-05-06 20:33:13 137
原创 FastText 学习
https://blog.csdn.net/weixin_36604953/article/details/78195462看了开头两段https://blog.csdn.net/weixin_36604953/article/details/78324834未看http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-g...
2020-05-06 20:32:18 114
原创 Xgboost 学习
https://pypi.org/project/xgboost/#fileshttps://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/https://my.oschina.net/u/2293326/blog/1838923https:/...
2020-05-06 20:31:58 152
原创 Thrift 小白最简单入门例子
ENG:https://thrift.apache.org/tutorial/cpp中文:https://my.oschina.net/zmlblog/blog/177245 https://blog.csdn.net/feng973/article/details/70160571 https://www.cnblogs.com/zhaoxd...
2018-12-07 21:28:36 169
转载 Protocol Buffers
Eng:https://developers.google.com/protocol-buffers/docs/cpptutorial中文:https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.htmlMojo 非常类似这个Protobuf
2018-12-04 22:05:05 122
原创 C++ 小知识
会有以下的写法,::namespace::class目的是取到全局(最外层的namespace),用于以下的场景:namespace ns1 { class a; ...; namespace ns1 { class a; ...; } ...;}::ns1::a保证取到第一层的class a; n...
2018-10-23 21:32:22 145
转载 Python 学习随记
yield and send in generator: http://kissg.me/2016/04/09/python-generator-yield/再来看一段yield更复杂的用法,或许能加深你对generator的next()与send(value)的理解.>>> def echo(value=None):... while 1:... va...
2018-10-16 15:39:15 236
转载 矩阵基础知识
线性代数基础,矩阵,范数https://blog.csdn.net/StanfordJava/article/details/71982495矩阵求导总结https://blog.csdn.net/xbinworld/article/details/79110623
2018-10-12 18:01:45 349
转载 决策树之信息增益计算模拟
转自:https://blog.csdn.net/newcloudtech/article/details/77773403决策树算法有一个关键步骤就是最优特征的选择,利用信息增益算法选择该特征,例子来自于《统计学习方法》 利用MATLAB2017A版本,编写MATLAB程序计算之,将上述的数据保存到data5.xlsx中clear;clc;close all% 计算信...
2018-10-12 15:33:08 1693
原创 JavaScript 学习随记
由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:var a = ['A', 'B', 'C'];for (var i in a) { console.log(i); // '0', '1', '2' console.log(a[i]); // 'A', 'B', 'C'}请注意,for .....
2018-09-30 17:47:29 126
原创 GO 学习随记
For循环中用的变量是复用的,配合闭包,启用goroutine的时候要特别小心。func main() { for i := 0 ; i < 4; i++ { //time.Sleep(time.Nanosecond) go func() { print(i) }() } time.Sleep(time.Second)}result:4444p...
2018-09-29 20:17:32 176
原创 预加载
Chrome高性能的秘密:预连接、预加载与预渲染一箩筐的预加载技术Prefetching, preloading, prebrowsingPrefetching, preloading, prebrowsing (google)
2018-09-25 17:43:20 703
原创 进程通信方式
进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。 (3...
2018-09-18 20:53:23 136
原创 chromium mojo 快速入门
术语:消息管道:是一组端点. 每个endpoint有一个接受消息的队列, 在一个端点上写消息会高效地放入对端端点的消息队列上。所以消息管道是双工通信的。mojom文件:描述了接口,它们描述了类似proto files的强类型消息结构,通过binding generator可以产生对应于不同语言的文件。给定一个mojom interface和一条message pipe, 它的两个端点可...
2018-09-17 22:14:04 12141 1
原创 Property Trees & DispalyItem
//src/third_party/blink/renderer/core/paint/README.mdProperty Tree:DisplayItem:什么是property tree:Paint properties define characteristics of how a paint chunk should be drawn,such as the trans...
2018-09-10 21:53:11 809
转载 Curiously recurring template pattern
资料:http://spiritsaway.info/curiously-recurring-template-pattern.html#95f4efCRTP介绍CRTP的全称为Curiously recurring template pattern,描述的是C++中的一种模板应用模式。其示例代码可以抽象为这样的:// The Curiously Recurring Template...
2018-09-07 21:04:10 465
原创 模板中为paser使用typename指定dependent name
chromium中广泛使用的bind模板, // Bind as RepeatingCallback.template <typename Functor, typename... Args>inline RepeatingCallback<MakeUnboundRunType<Functor, Args...>>BindRepeating(Func...
2018-09-06 11:38:36 300
原创 多线程设计和实现
站在老罗的肩膀上:https://blog.csdn.net/Luoshengyang/article/details/46855395多线程模型则是为了解决网页的卡顿问题。为了达到这个目的,Chromium的多线程模型是基于异步通信的。一个典型的异步通信过程如图1所示:图1 线程异步通信过程 Task-1被分解成三个子任务Task-1(1)、Task-1(2)和...
2018-08-31 21:57:17 2709 1
原创 Pending Layer Tree激活为Active Layer Tree
资料:https://blog.csdn.net/luoshengyang/article/details/51638966从前面Chromium网页渲染调度器(Scheduler)实现分析一文可以知道,当调度器调用SchedulerStateMachine类的成员函数NextAction询问状态机下一步要执行的操作时,SchedulerStateMachine类的成员函数NextAction...
2018-08-30 21:00:29 471
原创 Tile光栅化
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/51348829CC Layer Tree 的绘制指令存储在displayitem的paint_op_buffer_中,要将绘制指令打包送入GPU,如下:开始准备光栅化的条件bool SchedulerStateMachine::ShouldPrepareTil...
2018-08-30 13:57:43 1101
原创 Layer Tree同步为Pending Layer Tree
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/51216442调用ProxyImpl::ScheduledActionCommit请求Compositor线程将刚刚绘制好的CC Layer Tree同步为CC Pending Layer Tree,如下所示:void ProxyImpl::ScheduledActi...
2018-08-27 21:16:45 596 1
原创 Layer Tree 绘制
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/51148299网页绘图表面创建完成之后,调度器就会请求绘制CC Layer Tree,这样网页在加载完成之后就能快速显示出来。通过CC Layer Tree可以依次找到Graphics Layer Tree、Paint Layer Tree和Layout Object Tr...
2018-08-21 22:34:18 1736 1
原创 FrameSink(原网页绘图表面Output Surface)创建
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50995124CC模块内部的状态机一旦检测到网页的Layer Tree创建和初始化完毕,就会通知调度器触发一个创建绘图表面的操作。CC模块在为网页创建绘图表面的过程中,也有伴随着网页分块管理器、资源池和光栅化工作者线程池等基础设施的创建。一旦这些基础设施准备完毕,网页才能开...
2018-08-20 22:33:56 710
原创 网页渲染调度器(Scheduler)实现
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/51054990调度器通过类SchedulerStateMachine描述内部的状态机。有以下4种状态class CC_EXPORT SchedulerStateMachine { public: ... // corresponding to previou...
2018-08-20 16:30:57 600
原创 Layer Tree 创建
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50941980网页的Graphics Layer Tree是根据Paint Layer Tree创建的,而Graphics Layer Tree与CC模块创建的Layer Tree的节点是一一对应的关系,如图1所示:图1 Graphics Layer Tree与CC...
2018-08-19 16:24:59 2996
原创 Graphics Layer Tree创建
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50661553Graphics Layer形成一个Graphics Layer Tree。Graphics Layer可看作是一个图形缓冲区,被若干Render Layer共用。本文接下来就分析Graphics Layer Tree的创建过程。网页的Render Lay...
2018-08-19 15:25:19 849 3
转载 chromium加载网页
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50414848Chromium加载网页的过程,需要Browser进程和Render进程协作完成。加载网页的过程由Browser进程发起,向服务器请求网页内容的过程也是由Browser进程完成。Render进程负责对下载回来的网页内容进行解析,解析之后得到一个DOM Tree...
2018-08-16 17:26:09 2352
原创 Dom Tree 创建过程
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50558942在Chromium中,Render进程是通过Browser进程下载网页内容的,后者又是通过共享内存将下载回来的网页内容交给前者的。Render进程获得网页内容之后,会交给WebKit进行处理。WebKit所做的第一个处理就是对网页内容进行解析,解析的结果是得到...
2018-08-16 17:24:39 2484
转载 网页url加载
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50527574Chromium在Browser进程中为网页创建了一个Frame Tree之后,会将网页的URL发送给Render进程进行加载。Render进程接收到网页URL加载请求之后,会做一些必要的初始化工作,然后请求Browser进程下载网页的内容。Browser进程...
2018-08-16 17:24:13 822
转载 Frame Tree 创建
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50450100Chromium在加载一个网页之前,需要在Browser进程创建一个Frame Tree。Browser进程为网页创建了Frame Tree之后,再请求Render进程加载其内容。Frame Tree将网页抽象为Render Frame。Render Fram...
2018-08-16 17:23:33 1110
原创 Paint Layer Tree 创建
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50648792 目前Render Layer已经更新为Paint Layer, 其最终通过PaintLayer::InsertOnlyThisLayerAfterStyleChange创建,其函数调用关系如下,通过之前创建Layout Object Tree的LayoutT...
2018-08-16 13:13:54 596
原创 Layout Object Tree 创建
站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50615628每一个HTML标签在DOM Tree中都有一个对应的HTMLElement节点。相应地,在DOM Tree中每一个需要渲染的HTMLElement节点在Layout Object Tree中都有一个对应的Layout Object节点,如图1所示(To U...
2018-08-15 22:32:05 1255
原创 chromium performance analysis
1. devtools -> performance, 这里会有比较粗的耗时分析, 例如https://developers.google.com/web/tools/chrome-devtools/rendering-tools/2. trace, 可以精确跟踪函数调用和事件在线程和进程间的传递即延时: 如文档https://www.chromium.org/developers/how...
2018-08-14 15:21:37 348
原创 Git 学习
资料:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000https://blog.csdn.net/ZTZY520/article/details/54023395版本回...
2018-08-04 18:00:03 141
转载 卡特兰数相关问题
From知乎用户:http://www.zhihu.com/question/25072237/answer/30111179;前面的回答都说了是卡特兰数(Catalan number),最近正好在上组合数学课,试着更直观地解释一下卡特兰数怎么求(只涉及数学层面的思路,不涉及算法或是编程),先扔出结论:如果有对括号(称()为括号),合法表达式的个数是.首先,为了更加直观地求
2015-09-27 12:29:26 774
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人