- 博客(28)
- 收藏
- 关注
原创 分布式系统-CAP原则
分布式CAP原则C(Consistency)一致性:分布式系统中所有主机在同一时刻是否可以保证数据一致,即写入一台主机后其他主机均写成功则存在一致性;A(Availability)可用性:在集群中部分节点发生故障是否会影响到对客户端读写请求的详情,保证集群中部分故障不会影响到整个集群称为可用性;P(Partition tolerance)分区容错性:分布式系统中一台主机称为一个分区,分布式系统各个主机可能会存在数据不一致性或可用性问题。该分布式系统对于上述两种问题的兼容性称为分区容错性。分布式系
2021-02-23 21:19:29 407
原创 MySQL
MysqlSQL执行过程MySQL被分为两个部分引擎层负责执行具体的SQL数据,Server层提供MySQL剩余部分,引擎层会提供各种接口来让Server层的执行器进行调用以返回所需要数据。客户端 --> 连接器 --> 分析器 --> 优化器 --> 执行器 --> 存储引擎 --> 查询缓存Server层连接器:(管理连接,权限验证);查询缓存:(缓存SQL结果) 大部分都不建议使用,对文本修改不敏感,8.0之后彻底取消;分析器:(词法分
2021-02-18 14:34:10 185
原创 Redis
RedisRedis是一款基于内存的K-V非关系型数据库.在6.x之前Redis只使用Worker线程来进行数据的读取,计算,写入,这种只有单线程下的Redis会很大被IO瓶颈所限制还有本身会造成极大的硬件资源浪费。在6.x之后Redis里面实际上并不是单线程工作,而是分为worker和io thread,其中worker只负责串行提供的计算服务,而io thread只提供数据的并行read和write这样减少了Redis的处理时间的。但是实际上每个线程再对于数据的操作还是串行的单线程。Redi
2021-02-03 17:47:57 979
原创 Zookeeper
Zookeeper分布式协调框架,可扩展性,靠谱性,时序性。Zookeeper实际上是维护一个类似于文件系统的数据结构,通过操作Znode来进行数据的CURD,Znode总共有四个类型:PERSISTENT-持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点:客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号EPHEMERAL-临时目录节点:客户端与zookeep
2021-02-03 17:02:29 318
原创 RocketMQ
RocketMQRocketMQ结构组成RockMQ由四个部分构成:NamerServer无状态节点,可集群部署,但是节点之间无通信。该节点主要存储Producer和Customer的配置信息和状态信息、Broker集群配置信息和元信息。相比于Zookeeper的分布式协调,NameServer更加轻量级不会存在自动选举能力,因为MasterBroker中不会保存所有的Topic所以集群式的NameServer失去选举机制的意义而且又是跟轻量级的任务协调框架。Broker消息存储者和转发者,B
2021-02-03 15:45:40 375 1
原创 Dubbo
Dubbo结构介绍服务接口层(Service):与实际业务逻辑相关,根据消费者和生产者业务设计对应接口和实现;配置层(Config):对外配置接口,负责Dubbo中生成各种配置类,例如协议,生产者以及具体的Bean信息的等等,方便再暴露和做负载均衡时直接使用 源码服务代理层(Proxy):根据上一层生成的各个配置信息,两端根据ProxyFactory生成代理信息Invoker。服务注册层(Registry):将已经生成Invoker信息导出并注册到注册中心进行服务暴露,此时生产者提供的服务可
2021-02-03 15:30:48 313
原创 SpringBoot
Spring Boot启动public class SpringApplication(){ // ......省略 /** * Static helper that can be used to run a {@link SpringApplication} from the * specified sources using default settings and user supplied arguments. * @param primarySources the pr
2021-02-01 09:41:57 192
原创 多线程并发
多线程线程线程状态转换volatile关键字,保证可见性但是不保证原子性,可以被称为改时通知。保证线程可见性,禁止指令重排序。被volatile修饰的变量在被其他线程使用时实际上是使用复制该变量的副本到对应线程中进行操作,当有进行更新操作时会立刻将变量写会到主线程中,并通知其他使用该变量的线程。实际上使用的是CPU的缓存一致性协议MESI。禁止指令重排序:现代CPU执行指令不再是单个顺序执行,而是会将指令进行重排序并发执行指令。在单例模式中,使用JVM内部类的懒加载实现的方法中如果INSTANC
2021-02-01 09:22:17 218
原创 集合
集合非线程安全集合1.List(1)ArrayList底层是数组(内存中分配是连续的内存空间)实现,数据的默认的长度是10,每当添加数据超过数据容量上限的时候就以复制的方式来进行动态扩容,扩容的数量是当前容量的1.5倍。(2)LinkList底层是循环双向链表实现,在内存中分配的空间是不连续的。LinkList数据结构由数据内容、前驱表项、后驱表项构成,为了可以快速定位到表头所以LinkList无论是否为空都会存在一个Head表项。Array因为内存的连续性适合遍历但不适合插入和删除元素,L
2021-02-01 09:21:13 129
原创 重学系列之内存和IO
lsof -p $$ 查看某个进程打开的哪些文件($ 当前bash)pcstat -pid $$ :内存中缓存页的状态(大小,编号等等)read x:通过键盘数据复制变量proc:映射的内核的虚拟文件系统,其中包含变量和所有程序的文件信息包括所有文件描述,开启的文件等等。重定向:Linux万物皆文件,所以对于每个命令和应用程序其实都是文件,而其中文件描述符(fd)可以用来该进程下不同线程对于IO的操作不同,0代表标准输入,1代表标准输出,2代表标准报错。每个进程或程序在运行的时候都有属于自己的.
2020-09-13 20:02:14 227
原创 重学系列之硬件基础知识
适度打开,很多情况保持黑箱即可。计算机组成CPUCPU制作硅提纯->切片->镀膜->光刻(全球只有一家在做 荷兰)->切割->封装->测试Inter详细流程CPU原理计算机最主要的解决问题就是怎么代表数字,二进制,十进制晶体管工作晶体管的工作原理汇编语言执行过程汇编语言的本质:机器语言的助记符 其实它就是机器语言计算机通电 -> CPU读取内存中程序(电信号输入)->时钟发生器不断震荡通断电(GHz,计算机主频) ->推动C
2020-07-18 17:42:40 311
原创 经典算法
一致性哈希算法背景应用在分布式应用中因为数据量激增是的数据CURD压力变大,所以在数量增长到一定程度后会选择对数据进行分库分表,但是在数据拆分后数据的操作会变的更加麻烦因为数据存储在不同的服务节点上,这样虽然减小数据处理压力但是增加了数据查找的难度。在分布式数据存储中可以应用哈希算法的原理根据每个唯一值的key进行hash然后取模可以得到数据存储服务的的位置,但是这样在每次对哈希表进行扩容时都会重新计算所有节点的hash值并重新放(少数不用移动,因为新旧hash值相同)。所以在基础的hash算法基础上优
2020-05-13 22:25:28 226
原创 常规操作之zookeeper
Zookeeper分布式协调框架,维护一个类似于文件管理系统的数据结构在根节点以下创建应用或服务所需节点(ZNode),节点分为四种:persisent(持久化节点,客户端断开连接后不会自动删除)、persisent-sequential(持久化顺序编号节点,断开连接后zookeeper会给该节点名称进行顺序编号)、ephemral(临时节点,客户端断连后就会自动删除)、ephemeral-se...
2020-04-12 22:25:34 187
原创 常规操作之JWT
简介由于HTTP协议是无状态的,这意味着如果我们想判定一个接口是否被认证后访问,就需要借助cookie或者session会话机制进行判定,但是由于现在的系统架构大部分都不止一台服务器,此时又要借助数据库或者全局缓存 做存储,这种方案显然受限太多。那么我们可不可以让认证令牌的发布者自己去识别这个令牌是不是我曾经发布的令牌呢(JWT核心思想),这是JWT最大的优点也是最大的缺点,优点是简单快捷、不...
2020-02-15 20:16:08 281
原创 常规操作之安全框架Shiro
简介shiro提供了:认证、授权、加密、会话管理、与web集成、缓存等模块。 和spring Securte相比shiro更简单提供的成品逻辑很完善,只需实现和集成相应的接口和类即可实现特有的逻辑,例如AuthorizingRealm(数据源),Filter(自定义拦截器)等等Shiro结构因为shiro默认进行session认证的,通过SessionManager(会话管理器)来控制请求...
2020-02-15 16:53:38 314
原创 常规操作之Redis进阶
一、HyperLogLog非精准求和,相比于常规的add与hadd不同的是在每次插入的时候并不是实际将值插入到集合中而是大体估算一下集合中钙元素的总值。伪代码,大体算法如此 max = 0 对于集合中的每个元素: hashCode = hash(元素) num = hashCode二进制表示中最前面连续的0的数量...
2019-09-10 23:15:22 266
原创 常规操作之JVM编译与运行
一、Java文件编译(未完待续) 跨平台---一次编译,到处运行。其中开发人员完成 .Java文件以及相关引用包(.java文件)通过编译变成 .class文件。其中 .class文件是由8位字节进行存储,有无符号数和表构成。无符号数:属于基本的数据类型,以u1、u2、u4、u8来代表1个字节,2个字节、4个字节和8个字节构成的无符号数,无符号数可以用来描述数字、索引、数量值或者按照UT...
2019-03-10 21:50:40 208
原创 常规操作之Elasticsearch
一、什么是Elasticsearch 分布式全文搜索引擎。其中对比MySQL 数据库-->索引(index) 、表-->类型(type)、行-->文档(doc)、Columns-->属性(fields) 二、基础语法 elasticsearch 使用Restful风格接口,对数据搜索引擎进行操作。1.检索文档: _index,_...
2018-12-16 21:36:49 250
原创 面试系列之常见问题
1.Spring MVC运行顺序1)用户发送请求至前端控制器DispatcherServlet。2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。3)处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4)DispatcherServlet调用HandlerAdapter处理器适配器。5)...
2018-03-09 18:20:51 374
转载 不要迷失在技术的海洋中
原文: http://www.cnblogs.com/lovecherry/archive/2007/10/28/940555.html技术就好像一片汪洋大海,越深入越望不到边际。就拿自己的体验来说吧,2000年的时候在学校搞ASP,觉得网页开发就是这么简单,把数据库中的数据格式化一下显示在页面上,把用户的输入组装成添加删除和修改的SQL提交到数据库中去。几年后的今天,我对自己了解或听说过的ASP...
2018-03-05 16:38:11 218
原创 常规操作系列之Web
1 web目录结构pom.xml src main java resources webapp WEB-INF web.xml在web.xml中,可以配置welcome-file标签配置默认的tomcat打开文件 <welcome-file...
2018-03-05 16:35:25 275
原创 常规操作系列之Redis
1.概念Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string...
2018-03-05 16:22:18 257
原创 面试系列之HTTP
1.Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。2.常用的请求方式是GET和POST. GET方式:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。 POST方式:用来向目的...
2018-03-05 16:18:12 308
转载 面试系列之JVM
JVM(Java Virtual Machine,Java虚拟机) Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行程序,但实际上java.e...
2018-03-03 18:03:28 354
原创 面试系列之集合
一、基础知识:Collection(Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set)├List(有重复元素、有顺序)│├LinkedList 改快读慢│├ArrayList 读快改慢 hash介于两者之间│└Vector│ └Stack└Set(不包含重复元素但是是无序的)collection迭...
2018-03-03 10:48:09 784
转载 面试系列之Mybatis
1、#{}和${}的区别是什么?注:这道题是面试官面试我同事的。答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给s...
2018-02-28 22:08:35 224
原创 httpclient使用系列
1.httpclient介绍: httpclient我理解为就是Java做到模拟访问指定浏览器的以获取指定信息或者制定操作的一种技术,而其实现就是通过自己拼装请求头以及请求参数必要时还可以自己组装cookie来实现程序端访问网站服务器达到自动化的过程。2.httpclient常用方法:1. 创建HttpClient 。2.创建请求实例,指定URL。发送GET请求,创建HttpGet对象;发...
2018-02-28 22:02:54 431
原创 网页抓取系列
工具介绍:(祖传软件,亲测有效)1.火狐浏览器(建议使用15-20之间的版本兼容) https://pan.baidu.com/s/1eSvpCBK2.HTTPWatch9.1(只有这个版本兼容火狐) https://pan.baidu.com/s/1c24Ngac3.fiddler (随便百度)背景介绍: 在做爬虫类似项目的时候都需要从网页上抓取指定的信息进行操作和分析,Jav...
2018-02-28 21:52:24 234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人