摘要: 选择排序 `public class SelectSort { public static void main(String[] args) { int[] eles = {0, -1, -3, 2, 100, Integer.MAX_VALUE, Integer.MIN_VALUE}; selec 阅读全文
posted @ 2021-05-17 16:22 小路不懂2 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 1. 二分查找是一种算法,其输入是一个有序的元素列表(必须有序的)。如果要 查找的元素包含在列表中,二分查找返回其位置;否则返回null。 一般而言,对于包含n个元素的列表,用二分查 找最多需要log2n步,而简单查找最多需要n步。 private static int binarySearch(i 阅读全文
posted @ 2021-05-14 17:03 小路不懂2 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 背景 项目中使用OkHttp访问三方服务 参数 创建okhttp客户端类的时候需要设置一些参数,有些可能是坑,仅供参考: client = new OkHttpClient.Builder() .dispatcher(new Dispatcher(executorService)) .connect 阅读全文
posted @ 2019-10-31 15:11 小路不懂2 阅读(8836) 评论(0) 推荐(0) 编辑
摘要: 1. 定义 (1)高层模块不应依赖于低层模块,两者都应该依赖于抽象。(2)抽象不应该依赖于细节,细节应该依赖于抽象。 为什么是“倒置”这个词? 这是由于许多传统的软件开发方法,比如结构化分析和设计,总是倾向于创建一些高层依赖于低层模块、策略依赖于细节的软件结构。实际上这些方法的目的之一就是要定义程序 阅读全文
posted @ 2019-09-19 15:31 小路不懂2 阅读(1018) 评论(0) 推荐(0) 编辑
摘要: OCP背后的主要机制是抽象和多态。在静态类型语言中,比如C++和Java,支持抽象和多态的关键机制之一是继承。正是使用了继承,才可以创建实现其基类中抽象方法的派生类。是什么设计规则在支配着这种特殊的继承用法呢?最佳的继承层次的特征又是什么呢?怎样的情况会使我们创建的类层次结构掉进不符合OCP的陷阱中 阅读全文
posted @ 2019-09-17 10:28 小路不懂2 阅读(1834) 评论(0) 推荐(0) 编辑
摘要: 怎样的升级才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?开放-封闭原则(The Open-Closed Principle, OCP)为我们提供了指引。软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。如果程序中一处改动就会产生连锁反应,导致一 阅读全文
posted @ 2019-09-10 11:07 小路不懂2 阅读(1066) 评论(0) 推荐(0) 编辑
摘要: 内聚性:一个模块的组成元素之间的功能相关性。就一个类而言,应该仅有一个引起它变化的原因。当需求变化时,该变化会反映为类的职责的变化,如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。如果一个类承担的职责过多,就等于把这些职责耦合在一起。一个职责的变化可能会削弱或抑制这个类完成其他职责的 阅读全文
posted @ 2019-09-03 18:54 小路不懂2 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 1. 起因 A与B云侧模块特性联调的过程中,端侧发现云侧返回有延迟的情况。 7月19日与A模块一起抓包初步判断,B业务有积压的情况。 7月18日已经转侧B业务现网版本,由于使用一套逻辑。故可能存在请求积压的问题。(严重) 2. 定位过程 2.1 复现问题 15路压测大屏发现请求有将近十多秒的时延,对 阅读全文
posted @ 2019-08-30 15:24 小路不懂2 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 无论是云计算、大数据还是互联网公司的各种应用,其后台基础设施的主要目标都是构建低成本、高性能、可扩展、易用的分布式存储系统。大规模分布式存储系统的定义如下:分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务。几个特点:(1)可扩展:分布式存储系统可以扩展到几百台 阅读全文
posted @ 2019-08-30 15:11 小路不懂2 阅读(1424) 评论(0) 推荐(0) 编辑
摘要: etcd有三种集群化启动的配置方案,分别为静态配置启动、etcd自身服务发现、通过DNS进行服务发现,重点讲一下静态配置启动。根据启动环境,可以选择不同的配置方式。这也是新版etcd区别于旧版的一大特性,它摈弃了使用配置文件进行参数配置的做法,转而使用命令行参数或环境变量来配置参数。 1. 静态配置 阅读全文
posted @ 2019-06-26 11:06 小路不懂2 阅读(1208) 评论(0) 推荐(0) 编辑
摘要: etcd组件作为一个高可用、强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如果让服务快速透明地接入到计算集群中。如果让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd:A hi 阅读全文
posted @ 2019-06-26 10:47 小路不懂2 阅读(764) 评论(0) 推荐(0) 编辑
摘要: root@ubuntu-blade2:/sdf/jdk# javaUsage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a j 阅读全文
posted @ 2019-06-10 19:36 小路不懂2 阅读(1039) 评论(0) 推荐(0) 编辑
摘要: 线程堆栈也称作线程调用堆栈。Java线程堆栈是虚拟机中线程(包括锁)状态的一个瞬间快照,即系统在某个时刻所有线程的运行状态,包括每一个线程的调用堆栈,锁的持有情况等信息。对于已经消失而又没留有痕迹的信息,线程堆栈是无法进行历史追踪的。线程堆栈的信息包括:(1)线程的名字,id,线程的数量等(2)线程 阅读全文
posted @ 2019-05-30 21:01 小路不懂2 阅读(964) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。 1.1 依赖注入 1.2 面向方面的程序设计 阅读全文
posted @ 2019-04-28 15:18 小路不懂2 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 JDK1.5增加泛型支持很大程度上都是为了让集合能记住其元素的数据类型。在没有泛型之前,一旦把一个对象放入Java集合中,集合就会忘记对象的类型,把所有的对象当成Object类型处理。当程序从集合中取出对象后,就需要进行强制类型转换,这种强制类型转换不仅使代码臃肿,而且容易引起Class 阅读全文
posted @ 2019-04-26 11:59 小路不懂2 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP/UDP)使用。一些ICMP报文把差错报文返回给用户进程。ICMP报文是在IP数据报内部传输的,如图: ICMP报文的格式如图: (1)类型字段可以有15个不同的值 阅读全文
posted @ 2019-04-22 15:37 小路不懂2 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。分布式是指在Internet上的单个站点不能拥有所有的信息。每个站点保留它自己信息数据库,并运行给一个服务器程序供Internet上的其他系统查询。DNS提供了允许服务器和客户 阅读全文
posted @ 2019-04-22 11:25 小路不懂2 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 物理网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接受到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU(最大传输单元:Maximum Transmission Unit,通常与通信接口有关,单位:字节)。IP把MTU与数据报长度进行比较,如果需要 阅读全文
posted @ 2019-04-15 15:25 小路不懂2 阅读(1816) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP数据报封装成一份IP数据报的格式如图。 UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证他们能到达目的地。应用程序必须关心IP数据报的长度。 阅读全文
posted @ 2019-04-15 10:57 小路不懂2 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 日志注入一般不会引起服务功能性的损害,而主要是作为一种辅助攻击手段。 1. New Line Injection 插入新行的注入方式,这种方式是最普遍的log注入方法。例如:张三不怀好意,在用户名一栏里输入如下的字符张三\n delete all files 2. Sparator Injectio 阅读全文
posted @ 2019-04-03 17:21 小路不懂2 阅读(736) 评论(0) 推荐(0) 编辑