- 博客(9)
- 收藏
- 关注
原创 浏览器渲染页面的流程(资源之间的相互阻塞与并行)
关键渲染路径是浏览器将 HTML、CSS 和 JavaScript 转换为屏幕上的像素所经历的步骤序列。优化关键渲染路径可提高渲染性能。关键渲染路径包含了(DOM)、(CSSOM)、渲染树和布局。对网页或应用程序的请求始于 HTTP 请求。服务器发送包含 HTML 的响应。浏览器开始解析 HTML,将接收到的字节转换为 DOM 树。当浏览器每次发现 DOM 树包含外部资源就会初始化其请求(无论是样式表、脚本还是嵌入的图片引用)。
2025-04-28 14:32:11
771
原创 浏览器http缓存相关理解
当客户端加载这个资源的时候,仍会向服务器发送验证请求(etag,If-Modified-Since:last-modified),服务器和最新资源比较之后,如果没变,返回304状态码,如果变了,返回最新资源。对于第一个问题,我的理解是浏览器为了尽可能的复用资源,对于没有明确规定保存的资源,浏览器会根据date和last-modified头来进行计算保存时间,这个很好理解,根据当前访问时间减去上次修改时间来计算资源至少多长时间没改过了,因此预测0.1倍的时间内资源应该不会改变。启发式缓存:不再多言。
2025-04-24 16:28:04
274
原创 从底层原理分析父子组件的生命周期
1. vnode: vnode就是我们常说的虚拟dom,其主要是用来减少渲染器创建或更新dom树的开销,其本质就是一个js中的对象,操纵代价小VNode 全称 Virtual Node,翻译过来就是虚拟节点。它是对真实 DOM 的一个抽象表示。简单来说,VNode 是一个描述 DOM 结构的 JavaScript 对象,而不是实际的 DOM 元素。VNode 的结构VNode 通常包括以下几个属性:tag: 元素标签名,例如 ‘div’,‘span’。
2025-04-11 14:33:23
490
原创 数据库innodb的事务隔离级别的特点以及实现方式
笔者看了很多数据库的博客,但是很多都只讲了数据库各种隔离级别和解决的问题,但是如果对隔离级别的实现方式不清晰,那么很容易简单的认为一个级别解决一个问题,因为本文主要是在给出各种级别的实现方式的基础上,说明问题出现的原因,以及如何解决。
2025-02-28 10:11:42
366
原创 rust的所有权思考
函数调用传入变量后自然也相当于占用了原来参数的所有权,导致必须要通过函数返回值再将所有权返回去,为了简化操作,rust引入了引用的概念(实际上就是二级指针,指向有所有权的变量的指针),引用解决了所有权不能共享的问题,因为引用严格来说属于1,是可‘copy’的。但是对于2,因为在堆上赋值相对比较慢,rust选择了只有最后一个指向2的变量拥有所有权,之前的其它变量直接无效,在变量作用域结束时,释放内存的变量也是有所有权的那个。1.能在编译时期确定大小的存在栈的数据类型,如i32,u32等。
2024-12-17 15:14:45
188
原创 python和javascript中生成器和迭代器概念的理解
今天在查询yield关键字在python中如何运作时,大多数博文都只是简单的将其解释为return,但是这种解释带来的危害比不知道更大,函数返回值只会有一个(fork除外),怎么能将其解释为多个呢。后来经过查找资料,python cookbook3中解释的较为清晰。
2024-10-21 19:08:53
812
1
原创 对于js中的闭包技术和原型链技术的思考
今天在工作中看前辈留下的代码时,注意到了一个函数节流代码刚开始很难理解为什么返回的函数可以使用外部函数的变量,这样throttle销毁后,不会导致错误吗,后来才了解到使用到了闭包技术,在返回内部函数后,外部函数不会立即销毁,而是由编译器检查是否还有函数的内部属性被使用,如果有,则不会被销毁。这样就能够形成一个闭包。闭包的一个常用的场景就是模拟私有方法。私有方法不仅仅有利于限制对代码的访问:还提供了管理全局命名空间的强大能力,避免非核心的方法弄乱了代码的公共接口部分。
2024-10-17 21:56:44
544
原创 关于js中宏任务和微任务的用例及思考
刚开始不是很了解这里的setTimeout的含义,经过相关资料的查询发现,这里是借用了宏任务周期的概念,具体是有一个或多个宏任务队列,队列内是同步代码,在执行栈执行完所有代码后,会先将微任务队列执行完,之后在将一个宏任务压入执行栈。3.无论是在宏任务还是在微任务中遇到的settimeout,都算是一个新的宏任务,不在当前宏任务内执行。1.宏任务内的同步代码执行完成之后,才会开始promise的回调函数,也就是微任务。2.promise的构造函数内传入的函数算是同步代码,立即执行。
2024-10-15 20:38:32
167
原创 解决Could not load library libcudnn_cnn_train.so.8.
但是我的问题应该是系统的cudnn和torch的cudnn冲突,所以通过以下命令解决(根据报错信息后的路径调整)如题,总共看了2篇文章。
2024-03-11 13:23:10
1500
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人