自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 缓存更新策略

数据写到缓存无非两种情况。应用读缓存没有命中时,会去读db然后再将读取的数据写到缓存。应用更新db中数据后,再更新缓存。所以更新缓存的方式可以分为以下几种:1、先删缓存再更新db对同一个key并发读写缓存可能导致缓存脏数据,一直到下一次数据更新或者缓存失效。更新查询删除缓存读缓存(空)读db(a=1)更新db(a=100)写缓存如上图,缓存a=1,但是数据库a=100。2、先更新db再删缓存查询缓存,没有命中,从db读数据后

2021-05-06 08:42:13 203

原创 The Log-structured merge-tree

1、写入过程数据顺序写入WAL,保证数据不丢。写入memtable,memtable是按key排序的skiplist。写入memtable后返回客户端写入成功。memtable写满后(默认32M),转换为immutable memtable。后台线程将immutable memtable刷到磁盘,磁盘数据分层存储,L0层是immutable memtable的存储层所以文件内有序,文件之间key是无序的。上层文件少,下层文件多, 一般下一层是上一层的10倍。上层写满后,数据被merge到下一层,

2021-05-05 21:38:28 171

原创 go-grpc

1、环境搭建# 安装官方的protoc工具https://github.com/protocolbuffers/protobuf/releases# 生成golang代码生成插件go get -u github.com/golang/protobuf/protoc-gen-go# 安装protoc引入的依赖go get google.golang.org/protobuf/reflect/protoreflectgo get google.golang.org/protobuf/runtime

2021-05-05 19:58:42 130

原创 k8s 安装

1. 环境准备yum install -y wgetmv /etc/yum.repos.d /etc/yum.repos.d.backupmkdir -p /etc/yum.repos.dwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repomv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup mv /et

2021-04-25 22:11:58 260

原创 Docker 学习笔记

Docker 学习笔记1、云计算云计算 – 计算机资源集中起来,并放在网络上。名称定义例子IaaSCPU 磁盘 网卡阿里云Paas把操作系统(例如Windows、Linux)装好,把数据库软件装好,我再来使用新浪云、DokcerSaaS具体的应用如FTP装好那么如何部署多样化多层次的云计算服务?手工?不现实。需要自动化,: 依靠软件和平台,负责对资源进行快速调用和集中管理。2、虚拟化Hypervisor 完成物理资源虚拟化的操作。是一种运行在基础

2021-04-25 19:03:06 85

原创 列式存储

OLAP中数据存储的问题OLAP 需要队列进行选择,行式存储按行存数据,使用索引加快对数据的查找(索引包括聚集索引(表记录的排列顺序与索引的排列顺序一致)和非聚簇索引(非聚集索引指定了表中记录的逻辑顺序,但记录的物理顺序和索引的顺序不一致))。这种方式对按列的存储和检索不是很高效,查询某一列数据需要将所有行的数据扫描一次,而且对统计分析也不友好。列式存储原理若使用列式存储可以只用扫描出需要的列,行、列存储的对比。文件格式parquet 文件格式:如下图所示:parquet file = hea

2021-04-23 09:41:26 1218 1

原创 机器学习起步

对于任何一个object都有可以描述他的特征,比如一个人的特征有身高、体重、肤色、血型、性别等,从这些特征中可以选择出一些标签来对这个object进行分类,还是以人这个class来距离,若用血型来做标签,就可以将人分为A、B、C、D型等血型的人,若可以用一个方程 F 来表述特征与标签的关系,即 F( weight, height … ) -> label , 很明显这个工作就是分类,通过已有数据—测试数据,求得这个函数F,然后将新产生的数据应用到这个F上得到新数据的分类,函数F对新数据的分类结果与实时

2021-04-22 14:31:08 77

原创 大数据面试之路

时间:2021-04-21公司:中交xx印象比较深的问题:spark 二次排序,思路跟面试官不一样,给面试官的印象spark core 代码能力不足,写了好几年c/c++,居然给人留下的印象是代码能力不足,我 ozo。其实简历里也只写了flink 项目经验,后面再自己练习练习吧。唯一庆幸的是面试官觉得俺其他方面都还不错。公司:huizewang印象比较深的问题:从mysql索引,java hashmap,hive, hbase,kafka 到flink都,中间居然忘记了mysql的聚集索引。被问到h

2021-04-21 23:57:19 84

原创 阅读计划

《机器学习》周志华《神经网络与深度学习》邱锡鹏《百面机器学习》hulu 机器学习团队《推荐系统实践》项亮

2021-04-19 22:03:22 62

原创 大数据开发面试之路

数据结构和算法篇list 反转,合并,两个list 是否相交。排序。二叉树,最近公共祖先。DFSBFS动态规划。编程语言篇–JavaHashMap的实现,与ConcurrentHashMap区别。volatile 的作用,与synchronize 的异同。了解的设计模式,单例模式的实现。Hadoop篇MapReduce作业流程,其中有几次排序。Yarn任务调度过程,Yarn的调度方法。MR Shuffle 过程。Hiverow_number 与 rank 的区别

2021-04-16 19:24:38 249

原创 机器学习之概观

一、如何学习某些特征会表现出固定的变化趋势,蕴含着明显的规律性,这种规律性被称为“模式”(pattern)。机器学习侧重于将预先设定的准确率等指标最大化,模式识别就更注重于潜在模式的提取与解释。一个具有解析解的问题是完全不需要机器学习的。如流体力学中的问题,即使有一万个未知数的问题也可通过一万个方程的方程组解决,就像“能用钱解决的问题都不是问题“一样,能用纯计算解决的问题也不是(需要先进方法的)问题。用机器学习解决问题还需要一个条件,就是大量的可用数据(data)。什么样的问题才能通过机器学习来解

2021-04-03 16:40:32 121

原创 Spark之SparkStreaming

Spark Streaming的编程抽象是离散化流,也就是DStream。它是一个 RDD 序列,每个RDD代表数据流中一个时间片内的数据。Spark Streaming为每个输入源启动对应的接收器。接收器运行在Executor中,从输入源收集数据并保存为 RDD默认情况下接收到的数据后会复制到另一个Executor中,进行容错;Driver 中的 StreamingContext 会周期性地运行 Spark 作业来处理这些数据。SparkStreaming 执行流程client 提交Spar

2021-03-20 12:01:30 226 1

原创 Spark SQL

数据类型

2021-03-19 12:34:46 58

原创 Spark基础

spark是什么Spark 计算模式也是属于MapReduce 模式。Spark框架是对MR框架的优化。两者的对比DiffMRSpark数据存储HDFS的splitRDD对数据计算编程范式Map Reduce 表达能力不强算子操作计算过程落盘数据,IO代价大中间结果在内存运行方式进程运行TaskTask以线程方式执行大数据应用主要有分类框架离线处理MapReduce交互式查询hive流处理storm

2021-03-19 12:01:43 104

原创 Java并发编程之AQS

多线程编程中锁和线程的相互协作的Lock/Semaphore 很类似,都是拿到一个锁或凭证,然后进入临界区,完事儿后释放锁。都需管理状态的原子性线程的阻塞与解除管理队列如果每个并发工具类都是给自维护这些功能,将有很多重复代码,大佬们当然不会这么干,所以就出现了AQS (AbstractQueuedSynchronizer),作为一个用于构建锁和同步器等线程协作工具类的框架,基于它就可以开发新的协作类。管理状态的原子性在信号量中需要一个state,表示剩余许可证的数量。在CountdownL

2021-03-19 08:58:31 68

原创 Java并发编程之内存模型

C++/C代码都是直接编译成可执行文件的,主要有堆、栈、常量区、文本区等。而java编译成class交给JVM执行,这里开始就和C++很不一样了。JVM内存结构和JVM的runtime·有关。Java内存模型和Java并发编程有关。JVM内存结构包含堆、虚拟机栈、方法区(常量池、字段和方法数据)、本地方法栈、程序计数器和运行时常量池等。而出现Java内存模型是为了JVM实现遵守这个规范,否则不同的JVM实现可能不一样。JMM最重要的就是重排序、原子性和可见性。可见性时java代码比较特殊的部分,每

2021-03-18 21:54:54 52

原创 java并发编程之线程协作

既然多线程是为了提升效率,共同干活,那相互之间的协作也难免。main线程起了多个线程,可以用countdownlatch来倒计数,等倒数到零时即可开始往下运行。类似于限流中的令牌桶,semaphore可以限制线程池同时运行的线程数量。public class SemaphoreDemo { static Semaphore semaphore = new Semaphore(3); public static void main(String[] args) { E

2021-03-18 21:34:56 73

原创 Java并发编程值future

多线程编程中,对于干活得线程不会将任务的返回值带出来,而且对于exception 也只能catch,没法throw。Java 提供了Callable 接口public interface Callable<V> { V call() throws Exception;}实现这个接口的类就是可以被其他线程执行的任务,返回值和异常抛出就很明了了。而且可以和Future 类配合,来了解任务执行情况,或者取消任务,也能获取返回结果。在...

2021-03-18 15:47:57 60

原创 java并发编程之ThreadLocal

不管用那种语言,在并发编程中遇见的问题都是类似的,只不每种语言提供的方法和工具不一样而已。对于每个线程独享某个对象或者每个线程独立保存信息的场景,java提供的解决方法是ThreadLocal ,对于线程独享某个对象的例子public class ThreadLocalDemo { public static ExecutorService threadPool = Executors.newFixedThreadPool(16); SimpleDateFormat dateForma

2021-03-18 14:45:16 107

原创 java并发编程之阻塞队列

数据结构中队列就是先进先出的结构,加上点算法可以实现优先队列,再加上线程安全就可以形成下图这里还多了个阻塞队列,阻塞队列可以凭很生产与消费的速率,即take/put的快慢调节,它是线程安全的,这样就将需要程序员维护的线程安全问题转移到队列上了。一般数据结构类中都需要定义这个容器的大小,LinkedBlockingQueue 中这个上限值是Integer.MAX_VALUE。阻塞队列提供了增删方法,但是这些方法可以分为三类,一类是当条件不满足时会抛出异常,一类是不满足条件时会返回bool值,不会抛异常

2021-03-18 11:05:55 100

原创 Java并发编程之容器

与C99相比,java还有比较丰富的并发包支持。这样可以按业务选择并发容器,不用自己再手撸一个或者是在用容器时考虑加解锁。和a++这样的非原子性操作类似,容器元素的put/get操作也是非原子的,多线程中非原子操作就要考虑数据正确性了,当然容器的扩容也有可能导致出现问题,比如下面这段代码public class HashMapNotSafe { public static void main(String[] args) { final Map<Integer, St

2021-03-18 10:09:45 40

原创 Java并发编程

虽然并发编程在本质上是一样的,但是不同语言的切换也需要去了解一下java的并发编程套路,写一篇总结一下以备忘,是为记。和C++类似java也有锁Reentrantlock,然后再用condition来做判断。多线程的问题一般是结果出错/初始化顺序问题/活跃性(活跃性是指活锁和死锁)三种问题。和C11不用的是,java有线程并发包和线程池,不用再自己手撸线程池。 public static void main(String[] args) { ExecutorService s

2021-03-17 22:14:00 109 1

原创 flink task与slot

前面几篇都是从自己开发的角度来思考该怎么做实时计算,但是思路切到去理解flink是怎么实现的话就需要从另一个角度去学习了。flink 将一个应用划分为多个task,放在taskslot中执行,什么是taskslot呢?flink将节点分为了jobmanager和taskmanager,在taskmanager上启动的是一个jvm进程,每个taskmanager上jvm进程中的taskslot数量是根据flink的配置文件来的。为了避免内存竞争就引入了taskslot,但是taskslot的作用就是隔离内存

2021-03-17 10:43:27 961

原创 Flink 核心

分布式缓存故障恢复故障重启策略发生错误的task 需要重启当前region固定延迟重启策略模式几种重启模式并行度task - subtask四种设置方法窗口todo集群搭建测试重启

2021-03-17 09:33:30 57

原创 大数据之推荐系统梗概---以ALS隐语义模型为例

看过视频网站的小伙伴们有好奇过每次打开app出现的内容究竟是怎么来的呢,为啥自己的和别人的会不一样呢,接下来就开始我们的解密之旅。当我们注册一个网站会员的时候多半会让我们挑选自己感兴趣的频道,这样系统会根据我们的选择为我们推荐相关的内容了。不过不注册会员好像每次也能看见和自己看过内容相关的推送呢,这就是根据观看历史来推荐了,后台根据ip或相关范围也可以推荐到你相关的内容,最明显的例子就是可能在华南地区打开app和在华北地区打开app你看到的内容会有一些差异了。我们暂且将推荐系统后端分为实时推荐、离线推荐

2021-03-11 21:14:00 594

原创 为什么要用Flink--从需求到应用

很早之前就看过《三傻大闹宝莱坞》很是崇拜里面的主角兰彻,除了他的聪明以外,更重要的是他的学习方法,以及事事都能看清本质的能力。都说学会学习比学习更重要,虽然自己也在保持学习,但好像没有什么明显进步,学的多忘记的也多,一直在寻找合适的学习方法。所以开始以一种从需求和已有知识出发去理解和学习新知识的方法来学习,而不是一上来就学习某个框架怎么做的,有哪些组件,干什么的。好,回归主题,这篇聊聊实时计算。实时计算?不就是把数据从数据流拿进来按需求算一下,例如什么最大最小值、平均值之类的,抑或是统计一下流进来的数据

2021-03-11 11:29:38 653 1

原创 数仓之拉链表-从需求到实现

拉链表某天领导提了个需求,需要按某段时间,比如按天为单位,来记录订单的状态,需要从时间上能对状态进行跟踪,比如2020-01-01 下单的某一订单,2020-01-02 客户支付,2020-01-03 ~ 2020-01-05之间这笔单在运输途中,2020-01-06用户退单了这么一过程,这咋弄呢?面对问题,真男人不能怂,有了问题就解决问题吧。先来看看我们手里有什么数据呢?从业务开发兄弟那边得到订单数据放在DB里,每条订单只有一条订单记录和若干条状态流水。ok,这下有了数据就该我们动脑子想想怎么办了。

2021-03-11 09:21:49 237

原创 MapReduce

MapReduce话接上篇,既然HDFS将文件分分散存放在各个节点了,那么也就可以在每个存储节点来单独计算了,毕竟人多力量大。没错,MapReduce 就是这么干的,调用Hadoop 提供的API,将map任务和reduce任务写好,打包上传到Hadoop框架就可以由集权来调度资源执行计算任务了,至于如何调度下篇再聊,这里主要聊一下map-reduce。为什么时map-reduce呢,先来看一下归并排序public void mergeSort (int[] arr, int begin, int e

2021-03-10 22:37:28 71

原创 Hadoop基础

Hadoop欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;

2021-03-10 20:03:44 92 1

原创 zk基础及使用

1、zk基础:1.1、ZAB 协议唯一leder保证了所有事务全局有序,follower 收到事务请求需要转发给leaderZAB 协议定义的两种模式:崩溃恢复和消息传播。恢复模式:集群启动、leader 崩溃(leader 与 follower 网络中断等)时 集群处于恢复模式,对外不可用;消息广播:过半的follower 同步了leader的状态后,集群进入广播模式,此时新加入的节点...

2020-03-13 16:58:16 604

原创 HTTP(1/S/2/3)

概述简单介绍一下HTTP的基础内容,及其在应用方面的缺点,由此引出HTTPS协议所作出的改进。HTTPS(HTTP over TLS)基于TLS保证其安全性,因而对TLS也进行了简单介绍;HTTP是什么HTTP 全名 hypertext transport protocal, 一种无状态的,工作在应用层的,以请求、应答方式运行的协议,语义可扩展,与基于网络的超文本信息系统灵活互动(RFC7...

2020-03-13 16:29:40 693

原创 版本冲突与变基

概述除了常用的git add/commit/push/pull/branch/checkout 等常规操作外,git 还有两个在生产中某些关键时刻可以解决问题的命令:git reset / rebasereset / revert昨晚上线的版本有bug,需要回滚到某一个commitgit reset --soft head^git reset --hard head^git reve...

2020-03-13 15:38:08 204

空空如也

空空如也

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

TA关注的人

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