自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 chromium渲染

资料:https://blog.csdn.net/Luoshengyang/article/details/50916769Chromium的网页渲染机制可以用八个字来描述:纵向分层,横向分块。其中,分层是由WebKit完成的,就是把网页抽象成一系列的Tree。Tree由Layer组成,Layer就是我们所说的层。从前面Chromium网页加载过程简要介绍和学习计划这个系列的文章可以知道,We...

2020-05-06 20:36:42 372 1

原创 网页光栅化

资料:https://blog.csdn.net/luoshengyang/article/details/51348829总结来说,分块的光栅化过程包含了以下三个主要的步骤: 1. 根据分块的可见性,将它们划分到不同的Bin中。 2. 根据内存限制策略,从优先级较高的Bin中选集出需要光栅化的分块。 3. 为每一个需要光栅化的分块分配光栅化内存...

2020-05-06 20:35:53 223

原创 日期时间处理

可以使用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 127

原创 读取文件

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 111

原创 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 96

原创 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 135

原创 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 148

转载 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 104

原创 C++ 小知识

会有以下的写法,::namespace::class目的是取到全局(最外层的namespace),用于以下的场景:namespace ns1 { class a; ...; namespace ns1 { class a; ...; } ...;}::ns1::a保证取到第一层的class a; n...

2018-10-23 21:32:22 121

转载 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 187

转载 矩阵基础知识

线性代数基础,矩阵,范数https://blog.csdn.net/StanfordJava/article/details/71982495矩阵求导总结https://blog.csdn.net/xbinworld/article/details/79110623

2018-10-12 18:01:45 327

转载 决策树之信息增益计算模拟

转自:https://blog.csdn.net/newcloudtech/article/details/77773403决策树算法有一个关键步骤就是最优特征的选择,利用信息增益算法选择该特征,例子来自于《统计学习方法》 利用MATLAB2017A版本,编写MATLAB程序计算之,将上述的数据保存到data5.xlsx中clear;clc;close all% 计算信...

2018-10-12 15:33:08 1658

转载 LightGBM

https://blog.csdn.net/niaolianjiulin/article/details/76584785

2018-10-11 19:57:55 285

原创 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 108

原创 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 135

原创 预加载

Chrome高性能的秘密:预连接、预加载与预渲染一箩筐的预加载技术Prefetching, preloading, prebrowsingPrefetching, preloading, prebrowsing (google)

2018-09-25 17:43:20 663

原创 进程通信方式

进程间通信的方法主要有以下几种:  (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。  (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。  (3...

2018-09-18 20:53:23 110

原创 chromium mojo 快速入门

术语:消息管道:是一组端点. 每个endpoint有一个接受消息的队列, 在一个端点上写消息会高效地放入对端端点的消息队列上。所以消息管道是双工通信的。mojom文件:描述了接口,它们描述了类似proto files的强类型消息结构,通过binding generator可以产生对应于不同语言的文件。给定一个mojom interface和一条message pipe, 它的两个端点可...

2018-09-17 22:14:04 11785 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 767

转载 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 431

原创 模板中为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 259

原创 多线程设计和实现

站在老罗的肩膀上: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 2661 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 444

原创 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 1000

原创 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 567 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 1601 1

原创 FrameSink(原网页绘图表面Output Surface)创建

站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50995124CC模块内部的状态机一旦检测到网页的Layer Tree创建和初始化完毕,就会通知调度器触发一个创建绘图表面的操作。CC模块在为网页创建绘图表面的过程中,也有伴随着网页分块管理器、资源池和光栅化工作者线程池等基础设施的创建。一旦这些基础设施准备完毕,网页才能开...

2018-08-20 22:33:56 673

原创 网页渲染调度器(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 549

原创 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 2946

原创 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 805 3

转载 chromium加载网页

站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50414848Chromium加载网页的过程,需要Browser进程和Render进程协作完成。加载网页的过程由Browser进程发起,向服务器请求网页内容的过程也是由Browser进程完成。Render进程负责对下载回来的网页内容进行解析,解析之后得到一个DOM Tree...

2018-08-16 17:26:09 2276

原创 Dom Tree 创建过程

站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50558942在Chromium中,Render进程是通过Browser进程下载网页内容的,后者又是通过共享内存将下载回来的网页内容交给前者的。Render进程获得网页内容之后,会交给WebKit进行处理。WebKit所做的第一个处理就是对网页内容进行解析,解析的结果是得到...

2018-08-16 17:24:39 2456

转载 网页url加载

站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50527574Chromium在Browser进程中为网页创建了一个Frame Tree之后,会将网页的URL发送给Render进程进行加载。Render进程接收到网页URL加载请求之后,会做一些必要的初始化工作,然后请求Browser进程下载网页的内容。Browser进程...

2018-08-16 17:24:13 768

转载 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 1058

原创 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 557

原创 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 1211

原创 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 316

原创 Git 学习

资料:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000https://blog.csdn.net/ZTZY520/article/details/54023395版本回...

2018-08-04 18:00:03 129

转载 卡特兰数相关问题

From知乎用户:http://www.zhihu.com/question/25072237/answer/30111179;前面的回答都说了是卡特兰数(Catalan number),最近正好在上组合数学课,试着更直观地解释一下卡特兰数怎么求(只涉及数学层面的思路,不涉及算法或是编程),先扔出结论:如果有对括号(称()为括号),合法表达式的个数是.首先,为了更加直观地求

2015-09-27 12:29:26 742

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除