前端技巧第二期浏览器渲染

用数据分析破解彩票迷思:归因分析与理性决策框架 彩票本质是独立同分布的随机过程,其核心并非预测号码,而是理解概率规律与人类行为偏差。基于大数定律和独立事件原理,任何历史序列建模都无法提升中奖概率;真正有价值的是归因分析——解析奖金池动态、量化玩家选号偏好、构建冷门度指数,并通过蒙特卡洛模拟评估投入产出比。这类分析不仅适用于彩票场景,更是金融风控、产品运营与个人财务决策的通用训练沙盒,帮助从业者建立对尾部风险、心理账户和期望值计算的工程化直觉。 阅读详情

浏览器线程进程

浏览器包含5个主要进程

浏览器进程:负责页面显示、用户交互、子进程管理、提供存储等
渲染进程:每个浏览器页签有单独的渲染进程(进程通信是IPC),核心用于渲染页面
网络进程:主要处理网络资源加载(HTML、CSS、JS等)
GPU进程:3D绘制,提高性能
插件进程:chrome中安装的一些插件

其中渲染进程是我们最需要了解的,每个浏览器页签有单独的渲染进程(进程通信是IPC),核心用于渲染页面。

渲染进程包含多个线程

渲染线程合成线程
负责渲染浏览器界面HTML元素,解析HTML,CSS,构建DOM树和RenderObject树,布局和绘制等。当界面需要重绘(Repaint)或由于某种操作引发回流(重排)(reflow)时,该线程就会执行
JavaScript引擎线程
JavaScript引擎,也可以称为JS内核,主要负责处理Javascript脚本程序,例如V8引擎。JS引擎一直等待着任务队列中任务的到来,然后加以处理,一个Tab页(renderer进程)中无论什么时候都只有一个JS线程在运行JS程序(单线程)。

注意⚠️:GUI渲染线程和JavaScript引擎线程互斥!由于JavaScript是可操纵DOM的,如果在修改这些元素属性同时渲染界面(即JavaScript线程和UI线程同时运行),那么渲染线程前后获得的元素数据就可能不一致了。

事件触发线程

当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理

定时触发器线程

setInterval与setTimeout所在线程 浏览器定时计数器并不是由JavaScript引擎计数的, 因为JavaScript引擎是单线程的, 如果处于阻塞线程状态就会影响记计时的准确。通过单独线程来计时并触发定时(计时完毕后,添加到事件队列中,等待JS引擎空闲后执行)

异步http请求线程

在XMLHttpRequest在连接后是通过浏览器新开一个线程请求。将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入事件队列中,再由JavaScript引擎执行。

输入URL后发生了什么

1、用户输入url地址(关键字会将关键字根据默认的引擎生成地址)会开始导航,浏览器进程里面做

先去查找缓存,检测缓存是否过期,直接返回缓存中内容
如果是首次访问,看域名是否被解析过,DNS协议将域名解析成ip地址(基于UDP),ip+端口号 host
如果请求是https,会进行SSL协商,保证传输的安全性
根据ip地址进行寻址,排队等待,同一时间最多能发送6个请求
tcp创建连接,三次握手传输。利用tcp传输数据(拆分成数据包,有序、可靠),服务器会按照顺序接收
http1.1中http请求,用keep-alive下次传输数据时,可以复用上次创建的连接
服务器接收到数据后(响应式 响应头 响应体)
服务器返回301 302浏览器会进行重定向操作
服务器304去查询浏览器缓存

2、浏览器进程会准备一个渲染进程用于渲染页面

3、网络进程加载资源,最终将加载的资源来交给渲染进程来处理

4、渲染完毕显示

渲染过程

整个渲染流程分为多个阶段,分别是:HTML解析、样式计算、布局、分层、绘制、分块、光栅化

解析HTML得到DOM树和CSS树

解析过程中遇到 CSS 解析 CSS,遇到 JS 执行 JS。为了提高解析效率,浏览器在开始解析前,会启动一个预解析的线程,率先下载HTML中的外部CSS文件和外部的JS文件。
如果主线程解析到link位置,此时外部的CSS文件还没有下载解析好,主线程不会等待,继续解析后续的HTML。这是因为下载和解析CSS的工作是在预解析线程中进行的。这就是CSS不会阻塞HTML解析的根本原因。
如果主线程解析到script位置,会停止解析HTML,转而等待 JS 文件下载好,并将全局代码解析执行完成后,才能继续解析HTML。这是因为 JS 代码的执行过程可能会修改当前的 DOM 树,所以 DOM 树的生成必须暂停。这就是 JS 会阻塞 HTML 解析的根本原因。
第一步完成后,会得到 DOM 树和 CSSOM 树,浏览器的默认样式、内部样式、外部样式、行内样式均会包含在 CSSOM 树中

样式计算

主线程会遍历得到的 DOM 树,依次为树中的每个节点计算出它最终的样式。这一步完成后,会得到一棵带有样式的 DOM 树。

布局

布局阶段会依次遍历 DOM 树的每一个节点,计算每个节点的几何信息。例如节点的宽高、相对包含块的位置。
大部分时候,DOM 树和布局树并非一一对应。
比如display:none的节点没有几何信息,因此不会生成到布局树;又比如使用了伪元素选择器,虽然 DOM 树中不存在这些伪元素节点,但它们拥有几何信息,所以会生成到布局树中。还有匿名行盒、匿名块盒等等都会导致 DOM 树和布局树无法一一对应

分层

主线程会使用一套复杂的策略对整个布局树中进行分层。
分层的好处在于,将来某一个层改变后,仅会对该层进行后续处理,从而提升效率。
滚动条、堆叠上下文、transform、opacity 等样式都会或多或少的影响分层结果,也可以通过will-change属性更大程度的影响分层结果

绘制

主线程会为每个层单独产生绘制指令集,用于描述这一层的内容该如何画出来。完成绘制后,主线程将每个图层的绘制信息提交给合成线程,剩余工作将由合成线程完成。

分块、光栅化和最终画

1、合成线程首先对每个图层进行分块,将其划分为更多的小区域。
2、它会从线程池中拿取多个线程来完成分块工作。
3、分块完成后,进入光栅化阶段。
4、合成线程会将块信息交给 GPU 进程,以极高的速度完成光栅化。
5、GPU 进程会开启多个线程来完成光栅化,并且优先处理靠近视口区域的块。
6、光栅化的结果,就是一块一块的位图
7、最后一个阶段就是画了
8、合成线程拿到每个层、每个块的位图后,生成一个个指引信息
9、指引会标识出每个位图应该画到屏幕的哪个位置,以及会考虑到旋转、缩放等变形。
10、变形发生在合成线程,与渲染主线程无关,这就是transform效率高的本质原因。
11、合成线程会把 指引信息 提交给 GPU 进程,由 GPU 进程产生系统调用,提交给 GPU 硬件,完成最终的屏幕成像

为什么 transform 的效率高?

因为 transform 既不会影响布局也不会影响绘制指令,它影响的只是渲染流程的最后一个「draw」阶段
由于 draw 阶段在合成线程中,所以 transform 的变化几乎不会影响渲染主线程。反之,渲染主线程无论如何忙碌,也不会影响 transform 的变化

重排/回流

回流也叫重排,回流就是当render树中的一部分因为元素的尺寸、位置或内容的变化而需要重新构建
1、reflow 的本质就是重新计算 layout 树。
2、当进行了会影响布局树的操作后,需要重新计算布局树,会引发 layout。
3、为了避免连续的多次操作导致布局树反复计算,浏览器会合并这些操作,当 JS 代码全部完成后再进行统一计算。所以,改动属性造成的 reflow 是异步完成的。
4、也同样因为如此,当 JS 获取布局属性时,就可能造成无法获取到最新的布局信息。
5、浏览器在反复权衡下,最终决定获取属性立即 reflow。
6、页面首页渲染
7、浏览器窗口大小变化
8、内容变化导致大小尺寸变化
9、添加或删除节点
10、激活css伪类
11、改变元素位置,例如:margin、padding、border等都会引起重排

重绘(repaint)

当render树中的一部分因为元素的样式变化而需要重新构建,但元素的位置和尺寸没有
1、repaint 的本质就是重新根据分层信息计算了绘制指令。
2、当改动了可见样式后,就需要重新计算,会引发 repaint。由于元素的布局信息也属于可见样式,所以 reflow 一定会引起 repaint。
3、 改变元素外观属性,例如:color、background-color、visibility、outline等都会引起重绘

重绘与重排的区别

重排必将引起重绘,而重绘不一定会引起重排。比如:只有颜色改变的时候就只会发生重绘而不会引起回流
当页面布局和几何属性改变时就需要重排。比如:添加或者删除可见的DOM元素,元素位置改变,元素尺寸改变——边距、填充、边框、宽度和高度,内容改变。

性能影响

渲染速度变慢:回流和重绘操作都需要消耗一定的计算资源。尤其是回流,由于涉及到页面布局的重新计算,其开销相对较大。因此,当页面频繁触发回流和重绘时,会导致页面的渲染速度变慢,从而影响用户的体验。

页面闪烁和卡顿:当浏览器进行回流和重绘操作时,页面可能会出现闪烁或卡顿的现象。这是因为浏览器在重新渲染页面时,会先清空原有的内容,然后再重新绘制。这个过程可能导致用户看到页面的短暂变化或停顿,尤其是在性能较低的设备或复杂的页面上。

资源消耗:频繁的回流和重绘操作不仅会导致CPU和内存的消耗增加,还可能引发其他资源的过度使用,如电池续航时间的减少等。

优化策略

减少DOM操作:避免不必要的DOM读写操作,可以缓存常用DOM对象到变量中,以减少直接访问DOM的次数。

利用CSS优化:尽量使用CSS动画代替JavaScript动画,因为CSS动画在浏览器层面进行优化,通常比JavaScript动画性能更好。同时,通过优化CSS选择器的性能,减少样式计算的开销。

批量修改:如果需要对多个元素进行样式修改或DOM操作,尽量将其合并成一次操作,以减少回流和重绘的次数。

使用请求动画帧(requestAnimationFrame):这个函数可以在浏览器的下一次重绘之前执行代码,从而确保动画的流畅性,并减少不必要的回流和重绘。

基于SSM的学院班级管理系统:从数据库设计到权限拦截的完整实践 在Java Web开发中,SSM框架(Spring、Spring MVC、MyBatis)是连接基础原理与工程实践的经典组合。理解其核心机制,如IoC容器、Mapper代理与DispatcherServlet的分发逻辑,能显著提升开发者对Web应用的掌控力。围绕数据库设计与权限管理两大要点,以学院班级管理系统为例,阐述如何通过第三范式划分表结构、使用Druid连接池优化访问,并通过自定义拦截器实现登录校验与静态资源放行。涉及学生信息CRUD、成绩事务控制、分页查询及批量导入等常见场景,同时提供Tomcat启 阅读详情

相关推荐

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1618

如何在浏览器查看渲染时间?

1、打开开发者工具(F12) 2、找到Performance =>点击录制按钮 3、F5刷新页面 =》点击关闭录制(同录制按钮) 4、找到Summary(console只上偏中部左侧位置) 蓝色:网路通信时间 黄色:js时间 紫色:重排的时间 绿色:重绘的时间 那个占比越大,那个花的时间越长,问题越严重。 记录读重排重绘笔记(地址) ...

weixin_42364397的博客 1万+

Git Worktree + Claude Code:多终端并发开发完全实战

深入讲解如何使用 Git Worktree 配合多终端 Claude Code 实现并发开发,通过实战案例展示如何在 Android 开发中提升 2-3 倍效率,彻底告别等待 AI 的问题。

Cheson的专栏 1206

现代浏览器四大进程及渲染线程总结

现代浏览器通常使用多进程架构,其中包括以下四种常见的进程:浏览器进程(Browser Process):浏览器的主进程(负责协调、主控),只有一个该进程是浏览器的核心进程,它控制浏览器的主窗口和各个子进程的创建和销毁。同时,它负责管理用户界面、存储缓存和历史记录等功能。是运行浏览器的主进程。负责管理所有其他进程,并协调他们之间的交互和通信。浏览器窗口和标签页的创建和关闭也由此进程执行。渲染进程(Renderer Process)

suwu150 2628

半导体制造中的通孔缺陷与冗余通孔技术解析

通孔(Via)是半导体制造中连接不同金属层的关键结构,其可靠性直接影响芯片良率。随着工艺节点演进至28nm及更先进制程,通孔缺陷导致的良率损失日益显著,主要表现为完全开路和高阻态两种失效模式。冗余通孔技术通过在关键位置增加备用连接,可有效提升芯片可靠性,其实现涉及物理冗余与电气冗余两种方案。该技术在7nm/5nm工艺中已证明可将通孔相关缺陷率降低10-100倍,但面临设计规则复杂性、规模处理效率和动态合规验证等工业化挑战。智能双切通孔插入流程通过动态DRC规则解析、奇偶层级并行处理和增量式验证等创新方法,显

weixin_35982453的博客 383

光栅衍射有入射角时_衍射型多焦点人工晶体光学原理

多焦点人工晶体如何把光线分成多个焦点的?这个问题大部分专业书只是蜻蜓点水,并没有讲明白。希此文粗浅的解释,能帮您加深理解,请多指正。接下来,我将按照一下历史发展的顺序讲解一下:光的认识、菲涅尔灯塔(菲涅尔透镜)、菲涅尔波带盘(半波带盘)、多焦点人工晶体。一:首先复习一下光的认识历史。我们现在都知道光是一种电磁波,具有波粒二相性,但是认识光的本质也经历非常曲折漫长的过程。牛顿时代的几何光...

weixin_28963467的博客 2352

浏览器渲染,进程与线程

HTML解释器就是将从网络或本地获取的字节流转换成dom树。 Bytes字节流——Characters字符流——Tokens词语——Nodes节点——Dom树 字节流先解码成字符流,然后通过各种词法分析器(HTMLTokenizer,XSSAuditor)解析成词语,再通过语法分析器(HTMLDocumentParser,HTMLTreeBuilder)解析成节点,最后节点(HTMLConstructionSite)组建成dom树。 进程:指的一个程序(浏览器打开一个页面就是打开一个进程)。 线

qq_27483091的博客 1781

Redhawk: 为什么STA CHECK中switch cell覆盖率为0(STA file中switch control pin没有timing window)?

如题,做dynamic analysis时,不需要switch cell的timing window信息,但是做low power analysis需要做上电时switch cell的timing window就是必须的了,本文对switch cell control pin没有timing window (STA CHECK覆盖率为零)的这种现象做分析。

m0_61544122的博客 1197

前端监控-首屏时间时间,页面渲染完成时间

【代码】前端监控-首屏时间时间,页面渲染完成时间。

qq_44410862的博客 696

Mac版 Android Studio自带模拟器无法联网解决方案

前言 作为一枚安卓开发者,免不了使用模拟器来开发调试(毕竟它比手机方便太多)。但是因为适配需要,我们会更多的使用真机开发调试,那么当模拟器遇到这样那样的问题,我们往往会无从下手,其中最烦的就是网络问题。 我最近图方便,又重新用起了模拟器,但是发现联网失败,用模拟器内置的浏览器也打不开网页,于是百度上一通找,毫无效果,各种说用cmd命令行设置模拟器dns的都没用,显示没有什么dns文件啥的,后来...

陈万洲的专栏 1万+

Python爬虫实战:模拟登录知乎 – 通过加密参数和验证码实现自动登录

通过本篇博客的讲解,我们学习了如何通过 POST请求 和 验证码识别,模拟登录知乎并爬取用户信息、问题数据。随着爬虫技术的发展,面对更复杂的反爬虫机制,我们可以不断调整策略,以绕过这些防护,实现数据的自动化抓取。

2201_76125261的博客 731

前端面试-性能优化

前端有哪些性能优化 渲染层面 针对JS: JavaScript既会阻塞HTML的解析,也会阻塞CSS的解析。因此我们可以对JavaScript的加载方式进行改变,来进行优化 尽量将JavaScript文件放在body的最后; body中间尽量不要写<script>标签; < script>标签的引入资源方式有三种:尽量使用异步加载,不会阻塞DOM的解析: script 立即停止页面渲染去加载资源文件,当资源加载完毕后立即执行js代码,js代码执行完毕后继续渲染页面; async &

wanglu458512的博客 534

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3117

面试前端八股文十问十答第二期

HTTP状态码304表示“未修改”,当浏览器发送请求时,如果资源在服务器上没有发生变化,服务器会返回状态码304,告诉浏览器可以直接使用本地缓存的资源,无需重新下载。这样可以减少网络传输,提高页面加载速度。

qq_67358181的博客 1101

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

漏洞挖掘从入门到进阶(第三期):Web 实战 ——XSS 跨站脚本原理与绕过技巧

XSS(Cross-Site Scripting,跨站脚本漏洞)是Web漏洞中最常见的漏洞之一,其危害虽不及SQL注入直接,但可用于窃取用户Cookie、伪造用户身份、发起钓鱼攻击等,在实战安全测试与CTF竞赛中频繁出现。与SQL注入的“数据库交互漏洞”不同,XSS是“页面渲染漏洞”,核心成因是“用户输入未被过滤,直接嵌入页面HTML中,导致恶意脚本被执行”。

m0_71745258的博客 642

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

漏洞挖掘从入门到进阶(第三期)Web漏洞挖掘实战|XSS跨站脚本漏洞原理与绕过技巧

XSS(Cross-Site Scripting,跨站脚本漏洞)是Web漏洞中最常见的漏洞之一,其危害虽不及SQL注入直接,但可用于窃取用户Cookie、伪造用户身份、发起钓鱼攻击等,在实战安全测试与CTF竞赛中频繁出现。与SQL注入的“数据库交互漏洞”不同,XSS是“页面渲染漏洞”,核心成因是“用户输入未被过滤,直接嵌入页面HTML中,导致恶意脚本被执行”。

QIANDXX的博客 172

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Web漏洞挖掘实战】新手必看!第3期|XSS跨站脚本漏洞原理与绕过技巧

XSS(Cross-Site Scripting,跨站脚本漏洞)是Web漏洞中最常见的漏洞之一,其危害虽不及SQL注入直接,但可用于窃取用户Cookie、伪造用户身份、发起钓鱼攻击等,在实战安全测试与CTF竞赛中频繁出现。与SQL注入的“数据库交互漏洞”不同,XSS是“页面渲染漏洞”,核心成因是“用户输入未被过滤,直接嵌入页面HTML中,导致恶意脚本被执行”。

2401_84760719的博客 453

Web漏洞挖掘实战(第三期)|XSS跨站脚本漏洞原理与绕过技巧

XSS(Cross-Site Scripting,跨站脚本漏洞)是Web漏洞中最常见的漏洞之一,其危害虽不及SQL注入直接,但可用于窃取用户Cookie、伪造用户身份、发起钓鱼攻击等,在实战安全测试与CTF竞赛中频繁出现。与SQL注入的“数据库交互漏洞”不同,XSS是“页面渲染漏洞”,核心成因是“用户输入未被过滤,直接嵌入页面HTML中,导致恶意脚本被执行”。

A1353192296的博客 1005

A5站长网第二期网页设计网站制作培训课程全套视频

课程概述:【官方售价580元,本站免费下载哦 培训目标:熟练掌握css,写出符合要求的网页,利于搜索引擎收录.常见cms的使用,能够利用常见cms快速搭建自己需要的网站。 课程信息: 【时间】 2013年12月4日 【对象】 热爱程序开发、网站设计、网站开发、网站建设的人群 课程报名: ¥ 580 元/人 主讲教师 阿Q,现任宁波某集团公司电子商务部技术主管,长期从事页...

weixin_30726161的博客 252

前端三面面经:从React基础到工程化与系统设计

前端面试中,扎实的JavaScript基础与框架原理是必备能力,但中大型企业更看重候选人对工程化实践与复杂业务建模的理解。从闭包、事件循环到React的setState批处理与key机制,面试官常通过追问链考察技术深度;而项目性能优化、LRU缓存手写、虚拟列表动态高度、监控SDK设计等题目,则直接映射到真实业务场景中的技术选型与问题拆解能力。理解底层设计理念,掌握边界条件与防御性处理,能显著提升代码质量与系统稳定性。无论是性能指标采集、异常上报策略,还是构建工具迁移评估,这些工程实践都体现了前端工程师从“能

weixin_30947043的博客 418

基本方法笔记 - 收藏集 - 掘金

探讨判断横竖屏的最佳实现 - 前端 - 掘金在移动端,判断横竖屏的场景并不少见,比如根据横竖屏以不同的样式来适配,抑或是提醒用户切换为竖屏以保持良好的用户体验。 判断横竖屏的实现方法多种多样,本文就此来探讨下目前有哪些实现方法以及其中的优缺点。 CSS Media Queries 通过媒体查询的方式,我... JavaScript深入之b...

weixin_34122604的博客 263

供应链地理可视化看板:从数据集成到地图引擎的实战构建指南

数据可视化是提升企业运营效率的关键技术,其核心原理在于将多源异构数据转化为直观的图形界面,辅助决策。在供应链管理领域,这一技术的价值尤为凸显,它能将静态的业务数据与动态的地理空间信息相结合,实现物流、库存、订单等要素的全局透明化。典型的应用场景包括实时运输监控、库存网络优化和风险预警。本文聚焦于构建此类系统的核心实践,深入探讨如何通过数据中台整合ERP、TMS、GPS等系统数据,并利用高德地图等引擎进行海量时空数据渲染,最终打造一个集业务指标与地理信息于一体的决策驾驶舱,有效解决数据孤岛和决策滞后问题。

weixin_33831673的博客 304

谷歌开发者工具之功能面板

Network 面板 用的最多的面板,可查看 Ajax 请求,页面访问时间线等等。 Performance 面板 查看JS性能,详情可看我的另一篇文章:《如何使用谷歌浏览器开发者工具中的Performance分析网页性能》 Rendering 面板 查看页面渲染,F12打开开发者面板后按 esc 退出键打开 Rendering 面板。 Coverage 面板 查看代码使用率 Unused Bytes 就是未使用的代码率,具体选中一行,就能...

阿嚏乱码的地方 1314
上一篇: html 公共路径标签base
下一篇: layui-vue第三方库表格列事件怎么写
everyStudy
博客等级 码龄4年 292粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值