自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 JAVA的PCES

可以add()添加,但只能添加Apple对象或其任何子类(如RedApple对象),不能添加Apple的父类 (编译器无法确定List中所保存的是Apple的哪个父类型)。(编译器认为Apple的父类不一定能转成Fruit或Apple,因为编译器无法确定List中的Apple超类具体是哪一个);的List,所以编译器无法确定List中所保存的是Fruit的哪个子类型,就无法安全地向其中添加对象);Scala一个函数类型的子类,如何保证在里氏替换原则下类型安全:参数要逆变(-),返回值要协变(+).

2023-01-21 15:37:31 1828

原创 分布式事务

在2PC中,participant在发送PREPARED消息后,收到coodinator最终决定(COMMIT / ABORT)前,无法单独决定要提交还是回滚事务,如果此时coodinator宕机,participant的事务状态无法确定,导致阻塞。以下单扣库存为例,Try 阶段占库存,Confirm阶段实际扣库存,如果库存扣减失败Cancel阶段进行回滚,释放库存。TCC不存在资源阻塞的问题,因为每个方法都直接进行事务的提交,一旦出现异常通过则Cancel进行回滚补偿,这也就是常说的。

2022-11-09 14:25:40 250

原创 Java的线程状态

线程状态

2022-10-27 16:52:26 352

原创 Java的Escape Analysis和锁优化

Java 程序运行时,JVM 会将.class字节码文件解释成机器能够识别的指令,逐条解释再执行的过程导致执行速度比可执行的二进制文件慢很多。为了解决这种问题出现了JIT(即时编译)技术。而在 JIT 的代码优化过程中,最重要的就是逃逸分析(Escape Analysis)。...

2022-08-15 13:12:29 134

原创 MySQL之事务ACID

Referencehttps://segmentfault.com/a/1190000022292918

2022-07-20 23:09:46 111

原创 Java的多线程

当变量在线程a中被修改后,其它线程工作内存中该变量的值可以立即得知改变(使得变量的修改被安全地同步到主内存中,同时使得其他线程的工作内存中对该变量的缓存失效;这样的话,其它线程必须重新去主内存中获取变量的最新值,即表现为对其它线程立即可见)线程b已完成读取操作(不会再去主内存中取值),也在执行+1操作,等线程b执行完并回写到主内存后,i的值仍然是1。volatile关键字修饰的变量,生成字节码后会在变量前后生成内存屏障,指令重排时,不能把内存屏障后面的代码排到前面执行。1.保证线程间变量的可见性。...

2022-07-20 10:49:54 131

原创 谈谈谈数仓建设

关系模型:维度模型

2022-06-12 22:58:55 63

原创 Yarn的运行流程

MapReduce程序提交Yarn流程: 不同计算引擎在Yarn上的应用主节点,应用进程和任务运行方式:

2022-06-06 20:10:30 1062

原创 Yarn的资源管理

FIFO/容量/公平 调度器

2022-06-06 19:09:03 365

原创 谈谈谈数据治理

Garbage In, Garbage Out.六大维度:

2022-06-06 19:07:18 120

原创 MapReduce流程及调优

根据输入,形成切片,并行运行MapTask。(MapTask并行度由切片数决定,每个切片对应一个MapTask)map()函数处理后得到的键值对在写入环形缓冲区前,需要先进行分区操作。(MR默认提供的分区类是HashPartitioner,可以通过继承Partitioner类并重新getPartition()方法来自定义分区)分区数应该和ReduceTask数量一致。(可以通过job.setNumReduceTasks()设置,不设置的话默认只有一个ReduceTask,最终产生一个分区)每个MapTask

2022-06-03 21:21:25 141

原创 Java的NIO

Linux的五种IO模型阻塞IO:应用进程从发起IO系统调用,至内核空间中的数据就绪,这个期间处于阻塞状态。非阻塞IO:应用进程发起IO系统调用后立刻返回。应用进程可以不断(轮询)发起IO系统调用,直至数据就绪,再将数据从内核空间拷贝到用户空间进行数据处理。(在拷贝数据的过程,进程仍然属于阻塞状态)。优点是进程发起I/O操作时,不会因为数据还没就绪而阻塞。缺点是增大了响应延迟,因为每过一段时间才会发起系统调用检查数据是否就绪,而任务可能在两次轮询之间的时间完成,这会导致整体数据吞吐量的降低;尤其是在

2022-02-04 15:23:59 607

原创 Linux的IO

操作系统的IO分为:网络IO、磁盘IO、内存IO等,我们通常考虑的是网络IO和磁盘IO。网络IO网络IO本质是socket读取sendfile普通的网络传输步骤是:操作系统将数据从磁盘复制到操作系统内核的页缓存中,应用将数据从内核缓存复制到应用缓存中,然后应用将数据写回内核的Socket缓存中,最后操作系统将数据从Socket缓存区复制到网卡缓存,然后将其通过网络发出。而通过sendfile磁盘IO磁盘IO的访问方式如下:缓存IO(标准IO)大多数文件系统的IO操作默

2022-02-03 20:23:37 856

原创 FP的范畴论

CategoryA category consists of: objects, morphisms(or arrows / maps) between the objects.for ever three the following axioms hold: associativity: if f: a -> b, g: b -> c, h: c -> d then h (gf) = (hg) f; identity: for every object, there ex

2021-12-05 15:46:26 246

原创 谈谈谈zookeeper

数据结构和存储 ZK采用树形结构,这棵树由节点组成,每个节点称为ZNode。ZNode引用方式是路径引用,比如/app1/p1,这样的层级结构让每个ZNode都有唯一的路径。每个ZNode兼具文件和目录的特点,既像文件一样维护着数据、元信息、ACL等数据结构,又像目录一样可以作为路径标识的一部分。每个ZNode节点由4部分组成:data:存储数据信息。 stat: ZNode的元数据,比如事务ID,时间戳,版本号,大小等。 ACL:记录ZNode的访问权限,那些可以访问该节点。 c...

2021-11-18 18:10:47 1170

原创 Kafka的Controller

选举controller的选举依赖于ZK,在Kafka集群启动的时候,会在ZK中创建一个临时节点/controller,每个broker启动时(broker 启动过程中会启动 controller 服务,其中涉及监听 ZK节点/controller的数据变化和选举逻辑等),都会先去访问ZK中的这个节点;如果不存在broker就会去创建这个节点,先到先得成为controller。[zk: localhost:2181(CONNECTED) 3] get /controller{"version

2021-11-18 17:56:25 1130

原创 Java的设计模式

结构型模式代理模式代理模式是为其他类提供一种代理以控制对这个类的访问。我们不直接接触目标类,而是操作代理类,代理类再去操作目标类。因为不直接接触目标类,因此我们可以在代理类的同名方法中添加或删除功能模块,而不用去修改目标类的原方法。代理模式按使用场景又分为:远程代理,虚拟代理(lazyinitialization of memory rich or heavy objects)等。静态代理:需要提前实现接口编写代理类,在编译完成后代码运行前,代理类的.class文件就已经存在; 只能..

2021-11-08 16:17:11 211

原创 Spring的IOC和AOP

IOCInversion of Control 是一种设计思想,Dependency Injection 是实现IoC的一种方法;没有IoC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后对象的创建移交给第三方。在Spring中,对象由Spring来创建、管理和装配,程序本身不创建对象,只是被动地接收对象。对象创建:默认使用对象的无参构造器,也可使用有参构造;配置文件加载时,容器中管理的对象就已经初始化了。依赖注入:利用对象

2021-11-02 20:48:07 86

原创 分库与分表

Preamble对RDB数据存储和访问机制的一种补充 针对海量请求的优化:优化sql/索引/字段;读写分离;分库分表 rule of thumb: 单表行数 >500万行 或单表容量 >2GB 时,考虑分库分表拆分方式垂直拆分垂直分库:按业务 垂直分表:按业务 / 按列每个库/表的结构不同,但需要有一列相同用来关联;优点是逻辑清晰,数据维护简单;缺点是某个业务导致单表/库数据量大时,仍有读写压力,还需要考虑对事务的处理。水平拆分水平分库/表:取模等方式每个库/表的

2021-09-30 12:50:04 72

原创 Hadoop的安全问题

Hadoop的RPC实现支持SASL,SASL除了支持身份认证外,还提供了可选的信息完整性和信息加密。 SASL(Simple Authentication and Security Layer)是网络协议中使用的认证层。SASL并不是一种协议,而是一种认证、数据完整性校验和加密的机制的框架。plain和digest-md5(较常用)。...

2021-09-26 17:33:26 616

原创 数据库之事务隔离

Read phenomenathree differentread phenomenawhen Transaction 1 reads data that Transaction 2 might have changed:dirty reads:a transaction is allowed to read data from a row that has been modified by another running transaction and not yet committed...

2021-09-13 12:47:29 165

原创 Go的面向对象

构造函数returning value or pointer in Go constructor?方法与接收器方法与函数面向过程中没有“方法”概念,只能通过结构体和函数,由使用者使用函数参数和调用关系来形成接近“方法”的概念。而Go中的方法是作用在接收器上的一个函数,因此是一种特殊类型的函数。指针接收器与值接收器指针接收器由于指针的特性,调用方法时,修改接收器指针的任意成员变量,在方法结束后,修改都是有效的。 当方法作用于非指针接收器时,Go语言会在代码运行时将接收器的值复制一份,

2021-08-13 16:03:47 52

原创 Go的多线程

sync.Cond用于协程的挂起和唤醒。sync.Cond基于互斥锁/读写锁,互斥锁sync.Mutex通常用来保护临界区和共享资源,条件变量sync.Cond用来协调想要访问共享资源的goroutine。sync.Cond通常用在多个goroutine等待,一个goroutine通知的场景。如果是一个等待,一个通知,使用互斥锁或channel就可以解决了。Communicating Sequential Process使用goroutine(一种运行在用户态的协程)和在goroutine之

2021-08-10 09:52:01 574

原创 CPython的GIL

GIL是什么In CPython, the global interpreter lock is a mutex held by the interpreter thread,that prevents multiple native threads from executing Python bytecodes at once (exactly one thread to execute at a time, even if run on a multi-core processor). This .

2021-08-09 11:32:25 120

原创 Azure Fundamentals

Cloud-computingThe delivery of computing services over the internet. These services include servers(服务器), storage, databases, networking, software, analytics, and intelligence. Cloud computing offers faster innovation, flexible resources, and economie.

2021-08-07 19:25:32 329

原创 postgreSQL的哈希索引

Hash Table (Hash Map)哈希表是根据key直接进行访问的数据结构(这一结构的实现通常采用数组),它通过把关键码值映射(这个映射函数叫做散列函数)到表中一个位置来访问记录,以加快查找的速度。ahash table(hash map) is a data structure that implements an associative array abstract data type,a structure that can map keys to values. A has...

2021-08-07 17:24:57 275

原创 postgreSQL的索引

数组索引数组中元素在内存中的存储空间是连续的,在汇编层面可以用基地址(数组名这个变量中存放的就数组中第一个元素的地址)和偏移量(数据类型+下标)进行访问。数据库索引避免遍历所有数据页来进行全表扫描,多数查询可以仅扫描少量索引页及数据页。...

2021-08-06 10:09:54 963

原创 Go的设计模式

工厂模式package mainimport "fmt"// 产品接口type Shape interface { draw()}//具体产品type Rectangle struct {}func (Rectangle) draw() { fmt.Println("Draw Rectangle")}type Square struct {}func (Square) draw() { fmt.Println("Draw Square")}type Ci

2021-07-12 17:41:06 64

原创 Go的escape analysis

1 堆与栈For declared variables in Go, they need to be allocated as objects in memory where either in the heap or on the stackStack frames:local storage space belonging to a function where stored objects are managed by the belonging frame's lifecycle a

2021-07-12 17:28:39 98

原创 传值还是传引用?

堆与栈在数据结构中:堆(heap)是一个可以被看作一棵完全二叉树的数组对象;栈(堆栈/stack)是先进后出的线性表。堆:动态分配内存的一块区域,一般由程序员手动分配,比如Java中的new、C/C++中的malloc等,都是将创建的对象或内存块放置在堆中。栈:由编译器自动分配释放,用于存放函数的参数值,局部变量。关系:对于Java,基本类型直接存储在栈上,引用类型则是值(对象)存储在堆上,对对象的引用存储在栈上。 修改引用的值,即让引用指向其它对象;而访问及修改堆上的对象: 在C/

2021-05-08 10:41:07 125

原创 python的分布式计算框架

ray作为分布式系统,ray遵循了典型的Master-Slave设计,Master负责全局协调和状态维护,Slave执行分布式计算任务关键组件Global Scheduler:Global Control State:Object Store:Worker:主要API启动:ray.init() 该方法可以加参数,如num_cpus等远程函数:put和get:用作python对象和对象ID之间的转换任务依赖:Actors:ray.wait():da.

2021-04-10 14:41:12 479

原创 集合论

Cantor's theoremthe cardinality (numerical size) of a set is strictly less than the cardinality of its power set (the set of all subsets)Reference计算机与数学

2021-04-08 22:18:23 105

原创 计算复杂性

1

2021-04-06 20:58:19 50

原创 评价方法-秩和比

秩和比的精髓不在前半部分的根据秩次为评价对象排序,而在于后半部分的正态离差分档。做综合评价时,可以利用TOPSIS等更加细腻的方法为评价对象排序,再与秩和比法结合进行分档。CodeReferenceRSR(秩和比综合评价法)介绍及python3实现...

2021-03-25 11:50:27 2643

原创 AB实验的基本概念

下面以产品改版为例,则:H0:改动有用 H1:改动没用Significance level of a test (α):原假设为真时, 却拒绝原假设(Type I Error / 改动实际没用,但错误地认为它有用)的概率Power of a test(1−β):原假设为假时,却接受原假设(Type II Error / 改动实际有用,但错误地认为它没用)的概率...

2021-03-24 11:31:21 498

原创 Linux的常用命令

The differences betweensh,sourceand./:source foo.sh ( . foo.sh):read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename (so attributes and environment of the cu...

2021-03-22 13:50:10 135 1

原创 Linux的基础知识

DOS:disk operating system. DOS systemuse a command-line interface. 是Windows系统之前的一个操作系统名称,属于单用户单任务式的,特点通常是黑底白字,用户全靠键盘输入命令来完成所有工作。之后Windows诞生了,属于多用户多任务式的(系统名称都是多窗口),初期当然还得使DOS系统可用,再之后专门开辟个cmd窗口来模仿DOS界面及大多数的命令,也称为命令行,这就是cmd命令行的诞生。CMD:操作系统可以分成kernel和s..

2021-03-22 13:49:27 60

原创 因果分析

Causality Problems(相关不一定是因果):伪关系:Y和X只是恰巧同时发生,实际上没有明显的逻辑上的关联,如巧克力销量和诺奖得主数量 遗漏变量偏差:存在既影响X也影响Y的混淆变量,如年龄混淆了年收入和罹患癌症几率之间的关系 幸存者偏差:部分样本没有被收集到 反向因果因果分析的核心:identification:将因果关系从关联中分割 estimation:计算因果关系的大小 inference:基于统计的推断(有多大的信心结果是正确的Hypothesis testing,结

2021-02-28 16:45:20 810

原创 机器学习可解释性

shapley valuesMachine Learning Explainability

2021-02-27 21:47:02 75

原创 Hive-高级操作

复杂数据类型array, map, struct...访问复杂数据类型:array[n], map[key], struct.xBuilt-in Functionsconcat_ws():连接字符串,需要制定分隔符(concat with separator)get_json_object():$: Root object; .: Child operatorBuilt-in Aggregate Functions (UDAF)collect_set():将某字段的...

2021-02-25 14:17:09 462

空空如也

空空如也

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

TA关注的人

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