自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

treblez's blog

私は誰だと思いますか!

  • 博客(127)
  • 收藏
  • 关注

原创 HPC -- 基础理论

面九坤的时候被会HPC的面试官吊打了,九坤的面试官给了一个评价:能进面的是合格的程序员,会HPC的才是优秀的程序员。我对于HPC的了解只有https://www.yuque.com/treblez/qksu6c/nqe8ip59cwegl6rk?singleDoc# 《从微架构到向量化–CPU性能优化指北》这么多,还是要深入学习一下。本文是https://en.algorithmica.org/hpc/和 https://weedge.github.io/perf-book-cn/zh/的阅读笔记。Pi

2024-04-12 15:34:35 876

原创 Linux调优指南

本文不会讲解基础知识。

2024-02-19 21:27:35 1072

原创 数据检索:倒排索引加速、top-k和k最邻近

之前在《Elasticsearch: 非结构化的数据搜索》我们看了ES的设计,主要侧重于它分布式的设计以及LSM-Tree,今天我们来关注算法部分:如何进行检索算法的设计以及如何加速倒排索引。然后看看topk的面试热门题如何解决。

2024-02-16 13:39:50 1058

原创 Elasticsearch: 非结构化的数据搜索

聚合是在ES中实现的,而非Lucene。· Query和Fetch请求之间是无状态的,除非是scroll方式。· 分页搜索不会单独“cache”,cache和分页没有关系。· 每次分页的请求都是一次重新搜索的过程,而不是从第一次搜索的结果中获取。看上去不太符合常规的做法,事实上互联网的搜索引擎都是重新执行了搜索过程:人们基本只看前几页,很少深度分页;重新执行一次搜索很快;如果缓存第一次搜索结果等待翻页命中,则这种缓存的代价较大,意义却不大,因此不如重新执行一次搜索。

2024-02-08 11:15:27 1489

原创 Fate-Serving推理服务源码解读

fate-serving是FATE的在线部分,在使用FATE进行联邦建模完成之后,可以使用fate-serving进行包括单笔预测、多笔预测以及多host预测在内的在线联合预测。

2024-02-06 10:23:09 963

原创 Nginx: a little source code

Nginx被称为C++程序员必学的源码之一,我觉得名副其实,它的事件机制、内存管理、进程通信都可以说是顶级实践,非常值得学习。Nginx源码比较多,本文只看几个重要的模块,更详细的内容请参考《深入理解nginx模块开发与架构》,这本书内容很全,本文只能是跟在后面做一点东施效颦的解读了。

2024-02-05 21:27:50 903

原创 secretflow推理服务源码解读

model_bundle是一个proto定义, 包含了完整的模型信息。GraphDef是执行图的定义,包括了一组携带数据的节点信息(NodeDef)和一组图的执行信息(ExecutionDef)。// 节点OP的属性// INT// FLOAT// STRING// BOOLbool b = 6;

2024-01-24 19:29:40 92

原创 olap/clickhouse keeper 一致性协调服务

在《Redis集群:分布式的less is more》中我提到,无论是啥服务,想要达到操作视角的强一致性,要么使用类似TSO/原子钟的方案,要么有一套一致性协调服务。clickhouse最初是用zookeeper的,在 21.8 版本中开始引入了 ClickHouse-Keeper ,直至 ClickHouse 21.12 发布公告提到 ClickHouse Keeper 功能基本完成。

2024-01-20 11:54:00 1275

原创 brpc: a little source code

之前在《olap/clickhouse-编译器优化与向量化》中我谈过brpc的汇编控制bthread。本文就来看一下brpc作为一个高性能的rpc实现,除了自定义线程栈之外,代码还有什么优秀之处。因为时间原因,本文不做深入分析,只是解读下几个有意思的模块。

2024-01-13 00:03:51 860

原创 olap/spark-tungsten:codegen

15721这一章没什么好说的,不再贴课程内容了。codegen和simd在工业界一般只会选一种实现。比如phothon之前用codegen,然后改成了向量化引擎。一般gen的都是weld IR/LLVM IR/当前语言,gen成C++的也要检查是不是有本地预编译版本,要不没法用。因为clickhouse没有codegen,这节课就拿我比较熟悉的spark的tungsten来当例子,tungsten会gen成scala,然后拿janino动态编译。

2024-01-07 13:17:51 1032

原创 从《数据库索引设计与优化》看mysql索引设计

对于INSERT_SELECT型数据库,如果没有事务的要求,更倾向于选择MyISAM。下面两个图可以说明聚集索引和非聚集索引的结构。如果业务需要事务、外键、crash-safe能力,那就应当选择InnoDB。

2024-01-05 17:09:56 408

原创 olap/clickhouse-存储

Dremel 格式的设计目的就是按列来存储 Protobuf 的数据。由于 repeated 字段的存在,这要比按列存储关系型的数据困难一些。一般的思路可能是用终止符表示每个 repeat 结束,

2023-12-24 16:48:01 1180

原创 olap/clickhouse-编译器优化与向量化

本文主要结合15721和clickhouse源码来聊聊向量化,正好我最近也在用Eigen做算子加速,了解下还是有好处的。

2023-12-17 18:44:27 1809

原创 ptmalloc:从内存虚拟化说起

本文并不局限于ptmalloc的原理,而是从linux的内存虚拟化和系统调用原理出发,结合各种语言实现,讲明内存分配方面的trade off,力图事无巨细,追根究底。本文内容包括但不限于:NIO原理、0拷贝原理、内存虚拟化、GC和内存分配、PCB结构、mmap原理和场景、JVM内存分配细节、缺页异常中断、PTE、物理页分配、驻留内存、malloc分配原理、ptmalloc的设计和缺陷、mimalloc设计。glibc提供了一组在所有Linux发行版上都可用的标准化函数。

2023-12-10 19:14:47 158

原创 Redis集群:分布式的less is more

(Chain Replication with Apportioned Queries: 读均摊的链式复制) 这篇论文对于上述问题进行了改进,同时还提供了weak consistency的支持,在低一致性需求的workload下提高性能。思考:链式同步和半同步各有什么优劣?为什么现在都不使用无主复制了?

2023-12-10 19:13:01 405

原创 SQL编译优化原理

RuleQueue 是一个优先队列,包含当前所有可行的 RuleMatch,findBestExpr() 时每次循环中我们从中取出优先级最高的并 apply,再根据 apply 的结果更新队列……普通的逻辑树都是从叶子节点往根结点执行的,但是CorreltedJoin的右子树会被带入左子树的行的值反复的执行。这种方法可以避免对无关的子查询和计划进行搜索,从而提高查询优化的效率。Program:一个SQL查询解析和优化的过程集合,可以将多个子过程组合在一起,以便进行SQL查询的解析和优化。

2023-07-29 09:27:30 506

原创 来点八股文(二) 文件IO

stat返回与此命名文件有关的信息结构,fstat获得已在描述符fieldes上打开的文件信息,lstat类似于stat,但是当文件是一个符号链接时,返回该符号链接的有关信息。如果文件偏移量大于当前文件长度,对于文件的下一次写将会延长该文件,并且形成一个空洞,对于文件中没有写过的字节都被读为0。若一个文件用lseek被定位到文件当前的尾端,则文件表项中的当前文件位移量被设置为i节点表项中的当前文件长度。虚拟的文件路径,每个进程各有一个,打开文件/dev/fd/n等效于复制描述符n(假定描述符n是打开的)。

2023-04-09 22:50:31 430 1

原创 A Little Scala, A Few Types

and名字(Names,Scope,Bindings)、控制流(control flow)、类型系统和复合类型(type system and composite types)、子程序和控制抽象(subroutines and control abstraction)、数据抽象和面向对象(data abstraction and object orientation)是PL(Programming Language)的核心特性(Feature)。了解任何一种语言都要学习它所提供的这些特性。

2023-04-07 13:33:00 501

原创 [HackerRank] [haskell]刷题记录

【代码】[HackerRank] 刷题记录。

2022-10-23 23:32:31 491

翻译 [openjdk][翻译]为类型擦除辩护

…(同构的泛型)这种方式具有一个强大的优势,这个优势无法由其他方法获得,那就是:逐步迁移的兼容性。这是一种不破坏现有的源代码或二进制类文件的情况下,把非泛型类兼容的转换为泛型类的能力”

2022-10-23 02:12:34 205

原创 [PLT] Programming Lanaguage Features

代数数据类型借鉴了代数学中的概念,作为一种函数式数据结构,体现了函数范式的数学意义。通常,代数数据类型不包含任何行为。它利用和类型(Sum Type)来展示相同抽象概念的不同组合,使用积类型(Product Type)来展示同一个概念不同属性的组合。

2022-10-17 23:47:14 399

转载 [转]编码字符集(Unicode、UCS)和字符集编码(UTF-8、UTF-16、UTF-32)以及surrogates、code point和code unit

今天看到一篇特别好的文章,转发一下。原链接:http://www.360doc.com/content/12/0420/13/9470897_205152817.shtml简单来说:Unicode和UCS都是编码字符集,而UTF-8、UTF-16、UTF-32指的是字符集编码,至于GB2312,GBK 指的既是编码字符集也是字符集编码。所谓surrogates,是UTF-16在编码时采用的一种方案:补充字符使用两个char型变量来表示,这两个char型变量就组成了所谓的surrogate pair(在底层

2022-10-17 14:13:44 893

原创 Basic Category Theory 基本猫论

algebraic topology researchers们发现,在定义“natural tranformation”之前,必须定义“functor”,在定义“functor”之前,必须定义“category”(在范畴论中的幺半群其实就是用morphism重新定义结合律(笛卡尔积)和单位元的过程,在范畴论中,笛卡尔积等同于product,单位元等同于terminal)环(ring)被认为有乘法单位元(multiplicative idenetity),环的同态则被认为保持乘法单位元的性质。

2022-10-15 23:48:27 554

原创 [计算模型]%90的银弹

抽象原则是对于人类等思维能力有限的智能体来说,最成功的系统构建原则。它将所有系统分解为两个部分:规范和实现。区别规范/实现的是,规范通常比实现更容易理解。系统应该具有哪些属性才能最好地支持抽象原则?Encapsulation 封装。封装应该可以隐藏零件的内部。Compositionality 组合性。应该可以组合部件来制造新部件。Instantiation/invocation 实例化/调用。可以基于单个定义创建零件的多个实例。这些实例在创建时“插入”到它们的环境中。

2022-10-08 00:16:26 283

原创 [PLT] 概念笔记

在对象变量上取值的变量称为元变量,不含自由变量的项称为封闭项,封闭项也称为组合子,最简单的组合子称为恒等函数 id = lambdax(x)只输出其变元。纯lambda演算是图灵完备的,为了解决结果的发散问题,有两种方案,第一种使用项的类型注释来显式检查类型的结果,第二种是使用类型检查器自己推导或者重构这个信息。给定语言中能够使用类型系统消除的错误一般称为运行时类型错误runtime type error,一般的类型系统相对直接的检查能够校验简单的类型错误和数组越界。操作语义(将语言视为抽象的自动机)...

2022-08-08 17:16:17 278

原创 [Machine Learning] Programming Exercise 1: Linear Regression

吴恩达机器学习课后作业。因为这学期内容不全,所以用的往年的题目。

2022-07-05 14:36:29 203

原创 [PaperNote] Web3 Direction

Web 3方向的论文阅读笔记。Bitcoin、BlockStack、Ethereum White Paper三篇均可以从Mit 6.824中找到。数字签名能够满足“在线的双方直接交易而不通过第三方的经济机构”的要求,但是无法防止double-spending的问题。同时,中间机构数字货币不能进行不可逆的交易,同时需要支付中间费用。double-spending是指加密货币可能被使用两次或两次以上的风险。如果满足特定条件,区块链内的交易信息可以更改。为了解决这些问题,提出了一种点对点的方案,通过网络时间

2022-06-04 18:08:56 2483

原创 [PaperNote] Confidential Computing Direction

用来记录Confidential Computing方向论文的阅读笔记。文章目录occlum前置知识lib os组成安全性分析实现occlum前置知识SGX(software guard extensions)创建一个用户私有的空间存储隐私数据,叫做enclaves(飞地)将库操作系统libos引入到SGX中,从而应用程序能够使用很少的更改就能够获得足够的安全性。SGX应该能够支持多线程,但是现存的SGX libos不能兼顾效率和安全。occlum是一种兼顾效率与安全的sgx libos

2022-05-30 10:44:34 730

原创 Weekly 5.28

文章目录JavaSpring Boot 即将迎来3.0IntelliJ UI征集中OPENJDK发起了旨在解决Java启动速度慢等问题的Leyden项目使用SonarLint检查代码生产环境中使用Datafaker获取可用数据使用Cleaners替换FinalizerJava Newscast 25几篇博客JavaSpring Boot 即将迎来3.0Spring Boot 即将迎来3.0Spring Boot自2018年发布2.x以来已经维护了4年,并且发布了95个不同的版本。Spring Bo

2022-05-28 23:52:28 184

原创 Software Foundation - Coq 函数式编程 (Basics) 题解

文章目录Perface回顾一下<<永恒的金色对角线>>PerfaceCoqCoq 成为了研究员对复杂的语言定义进行描述和论证的标准工具。 例如,它被用来检查 JavaCard 平台的安全性,得到了最高等级的通用准则验证, 它还被用在 x86 和 LLVM 指令集以及 C 等编程语言的形式化规范中。作为一个’形式化软件验证的开发环境’,Coq 被用来构建: CompCert,一个完全验证的 C 优化编译器; CertiKos,一个完全验证的工具,用于证明涉及浮点数的精妙算法的

2022-04-04 12:03:54 1547 2

原创 [Haskell] CIS 194: Homework 9-12

文章目录functorsfunctors先介绍了一下kinds就是type的typehaskell的类型系统中,type就是不相交的值的集合,type class就是集合的集合而Maybe则是一个*->*类型的type constructorPrelude> :k [][] :: * -> *Prelude :k [] Int[] Int :: *Prelude> :k [Int] -- special syntax for [] Int[Int] :: *P

2022-03-26 23:22:49 887

原创 [Haskell] CIS 194: Homework 5-8

文章目录type classesHomeWork 5Lazy evaluationtype classestype classes:对类型进行操作的类type-class polymorphic:类型类多态,相当于type classes的接口函数所以类型类Eq a =>进行类型约束,标志着a类型必须实现了==和/=关于Gradual Typing静态和动态的概念总是容易混淆,Gradual Typing指的是允许程序的一部分使用动态类型(Dynamically typed)而另一部分使用

2022-03-12 12:36:34 613

原创 [Haskell] CIS 194: Homework 1-4

文章目录higher-orderhigher-order介绍了很多重要的概念,首先是Anonymous functions和operator sectionPrelude> (\x y z -> [x,2*y,3*z]) 5 6 3[5,12,9]Prelude> (>100) 102True然后是Function composition,用.来表示运算优先级并且省略参数:myTest xs = even (length (greaterThan100 xs))

2022-03-10 12:05:07 261

原创 [翻译]为什么静态语言会受到复杂性的影响?

翻译自Why Static Languages Suffer From Complexity?文章目录前言Record type - Array补充Scala HListsScala implicitRust traitScala case classesScala MonoidScala Context BoundsScala异构(IsoMerism)前言编程语言设计界的人们努力使他们的语言更具表现力,具有更强大的类型系统,主要是通过避免最终软件中的代码重复来增加代码开发的效率,然而,他们的语言越

2022-02-06 23:39:56 307

原创 MIT6.830 simple-db lab1

文章目录简介及类图TupleDesc.javaTuple.javaCatalog.javaBufferPool.javaSeqSacn.java简介及类图第一个lab主要是熟悉一下项目结构,完善一下几个简单的基础类,除了SeqScan需要自己写Iterator之外难度不大TupleDesc.javapackage simpledb.storage;import simpledb.common.Type;import java.io.Serializable;import java.uti

2022-01-30 11:52:58 1874

原创 来点八股文(一) 分布式理论及应用

由6.824和Hadoop技术资料整理,持续更新中文章目录6.824Spark架构RDD算子转换算子执行算子SparkSQL6.824什么是CAP?一致性 可用性 分区容错性分区容错是必然要提供的一个特性,如果要保证一致性,那么可用性不能得到保障。云服务厂商一般提供5个9的可用性保障。简述一下GFS的一致性策略?元数据的写入是加锁串行的无并发写一个chunk的时候,当三个副本全部写成功的时候才会返回成功,否则返回失败这将导致GFS系统中文件的不一致性有并发的时候由primary

2022-01-24 09:24:39 2817

原创 《程序设计语言 实践之路》书评

私以为plp是比csapp、算法导论更值得一读的书。一门或者几门语言从来不是编程的全部,而是有横亘在这一切上面,更加伟岸的存在——它无情揭露Syntactic Sugar和Type Enforcement的诡计,它大声宣告IDE和compiler隐藏的Grammar和Semantic的真相,它大笔描摹IR和assembly的前世今生,它向人们布道有关Functional和Side Effect的一切,语言不只有Imperative,FP没有Silver Bullet!于是,scope和lifetime不

2022-01-02 17:17:31 588

原创 Programming Language Pragmatics 课后题九、十 构造可运行程序 数据抽象和面向对象

第九章讲了IF和编译连接,给出了Ada的Dinan和GNU的例子,介绍了名字解析,重定位,可执行,寄存器卸载,位置无关代码的概念

2021-12-01 16:06:42 392

原创 MIT 6.824 Part 2B: log

package raft//// this is an outline of the API that raft must expose to// the service (or tester). see comments below for// each of these functions for more details.//// rf = Make(...)// create a new Raft server.// rf.Start(command interface{})

2021-11-27 14:49:34 513

原创 Programming Language Pragmatics 习题解答七(类型系统)、八(子程序和控制抽象)

什么是类型系统?(1)包括一种定义类型并将它们与特定的语言结构相关联的机制以及(2)一集有关类型等价、类型相容和类型推理的规则。这些机制大多数都是Pascal、Modula、Algol、ML、Ada这些语言中提出的“计算机科学中的大多数问题都可以通过增加一层间接性来解决。”文章目录类型在程序设计中起着什么作用?类型为许多操作提供隐藏的上下文环境,使程序员不必显式地描述这种环境。类型限制合法程序中可以执行地操作集合。类型等价和类型相容之间的不同在哪里?类型等价规定两个值的类型何时相同,类

2021-11-26 09:56:37 527

空空如也

空空如也

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

TA关注的人

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