xx

前端面试题

那年仲夏 提交于 2021-01-11 08:26:35
浏览器是如何渲染页面的 ? 渲染的流程如下: 解析HTML文件,创建DOM树。自上而下,遇到任何样式(link、style)与脚本(script)都会阻塞(外部样式不阻塞后续外部脚本的加载)。 解析CSS。优先级:浏览器默认设置<用户设置<外部样式<内联样式<HTML中的style样式; 将CSS与DOM合并,构建渲染树(Render Tree) 布局和绘制,重绘(repaint)和重排(reflow) 从输入 URL 到页面展示到底发生了什么 转自:http://web.jobbole.com/91239/ 1、输入地址 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下 enter,页面就出来了。 2、浏览器查找域名的 IP 地址 1、请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。 2、如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个

jvm调优总结

懵懂的女人 提交于 2020-11-30 23:33:05
1.jvm运行模式 client模式:启动快,占用内存少,jit编译器生成代码的速度也更快. server模式:主要优势在于代码优化功能,这个功能对于服务器应用而言尤其重要. tiered server模式:结合了client与server的长处,即快速启动和高效的生成代码.通过-server -XX:+TieredCompilation启用 2. 32/64位jvm(linux机器) java堆小于2GB,选择32位jvm java堆介于2GB于32GB之间,使用-d64 -XX:+UseCompressedOops命令选项的64位jvm java堆大于32GB,使用-d64选项的64位jvm 3. hotspot内存分配 -Xms<n>[g|m|k] :java堆最小值 -Xmx<n>[g|m|k] :java堆最大值.关注吞吐量及延迟的java应用程序应该将-Xmx与-Xms设置为同一值,因为无论扩展还是缩减新生代空间或老年代空间,都需要进行Full GC. -XX:NewSize=<n>[g|m|k] :新生代空大小的初始值,也是最小值.指定此项时,应同时指定 -XX:MaxNewSize=<n>[g|m|k] -XX:MaxNewSize=<n>[g|m|k] :新生代空间大小的最大值,指定此项时,应同时指定 -XX:NewSize=<n>[g|m|k] -Xmn<n>

JVM调优总结(5):典型配置

一曲冷凌霜 提交于 2020-11-15 05:00:10
JVM调优总结(5):典型配置 2016-04-20 (点击上方公众号,可快速关注) 来源:pengjiaheng 网址: http://pengjiaheng.iteye.com/blog/538582 以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: java -Xmx3550m -Xms3550m -Xmn2g –Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。 -Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M

java堆内存又溢出了,教你一招必杀技

妖精的绣舞 提交于 2020-05-07 18:41:09
JAVA堆内存管理是影响性能主要因素之一。 堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。 年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。 堆内存用途:存放的是对象,垃圾收集器就是收集这些对象,然后根据GC算法回收。 非堆内存用途:永久代,也称为方法区,存储程序运行时长期存活的对象,比如类的元数据、方法、常量、属性等。 在JDK1.8版本废弃了永久代,替代的是元空间(MetaSpace),元空间与永久代上类似,都是方法区的实现,他们最大区别是:元空间并不在JVM中,而是使用本地内存。 元空间有注意有两个参数: MetaspaceSize :初始化元空间大小,控制发生GC阈值 MaxMetaspaceSize : 限制元空间大小上限,防止异常占用过多物理内存 为什么移除永久代? 移除永久代原因:为融合HotSpot JVM与JRockit VM(新JVM技术)而做出的改变

JVM性能调优2:JVM性能调优参数整理

半腔热情 提交于 2020-04-18 05:51:56
本系列包括: JVM性能调优1:JVM性能调优理论及实践(收集整理) JVM性能调优2:JVM性能调优参数整理 JVM性能调优3:JVM_堆溢出分析过程和命令 JVm性能调优4:GC日志分析 JVM性能调优5:Heap堆分析方法 序号 参数名 说明 JDK 默认值 使用过 1 JVM执行模式         2 -client -server 设置该JVM运行与Client 或者Server Hotspot模式,这两种模式从本质上来说是在JVM中运行不同的JIT(运行时编译模块)代码,并且两者在JVM内部的接口是一致的。客户端模式优化的是系统启动时间更快,而服务端模式的优化则更关注与系统的整体性能。一般来说Client选项用于GUI的应用,Server选项多用于后台服务器应用。 另外两者在编译策略、垃圾收集策略、堆使用上也有所不同     是 3 -d32 -d64 指明该Java VM是运行与32位环境还是64位环境,默认是运行在32位环境下的,如果是配置了64位模式则需要操作系统也必须是64位的,当然CPU更需要是64位的。另外如果我们选择了-server参数,则就暗含了64位模式。   默认32模式   4 -hotspot 在Hotspot类型的JVM中缺省使用,缺省为Client Hotspot模式。   默认client模式   5 -Xmixed

[总结]-第三章 垃圾收集器与内存分配策略

梦想的初衷 提交于 2020-04-10 00:54:47
[总结]-第三章 垃圾收集器与内存分配策略 一、知识点 1、对象是否存活的判定 引用计数法 可达性分析(GC Roots) 判定对象死亡需要经过2次标记: 第一次标记:可达性分析后没有与GC Roots相连接的引用链。 第二次标记:GC对F-Queue中的对象进行标记(低优先级的Finalizer线程会去执行F-Queue中对象的finalize()方法) 2、引用分类 强引用(Strong Reference) 主要强引用还在,则垃圾收集器不会回收被引用的对象。 软引用(Soft Reference) 内存不足即将OOM时,回收。比如:缓存数据。 弱引用(Weak Reference) 只要gc就回收。 虚引用(Phantom Reference) 可以判断被关联的对象是否被GC 3、finalize( ) 任何一个对象的finalize()方法都只会被系统自动调用一次。(注意是对象,并不是类); finalize()如果耗时过长,GC并不会等待。它只是通知另一个线程(Finalizer)去执行而已; 知道即可,不建议使用; 4、垃圾收集算法 引用计数器 优点:实时性,只要对象的引用计数器为0,立刻回收; 缺点:互相引用就永远无法去除。 标记、清除 (一般在老年代适用) 标记:找到所有可访问的对象,做个标记; 清除:遍历堆,把未标记的对象清除; 缺点:1、标记、清除效率都低;2

攻防世界 ics-02 writeup 学习

牧云@^-^@ 提交于 2020-04-07 09:56:02
攻防世界 ics-02 writeup 学习 emmm因为ssrf是对.pdf文件的下载,访问页面不出来的原因,有很大的烦躁,学习了一下writeup。小白一个,那就对注入Poc学习一下吧。 本地sql测试 因为是插入数据的注入,拿了一个表测试,很蠢的照着poc试了一下,非常蠢.. l_name 显示为0....因为poc中的+是python 字符串的连接字符 直接加括号就好了 那么再试试错位到回显位置注入 实战注入测试 1.给txtfirst_name添加单引号 报错'm','y','Esq.','01/10/2019','9786571')' 存在注入 2.猜测sql语句 Inset into XXX values(XX,XX,XX,XX) 3.猜测 insert in to xxx values('1',(database()),/*,'m'*/,'y','Esq.','01/10/2019','9786571')' 注入sql语句为 1',(database()),/*,'m'*/,' 4.由于忘了看回显位置为<p><b>Name: </b>,'y, 1<br />所以调整sql,由txtLast_name来回显 5.newpoc insert in to xxx values('1','m',(database()),/*,'m','y'*/,'Esq.','01/10

frp内网穿透基本用法服务搭建

大憨熊 提交于 2020-04-06 23:53:33
frp内网穿透基本用法服务搭建过程记录 内网穿透工具很多,大多需要付费,方式也有多种。frp开源,稳定 一、准备材料 A.主机,需有公网IP。aws,阿里云都可以,我是用aws。使用aws注意及时释放不用的服务或资源,防止被扣费 B.域名, www.xxx.top C.本地内网机器,工作用64bit win10笔记本 D.frp,下载地址https://github.com/fatedier/frp/releases,下载系统相应版本的程序 E.准备发布的服务程序, mywechat 二、域名解析 已有域名添加解析绑定主机IP如图 三、frp配置 解压frp,目录如下,我的主机是64bit Windows Server2008 服务端配置 frps_full.ini [common] bind_addr = 0.0.0.0 bind_port = 7000 vhost_http_port = 80 vhost_https_port = 443 privilege_token = 123456 subdomain_host = www.xxx.top 其它配置项使用默认配置,完成启动frps,生成frps.log,查看log是否启动成功 浏览器中访问http://xx.xx.xx.xx:7500显示dashboard概况 客户端配置 frpc_full.ini [common]

从输入页面地址到展示页面信息都发生了些什么?

﹥>﹥吖頭↗ 提交于 2020-04-06 19:32:40
很久以前理解过一个URL从在浏览器地址栏输入,到呈现页面都发生了什么。前两天碰到一个nginx反向代理的问题,又回想起这个流程,我想是对这个流程理解的还不够透彻,所以特意抽出时间来总结一下。 废话不多说先上图 一个URL从在浏览器地址栏输入,到呈现页面经历了: DNS解析,查找域名服务器 TCP三次握手 发送http请求 nginx反向代理 servlet处理请求,返回http请求信息 关闭TCP连接,四次挥手 浏览器根据返回内容渲染页面 DNS解析 DNS解析就是使用你输入的域名:www.kaola.com 去定位真正的ip地址 DNS解析是一个递归查询的过程,具体步骤如下图 本地域名服务器查找有没有www.kaola.com所对应的ip 本地服务器未查找到,则去根域名服务器查找 根域名服务器未找到相应ip,会返回一级域名服务器地址 查找一级域名服务器 一级域名服务器未找到相应ip,返回二级域名服务器地址 查找二级域名服务器 二级域名服务器查看本地name.conf,是否有www主机的记录 查到www主机的记录,返回www主机的ip到二级域名服务器 返回ip到本地域名服务器 返回ip到浏览器 **第9步,本地域名服务器拿到ip以后,会存入本地DNS缓存。 DNS优化 DNS缓存: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存

myeclipse修改内存大小不足tomcat内存不足

有些话、适合烂在心里 提交于 2020-04-06 18:35:33
myeclipse修改内存大小不足 打开Windows-> Preferences -> Java->Installed JREs 点击右侧的jdk,然后点击“Edit”按钮 Default VM Arguments文本框中输入:-Xms64m -Xmx256m ,然后点击finish按钮即可 修改MyEclipse的myeclipse.ini 文件 找到MyEclipse的安装目录,一般如果不修改的话默认为C:\MyEclipse10.1\Genuitec\MyEclipse 10.1有一个myeclipse.ini配置文件,设置如下: -vmargs -Xmx512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m 设置tomcat的内存大小 打开Windows-> Preferences -> Servers -> Tomcat -> Tomcat *.* -> JDK 在文本框中输入: -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m 来源: https://www.cnblogs.com/luxd/p/5984219.html