直播网站可以做毕设吗,在县城做团购网站,宿迁房产网,大同工程造价信息网Dubbo需要 Web 容器吗#xff1f;
不需要#xff0c;如果硬要用 Web 容器#xff0c;只会增加复杂性#xff0c;也浪费资源。
PrintStream、BufferedWriter、PrintWriter的比较?
PrintStream类的输出功能非常强大#xff0c;通常如果需要输出文本内容#xff0c;都应…Dubbo需要 Web 容器吗
不需要如果硬要用 Web 容器只会增加复杂性也浪费资源。
PrintStream、BufferedWriter、PrintWriter的比较?
PrintStream类的输出功能非常强大通常如果需要输出文本内容都应该将输出流包装成PrintStream后进行输出。它还提供其他两项功能。与其他输出流不同PrintStream 永远不会抛出 IOException而是异常情况仅设置可通过 checkError 方法测试的内部标志。另外为了自动刷新可以创建一个 PrintStreamBufferedWriter:将文本写入字符输出流缓冲各个字符从而提供单个字符数组和字符串的高效写入。通过write()方法可以将获取到的字符输出然后通过newLine()进行换行操作。BufferedWriter中的字符流必须通过调用flush方法才能将其刷出去。并且BufferedWriter只能对字符流进行操作。如果要对字节流操作则使用BufferedInputStreamPrintWriter的println方法自动添加换行不会抛异常若关心异常需要调用checkError方法看是否有异常发生PrintWriter构造方法可指定参数实现自动刷新缓存autoflush
Java 8 为什么要将永久代(PermGen)替换为元空间(MetaSpace)呢
整个永久代有一个 JVM 本身设置固定大小上线无法进行调整而元空间使用的是直接内存受本机可用内存的限制并且永远不会出现java.lang.OutOfMemoryError。你可以使用 -XXMaxMetaspaceSize 标志设置最大元空间大小默认值为 unlimited这意味着它只受系统内存的限制。-XXMetaspaceSize 调整标志定义元空间的初始大小如果未指定此标志则 Metaspace 将根据运行时的应用程序需求动态地重新调整大小。
sed 命令
当你将 Dos 系统中的文件复制到 Unix/Linux 后这个文件每行都会以 \r\n 结尾sed 可以轻易将其转换为 Unix 格式的文件使用\n 结尾的文件sed ‘s/.$//’ filename 。 反转文件内容并输出sed -n ‘1!G; h; p’ filename 。 为非空行添加行号sed ‘/./’ thegeekstuff.txt | sed ‘N; s/\n/ /’ 。
什么是索引?
索引是一种数据结构,可以帮助我们快速的进行数据的查找。
如何在 /usr 目录下找出大小超过 10MB 的文件?
find /usr -type f -size 10240k
给我一个符合开闭原则的设计模式的例子
开闭原则要求你的代码对扩展开放对修改关闭。这个意思就是说如果你想增加一个新的功能你可以很容易的在不改变已测试过的代码的前提下增加新的代码。有好几个设计模式是基于开闭原则的如策略模式如果你需要一个新的策略只需要实现接口增加配置不需要改变核心逻辑。一个正在工作的例子是 Collections.sort() 方法这就是基于策略模式遵循开闭原则的你不需为新的对象修改 sort() 方法你需要做的仅仅是实现你自己的 Comparator 接口。
whereis 命令
当你不知道某个命令的位置时可以使用 whereis 命令下面使用 whereis 查找 ls 的位置whereis ls 。 当你想查找某个可执行程序的位置但这个程序又不在 whereis 的默认目录下你可以使用 -B 选项并指定目录作为这个选项的参数。下面的命令在 /tmp 目录下查找 lsmk 命令whereis -u -B /tmp -f lsmk 。
访问修饰符public,private,protected,以及不写默认时的区别
修饰符当前类同 包子 类其他包public√√√√protected√√√×default√√××private√×××
Dubbo如何优雅停机
Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的所以如果使用 kill -9 PID 等强制关闭指令是不会执行优雅停机的只有通过 kill PID 时才会执行。
在 Elasticsearch 中是怎么根据一个词找到对应的倒排索引的
1Lucene的索引过程就是按照全文检索的基本过程将倒排表写成此文件格式的过程。 2Lucene的搜索过程就是按照此文件格式将索引进去的信息读出来然后计算每篇文档打分(score)的过程。
说一说几种常见的线程池及适用场景
FixedThreadPool可重用固定线程数的线程池。适用于负载比较重的服务器 FixedThreadPool使用无界队列LinkedBlockingQueue作为线程池的工作队列 该线程池中的线程数量始终不变。当有一个新的任务提交时线程池中若有空闲线程则立即执行。若没有则新的任务会被暂存在一个任务队列中待有线程空闲时便处理在任务队列中的任务。
什么是内部类
在Java中可以将一个类的定义放在另外一个类的定义内部这就是 内部类 。内部类本身就是类的一个属性与其他属性定义方式一致。
Zookeeper怎么实现服务注册
详见https://segmentfault.com/a/1190000019670015
什么是计算机体系结构什么是计算机组成以乘法指令为例说明二者区别。
1计算机体系结构是指那些能够被程序员看到的计算机的属性。如指令集、数据类型等 2计算机组成是指如何实现计算机体系结构所体现出来的属性 3以乘法指令为例计算机是否有乘法指令属于体系结构的问题。乘法指令是采用专用的乘法器还是使用加法器和移位器构成属于计算机组成的问题。
Mycat中全局ID方案有哪些程序自定义全局ID的方案有哪些
1.mycat的全局id方案
死信队列和延迟队列的使用
死信消息
vhost 是什么起什么作用
vhost 可以理解为虚拟 broker 即 mini-RabbitMQ server。其内部均含有独立的 queue、exchange 和 binding 等但最最重要的是其拥有独立的权限系统可以做到 vhost 范围的用户控制。当然从 RabbitMQ 的全局角度vhost 可以作为不同权限隔离的手段一个典型的例子就是不同的应用可以跑在不同的 vhost 中。
kafka的message格式是什么样的
一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成。 header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。 当magic的值为1的时候会在magic和crc32之间多一个字节的数据attributes(保存一些相关属性比如是否压缩、压缩格式等等)如果magic的值为0那么不存在attributes属性。 body是由N个字节构成的一个消息体包含了具体的key/value消息。
Dubbo启动时如果依赖的服务不可用会怎样
Dubbo 缺省会在启动时检查依赖的服务是否可用不可用时会抛出异常阻止 Spring 初始化完成默认 check“true”可以通过 check“false” 关闭检查。
常见的集合有哪些
Collection接口的子接口包括Set接口和List接口 Map接口的实现类主要有HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等 Set接口的实现类主要有HashSet、TreeSet、LinkedHashSet等 List接口的实现类主要有ArrayList、LinkedList、Stack以及Vector等
find 命令如何使用
查找指定文件名的文件(不区分大小写)find -iname “MyProgram.c” 。 对找到的文件执行某个命令find -iname “MyProgram.c” -exec md5sum {} ; 。 查找 home 目录下的所有空文件find ~ -empty 。
在单node系统和多node构成的cluster系统中声明queue、exchange以及进行binding会有什么不同
当你在单node上声明queue时只要该node上相关元数据进行了变 更你就会得到Queue.Declare-ok回应而在cluster上声明queue则要 求cluster上的全部node都要进行元数据成功更新才会得到 Queue.Declare-ok回应。另外若node类型为RAM node则变更的数据 仅保存在内存中若类型为disk node则还要变更保存在磁盘上的数据。
什么是shiro
Shiro是一个强大易用的java安全框架提供了认证、授权、加密、会话管理、与web集成、缓存等功能对于任何一个应用程序都可以提供全面的安全服务相比其他安全框架shiro要简单的多。
RocketMQ在分布式事务支持这块机制的底层原理?
分布式系统中的事务可以使用TCCTry、Confirm、Cancel、2pc来解决分布式系统中的消息原子性 RocketMQ 4.3提供分布事务功能通过 RocketMQ 事务消息能达到分布式事务的最终一致
zookeeper负载均衡和nginx负载均衡区别
zookeeper 不存在单点问题zab机制保证单点故障可重新选举一个leader 只负责服务的注册与发现不负责转发减少一次数据交换消费方与服务方直接通信 需要自己实现相应的负载均衡算法
什么是Java程序的主类应用程序和小程序的主类有何不同
一个程序中可以有多个类但只能有一个类是主类。在Java应用程序中这个主类是指包含main()方法的类。而在Java小程序中这个主类是一个继承自系统类JApplet或Applet的子类。应用程序的主类不一定要求是public类但小程序的主类要求必须是public类。主类是Java程序执行的入口点。
说说Eureka的自我保护机制
当一个服务未按时进行心跳续约时在生产环境下因为网络延迟等原因此时就把服务剔除列表并不妥当因为服务可能没有宕机。 Eureka就会把当前实例的注册信息保护起来不予剔除。生产环境下这很有效保证了大多数服务依然可用。但是有可能会造成一些挂掉的服务被剔除有延迟。
Docker 群Swarm是什么
Docker Swarm – Docker 群 – 是原生的 Docker 集群服务工具。它将一群 Docker 主机集成为单一一个虚拟 Docker 主机。利用一个 Docker 守护进程通过标准的 Docker API 和任何完善的通讯工具Docker Swarm 提供透明地将 Docker 主机扩散到多台主机上的服务。
TreeMap和TreeSet在排序时如何比较元素Collections工具类中的sort()方法如何比较元素
TreeSet要求存放的对象所属的类必须实现Comparable接口该接口提供了比较元素的compareTo()方法当插入元素时会回调该方法比较元素的大小。TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。Collections工具类的sort方法有两种重载的形式第一种要求传入的待排序容器中存放的对象比较实现Comparable接口以实现元素的比较第二种不强制性的要求容器中的元素必须可比较但是要求传入第二个参数参数是Comparator接口的子类型需要重写compare方法实现元素的比较相当于一个临时定义的排序规则其实就是通过接口注入比较元素大小的算法也是对回调模式的应用Java中对函数式编程的支持。
Elasticsearch 在部署时对 Linux 的设置有哪些优化方法
164 GB 内存的机器是非常理想的 但是 32 GB 和 16 GB 机器也是很常见的。少于 8 GB 会适得其反。 2如果你要在更快的 CPUs 和更多的核心之间选择选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。 3如果你负担得起 SSD它将远远超出任何旋转介质。 基于 SSD 的节点查询和索引性能都有提升。如果你负担得起SSD 是一个好的选择。 4即使数据中心们近在咫尺也要避免集群跨越多个数据中心。绝对要避免集群跨越大的地理距离。 5请确保运行你应用程序的 JVM 和服务器的 JVM 是完全一样的。 在Elasticsearch 的几个地方使用 Java 的本地序列化。 6通过设置 gateway.recover_after_nodes、gateway.expected_nodes、gateway.recover_after_time 可以在集群重启的时候避免过多的分片交换这可能会让数据恢复从数个小时缩短为几秒钟。 7Elasticsearch 默认被配置为使用单播发现以防止节点无意中加入集群。只有在同一台机器上运行的节点才会自动组成集群。最好使用单播代替组播。 8不要随意修改垃圾回收器CMS和各个线程池的大小。 9把你的内存的少于一半给 Lucene但不要超过 32 GB通过ES_HEAP_SIZE 环境变量设置。 10内存交换到磁盘对服务器性能来说是致命的。如果内存交换到磁盘上一个100 微秒的操作可能变成 10 毫秒。 再想想那么多 10 微秒的操作时延累加起来。 不难看出 swapping 对于性能是多么可怕。 11Lucene 使用了大 量 的文件。同时Elasticsearch 在节点和 HTTP 客户端之间进行通信也使用了大量的套接字。 所有这一切都需要足够的文件描述符。你应该增加你的文件描述符设置一个很大的值如 64,000。
集群最少要几台机器集群规则是怎样的?
集群规则为2N1台N0即3台。
Java中用到的线程调度算法是什么
抢占式。一个线程用完CPU之后操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。
什么是Container资源监控
对于用户而言了解应用程序的性能和所有不同抽象层的资源利用率非常重要Kubernetes通过在容器pod服务和整个集群等不同级别创建抽象来考虑集群的管理。现在可以监视每个级别这只是容器资源监视。
final 有什么用
用于修饰类、属性和方法
Zookeeper Watcher 机制
Zookeeper允许客户端向服务端的某个Znode注册一个Watcher监听当服务端的一些指定事件触发了这个Watcher服务端会向指定客户端发送一个事件通知来实现分布式的通知功能然后客户端根据Watcher通知状态和事件类型做出业务上的改变。
为什么要在MongoDB中用Regular Expression数据类型
Regular Expression类型用于在文档中存储正则表达式
RabbitMQ 的消息是怎么发送的
首先客户端必须连接到 RabbitMQ 服务器才能发布和消费消息客户端和 rabbit server 之间会创建一个 tcp 连接一旦 tcp 打开并通过了认证认证就是你发送给 rabbit 服务器的用户名和密码你的客户端和 RabbitMQ 就创建了一条 amqp 信道channel信道是创建在“真实” tcp 上的虚拟连接amqp 命令都是通过信道发送出去的每个信道都会有一个唯一的 id不论是发布消息订阅队列都是通过这个信道完成的。
什么是NIO
是 Java 1.4 引入的 java.nio 包提供了 Channel、Selector、Buffer 等新的抽象可以构建多路复用的、同步非阻塞 IO 程序同时提供了更接近操作系统底层高性能的数据操作方式。
再说说RocketMQ 是如何保证数据的高容错性的?
在不开启容错的情况下轮询队列进行发送如果失败了重试的时候过滤失败的Broker 如果开启了容错策略会通过RocketMQ的预测机制来预测一个Broker是否可用 如果上次失败的Broker可用那么还是会选择该Broker的队列 如果上述情况失败则随机选择一个进行发送 在发送消息的时候会记录一下调用的时间与是否报错根据该时间去预测broker的可用时间
Redis事务机制了解过吗
Redis事务的概念 Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令一个事务中所有命令都会被序列化。在事务执行过程会按照顺序串行化执行队列中的命令其他客户端提交的命令请求不会插入到事务执行命令序列中。 Redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
说说Elasticsearch常用的调优手段
设计阶段调优 1根据业务增量需求采取基于日期模板创建索引通过 roll over API 滚动索引 2使用别名进行索引管理 3每天凌晨定时对索引做 force_merge 操作以释放空间 4采取冷热分离机制热数据存储到 SSD提高检索效率冷数据定期进行 shrink操作以缩减存储 5采取 curator 进行索引的生命周期管理 6仅针对需要分词的字段合理的设置分词器 7Mapping 阶段充分结合各个字段的属性是否需要检索、是否需要存储等。………
什么是线程死锁?如何避免死锁?
多个线程同时被阻塞它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞因此程序不可能正常终止。
我们能否使用任何类作为Map的key
我们可以使用任何类作为Map的key然而在使用它们之前需要考虑以下几点
在使用 Docker 技术的产品中如何监控其运行
Docker 在产品中提供如 运行统计和 Docker 事件的工具。可以通过这些工具命令获取 Docker 运行状况的统计信息或报告。
TCP为什么要四次挥手
任何一方都可以在数据传送结束后发出连接释放的通知待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候则发出连接释放通知对方确认后就完全关闭了TCP连接。
什么情况下调用doGet()和doPost()
JSP页面中的form标签里的method属性为get时调用doGet()为post时调用doPost()超链接跳转页面时调用doGet()
行级锁定的优点
1、当在许多线程中访问不同的行时只存在少量锁定冲突。
解释MySQL外连接、内连接与自连接的区别
先说什么是交叉连接: 交叉连接又叫笛卡尔积它是指不使用任何条件直接将一个表的所有记录和另一个表中的所有记录一一匹配。
什么是Kubelet
这是一个代理服务它在每个节点上运行并使从服务器与主服务器通信。因此Kubelet处理PodSpec中提供给它的容器的描述并确保PodSpec中描述的容器运行正常。
Mybatis使用场合?
专注于sql本身,是一个足够灵活的dao层解决方案.,对性能的要求很高,或者需求多变的项目,
Java会存在内存泄漏吗请简单描述。
内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。理论上来说Java是有GC垃圾回收机制的也就是说不再被使用的对象会被GC自动回收掉自动从内存中清除
Netty 的应用场景了解么
Netty 主要用来做网络通信 : 作为 RPC 框架的网络通信工具 我们在分布式系统中不同服务节点之间经常需要相互调用这个时候就需要 RPC 框架了。不同服务节点之间的通信是如何做的呢可以使用 Netty 来做。比如我调用另外一个节点的方法的话至少是要让对方知道我调用的是哪个类中的哪个方法以及相关参数吧 实现一个自己的 HTTP 服务器 通过 Netty 我们可以自己实现一个简单的 HTTP 服务器这个大家应该不陌生。说到 HTTP 服务器的话作为 Java 后端开发我们一般使用 Tomcat 比较多。一个最基本的 HTTP 服务器可要以处理常见的 HTTP Method 的请求比如 POST 请求、GET 请求等等。 实现一个即时通讯系统 使用 Netty 我们可以实现一个可以聊天类似微信的即时通讯系统这方面的开源项目还蛮多的可以自行去 Github 找一找。 实现消息推送系统 市面上有很多消息推送系统都是基于 Netty 来做的。
zk节点宕机如何处理
Zookeeper本身也是集群推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时其他节点会继续提供服务。 如果是一个Follower宕机还有2台服务器提供访问因为Zookeeper上的数据是有多个副本的数据并不会丢失 如果是一个Leader宕机Zookeeper会选举出新的Leader。 ZK集群的机制是只要超过半数的节点正常集群就能正常提供服务。只有在ZK节点挂得太多只剩一半或不到一半节点能工作集群才失效。
在 Linux 下如何指定dns服务器来解析某个域名
使用谷歌 DNS 解析百度dig 8.8.8.8 www.baidu.com
Dubbo有哪几种配置方式
1Spring 配置方式 2Java API 配置方式
为什么进程上下文切换比线程上下文切换代价高
进程切换分两步 切换页目录以使用新的地址空间 切换内核栈和硬件上下文 对于linux来说线程和进程的最大区别就在于地址空间对于线程切换第1步是不需要做的第2是进程和线程切换都要做的
在并发情况下Elasticsearch如果保证读写一致
可以通过版本号使用乐观并发控制以确保新版本不会被旧版本覆盖由应用层来处理具体的冲突 另外对于写操作一致性级别支持quorum/one/all默认为quorum即只有当大多数分片可用时才允许写操作。但即使大多数可用也可能存在因为网络等原因导致写入副本失败这样该副本被认为故障分片将会在一个不同的节点上重建。 对于读操作可以设置replication为sync(默认)这使得操作在主分片和副本分片都完成后才会返回如果设置replication为async时也可以通过设置搜索请求参数_preference为primary来查询主分片确保文档是最新版本。
详细描述一下Elasticsearch搜索的过程
搜索被执行成一个两阶段过程我们称之为 Query Then Fetch 在初始查询阶段时查询会广播到索引中每一个分片拷贝主分片或者副本分片。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from size 的优先队列。PS在搜索的时候是会查询Filesystem Cache的但是有部分数据还在Memory Buffer所以搜索是近实时的。 每个分片返回各自优先队列中 所有文档的 ID 和排序值 给协调节点它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表。 接下来就是 取回阶段协调节点辨别出哪些文档需要被取回并向相关的分片提交多个 GET 请求。每个分片加载并 丰富 文档如果有需要的话接着返回文档给协调节点。一旦所有的文档都被取回了协调节点返回结果给客户端。 补充Query Then Fetch的搜索类型在文档相关性打分的时候参考的是本分片的数据这样在文档数量较少的时候可能不够准确DFS Query Then Fetch增加了一个预查询的处理询问Term和Document frequency这个评分更准确但是性能会变差。
consumer_offsets 是做什么用的?
这是一个内部主题公开的官网资料很少涉及到。因此我认为此题属于面试官炫技一类 的题目。你要小心这里的考点:该主题有 3 个重要的知识点你一定要全部答出来才会显得对这块知识非常熟悉。
在并发情况下Elasticsearch 如果保证读写一致
1可以通过版本号使用乐观并发控制以确保新版本不会被旧版本覆盖由应用层来处理具体的冲突 2另外对于写操作一致性级别支持 quorum/one/all默认为 quorum即只有当大多数分片可用时才允许写操作。但即使大多数可用也可能存在因为网络等原因导致写入副本失败这样该副本被认为故障分片将会在一个不同的节点上重建。 3对于读操作可以设置 replication 为 sync(默认)这使得操作在主分片和副本分片都完成后才会返回如果设置 replication 为 async 时也可以通过设置搜索请求参数_preference 为 primary 来查询主分片确保文档是最新版本。
fastcgi 与 cgi 的区别
1cgi
如何理解MongoDB中的GridFS机制MongoDB为何使用GridFS来存储文件
GridFS是一种将大型文件存储在MongoDB中的文件规范。使用GridFS可以将大文件分隔成多个小文档存放这样我们能够有效的保存大文档而且解决了BSON对象有限制的问题。
如何在 /var 目录下找出 90 天之内未被访问过的文件
find /var ! -atime -90
mv 命令
将 file1 重命名为 file2 如果 file2 存在则提示是否覆盖mv -i file1 file2 。 -v 会输出重命名的过程当文件名中包含通配符时这个选项会非常方便mv -v file1 file2 。
什么是孤儿卷及如何删除它
孤儿卷是未与任何容器关联的卷。在 Docker v。1.9 之前的版本中删除这些孤儿卷存在很大问题。
Netty 的心跳机制了解么
在 TCP 保持长连接的过程中可能会出现断网等网络异常出现异常发生的时候 client 与 server 之间如果没有交互的话它们是无法发现对方已经掉线的。为了解决这个问题, 我们就需要引入 心跳机制。
Math.round(11.5) 等于多少Math.round(-11.5)等于多少
Math.round(11.5)的返回值是12Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。
什么是代理模式什么是动态代理Java中动态代理有哪些实现方式
详见https://www.cnblogs.com/qlqwjy/p/7550609.html
消息队列积压怎么办
当消费者出现异常很容易引起队列积压如果一秒钟1000个消息那么一个小时就是几千万的消息积压是非常可怕的事情但是生产线上又有可能会出现
为什么 Redis 需要把所有数据放到内存中
Redis 为了达到最快的读写速度将数据都读到内存中并通过异步的方式将数据写入磁盘。
你了解过哪些IO模型
详见https://www.cnblogs.com/sharing-java/p/10791802.html
Shiro的优点
1、 简单的身份验证支持多种数据源 2、对角色的简单授权支持细粒度的授权方法 3、支持一级缓存以提升应用程序的性能 4、内置基于POJO的企业会话管理适用于web及非web环境 5、非常简单的API加密 6、不跟任何框架绑定可以独立运行
hashCode 与 equals (重要)
HashSet如何检查重复
SHA
安全哈希算法Secure Hash Algorithm主要适用于数字签名标准Digital Signature Standard DSS里面定义的数字签名算法Digital Signature Algorithm DSA。对于长度小于2^64位的消息SHA1会产生一个160位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善并被广泛使用。该算法的思想是接收一段明文然后以一种不可逆的方式将它转换成一段通常更小密文也可以简单的理解为取一串输入码称为预映射或信息并把它们转化为长度较短、位数固定的输出序列即散列值也称为信息摘要或信息认证代码的过程。散列函数值可以说是对明文的一种指纹或是摘要所以对散列值的数字签名就可以视为对此明文的数字签名。
如何实现动态Zuul网关路由转发
通过path配置拦截请求通过 Serviceld到配置中心获取转发的服务列表zuul内部使用 Ribbon实现本地负载均衡和转发。
什么情况下会发生栈内存溢出
栈是线程私有的他的生命周期与线程相同每个方法在执行的时候都会创建一个栈帧用来存储局部变量表操作数栈动态链接方法出口等信息。局部变量表又包含基本数据类型对象引用类型。 如果线程请求的栈深度大于虚拟机所允许的最大深度将抛出StackOverflowError异常方法递归调用产生这种结果。 如果Java虚拟机栈可以动态扩展并且扩展的动作已经尝试过但是无法申请到足够的内存去完成扩展或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈那么Java虚拟机将抛出一个OutOfMemory 异常。(线程启动过多)。
分布式事务了解过吗
涉及到多个数据库操作的事务即为分布式事务,目的是为保证分布式系统中的数据一致性.
当实体类的属性名和表种字段名不一致怎么办?
有两种解决方案:可以在sql语句给字段名取别名,别名于实体类属性名同名,也可以用resultMap来映射字段名和实体类属性名一一对应.
RabbitMQ有什么优缺点
优点解耦、异步、削峰