- 博客(51)
- 收藏
- 关注
转载 列存储VS行存储
概述目前大数据存储有两种方案可供选择:行存储(Row-Based)和列存储(Column-Based)。业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全、可靠、完整性。从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,基本是淘汰出局。在已知的几种大数据处理软件中,Hadoop的HBase采用列存储,MongoDB是文档型的行存储,Lexst是二进制型的行存储。什么是列存储?列式存储(column-based)是相对于传统关系型数据库的行式存储(Ro
2022-03-17 11:54:51
3894
原创 OLAP和OLTP
一:OLAP和OLTPOLTP(On-Line Transaction Processing):联机事务处理,典型代表是关系型数据库(mysql),它的数据存储在服务器本地的文件里OLAP(On-Line Analytical Processing):联机分析处理,OLAP型数据库的典型代表是分布式文件系统(hive),它的数据存储在HDFS集群里它们的主要区别入下图:数据从何而来?企业日常的各个环节都会产生数据,一个企业从小到大的过程中,最初建设IT系统的时刻是一个分隔点。在
2022-03-14 16:37:12
7707
原创 ES的数据迁移
线上华为机器资源稀缺,规定es索引上限50G,现在线上出现超过该阈值的情况,需要做迁移。es版本6.5.4一:reindex1.1使用场景:当数据量过大,而索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的,1.2 使用步骤:1.根据原来索引的map...
2021-10-25 10:28:49
1463
原创 nginx系列--负载均衡
使用nginx做负载均衡的两大模块:upstream 定义负载节点池。 location 模块 进行URL匹配。 proxy模块 发送请求给upstream定义的节点池。upstream模块解读nginx 的负载均衡功能依赖于 ngx_http_upstream_module模块,所支持的代理方式有 proxy_pass(一般用于反向代理),fastcgi_pass(一般用于和动态程序交互),memcached_pass,proxy_next_upstream,fastcgi_next_pas
2021-10-08 14:33:55
127
转载 Nginx反向代理获取客户端真实IP
一:问题描述 线上服务需要进行日志统计,但是发现服务中获取的请求的remote ip都是上一个服务的ip而不是用户的真实ip,下面是解决方案,记录一下。二:问题解决2.1 Nginx服务器增加转发配置proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 1.Ho..
2021-10-08 14:33:18
738
转载 nginx入门使用
一:简介nginx (engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx专为性能优化而开发,性能是器最重要的考量,实现上非常注重效率,能经受高负载的考验,据报告能支持高达50,000个并发连接数。Nginx的基本功能web 服务. 负载均衡 (反向代理) w.
2021-09-16 14:52:15
105
原创 理解红黑树
一篇看了能理解红黑树的博客:https://blog.csdn.net/qfc_128220/article/details/116230980
2021-07-23 15:54:35
94
原创 socket的概念和原理
一、基本概念1.进程间通信方式本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TC
2021-07-15 11:23:16
4638
4
转载 【TCP协议】---TCP协议详解
一、TCP概念TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议。首先来看看OSI的七层模型 我们需要知道TCP工作在网络OSI的七层模型中的第四层——传输层,IP在第三层——网络层,ARP 在第二层——数据链路层;同时,我们需要简单的知道,数据从应用层发下来,会在每一层都会加上头部信息,进行 封装,然后再发送到数据接收端。这个基本的流程你需要知道,就是每个数据都会经过数据的封装和解封...
2021-07-14 15:18:08
1432
转载 TCP的三次握手与四次挥手理解
一:基本定义 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 确认ACK:占1位,仅当AC...
2021-07-13 22:32:03
281
转载 Elasticsearch的简单入门:(一)ES简介与安装
像天猫、京东这样的商城,用户访问商城的首页,一般都会直接搜索来寻找自己想要购买的商品。而商品的数量非常多,而且分类繁杂。如果能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如Solr,Elasticsearch。今天我们的主角是Elasticsearch。1、elasticsearch的介绍与安装1.1.elasticsearch的简单介绍Elastic官网:http
2021-06-28 10:32:30
315
转载 设计模式之综合概述
一:UML依赖关系是一种使用关系,即一个类的实现需要另一个类的协助。带普通箭头的虚线,普通箭头指向被使用者。关联关系是一种拥有关系,它使得一个类知道另一个类的属性和方法。最常体现是成员变量。是单个到单个的关系。带普通箭头的实线,指向被拥有者。双向的关联可以有两个箭头,或者没有箭头。单向的关联有一个箭头。聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,是 has-a 的关系,也体现在成员变量上。带空心菱形的实线,空心菱形指向整体。组合关系是一种整体与部分的关
2021-06-03 17:18:52
95
原创 设计模式之解释器模式
解释器这个名词想必大家都不会陌生,比如编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。诸如此类的例子也有很多,比如编译器、正则表达式等等。一:定义解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的
2021-06-03 10:09:16
61
原创 设计模式之策略模式
策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。再比如我们去逛商场,商场现在正在搞活动,有打折的、有满减的、有返利的等等,其实不管商场如何进行促销,说到底都是一些算法,这些算法本身只是一种策略,并且这些算法是随时都可能互相替换的,比如针对同一件商品,今天打八折、明天满100减30,这些策略间是可以互换的。一:定义策略模式(Strategy Pattern):它定义了算法家族,分别封装起来,让它们
2021-06-02 10:13:49
104
原创 设计模式之状态模式
一:定义状态模式(State Pattern):允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用:代码中包含大量与对象状态有关的条件语句。如何解决:将各种具体的状态类抽象出来。二:UMLContext: 环境类。环境角色具有两个职责,即处理本状态必须完成的任务,及决定是否可以过渡到其它状态。对于环境角
2021-06-01 10:56:01
76
原创 设计模式之备忘录模式
备忘录这个词汇大家应该都不陌生,我就经常使用备忘录来记录一些比较重要的或者容易遗忘的信息,与之相关的最常见的应用有许多,比如游戏存档,我们玩游戏的时候肯定有存档功能,旨在下一次登录游戏时可以从上次退出的地方继续游戏,或者对复活点进行存档,如果挂掉了则可以读取复活点的存档信息重新开始。与之相类似的就是数据库的事务回滚,或者重做日志redo log等。一:定义备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先
2021-05-31 16:44:32
127
1
原创 设计模式之中介者模式
一:定义中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的相互。通过定义我们可以看出中介者主要是通过中介对象来封装对象之间的关系,使之各个对象在不需要知道其他对象的具体信息情况下通过中介者对象来与之通信。同时通过引用中介者对象来减少系统对象之间关系,提高了对象的可复用和系统的可扩展性。但是就是因为中介者对象封装了对象之间的关联关系,导致中介者对象变得比较庞大,所承担的责任也比较多。它需要知道每个对象
2021-05-31 16:01:32
77
原创 设计模式之观察者模式
一:定义观察者模式(Observer Pattern):定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。观察者模式又称为发布-订阅模式。二:UMLSubject:目标。他把所有对观察者对戏的引用保存在一个聚集里,每一个主题都可以有多个观察者。Observe
2021-05-31 14:25:11
67
转载 设计模式之迭代器模式
你项目组接到一个项目:对电视机的电视频道、电影和收音机菜单进行统一管理,建立一个统一的菜单管理界面,能够看到所有的电视界面、电影界面和收音机频道。你有三个手下:小李子、小杏子、小安子,他们分别就每个模块做开发工作,看他们都做了哪些工作。这是主菜单JavaBean,用于显示每个模块的菜单。public class MenuItem { private String name; private String description; private int channe;
2021-05-29 17:10:01
114
转载 设计模式之责任(职责)链
一:定义责任链模式(Chain of Responsibility Pattern)避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止,这就是职责链模式。意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送
2021-05-29 16:21:36
67
原创 设计模式之访问者模式
一:定义访问者模式(Visitor Pattern)即表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。首先我们要明确一点就是访问者模式适用于数据结构相对稳定的系统。它是将数据的操作与数据结构进行分离了,如果某个系统的数据结构相对稳定,但是操作算法易于变化的话,就比较适用适用访问者模式,因为访问者模式使得算法操作的增加变得比较简单了。二:UML访问者模式主要包含如下几个角色:Vistor: 抽象访问者。为该对象结构中的ConcreteEl
2021-05-29 15:31:27
120
原创 Java的编译原理
概述java语言的"编译期"分为前端编译和后端编译两个阶段。前端编译是指把*.java文件转变成*.class文件的过程; 后端编译(JIT, Just In Time Compiler)是指把字节码转变成机器码的过程。在编译原理中, 将源代码编译成机器码, 主要经过下面几个步骤:Java中的前端编译java的前端编译(即javac编译)可分为解析与填充符号表、插入式注解处理器的注解处理、分析与字节码生成等三个过程。1.解析与填充符号表解析步骤包括词法分析和语法分析两个阶段。词法分析是将源
2021-05-28 14:40:10
351
原创 设计模式之命令模式
一:定义命令模式(Command Pattern)将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式支持可撤销的操作。命令模式可以对发送者额接受者完全解耦,发送者也接收者之间并没有直接的联系,发送者只需要知道如何发送请求,不需要关心请求是如何完成了。这就是命令模式,命令模式将方法调用给封装起来了。意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、
2021-05-26 11:41:34
57
转载 设计模式之模版方法模式
首先我们先来看两个例子:冲咖啡和泡茶。冲咖啡和泡茶的基本流程如下:所以用代码来创建如下:public class Coffee { void prepareRecipe(){ boilWater(); brewCoffeeGrinds(); pourInCup(); addSugarAndMilk(); } void boilWater(){ System.out.println("Boiling
2021-05-26 10:31:17
92
转载 设计模式之代理模式
在我们实际生活中代理情况无处不在!你在淘宝上面买东西,你使用支付宝平台支付,卖家请物流公司发货、你请朋友帮你拿包裹,在这个过程汇总支付宝、物流公司、你朋友都扮演者“第三者”的角色在帮你完成物品的购买,这里的第三者我们可以将其称之为代理者。所谓代理就通过引用一个新的对象来实现对真实对象的操作或者将新的对象当做真实对象的一个替身,这种实现的机制就是代理模式,通过引用代理对象来访问真实对象就是代理模式的设计动机。一:定义在代理模式(Proxy Pattern)中, 代理模式就是给一个对象提供一个代理,并由
2021-05-25 15:16:46
62
原创 设计模式之享元模式
面向对象可以非常方便的解决一些扩展性的问题,但是在这个过程中系统务必会产生一些类或者对象,如果系统中存在对象的个数过多时,将会导致系统的性能下降。对于这样的问题解决最简单直接的办法就是减少系统中对象的个数。享元模式提供了一种解决方案,使用共享技术实现相同或者相似对象的重用。也就是说实现相同或者相似对象的代码共享。一:定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的
2021-05-25 14:22:17
65
原创 设计模式之外观模式
前面介绍的适配器模式讲的是如何将一个接口转换成客户所需要的另一个接口,它的目的在于解决接口的不兼容性问题。现在这里有这样一个模式,它的目的在于如何简化接口,它可以将多个类的复杂的一切隐藏在背后,只显露出一个干净美观的外观。以化妆举例:女生化妆的过程水、乳、霜、隔离、粉底、眉毛、眼妆、口红、腮红、定妆喷雾,卸妆时要卸眼妆、卸口红、卸全脸粉底、洗脸、敷面膜、水、乳、霜。过程好繁琐呀,如果能开发一套程序,能一键上妆,一键卸妆就好了。。。。一:定义外观模式(Facade Pattern)隐藏系统的复杂性,并向
2021-05-24 17:19:55
113
原创 设计模式之组合模式
一:定义组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简
2021-05-24 16:22:04
161
原创 设计模式之装饰模式(封装器)
一:定义装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。解释:封装器是装饰模式的别称, 这个称谓明确地表达了该模式的主要思想。 “封装器” 是一个能与其他 “目标” 对象连接的对象。 封装器包含与目标对象相同的一系列方法, 它会将所有接收到的请求委派给目标对象。 但是, 封装器可以在将请
2021-05-24 15:31:03
200
原创 设计模式之适配器模式
一:定义适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。二:使用场景1、当希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用适配器类(在协作开发的时候比较容易出现)。适配器模式允许你创建一个中间层类,
2021-05-20 16:10:25
117
原创 设计模式之建造者模式(生成器模式)
一.定义建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。何时使用:一些基本部件不会变,而其
2021-05-19 21:39:50
137
原创 设计模式之抽象工厂
一:定义为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。简单的说:工厂设计模式的工厂是生产一个产品,抽象工厂设计模式是为了生产一组相关的产品。二:UML图三:简单代码实现四:适用场景1、创建数据库查询sql类,不通数据库的查询sql不一样,测试建立数据库对应的查询类,每个查询类对应查询库中所有数据。2、 QQ 换皮肤,一整套一起换。3、生成不同操作系统的程序。注意事项:产品族难扩展,产品等级易扩展。五:优点1.可以确保同一工厂生成的产品相互匹配。2.可以避免
2021-05-19 16:57:14
81
原创 设计模式之工厂方法
一:定义工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。二:UML图此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。工厂方法模式的主要角色如下。1.抽象工厂(Abstract Factory):提供了创建产品
2021-05-19 15:15:03
51
原创 设计模式之单例模式
一:定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。二:UML图单例模式有几个要点:1.构造方法私有化,防止外部创建2.提供获取三:简单代码实现四:适用场景五:优点六:缺点...
2021-05-19 10:55:19
138
原创 设计模式简介
一:设计模式的概念与意义1.设计模式的概念设计模式一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。2.学习设计模式的意义设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有
2021-05-18 17:26:23
82
原创 统一建模语言(UML) | 类图
什么是UML?UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言UML的优点:1.在程序开发前用UML对整个软件设计有个直观的表现。2。UML提供了极富表达能力的建模语言,可以让软件开发过程中的不同人员分别得到自己感兴趣的信息。UML的分类UML通常分为两类:结构图和行为图结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。行为图又分活动图、用例图、状态机图和交互图。交互图又分为序列图、时序图、通讯图、交互概览
2021-05-18 15:34:17
1296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人