Java
Java
做人,最重要的就是开心嘛!
你整天瘫在床上,不学习不运动,幻想天上掉馅饼,白天遇事唯唯诺诺,晚上熬夜为情伤感,怀念那点鸡毛蒜皮的小事,这样的你凭什么还认为自己自命不凡?彻底认命摆烂,和自己和解的人很快乐;时刻努力奋斗向上,和人生搏斗的人也很快乐;只有在这两种选择之间摇摆不定、意志不定的人最可悲,也最痛苦。
展开
-
Java-Comparable与Comparator
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程。原创 2024-10-22 19:04:41 · 659 阅读 · 0 评论 -
Java开发手册-设计规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档。说明:有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡而陡然增加,所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进行 double check。正例:评审内容包括存储介质选型、表结构设计能否满足原创 2022-04-26 17:04:48 · 204 阅读 · 0 评论 -
Java开发手册-工程结构-服务器
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。正例:在 linux 服务器上请通过变更/etc/sysct原创 2022-04-26 17:01:07 · 113 阅读 · 0 评论 -
Java开发手册-工程结构-二方库依赖
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】定义 GAV 遵从以下规则:1) GroupID 格式:com.{公司/BU }.业务线 [.子业务线],最多 4 级。说明:{公司/BU} 例如:alibaba/taobao/tmall/aliexpress 等 BU 一级;子业务线可选。正例:com.taobao.jstorm 或 com.alibaba.dubbo.regist原创 2022-04-26 16:59:22 · 338 阅读 · 0 评论 -
Java开发手册-工程结构-应用分层
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于 Web 层,也可以直接依赖于 Service 层,依此类推: 开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制等。 终端显示层:各个端的模板渲染并执行显示的层。当前主要是 veloc原创 2022-04-25 09:45:11 · 672 阅读 · 0 评论 -
Java开发手册-MySQL数据库-ORM映射
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。说明:1)增加查询分析器解析成本。2)增减字段容易与 resultMap 配置不一致。3)无用字段增加网络消耗,尤其是 text 类型的字段。2. 【强制】POJO 类的布尔属性不能加 is,而数据库字段必须加 is_,要求在 resultMap 中进行字段与属性原创 2022-04-25 09:42:56 · 364 阅读 · 0 评论 -
Java开发手册-MySQL数据库-SQL语句
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】不要使用 count(列名)或 count(常量)来替代 count(*),count(*)是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。2. 【强制】count(distinct c原创 2022-04-25 09:41:31 · 248 阅读 · 0 评论 -
Java开发手册-MySQL数据库-索引规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。2. 【强制】超过三个表禁止 join。需要 join 的字段,数据类型必须原创 2022-04-25 09:40:05 · 200 阅读 · 0 评论 -
Java开发手册-MySQL数据库-建表规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)。说明:任何字段如果为非负数,必须是 unsigned。注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀,所以,需要在<resultMap>设置从 is_xxx 到 Xxx 的映射关系。数原创 2022-04-27 10:57:38 · 274 阅读 · 1 评论 -
Java开发手册-安全规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容、修改他人的订单。2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。说明:中国大陆个人手机号码显示为:158****9119,隐藏中间 4 位,防止隐私泄露。3. 【强制】用户输原创 2022-04-25 09:36:00 · 332 阅读 · 0 评论 -
Java开发手册-单元测试
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】好的单元测试必须遵守 AIR 原则。说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。 A:Automatic(自动化) I:Independent(独立性) R:Repeatable(可重复)2. 【强制原创 2022-04-25 09:31:37 · 544 阅读 · 0 评论 -
Java开发手册-异常日志-日志规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架 SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。import org.slf4j.Logger;import org.slf4j.LoggerFactory;private static final Logg原创 2022-04-27 10:44:34 · 312 阅读 · 0 评论 -
Java开发手册-异常日志-异常处理
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】Java 类库中定义的可以通过预检查方式规避的 RuntimeException 异常不应该通过catch 的方式来处理,比如:NullPointerException,IndexOutOfBoundsException 等等。说明:无法通过预检查的异常除外,比如,在解析字符串形式的数字时,不得不通过 catchNumberForma原创 2022-04-27 10:39:17 · 334 阅读 · 0 评论 -
Java开发手册-编程规约-其它
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。说明:不要在方法体内定义:Pattern pattern = Pattern.compile(“规则”);2. 【强制】velocity 调用 POJO 类的属性时,建议直接使用属性名取值即可,模板引擎会自动按规范调用 POJO 的 getXxx(),如果是 boole原创 2022-04-27 10:34:49 · 363 阅读 · 0 评论 -
Java开发手册-编程规约-注释规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用// xxx 方式。说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。2. 【强制】所原创 2022-04-24 19:56:02 · 195 阅读 · 0 评论 -
Java开发手册-编程规约-控制语句
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使空代码。2. 【强制】在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免原创 2022-04-24 19:54:17 · 158 阅读 · 0 评论 -
Java开发手册-编程规约-并发处理
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。说明:资源驱动类、工具类、单例工厂类都需要注意。2. 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。正例:public class TimerTaskThread extends Thread {public TimerTaskThread() {sup原创 2022-04-24 19:50:45 · 168 阅读 · 0 评论 -
Java开发手册-编程规约-集合处理
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要重写 equals,就必须重写 hashCode。2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写这两个方法。3) 如果自定义对象作为 Map 的键,那么必须重写 hashCode 和 e原创 2022-04-24 11:20:38 · 191 阅读 · 1 评论 -
Java开发手册-编程规约-OOP规约
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。2. 【强制】所有的覆写方法,必须加@Override 注解。说明:getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行原创 2022-04-24 11:17:20 · 222 阅读 · 0 评论 -
Java开发手册-编程规约-代码格式
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:1) 左大括号前不换行。2) 左大括号后换行。3) 右大括号前换行。4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。2. 【强制】左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格;而左大括号前需原创 2022-04-24 11:13:33 · 312 阅读 · 0 评论 -
Java开发手册-编程规约-常量定义
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。反例:String key = "Id#taobao_" + tradeId;cache.put(key, value);2. 【强制】在 long 或者 Long 赋值时,数值后使用大写的 L,不能是小写的 l,小写容易跟数字1 混淆,造成误解。说明:Long a = 2l原创 2022-04-24 11:10:32 · 212 阅读 · 0 评论 -
Java开发手册-编程规约-命名风格
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name / __name / $name / name_ / name$ / name__2. 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式原创 2022-04-24 11:06:41 · 240 阅读 · 0 评论 -
子数组最大累加和问题(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netpackage live.every.day.Programming.Array;/** * 题目: * 子数组最大累加和问题。 * * 思路: * 从左到右遍历数组。 * * @author Created by LiveEveryDay */public class SubarrayMaxSum { public sta原创 2022-01-31 09:06:04 · 499 阅读 · 0 评论 -
根据统计字符串获取字符(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netpackage live.every.day.Programming.String;/** * 题目: * 根据统计字符串获取字符。 * * 思路: * 布尔型变量stage:true表示目前处在遇到字符的阶段,false表示目前处在遇到连续字符统计的阶段。 * 字符型变量cur:表示在上一个遇到字符阶段时,遇到的是cur字符。 * 整型变原创 2022-01-23 21:15:43 · 499 阅读 · 0 评论 -
判断一个无重复值的整型数组是否是搜索二叉树后序遍历的结果(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netpackage live.every.day.DataStructure.Tree;/** * 题目: * 判断一个无重复值的整型数组是否是搜索二叉树后序遍历的结果。 * * 思路: * 递归。 * * @author Created by LiveEveryDay */public class IsIntArrayBSTPostOr原创 2022-01-16 17:04:54 · 100 阅读 · 0 评论 -
Algorithm - Heap Sort(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netpackage live.every.day.Algorithm.Sort;import java.util.Arrays;/** * @author LiveEveryDay * * Introduction: * Heap Sort is a kind of selection sort. * * Basic Thought: *.原创 2019-03-23 15:18:35 · 38651 阅读 · 0 评论 -
Algorithm - Merge Sort(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netpackage live.every.day.Algorithm.Sort;import java.util.Arrays;/** * @author LiveEveryDay * * Introduction: * Merge Sort is built on Merge operation, * it is a typical app.原创 2019-03-23 15:45:08 · 35224 阅读 · 0 评论 -
Algorithm - Quick Sort(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netpackage live.every.day.Algorithm.Sort;import java.util.Arrays;/** * @author LiveEveryDay * <p> * Basic Thought: * <p> * Quick Sort: * Split the sequence into.原创 2019-03-23 14:44:53 · 38830 阅读 · 0 评论 -
Java-JVM调优经验
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netJVM配置方面,一般情况可以先用默认配置(基本的一些初始参数可以保证一般的应用跑的比较稳定了),在测试中根据系统运行状况(会话并发情况、会话时间等),结合GC日志、内存监控、使用的垃圾收集器等进行合理的调整,当老年代内存过小时可能引起频繁Full GC,当内存过大时Full GC时间会特别长。那么JVM的配置比如新生代、老年代应该配置多大最合适呢?答案是不原创 2022-01-11 08:35:21 · 313 阅读 · 0 评论 -
Java-分布式锁的实现方式
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net分布式锁的三种实现方式:基于数据库实现分布式锁; 基于缓存(Redis等)实现分布式锁; 基于Zookeeper实现分布式锁。一、基于数据库实现分布式锁1、悲观锁利用 select … where … for update 排他锁。注意:其他附加功能与实现基本一致,这里需要注意的是“where name=lock”,name字段必须要走索原创 2022-01-08 09:18:29 · 23007 阅读 · 0 评论 -
Java-如何创建线程池
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net1、为什么要用线程池?线程池提供了一种限制和管理资源(包括执行一个任务)。每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java并发编程的艺术》,来说一下使用线程池的好处:降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管原创 2022-01-07 10:37:00 · 4461 阅读 · 0 评论 -
Java-堆、栈、常量池的区别
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net堆:Java的堆是一个运行时数据区,类的对象从堆中分配空间。这些对象通过new指令建立,通过垃圾回收器来销毁。堆的优势是可以动态地分配内存空间,需要多少内存空间不必事先告诉编译器,因为它是在运行时动态分配的。但缺点是,由于需要在运行时动态分配内存,所以存取速度较慢。栈:栈中主要存放一些基本数据类型的变量(byte、short、int、long、原创 2022-01-06 13:38:47 · 1145 阅读 · 0 评论 -
Python的多线程与Java的多线程有什么区别
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netPython中的多线程是单CPU意义上的多线程,它和多CPU上的多线程有着本质的区别,这是因为Python中存在着一个叫Global Interpreter Lock(GIL)全局解释器锁。在解释器执行任何Python代码时,都需要先获取这把锁,即,同一时刻内只有一条线程可以在CPU中运行。但Python多线程并不是毫无用处,在IO操作时会释放这把GIL锁,原创 2022-01-06 12:25:38 · 1836 阅读 · 0 评论 -
程序设计-字符串转成整型(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netpackage live.every.day.Programming;/** * 字符串转成整型。 * * @author Created by LiveEveryDay */public class Str2Int { public static void main(String[] args) { System.原创 2022-01-05 21:10:51 · 897 阅读 · 0 评论 -
Java-如何防范CSRF攻击
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netCSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造,也被称为:one click attack / session riding,缩写为:CSRF/XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的原创 2022-01-02 14:32:46 · 4206 阅读 · 0 评论 -
Java-如何防止XSS攻击
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netXSS攻击通常指的是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页的程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和co原创 2022-01-02 14:12:33 · 7830 阅读 · 0 评论 -
Java-如何避免SQL注入漏洞
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1、简单又有效的方法是使用PreparedStatement采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX(如:setString)方法传值即可。好处:(1).代码的可读性和可维护性变好。(2).PreparedStatement尽最大可能提高性能。(3).最重要的一点是极大地提高了安全性。原理:SQL注入只对SQL语句原创 2022-01-02 10:30:09 · 2298 阅读 · 2 评论 -
Spring-IoC、AOP和动态代理之间的原理和关系
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net1、类加载器加载class文件。2、加载到JVM中,obtainFreshBeanFactory()里的refreshBeanFactory()来为每个bean生成一个BeanDefinition,注意此时不是我们想要的对象,只是Bean的信息,依赖关系等,后续Spring解析器去解析一个BeanDefinition。3、BeanDefinition信息注原创 2022-01-02 10:05:07 · 426 阅读 · 0 评论 -
Java-Tomcat Connector有几种运行模式
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net一、BIO(Blocking I/O)即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(也就是java.io包及其子包对象),是基于JAVA的HTTP/1.1连接器,Tomcat7及以下版本在默认情况下是以bio模式运行的。一般而言,bio模式运行时,当并发量高时,线程数较多,浪费资源。bio是三种运行模式中性能最低的一种。在这里顺原创 2022-01-01 22:08:00 · 508 阅读 · 1 评论 -
Java-Tomcat如何修改端口号
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netTomcat修改端口配置在实际生产中很常见,因为服务器端口限制,大多数我们不会使用8080端口去访问Tomcat。1)找到Tomcat目录下的conf文件夹。2)进入conf文件夹里面找到server.xml文件。3)打开server.xml文件。4)在server.xml文件里面找到<Server>这个标签,<Server>它原创 2022-01-01 20:08:02 · 2139 阅读 · 0 评论