自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专属_Smile

我不要当搬码工~ o(╯□╰)o ~

  • 博客(50)
  • 资源 (5)
  • 收藏
  • 关注

原创 【java8】浅析HashMap之put()方法

从《浅析java8中HashMap的结构》这篇文章我们可以得知,hashMap的数据结构是数组+单链表。接下来咱们通过解读HashMap的put(K key, V value)方法来了解他的数据存储机制。大致步骤如下图:至于详细的步骤,请结合上图参考部分源码和注释: static final int hash(Object key) { int h; ...

2018-11-01 16:57:45 1857

原创 MAC chrome离线安装插件

Chrome地址栏输入:chrome://extensions/,打开Chrome的扩展插件。选择刚刚解压的fileDir文件夹,点击“选择”即可。文件夹fileDir是使用命令行解压的文件。MAC下Chrome安装.crx插件。点击“加载已解压的扩展程序”使用终端解压zip文件;更改后缀crx为zip。就这么简单,安装成功!

2023-04-14 10:46:17 357

原创 M1 docker es kibana

【代码】M1 docker es kibana。

2023-03-21 15:45:50 168

原创 数据库建表规范

mysql 建库建表规范

2022-11-14 20:55:36 666

原创 M1 nacos docker

镜像地址:docker pull zhusaidong/nacos-server-m1:2.0.3启动:docker run --env MODE=standalone --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 zhusaidong/nacos-server-m1:2.0.3

2022-04-08 20:37:51 865

原创 Mac切换root用户

输入命令:sudo su输入密码输入命令 su - 即可

2022-03-25 00:16:29 2187

原创 妙控鼠标灵敏度太低怎么办

打开终端对话窗口输入以下指令,可以查看一下你当前的设置速度:defaults read -g com.apple.mouse.scaling修改鼠标速度,值越大速度越快defaults write -g com.apple.mouse.scaling 8.0

2021-08-03 22:34:13 5198

原创 基于docker搭建rabbitmq集群(镜像模式)

RabbitMQ的集群模式有两种普通模式:消息实体在其中一个节点上,消费时同步默认模式,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并

2021-07-01 01:58:58 342

原创 Mac M1 docker 开启远程访问

基于mac的docker for mac本身不支持远程访问,需要依赖一款名叫 socat的网络工具提供的镜像来做远程访问。具体操作如下:1、拉取socat镜像: docker pull alpine/socat2、启动镜像:docker run -d --restart=always \ -p 127.0.0.1:2376:2375 \ -v /var/run/docker.sock:/var/run/docker.sock \ alpine/socat \ tcp-listen:2375,fork,r

2021-06-30 23:09:31 1411 1

原创 Nginx开机自启动 Centos 7.X

本文针对Centos 7.X版本的系统第一步:添加配置文件找到/lib/systemd/system/目录,并在该目录下创建nginx.service文件。文件内容如下:[Unit]​Description=nginx service​After=network.target​​[Service]​Type=forking​ExecStart=/usr/local/nginx/sbin/nginx​ExecReload=/usr/loca...

2021-04-11 01:42:39 100

原创 nginx配置SSL以及http2增强

先安装一些重要的依赖包gcc、pcre-devel、zlib-devel、openssl-develyum -y install gcc pcre-devel zlib-devel openssl openssl-devel下载Nginx包:wget https://nginx.org/download/nginx-1.18.0.tar.gz解压Nginx包:tar -zxvf nginx-1.18.0.tar.gz进入解压后的文件夹,:cd nginx-1.18.0

2021-04-10 00:15:57 1596

原创 数据库隔离级别

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable。 脏读 不可重复读 幻读 Read uncommitted 读未提交 √ √ √ Read committed 读提交 x √ √ Repeatable read 重复读 x x √ Serializable 序列化 x x x ..

2020-12-09 15:22:26 149

原创 数据库隔离级别及可能引发的问题

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable。 脏读 不可重复读 幻读 Read uncommitted 读未提交 √ √ √ Read committed 读提交 x √ √ Repeatable read 重复读 x x √ Serializable 序列化 x x x ..

2020-12-09 15:18:43 1780

原创 Minor GC && MixedGC && Full GC

注意:本章节针对JDK1.8Minor GCYoung gc,指的是发生在新生代(年轻代)的垃圾收集动作,Minor GC比较频繁,回收速度一般也比较快。Minor GC的流程如下: 应用程序启动运行导致Eden区满了触发minor gc。根据GC Root找出Eden所有的非垃圾对象,将这些对象从Eden区挪到S区的其中一块内存中(我们这里假设挪到S0),然后清空Eden区;(注意:一个对象每经历过一次GC后没有被回收的,分代年龄都会+1,分代年龄值存放在对象头中) 程序运行一段

2020-10-29 11:06:15 1022 1

原创 类加载器以及如何打破双亲委派机制

java里有如下几种类加载器:引导类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,如:rt.jar、charsets.jar等等扩展类加载器:负责加载支持JVM运行的位于jre目录下的ext扩展目录中的jar包应用程序类加载器:负责加载classpath路径下的类包,主要就是加载开发人员编写的程序代码类自定义加载器:负责加载自定义类路径下的类文件双亲委派机制类加载机制的委派层级结构如下:其实这个加载过程就包含一个双亲委派机制。这个委派机制的大..

2020-10-26 15:15:04 6218 2

原创 UTF-8转Unicode

public String utf8ToUnicode(String str) { str = (str == null ? "" : str); String tmp; StringBuffer sb = new StringBuffer(1000); char c; int i, j; for (i = 0; i < str.length(); i++) { c = str.charAt(i); sb.append("\\u"); //.

2020-09-15 10:37:59 677

原创 《深入理解JVM》之垃圾回收&对象存活判定算法

概述java是可以自动进行内存的动态分配和回收,为什么还要去了解GC和内存分配呢?原因很简单,当出现内存溢出或者内存泄露的问题时,我们需要对这些自动化的技术实施必要的监控和调节。java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生。随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。每个栈帧中分配多少内存基本上是在内结构确定下来时就...

2020-09-07 09:21:31 144

原创 Springboot接口访问日志记录

如今大部分的产品后台都会对接口的访问做相关的日志记录。目前我只掌握的日志记录方式有如下三种:Nginx访问日志记录Interceptor拦截器中分析HttpServletRequest请求AOP切面+自定义注解来抓取指定相关接口的请求信息本文章将为大家主要介绍一下如何使用切面做接口访问记录,另外稍微描述下其他两种记录方式Nginx日志记录接口访问通过Nginx日志记录接口访问信息我就不详细介绍了。...

2020-09-07 09:19:58 837

原创 单例懒汉模式的并发问题

在平时的开发中,单例懒汉模式经常会用到。举个栗子:/** * @author: htc * @date: 2020/8/28 11:26 * @descr: */public class Cpu { private volatile static Cpu instance; private Cpu(){} public static Cpu getInstance(){ //第一次检测 if (instance==null){

2020-08-28 14:15:48 413

原创 JVM参数文档

-Xmx3550m -Xms3550m -Xss128k-XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个S..

2020-08-27 10:29:15 271

原创 Oracle常用性能排查SQL

查看当前的数据库连接数select count(*) from v$process ;--当前的数据库连接数数据库允许的最大连接数select value from v$parameter where name ='processes'; --数据库允许的最大连接数修改数据库最大连接数alter system set processes = 300 scope = spfile; --修改最大连接数:关闭/重启数据库shutdown immediate; --关闭...

2020-08-05 16:34:07 548

转载 redis为什么是单线程

以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了,这样可能理解得更深刻一点,不了解的朋友点:CPU到底比内存跟硬盘快多少redis 核心就是 如果我的数据全都在内存里,我单线程的去操作 就是效率最高的,为什么呢,因为多线程的本质就是 CPU 模拟出来多个线程的情况,这种模拟出来的情况就有一个代价,就是上下文的切换,对于一个内存的系统来说,它没有上下文

2020-07-30 10:52:21 206

原创 Spring关于Bean的加载----缓存中获取单例bean

。。。

2020-07-16 13:28:55 143

原创 Spring关于Bean的加载------尝试从缓存中加载单例

关键的数据结构singletonObjects:用于保存BeanName和创建bean实例之间的关系,bean name -> bean instancesingletonFactories:用于保存BeanName和创建bean的工厂之间的关系,bean name -> ObjectFactoryearlySingletonObjects:用于保存BeanName和创建bean实例之间的关系,当一个单例bean被放到这里面后,那么当bean还在创建过程中,就可以通过getBean方法获.

2020-07-15 18:33:25 122

原创 doGetBean()方法源码浅析

。。。。。

2020-07-15 16:43:31 1305

原创 Spring关于Bean的加载----转换对应beanName

。。。

2020-07-15 16:04:32 812

原创 Spring关于Bean的加载

本专栏参考文献《Spring源码深度解析》在对xml配置文件解析完成之后,开始进行bean加载。此过程十分复杂,大致流程如下:转换对应beanName 尝试从缓存中加载单例 bean的实例化 原型模式的依赖检查 检测parentBeanFactory 将存储XML配置文件的GernericBeanDefinition转换为RootBeanDefinition 寻找依赖 针对不同的scope进行bean创建 类型装换关于FactoryBean:...

2020-07-15 14:43:42 363

原创 Spring如何解决循环依赖

Spring容器中的循环依赖分为构造器循环依赖和setter循环依赖。名词解释:构造器循环依赖:表示通过构造器注入构成的循环依赖setter循环依赖:表示通过setter注入方式构成的循环依赖。

2020-07-15 13:41:17 264

原创 Rabbitmq之延迟队列

什么是延时队列延迟队列存储的对象是对应的延迟消息,所谓"延迟消息"是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待约定时间后,消费者才能拿到这个消息进行消费。延迟队列的使用场景有很多,比如:在订单系统中, 一个用户下单之后通常有30分钟的时间进行支付,如果 30 分钟之内没有支付成功,那么这个订单将进行取消处理,这时就可以使用延迟队列来处理这些超时订单了。 用户希望通过手机远程遥控家里的智能设备在指定的时间进行工作。这时候就可以将用户指令发送到延迟队列,当指令设定的时间到了再将指令推

2020-05-16 16:11:32 269

原创 Rabbitmq的六大工作模式机制

关于Rabbitmq六大消费模式的官方文档:https://www.rabbitmq.com/getstarted.html

2020-05-14 23:02:05 1184

原创 RabbitMQ之死信队列

关于死信队列死信队列,顾名思义就是无法被正常消费的消息,一般来说,producer直接或间接将消息投递接到queue里了,consumer从queue取出消息进行消费,但有些时候由于特定的原因导致queue中的某些消息无法被消费(比如消息本身就是有问题,是条错误数据或;或者由于consumer处理某条消息耗时过长导致TTL等),这样的消息如果没有后续的处理,就变成了死信。对rabbitmq来说,产生死信的来源大致有如下几种:消息被拒绝(basic.reject或basic.nack)并且req.

2020-05-13 22:19:40 283

原创 消息队列如何保证消息不被重复消费(如何保证消费时的幂等性)?

关于消息的重复执行首先我们可以确认的是,触发消息重复执行的条件会是很苛刻的,也就说 在大多数场景下不会触发该条件。 一般出在消费者任务超时,或者没有及时返回状态(如任务耗时过长导致ACK超时),还有就是消费者还没来得及ACK就突然宕机等等,引起任务重新入队列,重新消费! 所以消费任务类型最好要支持幂等性,这样的好处是 任务执行多少次都没关系,顶多消耗一些性能!如何避免重复消费呢(或者说怎么保证消息队列消费的幂等性)这点我们需结合实际业务场景来说:如果消费者只是拿个数据要写库,可以先根据...

2020-05-12 23:39:46 1012

转载 4次优化,我把 Redis 性能 “压榨” 到极致!

本文转载自公众号https://mp.weixin.qq.com/s/y4q4Hb9A6xay3pAC_LBm5g

2020-05-12 21:22:29 549

原创 【java8】浅析HashMap之get()方法

根据源码可知,HashMap的get方法流程不是特别复杂,其中真正执行取值的逻辑是在getNode()方法中,不多说直接上源码。这里再啰嗦一句:其中入参hash是调用了存值时的hash()方法,就是根据将key进行hash得到hash值,然后将hash值与Key进行异或操作(可以理解为加密),再进行无符号右移16位得到的。 /** * Implements Map.get an...

2020-01-15 16:42:21 1231

原创 Java移位运算符以及位运算

移位运算符:移位运算符是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。左移运算符(<<)按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。例如: 4<<3就是将4的二进制值...

2020-01-15 15:16:17 600

原创 Mybatis源码笔记之核心类XMLConfigBuilder

待更新。。。

2020-01-14 11:09:52 208 1

原创 Mybatis源码笔记之核心配置类configuration

public class Configuration { protected Environment environment; // 允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为false。默认为false protected boolean safeRowBoundsEnabled; // 允许在嵌套语句中使用分页(ResultHandler)。如果允...

2020-01-14 10:24:13 491

原创 plsql编码引起的坑

某次用plsql执行like模糊查询的时候,如果搜索关键字中含有中文字符,就查不到内容,数据库中确实有,并且用其他客户端可以查到;而如果搜索关键字中只含有英文字符,那就不存在这个问题。导致这一现象的原因很可能是因编码或字符集引起的,于是乎上网Google了一波,原来果真如此。解决方案如下:查询oracle server段字符集:select userenv('language') fr...

2019-11-14 09:43:25 391

原创 MySQL数据库索引之 Hash、B-/+Tree

B-Tree索引 最常见的索引类型,基于B-Tree数据结构。B-Tree的基本思想是,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)。但是当索引多列时,列的顺序特别重要,需要格外注意。InnoDB和MyISAM都支持B-Tree索引。InnoDB用的是一个变种B+Tree,...

2019-08-29 15:33:36 191

转载 Java关键字final、static使用总结【转】

转自:http://blog.51cto.com/lavasoft/18771final关键字 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法覆盖,但可以...

2018-11-01 11:07:38 135

hadoop-3.3.1-aarch64.tar.gz

基于M1芯片的Hadoop安装包

2021-06-30

hadoop-3.3.1.tar.gz

hadoop-3.3.1.tar.gz安装包

2021-06-26

SecureCRT软件

绿色版的SecureCRT,使用与Windows系列的系统,无需安装,随时解压随时使用

2017-12-15

App后台开发运维和架构实践(完整版).pdf

ps:本书的目录大纲如下: 第1章 App后台入门 16 1.1 App后台的功能 16 1.2 App后台架构 17 1.3 App和App后台的通信 19 1.4 App后台和Web后端的区别 22 1.5 选择服务器 23 1.6 选择编程语言 24 1.7 快速入门新技术 25 1.7.1 思维模式 25 1.7.2 4种快速入门新技术的方法 25 1.8 App是怎样炼成的 26 1.8.1 项目启动阶段 26 1.8.2 研发阶段 28 1.8.3 测试阶段 29 1.8.4 正式推出阶段 29 1.9 最适合App的开发模式——敏捷开发 30 1.9.1 Sprint 计划会议 31 1.9.2 日常开发 32 1.9.3 每日例会 33 1.9.4 测试和修复Bug 33 1.9.5 评审会议 34 1.9.6 回顾会议 34 1.9.7 及时反馈 34 1.9.8 总结 34 第2章 App后台基础技术 35 2.1 从App业务逻辑中提炼API接口 35 2.1.1 业务逻辑思维导图 36 2.1.2 功能—业务逻辑思维导图 37 2.1.3 基本功能模块关系 40 2.1.4 功能模块接口UML(设计出API) 41 2.1.5 编写在线API测试文档 42 2.1.6 设计稿标注API 45 2.2 设计API的要点 46 2.3 如何选择合适的数据库产品 50 2.3.1 Redis,MongoDB,MySQL读写数据的区别 50 2.3.2 Redis,MongoDB,MySQL查找数据的区别 50 2.3.3 Redis,MongoDB,MySQL适用场景 51 2.4 如何选择消息队列软件 52 2.4.1 为什么要用消息队列? 52 2.4.2 消息队列的工作流程 53 2.4.3 常见的一些消息队列产品 54 2.5 使用分布式服务实现业务的复用 54 2.5.1 巨无霸系统的危害 55 2.5.2 远程服务的优点 56 2.5.3 远程服务的实现 56 2.6 搜索技术入门 59 2.6.1 一个简单的搜索例子 59 2.6.2 搜索技术的基本原理 60 2.6.3 常见的开源搜索软件介绍 62 2.7 定时任务 65 2.7.1 Linux定时任务Crontab 65 2.7.2 在后台轻松管理各种各样的定时任务 66 第3章 App后台核心技术 68 3.1 用户验证方案 68 3.1.1 使用HTTPS协议 68 3.1.2 基本的用户登录方案 69 3.2 App通信安全 72 3.2.1 URL签名 72 3.2.2 AES对称加密 74 3.2.3 更进一步的通信安全 77 3.3 短信服务 78 3.3.1 App后台发送短信简介 78 3.3.2 选择短信平台 78 3.3.3 建立可靠的短信服务 79 3.4 处理表情的一些技巧 80 3.4.1 表情在MySQL的存储 80 3.4.2 当文字中夹带表情的处理 80 3.4.3 Openfire中发送表情引起连接断开的问题 81 3.5 高效更新数据 82 3.5.1 内容的推拉 83 3.5.2 数据增量更新策略 84 3.6 图片处理 90 3.7 视频处理 91 3.7.1 FFmpeg简介 91 3.7.2 后台调用FFmpeg的功能 92 3.8 获取APK和IPA文件里的资源 94 3.8.1 Android的APK文件 94 3.8.2 iOS的IPA文件 96 3.9 文件系统 98 3.9.1 文件云存储服务 99 3.9.2 架设文件系统 99 3.10 ELK日志分析平台 101 3.10.1 基本模块 101 3.10.2 日志分析流程 102 3.11 Docker构建一致的开发环境 103 3.11.1 Docker原理 103 3.11.2 搭建一致的开发环境 104 第4章 Linux——App后台应用最广泛的系统 107 4.1 基本的系统优化 107 4.1.1 开机自启动服务优化 107 4.1.2 增大文件描述符 109 4.2 常用的命令 110 4.2.1 全面了解系统资源情况——top 110 4.2.2 显示进程状态——ps 115 4.2.3 查看网络相关信息——netstat 116 4.2.4 查看某个进程打开的所有文件——lsof 118 4.2.5 跟踪数据到达主机所经路由——traceroute 119 4.2.6 文件下载/上传工具——“ssh secure shell client”和“lrzsz” 119 4.2.7 查看程序的依赖库——LD_DEBUG 121 4.2.8 进程管理利器——superivisor 122 4.3 故障案例分析 125 第5章 Nginx——App后台HTTP服务的利器 126 5.1 简介 126 5.2 基本原理 127 5.2.1 工作模型 127 5.2.2 进程解析 128 5.3 常用配置 129 5.3.1 Nginx的全局配置 130 5.3.2 event配置 130 5.3.3 http配置 131 5.3.4 负载均衡配置 133 5.3.5 server虚拟主机配置 134 5.3.6 location配置 134 5.3.7 HTTPS的配置 135 5.3.8 下载App的配置 136 5.3.9 生产环境中修改配置的良好习惯 136 5.4 性能统计 136 5.5 实现负载均衡的方案 137 5.6 用Nginx处理业务逻辑 139 第6章 MySQL——App后台最常用的数据库 140 6.1 基本架构 140 6.2 选择版本 141 6.3 配置文件详解 142 6.4 软件优化 144 6.4.1 正确使用MyISAM和InnoDB存储引擎 144 6.4.2 正确使用索引 145 6.4.3 避免使用select * 146 6.4.4 字段尽可能地设置为NOT NULL 146 6.5 硬件优化 147 6.5.1 增加物理内存 147 6.5.2 增加应用缓存 147 6.5.3 用固态硬盘代替机械硬盘 148 6.5.4 SSD硬盘+SATA硬盘混合存储方案 149 6.6 架构优化 149 6.6.1 分表 150 6.6.2 读写分离 151 6.6.3 分库 153 6.7 SQL慢查询分析 156 6.8 云数据库简介 157 6.9 灵活的存储结构 158 6.10 故障排除案例 159 第7章 Redis——App后台高性能的缓存系统 160 7.1 Redis简介 160 7.2 Redis的常用数据结构及应用场景 161 7.2.1 string——存储简单的数据 162 7.2.2 hash——存储对象的数据 163 7.2.3 list——模拟队列操作 165 7.2.4 set——无序且不重复的元素集合 167 7.2.5 sorted set——有序且不重复的元素集合 168 7.3 内存优化 170 7.3.1 监控内存使用的状况 170 7.3.2 优化存储结构 170 7.3.3 限制使用的最大内存 172 7.3.4 设置过期时间 172 7.4 集群 174 7.4.1 客户端分片 174 7.4.2 Twemproxy 175 7.4.3 Codis 176 7.4.4 Redis 3.0集群 179 7.4.5 云服务器上的集群服务 180 7.5 持久化 180 7.5.1 RDB 181 7.5.2 AOF 182 7.6 故障排除案例 184 第8章 MongoDB——App后台新兴的数据库 185 8.1 简介 185 8.2 核心机制解析 186 8.2.1 MMAP(内存文件映射) 186 8.2.2 Journal日志 187 8.3 入门 187 8.3.1 基本操作 188 8.3.2 数组操作 190 8.3.3 实例演示MySQL和MongoDB设计数据库的区别 191 8.4 高可用集群 195 8.4.1 主从 195 8.4.2 副本集 196 8.4.3 分片 198 8.5 LBS——地理位置查询 200 8.6 MongoDB 3.0版本的改进 205 8.6.1 灵活的存储架构 206 8.6.2 性能提升7~10倍 206 8.6.3 存储空间最多减少80% 207 8.6.4 运维成本最多降低95% 207 第9章 App后台架构剖析 208 9.1 聊天App后台架构 208 9.1.1 移动互联网的网络特性 209 9.1.2 协议 212 9.1.3 整体架构 218 9.2 社交App后台架构 221 9.2.1 基本表结构 222 9.2.2 推拉模式 223 9.2.3 数据库架构的演进 225 9.2.4 缓存架构的演进 229 9.3 LBS App后台架构 234 9.3.1 地理坐标详解 235 9.3.2 查找附近的人 236 9.3.3 基于MongoDB的LBS后台架构演进 240 9.4 推送服务器后台架构 242 9.4.1 Android推送 242 9.4.2 iOS推送 248 9.5 获得更多App后台架构资料 252 第10章 App后台架构的演进 255 10.1 架构的核心要素 255 10.1.1 高性能 256 10.1.2 高可用 258 10.1.3 可伸缩 261 10.1.4 可扩展 262 10.1.5 安全性 262 10.2 架构选型的要点 262 10.2.1 用成熟稳定的开源软件 263 10.2.2 尽可能使用云服务 264 10.3 架构的演进 268 10.3.1 单机部署 269 10.3.2 分布式部署 275 10.3.3 服务化 277 10.4 架构的特点 279 10.4.1 每个App的后台架构不会完全一样 279 10.4.2 架构的演进是由业务驱动的 279 10.4.3 架构不是为了炫耀技术 280

2017-12-15

阿里巴巴java开发手册完整版

这份阿里巴巴java开发手册,公司最近来了个架构师,对我们的编码规范进行了改革,要求我们严格参照阿里的编码规范来进行开发

2017-12-15

空空如也

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

TA关注的人

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