- 博客(81)
- 收藏
- 关注
原创 高可用(一)系统设计
系统的可用性,导致系统不可用的原因,提高可用性的方案-注意代码规范、搭建集群、增加缓存、降级熔断限流、灾备、异地多活、灰度发布等。
2022-04-29 21:40:26
1475
原创 分布式(八)分布式ID生成系统
什么是分布式ID,为什么需要分布式ID,分布式ID生成器需要满足的要求,常用的分布式ID解决方案:基于数据库(数据库主键自增,数据库号段模式),基于算法服务(UUID算法、snowflake算法),以及常用的分布式ID开源框架 Leaf Tinyid Uidgenerator等。根据具体场景选用合适的ID生成器。
2022-04-14 21:39:52
719
原创 JAVA栈和队列的表示-LinkedList
Java中实现栈和队列操作都可以通过使用LinkedList类实现:结论:LinkedList是一种常用的数据容器,与ArrayList相比,LinkedList的增删操作效率相对较高,而查改操作效率较低。1、LinkedList是通过双向链表实现的,创建LinkedList时,存入了首尾节点first last以及链表长度size,可以直接调用。LinkedList结构:public class LinkedList<E> extends AbstractSequentialList&
2022-03-05 13:07:01
569
原创 二叉搜索树的遍历
二叉树的前中后序遍历:(dfs 递归遍历)前:根(打印) 左(递归) 右(递归)中:左 根 右后:左 右 根递归终止条件 if(root == null) return null;二叉搜索树的中序遍历为 递增序列。求 “二叉搜索树第 k 大的节点” 可转化为求 “此树的中序遍历倒序的第 k 个节点”。求第k大节点,思路:递归遍历(中序遍历倒序 - 右 中 左)时计数,统计当前节点的序号;递归到第 k 个节点时,应记录结果 res,记录当前节点的值;递归到第k个节点时,提前终止递归。递归
2022-03-04 13:38:56
409
原创 求二叉树最大深度的两种方法
剑指offer55思路 1、树的后序遍历 / 深度优先搜索往往利用 递归 或 栈 实现,本文使用递归实现。思路:此树的深度和其左(右)子树的深度之间的关系:此树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 +1思路 2、树的层序遍历 / 广度优先搜索往往利用 队列 实现。思路:每遍历一层,则计数器 +1,直到遍历完成,则可得到树的深度。具体实现:创建一个计数器res,用来记录层数;创建一个queue,存储每一层的所有node;每遍历一层,res+1;直到queue中不再有节点,即qu
2022-03-04 09:35:01
626
原创 Java位运算原理及使用讲解
Java位运算原理及使用讲解 剑指offer56Java使用 补 码 来 表 示 二 进 制 数:正数:符号位(最高位)为 0,其余 各 位 代 表 数 值 本 身 (以二 进制 表 示 )负数:把该 数 绝 对 值 的 补 码 (对应的正数)按 位 取 反得到反码 ,然后 对 整 个数 加 1,即得 该 数的 补 码。已知补码,符号位为-1,求十进制数:补码先减一得到反码,反码再按位取反,得到绝对值(正数)的补码,得到十进制数(绝对值),再加负号。按位与 &:只有两个操作数对应位同
2022-03-03 14:28:59
257
原创 kettle入门介绍
文章目录一 kettle简介1 ETL2 kettle的两种脚本及核心组件二 kettle核心概念1 转换2 作业三 kettle转换1 输入控件2 输出控件3 转换控件四 kettle作业1 作业项2 作业跳五 kettle资源库1 数据库资源库2 文件资源库六 案例-从mysql到mysql一 kettle简介1 ETLETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),用于执行数据的处理,转换,迁移的工具。市面上常用的ETL工具有很多,比如DataX,K
2022-03-03 00:20:22
3681
原创 JVM(二)java字节码文件(.class文件)解读
概念:源文件字节流(字节码文件)字节码可视化文件(主要用来看常量池)javap -v TestClass ->testclass.txtjclasslib工具 点击某个类,再view -> show bytecode with jclasslib字节码文件ClassFile结构:实际例子对照字节流、可视化文件、idea工具解读:参考:实例分析JAVA CLASS的文件结构oracle官方文档...
2022-03-01 18:31:41
1437
原创 JAVA设计模式(六)代理模式
概述代理模式:首先要有接口,代理类和被代理类都实现相同的接口,最终代理的是被代理类的方法。代理模式是Java开发中使用较多的一种设计模式。代理设计就是为对象提供一种代理以控制对这个对象的访问。任何对原始对象的调用都要通过代理,代理对象决定是否以及何时将方法调用转到原始对象上,也即代理类方法是对被代理类方法的封装。静态代理静态定义代理类:代理类和被代理类在编译期间就能够确定。局限性:不利于程序的扩展,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。最好可以通过一个代理类完成
2022-03-01 03:04:43
271
原创 JAVA设计模式(五)工厂模式
文章目录一 概述二 简单工厂三 工厂方法四 抽象工厂五 反射+配置文件优化简单工厂一 概述工厂模式:实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。其实设计模式和面向对象设计原则都是为了使得开发项目更加容易扩展和维护,解决方式就是一个“分工”。遵循开闭原则、迪米特原则和依赖倒转原则。根据迪米特法则,工厂类可以看做一个中介。核心本质:实例化对象时,用工厂方法代替 new 操作。工厂模式的分类:简单工厂模式:用来生产同一等级结构中的任意产品。(对于增加新的
2022-03-01 02:23:40
218
原创 JAVA设计模式(四)模板方法
模板方法:TemplateMethod解决的问题:当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。换句话说,在软件开发中实现一个算法时,整体步骤很固定、通用,已经在父类中写好了,但是某些部分易变,易变部分可以抽象出来,供不同子类实现。这就是一种模板模式。抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造。模板类(抽象类)一般包括:模板方法(定义整体逻辑,把基本操作组合到一起,定义成final,不允许被重写)、具体方法、抽象方法(也叫做
2022-03-01 00:21:22
212
原创 JAVA设计模式(三)单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。饿汉式:线程安全,无论是否被使用,类加载时就会创建对象,消耗资源。1.私有化构造器2.内部提供一个当前类的实例,并显示初始化3.提供公共的静态的方法,返回当前类的对象class Singleton {// 1.私有化构造器 private Singleton() {}// 2.内部提供一个当前类的实例,并显示初始化// 4.此实例也必须静态化 priva
2022-03-01 00:07:38
188
原创 JAVA设计模式(一)设计原则(待补充)
OCP(开闭原则,Open-Closed Principle) - 设计模式的第一大原则,它的潜台词是:控制需求变动风险,缩小维护成本。一个软件的实体应当对扩展开放,对修改关闭。说到底,开闭原则除了表面上的可扩展性强以外,在企业中更看重的是维护成本。当我们写完的代码,不能因为需求变化就修改。我们可以通过新增代码的方式来解决变化的需求。DIP(依赖倒转原则,Dependence Inversion Principle) - 依赖倒置的潜台词是:面向抽象编程,解耦调用和被调用者。要针对接口编程,不要针对实
2022-02-28 21:45:53
64
原创 JAVA面向对象(六) 补充内容
文章目录main()JavaBean对象类型转换 (Casting )Object类包装类main()由于Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,又因为Java虚拟机在执行main()方法时不必创建对象,而是通过当前main()方法所在类名调用,所以该方法必须是static的,该方法接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类的参数。又因为main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的一个
2022-02-28 21:42:40
262
原创 JAVA面向对象(五) 关键字
文章目录1 this关键字是什么?2 package语句3 import关键字4 super关键字注:子类对象实例化过程5 instanceof 操作符6 static关键字7 final关键字1 this关键字是什么?在Java中,this关键字代表当前对象。(当前正在操作本方法的对象称为当前对象。)它在方法内部使用,是对这个方法所属对象的引用;(调用这个方法的对象)它在构造器内部使用,表示该构造器正在初始化的对象;this 可以调用类的属性、方法和构造器。什么时候使用this关键字呢?当在
2022-02-28 21:29:45
692
原创 JAVA面向对象(四) 接口
对抽象类的补充作用:两个方面。一方面有了接口,就可以得到多重继承的效果;另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是具有相同的行为特征而已。接口就是规范,定义的是一组规则。接口(interface)是抽象方法和常量值定义的集合。成员:常量、抽象方法、默认方法、静态方法接口特点:接口中的所有成员变量都默认是由public static final修饰的。接口中的所有抽象方法都默认是由public abstract修饰的。接口中没有构造器。 接口采
2022-02-28 21:17:43
289
原创 JAVA面向对象(三) 抽象类抽象方法
Java允许类设计者指定:超类声明一个方法但不提供实现,该方法的实现由子类提供,这样的方法称为抽象方法。有一个或更多抽象方法的类称为抽象类。抽象类无法实例化,就是用来被继承的。首先,类的设计应该保证父类和子类能够共享特征。然后,当父类中无法确定某些方法的具体实现方式时,就可以设计成抽象方法,含有抽象方法的类必须被声明为抽象类。应用:抽象类是用来模型化那些父类无法确定全部方法的实现,而是由其子类提供待定方法具体实现的类。在模板模式中这些方法被称为钩子方法。abstract关键字来修饰一个类,这个
2022-02-28 21:14:27
311
原创 JAVA面向对象(二) 三大特性
文章目录一、封装二、继承三、多态一、封装把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:隐藏一个类中不需要对外提供的实现细节;使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;便于修改,增强代码的可维护性;四种权限修饰符:public protected default private,
2022-02-28 21:04:31
159
原创 JAVA面向对象(一) 类的成员
文章目录一、类和对象的概念:二、类的成员2.1 属性2.2 方法2.3 构造器2.4 代码块2.5 内部类一、类和对象的概念:创建Java自定义类步骤:定义类(考虑修饰符 、类名)编写类的属性(考虑修饰符、属性类型、属性名、初始化值)编写类的方法(考虑修饰符、返回值类型、方法名、形参等)类的修饰符:public default注:内部类除外,内部类除了可以作为类,还可以作为类的成员。为什么static方法访问非static属性,编译不通过?这是由类和对象的加载顺序决定的。stati
2022-02-28 20:49:24
499
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人