
笔记
文章平均质量分 61
六块腹肌的程序猿
万小时定律
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RPC学习
模拟 RPC 的客户端、服务端、通信协议三者如何工作代码编写1.创建协议public interface RPCProtocol { long versionID = 666; void mkdirs(String path);}2.服务端package cn.sc.rpc;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import java.io.IOE原创 2022-05-19 08:48:16 · 871 阅读 · 0 评论 -
Hive学习
简介一.概述1.Hive原本是由Facebook公司开发后来贡献给了Apache的一套用于进行数据仓库管理的机制2.Hive提供了SQL(HQL,Hive QL)语句来管理HDFS上的大量数据,底层会将SQL转化为MapReduce来交给Hadoop YARN来执行,因此,Hive的执行效率相对比较低,所以Hive适合于离线批处理场景二.Hive和数据库的比较1.查询语言:数据库提供了标准的SQL语句,符合三范式的设计;Hive提供了SQL语言,不完全符合SQL的规则2.数据存储的位置:数据库原创 2022-04-01 13:32:24 · 3936 阅读 · 0 评论 -
spark学习
一.定义Spark是一种分布式,快速的,通用 的,可靠的,免费的计算框架。二.Spark的生态系统模块三.Spark的使用模式:1.Local 本地单机模式:一般用于测试和练习2.Standalone Spark集群模式:Spark集群的资源管理由spark自己来负责3.On Yarn Spark集群模式:Spark集群的资源由Yarn来管理四 .Spark最核心的数据结构——RDD弹性分布式数据集RDD与普通集合的区别:1.RDD有分区机制,可以分布式,并行的处理同一个RDD数据集,从原创 2022-02-20 21:50:47 · 1646 阅读 · 0 评论 -
23种设计模式-访问者模式
测评系统的需求完成测评系统需求1)将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)传统方案:1)如果系统比较小,还是 ok 的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了 ocp 原则, 不利于维护2)扩展性不好,比如 增加了 新的人员类型,或者管理方法,都不好做3)引出我们会使用新的设计模式 – 访问者模式基本介绍:1)访问者模式(Visitor Pattern),封装一些作用于某种数据结构转载 2021-06-23 17:34:26 · 122 阅读 · 0 评论 -
23种设计模式-解释器模式
四则运算问题:通过解释器模式来实现四则运算,如计算 a+b-c 的值,具体要求1)先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复2)在分别输入 a ,b, c, d, e 的值3)最后求出结果:如图传统解决方案:1)编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得到结果2)问题分析:如果加入新的运算符,比如 * / ( 等等,不利于扩展,另外让一个方法来解析会造成程序结构混乱, 不够清晰.3)解决方案:可以考虑使用解释器模式, 即: 表达式转载 2021-06-23 16:29:26 · 129 阅读 · 0 评论 -
23种设计模式-迭代器模式
具体的需求:编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。传统方案:缺点:1)将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的2)实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的遍历的操作3)解决方案:=> 迭代器模式迭代器的基本介绍:1)迭代器模式(Iterator Pattern)是常用的设计模式,属于行原创 2021-06-23 07:47:29 · 183 阅读 · 0 评论 -
23种设计模式-备忘录模式
1.游戏角色状态恢复问题:游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态。传统的解决方案:传统方案的问题:1)一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大.2)传统的方式是简单地做备份,new 出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节3)解决方案: => 备忘录模式备忘录模式的基本介绍:1)备忘原创 2021-06-21 21:05:43 · 110 阅读 · 0 评论 -
23种设计模式-中介者模式
基本介绍:1)中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互2)比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起到了中间人的作用原理图:对原理类图的说明-即(中介者模式的角色及职责)1)Mediator 就是抽象中介者,定义了同事对象到中介者对象的接口2)Colleague 是抽象同事原创 2021-06-21 20:26:55 · 185 阅读 · 0 评论 -
23种设计模式-观察者模式
1.天气预报项目需求,具体要求如下:1)气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。2)需要设计开放型 API,便于其他第三方也能接入气象站获取数据。3)提供温度、气压和湿度的接口4)测量数据更新时,要能实时的通知给第三方2.天气预报设计方案2.1-普通方案/** * 显示当前天气情况(可以理解成是气象站自己的网站) * * @author sc */public class CurrentConditions { /转载 2021-06-16 19:46:09 · 114 阅读 · 0 评论 -
23种设计模式-责任链模式
基本介绍:1.为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。2.职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。原理图:1)Handler : 抽象的处理者, 定义了一个处理请求的接口, 同时含义另外 Handler2)ConcreteHandlerA , B 是具体的处理者, 处理它自己负责的请求, 可以访问它的后继者(即下一个处理者), 如果可以处理当前请求,则处原创 2021-06-16 15:00:09 · 142 阅读 · 0 评论 -
23种设计模式-状态模式
状态模式:状态设计模式是行为设计模式之一。 当对象根据其内部状态更改其行为时,将使用状态设计模式角色:● Context(环境类):环境类中维护一个State对象,他是定义了当前的状态。● State(抽象状态类):具体状态类● ConcreteState(具体状态类):每一个类封装了一个状态对应的行为不使用状态没模式的电视剧状态package com.journaldev.design.state; public class TVRemoteBasic { private S原创 2021-06-12 09:18:48 · 125 阅读 · 0 评论 -
23种设计模式-命令模式
命令模式:命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。角色:客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。● 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。● 具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。execute()方法通原创 2021-06-12 02:14:02 · 102 阅读 · 0 评论 -
23种设计模式-策略模式
策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也称为政策模式(Policy)。目的:为了让算法和对象独立出来,代替if判断方式举例:商场商品促销方法//声明一个CashSuper对象,通过构造方法,传入具体的收费策略,//getResult()方法的功能为根据收费策略的不同获得计算结果。public class CashContext { private CashSuper cashSuper; publ原创 2021-06-08 20:38:09 · 157 阅读 · 0 评论 -
23种设计模式-模板设计模式
模板方法的定义:模板方法模式很简单,它的定义是:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses define certain steps of an algorithm without changing the algorithm’s structure. 即定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得原创 2021-06-05 11:56:11 · 149 阅读 · 0 评论 -
23种设计模式——建造者模式
建造者模式:又叫生成器模式,他将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构建出不同的表现对象。四个角色:Product(产品角色):一个具体的产品对象。Builder(抽象建造者):创建一个Product对象的各个部件指定的接口。ConcreteBuilder(具体建造者):实现接口,构建和装配各个部件。Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与地方 但是f...原创 2021-05-03 19:13:22 · 203 阅读 · 0 评论 -
23种设计模式-动态代理(Cglib代理)
1.静态代理和JDK代理模式都要求对象是实现一个接口,但是有目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理-这就是Cglib代理2.Cglib代理也叫子类代理,它是在内存中构建一个子类对象从而实现对目标对象的功能扩展,有些书也将Cglib代理归属到动态代理。3.Cglib是一个强大的高细性能的代码生成包,它可以在运行期扩展java类与实现java接口,它广泛的被许多AOP的框架使用,例如Spring AOP,实现方法拦截4.在AOP编程中如何选择代理模式:1)原创 2021-06-01 01:35:53 · 142 阅读 · 0 评论 -
23种设计模式-动态代理(JDK)
基本介绍:1)代理对象,不需要实现接口,但是目标对象要实现接口,否则不能动态代理2)代理对象的生成,是利用JDK的API,动态的内存中构建代理对象3)动态代理也叫做:JDK代理,接口代理JDK中生成代理对象的API1)代理类所在包:java.lang.reflect.Proxy2)JDK实现代理只需要使用newProxyInstance方法,但是方法需要三个参数,完整的写法是:Static Object newProxyInstance(ClassLoader loader,Class<原创 2021-05-30 10:59:08 · 141 阅读 · 0 评论 -
23种设计模式-静态代理
代理模式:代理、扩展目标对象的功能。静态代理使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同的父类。public interface ITeacherDao { void teach();}public class TeacherDao implements ITeacherDao { @Override public void teach() { System.out.println("老师授课中。。。。。原创 2021-05-28 20:31:33 · 132 阅读 · 0 评论 -
23种设计模式-享元模式
介绍:运用共享技术有效地支持大量细粒度的对象,主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 public abstract class Flyweight { 2 3 //内部状态 4 public String intrinsic; 5 //外部状态 6 protected final String extrinsic; 7 8 //要求原创 2021-05-24 23:12:26 · 93 阅读 · 0 评论 -
23种设计模式-装饰器模式
装饰器模式:1.装饰模式允许向一个现有的对象添加新功能,同时又不改变其结构。这种类型的设计模式数据结构型模式,它是作为现有的类的一个包装。2.这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整的前提下,提供了额外的功能。场景:我要订星巴克咖啡,有美式,意大利和短黑咖啡,调料牛奶,巧克力豆浆。传统设计方案:每产生一个组合就要特地生成一个对象,然后组合咖啡和调料,会出现类爆炸现象,每次一增加一种咖啡就要增加咖啡和不同的调料组合。十分繁琐,用装饰者模式就可以解决类爆炸问题public原创 2021-05-16 12:16:07 · 168 阅读 · 0 评论 -
设计模式的七大原则
单一职责原理:每个类应该一个职责,比如UserDao和OrderDao。优点:(1)降低类的复杂度,一个类只负责一项职责(2)提高类的可读性,可维护性(3)降低变更风险(4)通常情况下,应该遵守单一职责原则,只有类方法特别少的时候,可以方法级别实现单一职责原则。思考:在写代码的时候注意是不是每个类都是单一的职责,不能一个类中什么类型的业务都有,不清晰!接口隔离原则:接口最小话。一个类实现一个接口,却实现了他没有用到的方法。思考:写代码尽量接口里面方法不添加用不到的方法!依赖倒转(倒置)原则:就是要面向.原创 2021-05-02 18:37:49 · 123 阅读 · 0 评论