自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

残冬十九

跟大家分享一些技术

  • 博客(161)
  • 收藏
  • 关注

原创 proguard-java代码混淆

proguard-java代码混淆前言pom文件配置总结前言许多场景需要对java代码混淆加密,防止被人反编译知道查看道源码,现在有好多代码混淆工具。现在业内好多代码混淆工具都是需要进行下载,通过工具进行混淆,对于我们开发人员很不方便,于是本人找了下proguard来混淆打包本文提供的springboot+maven+idea来进行配置的。pom文件配置首先是pom文件中添加proguard插件配置 <plugin> &l

2021-03-10 00:23:51 360 1

原创 2020-12-21:Jdbc4.0版本自动加载注册数据库驱动是什么机制?

2020-12-21:Jdbc4.0版本自动加载注册数据库驱动是什么机制? 前言Jdbc4.0版本自动加载注册数据库驱动是什么机制?前言每日一题专栏Jdbc4.0版本自动加载注册数据库驱动是什么机制?其使用了java的SPI机制,即你不需要用类似Class.forName() 的代码注册JDBC驱动, DriverManager类将自动去查找项目jar中能用的数据库驱动来连接数据库...

2020-12-21 23:10:08 270

原创 2020-12-20:Netty 的优势有哪些?

2020-12-20:Netty 的优势有哪些? 前言Netty 的优势有哪些?前言每日一题专栏Netty 的优势有哪些?使用简单:封装了 NIO 的很多细节,使用更简单。功能强大:预置了多种编解码功能,支持多种主流协议。定制能力强:可以通过 ChannelHandler 对通信框架进行灵活地扩展。性能高:通过与其他业界主流的 NIO 框架对比,Netty 的综合性能最优。稳定:Netty 修复了已经发现的所有 NIO 的 bug,让开发人员可以专注于业务本身。社区活跃:Netty 是

2020-12-20 23:38:26 432 1

原创 2020-12-19:Redis的缓存失效策略?

2020-12-19:Redis的缓存失效策略? 前言Redis的缓存失效策略?前言每日一题专栏Redis的缓存失效策略?当缓存需要被清理时(比如空间占用已经接近临界值了),需要使用某种淘汰算法来决定清理掉哪些数据。常用的淘汰算法有下面几种:FIFO:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。LRU:Least Recently Used,最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。LFU:Least Frequentl

2020-12-20 23:37:20 119

原创 2020-12-18:RabbitMQ如何保证消息的顺序性

2020-12-18:RabbitMQ如何保证消息的顺序性 前言RabbitMQ如何保证消息的顺序性前言每日一题专栏RabbitMQ如何保证消息的顺序性从根本上说,异步消息是不应该有顺序依赖的。在MQ上估计是没法解决。要实现严格的顺序消息,简单且可行的办法就是:保证生产者 - MQServer - 消费者是一对一对一的关系。如果有顺序依赖的消息,要保证消息有一个hashKey,类似于数据库表分区的的分区key列。保证对同一个key的消息发送到相同的队列。A用户产生的消息(包括创建消息和删除消息

2020-12-18 23:08:23 732 2

原创 2020-12-17:接口如何防重放和被篡改?

2020-12-17:接口如何防重放和被篡改? 前言接口如何防重放和被篡改?前言每日一题专栏接口如何防重放和被篡改?防重放:幂等性,url里添加唯一标识参数防篡改:url里添加签名参数

2020-12-17 23:04:48 273

原创 2020-12-16:Java 中的 final 关键字有哪些用法?

2020-12-16:Java 中的 final 关键字有哪些用法? 前言Java 中的 final 关键字有哪些用法?前言每日一题专栏Java 中的 final 关键字有哪些用法?(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。...

2020-12-16 22:39:19 194

原创 2020-12-15:Spring框架中有哪些不同类型的事件

2020-12-15:Spring框架中有哪些不同类型的事件 前言es底层读写原理?倒排索引原理?前言每日一题专栏es底层读写原理?倒排索引原理?Spring 提供了以下5种标准的事件:1.上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。2.上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的S

2020-12-15 23:54:07 413

原创 2020-12-14:es底层读写原理?倒排索引原理?

2020-12-14:es底层读写原理?倒排索引原理? 前言es底层读写原理?倒排索引原理?前言每日一题专栏es底层读写原理?倒排索引原理?es写数据过程1、客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2、coordinating node 对document进行路由,将请求转发给对应的node(有primary shard)3、实际的node上的primary shard 处理请求,然后将数据同步到replica node。4、co

2020-12-14 23:36:07 148

原创 2020-12-13:具体讲一下CMS流程

2020-12-13:具体讲一下CMS流程 前言具体讲一下CMS流程前言每日一题专栏具体讲一下CMS流程整个过程分为 4 个步骤,包括:初始标记:仅仅只是标记一下 GCRoots 能直接关联到的对象,速度很快,需要停顿(STW-Stoptheworld)。并发标记:从 GCRoot 开始对堆中对象进行可达性分析,找到存活对象,它在整个回收过程中耗时最长,不需要停顿。重新标记:为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,需要停顿(STW)。这个阶段的停顿

2020-12-14 23:35:29 435

原创 2020-12-12:什么是Ajax长轮询?

2020-12-11:什么是Ajax长轮询? 前言什么是Ajax长轮询?前言每日一题专栏什么是Ajax长轮询?客户端使用ajax发出请求,服务器端会阻塞请求直到有数据传递或超时才返回。客户端JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。...

2020-12-14 23:33:44 187

原创 2020-12-11: ThreadLocal为何不用HashMap或者ConcurrentHashMap来实现?

2020-12-10: ThreadLocal为何不用HashMap或者ConcurrentHashMap来实现? 前言ThreadLocal为何不用HashMap或者ConcurrentHashMap来实现?前言每日一题专栏ThreadLocal为何不用HashMap或者ConcurrentHashMap来实现?因为无论使用HashMap或者ConcurrentHashMap,在底层上都会造成多个线程在一个对象上进行竞争的情况,并没有真正意义上满足一个线程持有一个变量的本地副本这种设计思想,T

2020-12-14 23:33:01 738

原创 2020-12-10:请 谈 谈 ThreadLocal 是 怎 么 解 决 并 发 安 全 的 ?

2020-12-10:请 谈 谈 ThreadLocal 是 怎 么 解 决 并 发 安 全 的 ?前言请 谈 谈 ThreadLocal 是 怎 么 解 决 并 发 安 全 的 ?前言每日一题专栏请 谈 谈 ThreadLocal 是 怎 么 解 决 并 发 安 全 的 ?ThreadLocal 这 是 Java 提 供 的 一 种 保 存 线 程 私 有 信 息 的 机 制 , 因 为其 在 整 个 线 程 生 命 周 期 内 有 效 , 所 以 可 以 方 便 地 在 一 个 线 程 关

2020-12-10 23:18:23 463

原创 2020-12-09:Java 中 的 线 程 池 是 如 何 实 现 的 ?

2020-12-09:Java 中 的 线 程 池 是 如 何 实 现 的 ?前言Java 中 的 线 程 池 是 如 何 实 现 的 ?前言每日一题专栏Java 中 的 线 程 池 是 如 何 实 现 的 ?在 Java 中 , 所 谓 的 线 程 池 中 的 “ 线 程 ” , 其 实 是 被 抽 象 为 了 一 个 静 态内 部 类Worker, 它 基 于AQS实 现 , 存 放 在 线 程 池 的HashSet workers 成 员 变 量 中 ;而 需 要 执 行 的 任 务

2020-12-09 23:28:26 284

原创 2020-12-08:创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?

2020-12-08:创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?前言创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?前言每日一题专栏创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?Java中 的 线 程 池 的 创 建 其 实 非 常 灵 活 , 我 们 可 以 通 过 配 置 不 同 的 参数 , 创 建 出 行 为 不 同 的 线 程 池 , 这 几 个 参 数 包 括 :corePoolSize: 线 程 池 的 核 心 线 程 数 。maximu

2020-12-08 22:42:57 434

原创 2020-12-07:在 mysql 数据库中索引的工作机制是什么?

2020-12-07:在 mysql 数据库中索引的工作机制是什么?前言在 mysql 数据库中索引的工作机制是什么?前言每日一题专栏在 mysql 数据库中索引的工作机制是什么?数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B 树及其变种 B+树...

2020-12-07 22:52:33 361

原创 2020-12-06:缓存与数据库不一致怎么办

2020-12-06:缓存与数据库不一致怎么办前言缓存与数据库不一致怎么办前言每日一题专栏缓存与数据库不一致怎么办假设采用的主存分离,读写分离的数据库,如果一个线程 A 先删除缓存数据,然后将数据写入到主库当中,这个时候,主库和从库同步没有完成,线程 B 从缓存当中读取数据失败,从从库当中读取到旧数据,然后更新至缓存,这个时候,缓存当中的就是旧的数据。发生上述不一致的原因在于,主从库数据不一致问题,加入了缓存之后,主从不一致的时间被拉长了处理思路:在从库有数据更新之后,将缓存当中的数

2020-12-07 22:49:57 133

原创 2020-12-05:Redis 有哪几种数据淘汰策略?

2020-12-05:Redis 有哪几种数据淘汰策略?前言Redis 有哪几种数据淘汰策略?前言每日一题专栏Redis 有哪几种数据淘汰策略?1.noeviction:返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。2.allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。3.volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。4.allkeys-random: 回收随机的键

2020-12-07 22:48:59 154

原创 2020-12-04:使用 Redis 做过异步队列吗,是如何实现的?

2020-12-04:使用 Redis 做过异步队列吗,是如何实现的?前言使用 Redis 做过异步队列吗,是如何实现的前言每日一题专栏使用 Redis 做过异步队列吗,是如何实现的使用 list 类型保存数据信息,rpush 生产消息,lpop 消费消息,当 lpop 没有消息时,可以 sleep 一段时间,然后再检查有没有信息,如果不想 sleep 的话,可以使用 blpop, 在没有信息的时候,会一直阻塞,直到信息的到来。redis 可以通过 pub/sub 主题订阅模式实现一个生产

2020-12-04 23:34:42 165

原创 2020-12-03:MySql常用的索引有哪些种类?

2020-12-03:MySql常用的索引有哪些种类?前言MySql常用的索引有哪些种类?前言每日一题专栏MySql常用的索引有哪些种类?普通索引: 即针对数据库表创建索引唯一索引: 与普通索引类似,不同的就是:MySQL 数据库索引列的值必须唯一,但允许有空值主键索引: 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引组合索引: 为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。即将数据库表中的多个字段联合起来作为一个组合索引。...

2020-12-03 23:00:36 188

原创 2020-12-02:缓存穿透、缓存击穿、缓存雪崩解决方案?

2020-12-02:缓存穿透、缓存击穿、缓存雪崩解决方案? 前言缓存穿透、缓存击穿、缓存雪崩解决方案?前言每日一题专栏缓存穿透、缓存击穿、缓存雪崩解决方案?缓存穿透:指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。解决方案:1.查询返回的数据为空,仍把这个空结果进行缓存,但过期时间会比较短;2.布隆过滤器:将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个

2020-12-02 23:00:53 90

原创 2020-12-01:什么是CAS?

2020-12-01:什么是CAS? 前言什么是CAS?前言每日一题专栏什么是CAS?CAS操作包含三个操作数——内存位置(V),预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器将会自动将该位置值更新为新值,否则,不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。...

2020-12-01 22:43:44 134

原创 2020-11-30:seata分布式事务的原理?

2020-11-30:seata分布式事务的原理? 前言seata分布式事务的原理?前言每日一题专栏seata分布式事务的原理?Seata 内部定义了 3个模块来处理全局事务和分支事务的关系和处理过程,这三个组件分别是:•Transaction Coordinator (TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。•Transaction Manager ™:控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。•Resource

2020-11-30 23:09:30 123 1

原创 2020-11-29:什么是Tomcat的Valve?

2020-11-29:什么是Tomcat的Valve? 前言什么是Tomcat的Valve?前言每日一题专栏什么是Tomcat的Valve?在一个大的组件中直接处理这些繁杂的逻辑处理,使用管道(pipeline)可以把把多个对象连接起来,而Valve(阀门)整体看起来就像若干个阀门嵌套在管道中,而处理逻辑放在阀门上。管道(Pipeline)就像一个工厂中的生产线,负责调配工人(valve)的位置,valve则是生产线上负责不同操作的工人。...

2020-11-29 21:57:56 138

原创 2020-11-28::Mysql集群的可行方案有哪些?

2020-11-28::Mysql集群的可行方案有哪些? 前言Mysql集群的可行方案有哪些?前言每日一题专栏Mysql集群的可行方案有哪些?1)MySQL Cluster由Mysql本身提供,优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以不推荐。2)DRBD磁盘网络镜像方案Distributed Replicated BlockDevice,其实现方式是通过网络来镜像整个

2020-11-28 23:08:45 163

原创 2020-11-27::Tomcat有几种部署方式?

2020-11-27::Tomcat有几种部署方式? 前言Tomcat有几种部署方式?前言每日一题专栏Tomcat有几种部署方式?利用Tomcat的自动部署:把web应用拷贝到webapps目录。Tomcat在启动时会加载目录下的应用,并将编译后的结果放入work目录下。使用Manager App控制台部署:在tomcat主页点击“Manager App” 进入应用管理控制台,可以指定一个web应用的路径或war文件。修改conf/server.xml文件部署:修改conf/se

2020-11-27 23:43:44 178

原创 并发编程-可重入锁

并发编程-可重入锁可重入锁与不可重入锁概念重入锁代码实例synchronized重入锁ReentrantLock重入锁重入锁区别可重入锁与不可重入锁概念可重入锁就是说某个线程已经获得某个锁,可以再次获得再换个锁,而不会出现死锁现象。不可重入锁就是线程获取到了某个锁后,再次尝试获取锁的时候,将会被阻塞,获取不到锁,容易出现死锁现象。重入锁代码实例synchronized重入锁运行代码/** * @version 1.0 * @Description 重入锁demo * @Author wb

2020-11-27 17:48:54 62

原创 2020-11-26:当某个服务接口并发量抗不住时,你第一反应是什么方案,为什么?

2020-11-26:当某个服务接口并发量抗不住时,你第一反应是什么方案,为什么? 前言当某个服务接口并发量抗不住时,你第一反应是什么方案,为什么?前言每日一题专栏当某个服务接口并发量抗不住时,你第一反应是什么方案,为什么?缓存方案/静态化方案,它能轻松百倍提升吞吐量,效果最明显...

2020-11-26 22:58:46 238 1

原创 2020-11-25:在文字处理软件中,需要快速检查一个英语单词是否拼写正确,应该用什么算法?

2020-11-25:在文字处理软件中,需要快速检查一个英语单词是否拼写正确,应该用什么算法? 前言在文字处理软件中,需要快速检查一个英语单词是否拼写正确,应该用什么算法?前言每日一题专栏在文字处理软件中,需要快速检查一个英语单词是否拼写正确,应该用什么算法?布隆过滤器算法,它是一个空间效率极高的概率型算法;它实际上是一个很长的二进制向量和一系列随机映射函数;可以用于快速检索一个元素是否在一个集合中;针对文字处理软件,可以先把所有的英文单词存入布隆过滤器中,每写完一个单词,从布隆过滤器中迅速判断

2020-11-25 23:43:25 256

原创 2020-11-24:JVM中的对象和类锁是怎么实现的?

2020-11-24:JVM中的对象和类锁是怎么实现的? 前言JVM中的对象和类锁是怎么实现的?前言每日一题专栏JVM中的对象和类锁是怎么实现的?JVM锁与每个对象和类相关联。锁就像一个特权,任何时候只有一个线程可以“拥有”。如果线程想要锁定特定对象或类,它会询问JVM。在线程向JVM发出锁定之后JVM会为线程提供锁定。当线程不再需要锁时,它会将锁归还给JVM。如果另一个线程请求了相同的锁,则JVM将锁传递给另外一个线程。...

2020-11-24 23:05:15 102

原创 深入理解JVM(四)JVM内存模型细讲之堆

深入理解JVM(四)JVM内存模型细讲之堆 前言堆细讲堆大小参数:内存溢出堆空间分代划分前言上文就讲了JVM内存的五部分,Java方法区、Java栈、Native方法区、Java堆和程序计数器本文就详细详解下堆细讲堆是 JVM 上最大的内存区域,我们申请的几乎所有的对象,都是在这里存储的。我们常说的垃圾回收,操作的对象就是堆。堆空间一般是程序启动时,就申请了,但是并不一定会全部使用。堆一般设置成可伸缩的。 随着对象的频繁创建,堆空间占用的越来越多,就需要不定期的对不再使用的对象进行回收。这个在

2020-11-23 22:06:06 144

原创 2020-11-23:HotSpot为什么要把堆空间分为新生代和老年代?

2020-11-23:HotSpot为什么要把堆空间分为新生代和老年代? 前言HotSpot为什么要把堆空间分为新生代和老年代?前言每日一题专栏HotSpot为什么要把堆空间分为新生代和老年代?将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除

2020-11-23 21:39:26 701

原创 深入理解JVM(三)JVM内存模型细讲之虚拟机桟

深入理解JVM(三)JVM内存模型细讲之虚拟机桟 前言虚拟机桟细讲虚拟机桟构成桟帧1、 局部变量表2.、作数桟3、动态连接4、返回地址代码实例讲解前言上文就讲了JVM内存的五部分,Java方法区、Java栈、Native方法区、Java堆和程序计数器本文就详细详解下,并附带代码实例虚拟机桟细讲虚拟机桟存储的是当前线程运行java方法所需的数据,指令、返回地址指令限制 –Xss桟的大小。不同的jdk版本默认的桟大小不同。会发生栈溢出错误。里面包含了一个个的桟帧。虚拟机桟构成桟帧栈帧:

2020-11-22 23:19:56 114

原创 2020-11-22:在工作中,你会如何选择ArrayList,LinkedList呢?

2020-11-22:在工作中,你会如何选择ArrayList,LinkedList呢? 前言在工作中,你会如何选择ArrayList,LinkedList呢?前言每日一题专栏在工作中,你会如何选择ArrayList,LinkedList呢?ArrayList的底层是数组,所以在内存中的空间是连续的(指的是虚拟的空间)LinkedList的底层是双向链表在ArrayList的中间插入元素不方便,而在LinkedList的中间插入或者删除元素方便LinkedList不支持高效的随机元素访问

2020-11-22 22:05:45 126

原创 2020-11-21:请描述声明式事务底层实现的原理和流程?

2020-11-21:请描述声明式事务底层实现的原理和流程? 前言请描述声明式事务底层实现的原理和流程?前言每日一题专栏请描述声明式事务底层实现的原理和流程?其本质是通过动态代理的技术无侵入性的对方法进行了增强,JdkDynamicAopProxy是spring中AOP增强的核心入口类,在invoke中通过责任链模式加载相关的Interceptor(拦截器)对方法进行增强,比如加了@Transactional注解的方法,会通过TransactionInterceptor对方法添加事务的增强.

2020-11-21 23:43:01 138

原创 2020-11-20:说说springBoot当中的 DispatcherServlet做了什么

2020-11-20:说说springBoot当中的 DispatcherServlet做了什么 前言说说springBoot当中的 DispatcherServlet做了什么前言每日一题专栏说说springBoot当中的 DispatcherServlet做了什么这个问题可复杂了,简单说DispatcherServlet的init方法里面load了springmvc的配置信息,然后初始化了spring容器(调用了refresh方法),把controller的信息缓存了,比如映射信息;然后Dis

2020-11-20 23:31:17 310

原创 2020-11-19:JDK1.8新增了哪些特性?

2020-11-19:JDK1.8新增了哪些特性? 前言JDK1.8新增了哪些特性?前言每日一题专栏JDK1.8新增了哪些特性?1,Lambda表达式2,函数式接口3,方法引用和构造器调用4,Stream API5,接口中的默认方法和静态方法6,新时间日期API...

2020-11-20 23:30:24 182

原创 问题大全(二)项目启动报错 access denied (“javax.management.MBeanTrustPermission“ “register“)

@[TOC](问题大全(二)项目启动报错 access denied (“javax.management.MBeanTrustPermission” “register”))前言这里记录下工作中遇到的问题,跟大家分享一下这次遇到的是项目启动报错,access denied (“javax.management.MBeanTrustPermission” “register”)项目启动报错,access denied (“javax.management.MBeanTrustPermission

2020-11-20 17:38:53 1749

原创 2020-11-18:java的动态代理实现的原理是什么?动态代理技术适用的场景是什么?

2020-11-18:java的动态代理实现的原理是什么?动态代理技术适用的场景是什么? 前言java的动态代理实现的原理是什么?动态代理技术适用的场景是什么?前言每日一题专栏java的动态代理实现的原理是什么?动态代理技术适用的场景是什么?java的动态代理是基于JDK中Proxy和InvocationHandler来实现的,InvocationHandler用于实现接口的方法和业务的增强,Proxy通过调用native方法在内存中生成字节码,从而生成指定接口的实现类和实例;动态代理技术适用于

2020-11-18 22:52:40 122

原创 2020-11-17:仅使用Nginx+多个Tomcat能合理解决用户并发的问题吗?为什么?

2020-11-17:仅使用Nginx+多个Tomcat能合理解决用户并发的问题吗?为什么? 前言仅使用Nginx+多个Tomcat能合理解决用户并发的问题吗?为什么?前言每日一题专栏仅使用Nginx+多个Tomcat能合理解决用户并发的问题吗?为什么?不可以, 会造成很多硬件浪费, 模块之间的耦合度非常高;...

2020-11-18 00:44:31 335

空空如也

空空如也

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

TA关注的人

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