A

选了一道困难题,两个有序数组得中位数

image.png

  • 首先其实是不明白什么是中位数…
    • 也不瞎解释了,看代码现在很清楚,大概就是如果样本是单数个,那其实就是最中间那个值,如果是偶数个,那么是最中间的两个数/2
    • 但其实是瞄了一眼官方题解才明白大概其含义,当然也结合了维基百科
  • 其次就是这个结果也太次了,超越5%得意思就是渣好么
    • 然后就又瞄了一下2ms得一个答案,其实没有完全看懂,但是大概猜了一下,如果两个数组倾斜的时候,应该是不用还一个一个数到另一个队尾得
    • 还有一个就是其实也不用实际赋值,只需要找出奇数时候得那个中位数,或者偶数时候那两个数在两个数组中的位置即可,这样内存应该也有节省
  • 最后就是第一次提交还出错了,是自己的测试覆盖不够,num2得地方写成nums1没测出来
    • 其实提交前仅就题目说明那两个case也调了有一阵子

至少这周早早把这个形式上完成了,上面发现的问题,完成ARTS形式再决定是当周补还是下周题,无论如何都是作弊啊,周拱一小卒,是不是太小了…

另外关于中位数,最好再看看这篇,因为有时候未必有原始数据,是分组频数,也有一套乱七八糟的方法算一下近似的中位数

R

继续找点乐子

先接前面把副歌断句部分列完整

I mal loutof salt
tears on running dry(这句挺正常啊)
Won(t) gi veyou wha tyou want Caus(e)I lookway too goo dtonight

这周没想到其他都完了,周三,第一次啊,虽然坐这个位子对面的大哥老震颤,好在我也可以震颤,并且貌似他也不经常在,还是方便啊,而且工作其实也没耽误,挺好

剩下的Salt得主副歌连读,晚上看看吧,哈哈,或者在那个app里面来做,做完了这里标记一下

second review?

概述,EclEmma和JaCoCo

  • JaCoCo这东西不太像大路货(有多少人真正关心非常细致的测试技术?),所以扫一遍官方文档也有必要
  • 也算卷帙浩繁了…
  • JaCoCo,应该就是Java Code Coverage得意思
  • jacoco.org这个网站其实是EclEmma得官网…和eclemma.org是一个东西image.png
    • 主页Overview也是介绍了EclEmma和JaCoCo得关系以及两者定位的不同
      • EclEmma从2.0开始就基于JaCoCo 这个library来构建
      • Eclipse当中得EclEmma用来提升开发者个人的效能得eclipse插件
      • 自动化构建过程中得覆盖率直接移交给JaCoCo得文档去解释了,怎么和其他工具链中得大佬们整合,直接给出了传送门
  • jacoco.org官网首页后面就都是说EclEmma了,所以到此为止,转战JaCoCo真正的烘培鸡

JaCoCo index

  • 首先是一句话概述:
    • JaCoCo 是一个免费的java代码覆盖率工具,他是EclEmma团队在多年的集成已存在的库得知识得基础上构建出来的
  • 然后是一个截图
    • 截图是一个典型的JaCoCo测试覆盖率得报告,是JaCoCo自己的
    • 有一些能猜出来,行数、方法数、类,以及分别有多少Missed了
    • 比较靠前的两个还有柱状条得是Missed Instructions和Missed Branches,这两个都有一个覆盖比率
    • 唯一一个猜不出来的是Cxty(其实Instructions是什么的东西也不知道)
    • 这个后面report之类的再看吧
  • 这一部分大致是这样的,截个图吧image.png

    Snapshot Builds

    image.png

    Jacoco得master分支自动的构建和发布。由于采用的是测试驱动方法论,所以每个构建都认为是完整功能得。查看change history,可以看到最近的特性和bug修复情况。当前JaCoCo实现SonarQube代码品质指标可以在SonarCloud.io上看到

    • 文档
    • 下载地址(Maven仓库)
    • 覆盖率报告

第一句就是吹了,后面写的也不能算不清楚,都是说的主干上的Snapshot得情况

  • documentation就是EclEmma Overview里面给出得JaCoCo文档地址,后面详述
  • Download是给了一个Snapshot包得下载地址,托管在oss.sonatype.org上;Maven Repository就是一些maven仓库的信息
  • Coverage Report就是上面那个图

顺便到sonarqube.io上看了下价格,每10w行代码10欧,public得库还免费,这,还要啥自行车…

Release Builds

各个正式版本的下载包地址

JaCoCo

我看到的是这样的,一屏显示还有点勉强
image.png

  • 这个目录竟然叫trunk,可见是从老年间儿一路走来了
  • 5个部分:概念,使用JaCoCo,集成JaCoCo,开发JaCoCo,杂项;一个一个概览一下目录

    概念

    看看这都怎么回事并且理解一下基本概念

    • 任务
    • 集成矩阵
    • 代码覆盖率简介
    • 覆盖率计算

这一段每一个点进去都挺有料得,奇怪的是斜体那个,没有还写那算怎么回事

这一段第一句估计是个习惯说法,what this is all about(参考是疑问句式,应该和what’ up,这里是陈述句式),其他没啥了,顺道发现一个stackoverflow(还是应该忍为stackoverflow是stackexchange得第一个子站?)得子站

integration Matrix,点进去几个主要的组件、工具都有文档直通车

  • 特别直达了idea得文档,毕竟现在用eclipse的不多了,写的还是挺详细的
  • 要IDEA里看测试复杂度,就得点debug右边那个按钮,代码gutter红黄绿和Jacoco report应该一致;
    • 红是就没走得
    • 黄的一般就是条件分支判断那句,说明有的条件没走到(但这个存疑,有些例子还得仔细看)
    • 绿的就是妥妥得走过了的
  • mission和coverage counters概念居多,后面找机会重点再看下
  • mission那篇可以当一个PRD看,还有功能性非功能性特性列表,非常好的一篇技术产品的产品定义书范例

    使用JaCoCo

    使用JaCoCo开箱即用的工具

    • (讲的相关的Ant Tasks如何使用)
    • (两个Ant得例子)
    • (Maven插件的一个概要介绍)
    • (两个使用Maven插件的例子)
    • (Java Agent得使用介绍)
    • (命令行工具得功能和参数介绍)
    • (介绍一些Class Id得相关概念)
    • (离线装配得介绍,相对于Java agent得 on-the-fly)
    • (FAQ就是一些小白问题?)
    • (Google Group和GitHub Issue地址,以及相关用途介绍)

这是最重要的一份文档索引列表

  • Ant 和 Maven应该还是给单元测试场景用的,或者说是给构建前得单元测试框架执行这个场景来使用
  • Java Agent应该可以使用在一些自动化的集成测试场景,例如我这惺惺念念得master分支合并前得代码准入测试…忽然想应该确保单元测试框架被执行,不应该跳过maven得test阶段
    • 原来是觉得,如果强制要求,研发有可能倾向于跳过执行不过的测试,达不到代码准入的目的,所以还是想外部集成测试做提交验证,但是从鼓励写单元测试的角度似乎还是有意义得,并且作为一个代码人工审核的项,静态检查也有价值,想想,这个团队文化建设角度也有必要,既然在看了JaCoCo文档了,这篇还是很有帮助的
    • 这个是后面要试用得
  • 命令行工具配合Java Agent来使用吧,无论是操控,还是后面report得输出
  • ClassId更多的应该是个JaCoCo得内部标识吧,可以进去看看,目前阶段不是太明白会有什么用,看它得生成规则是原始类文件的CRC64值?
  • 离线装配有可能可以作为构建打包前得一步,避免又一个javaagent得参数,这个可能和一些公司的管控或者,其实我也说不清具体的场景,这块儿文档也没进去仔细看,这里说的都是猜的
  • FAQ还是有点用得,翻到后面还真不是小白问题,遇到问题记得查一下吧
  • 实在FAQ搞不定的,到这里来找

集成 JaCoCo

与你的工具集成 JaCoCo技术(,需要参考)

  • (API 参考)
  • (API使用得样例)
  • (XML Report DTD定义)
  • (各组件和Maven仓库得相关信息)

开发JaCoCo

这个暂时没什么直接用途,不过可以作为team顶层约束约定的参考,还是挺有用的

JaCoCo看起来还是运作得不错得一个开源工程,至少文档看起来是这样的,这个再Mission里面第一句里面可能就已经定了这个基调了,无论从哪方面,他得一个被关注的方面的就是well-formed documentation…

杂项

顾名思义,不多扯了

T

image.png
第一句话啥意思?

你可以安装Terminal 插件,然后在数据库插件中正确得使用终端?

没懂,按下面那个操作一个感受一下,事实证明,还是没搞明白;前半句看得还算理解

要安装一个插件,用Ctrl + Alt + S组合键打开Setttings,然后导航到Plugins。

后面就搞不懂了

在search field 中敲Terminal 然后按下 Ctrl+Alt+S
_
完全不知所云,为啥敲完了Terminal还要再按下打开settings用的快捷键?

这么混乱,要不再来个别的吧

second tip

intellij 里面,ctrl+D,复制行,这个曾经知道,后来老不用忘了,还是yyp得帅

third tip

最近用visual studio code比较多,其实也没多少,就是python训练营跟下来得用这个

  • ctrl+shift+`,是打开终端
    • 这个可真是凭印象
  • 另一个是note吧,不是tip

    • vscode得venv不是自动识别的,需要自己选择一下python解释器,然后指向创建的venv,如图:image.pngimage.png
    • 当然前提是得预先建好了venv

      S

      先来一个凑数:循环里面带continue得if块,就是循环体里面的卫语句…忽然想break也是了啊
  • 这个源于我在检查圈复杂度为啥没覆盖时候,改变了一个黄钻得顺序,从最下面挪到最上面了!结果检查越界得分支就没执行,所以如果写成else if就覆盖了?

    • 还没试,应该不会,else if也是有顺序的,也得保证不能越界先