- 博客(14)
- 收藏
- 关注
原创 工作3年,还不会写单元测试?新技能get!
历史遗留代码不敢重构?每次改代码都要回归所有逻辑?提测被打回?在近期的代码重构的过程中,遇到了各式各样的问题。比如调整代码顺序导致bug,取反操作逻辑丢失,参数校验逻辑被误改等。上线前需要花大量时间进行测试和灰度验证。在此过程最大的感受就是:一切没有单测覆盖的重构都是裸奔。经历了没有单测痛苦磨难,查阅很多资料和实战之后,于是就有了这篇文章,希望能给你的单测提供一些参考。认识单测What单元测试是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。关
2021-07-07 15:28:13 332 2
原创 工具用的好,下班回家早!iTerm2奇技淫巧指南!
同时打开多个终端窗口,来回切换太麻烦!能不能像IDEA一样,能够查看历史粘贴记录?有没有办法一键登陆服务器?工欲善其事,必先利其器!无论工作还是学习,选择好用的工具真的太重要了。今天就给大家介绍一下笔者感觉相见恨晚的工具iTerm2,如果让我说日常开发中好用的工具有哪些,iTerm2必须拥有姓名。作为经常和Terminal打交道的工程师来说,对于自带的Terminal来说,Windows的命令行最难用,笔者一般使用XShell。入坑Mac后发现大家都在用iTerm2,半年下来感受只有两个字:真香.
2021-01-15 01:05:34 596 1
原创 面试官:来!年轻人,常见限流算法实现一下???
瞬时流量过高,服务被压垮?恶意用户高频光顾,导致服务器宕机?消息消费过快,导致数据库压力过大,性能下降甚至崩溃?......在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流;不但在工作中要频繁使用,而且也是面试中的高频考点。今天我们将图文并茂地对常见的限流算法分别进行介绍,通过各个算法的特点,给出限流算法选型的一些建议,并给出Java语言实现的代码示例。01 固定窗口固定窗口又称固定窗口(又称计数器算法,Fixed Window)限流算法,是最简单的限流算法,通过在单位时间内维护.
2021-01-12 16:40:27 331
原创 图解MySQL索引(二)—为什么使用B+Tree
失踪人口回归,近期换工作一波三折,耽误了不少时间,从今开始每周更新~索引是一种支持快速查询的数据结构,同时索引优化也是后端工程师的必会知识点。各个公司都有所谓的MySQL”军规“,其实这些所谓的优化和规定,并不是什么高深的技术,只是要求大家正确建立和使用索引而已。工欲善其事必先利其器,想要正确运用索引,需要了解其底层实现原理,本文将探索关于索引的“是什么”以及”为什么“。MySQL中关于索引的概念有很多,为了避免混淆,在上一篇文章中关于索引在不同维度分类设计到的一些名词进行了解释,如辅助索引,唯一索引,
2020-05-31 00:30:06 339
原创 图解MySQL索引(上)—MySQL有中“8种”索引
关于MySQL索引相关的内容,一直是一个让人头疼的问题,尤其是对于初学者来说。笔者曾在很长一段时间内深陷其中,无法分清“覆盖索引,辅助索引,唯一索引,Hash索引,B-Tree索引……”到底是些什么东西,导致在面试过程中进入比较尴尬的局面。很多人可能会抱怨”面试造火箭,工作拧螺丝,很多知识都是为了面试学的,工作中根本用不到!“。庆幸的是,MySQL中索引不仅是面试必考知识,还是工作中用到最为频繁...
2020-03-07 01:54:16 311
原创 剑未佩妥,出门已是江湖!聊聊我的2019!
剑未佩妥,出门已是江湖。酒尚余温,入口不识乾坤。2019年可以说是对我来说是特别重要的一年。正式结束了自己的学生时代,从事了一个自己不讨厌的职业,遇到了一群优秀的人。借年终总结的浪潮,说说对于2019年的一些感悟,顺便再立一些flag。一,我毕业了四年前带了两件衣服,借了一个同学的拉杆箱,一个人来到了离家两千多公里的哈尔滨,开始了大学生活。2019年打包行李,正式踏上了北漂之路,离开了那个骂...
2020-01-10 12:25:11 944
原创 Java中的等待唤醒机制—至少50%工程师说不清
这是一篇走心的填坑笔记,自学Java的几年总是在不断学习新的技术,一路走来发现自己踩坑无数,而填上的坑却屈指可数。突然发现,有时候真的不是几年工作经验的问题,有些东西即使工作十年,没有用心去学习过也不过是一个10年大坑罢了。刚开始接触多线程时,就知道有等待/唤醒这个东西,写过一个demo就再也没有看过了,至于它到底是个什么东西,或者说它能解决什么样的问题,估计大多数人和我一样都是模棱两可。这次笔...
2019-12-14 10:00:29 992
原创 都9012了,Java8中的日期时间API你还没有掌握?
一,Java8日期时间API产生的前因后果1.1 为什么要重新定义一套日期时间API操作不方便:java中最初的Date不能直接对指定字段进行加减操作也不支持国际化,后来新增了Calendar,但是Calendar又不支持格式化操作,需要转换成Date再进行格式化,总之一直在填坑,使用起来一点都不够优雅。线程不安全:Date,Caleandar,SimpleDateFormat都是可变的,...
2019-12-03 01:02:52 955
原创 图解AQS的设计与实现,手摸手带你实现一把互斥锁!
AQS是并发编程中非常重要的概念,它是juc包下的许多并发工具类,如CountdownLatch,CyclicBarrier,Semaphore 和锁, 如ReentrantLock, ReaderWriterLock的实现基础,提供了一个基于int状态码和队列来实现的并发框架。本文将对AQS框架的几个重要组成进行简要介绍,读完本文你将get到以下几个点:AQS进行并发控制的机制是什么共享模...
2019-11-30 07:29:29 1167
原创 面试填坑笔记,关于代理模式的知识点都在这了!
本文算是一篇关于面试填坑笔记,也是第一篇。在某次面试中被问到了“为什么jdk只能代理接口”的问题,当场暴毙~代理模式是一种理论上非常简单,但是各种地方的实现往往却非常复杂。本文将从代理模式的基本概念出发,探讨代理模式在java领域的应用与实现。读完本文你将get到以下几点:为什么需要代理模式,它通常用来解决什么问题,以及代理模式的设计与实现思路Java领域中代理模式3种不同实现类型(静态代...
2019-11-24 23:39:06 1238
原创 单例模式——高性价比的设计模式
为什么说单例模式性价比高?在面试过程中经常让手撸的一种设计模式,并且被面的频率非常高。重点是这种设计模式很简单!我的个人博客(后台建站,Tomcat集群,Redis分布式,nginx,适合初学者)为什么要用单例模式?在开发过程中,根据需求的不同,有时可能要求对象实例只能有一个,这时就要使用到了单例模式。如:Spring中的bean默认使用的都是单例模式。什么是单例模式?...
2018-05-24 22:06:29 172
原创 MySQL存储引擎分析-MyISAM&InnoDB
存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取。MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的。每一种存储引擎都有它的优势和劣势,本文只讨论最常见的InnoDB和MyISAM两种存储引擎进行讨论。本文中关于数据存储形式和索引的可以查看图解MySQL索引MySQL逻辑架构图:InnoDB存储引擎InnoDB是默认的事务型存储引...
2018-05-21 13:17:58 169
原创 设计模式:策略模式
一.概述策略模式 定义了算法族,分别封装起来,让他们可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式的三要素:抽象策略角色: 策略类,通常由一个接口或者抽象类实现。具体策略角色:包装了相关的算法和行为。环境角色:持有一个策略类的引用,最终给客户端调用。二.案例驱动 提出问题:要求做出一套模拟鸭子的游戏,游戏中会出现各种鸭子,它们一边游泳,一边呱呱叫...
2018-04-27 08:03:33 244
原创 谈谈如何选择合适的MySQL数据类型
MySQL数据类型选择一 .选择原则更小的通常更好:一般情况下选择可以正确存储数据的最小数据类型。越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小。简单就好:简单的数据类型的操作通常需要更少的CPU周期。例如:整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符比整型比较更加复杂。尽量避免NULL:尽量制定列为NOT NULL,除非真的需要NULL类型的值。...
2018-04-23 22:20:36 468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人