アーキテクチャの細切り究極の百科事典:分散型のオープンソースのフレームワーク+ + +マイクロサービスのパフォーマンスの最適化、十分な?
ゼロは研究を参照するために皆のためのトピックのいくつかをオフに終了する前に断片化され、一回限りのアーキテクチャの細切り究極の百科事典には、この時間は、オープンソースのフレームワークが含まれ、分散型、マイクロサービス、パフォーマンスの最適化と他の4つの主要なトピックでは、17本の小さな話題でした、すべてのサイドポットは、誰もが一緒に学ぶ与えるために -
注:Daquanのに答えることができ、すべてのアーキテクチャのフルバージョンを必要とする[無料受け取るために「私をクリックしてください」]
01オープンソースフレームワーク(スプリング+ SpringMVC + MyBatisの)
解決への答えのオープンソースのフレームワーク、次のように:
1.1春のオープンソースフレームワーク細切り
- 春のフレームワークとは何ですか?メインモジュールSpringフレームワークとは何ですか?
- もたらすことができるSpringフレームワークを使用することの利点は何ですか?
- 制御の反転(IOC)は何ですか
- 春のフレームワークのIoCを教えてください
- たBeanFactoryとApplicationContextのと何が違いますか?
- 春を設定する方法はいくつかありますか?
- 春のXML構成ベースのアプローチを構成する方法
- JavaベースのSpring構成を構成する方法
- 同じ一般的なアプローチの春を構成する方法
- 春のBeanのライフサイクルを教えてください?
- 春の豆スコープの違いは何ですか?
- シングルトン豆春のフレームワークは、スレッドセーフであること?
- 春のJavaコレクションを注入する方法の例を与えます
- Java.util.Propertiesで春の豆を注入する方法
- 自動組立春Beanのを教えてください?
- 自動組立モードの違いを教えてください?
- 注釈ベースの自動組立を開く方法?
- 例は@Requiredコメントを説明してあげてください!
- 例は@Autowiredコメントを説明してあげてください!
- 例に@Qualifierコメントを教えてください?
- コンストラクタ・インジェクションとセッター注入の違いは何ですか?
- さまざまな種類のイベントは、Springフレームワークを持って何ですか?
- デザインモードで使用されている春のフレームワーク?
SpringMVC 1.2細切りオープンソースのフレームワーク
- SpringMvcは何ですか?
- Spring MVCのの利点:
- SpringMVCの作品?
- SpringMVCプロセス?
- SpringMvcコントローラはシングルトンではない、そうであれば、問題が何であるか、どのように解決するために?
- あなたはStruts2の。SpringMVCとStruts2の何の簡単な紹介との違いを使用している場合は?
- それと一般的にSpingMvcコントローラノート、コメントには他の選択肢はありませんか?
- どのような影響上記のクラスで使用されるノートを@RequestMapping?
- 上記の具体的な方法にリクエストをマップする方法のように?
- インターセプト要求した場合、私はどのように設定するには、提出の傍受方法を取得したいと思いますか?
- メソッド要求、またはセッション内で取得する方法?
- 私が取得する方法、それがインターセプトするメソッドに渡されたフロントデスクのパラメータから取得したいですか?
- あなたがフォアグラウンドで渡されたパラメータの数を持っており、これらは、オブジェクトのパラメータである場合、どのようにすぐにこのオブジェクトを取得するには?
- SpringMvcが何であるかを関数の戻り値はありますか?
- リダイレクトと転送を設定する方法SpringMVC?
- SpringMvcどのオブジェクトと背景との間でデータを転送するためのフロントデスクは?
- SpringMvcビューやデータへのカテゴリが何であるかを、一緒にマージされますがありますか?
- どのように内部がセッションModelMapにデータを置きますか?
- AJAXとは、お互いを呼び出す方法SpringMvc?
- 実行の流れで言えばSpringMvc
- インターセプタ内部SpringMvcはどのように書くことですか?
- この方法は、などのオブジェクト、リスト、など、AJAXに特別なオブジェクトを返すとき、何をすべきかに対処しますか?
1.3 MyBatisの細切りオープンソースのフレームワーク
- MyBatisのは何ですか?
- キャッシュMyBatisのでいえば
- MyBatisのは、どのようにページングされますか?原則として改ページプラグインは何ですか?
- 動作原理は、MyBatisのプラグインを概説と同様に、プラグインを作成する方法?
- MyBatisの動的SQLは何しているのですか?動的SQLは何ですか?動的SQLの実行の缶簡単に原理はないですか?
- #{}と{} $であるとの違いは何ですか?
- なぜMyBatisの半自動ORMマッピングツール?自動でどこが異なるのですか?
- かどうかはMyBatisのは、遅延ロードをサポートしていますか?もしそうなら、その原理は達成するためには何かありますか?
- HibernateでMyBatisの違いは何ですか?
- MyBatisのは良いとは何ですか?
- XMLマッピングファイルとMyBatisの内部データ構造の間MyBatisのマッピング関係をブリーフ?
- 結合界面MyBatisのは何ですか、と利点は何ですか?
- いくつかのインタフェースバインディングの実装は、すなわちどのように達成するために、ありますか?
- どのような状況バインドと注釈の下では、使用XMLはどのような状況の下で結合しますか?
- 動作させるために具体的にどのように?MyBatisの1を達成するための方法はいくつかありますか?
- MyBatisのとにかく多くのクエリに1、1に関連する一つを実行することができますか?実装、およびそれらの間の違いは何ですか?
- どのように設定されていますか?どのような構文である動的SQL MyBatisの?
- MyBatisのは、ターゲットオブジェクトとリターンの結果がどのようにSQLパッケージを実行することですか?マッピングの形式は何ですか?
- XMLマッピングファイル、共通に加えて選択|挿入| updae |ラベルを削除するよりも、どのようなラベルを?
- エンティティクラスの属性名のフィールド名とテーブルときに指定したPOJOへの問合せパッケージの結果ならば、同じではありませんか?
- 文の書き方のようなファジィクエリ
- 通常、マッピングファイルは、ダオに対応するインタフェースを記述しますXML、ダオの作品は、オーバーロードすることができますか?
- MyBatisのマッピングファイルBの内容を参照することにより、Aラベルはラベルが含まれている場合、私が求めることができる、ことができます私は、ラベルAの後ろにBのラベルを定義するか、またはAは、前のラベルで定義されなければならないこと?
- XMLマッピング・ファイル、別のXMLマッピング・ファイル、IDのMyBatisのあなたは繰り返すことができますか?
- バッチ処理を実行する方法をMyBatisの?
- MyBatisのエグゼキュータは何ですか?それらの違いは何ですか?
- エグゼキュータエグゼキュータを使用するかを指定する方法をMyBatisの?
- MyBatisのは、一括挿入を実行するには、データベースの主キーのリストを返すことができますか?
- かどうかはMyBatisのは、列挙型列挙型クラスをマッピングすることができますか?
- 自動的に生成された(マスター)キーを取得するには?
- でマッパーで複数のパラメータを渡す方法は?
- resultTypeとこのresultMap違いは?
- MyBatisのマッパー・インタフェース・コールを使用した場合の要件は何ですか?
- 何がいくつかのiBATISの改善よりも大きなMyBatisの?
- iBatisのとMyBatisのコア処理クラスで何と呼ばれていますか?
- iBATISはとMyBatisのはどのような内容が異なりますか?
解決仕上げにオープンソースのフレームワーク(春+ SpringMVC + MyBatisの)答え:
02分散(制限+通信+データベース)
次のように分散答えは解釈しました:
2.1細切り分散リクタ(nginxの+のZooKeeper)
(1)細切りはnginxのを制限分散しました
- Nginxは何です教えてください?
- X nginxのの特性のいくつかをリストアップしてください。
- X nginxのとApacheとの違いを記入してください
- X nginxのP HTTPリクエストを処理する方法を教えてください。
- X nginxのでは、どのようにリクエストの処理を停止するために未定義のサーバー名を使用するには?
- 使用する「リバース・プロキシ」
- X nginxのサーバーの最適な使用を記入してください。
- マスターとrワーカーやX上のプロセスnginxのサーバーは何しているrを説明してください?
- あなたは080のものとは異なるポートを介してnginxのを回す方法を教えてください?
- 2502のエラーのためにnginxのエラーxを交換することが可能であるかどうか教えてください?
- X nginxのでは、ダブルスラッシュL URLを保持する方法を説明されています?
- 役割は何である電子ngx_http_upstream_module教えてください?
- K C10K問題が何であるか説明してください?
- 状態何秒stub_statusとr sub_filter命令と役割してください?
- X nginxのは、上流の圧縮に要求をサポートするかどうかを説明しますか?
- 中のx nginxの中で現在時刻を取得する方法について説明しますか?
- の目的で何の-s X nginxのサーバーを説明しますか?
- X nginxのサーバーにモジュールを追加する方法を説明しますか?
(2)分散細切りのZooKeeperを制限します
- 何ZooKeeperのこと?
- ZooKeeperのは、何を提供しますか?
- 飼育係のファイルシステム
- znode 4種類の
- 飼育係の通知メカニズム
- 飼育係は何をしましたか?
- ZKネームサービス(ファイルシステム)
- ZK構成管理(ファイルシステム通知機構)
- 飼育係クラスタ管理(ファイルシステムの通知メカニズム)
- 飼育係分散ロック(ファイルシステム通知機構)
- 分散ロック取得処理
- 飼育係キュー管理(ファイルシステムの通知メカニズム)
- 飼育係のデータ複製
- 飼育係作品
- zookeeper 是如何保证事务的顺序一致性的?
- Zookeeper 下 Server 工作状态
- zookeeper 是如何选取主 leader 的?
- 分布式通知和协调
- 机器中为什么会有 leader?
- zk 节点宕机如何处理?
- Zookeeper 同步流程
- zookeeper 负载均衡和 nginx 负载均衡区别
- zookeeper watch 机制
2.2 手撕分布式通讯(Kafka+ActiveMQ+RabbitMQ)
(1)手撕分布式通讯之kafka
- Kafka 的设计时什么样的呢?
- 数据传输的事物定义有哪三种?
- Kafka 判断一个节点是否还活着有那两个条件?
- producer 是否直接将数据发送到 broker 的 leader(主节点)?
- Kafa consumer 是否可以消费指定分区消息?
- Kafka 消息是采用 Pull 模式,还是 Push 模式?
- Kafka 存储在硬盘上的消息格式是什么?
- Kafka 高效文件存储设计特点:
- Kafka 与传统消息系统之间有三个关键区别
- Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中
- Kafka 新建的分区会在哪个目录下创建
- partition 的数据如何保存到硬盘
- kafka 的 ack 机制
- Kafka 的消费者如何消费数据
- 消费者负载均衡策略
- 数据有序
- kafaka 生产数据时数据的分组策略
(2)手撕分布式通讯之ActiveMQ
- 什么是 ActiveMQ?
- ActiveMQ 服务器宕机怎么办?
- 丢消息怎么办?
- 持久化消息非常慢
- 消息的不均匀消费。
- 死信队列。
- ActiveMQ 中的消息重发时间间隔和重发次数吗?
(3)手撕分布式通讯之RabbitMQ
- RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
- 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?
- RAM node 和 disk node 的区别?
- RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?
- RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对应着进程实体?这些东东分别起什么作用?
- vhost 是什么?起什么作用?
- 在单 node 系统和多 node 构成的 cluster 系统中声明 queue、exchange ,以及进行 binding 会有什么不同?
- 客户端连接到 cluster 中的任意 node 上是否都能正常工作?
- cluster 中 node 的失效会对 consumer 产生什么影响?若是在 cluster 中创建了mirrored queue ,这时 node 失效会对 consumer 产生什么影响?
- 能够在地理上分开的不同数据中心使用 RabbitMQ cluster 么?
- 为什么 heavy RPC 的使用场景下不建议采用 disk node ?
- 向不存在的 exchange 发 publish 消息会发生什么?向不存在的 queue 执行consume 动作会发生什么?
- routing_key 和 binding_key 的最大长度是多少?
- RabbitMQ 允许发送的 message 最大可达多大?
- 什么情况下 producer 不主动创建 queue 是安全的?
- “dead letter”queue 的用途?
- 为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有durable 属性,同时 message 具有 persistent 属性才行?
- 什么情况下会出现 blackholed 问题?
- 如何防止出现 blackholed 问题?
- Consumer Cancellation Notification 机制用于什么场景?
- Basic.Reject 的用法是什么?
- 为什么不应该对所有的 message 都使用持久化机制?
- RabbitMQ 中的 cluster、mirrored queue,以及 warrens 机制分别用于解决什么问题?存在哪些问题?
2.3 手撕分布式之缓存(Redis+memcached+MongoDB)
(1)手撕分布式缓存之Redis
- redis 简介
- 为什么要用 redis /为什么要用缓存(高性能、高并发)
- 为什么要用 redis 而不用 map/guava 做缓存?
- redis 和 memcached 的区别
- redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
- redis 设置过期时间
- redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
- redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
- redis 事务
- Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
- 分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
- Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
- 如何解决 Redis 的并发竞争 Key 问题
- 如何保证缓存与数据库双写时的数据一致性?
(2)分布式缓存之memcached
- memcached 是怎么工作的?
- memcached 最大的优势是什么?
- memcached 和服务器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什么优缺点?
- memcached 和 和 MySQL 的 的 query cache 相比,有什么优缺点?
- memcached 的 的 cache 机制是怎样的?
- memcached 如何实现冗余机制?
- 我需要把 memcached 中的 item 批量导出导入,怎么办?
- memcached 如何处理容错的?
- 如何将 memcached 中 中 item 批量导入导出?
- memcached 是如何做身份验证的?
- memcached 的多线程是什么?如何使用它们?
- memcached 能接受的 key 的最大长度是多少?
- memcached 对 对 item 的过期时间有什么限制?
- memcached 最大能存储多大的单个 item ?
- 为什么单个 item 的大小被限制在 1M byte 之内?
(3)手撕分布式缓存之MongoDB
- 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用NoSQL 数据库?说一说 NoSQL 数据库的几个优点?
- NoSQL 数据库有哪些类型?
- MySQL 与 MongoDB 之间最基本的差别是什么?
- 你怎么比较 MongoDB、CouchDB 及 CouchBase?
- MongoDB 成为最好 NoSQL 数据库的原因是什么?
- 32 位系统上有什么细微差别?
- journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?
- 分析器在 MongoDB 中的作用是什么?
- 名字空间(namespace)是什么?
- 如果用户移除对象的属性,该属性是否从存储层中删除?
- 能否使用日志特征进行安全备份?
- 允许空值 null 吗?
- 更新操作立刻 fsync 到磁盘?
- 如何执行事务/加锁?
- 为什么我的数据文件如此庞大?
- 启用备份故障恢复需要多久?
- 什么是 master 或 primary?
- 什么是 secondary 或 slave?
- 我必须调用 getLastError 来确保写操作生效了么?
- 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?
- 分片(sharding)和复制(replication)是怎样工作的?
- 数据在什么时候才会扩展到多个分片(shard)里?
- 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?
- 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?
- 我可以把 moveChunk 目录里的旧文件删除吗?
- 我怎么查看 Mongo 正在使用的链接?
- 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?
- 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?
- 当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?
- MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?
- 如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?
- MongoDB 支持存储过程吗?如果支持的话,怎么用?
- 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
分布式(限流+缓存+通讯)答案解析整理:
03 微服务(Dubbo+Spring Boot+Spring Cloud)
微服务答案解析如下:
3.1 手撕微服务之Dubbo
- Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
- Dubbo 超时时间怎样设置?
- Dubbo 有些哪些注册中心?
- Dubbo 集群的负载均衡有哪些策略
- Dubbo 的核心功能?
- Dubbo 服务注册与发现的流程?
- Dubbo 的架构设计?
- Dubbo 框架设计一共划分了 10 个层:
- Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
- dubbo 推荐用什么协议?
- Dubbo 默认采用注册中心?
- Dubbo 与 Spring 的关系?
- Dubbo 的集群容错方案有哪些?
- Dubbo 的默认集群容错方案?
- Dubbo 在安全机制方面是如何解决?
- Dubbo 和 Spring Cloud 的关系?
- Dubbo 超时时间怎样设置?
- Dubbo 和 Spring Cloud 的区别?
3.2 手撕微服务之Spring Boot
- 什么是 Spring Boot?
- Spring Boot 有哪些优点?
- 什么是 JavaConfig?
- 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
- Spring Boot 中的监视器是什么?
- 如何在 Spring Boot 中禁用 Actuator 端点安全性?
- 如何在自定义端口上运行 Spring Boot 应用程序?
- 什么是 YAML?
- 什么是 Spring Profiles?
- 什么是 Spring Batch?
- 如何集成 Spring Boot 和 ActiveMQ?
- 如何使用 Spring Boot 实现分页和排序?
- 什么是 Swagger?你用 Spring Boot 实现了它吗?
- 什么是 FreeMarker 模板?
- 如何使用 Spring Boot 实现异常处理?
- 您使用了哪些 starter maven 依赖项?
- 什么是 CSRF 攻击?
- 什么是 WebSockets?
- 什么是 AOP?
- 什么是 Apache Kafka?
- 我们如何监视所有 Spring Boot 微服务?
3.3 手撕微服务之Spring Cloud
- 什么是 Spring Cloud?
- 使用 Spring Cloud 有什么优势?
- 服务注册和发现是什么意思?Spring Cloud 如何实现?
- 负载平衡的意义什么?
- 什么是 Hystrix?它如何实现容错?
- 什么是 Hystrix 断路器?我们需要它吗?
- 什么是 Spring Cloud Bus?我们需要它吗?
- 什么是 Netflix Feign?它的优点是什么?
微服务(Dubbo+Spring Boot+Spring Cloud)答案解析整理:
04 性能优化(JVM+Tomcat+MySQL)
性能优化答案解析如下:
4.1 手撕性能优化之JVM
- Java 类加载过程?
- 描述一下 JVM 加载 Class 文件的原理机制?
- Java 内存分配。
- GC 是什么? 为什么要有 GC?
- 简述 Java 垃圾回收机制。
- 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
- 垃圾回收的优点和原理。并考虑 2 种回收机制
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java 中会存在内存泄漏吗,请简单描述。
- 深拷贝和浅拷贝。
- System.gc 和 Runtime.gc 会做什么事情?
- finalize 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
- 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
- 什么是分布式垃圾回收(DGC)?它是如何工作的?
- 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
- 在 Java 中,对象什么时候可以被垃圾回收?
- 简述 Java 内存分配与回收策率以及 Minor GC 和 MajorGC
- JVM 的永久代中会发生垃圾回收么?
- Java 中垃圾收集的方法有哪些?
- 什么是类加载器,类加载器有哪些?
- 类加载器双亲委派模型机制?
4.2 手撕性能优化之Tomcat
- 你怎样给 tomcat 去调优?
- 如何加大 tomcat 连接数
- tomcat 中如何禁止列目录下的文件
- 怎样加大 tomcat 的内存
- Tomcat 有几种部署方式
- Tomcat 的优化经验
4.3 手撕性能优化之MySQL
- 为查询缓存优化你的查询
- EXPLAIN你的SELECT查询
- 当只要一行数据时使用LIMIT 1
- 为搜索字段建索引
- 在Join表的时候使用相当类型的例,并将其索引
- 千万不要 ORDER BY RAND
- 避免 SELECT *
- 永远为每张表设置一个 ID
- 使用 ENUM 而不是 VARCHAR
- 从 PROCEDURE ANALYSE 取得建议
- 尽可能的使用 NOT NULL
- Prepared Statements
- 无缓冲的查询
- 把 IP 地址存成 UNSIGNED INT
- 固定长度的表会更快
- 垂直分割
- 拆分大的 DELETE 或 INSERT 语句
- 越小的列会越快
- 选择正确的存储引擎
- 使用一个对象关系映射器(Object Relational Mapper)
- 小心“永久链接”
性能优化(JVM+Tomcat+MySQL)答案解析整理:
最后再说一遍:点击下面的链接,进去即可领取全部的答案!!!!