自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李昊轩的博客

Done is better than perfect.

  • 博客(30)
  • 资源 (4)
  • 论坛 (1)
  • 收藏
  • 关注

原创 深入浅出HashMap原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入...

2019-12-26 05:35:25 501

原创 Scala之 协变、逆变和不变

基本介绍Scala的协变(+),逆变(-),协变covariant、逆变contravariant、不可变invariant对于一个带类型参数的类型,比如 List[T],如果对 A 及其子类型 B,满足 List[B]也符合 List[A] 的子类型,那么就称为 covariance(协变) ,如果 List[A]是 List[B]的子类型,即与原来的父子关系正相 反,则称为 contra...

2019-12-23 06:12:07 234 1

原创 Scala之 泛型、上下界、视图界定 、上下文界定

泛型的基本介绍如果我们要求函数的参数可以接受任意类型。可以使用泛型,这个类型可以代表任意的数据类 型。例如 List,在创建 List 时,可以传入整型、字符串、浮点数等等任意类型。那是因为 List 在 类定义时引用了泛型。比如在 Java 中:public interface List<E> extends Collection<E>上界(Upper Bou...

2019-12-23 06:03:35 274 1

原创 设计模式23篇之 动态代理详解

动态代理动态代理:运行时动态的创建代理类(对象),并将方法调用转发到指定类(对象)动态代理调用的机制图Proxy 和 InvocationHandler 组合充当代理的角色.RealSubject是一个实际对象,它实现接口Subject在使用时,我们不希望直接访问 RealSubject 的对象,比如:我们对这个对象的访问是有控制的我们使用动态代理,在程序中通过动态代理创建 Rea...

2019-12-21 11:37:59 245 1

原创 设计模式23篇之 透过RMI(远程方法调用)入门代理模式

代理模式的基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象(动态代理)代理模式有不同的形式(比如 远程代理,静态代理,动态代理),都是为了控制与管理对象访问举个例子: 远程对象的本地代表远程代理:远程对象的本地代表,通过它可以把远程对象当本地对象来调用。远程代理通过网络和真正的远程对象沟通信息。涉及...

2019-12-21 09:45:31 1358

原创 设计模式23篇之 观察者模式详解

观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为 Subject,依赖的对象为 Observer,Subject 通知 Observer 变化,比如这里的奶站是 Subject,是 1 的一方。用户时 Observer, 是 n 的一方。观察者模式类似订牛奶业务奶站/气象局:Subject用户/第三方网站:ObserverSubject:登记注册、移除和通知regis...

2019-12-20 10:02:35 186

原创 设计模式23篇之 装饰者模式详解

从一个需求入手咖啡馆订单系统项目(咖啡馆):咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因 咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用 OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。方案 1...

2019-12-20 08:18:39 238

原创 设计模式23篇之 单例模式

什么是单例模式?单例模式是指:保证在整个的软件系统中,某个类只能存在一个对象实例。单例模式的应用场景比 如 Hibernate 的 SessionFactory,它 充 当 数 据 存 储 源 的 代 理 ,并 负 责 创 建 Session 对象. SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。...

2019-12-20 06:26:08 558

原创 设计模式23篇之 抽象工厂模式

前两篇博客简单工厂和工厂方法的Pizza例子中, 他们都有各自的缺点, 例如还是不够解耦引入抽象工厂模式:抽象工厂模式:定义了一个 trait 用于创建相关或有依赖关系的对象簇,而无需指明具体的类抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)。将工厂抽象成两层,AbsFactory(抽象工厂) 和 具体实...

2019-12-14 07:37:07 1330 1

原创 设计模式23篇之 关于3个工厂模式的设计思想提炼

工厂模式的意义:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性。三种工厂模式:简单工厂, 工厂方法, 抽象工厂 (我的博客设计模式专栏中都有详解)设计模式的依赖抽象原则创建对象实例时,不要直接 new 类, 而是把这个 new 类的动作放在一个工厂的方法中,并返回。 也有的书上说,变量不要直接持有具体类的引用。不...

2019-12-14 06:57:31 1324 1

原创 设计模式23篇之 工厂方法模式

看一个新的需求pizza项目新的需求:客户在点pizza时,不仅能点奶酪pizza, 胡椒pizza, 同时还可以点不同地域的pizza,比如: 北京的奶酪 pizza、北京的胡椒 pizza 或者是伦敦的奶酪 pizza、伦敦的胡椒 pizza。解决方案 1使用简单工厂模式,创建不同的简单工厂类,比如 BJPizzaSimpleFactory、LDPizzaSimpleFactory 等...

2019-12-14 06:10:51 498

原创 设计模式23篇之 简单工厂模式

基本介绍简单工厂模式是属于创建型模式,但不属于 23 种 GOF 设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式.需求看一个披萨的项目:要便于披萨种类的扩展,要...

2019-12-14 04:54:17 3244 1

原创 设计模式23篇之入门篇 设计模式基本介绍

学习设计模式的必要性面试会被问,所以必须学读源码时看到别人在用,尤其是一些框架大量使用到设计模式,不学看不懂源码为什么这样写, 比如 Runtime 的单例模式.设计模式能让专业人之间交流方便提高代码的易维护设计模式是编程经验的总结,我的理解: 即通用的编程应用场景的模式化,套路化(站在软件设计层面思考)。设计模式基本介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有...

2019-12-13 06:42:21 322

原创 Scala 之一行搞定WordCount

object Test extends App { val lines = List("hello csdn hello ksl hello asd asd dsudrf" , "i jirgjiji fnjadf" , "igbwi b u ue nnn ggnnugnrn" ,"nn wnui g ngndu abd abd jij ji ji jj iji ...

2019-12-13 06:02:24 3288 1

原创 RPC、REST API深入理解

RPC、REST API深入理解一:RPCRPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式.RPC是分布式架构的核心,按响应方式分如下两种:同步调用:客户端调用服务方方法,等待直到服务方...

2019-12-12 09:59:23 418

转载 一句话描述volatile关键字如何保证可见性

被volatile关键字修饰的变量,在每个写操作之后,都会加入一条store内存屏障命令,此命令强制工作内存将此变量的最新值保存至主内存;在每个读操作之前,都会加入一条load内存屏障命令,此命令强制工作内存从主内存中加载此变量的最新值至工作内存。...

2019-12-10 06:33:07 346

原创 Scala 利用Akka模拟Sparkmaster Worker心跳机制

项目的意义深入理解 Spark 的 Master 和 Worker 的通讯机制为了方便同学们看 Spark 的底层源码,命名的方式和源码保持一致.(如: 通讯消息类命名就是 一样的)加深对主从服务心跳检测机制(HeartBeat)的理解,方便以后 spark 源码二次开发。项目的需求worker注册到Master,Master完成注册,并回复worker注册成功worker定时发...

2019-12-10 05:38:34 339

原创 Scala 之并发编程模型 Akka

Akka 介绍Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时,你可以理解成 Akka 是编写并发程序的框架。Akka用Scala语言写成,同时提供了Scala和Java的开发接口。Akka主要解决的问题是:可以轻松的写出高效稳定的并发程序,程序员不再过多的考虑线程、锁和资源竞争等细节。Actor 模型用于解决什么问题处理并发问题关键是要保证共享数据...

2019-12-08 12:14:02 257

转载 理解函数里的side effects

side effects在维基百科上直接翻译为 “函数副作用”。首先要明确“副作用”这个词没有贬义成分,不是“负面作用”,而是“在满足主要功能(主作用?)的同时,顺便完成了一些其他的副要功能”。有个答主说“附作用”表示附加作用,我觉得很好。从数学的角度来讲,作为一个函数,例如 f(x) = 2x,这个函数,最重要的目的是什么?就是对于传入的x值,找到它所对应的值,在这个例子里就是 2乘以x。...

2019-12-03 08:40:04 271

原创 Scala 之控制抽象

控制抽象控制抽象是函数,并且满足如下条件参数是函数函数参数没有输入值也没有返回值实战: 使用控制抽象实现 while 语法:object AbstractControl { def main(args: Array[String]): Unit = { //myRunInThread 就是一个抽象控制 // f1 是没有输入, 也没有输出的函数 f1: () =&...

2019-12-03 07:11:14 248

原创 Scala 之函数柯里化

函数柯里化函数编程中,接受多个参数的函数都可以转化为接受单个参数的函数,这个转化过程就叫柯里化柯里化就是证明了函数只需要一个参数而已。其实我们刚才的学习过程中,已经涉及到了柯里化操作。不用设立柯里化存在的意义这样的命题。柯里化就是以函数为主体这种思想发展的必然产生的结果。(即:柯里化是面向函数思想的必然产生结果)使用常规的方式完成def mul(x: Int, y: Int) = x...

2019-12-03 06:20:40 1318

原创 Scala 之闭包

什么是闭包?(y:Int)=>x – y 返回的是一个匿名函数 ,因为该函数引用到到函数外的 x,那么 该函数和 x 整体形成一个闭包 如:这里 val f = minusxy(20) 的 f 函数就是闭包你可以这样理解,返回函数是一个对象,而 x 就是该对象的一个字段,他们共同形成一个闭包当多次调用 f 时(可以理解多次调用闭包),发现使用的是同一个 x, 所以 x 不变。在使用...

2019-12-02 14:18:59 224

原创 Scala 之高阶函数

高阶函数能够接受函数作为参数的函数,叫做高阶函数 (higher-order function)。可使应用程序更加健壮。object HigherOrderFunction { def main(args: Array[String]): Unit = { def test(f: Double => Double, f2: Double => Int, n1: Doub...

2019-12-02 13:13:20 207

原创 Scala 之参数(类型)推断

参数(类型)推断参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如list=(1,2,3) list.map() map中函数参数类型是可以推断的),同时也可以进行相应的简写。应用案例参数类型是可以推断时,可以省略参数类型当传入的函数,只有单个参数时,可以省去括号如果变量只在=>右边只出现一次,可以用_来代替//分别说明val list =...

2019-12-02 12:56:54 362

原创 Scala 之偏函数

偏函数使用构建特质的实现类(使用的方式是 PartialFunction 的匿名子类)PartialFunction 是个特质(看源码)构建偏函数时,参数形式 [Any, Int]是泛型,第一个表示参数类型,第二个表示返回参数当使用偏函数时,会遍历集合的所有元素,编译器执行流程时先执行 isDefinedAt()如果为 true ,就会执行 apply, 构建一个新的 Int 对象返回...

2019-12-02 11:25:08 183

原创 Scala 之 模式匹配详解

match 基本介绍Scala 中的模式匹配类似于 Java 中的 switch 语法,但是更加强大。模式匹配语法中,采用 match 关键字声明,每个分支采用 case 关键字进行声明,当需要匹配时, 会从第一个 case 分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下 一个分支进行判断。如果所有 case 都不匹配,那么会执行 case _ 分支,类似于 Jav...

2019-12-01 14:05:43 246

原创 Scala 之 并行计算

并行计算:Scala为了充分使用多核CPU,提供了并行集合(有别于前面的串行集合),用于多核环境的 并行计算。主要用到的算法有:Divide and conquer : 分治算法,Scala 通过 splitters(分解器),combiners(组合器)等抽象层来实现,主要原理是将计算工作分解很多任务,分发给一些处理器去完成,并将它们处理结果合并返回Work stealin 算法【学...

2019-12-01 06:49:16 606

原创 Scala 之Stream(流), View(视图)

Stream (流)stream 是一个集合。这个集合,可以用于存放无穷多个元素,但是这无穷个元素并不会一次性生 产出来,而是需要用到多大的区间,就会动态的生产,末尾元素遵循 lazy 规则 (即:要使用结果才进行 计算的) 。下面代码的意思是:Stream 集合存放的数据类型是 BigIntnumsForm 是自定义的一个函数,函数名是程序员指定的。创建的集合的第一个元素是 n , ...

2019-12-01 05:29:13 260

原创 Scala 之 拉链zip

拉链zip拉链的本质就是两个集合的合并操作,合并后每个元素是一个 对偶元组。操作的规则下图:如果两个集合个数不对应,会造成数据丢失。集合不限于 List, 也可以是其它集合比如 Array如果要取出合并后的各个对偶元组的数据,可以遍历object ZipDemo01 { def main(args: Array[String]): Unit = { // 拉链 ...

2019-12-01 02:13:15 152

原创 Scala高阶函数之 map, reduce, flatMap(扁平化), fold(折叠), scan(扫描)

高阶函数:高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑,我们约定,使用函数值作为参数,或者返回值为函数值的“函数”和“方法”,均称之为“高阶函数”。最常见的一个例子是Scala集合类(collections)的高阶函数mapobject HighOrderFunDemo02 { def...

2019-12-01 02:12:21 524

dockerpackage.zip

解压后为两个文件 一个为mycat1.6.6 的linux安装包, 一个是mycat的dockerfile

2021-06-01

Sharding-Proxy

Mysql 分库中间件 Sharding-Proxy 下载

2021-02-23

elk 5.6.4 三件套

elk三件套

2020-10-27

HW7_HaoxuanLi.rar

小作业 自己留作备用

2019-12-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除