小破屋

接触即掌握,用过即专家

Nginx

基础+反向代理+负载均衡+高可用

概述 应用场景 高性能静态web服务器 反向代理服务器 API服务(OpenResty) 主要特点 高并发,高性能 扩展性好(二次开发) 异步非阻塞的事件驱动模型 高可靠性(其本身几乎很少需要停机重启或宕机) 热部署,平滑升级 BSD许可 占用内存少,并发能力强 安装部署 编译安装 项目内应用该方式。 流程 官网下载压缩包,传到...

Arthas

线上问题排查工具

安装与启动 可以直接下载编译后的jar包,直接java -jar 启动 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 常用命令 dashboard 仪表板 展示当前进程的信息 输入dashboard,按回车即可进入。 按ctrl+c可以中断执行。 参数 -i 1000 ...

Docker知识总结

docker小记

概述 docker 主要提供三大功能 : 打包,分发,部署 打包:将软件运行环境,例如java环境,linux系统跟程序都打到一个包。 分发:将打好的包,上传镜像仓库,类似maven一样,共享给团队。 部署:跨平台运行打好的包。 镜像是—种轻量级、可执行的独立软件包。 docker使用 docker 常用命令 https://docs.docker.com/engin...

设计模式

23种设计模式总结

设计模式 23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 创建型设计模式包括:单例模式、工厂模式、建造者模式、原型模式。它主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。 结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。结构型模式包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、...

设计原则

SOLID+DRY+KISS+YAGNI+LOD

软件设计原则 软件开发中有各种设计原则,SOLID原则,DRY原则,KISS原则,YAGNI原则,LOD法则。这些原则最终目的都是为了提高软件质量,只是侧重点和看问题的角度各有不同。 SOLID 原则 SOLID 原则是一套比较成体系的设计原则。它不仅可以指导我们设计模块(在面向对象领域,模块主要指的就是类),还可以被当作一把尺子,来衡量我们设计的有效性。 SOLID 原则是五个...

需求分析要点

走好项目开发管理第一步

本文主要是对 ToB 系统,软件需求分析过程的学习知识,经验及总结。 什么是需求 需求 = 预期 - 现状 需求是用户的预期和现状之间的差距。 信息系统需求 : 用来描述业务/客户对系统的目标要求,包含对系统在功能、行为、约束(性能)等方面的要求。 需求分类 = 功能需求 + 数据需求 + 非功能需求(技术分类) 客户/业务 常常提出的都是 方案级需求,我们更应探寻问题级需...

重构

识别不好的代码,如何通过重构变得更好

什么是重构 在不改变代码本身功能的前提下,对代码做出修改,以改进程序的内部结构。 重构就是在代码写好之后改进它的设计。 在保持功能不变的前提下,利用设计思想、原则、模式、编程规范等理论来优化代码,修改设计上的不足,提高代码质量。 为什么要重构 避免过度设计。 防止代码腐朽。 无法预见未来的需求,随着项目推荐,重构不可避免。 不让代码变得越来越难以维护。 重构以提升可读性,可维...

JVM知识总结

分代模型 垃圾回收 参数优化

内存区域 方法区/元数据空间:存放各种类相关的信息。线程共享。 堆内存:存放代码创建的各种对象。线程共享。 程序计数器:用来记录当前执行的字节码指令的位置。线程独占。 Java虚拟机栈:保存每个方法内的局部变量等数据的。线程独占。 栈帧:局部变量表,操作数栈,动态链接,方法出口等。调用方法时压栈帧,退出方法出栈。 本地方法栈:native 方法调用的时候,会有线程对应的本地方发展...

Mockito使用详解

隔离外部依赖 单元测试利器

Mockito 一张思维导图鸟瞰全文 单元测试 一个单元测试应该有如下特点 应该是自动化的 应该可以快速运行 每个单元测试不应该依赖其它测试的结果和执行顺序,单元测试框架可以按任意的顺序执行每个测试 每个单元测试不应该依赖数据库,外部文件,或者任何长时间运行的任务。单元测试应该是独立的,不应该依赖于任何外部环境 单元测试应该在任何时间任何环境都可以任意执行,...

如何编写好的单元测试

好单元测试的特点及编写具有可测试性的代码

什么是单元测试 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。类比到盖楼就是对每块砖头,每个钢筋,每份水泥做检查,只有每一块砖头都满足要求,最后搭建起来的房子才可能没问题。 单元测试和集成测试的区别在于,单元测试是检查每个组件方法是否无误,集成测试在于将组件彼此依赖组装后进行验证。 单元测试的优点/作用 1.修改后的代码可以做快速测试,避免修改后,只...