10 2022 档案
摘要:MySQL5.7 目前有两个思路: 穷举本周每天的日期,left join 数据表 指定统计的时间范围、按照时间间隔进行统计(类似ES桶聚合date_histogram) 思路一(UNION)实现SELECT IFNULL(AVG(c.res_value),0) avg FROM ( SELECT
阅读全文
摘要:场景回顾:设备上传的数据保存在es中,大屏模块要统计本周的数据折线图(一个设备三分总上传一次,所以拟定每天聚合求个平均值) kibana查询请求 GET xxxx_2022-10/_search { "size": 0, "query": { "bool":{ "must": [ {"term":
阅读全文
摘要:日期直方图聚合(date_histogram) 与histogram相似,es中内部将日期表示为一个long值,所以有时候可以用histogram来达到相同的目的,但往往没有date_histogram那么精确 date_histogram的特点在于可以使用 日期/时间表达式指定间隔。 原本的int
阅读全文
摘要:安装es-header docker pull mobz/elasticsearch-head:5 docker run --restart=always --name elasticsearch-head -di -p 9100:9100 docker.io/mobz/elasticsearch-
阅读全文
摘要:什么是X-Y问题 X-Y问题就是有人想解决问题X,他觉得Y可能是解决X的方法但不知道Y怎么做;在我们的工作中,需求方给出的来的是Y,而软件工程师不知道需要解决的X是什么。 我理解的X-Y问题是没有找到问题的本质,而在错误的解决方案上浪费时间 避免X-Y问题 遇事目标要明确,多探究问题的本质 下面引用
阅读全文
摘要:互为磨刀石 互相挑毛病。前提是双方都非常信任彼此,因为搞软件大多容易沉浸在自己的问题里,又不太善于做高情商的表达。一遇到沟通问题,一句话说不好就会引发误会。 有了信任的伙伴,你就不再需要费时间去想如何表述问题,无需猜测、有话直说,就算无意间说了不太客气的话,对方也能理解并接受。 互为回音壁 很多时候
阅读全文
摘要:读代码是一种有益的精进方式,类似与阅读和写作,从范文得以借鉴 读代码的过程中,值得重点关注的部分 被反复使用的代码 穿越时间的代码 如果一段代码被使用了很久都没有被淘汰,说明它设计思路很棒,建议关注最旧的部分,可以推敲设计的核心思想 好调试的代码 大概率是因为写代码的人准备好了基础工具,要看看别人早
阅读全文
摘要:分解的目的: 简化问题的复杂度 分解任务的好处 任务分解能帮你理清楚解决问题的思路 子任务完成后,发给评审,有问题的话评审也会很快给你回馈,那么接下来要写的子任务就能避免面同样的问题——小步试错。 怎么分解: 抓住重点,去掉不必要的东西,留下必须要做的,找到任务的主干 按单一职责原则对任务拆解,罗列
阅读全文
摘要:如果修复某个Bug花了很长时间,这时候就要问问自己为什么,怎么做才吸取经验教训,在类似的问题上不再出问题,以及采用的方法,使用的工具是否还有改进的地方; 当所有问题都解决之后,一定要梳理下从最初找Bug到最后改Bug的整个过程 定位Bug 模拟Bug场景:想想什么样的代码才能导致该Bug 二分法:代
阅读全文
摘要:测试 测试工作比较考验全面思考的能力 常见的分类 白盒:清楚内部的东西以及内部是如何运作的 黑盒:不考虑程序内部结构和特性通过输入输出测试 单元测试:白盒测试 主要对基本功能(单元模块)进行测试,只测某个小零件,离问题最近,所以解决问题的成本低; 功能测试:黑盒测试 每个零件都能工作,但不能说明组装
阅读全文
摘要:Tips: 除非必须使用,否则不要用接口 和 抽象类(大多时候,常规类就可以解决问题) 在合理的范围内尽可能抽象,相比于抽象类,我们更倾向于接口的使用
阅读全文
摘要:先看一个简单的例子,相信看完下例,你会对模板方法有一个初步的了解 interface Operations{ void execute(); //接口中的静态方法 static void show(String msg){ System.out.println(msg); } //这相当于是一个模板
阅读全文
摘要:短路 1.true || 2.true || 3.false || 4.true 其中 走完1表达式 就不会再走了 节省了不必要的计算 1.true && 2.true && 3.false && 4.true 其中 走完3表达式 就不会再走了(结果已经为false) 节省了不必要的计算 字面量 如
阅读全文
摘要:继承关系中的执行顺序代码 package onjava8.extend; /** * 继承关系中的执行顺序 */ class Insect { private int i = 9; protected int j; { System.out.println("Insect-构造代码块1执行"); }
阅读全文
摘要:如何工作 在某些 Java 虚拟机中,堆的实现截然不同:它更像一个传送带,每分配一个新对象,它就向前移动一格。 这意味着对象存储空间的分配速度特别快。Java 的"堆指针"只是简单地移动到尚未分配的区域,所以它的效率与 C++ 在栈上分配空间的效率相当 垃圾回收器工作时,一边回收内存,一边使堆中的对
阅读全文