架构

NoSQL在大数据中的应用

浪子不回头ぞ 提交于 2020-03-09 04:12:12
一、 序言 NoSQL是Not Only SQL的缩写,而不是Not SQL,指的是非关系型的数据库,它不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准、ACID属性、表结构等等。相比传统数据库,叫它分布式数据管理系统更贴切,数据存储被简化更灵活,重点被放在了分布式数据管理上。 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 二、 大数据时代 随着互联网 web2.0 网站的兴起,非关系型的数据库成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题: 1、 High performance - 对数据库高并发读写的需求 web2.0 网站要根据用户个性化信息来实时生成 动态页面 和提供动态信息,所以基本上无法使用 动态页面静态化 技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站

armv6 armv7 armv7s架构的区别

房东的猫 提交于 2020-03-08 20:22:35
arm结构处理器,几乎所有的手机都基于arm,其在嵌入式系统中应用非常广泛。 ARM 处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色。这里我们注意一点,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。只有在目标设备上,才会执行设备对应的指令集。 ARMv6设备 包括 iPhone, iPhone2, iPhone3G以及第一代和第二代iPod Touch ARMv7设备 包括 iPhone3GS, iPhone4 iPad, iPad2, the new ipad iPod touch 3G, iPod touch 4 ARMv7s设备 包括 iPhone5 如果在工程build setting的Architectures中 选“Standard Active Architecture Only”为True则,选择Armv6或v7都只会编译对应指令集的包;若选false,则编译器会整合两个指令集到一起,则包比较大,但是能使用Armv7 的优化,同时能适配到老的机器。 一般Debug的时候“Build Active Architecture Only”选择YES,用当前架构看代码逻辑是否有问题,发Release的时候选择NO,因为需要适配其他的机型。 低arm的包可以在高arm的机子上跑,反之则不可以。 来源: oschina 链接: https:/

云原生技术的了解

笑着哭i 提交于 2020-03-08 18:55:45
云原生技术的了解 参考资料 迁移到云原生应用架构 kubernetes 手册 etcd 架构与实现解析 什么是云原生 云原生应用架构的几个主要特征: 符合12因素应用 面向微服务架构 自服务敏捷架构 基于API的协作 抗脆弱性 到了2015年Google主导成立了云原生计算基金会(CNCF),起初CNCF对云原生(Cloud Native)的定义包含以下三个方面: 应用容器化 面向微服务架构 应用支持容器的编排调度 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括 容器 、 服务网格 、 微服务 、 不可变基础设施 和 声明式API 。 这些技术能够构建 容错性好 、 易于管理 和 便于观察 的 松耦合系统 。 云原生本身甚至不能称为是一种架构,它首先是一种基础设施,运行在其上的应用称作云原生应用,只有符合云原生设计哲学的应用架构才叫云原生应用架构。 云原生系统的设计理念如下: 面向分布式设计(Distribution):容器、微服务、API 驱动的开发; 面向配置设计(Configuration):一个镜像,多个环境配置; 面向韧性设计(Resistancy):故障容忍和自愈; 面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应; 面向交付设计(Delivery):自动拉起,缩短交付时间;

我的面试经之JVM(一)JVM简述

穿精又带淫゛_ 提交于 2020-03-08 18:40:16
Java 跨平台语言 JVM 跨语言平台 Java进化史: 虚拟机:Virtual Machine,对硬件进行模拟的软件,虚拟的计算机 Java虚拟机:执行Jvm字节码的虚拟计算机,是二进制字节码的运行环境 JVM的位置 jvm整体结构 方法区和堆,多个线程共享 Java栈(又叫虚拟机栈),本地方发栈,程序计数器这三个每个线程独有一份 【运行时数据区是单例的,一个虚拟机一个】 【hotspot 才有方法区,其他两大商用虚拟机没有【HotSpot,JRocket,J9】】 class files前边是编译器前端 执行引擎相当于编译器后端 java代码执行流程 第一次编译,把java源文件编译成字节码.class文件,第二次编译JIT编译器把.class文件编译成机器指令文件,并且缓存到方法区 JVM架构模型 指令集架构分为两种,基于栈的指令集架构,基于寄存器的指令集架构 两种指令集架构区别 基于栈式架构的特点:   设计和实现简单【每执行一个方法,就进行一次入栈的操作】,适用于资源受限的系统(eg:嵌入式)   避开了寄存器的分配难题;使用零地址指令分配方式   指令流中的指令大比分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现   不需要硬件实现,可以执性更好,更好实现跨平台 基于寄存器架构的特点:   典型的是x86的二进制指令集

Arm及Arm Cortex-M处理器

允我心安 提交于 2020-03-08 09:47:31
https://mp.weixin.qq.com/s/sRio4NPTSj4oVq2YtM_c1g 1 Arm 处理器架构 从大的方面讲,Arm公司共出过八种处理器架构,其中V1-V3架构,是ARM诞生之初的架构,已经过时而废,目前最新的架构师V8,V9也许不久的将来会发布。其中V6,V7,V8架构又分为M系列,A系列和R系列。 2 Arm 处理器 早期的处理器现在被称为经典处理器,例如曾经广泛使用的arm7/arm9/arm11处理器。现在主要的是Arm Cortex 系列,又分为3类: Cortex-M: 嵌入式处理器 Cortex-A: 应用处理器 Cortex-R: 实时处理器 上图中Cortex-M系列没有罗列出M23,M33,M35P以及M55。 3 Arm Cortex处理器ARM A, R,M系列处理器应用领域不同,这是由这些处理器的特点决定的。 4 Arm Cortex-M处理器 在嵌入式领域,Cortex-M处理器被广泛使用。Cortex-M处理器系列针对低成本和高能效的微控制器进行了优化。这些处理器可用于各种应用,包括物联网,工业和日常消费类设备。 目前ARM Cortex-M最新的处理器是Cortex-M55,Arm Cortex-M55处理器是具有AI功能的Cortex-M处理器,并且是第一个采用Arm Helium矢量处理技术的功能

高性能MySQL之架构与历史(1)

柔情痞子 提交于 2020-03-08 03:08:36
MySQL架构与历史 MySQL逻辑架构 第一层:mysql客户端,负责和mysql服务器连接处理、认证授权、安全、线程处理等。 第二层:大多数mysql的核心功能都在这一层,包括查询解析、分析、优化、查询缓存以及所有的内置函数(如:日期、时间的函数等),所有夸存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 第三层:包含存储引擎,存储引擎负责mysql中数据的存储、提取、锁机制等。 注:存储引擎不会解析sql。单InnoDB是一个列外,他会解析外键定义,因为mysql服务器本身没有实现该功能。 连接管理与安全性 每个客户端链接都会在服务器进程中拥有一个线程。这个链接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心CPU中运行。 Mysql5.5版本支持线程池插件,可以使用池中少量的线程来服务大量的链接。 当客户端连接Mysql服务器时,会对其进行验证,验证成功后,服务器会继续验证是否具有某个查询的权限。 优化与执行 1.MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。 2.优化器并不关心表用的是什么存储引擎,但存储引擎对于优化查询是有影响的。 3.对于select语句,在解析查询之前,首页会在查询缓存中检查,如果能在查询缓存中检索到结果,那么就不会在进行查询解析、分析

asp.net学习路线图

╄→гoц情女王★ 提交于 2020-03-07 23:38:59
ASP.NET 学习路线图 如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门 .NET 面向对象语言, C# 或 VB.NET 我强烈反对在没系统学过一门面向对象 (OO) 语言的前提下去学 ASP.NET 。 ASP.NET 是一个全面向对象的技术,不懂 OO ,那绝对学不下去 ! 第二步 对 .NET Framework 类库有一定的了解 可以通过开发 Windows Form 应用程序来学习 NET Framework 。 ASP.NET 是建构在 .NET Framework 之上的技术,你对 .NET Framework 了解得越深,学习 ASP.NET 就越快。 举个例子:下面简单列出几个对掌握 ASP.NET 非常重要的概念: 对象的内存模型,委托,事件,多线程,程序集和应用程序域,安全模型 .NET Framework 当然还有许多其它的东西,但不理解与把握清楚上述这些东西,是很难真正把握 ASP.NET 的。 出于急迫的心情与现实的考虑,不少人没有扎实的面向对象基础就想直接学习 ASP.NET ,其结果只能是欲速则不达。 在具备了 OO 基础之后,以下是具体的学习 ASP.NET 技术步骤。 第一步:学习 HTML 与 CSS 这并不需要去学一大堆的诸如 Dreamweaver , Firework 之类的各种 网页设计 工具,关键是理解

Cortex-M3 内核架构粗总结

江枫思渺然 提交于 2020-03-07 18:42:11
文章目录 寄存器组(32位) 存储器映射 总线架构 操作模式与特权级别 中断控制器 异常 存储器保护单元 其他 使用两天时间,粗略看了《Crtex-M3权威指南》(宋岩译),内容有点多,看的头皮发麻,虽然译者注释尽量想要有趣,但是由于比较硬核,所以看起来依然比较痛苦。深夜合上书在此做一下简单总结,可能写的很乱,主要帮助回忆。 首先是整体概览,总的来讲,我认为对于内核理解来讲最重要的就是**存储器映射**、**寄存器组**、**总线架构**,然后就是更加细致方面的内容,包括操作模式与特权级别、中断控制器、异常、存储器保护单元、thumb-2 指令集(融合之前的ARM指令和thumb指令)以及调试支持。下面就按照此顺序展开。 寄存器组(32位) CM3的寄存器组由16个32位寄存器 R0-R15 组成,其中 R0-R12 是通用寄存器,用于数据操作; R13 是堆栈指针,CM3提供了两个堆栈指针供选择,但是同一时刻只有一个可以看到(banked),他们分别是主堆栈指针MSP和线程堆栈指针PSP,(对于这两个堆栈指针的使用情况这里简单说明下,两个堆栈是并行的,可以看作没有关系,当处于用户应用程序代码下可以用MSP,也可以用PSP,默认状态下是使用MSP,但是在handler程序只能使用MSP,所以当程序在这两种模式下跳转时,有时会出现需要改变堆栈指针的情况); R14 为连接寄存器(LR

mysql 逻辑架构

别说谁变了你拦得住时间么 提交于 2020-03-07 05:27:50
1、mysql是基于网络的客户端/服务器架构,服务器上层是连接线程,解析器,查询缓存,下层是存储引擎。 2、每个客户端连接,服务器都有一个对应的线程,这个线程只为这个连接查询服务,高版本的mysql支持线程池,使用少量的线程服务大量的连接。 3、服务器收到请求,会解析查询,建立解析树,然后对其优化,包括重写查询,决定表的读取顺序,选择合适的索引等。当然用户可以使用特殊的关键字提示优化器,影响优化器的决策。通过explain或者desc ,可以查询服务器是怎么优化的。对于select语句,mysql会建立查询缓存,mysql先检查查询缓存,如果能命中,直接在查询缓存中取数据。否则,进行解析,优化,执行的过程。 来源: https://www.cnblogs.com/nzbbody/p/4542150.html

MySql的多存储引擎架构

六眼飞鱼酱① 提交于 2020-03-07 05:26:07
支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构。本文将首先介绍MySQL的整体逻辑架构,然后分析MySQL的存储引擎API并介绍如何编写自己的MySQL存储引擎。 MySQL逻辑架构 MySQL作为一个大型的网络程序、数据管理系统,架构非常复杂。下图大致画出了其逻辑架构。 MySQL由以下几部分组成: 连接池组件。 管理服务和工具组件。 SQL接口组件。 查询分析器组件。 优化器组件。 缓冲(Cache)组件。 插件式存储引擎。 物理文件。 Connectors MySQL首先是一个网络程序,其在TCP之上定义了自己的应用层协议。所以要使用MySQL,我们可以编写代码,跟MySQL Server建立TCP连接,之后按照其定义好的协议进行交互。当然这样比较麻烦,比较方便的办法是调用SDK,比如Native C API、JDBC、PHP等各语言MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互。 Connection Management 每一个基于TCP的网络服务都需要管理客户端链接,MySQL也不例外。MySQL会为每一个连接绑定一个线程