首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

放弃 console.log 吧!用 Debugger 你能读懂各种源码

这篇文章就来讲一下为什么要用这些调试工具: console.log vs Debugger 相信绝大多数同学使用 console.log 调试的,把想看的变量值打印在控制台。...比如我想看 webpack 源码里的 compilation 对象的值,我打印了一下: 但你会发现对象的值也是对象的时候不会展开,而是打印一个 [Object] [Array] 这种字符串。...更致命的是打印的太长会超过缓冲区的大小,terminal 里会显示不全: 而你用 debugger 来跑,在这里打个断点来看就没这些问题了: 有的同学可能会说,那打印一个简单的值的时候用 console.log...而且在排查问题的时候,用 Debugger 的话可以加一个异常断点,代码跑到抛异常的地方就会断住: 可以看到调用栈来理清出错前都走了哪些代码,可以通过作用域来看到每一个变量的值。...每一行代码都能读懂,而全部的代码不就是由这一行行代码组成的么? 加上我们可以单步执行来知道代码执行路径。 为啥每行代码都能读懂,连起来就读不懂了呢? 那应该是代码太多了,而你花的时间不够而已。

1K70

Andorid-ListView简单使用以及BaseAdapter入门

之后每绘制一个Item就会调用一次getView方法,在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。...简单地说,Android允许将一个long类型的数据附加到任何ListView对象的元素上,对,这是附加的,实际上你可以选择忽略此值。...当你选择一个ListView所存的元素时,适配器可以提供给我三个有关的特性值: 一个元素对象自身的引用 此元素在ArrayList所存的下标索引position 返回此元素上所附着的long类型值 实际上这三个特性值分别对应我们需要重写...Item的显示内容,每有一行Adapter对象都需要通过此方法向ListView传递控件的属性以及资源的取值 * * */ @Override public...View getView(int position, View convertView, ViewGroup parent) { //通过infalte方法返回ListView对象每一行的布局

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    日历组件的开发思路讲解&&日历组件在实际工作中的使用方式

    现在大家在自己电脑上打开“20161120_日历.html”,这个文件在QQ群的文件共享里。...从刚才的for for例子可以看出,这个例子的外层的for循环是画每一行,内层的for循环的是每一行里的每一列,其实就是每一个格。...它的特征是列数固定,一周七天,所以下一行的数字,总是外层for循环中i的值乘7,再加上内层for循环K的值。这样每下一行的数字都是在前一或几行的数字基础再加。而不会重头计起。...为什么日历讲这么多呢,你看这里都没有讲什么React。因为它在我个人主观看来,是真正的在操作对象和数据。对象就是Date()日期对象,数据嘛,如果我们传入一些东西,就有数据了。...============ 再跟大家讲一下,在实际的工作中,我们需要手动的去写日历的工作场景,实际上并不多见。那为什么还要让大家来学习日历呢? 盖因为呀,日历确实就是非常非常的常用的一个组件。

    2.7K100

    用is探索python的隐藏机制

    莱布尼茨说过:“世界上没有两片完全相同的叶子”,这个is正是这样的比较,比较是不是同一片叶子(即比较的id是否相同,这id类似于人的身份证标识)。...image.png 为什么这个函数执行到第一个return的时候没有退出?为什么会执行剩下的语句?为什么最后显示的finally?...而257并没有预先创建好,每一行的代码在解释器里面又是单独优化的,所以写b=257的时候解释器不知道已经有了一个257,于是又新建了一个257,因此他们俩指向不同的object。...最后一个例子在同一行的时候,同时给a b赋值为257的时候,解释器优化知道这点,就只创建了一个257,所以a is b又是True了。 这试试你会说好像我做过,没发现这种异常啊。...image.png 这称之为哈希冲突, Python字典检查相等性并比较哈希值以确定两个键是否相同。 具有相同值的不可变对象在Python中始终具有相同的哈希值。

    46910

    count(*)慢,该怎么办?

    每一行记录都要判断自己是否对这个会话可见,因此对于 count(*) 请求来说,InnoDB 只好把数据一行一行地读出依次判断,可见的行才能够用于计算“基于这个查询”的表的总行数。...你可能还记得在第 10 篇文章《 MySQL 为什么有时候会选错索引?》中我提到过,索引统计的值是通过采样来估算的。实际上,TABLE_ROWS 就是从这个采样估算得来的,因此它也很不准。...这个表每被插入一行 Redis 计数就加 1,每被删除一行 Redis 计数就减 1。这种方式下,读和更新操作都很快,但你再想一下这种方式存在什么问题吗?没错,缓存系统可能会丢失更新。...但实际上,将计数保存在缓存系统中的方式,还不只是丢失更新的问题。即使 Redis 正常工作,这个值还是逻辑上不精确的。...对于 count(主键 id) 来说,InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。

    29900

    【Android】TextView的文字长度测量及各种padding解析

    10.png getExtendedPaddingTop():这个是当有部分文字没有显示出来时,也就是设置了maxLine时,它的值就等于首行文字到TextView顶端的距离。...A:看需求吧,我觉得通常情况下都是只需要计算显示在屏幕上的可见区域的每行文字的长度即可。还有那么一种需求,当设置了溢出内容用...表示时,那么其实每行文字的实际长度就不止可见区域那么长了。...单单根据上一部分里的各种Padding值肯定不够,根据各种Padding顶多计算出文字区域的宽度,但实际上每一行文字并不会那么刚刚好占满文字区域的宽度,那么就还得借助其他来进行计算。...15.png 但这种方法只是测试传入的text在该TextView的配置下的总长度,并不是计算每一行的长度。...如果是maxLines="1"的话,那么就像上一问中分析的那样,所有的文字其实已经被自动换行了,只显示第一行,而换行是什么,就是为了让每行文字的长度超过文字区域的宽度才进行的换行,也就是说,如果一段文字经过

    4K70

    面试官:CSS 面试题集锦

    2、为什么是用集合主要也还是效率。基于 CSS Rule 数量远远小于元素数量的假设和索引的运用, 遍历每一条 CSS Rule 通过集合筛选,比遍历每一个元素再遍历每一条 Rule 匹配要快得多。...display:inline inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。...display:inline-block 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。...当为对象设置固定定位后,该对象即处于浏览器窗口画面中的固定位置,无视文档长短、窗口大小和滚条滚动。这常见于有时打开一些网页总会有广告在侧边,太烦人了!...5.选择加载css 为什么提倡使用 translate() 而非 不是 absolute? translate()是transform的一个值。

    3.3K30

    MySQL实战第十四讲-count(*)这么慢,我该怎么办?

    每一行记录都要判断自己是否对这个会话可见,因此对于 count(*) 请求来说,InnoDB 只好把数据一行一行地读出依次判断,可见的行才能够用于计算“基于这个查询”的表的总行数。...你可能还记得在第 10 篇文章《MySQL深入学习第十篇-MySQL为什么有时候会选错索引?》中我提到过,索引统计的值是通过采样来估算的。...这个表每被插入一行 Redis 计数就加 1,每被删除一行 Redis 计数就减 1。这种方式下,读和更新操作都很快,但你再想一下这种方式存在什么问题吗? 没错,缓存系统可能会丢失更新。...但实际上,将计数保存在缓存系统中的方式,还不只是丢失更新的问题。即使 Redis 正常工作,这个值还是逻辑上不精确的。...对于 count(主键 id) 来说:InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。

    1.7K10

    MySQL深入学习第十四篇-count(*)这么慢,我该怎么办?

    每一行记录都要判断自己是否对这个会话可见,因此对于 count(*) 请求来说,InnoDB 只好把数据一行一行地读出依次判断,可见的行才能够用于计算“基于这个查询”的表的总行数。...你可能还记得在第 10 篇文章《MySQL深入学习第十篇-MySQL为什么有时候会选错索引?》中我提到过,索引统计的值是通过采样来估算的。...这个表每被插入一行 Redis 计数就加 1,每被删除一行 Redis 计数就减 1。这种方式下,读和更新操作都很快,但你再想一下这种方式存在什么问题吗? 没错,缓存系统可能会丢失更新。...但实际上,将计数保存在缓存系统中的方式,还不只是丢失更新的问题。即使 Redis 正常工作,这个值还是逻辑上不精确的。...对于 count(主键 id) 来说:InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。

    1.9K10

    Andriod基础——Adapter类

    默认情况下,ArrayAdapter绑定每个对象的toString值到在layout中预先定义的TextView控件上。...指定一个XML layout定义,然后将数据集中的每一列的值绑定到layout中的一个View上。 ...,系统首先调用getCount()函数,根据他的返回值得到listView的长度(这也是为什么在开始的第一张图特别的标出列表长度),然后根据这个长度,调用getView()逐一绘制每一行。...系统在绘制列表的每一行的时候将调用此方法。getView()有三个参数,position表示将显示的是第几行,covertView是从布局文件中inflate来的布局。...在实际的运行过程中会发现listView的每一行没有焦点了,这是因为Button抢夺了listView的焦点,只要布局文件中将Button设置为没有焦点就OK了。 效果如下: ? ?

    1.7K50

    MySQL战记:Count( *)实现之谜与计数策略的选择

    count(*) 的实现方式在不同的 MySQL 引擎中,count() 有不同的实现方式,这里讨论的是没有过滤条件的 count()。...每一行记录都要判断自己是否对这个会话可见,因此对于 count(*) 请求来说,InnoDB 只好把数据一行一行地读出依次判断,可见的行才能够用于计算“基于这个查询”的表的总行数。...对于 count(主键 id) 来说,InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。...这个表每被插入一行 Redis 计数就加 1,每被删除一行 Redis 计数就减 1。这种方式下,读和更新操作都很快,但你再想一下这种方式存在什么问题吗?没错,缓存系统可能会丢失更新。...但实际上,将计数保存在缓存系统中的方式,还不只是丢失更新的问题。即使 Redis 正常工作,这个值还是逻辑上不精确的。

    9510

    AndroidTv Home界面实现原理(二)——Leanback 库的主页卡位缩放动画源码解析

    效果图.png 上一篇中,我们留了问题,在 Tv Home 界面这种很常见聚焦卡位放大动画效果,我们这一篇就来看看 Leanback 库是怎么实现的。...在上一篇博客里,可以看到,我们跟 Leanback 库打交道的也就是下面这几个类: ArrayObjectAdapter:作用类似于 List,装填着整个页面的数据,页面数据其实是分两级,以行为单位和以每一行中的...ListRow:可以理解成一个 Mode,也就是把每一行抽象封装成一个 ListRow BrowerFragment:用来展示可左右上下滑动的视频列表界面,Leanback 已高度封装,我们只需提供一个页面的...Presenter 将界面显示出来。...FocusHighlightHelper#setupBrowseItemFocusHighlight() -> ItemBridgeAdapter#setFocusHighlight() 简单点说就是,当每一行的

    1.7K70

    一起来做一个json格式化工具吧

    开始和结束的括号可以用div来包裹,中间的整体部分也用一个div来包裹,并且给它设置margin来实现缩进,具体到每一行的属性和值,可以通过div包裹span标签。...可以看到有几个小问题,一是空对象的两个括号其实是不需要换行的,二是值是非空对象的开始括号应该和key显示在同一行,三是对象中的最后一个逗号是不需要的。...'' : ','}` } } 解决逗号重复的问题需要判断值是否是非空对象或数组,是的话就不显示逗号: const stringifyToHtml = (data...对象 str += `"${key}":` 到这里缩进就已经全部完成了,看一下效果: 高亮 紧接着让我们来完成高亮的效果,没有高亮还是比较丑的,高亮很简单,因为上一步我们已经用...要能折叠,肯定得有个折叠按钮,按钮一般有两种位置,一是紧挨着对象或数组的括号前面,二是统一在每一行的最前面: 小孩子才做选择,我们全都要,先来实现第一种。

    43710

    手把手教你使用Python语言的Pygame绘制动图

    我们在每个圆的圆周上绘制circle对象,不过这个circle是实心的,半径仅为几个像素。问题来了,我们知道了每个圆的圆心坐标为(x,y),怎么确定圆周上点的坐标呢?这就用到三角函数了。...,并想想为什么。...在第二个pygame.draw.cirlce下增加一行,注意缩进与for x in xs:相同: angle += 0.2 我们让程序每刷新一次,角度增加0.2。...Peek 2019-08-08 21-26.gif 貌似还不错,但没有期望的波浪的效果。要想得到那种效果,需要每一行的点的位置有轻微的差别,我们需要为每一行圆周上的点设置不同的起始角度。...angles字典变量,用于存储每一行(对,每一行,因为每一行的y值相同)的角度,而每一行的角度比上一行多0.5。

    2.1K20

    图形解读系列 | 给你5个示例,你能看懂常用热图使用吗?

    线性映射是每个值都对应一个颜色,区间映射是把数值划分为不同的区间块,每个区间块的所有数字采用同一个颜色显示。两者没有优劣好坏之分,具体使用取决于展示意图。 ?...从横轴的注释和标记可以看出,每一列对应于采样时水稻在田地里的生长天数; 从纵轴的文字可以看出,每一行是一种关注的菌。 每个框的颜色代表对应菌群在对应采样时间的丰度信息。...每一列代表一种菌,每一行是一个临床检测指标。 蓝色是负相关,红色是正相关。 写文章时就可以看图说话,解释为什么一些菌跟一些指标正相关,跟其他指标负相关,其潜在生物影响和意义是什么。...热图中每一行代表一个富集的GO条目,每一列为一种癌症样品; 颜色表示标准化富集分数(normalized enrichment score)(也可以展示表示富集显著性的FDR值)。...热图绘制需要的数据与最后呈现的热图一般是一致的,数据中每一行对应于热图中每一行,数据中每一列对应于热图每一列。如果做了聚类分析,顺序可能会变。 无需写代码即刻绘制热图 ?

    7.1K31

    TabTransformer:用于表格数据的Transformer

    在某种意义上,分类表数据是一种超结构化的语言子集。 假设每一行都是一个“句子”,每一列值都是一个“单词”或一个标记。从语言到表格数据的额外约束如下: 这些句子都是固定长度的:每一行都有相同数量的列。...在每个位置,一个单词可以采用的值都是固定的,并且每个单词的取值都不同:每个单词都是一个分类特征。使用常规语言,您可以在字典中的所有单词之间进行选择,甚至可以根据需要创建新的单词。 ?...这也解释了为什么递归神经网络(RNN)不能很好地处理表格数据。RNNs本身就使用令牌的顺序性和位置。 下图显示了TabTransformer的模型架构: ?...因此,我们都同意至少在表格数据上尝试Transformers是有意义的。现在让我们看看它们与其他表格数据模型的比较情况。...处理缺失和嘈杂的数据 transformers的最后一个优点是,它们在处理缺失和嘈杂的特征方面表现出色。这些来自TabTransformer的图表显示了MLP和transformers之间的比较。

    1.7K41

    阅读圣经丨测试上下文理解

    销售额 = SUM ( '示例'[销售价] ) A、销售额所在的每一行的数字都不一样。 B、销售额所在的每一行数字都一样。 C、公式报错;无法显示,因为计算列不允许使用SUM函数。...没有的话可以在这里停留一下。 ... 问题二: 在度量值界面编写下面代码,不嵌套任何聚合函数,结果是什么?...[1240] 问题一的答案: B、每一行的数字都显示的一样。 解析: 因为SUM本身是一个聚合类的函数,它本身的聚合只是针对表中的某一列,唯一影响它计算结果的是筛选上下文。...就像在表格中我们不选择某一对象,那么默认无筛选,就会显示所有结果的汇总一样,所以这里呈现的结果是每一行都相同。 与SUM函数类似的还有MIN、MAX等基本聚合类函数。...度量值不像计算列一样,计算列会依据左边的列,逐行的匹配值,进行相关的结果计算,说白了就是自带行上下文。在题二的度量值中,每一行都有不同的数字,没有对它进行上下文设定,度量值就懵了!

    91540
    领券