chrome控制台如何把vw显示成px_你可能不知道的chrome调试技巧

32e6f8d50e8a9ce3f35085d3a612514d.png

本文是对常用的chrome调试技巧进行总结整理,如果你没有深入了解过chrome调试工具,此处总有你不知道的惊喜!

从 Chrome 说起

对于大部分人来说,Chrome 可能只是个浏览器,但是对于开发人员来说,它更是一个强大无比的工具,为了方便开发人员调试代码,主流的浏览器都内置了 DevTools, 所以无论你是前端还是后端,掌握 Chrome 的调试技巧意味着效率直接的提高。

打开Chrome 开发者工具

  1. 在Chrome菜单中选择 更多工具 > 开发者工具
  2. 在页面元素上右键点击,选择 " 检查"。
  3. 使用快捷键 Ctrl+Shift+I (Windows) 或者 Cmd+Opt+I (Mac)

移动端模式特点

1.预设了常用设备尺寸

2.可添加自定义设备。可以设置设备名称,宽度,高度,设备像素比和用户代理字符串

【Device pixel ratio(设备像素比)(DPR)是逻辑像素和物理像素之间的比率】。

3.切换模拟设备的横向和纵向

4.模拟传感器:地理位置和加速度。

八大面板

315ac643ce9124612c61100f3420eabe.png

本文主要对常用的前面4大面板进行总结。

Elements(元素面板)

添加/启用/禁用CSS 类

有时候我们为页面元素添加一些动态的样式,比如当鼠标悬停在元素上时的样式,这种动态样式很难调试。我们可以使用Force Element State 强制元素状态,便于调试。

26202ad95ecd78d6238c96b959131275.png

列如::link 、:visited 、:active、:hover等动态样式。

编辑DOM节点和其子节点的HTML:

bd0d01e46b6e2bccc81488b0ade44ed6.png
  1. 右键->edit as HTML

按F2(Windows / Linux) 或Fn+F2(Mac) 编辑。

  1. Ctrl+Enter(Windows / Linux) Cmd+Enter(Mac) 来保存更改(注,一般情况下,直接按Enter就可以了)。
  2. 按Esc退出编辑器而不保存更改。

滚动到视图

当您将鼠标悬停在或选中一个DOM节点时,渲染的节点在视口中会被突出显示。如果节点被滚动到屏幕之外,如果该节点在当前视口上方,您将在视口顶部看到一个提示条,如果该节点在当前视口下方,则在底部具有一个提示条。

要滚动页面使节点在视口中显示,请 右键点击 节点并选择 Scroll into View

设置DOM断点

在以下DOM更改都会触发断点:子树的变化,属性改变,节点删除 。

3b011455c707fd78896c3677a59f8859.png

Subtree Modifications 子树修改

当子元素被添加,删除或移动时,会触发Subtree Modifications(子树修改)断点

例如,如果在main-content元素上设置一个Subtree Modifications(子树修改)断点,以下代码会触发该断点。

栗子:

var element = document.getElementById('main-content');
//modify the element's subtree.
var mySpan = document.createElement('span'); element.appendChild( mySpan );

04297a0e80d6a50f0d8689847803b287.png

Attribute Modifications 属性修改时

当一个元素(类,id,name)的属性动态改变时,会触发Attribute Modifications(属性修改)断点:

栗子:

var element = document.getElementById('main-content');
// class attribute of element has been modified.
element.className = 'active';

Node Removal 节点移除

当一个节点从DOM中删除时,会触发Node Removal(节点移除)断点:

document.getElementById('main-content').remove();

Console(控制台面板)

想要直接要打开专用的控制台面板,请执行以下之一操作:

按Ctrl+Shift+J(Windows / Linux)或Cmd+Opt+J(Mac)。

要在任何其他面板打开控制台抽屉式窗格,请执行以下之一操作: 1.在 DevTools 获取焦点时 按Esc键

  1. 点击Customize and control DevTools(自定义并控制DevTools,也叫开发者工具主菜单)按钮,然后选择Show console(显示控制?)

9f3cd7629bedfa9fc21ab8a251919990.png

fa6c1cd1c156cc77103b5de173271322.png

清除控制台历史信息

您可以通过执行以下任一操作来清除 Console (控制台)的历史记录: 1)在Console(控制台)中右键单击,然后选择 Clear console (控制台)。

  1. 在控制台中键入clear()。在JavaScript代码中调用console.clear()。
  2. 使用快捷键 Ctrl+L (Mac,Windows,Linux)。

保留历史记录

勾选Console(控制台)顶部的 Preserve log (保留日志)复选框,可以在 页面刷新 页面跳转 时保留控制台历史记录。信息将被存储,直到你清除Console(控制台)信息或关闭tab 页。

选择执行上下文

在下面的截图中以蓝色高亮显示的下拉菜单被称为**Execution Context Selector(**执行上下文选择器)。

47d36343b7d0d47af0ae036d5cd786a0.png

默认上下文设置为 top(页面的顶部框架)

其他框架和扩展在其自己的上下文中起作用。要使用这些其他上下文,需要从下拉菜单中选择它们。

例如,如果您想查看<iframe>元素中的日志输出并修改该上下文中存在的变量,您需要在Execution Context Selector(执行上下文选择器) 下拉菜单中选择它。

411d572bfed4c3eef9b3b13d8556a40b.png

console 中的 $

  1. 在 Chrome 的 Elements 面板中,$0 是对我们当前选中的 html 节点的引用

理所当然,$1 是对上一次我们选择的节点的引用,$2 是对在那之前选择的节点的引用, 等等。一直到 $4

619bdb4d88c05d268a5aae61ecc005ae.png

你可以尝试一些相关操作(例如: $1.appendChild($0)) 2.$_ 是对上次执行的结果的 引用

附加设置

ca3e904eed1df6bfc78bc2ff0cfaac66.png

console函数

0c2c3fdad3bf556e8ecbac69c172b806.png

栗子:

console.log("=======START我是分割线=======")console.log("我是console.assert函数")// 如果断言为 false,则在信息到控制台输出错误信息。console.assert(document.getElementById("demo"), "没有 ID 为 'demo' 的元素");console.log("=======我是分割线=======")console.log("我是console.count函数")// 记录标签为sela的计数器console.count("Sela 计数器");for (i = 0; i < 10; i++) {console.count(); // 记录 count() 调用次数}console.count('Sela 计数器');console.log("=======我是分割线=======")console.log("我是console.group函数")console.group("SelaGroup");console.log("我在指定标签分组里。");console.groupEnd("SelaGroup");console.log("=======我是分割线=======")console.log("我是console.table函数")console.table(location)console.log("=======我是分割线=======")console.log("我是console.time函数")console.time("Sela 计时器");for (i = 0; i < 100000; i++) {// 代码部分}console.timeEnd("Sela 计时器");console.log("=======OVER我是分割线=======")

ddb30d2b928dcc019fd05d1d0780bb68.png

Sources(源代码面板)

条件断点:

指定的条件为 true 时,才会触发条件断点。

无断点:右键点击**Add conditional breakpoint(添加条件断点)**来创建一个条件断点。有断点:希望使断点有条件,右键单击该断点,点击Edit breakpoint(编辑断点)。

在文本字段中输入你的条件,并按Enter键。

d7e497e14ed9b26ed07a029695aa53e6.png

156f30704276652ad52b967a7c6e4d1a.png

条件断点是金黄色的。

在XHR上中断

有两种方法可以触发XHR上的断点: 1.当任何XHR到达XHR生命周期的某个阶段时(readystatechange,load等) 2.当XHR的URL与某个字符串匹配时。

f17ff151a8c83c0a60f485ff058065d5.png

c580c13fe4449ca51baeaf5fa9044a59.png

当一个事件触发时中断

使用Sources(源文件)面板上的Event Listener Breakpoints(事件侦听器断点) 窗格中断

【当某事件(例如,click(点击))或事件类别(例如,任何mouse(鼠标)事件)被触发时】。

bfd040b6abde6653da70a2253297293a.png

在未捕获的异常上中断

如果你的代码抛出异常,你不知道他们来自哪里,点击Sources(源文件)面板上的pause on exception(在异常上暂停)按钮(

07ab1675b456929b3da24b372d2df00a.png

)。

9786a031fbf36c6aefd3c312349ed22b.png

DevTools在抛出异常的行自动中断。

如何调试混淆代码:

JavaScript Source Map 详解

简单说,Source map就是一个信息文件,里面储存着位置信息。也就是说,转换后的代码的每一个位置,所对应的转换前的位置。

打开混淆代码,右键 Add source map ...

85294b7650c3bb95aaac17ef7486c908.png

Network(网络面板)

过滤请求

Network(网络)面板提供了许多方法来过滤显示哪些资源。点击filters(过滤器)按钮以隐藏或显示Filters(过滤器)窗格。

注意: 按住Cmd(Mac) 或者Ctrl(Windows/Linux) ,然后点击过滤器可以同时启用多个过滤器。

73fb0ab0323a59d5a8fd189d163bd997.png

filter(过滤器)文本字段输入框:

1)输入字符串:筛选只显示资源名字和它匹配的请求。

cf56282056f8943ba3589c7a8110a68b.png

2)各类关键字:

下面的列表描述了所有关键字。

domain(域) : 仅显示来自指定域的资源。您可以使用通配符()来包括多个域。例如,.com显示以.com结尾的所有域名中的资源。 DevTools会在自动完成下拉菜单中自动填充它遇到的所有????

larger-than(大于): 显示大于指定大小的资源(以字节为单位)。设置值1000等效于设置值1k。

method(方法) : 显示通过指定的HTTP方法类型检索的资源。DevTools使用它遇到的所有HTTP方法填充下拉列表。

mime-type(mime类型) : 显示指定MIME类型的资源。 DevTools使用它遇到的所有MIME类型填充下拉列表。

status-code(状态码) : 仅显示其HTTP状态代码与指定代码匹配的资源。

scheme(协议) : 显示通过不受保护的HTTP(scheme:http)或受保护的HTTPS(scheme:https)检索的资源。

mixed-content(混合内容) 【在使用https的页面引入了http的内容】: 显示所有混合内容资源(mixed-content:all)或仅显示当前显示的内容(mixed-content:displayed)。

bdbeed838d09cf6cd226f9cc77d06bf5.png

9edaee63e70dc17e210df7663036940a.png

复制,保存和清除网络信息

某个请求列表右键单击:

Copy Response(复制响应) : 将所选资源的HTTP响应复制到系统剪贴板。

Copy as cURL(复制为cURL): 将所选资源的网络请求作为cURL命令字符串复制到系统剪贴板。 请参阅将复制请求为cURL命令。

Open Link in New Tab(在新标签页中打开链接) : 在新标签页中打开所选资源。您还可以在Requests Table(请求列表)中双击资源名称。

Replay XHR(重新发送XHR) : 重发请求,方便测试当前请求环境中模拟重发请求测试cgi的情况。仅显示在XHR资源上。

Block requests URL: network 面板右击请求即可看到 block 选项,这个选项能够使我们在请求和域的级别上打断点。 方便调试服务异常等情况。

跳转时保留网络日志

默认情况下,只要重新加载当前页面或加载不同的页面,就会丢弃网络活动记录。勾选Preserve log (保留日志)复选框可以在这些情况下保留网络日志。新记录附加在Requests Table(请求列表)的底部。

骚操作:

copying & saving

1. copy(...)

你可以通过全局的方法 copy() 在 console 里 copy 任何你能拿到的资源。例如 copy($_) 或 copy($0)

c28c73a34ae1779cefd1d7d87e47e8b8.png

Store as global (存储为一个全局变量)

如果你在 console 中打印了一堆数据 (例如你在 App 中计算出来的一个数组) ,然后你想对这些数据做一些额外的操作比如我们刚刚说的 copy (在不影响它原来值的情况下) 。 那就可以将它转换成一个全局变量,只需要 右击 它,并选择 “Store as global variable” (保存为全局变量) 选项。

第一次使用的话,它会创建一个名为 temp1 的变量,第二次创建 temp2,第三次 ... 。通过使用这些变量来操作对应的数据,不用再担心影响到他们原来的值:

bbfba35c573c2d73cb0dfbc9fb87852c.png

保存堆栈信息( Stack trace )

7ff3f72068ae1c644dba91388a8c31fd.png

保存console 打印出来的堆栈跟踪的信息。

快捷键和通用技巧

能直接快速提升开发效率的方式是什么? 掌握快捷键

这里是一些我们在日常前端开发中,相当实用的快捷键:

切换 DevTools 窗口的展示布局

快捷键ctrl + shift + D (+ shift + D Mac) 来实现位置的切换。

Inspect Element(检查元素)快捷键

  1. Ctrl+Shift+C(Windows)或Cmd+Shift+C(Mac) 在检查元素模式下打开DevTools,然后将鼠标悬停在元素上。DevTools会在Elements(元素)面板中自动突出显示你鼠标悬停的元素。单击元素退出检查模式,同时保持元素在Elements(元素)面板中突出显示。
  2. 在控制台中使用 inspect 方法,如 inspect(document.body)。

打开chrome devtool工具:

使用快捷键 Ctrl+Shift+I (Windows) 或者 Cmd+Opt+I (Mac)。

4.切换设备模式

快捷键:Command+Shift+M(Mac) 或者Ctrl+Shift+M(Windows, Linux)

5.递增/递减

这个技巧,对调整样式是最有用的:数值类型的值,包括颜色。对调整高度/字号等尺寸很方便。

c73b175219be9be4502d128c9e5b64b0.png

6.打开console面版调试:

按Ctrl+Shift+J(Windows / Linux)或Cmd+Opt+J(Mac)。

使用 Command

在 Chrome 的调试打开的情况下 按下

33d3c76b60df344fa28c4fb6e1fef81b.png

[ Ctrl] + [Shift] + [P] (Mac: [⌘] + [Shift]+ [P] )

1.截屏的新姿势

1e5a9f824c53f33a374f06d68a19d4f7.png

4fc9751d16bef73207af9962b6523f55.png

2.快速切换面板

e76566f2c45fe883e06ef437ab2a6ffb.png

3.快速切换主题

这个时候 主题 就派上了用场了:在 Commands 菜单中寻找与 theme 相关的选项,实现 明亮 & 暗黑 两种主题之间的切换:

a6881ea353e2e1ebc9e6616263a073de.png

f7fde20f1384c1f696855c3fe5d4a382.png

快捷键:Ctrl + p

代码的覆盖率分析

coverage 面板:查看css和 js 代码的使用情况,点击单个文件可以查看详情,并且也是处于live 状态,页面发生变化时,覆盖率报告也会随之刷新。

右边菜单 more tools 或者通过快捷键ctrl + shift +p (windows) 输入coverage 即可打开 coverage。

作 用 : 1.移除没用的代码

2.懒加载代码(对于用户触发时加载的代码进行懒加载处理。

92dd3e0d56e7967a4e5f895902307ec7.png

代码块的使用

假如我想看每个页面的结构

javascript: (function() { var elements = document.body.getElementsByTagName('*'); var items = []; for (var i = 0; i < elements.length; i++) { if (elements[i].innerHTML.indexOf('html * { outline:
1px solid red }') != -1) { items.push(elements[i]); } } if (items.length > 0)
{ for (var i = 0; i <
items.length; i++) { items[i].innerHTML = ''; } } else { document.body.innerHTML +=
'<style>html * { outline: 1px solid red }</style>'; } })();

a1020fafabc3378664789305734beeac.png

Sources 面板,在导航栏里选中 Snippets 1.使用**[ctrl] + [enter]**运行。

2.ctrl+p 输入!,再根据名字筛选代码块执行。

696dda0e3bfc193a91426f587158d7e4.png

自定义json输出格式

0ad4f71fee5faa2fb07142404575e661.png

formatter 长什么样呢? 它是一个对象,最多包含三个方法: header : 处理如何展示在 console 的日志中的主要部分。hasbody : 如果你想显示一个用来展开对象的 ▶ 箭头,返回 true body : 定义将会被显示在展开部分的内容中。

49873e7e9d84e45740ed1295f8e6b2fe.png

一个基础的自定义 formatter

自定义后输出结果:

ef30f2d528da30f12c1dc70e3e410441.png

40a19bb0dffc199f7d632d86926f4f7a.png

当然还有更骚的

巧用chrome小书签

小书签又名 Bookmarklet,由英文单词 Bookmark 和 Applet 组合而来。简单地说,小书签就是把一段带有特定功能的 JavaScript 代码保存至收藏夹,当你需要的时候点击它来实现这段 JavaScript 代码的功能。

查看页面结构:

javascript: (function() { var elements = document.body.getElementsByTagName(&apos;*&apos;); var items =[]; for (var i = 0; i &lt; elements.length; i++) { if (elements[i].innerHTML.indexOf(&apos;html * { outline:
1px solid red }&apos;) != -1) { items.push(elements[i]); } } if (items.length &gt; 0) { for (var i = 0; i &lt;
items.length; i++) { items[i].innerHTML = &apos;&apos;; } } else { document.body.innerHTML +=
&apos;&lt;style&gt;html * { outline: 1px solid red }&lt;/style&gt;&apos;; }
})();

dc17d160ac1baf80a19efbac2918ebdd.png

生成二维码

javascript:window.open(&apos;https://api.qrserver.com/v1/create-qr-code/? size=300x300&amp;data=&apos; + decodeURIComponent(location.href));void(0);

打印script

javascript:var scriptarray=document.getElementsByTagName(&quot;script&quot;);for(scriptindex in scriptarray){console.log(scriptarray[scriptindex])};

参考文章:

Chrome 开发者工具中文文档

你不知道的 Chrome 调试技巧

Bookmarklet编写指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

前言&#xff1a;ARP协议是在链路层通讯中&#xff0c;已知目标IP地址,但是&#xff0c;仅有IP 地址是不够的&#xff0c;因为IP数据报必须封装成帧才能通过数据链路进行发送&#xff0c;而数据帧必须要有目的MAC地址&#xff0c;每一个网络设备在数据封装前都需要获取下一跳的…

操作系统文件系统

1 基本概念 1.1 文件系统和文件 1.1.1 简述 文件系统: 一种用于持久性存储的系统抽象 在存储器上: 组织, 控制, 导航, 访问和检索数据大多数计算机系统包含文件系统个人电脑, 服务器, 笔记本电脑ipod, Tivo/机顶盒, 手机/掌上电脑google可能是由一个文件系统构成的 文件: 文…

c++代码整洁之道pdf_别再问如何用python提取PDF内容了

作者&#xff1a;陈熹 来源&#xff1a;早起Python大家好&#xff0c;在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件&#xff0c;包括合并、拆分、水印、加密等操作。今天我们再次回到PDF&#xff0c;详细讲解如何使用python从PDF提取指定的信…

查看文章影响因子的插件_Scholarscope--在新版PubMed中实现基于影响因子的文献筛选...

小编之前介绍过如何在Pubmed上直接显示杂志影响因子的方法&#xff0c;这个方法主要是依托Scholarscope插件&#xff0c;其实除了显示影响因子&#xff0c;这个插件还可以帮助大家根据影响因子筛选文献哦&#xff0c;操作也很简单&#xff0c;只要生成自定义过滤器即可&#xf…

leetcode32 --- longestValidParentheses

1 题目 给你一个只包含 ( 和 ) 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 2 解法 2.1 动态规划方法 维护一个字符串长度的数组cur_max_len, 第i个元素代表以当前(或者)结束的最长有效括号的长度. 这样就会利用动态规划递推…

armitage识别不了漏洞_Shiro RememberMe 漏洞检测的探索之路

前言Shiro 是 Apache 旗下的一个用于权限管理的开源框架&#xff0c;提供开箱即用的身份验证、授权、密码套件和会话管理等功能。该框架在 2016 年报出了一个著名的漏洞——Shiro-550&#xff0c;即 RememberMe 反序列化漏洞。4年过去了&#xff0c;该漏洞不但没有沉没在漏洞的…

css响应式布局_用 CSS Grid 布局制作一个响应式柱状图

最新一段时间比较喜欢玩弄图表&#xff0c;出于好奇&#xff0c;我想找出比较好的用 CSS 制作图表的方案。开始学习网上开源图表库&#xff0c;它对我学习新的和不熟悉的前端技术很有帮助&#xff0c;比如这个&#xff1a;CSS Grid。今天和大家分享我学到的新知识&#xff1a;如…

vs code 插件_[VSCode插件开发] 由浅入深,带你了解如何打造百万级产品

去年&#xff0c;笔者有幸在微软技术暨生态大会上做了个演讲&#xff0c;主题是“从零开始开发一款属于你的 Visual Studio Code 插件”。演讲内容主要覆盖了VS Code插件开发的四个方面&#xff1a;设计、实现、推广和维护。作为一个开发者&#xff0c;我们往往会把大多数的时间…

leetcode45 --- jump

1 题目 给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 2 解法 2.1 从终点遍历的方法(时间复杂度)…

python怎么查看网页编码格式_怎么用python爬取网页文字?

用Python进行爬取网页文字的代码&#xff1a;#!/usr/bin/python# -*- coding: UTF-8 -*-import requestsimport re# 下载一个网页url htt用python进行爬取网页文字的代码&#xff1a;#!/usr/bin/python# -*- coding: UTF-8 -*-import requestsimport re# 下载一个网页url htt…

leetcode41 --- firstMissingPositive

1 题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 2 解法 最笨的方法是从1开始试, 看1在数组里面是否出现过, 2, 3, ....不过时间复杂度是. 2.1 hash 可以考虑…

计算机网络中的数据链路层

概述 结点: 主机, 路由器 链路: 网络中两个结点之间的物理通道, 链路的传输介质主要有双绞线, 光纤和微波, 分为有线链路和无线链路. 数据链路: 网络中两个结点之间的逻辑通道, 把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路. 帧: 链路层的协议数据单元…

jnativecpp.dll一定要放到系统目录下吗_电脑硬盘有必要分区吗,分几个区最好?...

购买电脑后&#xff0c;必不可少的一个步骤就是对电脑硬盘进行分区了&#xff0c;其实硬盘分区也是有讲究的&#xff0c;并不是随意分的&#xff0c;下面租物租就给大家介绍下电脑分区的知识。硬盘分区可以提高数据的安全&#xff0c;防止数据丢失&#xff0c;但是防止数据丢失…

数据结构中的树

1. 树 即是以层次化方式组织和存放数据的特定数据结构 边: 节点与节点之间的连线 根节点: 叶子节点: 度: 节点的度数即为其分叉数, 即其子节点个数. 整棵树的度数是所有节点中度数的最大值 节点深度: 根节点到该节点的唯一路径长(即边的数量) 树高: 所有节点中深度的最大…

排序算法 --- 堆排序

根据大顶堆的描述, 父节点的值始终大于子节点(如果有的话)的值, 再加上堆是完全二叉树, 可以用数组表示, 那么就可以用来进行排序. 具体做法就是, 对于随机排列的数组: 1. 首先将其构建成一个大顶堆, 根据堆的性质, 此时堆顶就是最大值. 2. 把堆顶元素与数组最后一个元素进行…

数据结构中的树 --- 红黑树

红黑树是一种几近平衡的二叉搜索树, 但不是AVL树. 1 红黑树的一些特殊性质 1. 每个节点皆为红色或者黑色。 2. 根节点是黑色。 3. 每个叶子节点&#xff08;NIL&#xff09;是黑色(注意, 每个叶子节点必须都为空节点, 也就是指针为nullptr, 无key值)。 4. 每个红色结点的两…

c++数据结构中 顺序队列的队首队尾_数据结构与算法—队列详解

前言栈和队列是一对好兄弟&#xff0c;前面我们介绍过数据结构与算法—栈详解&#xff0c;那么栈的机制相对简单&#xff0c;后入先出&#xff0c;就像进入一个狭小的山洞&#xff0c;山洞只有一个出口&#xff0c;只能后进先出(在外面的先出去)。而队列就好比是一个隧道&#…

phpstudy apache无法启动_phpstudy和wamp哪个好

刚刚接触php的同学会想知道phpstudy和wamp的区别有哪些&#xff1f;phpstudy和wamp哪个好&#xff1f;下面我们来总结一下。一&#xff1a;phpstudy好还是wamp好php的运行环境配置对于新手都是一件比较困难的事情&#xff0c;但是对于高手配置是一件繁琐的事情&#xff0c;个人…

哈夫曼树(最优二叉树)

1 用途 现在假如有一个需求, 把一个很长的字符串用二进制编码的形式存储, 要尽可能的占用较小空间, 那么应该怎么存储呢. 肯定是要确定每个字母的编码方法, 比如 001是A, 010是B等. 那么要怎么确定每个字符编成什么二进制码从而使得总长度最短? 一个根本思想是, 出现频率高的…

visual studio无法更新_VS Code Python 扩展 5 月更新

(给Python编程开发加星标&#xff0c;提升编程技能.)12 号&#xff0c;微软在官方博客发布了 VS Code 编辑器中 Python 扩展的 5 月更新&#xff0c;其中只有一个较为重要的特性&#xff1a;新增了浏览选择 Python 解释器的能力。增加这个功能&#xff0c;主要是为了让选择或变…