• 关于

    redis 架构 提升性能

    的搜索结果

问题

亿级pv网站架构实战之性能压榨

从前端请求到后端逐一优化 [前端] web 前端性能提升(雅虎军规) [nginx] 反向代理负载均衡性能优化 [业务] 代码多级缓存 本地代码伪编译合并 opcode 缓存 [业务] 静态化(特...
福利达人 2019-12-01 20:54:14 500 浏览量 回答数 0

问题

云数据库Redis 标准版-单副本简介

简介 标准版-单副本是云数据库 Redis 推出的一种新系列,采用单个数据库节点部署架构。与双副本版本相比,它只包含一个节点,没有备用节点实时同步数据,不提供数据持久化和备份策略&...
云栖大讲堂 2019-12-01 21:19:13 1106 浏览量 回答数 0

问题

云数据库Redis 集群版-双副本简介

简介 云数据库 Redis 提供双副本集群版实例,轻松突破 Redis 自身单线程瓶颈,可极大满足对于 Redis 大容量或高性能的业务需求。 云数据库 Redis 集群版内置数据分片及读取算法,...
云栖大讲堂 2019-12-01 21:19:14 1096 浏览量 回答数 0

万券齐发助力企业上云,爆款产品低至2.2折起!

限量神券最高减1000,抢完即止!云服务器ECS新用户首购低至0.95折!

回答

Redis常见的几种主要使用方式: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster(集群) Redis 自研 Redis各种使用方式的优缺点: 1 Redis单副本 Redis各种使用方式的优缺点: Redis 多副本,采用主从(replication)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。 优点: 1、高可靠性,一方面,采用双机主备架构,能够在主库出现故障时自动进行主备切换,从库提升为主库提供服务,保证服务平稳运行。另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题。 2、读写分离策略,从节点可以扩展主库节点的读能力,有效应对大并发量的读操作。 缺点: 1、故障恢复复杂,如果没有RedisHA系统(需要开发),当主库节点出现故障时,需要手动将一个从节点晋升为主节点,同时需要通知业务方变更配置,并且需要让其他从库节点去复制新主库节点,整个过程需要人为干预,比较繁琐。 2、主库的写能力受到单机的限制,可以考虑分片 3、主库的存储能力受到单机的限制,可以考虑Pika 4、原生复制的弊端在早期的版本也会比较突出,如:Redis复制中断后,Slave会发起psync,此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时可能会造成毫秒或秒级的卡顿;又由于COW机制,导致极端情况下的主库内存溢出,程序异常退出或宕机;主库节点生成备份文件导致服务器磁盘IO和CPU(压缩)资源消耗;发送数GB大小的备份文件导致服务器出口带宽暴增,阻塞请求。建议升级到最新版本。 使用场景 对 Redis 协议兼容性要求较高的业务 标准版完全兼容 Redis 协议,业务可以平滑迁移。 Redis 作为持久化数据存储使用的业务 标准版提供持久化机制及备份恢复机制,极大地保证数据可靠性。 单个 Redis 性能压力可控 由于 Redis 原生采用单线程机制,性能在10万 QPS 以下的业务建议使用。如果需要更高的性能要求,请选用集群版本。 Redis 命令相对简单,排序、计算类命令较少 由于 Redis 的单线程机制,CPU 会成为主要瓶颈。如排序、计算类较多的业务建议选用集群版配置。 2 Redis多副本(主从) Redis 多副本,采用主从(replication)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。 优点: 1、高可靠性,一方面,采用双机主备架构,能够在主库出现故障时自动进行主备切换,从库提升为主库提供服务,保证服务平稳运行。另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题。 2、读写分离策略,从节点可以扩展主库节点的读能力,有效应对大并发量的读操作。 缺点: 1、故障恢复复杂,如果没有RedisHA系统(需要开发),当主库节点出现故障时,需要手动将一个从节点晋升为主节点,同时需要通知业务方变更配置,并且需要让其他从库节点去复制新主库节点,整个过程需要人为干预,比较繁琐。 2、主库的写能力受到单机的限制,可以考虑分片 3、主库的存储能力受到单机的限制,可以考虑Pika 4、原生复制的弊端在早期的版本也会比较突出,如:Redis复制中断后,Slave会发起psync,此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时可能会造成毫秒或秒级的卡顿;又由于COW机制,导致极端情况下的主库内存溢出,程序异常退出或宕机;主库节点生成备份文件导致服务器磁盘IO和CPU(压缩)资源消耗;发送数GB大小的备份文件导致服务器出口带宽暴增,阻塞请求。建议升级到最新版本。 使用场景 对 Redis 协议兼容性要求较高的业务 标准版完全兼容 Redis 协议,业务可以平滑迁移。 Redis 作为持久化数据存储使用的业务 标准版提供持久化机制及备份恢复机制,极大地保证数据可靠性。 单个 Redis 性能压力可控 由于 Redis 原生采用单线程机制,性能在10万 QPS 以下的业务建议使用。如果需要更高的性能要求,请选用集群版本。 Redis 命令相对简单,排序、计算类命令较少 由于 Redis 的单线程机制,CPU 会成为主要瓶颈。如排序、计算类较多的业务建议选用集群版配置。 3 Redis Sentinel(哨兵) Redis Sentinel是社区版本推出的原生高可用解决方案,Redis Sentinel部署架构主要包括两部分:Redis Sentinel集群和Redis数据集群,其中Redis Sentinel集群是由若干Sentinel节点组成的分布式集群。可以实现故障发现、故障自动转移、配置中心和客户端通知。Redis Sentinel的节点数量要满足2n+1(n>=1)的奇数个。 优点: 1、Redis Sentinel集群部署简单 2、能够解决Redis主从模式下的高可用切换问题 3、很方便实现Redis数据节点的线形扩展,轻松突破Redis自身单线程瓶颈,可极大满足对Redis大容量或高性能的业务需求。 4、可以实现一套Sentinel监控一组Redis数据节点或多组数据节点 缺点: 1、部署相对Redis 主从模式要复杂一些,原理理解更繁琐 2、资源浪费,Redis数据节点中slave节点作为备份节点不提供服务 3、Redis Sentinel主要是针对Redis数据节点中的主节点的高可用切换,对Redis的数据节点做失败判定分为主观下线和客观下线两种,对于Redis的从节点有对节点做主观下线操作,并不执行故障转移。 4、不能解决读写分离问题,实现起来相对复杂 建议: 1、如果监控同一业务,可以选择一套Sentinel集群监控多组Redis数据节点的方案,反之选择一套Sentinel监控一组Redis数据节点的方案 2、sentinel monitor 配置中的 建议设置成Sentinel节点的一半加1,当Sentinel部署在多个IDC的时候,单个IDC部署的Sentinel数量不建议超过(Sentinel数量 – quorum)。 3、合理设置参数,防止误切,控制切换灵敏度控制 quorum down-after-milliseconds 30000 failover-timeout 180000 maxclient timeout 4、部署的各个节点服务器时间尽量要同步,否则日志的时序性会混乱 5、Redis建议使用pipeline和multi-keys操作,减少RTT次数,提高请求效率 6、自行搞定配置中心(zookeeper),方便客户端对实例的链接访问 4 Redis Cluster(集群) Redis Cluster是社区版推出的Redis分布式集群解决方案,主要解决Redis分布式方面的需求,比如,当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster能起到很好的负载均衡的目的。Redis Cluster集群节点最小配置6个节点以上(3主3从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383个整数槽内,每个节点负责维护一部分槽以及槽所印映射的键值数据。 优点: 1、无中心架构 2、数据按照slot存储分布在多个节点,节点间数据共享,可动态调整数据分布。 3、可扩展性,可线性扩展到1000多个节点,节点可动态添加或删除。 4、高可用性,部分节点不可用时,集群仍可用。通过增加Slave做standby数据副本,能够实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。 5、降低运维成本,提高系统的扩展性和可用性。 缺点: 1、Client实现复杂,驱动要求实现Smart Client,缓存slots mapping信息并及时更新,提高了开发难度,客户端的不成熟影响业务的稳定性。目前仅JedisCluster相对成熟,异常处理部分还不完善,比如常见的“max redirect exception”。 2、节点会因为某些原因发生阻塞(阻塞时间大于clutser-node-timeout),被判断下线,这种failover是没有必要的。 3、数据通过异步复制,不保证数据的强一致性。 4、多个业务使用同一套集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况。 5、Slave在集群中充当“冷备”,不能缓解读压力,当然可以通过SDK的合理设计来提高Slave资源的利用率。 6、key批量操作限制,如使用mset、mget目前只支持具有相同slot值的key执行批量操作。对于映射为不同slot值的key由于keys 不支持跨slot查询,所以执行mset、mget、sunion等操作支持不友好。 7、key事务操作支持有限,只支持多key在同一节点上的事务操作,当多个key分布于不同的节点上时无法使用事务功能。 8、key作为数据分区的最小粒度,因此不能将一个很大的键值对象如hash、list等映射到不同的节点。 9、不支持多数据库空间,单机下的redis可以支持到16个数据库,集群模式下只能使用1个数据库空间,即db 0。 10、复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构。 11、避免产生hot-key,导致主库节点成为系统的短板。 12、避免产生big-key,导致网卡撑爆、慢查询等。 13、重试时间应该大于cluster-node-time时间 14、Redis Cluster不建议使用pipeline和multi-keys操作,减少max redirect产生的场景。 使用场景 数据量较大 Redis 集群版可以有效的扩展数据规模,相比标准版支持存储量更大的64、128、256 GB 集群版,可以有效的满足数据扩展需求。 QPS 压力较大 标准版 Redis 无法支撑较大的 QPS,需要采用多节点的部署方式来冲破 Redis 单线程的性能瓶颈。 吞吐密集型应用 相比标准版,Redis 集群版的内网吞吐限制相对较低,针对热点数据读取、大吞吐类型的业务可以友好的支持。 对 Redis 协议不敏感的应用 由于集群版的架构引入了多个组件,在 Redis 协议支持上相比标准版有一定限制。
剑曼红尘 2020-04-27 14:41:57 0 浏览量 回答数 0

问题

云数据库Redis 集群版-单副本简介

简介 针对纯缓存类业务、QPS 压力较大的业务场景,云数据库 Redis 推出单副本集群版实例,轻松突破 Redis 自身单线程瓶颈,满足 Redis 大容量或高性能的业务需求。同时࿰...
云栖大讲堂 2019-12-01 21:19:14 1035 浏览量 回答数 0

问题

云数据库 Redis 版有什么功能特性

架构灵活 单节点架构 单节点架构适用于纯缓存场景,支持单节点集群弹性变配,满足高 QPS 场景,提供超高性价比。 双机热备架构 系统工作时主节点(Master&#x...
云栖大讲堂 2019-12-01 21:19:16 1057 浏览量 回答数 0

回答

创建Redis本地盘实例 登录Redis管理控制台。 在跳转到的购买页面,选择商品类型。 包年包月(本地盘):在新建本地盘版实例时支付费用。适合长期需求,价格比按量付费更实惠,且购买时长越长,折扣越多。 按量付费(本地盘):后付费,按小时扣费。适合短期需求,用完可立即释放实例,节省费用。 说明 按量付费可转为包年包月,包年包月无法转为按量付费。 选择实例配置,参数说明如下表所示。 类别 参数 说明 基本配置 地域和可用区 实例所在的地理位置。购买后无法更换地域。 根据目标用户所在的地理位置就近选择地域,提升用户访问速度。 确保Redis实例与需要连接的ECS实例创建于同一个地域,否则它们无法通过内网互通,只能通过外网连接,无法发挥最佳性能。 可用区 可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内ECS实例和Redis实例通过内网连接时,网络延时最小。 说明 选择多可用区可实现实例的同城容灾。 网络类型 专有网络(推荐):专有网络VPC(Virtual Private Cloud)是一种隔离的网络环境,安全性和性能均高于传统的经典网络。 经典网络:经典网络中的云服务在网络上不进行隔离,只能依靠云服务自身的安全组或白名单策略来阻挡非法访问。 注意 请确保Redis实例与需要连接的ECS实例或RDS实例网络类型一致,否则它们无法通过内网互通。 如果Redis实例与需要连接的ECS实例或RDS实例的网络类型都是专有网络,请确保各实例在同一VPC中,否则它们无法通过内网互通。 经典网络中的Redis实例可以切换到专有网络,专有网络中的实例无法切换到经典网络。 专有网络 选择实例的专有网络。如果没有专有网络,请参见创建专有网络。 交换机 选择专有网络下的虚拟交换机(VSwitch)。如果该专有网络下在当前可用区中没有交换机,请参见创建交换机。 资源组 资源组 选择实例所属的资源组。 实例 版本类型 社区版:兼容开源Redis协议标准、提供内存加硬盘的混合存储方式的数据库服务。 企业版(Tair):基于社区版开发的Redis产品,在性能、存储介质、数据结构等方面与社区版形成能力互补,详情请参见企业版简介。 系列类型 性能增强型:采用多线程模型,性能约为同规格社区版实例的3倍,同时提供多种增强型数据结构模块(modules)简化开发,详情请参见性能增强型。 混合存储型:整合了内存和磁盘二者的优势,可大幅度降低用户成本,实现性能与成本的平衡,详情请参见混合存储型。 说明 版本类型选择为企业版(Tair)时,该参数才会出现且需要设置。 版本号 Redis的引擎版本。 架构类型 集群版:可轻松突破Redis自身单线程瓶颈,满足大容量、高性能的业务需求。 标准版:采用主从架构,不仅能提供高性能的缓存服务,还支持数据高可靠。 读写分离版:可提供高可用、高性能、高灵活的读写分离服务,解决热点数据集中及高并发读取的业务需求,最大化地节约用户运维成本。 详细说明请参见架构信息查询导航。 分片数 Redis集群实例的分片数,数据将分布在该集群的各个分片上。 说明 架构类型选择为集群版时,才支持该参数。 节点类型 架构类型选择为集群版或标准版时,可选择为下述节点类型: 双副本:一主一从共两个节点,双机热备架构,数据持久化保存。 单副本:仅一个主节点,不能保障数据可用性和服务连续性。 架构类型选择为读写分离版时,可根据只读节点的数量选择节点类型。 实例规格 选择实例的规格,每种规格都有对应的内存大小、连接数上限、带宽限制等,详情请参见规格查询导航。 说明 实例创建后会自动生成数据库元信息,集群架构的实例每个分片均包含30 MB~50 MB的元信息,整个集群中元信息占用的存储空间为所有分片中元信息占用空间之和。 密码设置 稍后设置:在实例创建完成后设置密码,设置方法请参见修改密码。 立即设置:填入实例的密码。 密码长度为8~32位。 密码需包含大写字母、小写字母、特殊字符和数字中的至少三种。 支持的特殊字符为!@#$%^&()_+-=。 购买量 实例名称 设置实例的名称,便于后续业务识别。 购买数量 选择创建相同配置实例的数量,最大数量为99。 购买时长 选择付费类型为包年包月(本地盘)时,您还需要设置购买时长、到期是否自动续费。 创建Redis云盘实例 登录Redis管理控制台。 在跳转到的购买页面,选择商品类型为包年包月(云盘版)。 单击包年包月(云盘版) 说明 目前云盘版仅支持包年包月的计费方式,即在新建云盘版实例时支付费用。 选择实例配置,参数说明如下表所示。 参数 说明 地域 实例所在的地理位置。购买后无法更换地域。 根据目标用户所在的地理位置就近选择地域,提升用户访问速度。 确保Redis实例与需要连接的ECS实例创建于同一个地域,否则它们无法通过内网互通,只能通过外网连接,无法发挥最佳性能。 主可用区 即实例所属的可用区,可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内ECS实例和Redis实例通过内网连接时,网络延时最小。 说明 选择多可用区可实现实例的同城容灾。 网络类型 固定为专有网络:专有网络VPC(Virtual Private Cloud)是一种隔离的网络环境,安全性和性能均高于传统的经典网络。 注意 请确保Redis实例与需要互连的ECS实例或RDS实例的网络类型都是专有网络,且处于同一VPC中,否则它们无法通过内网互通。 专有网络 选择实例的专有网络。如果没有专有网络,请参见创建专有网络。 虚拟交换机 选择专有网络下的虚拟交换机(VSwitch)。如果该专有网络下在当前可用区中没有交换机,请参见创建交换机。 版本类型 社区版:兼容开源Redis协议标准、提供内存加硬盘的混合存储方式的数据库服务。 企业版(Tair)性能增强系列:即Redis企业版的性能增强型实例,采用多线程模型,性能约为同规格社区版实例的3倍,同时提供多种增强型数据结构模块(modules)简化开发,详情请参见性能增强型。 版本号 Redis的引擎版本。 说明 2.8版本的实例即将停止新购,建议您创建最新版本的Redis实例,以获得更多功能和更高的稳定性。 架构类型 不启用集群:采用主从(master-replica)双副本架构,详情请参见标准版-双副本。 启用集群:采用分片集群架构,详情请参见集群版-双副本。 分片规格 即实例的分片规格,标准版实例仅包含一个分片。每种规格都有对应的内存大小、连接数上限、带宽限制等,详情请参见云盘版实例规格。 说明 实例创建后会自动生成数据库元信息,集群架构的实例每个分片均包含30 MB~50 MB的元信息,整个集群中元信息占用的存储空间为所有分片中元信息占用空间之和。 规格类型 固定为共享型,多租户共享型资源,提供高性价比。 副本数 固定为2副本,一主一从共两个节点,双机热备保障可用性。 分片数量 Redis集群实例的分片数。 说明 当架构类型选择为集群版时,支持该参数。 存储类型 固定为ESSD,即阿里云ESSD(Enhanced SSD)云盘,详情请参见ESSD云盘。 磁盘容量 云盘的容量,仅供系统内部使用,不支持调整。 密码设置 稍后设置:在实例创建完成后设置密码,设置方法请参见修改密码。 立即设置:填入实例的密码。 密码长度为8~32位。 密码需包含大写字母、小写字母、特殊字符和数字中的至少三种。 支持的特殊字符为!@#$%^&()+-=。 实例名称 设置实例的名称,便于后续业务识别。 购买时长 设置实例的包年包月时长。 创建持久内存型或容量存储型实例 持久内存型实例:数据在持久内存中存取,提供命令级强持久化能力,适用于对性能要求较高,同时对数据一致性有要求的场景。 容量存储型实例:数据在ESSD云盘中存取,提供命令级强持久化能力,大容量,适用于对性能要求不高,但是对成本有控制要求的场景。 登录Redis管理控制台。 在跳转到的购买页面,选择商品类型为Tair包年包月。 选择Tair包年包月 说明 目前仅支持包年包月的计费方式,即在新建实例时支付费用。 选择实例配置,参数说明如下表所示。 参数 说明 地域 实例所在的地理位置,购买后无法更换地域。 说明 目前仅支持华东1(杭州)、华东2(上海)和华北3(张家口)地域。 根据目标用户所在的地理位置就近选择地域,提升用户访问速度。 确保Redis实例与需要连接的ECS实例创建于同一个地域,否则它们无法通过内网互通,只能通过外网连接,无法发挥最佳性能。 主可用区 即实例所属的可用区,可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内ECS实例和Redis实例通过内网连接时,网络延时最小。 说明 选择多可用区可实现实例的同城容灾。 网络类型 固定为专有网络:专有网络VPC(Virtual Private Cloud)是一种隔离的网络环境,安全性和性能均高于传统的经典网络。 注意 请确保Redis实例与需要互连的ECS实例或RDS实例的网络类型都是专有网络,且处于同一VPC中,否则它们无法通过内网互通。 专有网络 选择实例的专有网络。如果没有专有网络,请参见创建专有网络。 虚拟交换机 选择专有网络下的虚拟交换机(VSwitch)。如果该专有网络下在当前可用区中没有交换机,请参见创建交换机。 系列类型 Tair 持久内存型:数据在持久内存中存取,提供命令级强持久化能力,适用于对性能要求较高,同时对数据一致性有要求的场景,详情请参见持久内存型。 Tair 容量存储型:数据在ESSD云盘中存取,提供命令级强持久化能力,大容量,适用于对性能要求不高,但是对成本有控制要求的场景,详情请参见容量存储型。 架构类型 不启用集群:采用主从(master-replica)双副本架构,详情请参见标准版-双副本。 实例规格 选择实例的规格,每种规格都有对应的内存大小、连接数上限、带宽限制等,详情请参见规格查询导航。 说明 实例创建后会自动生成数据库元信息,集群架构的实例每个分片均包含30 MB~50 MB的元信息,整个集群中元信息占用的存储空间为所有分片中元信息占用空间之和。 副本数量 固定为2,即一主一从共两个节点,保障可用性。 存储类型 固定为ESSD PL1,即性能级别为PL1的阿里云ESSD(Enhanced SSD)云盘,详情请参见ESSD云盘。 存储空间 选择系列类型为Tair 容量存储型时,可根据业务需求选择存储空间。 说明 持久内存型实例不支持调整该参数,仅将ESSD云盘作为系统运行使用(例如日志、数据备份等),不作为数据存取的介质。 密码设置 稍后设置:在实例创建完成后设置密码,设置方法请参见修改密码。 立即设置:填入实例的密码。 密码长度为8~32位。 密码需包含大写字母、小写字母、特殊字符和数字中的至少三种。 支持的特殊字符为!@#$%^&*()+-=。 实例名称 设置实例的名称,便于后续业务识别。 购买时长 设置实例的包年包月时长。
游客2q7uranxketok 2021-02-09 22:28:35 0 浏览量 回答数 0

回答

1、服务器硬件配置提升、128G内存以上2、使用Kafka消息队列,方便以后扩展,IOT架构经常使用Kafka做中间件3、分析的结果数据,可以使用Redis缓存起来,方面后期UI展示使用4、网络带宽也要保证,尽量使用高性能传输协议。
徐雷frank 2019-12-02 01:46:36 0 浏览量 回答数 0

回答

1、服务器硬件配置提升、128G内存以上2、使用Kafka消息队列,方便以后扩展,IOT架构经常使用Kafka做中间件3、分析的结果数据,可以使用Redis缓存起来,方面后期UI展示使用4、网络带宽也要保证,尽量使用高性能传输协议。
徐雷frank 2019-12-02 01:47:23 0 浏览量 回答数 0

问题

高效运维最佳实践(03):Redis集群技术及Codis实践

本文转载自InfoQ 原文地址: http://www.infoq.com/cn/articles/effective-ops-part-03 高效运维最佳实践(03ÿ...
柚子 2019-12-01 21:48:00 29893 浏览量 回答数 1

回答

缓存是常见的提升程序性能的方法。1、Spring Cache其实是Spring为了简化自定义内置小缓存,比如使用Hashtable自定义缓存对象,实现的方法2、支持通过注解@Cacheable(value="newsCache")实现最简单的缓存,当然也有淘汰策略注册@CacheEvict,比较方便3、项目中的缓存策略,主要还是看需求和系统架构、单一小应用,数据比较少,可以使用Spring Cache或者自定义内存缓存4、mybatis缓存其实也是本地内存缓存,可以减少对于数据库的访问,但是因为无法做到复杂逻辑的控制使用起来比较麻烦5、Redis这种分布式缓存,大部分情况使用在分布式高并发架构中,数据量比较大、或者SSO等问题,一般使用分布式缓存
徐雷frank 2019-12-02 01:48:40 0 浏览量 回答数 0

问题

如何设计一个高并发系统?【Java问答学堂】45期

面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥࿰...
剑曼红尘 2020-06-28 20:53:14 10 浏览量 回答数 1

问题

当持久化DB使用RDS,缓存使用MongoDB或Redis时,怎么使用DTS实现缓存更新

为提高业务访问速度,提升业务读并发,很多用户会在业务架构中引入缓存层。业务读请求路由到缓存层,通过缓存的内存读取机制提升业务读取性能。为了保证数据完整性,业务的更新数据可以落到持久化存...
云栖大讲堂 2019-12-01 21:26:29 1996 浏览量 回答数 0

回答

需要钱,高薪,升职。升职加薪,迎娶白富美,走上人生巅峰。当然最重要的是学好技术,提升能力。为职业发展打下坚实的基础。看看Java高级编程,设计模式、分布式。最新的Spring Boot、Cloud、MongoDB、Redis,、微服务、大数据等。欢迎加入阿里巴巴Java群,阿里高级专家直播,群内,超过2700人了,年后3000人。最新《阿里巴巴Java Spring Boot 2.0开发实战课程》持续更新 完全免费第1课:Spring Boot2.0新特性和入门实战,https://yq.aliyun.com/live/583 第2课:Spring Boot2.0开发MVC网站并显示图片,https://yq.aliyun.com/live/592第3课:Spring Boot2.0实战MySQL和3个高级面试题,https://yq.aliyun.com/live/612第4课:Spring Boot2.0实战MVC用户登录和注册和Java面试题https://yq.aliyun.com/live/644第5课:Spring Boot2.0实战三层MVC架构实战与架构分层误区(Java面试题)https://yq.aliyun.com/live/655第6课:Spring Boot2.0实战MyBatis与优化(Java面试题)https://yq.aliyun.com/live/687第7课:Spring Boot2.0安全机制、漏洞与MVC身份验证实战(Java面试题) https://yq.aliyun.com/live/712第8课:Spring Boot2.0自动化配置机制解析(Java面试题) 课件 PPT下载 https://yq.aliyun.com/live/729第9课:Spring Boot2.0实战MongoDB4.0(MongoDB面试题) https://yq.aliyun.com/live/782第10课:Spring Boot2.0实战高并发缓存Redis面试题) https://yq.aliyun.com/live/791第11课:Spring Boot2.0实战RabbitMQ中间件与API原理解析 https://yq.aliyun.com/live/806第12课:Spring Boot2.0性能监控实战与Actuator机制解析 https://yq.aliyun.com/live/815第13课:Spring Boot2.0性能监控实战ElasticSearch搜索引擎中间件 https://yq.aliyun.com/live/844第14课:Spring Boot 2.0实战MyBatis连接池阿里Druid与SQL性能监控 https://yq.aliyun.com/live/855最新《阿里巴巴Java Spring Boot 2.0开发实战课程》官方网站 完全免费
徐雷frank 2019-12-02 01:01:15 0 浏览量 回答数 0

回答

一、基础篇 1.1、Java基础 面向对象的特征:继承、封装和多态 final, finally, finalize 的区别 Exception、Error、运行时异常与一般异常有何异同 请写出5种常见到的runtime exception int 和 Integer 有什么区别,Integer的值缓存范围 包装类,装箱和拆箱 String、StringBuilder、StringBuffer 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP请求的GET与POST方式的区别 Session与Cookie区别 列出自己常用的JDK包 MVC设计思想 equals与==的区别 hashCode和equals方法的区别与联系 什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用 Object类中常见的方法,为什么wait notify会放在Object里边? Java的平台无关性如何体现出来的 JDK和JRE的区别 Java 8有哪些新特性 1.2、Java常见集合 List 和 Set 区别 Set和hashCode以及equals方法的联系 List 和 Map 区别 Arraylist 与 LinkedList 区别 ArrayList 与 Vector 区别 HashMap 和 Hashtable 的区别 HashSet 和 HashMap 区别 HashMap 和 ConcurrentHashMap 的区别 HashMap 的工作原理及代码实现,什么时候用到红黑树 多线程情况下HashMap死循环的问题 HashMap出现Hash DOS攻击的问题 ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数 手写简单的HashMap 看过那些Java集合类的源码 1.3、进程和线程 线程和进程的概念、并行和并发的概念 创建线程的方式及实现 进程间通信的方式 说说 CountDownLatch、CyclicBarrier 原理和区别 说说 Semaphore 原理 说说 Exchanger 原理 ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理 讲讲线程池的实现原理 线程池的几种实现方式 线程的生命周期,状态是如何转移的 可参考:《Java多线程编程核心技术》 1.4、锁机制 说说线程安全问题,什么是线程安全,如何保证线程安全 重入锁的概念,重入锁为什么可以防止死锁 产生死锁的四个条件(互斥、请求与保持、不剥夺、循环等待) 如何检查死锁(通过jConsole检查死锁) volatile 实现原理(禁止指令重排、刷新内存) synchronized 实现原理(对象监视器) synchronized 与 lock 的区别 AQS同步队列 CAS无锁的概念、乐观锁和悲观锁 常见的原子操作类 什么是ABA问题,出现ABA问题JDK是如何解决的 乐观锁的业务场景及实现方式 Java 8并法包下常见的并发类 偏向锁、轻量级锁、重量级锁、自旋锁的概念 可参考:《Java多线程编程核心技术》 1.5、JVM JVM运行时内存区域划分 内存溢出OOM和堆栈溢出SOE的示例及原因、如何排查与解决 如何判断对象是否可以回收或存活 常见的GC回收算法及其含义 常见的JVM性能监控和故障处理工具类:jps、jstat、jmap、jinfo、jconsole等 JVM如何设置参数 JVM性能调优 类加载器、双亲委派模型、一个类的生命周期、类是如何加载到JVM中的 类加载的过程:加载、验证、准备、解析、初始化 强引用、软引用、弱引用、虚引用 Java内存模型JMM 1.6、设计模式 常见的设计模式 设计模式的的六大原则及其含义 常见的单例模式以及各种实现方式的优缺点,哪一种最好,手写常见的单利模式 设计模式在实际场景中的应用 Spring中用到了哪些设计模式 MyBatis中用到了哪些设计模式 你项目中有使用哪些设计模式 说说常用开源框架中设计模式使用分析 动态代理很重要!!! 1.7、数据结构 树(二叉查找树、平衡二叉树、红黑树、B树、B+树) 深度有限算法、广度优先算法 克鲁斯卡尔算法、普林母算法、迪克拉斯算法 什么是一致性Hash及其原理、Hash环问题 常见的排序算法和查找算法:快排、折半查找、堆排序等 1.8、网络/IO基础 BIO、NIO、AIO的概念 什么是长连接和短连接 Http1.0和2.0相比有什么区别,可参考《Http 2.0》 Https的基本概念 三次握手和四次挥手、为什么挥手需要四次 从游览器中输入URL到页面加载的发生了什么?可参考《从输入URL到页面加载发生了什么》 二、数据存储和消息队列 2.1、数据库 MySQL 索引使用的注意事项 DDL、DML、DCL分别指什么 explain命令 left join,right join,inner join 数据库事物ACID(原子性、一致性、隔离性、持久性) 事物的隔离级别(读未提交、读以提交、可重复读、可序列化读) 脏读、幻读、不可重复读 数据库的几大范式 数据库常见的命令 说说分库与分表设计 分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表,全局表?) 说说 SQL 优化之道 MySQL遇到的死锁问题、如何排查与解决 存储引擎的 InnoDB与MyISAM区别,优缺点,使用场景 索引类别(B+树索引、全文索引、哈希索引)、索引的原理 什么是自适应哈希索引(AHI) 为什么要用 B+tree作为MySQL索引的数据结构 聚集索引与非聚集索引的区别 遇到过索引失效的情况没,什么时候可能会出现,如何解决 limit 20000 加载很慢怎么解决 如何选择合适的分布式主键方案 选择合适的数据存储方案 常见的几种分布式ID的设计方案 常见的数据库优化方案,在你的项目中数据库如何进行优化的 2.2、Redis Redis 有哪些数据类型,可参考《Redis常见的5种不同的数据类型详解》 Redis 内部结构 Redis 使用场景 Redis 持久化机制,可参考《使用快照和AOF将Redis数据持久化到硬盘中》 Redis 集群方案与实现 Redis 为什么是单线程的? 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级 使用缓存的合理性问题 Redis常见的回收策略 2.3、消息队列 消息队列的使用场景 消息的重发补偿解决思路 消息的幂等性解决思路 消息的堆积解决思路 自己如何实现消息队列 如何保证消息的有序性 三、开源框架和容器 3.1、SSM/Servlet Servlet的生命周期 转发与重定向的区别 BeanFactory 和 ApplicationContext 有什么区别 Spring Bean 的生命周期 Spring IOC 如何实现 Spring中Bean的作用域,默认的是哪一个 说说 Spring AOP、Spring AOP 实现原理 动态代理(CGLib 与 JDK)、优缺点、性能对比、如何选择 Spring 事务实现方式、事务的传播机制、默认的事务类别 Spring 事务底层原理 Spring事务失效(事务嵌套),JDK动态代理给Spring事务埋下的坑,可参考《JDK动态代理给Spring事务埋下的坑!》 如何自定义注解实现功能 Spring MVC 运行流程 Spring MVC 启动流程 Spring 的单例实现原理 Spring 框架中用到了哪些设计模式 Spring 其他产品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等) 有没有用到Spring Boot,Spring Boot的认识、原理 MyBatis的原理 可参考《为什么会有Spring》 可参考《为什么会有Spring AOP》 3.2、Netty 为什么选择 Netty 说说业务中,Netty 的使用场景 原生的 NIO 在 JDK 1.7 版本存在 epoll bug 什么是TCP 粘包/拆包 TCP粘包/拆包的解决办法 Netty 线程模型 说说 Netty 的零拷贝 Netty 内部执行流程 Netty 重连实现 3.3、Tomcat Tomcat的基础架构(Server、Service、Connector、Container) Tomcat如何加载Servlet的 Pipeline-Valve机制 可参考:《四张图带你了解Tomcat系统架构!》 四、分布式 4.1、Nginx 请解释什么是C10K问题或者知道什么是C10K问题吗? Nginx简介,可参考《Nginx简介》 正向代理和反向代理. Nginx几种常见的负载均衡策略 Nginx服务器上的Master和Worker进程分别是什么 使用“反向代理服务器”的优点是什么? 4.2、分布式其他 谈谈业务中使用分布式的场景 Session 分布式方案 Session 分布式处理 分布式锁的应用场景、分布式锁的产生原因、基本概念 分布是锁的常见解决方案 分布式事务的常见解决方案 集群与负载均衡的算法与实现 说说分库与分表设计,可参考《数据库分库分表策略的具体实现方案》 分库与分表带来的分布式困境与应对之策 4.3、Dubbo 什么是Dubbo,可参考《Dubbo入门》 什么是RPC、如何实现RPC、RPC 的实现原理,可参考《基于HTTP的RPC实现》 Dubbo中的SPI是什么概念 Dubbo的基本原理、执行流程 五、微服务 5.1、微服务 前后端分离是如何做的? 微服务哪些框架 Spring Could的常见组件有哪些?可参考《Spring Cloud概述》 领域驱动有了解吗?什么是领域驱动模型?充血模型、贫血模型 JWT有了解吗,什么是JWT,可参考《前后端分离利器之JWT》 你怎么理解 RESTful 说说如何设计一个良好的 API 如何理解 RESTful API 的幂等性 如何保证接口的幂等性 说说 CAP 定理、BASE 理论 怎么考虑数据一致性问题 说说最终一致性的实现方案 微服务的优缺点,可参考《微服务批判》 微服务与 SOA 的区别 如何拆分服务、水平分割、垂直分割 如何应对微服务的链式调用异常 如何快速追踪与定位问题 如何保证微服务的安全、认证 5.2、安全问题 如何防范常见的Web攻击、如何方式SQL注入 服务端通信安全攻防 HTTPS原理剖析、降级攻击、HTTP与HTTPS的对比 5.3、性能优化 性能指标有哪些 如何发现性能瓶颈 性能调优的常见手段 说说你在项目中如何进行性能调优 六、其他 6.1、设计能力 说说你在项目中使用过的UML图 你如何考虑组件化、服务化、系统拆分 秒杀场景如何设计 可参考:《秒杀系统的技术挑战、应对策略以及架构设计总结一二!》 6.2、业务工程 说说你的开发流程、如何进行自动化部署的 你和团队是如何沟通的 你如何进行代码评审 说说你对技术与业务的理解 说说你在项目中遇到感觉最难Bug,是如何解决的 介绍一下工作中的一个你认为最有价值的项目,以及在这个过程中的角色、解决的问题、你觉得你们项目还有哪些不足的地方 6.3、软实力 说说你的优缺点、亮点 说说你最近在看什么书、什么博客、在研究什么新技术、再看那些开源项目的源代码 说说你觉得最有意义的技术书籍 工作之余做什么事情、平时是如何学习的,怎样提升自己的能力 说说个人发展方向方面的思考 说说你认为的服务端开发工程师应该具备哪些能力 说说你认为的架构师是什么样的,架构师主要做什么 如何看待加班的问题
徐刘根 2020-03-31 11:22:08 0 浏览量 回答数 0

问题

项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?【Java问答学堂】30期

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为...
剑曼红尘 2020-06-02 13:28:01 44 浏览量 回答数 1

问题

为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗?【Java问答学堂】46期

面试题 为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗? 面试官心理分析 从这个问题开始就进行分布式系统环节了,现在出去面试分布式都成标配了,...
剑曼红尘 2020-06-29 16:39:00 6 浏览量 回答数 1

问题

阿里云服务器 如何处理网站高并发流量问题?(含教程)

很多平台一旦做大了,平台的流量就会陡增,同时并发访问的流量也会暴增,原本规划的硬件配置就无法满足当下的流量问题。 那么如何处理好高并发的流量问题呢? 小编将这些分为2个方面&...
元芳啊 2019-12-01 21:54:35 1511 浏览量 回答数 1

问题

达达O2O后台架构演进实践:从0到4000高并发请求背后的努力:报错

1、引言 达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台。 达达的业务模式与滴滴以及Uber很相似...
kun坤 2020-06-09 15:20:48 4 浏览量 回答数 1

问题

为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?【Java问答】41期

面试题 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数...
剑曼红尘 2020-06-19 13:47:21 0 浏览量 回答数 0

回答

92题 一般来说,建立INDEX有以下益处:提高查询效率;建立唯一索引以保证数据的唯一性;设计INDEX避免排序。 缺点,INDEX的维护有以下开销:叶节点的‘分裂’消耗;INSERT、DELETE和UPDATE操作在INDEX上的维护开销;有存储要求;其他日常维护的消耗:对恢复的影响,重组的影响。 需要建立索引的情况:为了建立分区数据库的PATITION INDEX必须建立; 为了保证数据约束性需要而建立的INDEX必须建立; 为了提高查询效率,则考虑建立(是否建立要考虑相关性能及维护开销); 考虑在使用UNION,DISTINCT,GROUP BY,ORDER BY等字句的列上加索引。 91题 作用:加快查询速度。原则:(1) 如果某属性或属性组经常出现在查询条件中,考虑为该属性或属性组建立索引;(2) 如果某个属性常作为最大值和最小值等聚集函数的参数,考虑为该属性建立索引;(3) 如果某属性经常出现在连接操作的连接条件中,考虑为该属性或属性组建立索引。 90题 快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。 89题 游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。 88题 事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。 87题 MySQL可以使用多个字段同时建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。具体原因为:MySQL使用索引时需要索引有序,假设现在建立了"name,age,school"的联合索引,那么索引的排序为: 先按照name排序,如果name相同,则按照age排序,如果age的值也相等,则按照school进行排序。因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面。此外可以根据特例的查询或者表结构进行单独的调整。 86题 建立索引的时候一般要考虑到字段的使用频率,经常作为条件进行查询的字段比较适合。如果需要建立联合索引的话,还需要考虑联合索引中的顺序。此外也要考虑其他方面,比如防止过多的所有对表造成太大的压力。这些都和实际的表结构以及查询方式有关。 85题 存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。 84题 存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 83题 减少表连接,减少复杂 SQL,拆分成简单SQL。减少排序:非必要不排序,利用索引排序,减少参与排序的记录数。尽量避免 select *。尽量用 join 代替子查询。尽量少使用 or,使用 in 或者 union(union all) 代替。尽量用 union all 代替 union。尽量早的将无用数据过滤:选择更优的索引,先分页再Join…。避免类型转换:索引失效。优先优化高并发的 SQL,而不是执行频率低某些“大”SQL。从全局出发优化,而不是片面调整。尽可能对每一条SQL进行 explain。 82题 如果条件中有or,即使其中有条件带索引也不会使用(要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引)。对于多列索引,不是使用的第一部分,则不会使用索引。like查询是以%开头。如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。如果mysql估计使用全表扫描要比使用索引快,则不使用索引。例如,使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,MySQL就有可能不使用索引。 81题 主键不能重复,不能为空,唯一键不能重复,可以为空。建立主键的目的是让外键来引用。一个表最多只有一个主键,但可以有很多唯一键。 80题 空值('')是不占用空间的,判断空字符用=''或者<>''来进行处理。NULL值是未知的,且占用空间,不走索引;判断 NULL 用 IS NULL 或者 is not null ,SQL 语句函数中可以使用 ifnull ()函数来进行处理。无法比较 NULL 和 0;它们是不等价的。无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。NULL 值可以使用 <=> 符号进行比较,该符号与等号作用相似,但对NULL有意义。进行 count ()统计某列的记录数的时候,如果采用的 NULL 值,会被系统自动忽略掉,但是空值是统计到其中。 79题 HEAP表是访问数据速度最快的MySQL表,他使用保存在内存中的散列索引。一旦服务器重启,所有heap表数据丢失。BLOB或TEXT字段是不允许的。只能使用比较运算符=,<,>,=>,= <。HEAP表不支持AUTO_INCREMENT。索引不可为NULL。 78题 如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数字和前缀(X),或者只用(Ox)前缀输入十六进制数字。如果表达式上下文是字符串,则十六进制数字串将自动转换为字符串。 77题 Mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。 76题 在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。 75题 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。 74题 创建索引的时候尽量使用唯一性大的列来创建索引,由于使用b+tree做为索引,以innodb为例,一个树节点的大小由“innodb_page_size”,为了减少树的高度,同时让一个节点能存放更多的值,索引列尽量在整数类型上创建,如果必须使用字符类型,也应该使用长度较少的字符类型。 73题 当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下: 限定数据的范围: 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内。读/写分离: 经典的数据库拆分方案,主库负责写,从库负责读。垂直分区: 根据数据库里面数据表的相关性进行拆分。简单来说垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。水平分区: 保持数据表结构不变,通过某种策略存储数据分片。这样每一片数据分散到不同的表或者库中,达到了分布式的目的。水平拆分可以支撑非常大的数据量。 72题 乐观锁失败后会抛出ObjectOptimisticLockingFailureException,那么我们就针对这块考虑一下重试,自定义一个注解,用于做切面。针对注解进行切面,设置最大重试次数n,然后超过n次后就不再重试。 71题 一致性非锁定读讲的是一条记录被加了X锁其他事务仍然可以读而不被阻塞,是通过innodb的行多版本实现的,行多版本并不是实际存储多个版本记录而是通过undo实现(undo日志用来记录数据修改前的版本,回滚时会用到,用来保证事务的原子性)。一致性锁定读讲的是我可以通过SELECT语句显式地给一条记录加X锁从而保证特定应用场景下的数据一致性。 70题 数据库引擎:尤其是mysql数据库只有是InnoDB引擎的时候事物才能生效。 show engines 查看数据库默认引擎;SHOW TABLE STATUS from 数据库名字 where Name='表名' 如下;SHOW TABLE STATUS from rrz where Name='rrz_cust';修改表的引擎alter table table_name engine=innodb。 69题 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;同理,哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询);哈希索引也不支持多列联合索引的最左匹配规则;B+树索引的关键字检索效率比较平均,不像B树那样波动幅度大,在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题。 68题 decimal精度比float高,数据处理比float简单,一般优先考虑,但float存储的数据范围大,所以范围大的数据就只能用它了,但要注意一些处理细节,因为不精确可能会与自己想的不一致,也常有关于float 出错的问题。 67题 datetime、timestamp精确度都是秒,datetime与时区无关,存储的范围广(1001-9999),timestamp与时区有关,存储的范围小(1970-2038)。 66题 Char使用固定长度的空间进行存储,char(4)存储4个字符,根据编码方式的不同占用不同的字节,gbk编码方式,不论是中文还是英文,每个字符占用2个字节的空间,utf8编码方式,每个字符占用3个字节的空间。Varchar保存可变长度的字符串,使用额外的一个或两个字节存储字符串长度,varchar(10),除了需要存储10个字符,还需要1个字节存储长度信息(10),超过255的长度需要2个字节来存储。char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时,会去掉空格进行比较。Varbinary保存变长的字符串,后面不会补\0。 65题 首先分析语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引。如果对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果是的话可以进行横向或者纵向的分表。 64题 建立索引的时候一般要考虑到字段的使用频率,经常作为条件进行查询的字段比较适合。如果需要建立联合索引的话,还需要考虑联合索引中的顺序。此外也要考虑其他方面,比如防止过多的所有对表造成太大的压力。这些都和实际的表结构以及查询方式有关。 63题 存储过程是一些预编译的SQL语句。1、更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。2、存储过程是一个预编译的代码块,执行效率比较高,一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率,可以一定程度上确保数据安全。 62题 密码散列、盐、用户身份证号等固定长度的字符串应该使用char而不是varchar来存储,这样可以节省空间且提高检索效率。 61题 推荐使用自增ID,不要使用UUID。因为在InnoDB存储引擎中,主键索引是作为聚簇索引存在的,也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(按照顺序),如果主键索引是自增ID,那么只需要不断向后排列即可,如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入,数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。总之,在数据量大一些的情况下,用自增主键性能会好一些。 60题 char是一个定长字段,假如申请了char(10)的空间,那么无论实际存储多少内容。该字段都占用10个字符,而varchar是变长的,也就是说申请的只是最大长度,占用的空间为实际字符长度+1,最后一个字符存储使用了多长的空间。在检索效率上来讲,char > varchar,因此在使用中,如果确定某个字段的值的长度,可以使用char,否则应该尽量使用varchar。例如存储用户MD5加密后的密码,则应该使用char。 59题 一. read uncommitted(读取未提交数据) 即便是事务没有commit,但是我们仍然能读到未提交的数据,这是所有隔离级别中最低的一种。 二. read committed(可以读取其他事务提交的数据)---大多数数据库默认的隔离级别 当前会话只能读取到其他事务提交的数据,未提交的数据读不到。 三. repeatable read(可重读)---MySQL默认的隔离级别 当前会话可以重复读,就是每次读取的结果集都相同,而不管其他事务有没有提交。 四. serializable(串行化) 其他会话对该表的写操作将被挂起。可以看到,这是隔离级别中最严格的,但是这样做势必对性能造成影响。所以在实际的选用上,我们要根据当前具体的情况选用合适的。 58题 B+树的高度一般为2-4层,所以查找记录时最多只需要2-4次IO,相对二叉平衡树已经大大降低了。范围查找时,能通过叶子节点的指针获取数据。例如查找大于等于3的数据,当在叶子节点中查到3时,通过3的尾指针便能获取所有数据,而不需要再像二叉树一样再获取到3的父节点。 57题 因为事务在修改页时,要先记 undo,在记 undo 之前要记 undo 的 redo, 然后修改数据页,再记数据页修改的 redo。 Redo(里面包括 undo 的修改) 一定要比数据页先持久化到磁盘。 当事务需要回滚时,因为有 undo,可以把数据页回滚到前镜像的状态,崩溃恢复时,如果 redo log 中事务没有对应的 commit 记录,那么需要用 undo把该事务的修改回滚到事务开始之前。 如果有 commit 记录,就用 redo 前滚到该事务完成时并提交掉。 56题 redo log是物理日志,记录的是"在某个数据页上做了什么修改"。 binlog是逻辑日志,记录的是这个语句的原始逻辑,比如"给ID=2这一行的c字段加1"。 redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。 redo log是循环写的,空间固定会用完:binlog 是可以追加写入的。"追加写"是指binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。 最开始 MySQL 里并没有 InnoDB 引擎,MySQL 自带的引擎是 MyISAM,但是 MyISAM 没有 crash-safe 的能力,binlog日志只能用于归档。而InnoDB 是另一个公司以插件形式引入 MySQL 的,既然只依靠 binlog 是没有 crash-safe 能力的,所以 InnoDB 使用另外一套日志系统,也就是 redo log 来实现 crash-safe 能力。 55题 重做日志(redo log)      作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,达到事务一致性。 回滚日志(undo log)  作用:保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。 二进 制日志(binlog)    作用:用于主从复制,实现主从同步;用于数据库的基于时间点的还原。 错误日志(errorlog) 作用:Mysql本身启动,停止,运行期间发生的错误信息。 慢查询日志(slow query log)  作用:记录执行时间过长的sql,时间阈值可以配置,只记录执行成功。 一般查询日志(general log)    作用:记录数据库的操作明细,默认关闭,开启后会降低数据库性能 。 中继日志(relay log) 作用:用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放。 54题 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 死锁: 是指两个或两个以上的进程在执行过程中。因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。 那么对应的解决死锁问题的关键就是:让不同的session加锁有次序。死锁的解决办法:1.查出的线程杀死。2.设置锁的超时时间。3.指定获取锁的顺序。 53题 当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性(脏读,不可重复读,幻读等),可能产生死锁。 乐观锁:乐观锁不是数据库自带的,需要我们自己去实现。 悲观锁:在进行每次操作时都要通过获取锁才能进行对相同数据的操作。 共享锁:加了共享锁的数据对象可以被其他事务读取,但不能修改。 排他锁:当数据对象被加上排它锁时,一个事务必须得到锁才能对该数据对象进行访问,一直到事务结束锁才被释放。 行锁:就是给某一条记录加上锁。 52题 Mysql是关系型数据库,MongoDB是非关系型数据库,数据存储结构的不同。 51题 关系型数据库优点:1.保持数据的一致性(事务处理)。 2.由于以标准化为前提,数据更新的开销很小。 3. 可以进行Join等复杂查询。 缺点:1、为了维护一致性所付出的巨大代价就是其读写性能比较差。 2、固定的表结构。 3、高并发读写需求。 4、海量数据的高效率读写。 非关系型数据库优点:1、无需经过sql层的解析,读写性能很高。 2、基于键值对,数据没有耦合性,容易扩展。 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 缺点:1、不提供sql支持,学习和使用成本较高。 2、无事务处理,附加功能bi和报表等支持也不好。 redis与mongoDB的区别: 性能:TPS方面redis要大于mongodb。 可操作性:mongodb支持丰富的数据表达,索引,redis较少的网络IO次数。 可用性:MongoDB优于Redis。 一致性:redis事务支持比较弱,mongoDB不支持事务。 数据分析:mongoDB内置了数据分析的功能(mapreduce)。 应用场景:redis数据量较小的更性能操作和运算上,MongoDB主要解决海量数据的访问效率问题。 50题 如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则的话(即Redis节点需要动态变化的情况),必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。 49题 分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。分区使Redis的计算能力通过简单地增加计算机得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长。 48题 除了缓存服务器自带的缓存失效策略之外(Redis默认的有6种策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种: 1.定时去清理过期的缓存; 2.当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。 两者各有优劣,第一种的缺点是维护大量缓存的key是比较麻烦的,第二种的缺点就是每次用户请求过来都要判断缓存失效,逻辑相对比较复杂!具体用哪种方案,可以根据应用场景来权衡。 47题 Redis提供了两种方式来作消息队列: 一个是使用生产者消费模式模式:会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费,谁先抢到算谁的,如果队列里没有消息,则消费者继续监听 。另一个就是发布订阅者模式:也是一个或多个客户端订阅消息频道,只要发布者发布消息,所有订阅者都能收到消息,订阅者都是平等的。 46题 Redis的数据结构列表(list)可以实现延时队列,可以通过队列和栈来实现。blpop/brpop来替换lpop/rpop,blpop/brpop阻塞读在队列没有数据的时候,会立即进入休眠状态,一旦数据到来,则立刻醒过来。Redis的有序集合(zset)可以用于实现延时队列,消息作为value,时间作为score。Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。 45题 1.热点数据缓存:因为Redis 访问速度块、支持的数据类型比较丰富。 2.限时业务:expire 命令设置 key 的生存时间,到时间后自动删除 key。 3.计数器:incrby 命令可以实现原子性的递增。 4.排行榜:借助 SortedSet 进行热点数据的排序。 5.分布式锁:利用 Redis 的 setnx 命令进行。 6.队列机制:有 list push 和 list pop 这样的命令。 44题 一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n 个关键字重新映射,其中K是关键字的数量, n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。 43题 RDB的优点:适合做冷备份;读写服务影响小,reids可以保持高性能;重启和恢复redis进程,更加快速。RDB的缺点:宕机会丢失最近5分钟的数据;文件特别大时可能会暂停数毫秒,或者甚至数秒。 AOF的优点:每个一秒执行fsync操作,最多丢失1秒钟的数据;以append-only模式写入,没有任何磁盘寻址的开销;文件过大时,不会影响客户端读写;适合做灾难性的误删除的紧急恢复。AOF的缺点:AOF日志文件比RDB数据快照文件更大,支持写QPS比RDB支持的写QPS低;比RDB脆弱,容易有bug。 42题 对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis的操作之所以是原子性的,是因为Redis是单线程的。而在程序中执行多个Redis命令并非是原子性的,这也和普通数据库的表现是一样的,可以用incr或者使用Redis的事务,或者使用Redis+Lua的方式实现。对Redis来说,执行get、set以及eval等API,都是一个一个的任务,这些任务都会由Redis的线程去负责执行,任务要么执行成功,要么执行失败,这就是Redis的命令是原子性的原因。 41题 (1)twemproxy,使用方式简单(相对redis只需修改连接端口),对旧项目扩展的首选。(2)codis,目前用的最多的集群方案,基本和twemproxy一致的效果,但它支持在节点数改变情况下,旧节点数据可恢复到新hash节点。(3)redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。(4)在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的代替算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。 40题 (1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 (2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 (3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 (4) 尽量避免在压力很大的主库上增加从库 (5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。 39题 比如订单管理,热数据:3个月内的订单数据,查询实时性较高;温数据:3个月 ~ 12个月前的订单数据,查询频率不高;冷数据:1年前的订单数据,几乎不会查询,只有偶尔的查询需求。热数据使用mysql进行存储,需要分库分表;温数据可以存储在ES中,利用搜索引擎的特性基本上也可以做到比较快的查询;冷数据可以存放到Hive中。从存储形式来说,一般情况冷数据存储在磁带、光盘,热数据一般存放在SSD中,存取速度快,而温数据可以存放在7200转的硬盘。 38题 当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。降级的最终目的是保证核心服务可用,即使是有损的。而且有些服务是无法降级的(如加入购物车、结算)。 37题 分层架构设计,有一条准则:站点层、服务层要做到无数据无状态,这样才能任意的加节点水平扩展,数据和状态尽量存储到后端的数据存储服务,例如数据库服务或者缓存服务。显然进程内缓存违背了这一原则。 36题 更新数据的时候,根据数据的唯一标识,将操作路由之后,发送到一个 jvm 内部队列中。读取数据的时候,如果发现数据不在缓存中,那么将重新读取数据+更新缓存的操作,根据唯一标识路由之后,也发送同一个 jvm 内部队列中。一个队列对应一个工作线程,每个工作线程串行拿到对应的操作,然后一条一条的执行。 35题 redis分布式锁加锁过程:通过setnx向特定的key写入一个随机值,并同时设置失效时间,写值成功既加锁成功;redis分布式锁解锁过程:匹配随机值,删除redis上的特点key数据,要保证获取数据、判断一致以及删除数据三个操作是原子的,为保证原子性一般使用lua脚本实现;在此基础上进一步优化的话,考虑使用心跳检测对锁的有效期进行续期,同时基于redis的发布订阅优雅的实现阻塞式加锁。 34题 volatile-lru:当内存不足以容纳写入数据时,从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。 volatile-ttl:当内存不足以容纳写入数据时,从已设置过期时间的数据集中挑选将要过期的数据淘汰。 volatile-random:当内存不足以容纳写入数据时,从已设置过期时间的数据集中任意选择数据淘汰。 allkeys-lru:当内存不足以容纳写入数据时,从数据集中挑选最近最少使用的数据淘汰。 allkeys-random:当内存不足以容纳写入数据时,从数据集中任意选择数据淘汰。 noeviction:禁止驱逐数据,当内存使用达到阈值的时候,所有引起申请内存的命令会报错。 33题 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。 惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。 定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。 32题 缓存击穿,一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。如何避免:在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。 31题 缓存雪崩,是指在某一个时间段,缓存集中过期失效。大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。而缓存服务器某个节点宕机或断网,对数据库服务器造成的压力是不可预知的,很有可能瞬间就把数据库压垮。如何避免:1.redis高可用,搭建redis集群。2.限流降级,在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。3.数据预热,在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间。 30题 缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。一些恶意的请求会故意查询不存在的 key,请求量很大,对数据库造成压力,甚至压垮数据库。 如何避免:1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该 key 对应的数据 insert 了之后清理缓存。2:对一定不存在的 key 进行过滤。可以把所有的可能存在的 key 放到一个大的 Bitmap 中,查询时通过该 bitmap 过滤。 29题 1.memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型。 2.redis 的速度比 memcached 快很多。 3.redis 可以持久化其数据。 4.Redis支持数据的备份,即master-slave模式的数据备份。 5.Redis采用VM机制。 6.value大小:redis最大可以达到1GB,而memcache只有1MB。 28题 Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过spring提供的@ImportResource来加载xml配置。例如:@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"}) 27题 Spring像一个大家族,有众多衍生产品例如Spring Boot,Spring Security等等,但他们的基础都是Spring的IOC和AOP,IOC提供了依赖注入的容器,而AOP解决了面向切面的编程,然后在此两者的基础上实现了其他衍生产品的高级功能。Spring MVC是基于Servlet的一个MVC框架,主要解决WEB开发的问题,因为 Spring的配置非常复杂,各种xml,properties处理起来比较繁琐。Spring Boot遵循约定优于配置,极大降低了Spring使用门槛,又有着Spring原本灵活强大的功能。总结:Spring MVC和Spring Boot都属于Spring,Spring MVC是基于Spring的一个MVC框架,而Spring Boot是基于Spring的一套快速开发整合包。 26题 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。YAML 的配置文件后缀为 .yml,是一种人类可读的数据序列化语言,可以简单表达清单、散列表,标量等数据形态。它通常用于配置文件,与属性文件相比,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。 25题 Spring Boot有3种热部署方式: 1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动。 2.使用springloaded本地加载启动,配置jvm参数-javaagent:<jar包地址> -noverify。 3.使用devtools工具包,操作简单,但是每次需要重新部署。 用
游客ih62co2qqq5ww 2020-03-27 23:56:48 0 浏览量 回答数 0

问题

客户案例分享——云络科技

云络科技 云络科技成立于2008年,是中国最早提供服务器管理及云计算服务的公司。是全球领先的OaaS运维即服务的倡导者和领跑者。公司总部位于上海,客户遍及亚洲和全球,专注于...
申木 2019-12-01 21:49:30 9891 浏览量 回答数 1

回答

第一讲:云计算带来的技术变革 6月9日打卡,今日学习《第一讲:云计算带来的技术变革》,通过乔帮主本次的领读,学到了云平台、云产品的选型以及软件技术的选项 完成的作业见如下: 1. B 2. 区别是:云平台相对传统的虚拟化容器来讲,有强大的技术支持,同时尽量满足大多数业务需要,能够一键开启服务器环境,进行管理、操作相关软件应用 3.区别是: SaaS、PaaS、IaaS简单的说都属于云计算服务,也就是云计算+服务 IaaS(Infrastructure as a service – 基础设施即服务):用户可以在云服务提供商提供的基础设施上部署和运行任何软件,包括操作系统和应用软件 PaaS(Platform as a service – 平台即服务):PaaS给用户提供的能力是使用由云服务提供商支持的编程语言、库、服务以及开发工具来创建、开发应用程序并部署在相关的基础设施上 SaaS(Software as a Service – 软件即服务):SaaS给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。 4. 云端最火的语言是Java 第二讲:云端系统热门技术选型及配置容量规划实战 2020年6月20日打卡,今日学习《第二讲:云端系统热门技术选型及配置容量规划实战》,通过乔帮主本次的领读,学到了云端系统技术选型:云端网络、云端web服务器、云端负载均衡、云端存储、云端缓存和云端数据库六个方面,以及云端配置选型。 作业1:不收取流量费用,因为是入口流量;作业2:Nginx可以作为Web服务器、或者负载均衡,优势如下:稳定性好,云端架构中LNMP(Linux+Nginx+MySQL+PHP)应用很广泛;性能高,高并发,系统资源占用少;支持四层、七层的负载均衡、反向代理的功能;前端静态数据缓存; 支持插件和灵活的二次开发;作业3:可以,因为LVS(Linux Virtual Server)在四层和二层,不能识别封装在七层中的数据包内容。作业4:一次连接:LVS的DR模式、NAT模式对数据包的处理都做一次连接,负载均衡对数据包仅做转发;二次连接:Ngnix/HAProxy四层的二次连接是客户端和负载均衡进行TCP三次握手后,负载均衡和后端服务器会进行新的TCP连接; Nginx/HAProxy七层的二次连接是客户端和负载均衡进行TCP三次握手后,还需要等客户端Pushdata传输数据后,负载均衡和后端服务器会进行新的TCP连接;作业5:I/O 5分钟法则:如果一天记录频繁被访问,就应该考虑放到缓存里。否则的话,客户端就按需要直接去访问数据源,这个临界点就是5分钟。作业6:数据库的三大分类:关系型数据库(ACID模型)、BASE模型、非关系型数据库。热门关系型数据库:Oracle、MySQL、SQL Server;热门非关系型数据库:Redis;作业7:2台 核16G,10Mb 第三讲:云端五大类热门技术实践 2020年6月25日打卡,今日学习《第三讲:云端五大类热门技术实践》,通过乔帮主本次的领读,学到了云端实践中的主机、负载均衡、存储、缓存和数据库实践。 作业1 分布式架构对服务器单机的性能依赖不高,通过大量云资源进行分布式快速部署,满足业务的需求和发展。 作业2 DNS+跨地域+Docker分布式架构,通过智能解析把不同地域的请求引流到各自地域部署的节点中,节点中部署的业务用Docker进行部署,业务代码对平台没有依赖,又可以接入各大云运营商。 作业3 前端建议使用四层; 部署Web类后端的注意事项:需要配置https证书,虚拟主机,Rewrite等功能,可放在后端中用Nginx配置; 作业4: 系统数据:Rsync,快照 文件数据:NFS,OSS 数据库数据:主从复制 作业5:读写分离属于垂直分区,主要是为了解决数据库读写的压力; Sharing技术属于水平分区,为了解决海量数据的压力; 第四讲:云端运维/监控/容器及DevOps实践 2020年6月30日打卡,今日学习《第四讲:云端运维/监控/容器及DevOps实践》,通过乔帮主本次的领读,学到了云端实践篇中的云端运维实践、云端监控实践和云端容器/DevOps实践。 作业1 一:云端配置选型 二:云端网络架构 三:云端负载均衡的选择 四:云端静态资源访问 五:云端运维管理 作业2 Zabbix的Server端数据是以MySQL为主的关系型数据库,存在性能问题,对云容器支持不太好; Prometheus属于容器监控体系技术,对云产品、站点、日志、代码监控问题无法解决; 作业3 云监控会成为未来监控的主要趋势,云平台把常见的开源环境,Web、缓存、数据库等进行封装产品化。 作业4 基于Docker镜像的CI/CD与传统基于代码仓库的CI/CD有以下优势: 实现容器启动在秒级完成发布; 对ECS没有依赖; Docker容器资源自定义配置,最大化提升资源利用率; 可以结合JIRA+Confluence做项目管理及知识库管理; 作业5 使用Docker+K8S+DNS+Rancher 第五讲:云时代安全防护面临的挑战和机遇 2020年7月7日打卡,今日学习《第五讲:云时代安全防护面临的挑战和机遇》,通过乔帮主的领读,学习到了云端安全面临的挑战和机遇,云端黑客常见攻击和云端安全最佳防御方案。 作业1 Redis漏洞不能用WAF防御,要用安骑士来检测,WAF针对OSI七层模型中HTTP层的防御,也就是Web漏洞的防御;安骑士是解决操作系统级别的漏洞、木马、病毒。 作业2 在CDN上配置证书,一般把证书存放在流量入口处。 作业3 DDoS+WAF结合起来防御。 作业4 采用安全类云产品,替代单机低配服务器; 安全架构进行优化,采用分布式架构; 在运维层次进行安全保障,调优PHP进行数、Tomcat连接数等,调优操作系统内核参数;
爱吃鱼的程序员 2020-06-09 21:43:01 0 浏览量 回答数 0

回答

第一讲打卡 A1 B A2 云平台相对传统的虚拟化容器来讲,有强大的技术支持,完全将底层硬件设备归为整体,再其之上进行整合处理,很好的利用当前系统内的资源,同时进行分配资源 A3 SaaS、PaaS、IaaS都属于云计算服务,也就是云计算+服务 IaaS:用户可以在云服务提供商提供的基础设施上部署和运行任何软件,包括操作系统和应用软件 PaaS:PaaS给用户提供的能力是使用由云服务提供商支持的编程语言、库、服务以及开发工具来创建、开发应用程序并部署在相关的基础设施上 SaaS:SaaS给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。 A4 Java,Devops。 第二讲打卡 A1 不需要 A2 轻量级web服务器/反向代理服务器 四层/七层负载均衡 占用内存少,并发强丰富的插件功能模块 ###A3 不可以,SLB的四层采用的是LVS A4 一次连接:对数据仅做转发作用 二次连接:要增加与后端服务的连接 应用场景:一次连接会使得整个负载均衡的性能得到一定的高度,而二次连接较一次连接多一中间一次数据包的处理以及增加一次tcp连接,性能方面不如一次的,但是安全等等应该会有所保障。(个人觉得适用场景:一次可以类似于udp一样的存在,二次相当于tcp一样存在) A5 I/O 5分钟法则,什么情况下适用:::个人看法觉得高访问数据,热点数据都需要放在缓存中,当然注意缓存时效性以及缓存穿透。 A6 关系型数据库(ACID模型)、BASE模型、非关系型数据库 关系型:Oracle、MySQL、SQL Server非关系:Redis、Memcache A7 2* 8C16G 15M 第三讲打卡 A1 云平台能够更好的进行业务的水平方向扩展,并且能够跟随业务的特性能够动态伸缩。 A2 DNS + 跨地域/跨平台 + 容器化 分布式架构 A3 四层。后端项目ECS、nginx配置都需要一致 A4 系统数据:Rsync,快照 文件数据:NFS,OSS 数据库:主从 A5 IO读写相关压力 单表数据量过大查询不便 第四讲打卡 A1 云端配置选型 云端网络架构云端负载均衡云端静态资源访问云端运维管理 A2 Zabbix的Server端数据是以关系型数据库为主,对云容器支持不太好; Prometheus属于容器监控体系技术,对云产品、站点、日志、代码监控问题无法解决; A3 云监控会成为未来监控的主要趋势。 云平台把常见的开源环境,Web、缓存、数据库等进行封装产品化,统一对外提供基础功能入口。 A4 轻量级容器启动可以秒级完成发布; 对固定的ECS没有依赖;Docker容器资源自定义配置,最大化提升资源利用率;可以结合JIRA+Confluence做项目管理及知识库管理;可以更好的进行服务的水平扩增;容器之间环境配置可以进行很好的隔离; A5 使用Docker+K8S+DNS+Rancher 第五讲打卡 A1 不可以,WAF针对的是OSI七层模型中的HTTP层的防御。 A2 SLB ###A3 DDoS+WAF A4 DDoS+ WAF+CDN+SLB+ECS(水平方向多节点)
montos 2020-06-09 23:42:12 0 浏览量 回答数 0

回答

第五讲:云时代安全防护面临的挑战和机遇 2020年7月12日打卡,今日学习《第五讲:云时代安全防护面临的挑战和机遇》,通过乔帮主的领读,学习到了云端安全面临的挑战和机遇,云端黑客常见攻击和云端安全最佳防御方案。 作业1 Redis漏洞不能用WAF防御,要用安骑士来检测,WAF针对OSI七层模型中HTTP层的防御,也就是Web漏洞的防御;安骑士是解决操作系统级别的漏洞、木马、病毒。 作业2 在CDN上配置证书,一般把证书存放在流量入口处。 作业3 DDoS+WAF结合起来防御。 作业4 采用安全类云产品,替代单机低配服务器;安全架构进行优化,采用分布式架构;在运维层次进行安全保障,调优PHP进行数、Tomcat连接数等,调优操作系统内核参数; 第四讲:云端运维/监控/容器及DevOps实践 2020年7月5日打卡,今日学习《第四讲:云端运维/监控/容器及DevOps实践》,通过乔帮主本次的领读,学到了云端实践篇中的云端运维实践、云端监控实践和云端容器/DevOps实践。 作业1 一:云端配置选型 二:云端网络架构 三:云端负载均衡的选择 四:云端静态资源访问 五:云端运维管理 作业2 Zabbix的Server端数据是以MySQL为主的关系型数据库,存在性能问题,对云容器支持不太好; Prometheus属于容器监控体系技术,对云产品、站点、日志、代码监控问题无法解决; 作业3 云监控会成为未来监控的主要趋势,云平台把常见的开源环境,Web、缓存、数据库等进行封装产品化。 作业4 基于Docker镜像的CI/CD与传统基于代码仓库的CI/CD有以下优势: 实现容器启动在秒级完成发布;对ECS没有依赖;Docker容器资源自定义配置,最大化提升资源利用率;可以结合JIRA+Confluence做项目管理及知识库管理; 作业5 使用Docker+K8S+DNS+Rancher 第三讲:云端五大类热门技术实践 2020年6月25日打卡,今日学习《第三讲:云端五大类热门技术实践》,通过乔帮主本次的领读,学到了云端实践中的主机、负载均衡、存储、缓存和数据库实践。 作业1 分布式架构对服务器单机的性能依赖不高,通过大量云资源进行分布式快速部署,满足业务的需求和发展。 作业2 DNS+跨地域+Docker分布式架构,通过智能解析把不同地域的请求引流到各自地域部署的节点中,节点中部署的业务用Docker进行部署,业务代码对平台没有依赖,又可以接入各大云运营商。 作业3 前端建议使用四层; 部署Web类后端的注意事项:需要配置https证书,虚拟主机,Rewrite等功能,可放在后端中用Nginx配置; 作业4 系统数据:Rsync,快照 文件数据:NFS,OSS 数据库数据:主从复制 作业5 读写分离属于垂直分区,主要是为了解决数据库读写的压力; Sharing技术属于水平分区,为了解决海量数据的压力; 第二讲:云端系统热门技术选型及配置容量规划实战 2020年6月20日打卡,今日学习《第二讲:云端系统热门技术选型及配置容量规划实战》,通过乔帮主本次的领读,学到了云端系统技术选型:云端网络、云端web服务器、云端负载均衡、云端存储、云端缓存和云端数据库六个方面,以及云端配置选型。 作业1 不收取流量费用,因为是入口流量; 作业2 Nginx可以作为Web服务器、或者负载均衡,优势如下: 稳定性好,云端架构中LNMP(Linux+Nginx+MySQL+PHP)应用很广泛;性能高,高并发,系统资源占用少;支持四层、七层的负载均衡、反向代理的功能;前端静态数据缓存;支持插件和灵活的二次开发; 作业3 不可以,因为LVS(Linux Virtual Server)在四层和二层,不能识别封装在七层中的数据包内容。 作业4 一次连接:LVS的DR模式、NAT模式对数据包的处理都做一次连接,负载均衡对数据包仅做转发; 二次连接:Ngnix/HAProxy四层的二次连接是客户端和负载均衡进行TCP三次握手后,负载均衡和后端服务器会进行新的TCP连接; Nginx/HAProxy七层的二次连接是客户端和负载均衡进行TCP三次握手后,还需要等客户端Pushdata传输数据后,负载均衡和后端服务器会进行新的TCP连接; 作业5 I/O 5分钟法则:如果一天记录频繁被访问,就应该考虑放到缓存里。否则的话,客户端就按需要直接去访问数据源,这个临界点就是5分钟。 作业6 数据库的三大分类:关系型数据库(ACID模型)、BASE模型、非关系型数据库。 热门关系型数据库:Oracle、MySQL、SQL Server; 热门非关系型数据库:Redis; 作业7 2台 8核16G,10Mbps 第一讲:云计算带来的技术变革 6月17日打卡,今日学习《第一讲:云计算带来的技术变革》,通过乔帮主本次的领读,学到了云平台、云产品的选型以及软件技术的选项; 名词解释: IDC(Internet Data Center):互联网数据中心 作业1 B,web应用做云端负载均衡,优先采用SLB,且SLB七层支持HTTP/HTTPS。 作业2 云平台与传统虚拟化技术最大的优势在于按需索取、随开随用。(借用老师在书中的介绍) 作业3 IaaS:基础设施服务,Infrastructure-as-a-servicePaaS:平台服务,Platform-as-a-serviceSaaS:软件服务,Software-as-a-service IaaS 是云服务的最底层,主要提供一些基础资源。 PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。 SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。 作业4 支持我从事的Java语言,自动化运维DevOps方向
yvonne6688 2020-06-17 22:20:40 0 浏览量 回答数 0

回答

Java Java核心技术·卷 I(原书第10版)| Core Java Volume 讲的很全面,书中的代码示例都很好,很适合Java入门。 但是作者不太厚道的是把现在没人用的GUI编程放在了第一卷,基本上10~13章是可以不用读的。 Java性能权威指南|Java Performance: The Definitive Guide 市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。 通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,最终使程序如虎添翼。 实战Java高并发程序设计|葛一鸣 由部分段落的行文来看,搬了官方文档。 也有一些第一人称的叙述和思考,也能看出作者也是花了一点心思的。胜在比较基础,涉及到的知识点也还很全面(讲到了流水线计算和并发模型这些边边角角的),但是由于是编著,全书整体上不够统一和深入,适合作为学习高并发的第一本工具书。 Java 8实战 对Java8的新特性讲解的十分到位,尤其是lamdba表达式和流的操作。 再者对于Java8并发处理很有独到见解。对于并行数据处理和组合式异步编程还需要更深的思考才能更加掌握。 推荐给再用java8但没有去真正了解的人看,有很多你不知道的细节、原理和类库设计者的用心良苦在里面、内容没有很难,抽出几个小时就能看完,花费的时间和收获相比,性价比很高。 Java并发编程实战 先不谈本书的内容如何,光书名就足够吸引不少目光。“并发”这个词在Java世界里往往和“高级、核心”等字眼相联系起来,就冲着这两个字,都将勾起软件工程师们埋藏在心底那种对技术的探索欲和对高级API的驾驭感。 程序员嘛,多少都有点职业病。其实Java对“并发”优化从未停止过,从5.0到7.0,几乎每个版本的新特性里,都会针对前一版本在“并发”上有所改进。这种改进包括提供更丰富的API接口、JVM底层性能优化等诸多方面。 Thinking in Java 很美味的一本书,不仅有icecreamm,sundae,sandwich,还有burrito!真是越看越饿啊~ Effective Java中文版(第3版)|Effective Java Third Edition Java 高阶书籍,小白劝退。介绍了关于Java 编程的90个经验技巧。 作者功力非常强悍,导致这本书有时知识面迁移很广。总之,非常适合有一定Java开发经验的人阅读提升。 深入理解Java虚拟机(第3版)| 周志明 浅显易懂。最重要的是开启一扇理解虚拟机的大门。 内存管理机制与Java内存模型、高效并发这三章是特别实用的。 Java虚拟机规范(Java SE 8版)|爱飞翔、周志明 整本书就觉得第二章的方法字节码执行流程,第四章的前8节和第五章能看懂一些。其他的过于细致和琐碎了。 把Java字节码讲的很清楚了,本质上Java虚拟机就是通过字节码来构建的一套体系罢了。所以字节码说的非常细致深入。 数据&大数据 数据结构与算法分析|Data Structures and Algorithm Analysis in Java 数据结构是计算机的核心,这部书以java语言为基础,详细的介绍了基本数据结构、图、以及相关的排序、最短路径、最小生成树等问题。 但是有一些高级的数据结构并没有介绍,可以通过《数据结构与算法分析——C语言描述》来增加对这方面的了解。 MySQL必知必会 《MySQL必知必会》MySQL是世界上最受欢迎的数据库管理系统之一。 书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增。 数据库系统概念|Datebase System Concepts(Fifth Edition) 从大学读到现在,每次拿起都有新的收获。而且这本书还是对各个数据相关领域的概览,不仅仅是数据库本身。 高性能MySQL 对于想要了解MySQL性能提升的人来说,这是一本不可多得的书。 书中没有各种提升性能的秘籍,而是深入问题的核心,详细的解释了每种提升性能的原理,从而可以使你四两拨千斤。授之于鱼不如授之于渔,这本书做到了。 高可用MySQL 很实用的书籍,只可惜公司现有的业务和数据量还没有达到需要实践书中知识的地步。 利用Python进行数据分析|唐学韬 内容还是跟不上库的发展速度,建议结合里面讲的库的文档来看。 内容安排上我觉得还不错,作者是pandas的作者,所以对pandas的讲解和设计思路都讲得很清楚。除此以外,作者也是干过金融数据分析的,所以后面专门讲了时间序列和金融数据的分析。 HBase 看完影印版第一遍,开始以为会是大量讲API,实际上除了没有将HBase源代码,该讲的都讲了,CH8,9章留到最后看的,确实有点顿悟的感觉,接下来需要系统的看一遍Client API,然后深入代码,Come ON! Programming Hive Hive工具书,Hive高级特性。 Hadoop in Practice| Alex Holmes 感觉比action那本要强 像是cookbook类型的 整个过完以后hadoop生态圈的各种都接触到了 这本书适合当参考手册用。 Hadoop技术内幕|董西成 其实国人能写这样的书,感觉还是不错的,不过感觉很多东西不太深入,感觉在深入之前,和先有整体,带着整体做深入会更好一点, jobclient,jobtracer,tasktracer之间的关系最好能系统化 Learning Spark 很不错,core的原理部分和api用途解释得很清楚,以前看文档和代码理解不了的地方豁然开朗。 不足的地方是后几章比较弱,mllib方面没有深入讲实现原理。graphx也没有涉及 ODPS权威指南 基本上还算一本不错的入门,虽然细节方面谈的不多,底层也不够深入,但毕竟是少有的ODPS书籍,且覆盖面很全,例子也还行。 数据之巅|徐子沛 从一个新的视角(数据)切入,写美国历史,统计学的发展贯穿其中,草蛇灰线,伏脉千里,读起来波澜壮阔。 消息队列&Redis RabbitMQ实战 很多年前的书了,书中的例子现在已经不适用了,推荐官方教程。 一些基础还是适用,网上也没有太多讲rab的书籍,将就看下也行,我没用过所以…. Apache Kafka源码剖析|徐郡明 虽然还没看,但知道应该不差。我是看了作者的mybatis源码分析,再来看这本的,相信作者。 作者怎么有这么多时间,把框架研究的这么透彻,佩服,佩服。 深入理解Kafka:核心设计与实践原理|朱忠华 通俗易懂,图文并茂,用了很多图和示例讲解kafka的架构,从宏观入手,再讲到细节,比较好,值得推荐。 深入理解Kafka是市面上讲解Kafka核心原理最透彻的,全书都是挑了kafka最核心的细节在讲比如分区副本选举、分区从分配、kafka数据存储结构、时间轮、我认为是目前kafka相关书籍里最好的一本。 Kafka 认真刷了 kafka internal 那章,看了个talk,算是入了个门。 系统设计真是门艺术。 RocketMQ实战与原理解析|杨开元 对RocketMQ的脉络做了一个大概的说明吧,深入细节的东西还是需要自己看代码 Redis设计与实现|黄健宏 部分内容写得比较啰嗦,当然往好了说是对新手友好,不厌其烦地分析细节,但也让整本书变厚了,个人以为精炼语言可以减少20%的内容。 对于有心一窥redis实现原理的读者来说,本书展露了足够丰富的内容和细节,却不至于让冗长的实现代码吓跑读者——伪代码的意义在此。下一步是真正读源码了。 Redis 深度历险:核心原理与应用实践|钱文品 真心不错,数据结构原理+实际应用+单线程模型+集群(sentinel, codis, redis cluster), 分布式锁等等讲的都十分透彻。 一本书的作用不就是系统性梳理,为读者打开一扇窗,读者想了解更多,可以自己通过这扇窗去Google。这本书的一个瑕疵是最后一章吧,写的仓促了。不过瑕不掩瑜。 技术综合 TCP/IP详解 卷1:协议 读专业性书籍是一件很枯燥的事,我的建议就是把它作为一本手册,先浏览一遍,遇到问题再去详细查,高效。 Netty in Action 涉及到很多专业名词新概念看英文原版顺畅得多,第十五章 Choosing the right thread model 真是写得太好了。另外结合Ron Hitchens 写的《JAVA NIO》一起看对理解JAVA NIO和Netty还是很有帮助的 ZooKeeper 值得使用zookeeper的人员阅读, 对于zookeeper的内部机制及api进行了很详细的讲解, 后半部分深入地讲解了zookeeper中ensemble互相协作的流程, 及group等高级配置, 对zookeeper的高级应用及其它类似系统的设计都很有借鉴意义. 从Paxos到Zookeeper|倪超 分布式入门鼻祖,开始部分深入阐述cap和base理论,所有的分布式框架都是围绕这个理论的做平衡和取舍,中间 zk的原理、特性、实战也讲的非常清晰,同时讲cap理论在zk中是如何体现,更加深你对cap的理解. 深入理解Nginx(第2版)|陶辉 云里雾里的快速读了一遍,主要是读不懂,读完后的感受是设计的真好。 原本是抱着了解原理进而优化性能的想法来读的,却发现书中的内容都是讲源码,作者对源码的注释超级详细,非常适合开发者,但不适合使用者,给个五星好评是因为不想因为我这种菜鸡而埋没了高质量内容。 另外别人的代码写的真好看,即便是过程式语言程序也吊打我写的面向对象语言程序。 作者是zookeeper的活跃贡献者,而且是很资深的研究员,内容比较严谨而且较好的把握住了zk的精髓。书很薄,但是没有废话,选题是经过深思熟虑的。 深入剖析Tomcat 本书深入剖析Tomcat 4和Tomcat 5中的每个组件,并揭示其内部工作原理。通过学习本书,你将可以自行开发Tomcat组件,或者扩展已有的组件。 Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的Web服务器。 深入理解计算机系统 | 布莱恩特 无论是内容还是纸张印刷,都是满分。计算机学科的集大成之作。引导你如何练内功的,算是高配版本的计算机导论,目的是釜底抽薪引出来操作系统、组成原理这些专业核心的课程。帮助我们按图索骥,点亮一个一个技能树。 架构探险分布式服务框架 | 李业兵 刚看前几章的时候,心里满脑子想得都是这特么贴一整页pom文件代码上来干鸡毛,又是骗稿费的,买亏了买亏了,后来到序列化那章开始,诶?还有那么点意思啊。 到服务注册中心和服务通讯,60块钱的书钱已经赚回来了。 知识是无价的,如果能花几十块钱帮你扫了几个盲区,那就是赚了。 深入分析JavaWeb技术内幕 | 许令波 与这本书相识大概是四年前是在老家的北方图书城里,当时看到目录的感觉是真的惊艳,对当时刚入行的自己来说,这简直就是为我量身定做的扫盲科普集啊。 但是可惜的是,这本书在后来却一直没机会读上。然后经过四年的打怪升级之后,这次的阅读体验依旧很好。 其中,java编译原理、 Servlet工作原理、 Tomcat、spring和iBatis这几章的收获很大。 前端 jQuery 技术内幕| 高云 非常棒的一本书,大大降低了阅读jquery源码的难度(虽然还是非常难)。 Head First HTML与CSS(第2版) 翻了非常久的时间 断断续续 其实从头翻到尾 才发现一点都不难。 可我被自己的懒惰和畏难情绪给拖累了 简单说 我成了自己往前探索的负担。网页基础的语法基本都涵盖了 限于文本形态 知识点都没法像做题一样被反复地运用和复习到。通俗易懂 这不知算是多高的评价? 作为入门真心算不错了 如果更有耐心 在翻完 HTML 后 对 CSS 部分最好是可以迅速过一遍 找案例练习估计更好 纸上得来终觉浅 总是这样。 JavaScript高级程序设计(第3版) JavaScript最基础的书籍,要看认真,慢慢地看,累计接近1000小时吧。而且对象与继承,性能优化,HTML5 api由于没有实践或缺乏代码阅读量导致看的很糊涂,不过以后可以遇到时再翻翻,或者看更专业的书。 深入理解ES6 Zakas的又一部杰作,他的作品最优秀的地方在于只是阐述,很少评价,这在帮助我们夯实基础时十分有意义,我也喜欢这种风格。 我是中英文参照阅读的,译本后半部分有一些文字上的纰漏,但是总体来说忠实原文,水平还是相当不错,希望再版时可以修复这些文字问题。 高性能JavaScript 还是挺不错的。尤其是对初学者。总结了好多程序方面的好习惯。 不过对于老手来说,这些常识已经深入骨髓了。 深入浅出Node.js|朴灵 本书是我看到现在对Node.JS技术原理和应用实践阐述的最深入,也最全面的一本书。鉴于作者也是淘宝的一位工程师,在技术总是国外好的大环境下,没有理由不给本书五颗星。 作者秉着授人于鱼不如授人于渔的精神,细致入微的从V8虚拟机,内存管理,字符串与Buffer的应用,异步编程的思路和原理这些基础的角度来解释Node.JS是如何工作的,比起市面上众多教你如何安装node,用几个包编写一些示例来比,本书绝对让人受益匪浅。 认真看完本书,几乎可以让你从一个Node的外行进阶到专家的水平。赞! 总结 其实我觉得在我们现在这个浮躁的社会,大家闲暇时间都是刷抖音,逛淘宝,微博……他们都在一点点吞噬你的碎片时间,如果你尝试着去用碎片的时间看看书,我想时间久了你自然能体会这样的好处。 美团技术团队甚至会奖励读完一些书本的人,很多公司都有自己的小图书馆,我觉得挺好的。 文章来自:敖丙
剑曼红尘 2020-03-20 14:52:22 0 浏览量 回答数 0

问题

随手科技拥抱OneAPM:打造高标准真实用户体验

近期OneAPM 与随手科技达成战略合作。OneAPM 通过探针技术帮助随手科技实现对产品整个系统的全面监控,并帮助开发人员快速解决移动应用的性能瓶颈。 据了解,随手科技是国内最大的个人理财应用服务提供商。旗下拥...
sunny夏筱 2019-12-01 21:42:04 7083 浏览量 回答数 4

问题

【客户案例】云上救命APP!——e代驾手机客户端!

客户介绍 e代驾(http://www.edaijia.cn/)是全国最大的代驾公司,结合移动互联网提供最实惠、最安全、最便捷的代驾服务。e代驾成立两年来,已经成为人们的生活必备AP...
keer 2019-12-01 21:33:32 10528 浏览量 回答数 3

问题

围绕着内存数据库的4个流言

摘要:Yiftach 表示,历经数年,内存数据库的稳定性已得到了长足的发展,开发者应该理智地看待这个领域所存在的流言,比如内存计算是不可靠和不一致等。 【编者按】作者 ...
sunny夏筱 2019-12-01 21:46:19 7513 浏览量 回答数 3

问题

大型网站数据库解决方案

对于大型网站系统而言,有三个难以逾越的难题: 1、数据资源已近乎等同生存资本,如何保障网站数据不丢失? 2、网站业务停服带来巨大经济损失,如何构建多级高可用ÿ...
rds-pd 2019-12-01 21:53:32 17567 浏览量 回答数 8

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT