07 2020 档案

摘要:使用命令 repquota 能够显示出一个文件系统的配额信息 【附】只有 root 用户才能够查看其它用户的配额。 阅读全文
posted @ 2020-07-21 22:33 咔啡 阅读(455) 评论(0) 推荐(0)
摘要:不,Spring框架中的单例bean不是线程安全的。 阅读全文
posted @ 2020-07-21 21:16 咔啡 阅读(558) 评论(0) 推荐(0)
摘要:大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的轻量级容器的思想。声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。 阅读全文
posted @ 2020-07-21 19:57 咔啡 阅读(121) 评论(0) 推荐(0)
摘要:Spring对数据访问对象(DAO)的支持旨在简化它和数据访问技术如JDBC,Hibernate or JDO 结合使用。这使我们可以方便切换持久层。编码时也不用担心会捕获每种技术特有的异常。 阅读全文
posted @ 2020-07-21 18:54 咔啡 阅读(121) 评论(0) 推荐(0)
摘要:1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML标签,支持编写动态 SQL 语句,并可重用。 2、与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码 阅读全文
posted @ 2020-07-21 18:52 咔啡 阅读(182) 评论(0) 推荐(0)
摘要:都有哪些映射形式? 第一种是使用<resultMap>标签,逐一定义数据库列名和对象属性名之间的映射关系。 第二种是使用 sql 列的别名功能,将列的别名书写为对象属性名。 有了列名与属性名的映射关系后,Mybatis 通过反射创建对象,同时使用反射给 对象的属性逐一赋值并返回,那些找不到映射关系的 阅读全文
posted @ 2020-07-21 18:49 咔啡 阅读(2121) 评论(0) 推荐(0)
摘要:有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在 resultMap 里面配置 association 节点配置一对一的类就可以完成; 嵌套查询是先查一个表,根据这个表里面的结果的 外键 id,去再另外一个表里面 查询数据,也是通过 association 配置,但另外一个表的查 阅读全文
posted @ 2020-07-21 18:44 咔啡 阅读(291) 评论(0) 推荐(0)
摘要:接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑 定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可 以有更加灵活的选择和设置。 接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上 @Select、@Up 阅读全文
posted @ 2020-07-21 18:27 咔啡 阅读(465) 评论(0) 推荐(0)
摘要:在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud co 阅读全文
posted @ 2020-07-21 18:26 咔啡 阅读(231) 评论(0) 推荐(0)
摘要:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。 阅读全文
posted @ 2020-07-21 16:52 咔啡 阅读(202) 评论(0) 推荐(1)
摘要:可以点对点直连,修改配置即可,也可以通过 telnet 直接某个服务。 阅读全文
posted @ 2020-07-21 16:47 咔啡 阅读(245) 评论(0) 推荐(1)
摘要:服务直接的调用,比如在高并发情况下出现进程阻塞,导致当前线程不可用,慢慢的全部线程阻塞,导致服务器雪崩。服务熔断:相当于保险丝,出现某个异常,直接熔断整个服务,而不是一直等到服务超时。通过维护一个自己的线程池,当线程到达阈值的时候就启动服务降级,如果其他请求继续访问就直接返回fallback的默认值 阅读全文
posted @ 2020-07-21 14:59 咔啡 阅读(1563) 评论(0) 推荐(0)
摘要:在计算中,负载均衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载均衡旨在优化资源使用,最大吞吐量,最小响应时间并避免任何单一资源的过载。使用多个组件进行负载均衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多 阅读全文
posted @ 2020-07-21 14:18 咔啡 阅读(219) 评论(0) 推荐(0)
摘要:Servlet3.0相对于Servlet2.0来说最大的改变是引入了Annotation标注来取代xml配置,用于简化web应用的开发和部署。最主要几项特性: 1. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 we 阅读全文
posted @ 2020-07-21 14:10 咔啡 阅读(117) 评论(0) 推荐(0)
摘要:熔断机制是应对雪崩效应的一种微服务链路保护机制。当某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现,Hystrix会监控微服务间调用 阅读全文
posted @ 2020-07-21 13:50 咔啡 阅读(3322) 评论(0) 推荐(0)
摘要:1、Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同; 2、Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同; 3、Mapper 接口方法的输出参数类型和 mapper.xml 中定义 阅读全文
posted @ 2020-07-20 20:01 咔啡 阅读(891) 评论(0) 推荐(0)
摘要:微服务架构中的架构师扮演以下角色: 决定整个软件系统的布局。 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。 与开发人员共同编写代码,了解日常生活中面临的挑战。 为开发微服务的团队提供某些工具和技术的建议。 提供技术治理,以便技术开发团队遵循微服务原则。 阅读全文
posted @ 2020-07-20 19:57 咔啡 阅读(387) 评论(0) 推荐(0)
摘要:Mike Cohn 提供了一个名为 Test Pyramid 的模型。这描述了软件开发所需的自 动化测试类型。 根据金字塔,第一层的测试数量应该最高。在服务层,测试次数应小于单元测试 级别,但应大于端到端级别。 阅读全文
posted @ 2020-07-20 19:33 咔啡 阅读(336) 评论(0) 推荐(0)
摘要:虽然两者都是用来暂停当前运行的线程,但是 sleep() 实际上只是短暂停顿,因 为它不会释放锁,而 wait() 意味着条件等待,这就是为什么该方法要释放锁,因 为只有这样,其他等待的线程才能在满足条件时获取到该锁。 阅读全文
posted @ 2020-07-20 19:31 咔啡 阅读(189) 评论(0) 推荐(1)
摘要:答Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数 据写入磁盘。所以 redis 具有快速和数据持久化的特征。如果不将数据放在内存中, 磁盘 I/O 速度为严重影响 redis 的性能。在内存越来越便宜的今天,redis 将会越 来越受欢迎。如果设置了最大使用的内存,则数据 阅读全文
posted @ 2020-07-20 19:27 咔啡 阅读(811) 评论(0) 推荐(0)
摘要:注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在Spring配置文件中配置 元素。 阅读全文
posted @ 2020-07-20 19:22 咔啡 阅读(208) 评论(0) 推荐(0)
摘要:这个问题比较系统,回答出 kafka 的系统特点,leader 和 follower 的关系,消息 读写的顺序即可。 阅读全文
posted @ 2020-07-20 18:54 咔啡 阅读(333) 评论(0) 推荐(0)
摘要:Spring Boot 的优点有: 1、减少开发,测试时间和努力。 2、使用 JavaConfig 有助于避免使用 XML。 3、避免大量的 Maven 导入和各种版本冲突。 4、提供意见发展方法。 5、通过提供默认值快速开始开发。 6、没有单独的 Web 服务器需要。这意味着你不再需要启动 Tom 阅读全文
posted @ 2020-07-20 18:52 咔啡 阅读(2365) 评论(0) 推荐(0)
摘要:我们知道拥有自己的数据库的每个微服务都是一个可独立部署的程序单元,这反 过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的 状态和事件。 例如,我们可以定义 Order 微服务。订单可以具有不同的状态。Order 状态的转 换可以是 Order 微服务中的独立事件。 阅读全文
posted @ 2020-07-20 18:30 咔啡 阅读(281) 评论(0) 推荐(0)
摘要:有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在 resultMap 里面的 collection 节点配置一对多的类就可以完成;嵌套查询是先查 一个表,根据这个表里面的 结果的外键 id,去再另外一个表里面查询数据,也是通过 配置 collection,但另外一个表的查询通过 s 阅读全文
posted @ 2020-07-20 17:38 咔啡 阅读(429) 评论(0) 推荐(1)
摘要:常用命令:ls get set create delete 等。 阅读全文
posted @ 2020-07-20 17:30 咔啡 阅读(195) 评论(0) 推荐(0)
摘要:1、服务间高度解耦 2、异步通信性能高 3、流量削峰 阅读全文
posted @ 2020-07-20 16:17 咔啡 阅读(242) 评论(0) 推荐(0)
摘要:由于 TCP 连接的创建和销毁开销较大,且并发数受系统资源限制,会造成性能瓶 颈。RabbitMQ 使用信道的方式来传输数据。信道是建立在真实的 TCP 连接内的 虚拟连接,且每条 TCP 连接上的信道数量没有限制。 阅读全文
posted @ 2020-07-20 16:04 咔啡 阅读(260) 评论(0) 推荐(0)
摘要:insert 方法总是返回一个 int 值 ,这个值代表的是插入的行数。 如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中。 示例: <insert id=”insertname” usegeneratedkeys=”true” keyproperty=” 阅读全文
posted @ 2020-07-20 07:50 咔啡 阅读(509) 评论(0) 推荐(0)
摘要:UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式。是一种粗 粒度的文件系统权限控制模式。 ACL(Access Control List)访问控制列表 包括三个方面: 权限模式(Scheme) 1、IP:从 IP 地址粒度进行权 阅读全文
posted @ 2020-07-20 07:48 咔啡 阅读(247) 评论(0) 推荐(0)
摘要:第 1 种:在 Java 代码中添加 sql 通配符。 string wildcardname = “%smi%”; list<name> names = mapper.selectlike(wildcardname); <select id=”selectlike”> select * from 阅读全文
posted @ 2020-07-20 07:46 咔啡 阅读(836) 评论(0) 推荐(1)
摘要:有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在 resultMap 里面的 collection 节点配置一对多的类就可以完成;嵌套查询是先查 一个表,根据这个表里面的 结果的外键 id,去再另外一个表里面查询数据,也是通过 配置 collection,但另外一个表的查询通过 s 阅读全文
posted @ 2020-07-20 07:43 咔啡 阅读(515) 评论(0) 推荐(0)
摘要:1、第一种: DAO 层的函数 public UserselectUser(String name,String area); 对应的 xml,#{0}代表接收的是 dao 层中的第一个参数,#{1}代表 dao 层中第二 参数,更多参数一致往后加即可。 <select id="selectUser 阅读全文
posted @ 2020-07-20 07:41 咔啡 阅读(6067) 评论(0) 推荐(0)
摘要:何为同步容器:可以简单地理解为通过 synchronized 来实现同步的容器,如果有 多个线程调用同步容器的方法,它们将会串行执行。比如 Vector,Hashtable, 以及 Collections.synchronizedSet,synchronizedList 等方法返回的容器。 可以通过 阅读全文
posted @ 2020-07-20 07:38 咔啡 阅读(298) 评论(0) 推荐(0)
摘要:Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出 业务上的改变。 工作机制: 1、客户端注 阅读全文
posted @ 2020-07-20 07:33 咔啡 阅读(313) 评论(0) 推荐(0)
摘要:服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。 1、LOOKING:寻找 Leader 状态。当服务器处于该状态时,它会认为当前集群中 没有 Leader,因此需要进入 Leader 选举状态。 2、FOLLOWING:跟随者状态。表明当前服务器 阅读全文
posted @ 2020-07-20 07:24 咔啡 阅读(592) 评论(0) 推荐(0)
摘要:<resultMap>、<parameterMap>、<sql>、<include>、 <selectKey>,加上动态 sql 的 9 个标签,其中<sql>为 sql 片段标签,通过 <include>标签引入 sql 片段,<selectKey>为不支持自增的主键生成策略标 签。 阅读全文
posted @ 2020-07-20 07:20 咔啡 阅读(632) 评论(0) 推荐(0)
摘要:zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被 提出的时候加上了 zxid,zxid 实际上是一个 64 位的数字,高 32 位是 epoch(时 期; 纪元; 世; 新时代)用来标识 leader 周期,如果有新的 leader 产生出来,epoch 阅读全文
posted @ 2020-07-20 07:17 咔啡 阅读(243) 评论(0) 推荐(1)
摘要:Callable 接口类似于 Runnable,从名字就可以看出来了,但是 Runnable 不会返 回结果,并且无法抛出返回结果的异常,而 Callable 功能更强大一些,被线程执 行后,可以返回值,这个返回值可以被 Future 拿到,也就是说,Future 可以拿到 异步执行任务的返回值。 阅读全文
posted @ 2020-07-20 07:10 咔啡 阅读(186) 评论(0) 推荐(1)
摘要:有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在 resultMap 里面配置 association 节点配置一对一的类就可以完成; 嵌套查询是先查一个表,根据这个表里面的结果的 外键 id,去再另外一个表里面 查询数据,也是通过 association 配置,但另外一个表的查 阅读全文
posted @ 2020-07-20 06:56 咔啡 阅读(814) 评论(0) 推荐(0)
摘要:不是。官方声明:一个 Watch 事件是一个一次性的触发器,当被设置了 Watch 的数据发生了改变的时候,则服务器将这个改变发送给设置了 Watch 的客户端, 以便通知它们。 为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况 下,每次变动都要通知到所有的客户端,给网络和服务 阅读全文
posted @ 2020-07-20 06:55 咔啡 阅读(549) 评论(0) 推荐(1)
摘要:根据 Martin Flower 的说法,合同测试是在外部服务边界进行的测试,用于验证 其是否符合消费服务预期的合同。 此外,合同测试不会深入测试服务的行为。更确切地说,它测试该服务调用的输 入&输出包含所需的属性和所述响应延迟,吞吐量是允许的限度内。 阅读全文
posted @ 2020-07-19 18:58 咔啡 阅读(245) 评论(0) 推荐(0)
摘要:查看所有 env 查看某个,如 home: env $HOME 阅读全文
posted @ 2020-07-19 18:56 咔啡 阅读(355) 评论(0) 推荐(0)
摘要:跨功能测试是对非功能性需求的验证,即那些无法像普通功能那样实现的需求。 阅读全文
posted @ 2020-07-19 18:54 咔啡 阅读(227) 评论(0) 推荐(0)
摘要:kill -l 阅读全文
posted @ 2020-07-19 18:52 咔啡 阅读(191) 评论(0) 推荐(0)
摘要:Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加 载,association 指的就是一对一,collection 指的就是一对多查询。在 Mybatis 配置文件中,可以配置是否启用延迟加载 lazyLoadingEnabled=true|fa 阅读全文
posted @ 2020-07-19 18:51 咔啡 阅读(319) 评论(0) 推荐(0)
摘要:服务失效踢出基于 zookeeper 的临时节点原理。 阅读全文
posted @ 2020-07-19 18:49 咔啡 阅读(474) 评论(0) 推荐(0)
摘要:Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加 载,association 指的就是一对一,collection 指的就是一对多查询。在 Mybatis 配置文件中,可以配置是否启用延迟加载 lazyLoadingEnabled=true|fa 阅读全文
posted @ 2020-07-19 18:47 咔啡 阅读(258) 评论(0) 推荐(0)
摘要:答案: ifconfig 阅读全文
posted @ 2020-07-19 18:45 咔啡 阅读(944) 评论(0) 推荐(0)
摘要:#{}是预编译处理,${}是字符串替换。 Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值; Mybatis 在处理${}时,就是把${}替换成变量的值。 使用#{}可以有效的防止 SQL 注入,提高系统安全性。 阅读全文
posted @ 2020-07-19 18:42 咔啡 阅读(1302) 评论(0) 推荐(0)
摘要:PACT 是一个开源工具,允许测试服务提供者和消费者之间的交互,与合同隔离, 从而提高微服务集成的可靠性。 微服务中的用法 用于在微服务中实现消费者驱动的合同。 测试微服务的消费者和提供者之间的消费者驱动的合同。 查看即将到来的批次 阅读全文
posted @ 2020-07-19 18:40 咔啡 阅读(422) 评论(0) 推荐(0)
摘要:这基本上是用于开发微服务的模式,以便它们可以被外部系统使用。当我们处理 微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者。 通常,提供程序在 XML 文档中指定接口。但在消费者驱动的合同中,每个服务消 费者都传达了提供商期望的接口。 阅读全文
posted @ 2020-07-19 18:38 咔啡 阅读(312) 评论(0) 推荐(0)
摘要:语义监控,也称为 综合监控, 将自动化测试与监控应用程序相结合,以检测业 务失败因素。 阅读全文
posted @ 2020-07-19 18:35 咔啡 阅读(380) 评论(0) 推荐(1)
摘要:1、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要 程序员自己编写 Sql 语句。 2、Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常 适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但 阅读全文
posted @ 2020-07-19 18:32 咔啡 阅读(231) 评论(0) 推荐(0)
摘要:分布式事务是指单个事件导致两个或多个不能以原子方式提交的单独数据源的突 变的任何情况。在微服务的世界中,它变得更加复杂,因为每个服务都是一个工 作单元,并且大多数时候多个服务必须协同工作才能使业务成功。 阅读全文
posted @ 2020-07-19 18:31 咔啡 阅读(234) 评论(0) 推荐(0)
摘要:接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑 定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可 以有更加灵活的选择和设置。 接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上 @Select、@Up 阅读全文
posted @ 2020-07-19 18:28 咔啡 阅读(206) 评论(0) 推荐(0)
摘要:因此,批量导出导入数据并不像您想象中的那么有用。不过在一个场景倒是很有 用。如果您有大量的从不变化的数据,并且希望缓存很快热(warm)起来,批量 导入缓存数据是很有帮助的。虽然这个场景并不典型,但却经常发生,因此我们 会考虑在将来实现批量导出导入的功能。 如果一个 memcached 节点 dow 阅读全文
posted @ 2020-07-19 18:25 咔啡 阅读(289) 评论(0) 推荐(0)
摘要:Memcached 主要的 cache 机制是 LRU(最近最少用)算法+超时失效。当您存 数据到 memcached 中,可以指定该数据在缓存中可以呆多久 Which is forever, or some time in the future。如果 memcached 的内存不够用了,过期的 s 阅读全文
posted @ 2020-07-19 18:23 咔啡 阅读(171) 评论(0) 推荐(0)
摘要:zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被 提出的时候加上了 zxid,zxid 实际上是一个 64 位的数字,高 32 位是 epoch(时 期; 纪元; 世; 新时代)用来标识 leader 周期,如果有新的 leader 产生出来,epoch 阅读全文
posted @ 2020-07-19 18:21 咔啡 阅读(649) 评论(0) 推荐(0)
摘要:可以结合 zipkin 实现分布式服务追踪。 阅读全文
posted @ 2020-07-19 18:20 咔啡 阅读(498) 评论(0) 推荐(0)
摘要:表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键 引用。 阅读全文
posted @ 2020-07-19 18:18 咔啡 阅读(4279) 评论(0) 推荐(0)
摘要:Memcached 的神奇来自两阶段哈希(two-stage hash)。Memcached 就像一 个巨大的、存储了很多<key,value>对的哈希表。通过 key,可以存储或查询任意 的数据。 客户端可以把数据存储在多台 memcached 上。当查询数据时,客户端首先参考 节点列表计算出 k 阅读全文
posted @ 2020-07-18 08:25 咔啡 阅读(132) 评论(0) 推荐(1)
摘要:DRY 代表不要重复自己。它基本上促进了重用代码的概念。这导致开发和共享库, 这反过来导致紧密耦合。 阅读全文
posted @ 2020-07-17 18:13 咔啡 阅读(336) 评论(0) 推荐(0)
摘要:虽然您可以通过多种方式实现微服务,但 REST over HTTP 是实现微服务的一种 方式。REST 还可用于其他应用程序,如 Web 应用程序,API 设计和 MVC 应用程 序,以提供业务数据。 微服务是一种体系结构,其中系统的所有组件都被放入单独的组件中,这些组件 可以单独构建,部署和扩展。 阅读全文
posted @ 2020-07-17 16:49 咔啡 阅读(140) 评论(0) 推荐(0)
摘要:zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件;但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式。 阅读全文
posted @ 2020-07-17 16:16 咔啡 阅读(890) 评论(0) 推荐(0)
摘要:服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。 1、LOOKING:寻找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。 2、FOLLOWING:跟随者状态。表明当前服务器角 阅读全文
posted @ 2020-07-17 16:14 咔啡 阅读(446) 评论(0) 推荐(0)
摘要:部署模式:单机模式、伪集群模式、集群模式。 阅读全文
posted @ 2020-07-17 16:10 咔啡 阅读(465) 评论(0) 推荐(0)
摘要:Consumer 端在发起调用之前会先走 filter 链;provider 端在接收到请求时也是先走 filter 链,然后才进行真正的业务逻辑处理。 默认情况下,在 consumer 和 provider 的 filter 链中都会有 Monitorfilter。 1、MonitorFilter 阅读全文
posted @ 2020-07-17 16:08 咔啡 阅读(782) 评论(0) 推荐(0)
摘要:可以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修 改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口 名称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑 阅读全文
posted @ 2020-07-17 15:40 咔啡 阅读(218) 评论(0) 推荐(0)
摘要:默认也推荐使用 netty 框架,还有 mina。 阅读全文
posted @ 2020-07-17 15:26 咔啡 阅读(233) 评论(0) 推荐(0)
摘要:默认是阻塞的,可以异步调用,没有返回值的可以这么做。 Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。 阅读全文
posted @ 2020-07-17 15:09 咔啡 阅读(501) 评论(0) 推荐(0)
摘要:目前暂时不支持,可与通过 tcc-transaction 框架实现 介绍:tcc-transaction 是开源的 TCC 补偿性分布式事务框架 Git 地址:https://github.com TCC-Transaction 通过 Dubbo 隐式传参的功能,避免自己对业务代码的入侵。 阅读全文
posted @ 2020-07-17 15:06 咔啡 阅读(282) 评论(0) 推荐(0)
摘要:1、可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用 层来处理具体的冲突; 2、另外对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只 有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络 等原因导致写入副本失败,这样该副本被认 阅读全文
posted @ 2020-07-17 14:31 咔啡 阅读(1204) 评论(0) 推荐(1)
摘要:以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修改 为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名 称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑 阅读全文
posted @ 2020-07-17 14:24 咔啡 阅读(172) 评论(0) 推荐(0)
摘要:Spring 的 WEB 模块是构建在 application context 模块基础之上,提供一个适 合 web 应用的上下文。这个模块也包括支持多种面向 web 的任务,如透明地处理 多个文件上传请求和程序级请求参数的绑定到你的业务对象。它也有对 Jakarta Struts 的支持。 阅读全文
posted @ 2020-07-17 14:23 咔啡 阅读(475) 评论(0) 推荐(0)
摘要:Elasticsearch 提供的首个近似聚合是 cardinality 度量。它提供一个字段的基数, 即该字段的 distinct 或者 unique 值的数目。它是基于 HLL 算法的。HLL 会先对 我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到 基数。其特点是 阅读全文
posted @ 2020-07-17 13:24 咔啡 阅读(2879) 评论(0) 推荐(0)
摘要:Spring 支持两种类型的事务管理: 1、 程序化事务管理:在此过程中,在编程的帮助下管理事务。它为您提供极大 的灵活性,但维护起来非常困难。 2、 声明式事务管理:在此,事务管理与业务代码分离。仅使用注解或基于 XML 的配置来管理事务。 阅读全文
posted @ 2020-07-17 09:12 咔啡 阅读(1341) 评论(0) 推荐(0)
摘要:Memcache 客户端仅根据哈希算法来决定将某个 key 存储在哪个节点上,而不考 虑节点的内存大小。因此,您可以在不同的节点上使用大小不等的缓存。但是一 般都是这样做的:拥有较多内存的节点上可以运行多个 memcached 实例,每个 实例使用的内存跟其他节点上的实例相同。 阅读全文
posted @ 2020-07-17 08:32 咔啡 阅读(145) 评论(0) 推荐(0)
摘要:有 A,B,C 三个节点的集群,在没有复制模型的情况下,如果节点 B 失败了, 那么整个集群就会以为缺少 5501-11000 这个范围的槽而不可用。 阅读全文
posted @ 2020-07-14 22:25 咔啡 阅读(1039) 评论(0) 推荐(0)
摘要:1、删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不 能被删除或者改动以展示其变更; 2、磁盘上的每个段都有一个相应的.del 文件。当删除请求发送后,文档并没有真 的被删除,而是在.del 文件中被标记为删除。该文档依然能匹配查询,但是会在 结果中被过滤掉。当段 阅读全文
posted @ 2020-07-14 20:50 咔啡 阅读(659) 评论(0) 推荐(0)
摘要:1、Master 最好不要写内存快照,如果 Master 写内存快照,save 命令调度 rdbSave 函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性 暂停服务 2、如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一 3、为了主从复制的速度和连 阅读全文
posted @ 2020-07-14 20:02 咔啡 阅读(628) 评论(0) 推荐(0)
摘要:如果大量的 key 过期时间设置的过于集中,到过期的那个时间点,redis 可能 会出现短暂的卡顿现象。一般需要在时间上加一个随机值,使得过期时间分散一些。 阅读全文
posted @ 2020-07-14 18:33 咔啡 阅读(1080) 评论(0) 推荐(0)
摘要:synchronized 是和 if、else、for、while 一样的关键字,ReentrantLock 是类, 这是二者的本质区别。既然 ReentrantLock 是类,那么它就提供了比 synchronized 更多更灵活的特性,可以被继承、可以有方法、可以有各种各样的 类变量,Reent 阅读全文
posted @ 2020-07-14 18:27 咔啡 阅读(186) 评论(0) 推荐(0)
摘要:Redisson、Jedis、lettuce 等等,官方推荐使用 Redisson。 阅读全文
posted @ 2020-07-14 16:55 咔啡 阅读(2489) 评论(0) 推荐(0)
摘要:Memcached 最大的好处就是它带来了极佳的水平可扩展性,特别是在一个巨大的 系统中。由于客户端自己做了一次哈希,那么我们很容易增加大量 memcached 到集群中。memcached 之间没有相互通信,因此不会增加 memcached 的负载; 没有多播协议,不会网络通信量爆炸(implod 阅读全文
posted @ 2020-07-14 16:53 咔啡 阅读(436) 评论(0) 推荐(0)
摘要:所有的被发送到 memcached 的单个命令是完全原子的。如果您针对同一份数据 同时发送了一个 set 命令和一个 get 命令,它们不会影响对方。它们将被串行化、 先后执行。即使在多线程模式,所有的命令都是原子的,除非程序有 bug:) 命令序列不是原子的。如果您通过 get 命令获取了一个 i 阅读全文
posted @ 2020-07-14 16:51 咔啡 阅读(202) 评论(0) 推荐(0)
摘要:为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所 以集群使用了主从复制模型,每个节点都会有 N-1 个复制品. 阅读全文
posted @ 2020-07-14 16:48 咔啡 阅读(718) 评论(0) 推荐(0)
摘要:一个客户端运行了新的命令,添加了新的数据。Redi 检查内存使用情况,如 果大于 maxmemory 的限制, 则根据设定好的策略进行回收。一个新的命令被执 行,等等。所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断地 回收回到边界以下。如果一个命令的结果导致大量内存被使用(例如很大的集合 阅读全文
posted @ 2020-07-14 16:31 咔啡 阅读(929) 评论(0) 推荐(0)
摘要:Redis 是单进程单线程的,redis 利用队列技术将并发访问变为串行访问,消 除了传统数据库串行控制的开销。 阅读全文
posted @ 2020-07-14 16:19 咔啡 阅读(547) 评论(0) 推荐(1)
摘要:先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了 释放。 这时候对方会告诉你说你回答得不错,然后接着问如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了,那会怎么样? 这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释 阅读全文
posted @ 2020-07-14 16:11 咔啡 阅读(309) 评论(0) 推荐(0)
摘要:BLOB 是一个二进制对象,可以容纳可变数量的数据。TEXT 是一个不区分大小写 的 BLOB。 BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小 写,对 TEXT 值不区分大小写。 阅读全文
posted @ 2020-07-14 15:59 咔啡 阅读(531) 评论(0) 推荐(0)
摘要:虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率, 但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用 虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。 阅读全文
posted @ 2020-07-14 15:51 咔啡 阅读(1268) 评论(0) 推荐(0)
摘要:Jedis 是 Redis 的 Java 实现的客户端,其 API 提供了比较全面的 Redis 命令 的支持;Redisson 实现了分布式和可扩展的 Java 数据结构,和 Jedis 相比,功能 较为简单,不支持字符串操作,不支持排序、事务、管道、分区等 Redis 特性。 Redisson 阅读全文
posted @ 2020-07-14 15:35 咔啡 阅读(2016) 评论(0) 推荐(0)
摘要:MySQL 服务器通过权限表来控制用户对数据库的访问,权限表存放在 MySQL 数 据库里,由 MySQL_install_db 脚本初始化。这些权限表分别 user,db,table_priv, columns_priv 和 host。 阅读全文
posted @ 2020-07-14 14:33 咔啡 阅读(900) 评论(0) 推荐(0)
摘要:Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用, 但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。 阅读全文
posted @ 2020-07-14 14:31 咔啡 阅读(665) 评论(0) 推荐(0)
摘要:共有 5 种类型的表格: 1、MyISAM 2、Heap 3、Merge 4、INNODB 5、ISAM 阅读全文
posted @ 2020-07-14 14:23 咔啡 阅读(1668) 评论(0) 推荐(1)
摘要:这个问题与前面的类似,适配器模式和代理模式的区别在于他们的意图不同。由 于适配器模式和代理模式都是封装真正执行动作的类,因此结构是一致的,但是 适配器模式用于接口之间的转换,而代理模式则是增加一个额外的中间层,以便 支持分配、控制或智能访问。 阅读全文
posted @ 2020-07-14 14:14 咔啡 阅读(455) 评论(0) 推荐(0)
摘要:%对应于 0 个或更多字符,_只是 LIKE 语句中的一个字符。 如何在 Unix 和 MySQL 时间戳之间进行转换? UNIX_TIMESTAMP 是从 MySQL 时间戳转换为 Unix 时间戳的命令 FROM_UNIXTIME 是从 Unix 时间戳转换为 MySQL 时间戳的命令 阅读全文
posted @ 2020-07-14 13:39 咔啡 阅读(1853) 评论(0) 推荐(0)
摘要:每当行被更改时,时间戳字段将获取当前时间戳。 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况? 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。 怎样才能找出最后一次插入时分配了哪个自动增量? LAST_INSERT_ID 将返回由 Auto_incr 阅读全文
posted @ 2020-07-14 12:14 咔啡 阅读(1132) 评论(0) 推荐(0)
摘要:1、设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率。 2、选择合适的表字段数据类型和存储引擎,适当的添加索引。 3、MySQL 库主从读写分离。 4、找规律分表,减少单表中的数据量提高查询速度。 5、添加缓存机制,比如 memcached,apc 等。 6、不经常改动的页 阅读全文
posted @ 2020-07-14 11:51 咔啡 阅读(299) 评论(0) 推荐(0)
摘要:B+树,经过优化的 B+树 主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此 InnoDB 建 议为大部分表使用默认自增的主键作为主索引。 阅读全文
posted @ 2020-07-14 11:49 咔啡 阅读(377) 评论(0) 推荐(0)
摘要:1、以“%”开头的 LIKE 语句,模糊匹配 2、OR 语句前后没有同时使用索引 3、数据类型出现隐式转化(如 varchar 不加单引号的话可能会自动转换为 int 型) 阅读全文
posted @ 2020-07-14 11:46 咔啡 阅读(559) 评论(0) 推荐(0)
摘要:Spring Boot 执行程序提供了 restful Web 服务,以访问生产环境中运行应用程序 的当前状态。在执行器的帮助下,您可以检查各种指标并监控您的应用程序。 阅读全文
posted @ 2020-07-14 11:34 咔啡 阅读(442) 评论(0) 推荐(0)
摘要:List 以特定索引来存取元素,可以有重复元素。Set 不能存放重复元素(用对象的 equals()方法来区分元素是否重复)。Map 保存键值对(key-value pair)映射, 映射关系可以是一对一或多对一。Set 和 Map 容器都有基于哈希存储和排序树的 两种实现版本,基于哈希存储的版本理 阅读全文
posted @ 2020-07-14 11:15 咔啡 阅读(737) 评论(0) 推荐(0)
摘要:1、选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置 NOTNULL,例如’省份’、’性别’最好适用 ENUM2、使用连接(JOIN)来代替子查询 3、适用联合(UNION)来代替手动创建的临时表 4、事务处理 5、锁定表、优化事务处理 6、适用外键,优化锁定表 7、建立索引 8、优化查 阅读全文
posted @ 2020-07-13 17:59 咔啡 阅读(117) 评论(0) 推荐(0)
摘要:DISTINCT 在所有列上转换为 GROUP BY,并与 ORDER BY 子句结合使用。 SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a; 阅读全文
posted @ 2020-07-13 17:25 咔啡 阅读(2764) 评论(1) 推荐(0)
摘要:在缺省模式下,MySQL 是 autocommit 模式的,所有的数据库更新操作都会即时 提交,所以在缺省情况下,MySQL 是不支持事务的。 但是如果你的 MySQL 表类型是使用 InnoDB Tables 或 BDB tables 的话,你的 MySQL 就可以使用事务处理,使用 SET AU 阅读全文
posted @ 2020-07-13 16:56 咔啡 阅读(1342) 评论(0) 推荐(0)
摘要:AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角. 在 OOP 中, 我们以类(class)作为我们的基 本单元, 阅读全文
posted @ 2020-07-13 16:48 咔啡 阅读(183) 评论(0) 推荐(0)
摘要:相对于 XML 文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号 的声明。 开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置, 而不是使用 xml 表述 bean 的装配关系。 阅读全文
posted @ 2020-07-13 16:46 咔啡 阅读(248) 评论(0) 推荐(0)
摘要:Spring 容器能够自动装配相互合作的 bean,这意味着容器不需要和配置,能通 过 Bean 工厂自动处理 bean 之间的协作。 阅读全文
posted @ 2020-07-13 16:32 咔啡 阅读(468) 评论(0) 推荐(0)
摘要:当一个 bean 仅被用作另一个 bean 的属性时,它能被声明为一个内部 bean,为 了定义 inner bean,在 Spring 的 基于 XML 的 配置元数据中,可以在 或 元 素内使用 元素,内部 bean 通常是匿名的,它们的 Scope 一般是 prototype。 阅读全文
posted @ 2020-07-13 16:29 咔啡 阅读(293) 评论(0) 推荐(0)
摘要:Spring 配备构建 Web 应用的全功能 MVC 框架。Spring 可以很便捷地和其他 MVC 框架集成,如 Struts,Spring 的 MVC 框架用控制反转把业务对象和控制逻 辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。 阅读全文
posted @ 2020-07-13 16:19 咔啡 阅读(189) 评论(0) 推荐(0)
摘要:Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现。Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持,它还支持属性级别的 PointCut。 阅读全文
posted @ 2020-07-13 16:00 咔啡 阅读(527) 评论(0) 推荐(0)
摘要:通过使用 JDBC 抽象和 DAO 模块,保证数据库代码的简洁,并能避免数据库资源 错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一 的异常访问层。它还利用 Spring 的 AOP 模块给 Spring 应用中的对象提供事务 管理服务。 阅读全文
posted @ 2020-07-13 13:00 咔啡 阅读(326) 评论(0) 推荐(0)
摘要:volatile 变量提供顺序和可见性保证,例如,JVM 或者 JIT 为了获得更好的性能 会对语句重排序,但是 volatile 类型变量即使在没有同步块的情况下赋值也不会 与其他语句重排序。 volatile 提供 happens-before 的保证,确保一个线程的 修改能对其他线程是可见的。 阅读全文
posted @ 2020-07-13 12:56 咔啡 阅读(276) 评论(0) 推荐(0)
摘要:一个 Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个 bean,它的生命周期详情及它的依赖。 阅读全文
posted @ 2020-07-13 12:28 咔啡 阅读(435) 评论(0) 推荐(0)
摘要:控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解 析用户输入并将其转换为一个由视图呈现给用户的模型。Spring 用一个非常抽象 的方式实现了一个控制层,允许用户创建多种用途的控制器。 阅读全文
posted @ 2020-07-13 12:16 咔啡 阅读(667) 评论(0) 推荐(0)
摘要:我们可以通过两种方式使用 Spring 访问 Hibernate: 1、 使用 Hibernate 模板和回调进行控制反转 2、 扩展 HibernateDAOSupport 并应用 AOP 拦截器节点 阅读全文
posted @ 2020-07-13 11:48 咔啡 阅读(287) 评论(0) 推荐(0)
摘要:Callable 接口类似于 Runnable,从名字就可以看出来了,但是 Runnable 不会返 回结果,并且无法抛出返回结果的异常,而 Callable 功能更强大一些,被线程执 行后,可以返回值,这个返回值可以被 Future 拿到,也就是说,Future 可以拿到 异步执行任务的返回值。 阅读全文
posted @ 2020-07-12 19:11 咔啡 阅读(852) 评论(0) 推荐(0)
摘要:线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程 的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若 干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它 要使用该资源 阅读全文
posted @ 2020-07-12 18:52 咔啡 阅读(669) 评论(0) 推荐(0)
摘要:不是,Swing 不是线程安全的。你不能通过任何线程来更新 Swing 组件,如 JTable、JList 或 JPanel,事实上,它们只能通过 GUI 或 AWT 线程来更新。 这就是为什么 Swing 提供 invokeAndWait() 和 invokeLater() 方法来获取其 他线程的 阅读全文
posted @ 2020-07-12 18:50 咔啡 阅读(485) 评论(0) 推荐(0)
摘要:List、Set 是,Map 不是。Map 是键值对映射容器,与 List 和 Set 有明显的区别, 而 Set 存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List 是线性结构的容器,适用于按数值索引访问元素的情形。 阅读全文
posted @ 2020-07-12 18:40 咔啡 阅读(785) 评论(0) 推荐(0)
摘要:当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配。Spring 容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定 在一起,同时装配 bean。 阅读全文
posted @ 2020-07-12 18:35 咔啡 阅读(1079) 评论(0) 推荐(0)
摘要:何为同步容器:可以简单地理解为通过 synchronized 来实现同步的容器,如果有 多个线程调用同步容器的方法,它们将会串行执行。比如 Vector,Hashtable, 以及 Collections.synchronizedSet,synchronizedList 等方法返回的容器。 可以通过 阅读全文
posted @ 2020-07-12 18:02 咔啡 阅读(154) 评论(0) 推荐(0)
摘要:该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的 remove()方法。这有一段示例代码,是使用正确的方式来实现在遍历的过程中移 除元素,而不会出现 ConcurrentModificationException 异常的示例代码。 阅读全文
posted @ 2020-07-12 18:00 咔啡 阅读(440) 评论(0) 推荐(0)
摘要:断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一 般来说,断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试 时开启。为了保证程序的执行效率,在软件发布后断言检查通常是关闭的。断言 是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true;如果表 达式的 阅读全文
posted @ 2020-07-12 17:48 咔啡 阅读(824) 评论(0) 推荐(0)
摘要:Java 中的 String 不可变是因为 Java 的设计者认为字符串使用非常频繁,将字 符串设置为不可变可以允许多个客户端之间共享相同的字符串。 阅读全文
posted @ 2020-07-12 17:45 咔啡 阅读(241) 评论(0) 推荐(0)
摘要:ArithmeticException(算术异常)ClassCastException (类转换异常)IllegalArgumentException (非法参数异常)IndexOutOfBoundsException (下标越界异常)NullPointerException (空指针异常)Secu 阅读全文
posted @ 2020-07-12 17:34 咔啡 阅读(486) 评论(0) 推荐(0)
摘要:Java 中的 TreeMap 是使用红黑树实现的。 阅读全文
posted @ 2020-07-12 17:30 咔啡 阅读(541) 评论(0) 推荐(0)
摘要:HashSet 的内部采用 HashMap 来实现。由于 Map 需要 key 和 value,所以 所有 key 的都有一个默认 value。类似于 HashMap,HashSet 不允许重复的 key,只允许有一个 null key,意思就是 HashSet 中只允许存储一个 null 对象。 阅读全文
posted @ 2020-07-12 17:24 咔啡 阅读(425) 评论(0) 推荐(0)
摘要:能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不 是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护, 但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护 作用了。 阅读全文
posted @ 2020-07-12 17:16 咔啡 阅读(1115) 评论(0) 推荐(0)
摘要:Collection 是一个接口,它是 Set、List 等容器的父接口;Collections 是个一个 工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、 排序、线程安全化等等。 阅读全文
posted @ 2020-07-12 17:11 咔啡 阅读(156) 评论(0) 推荐(0)
摘要:这需要根据你的经验来回答。一般情况下,你可以说依赖注入,工厂模式,装饰 模式或者观察者模式,随意选择你使用过的一种即可。不过你要准备回答接下的 基于你选择的模式的问题。 阅读全文
posted @ 2020-07-12 17:05 咔啡 阅读(438) 评论(0) 推荐(0)
摘要:线程调度器选择优先级最高的线程运行,但是,如果发生以下情况,就会终止线 程的运行: 1、线程体中调用了 yield 方法让出了对 cpu 的占用权利 2、线程体中调用了 sleep 方法使线程进入睡眠状态 3、线程由于 IO 操作受到阻塞 4、另外一个更高优先级线程出现 5)在支持时间片的系统中,该 阅读全文
posted @ 2020-07-12 16:46 咔啡 阅读(778) 评论(0) 推荐(0)
摘要:1、CountDownLatch 2、CyclicBarrier 3、Semaphore 4、Exchanger 阅读全文
posted @ 2020-07-12 16:43 咔啡 阅读(467) 评论(0) 推荐(0)
摘要:Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。 但是 int 是一个原始类型的数据,所以占用的空间更少。 阅读全文
posted @ 2020-07-12 15:51 咔啡 阅读(2334) 评论(0) 推荐(0)
摘要:IO 对 Java 应用的性能非常重要。理想情况下,你不应该在你应用的关键路径上 避免 IO 操作。下面是一些你应该遵循的 Java IO 最佳实践: a)使用有缓冲区的 IO 类,而不要单独读取字节或字符。 b)使用 NIO 和 NIO2 c)在 finally 块中关闭流,或者使用 try-wi 阅读全文
posted @ 2020-07-12 15:22 咔啡 阅读(340) 评论(0) 推荐(0)
摘要:java.lang.Cloneable 是一个标示性接口,不包含任何方法,clone 方法在 object 类中定义。并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ 或 其他本地语言实现的。 阅读全文
posted @ 2020-07-12 13:58 咔啡 阅读(444) 评论(0) 推荐(0)
摘要:不行,因为对象的 hashcode 值必须是相同的。参见答案获取更多关于 Java 中 重写 hashCode() 方法的知识。 阅读全文
posted @ 2020-07-12 13:56 咔啡 阅读(1014) 评论(0) 推荐(0)
摘要:一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量 会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。为什么? 因为 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正 在修改该 long 变量的值,另一个线程可能只能看到该 阅读全文
posted @ 2020-07-12 13:53 咔啡 阅读(373) 评论(0) 推荐(0)
摘要:线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共 享。Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方 式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心, 在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要 阅读全文
posted @ 2020-07-12 13:04 咔啡 阅读(210) 评论(0) 推荐(0)
摘要:Busy spin 是一种在不释放 CPU 的基础上等待事件的技术。它经常用于避免丢 失 CPU 缓存中的数据(如果线程先暂停,之后在其他 CPU 上运行就会丢失)。 所以,如果你的工作要求低延迟,并且你的线程目前没有任何顺序,这样你就可 以通过循环检测队列中的新消息来代替调用 sleep() 或  阅读全文
posted @ 2020-07-12 13:02 咔啡 阅读(880) 评论(0) 推荐(0)
摘要:AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。 阅读全文
posted @ 2020-07-12 12:59 咔啡 阅读(485) 评论(0) 推荐(0)
摘要:装配,或bean 装配是指在Spring 容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起。 阅读全文
posted @ 2020-07-12 12:56 咔啡 阅读(517) 评论(0) 推荐(0)
摘要:有可能,两个不相等的对象可能会有相同的 hashcode 值,这就是为什么在 hashmap 中会有冲突。相等 hashcode 值的规定只是说如果两个对象相等,必 须有相同的 hashcode 值,但是没有关于不相等对象的任何规定。 阅读全文
posted @ 2020-07-12 12:52 咔啡 阅读(1504) 评论(0) 推荐(0)
摘要:虽然适配器模式和装饰器模式的结构类似,但是每种模式的出现意图不同。适配 器模式被用于桥接两个接口,而装饰模式的目的是在不修改类的情况下给类增加 新的功能。 阅读全文
posted @ 2020-07-12 12:51 咔啡 阅读(4667) 评论(0) 推荐(0)
摘要:JRE 代表 Java 运行时(Java run-time),是运行 Java 引用所必须的。JDK 代 表 Java 开发工具(Java development kit),是 Java 程序的开发工具,如 Java 编译器,它也包含 JRE。JVM 代表 Java 虚拟机(Java virtual 阅读全文
posted @ 2020-07-12 12:48 咔啡 阅读(955) 评论(0) 推荐(0)
摘要:从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法 糖。内部实现在 switch 中使用字符串的 hash code。 30、Java 中的构造器链是什么? 当你从一个构造器中调用另一个构造器,就是 Java 中的构造器链。这种情况只在 重载了类的构造器的时 阅读全文
posted @ 2020-07-12 12:26 咔啡 阅读(817) 评论(0) 推荐(0)
摘要:Spring 通过提供 ORM 模块,支持我们在直接 JDBC 之上使用一个对象/关系映射 映射(ORM)工具,Spring 支持集成主流的 ORM 框架,如 Hiberate,JDO 和 iBATIS SQL Maps。Spring 的事务管理同样支持以上所有 ORM 框架及 JDBC。 阅读全文
posted @ 2020-07-12 12:19 咔啡 阅读(144) 评论(0) 推荐(0)
摘要:当通过 Java 命令启动 Java 进程的时候,会为它分配内存。内存的一部分用于 创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC 是 JVM 内 部的一个进程,回收无效对象的内存用于将来的分配。 阅读全文
posted @ 2020-07-12 12:17 咔啡 阅读(503) 评论(0) 推荐(0)
摘要:List 是一个有序集合,允许元素重复。它的某些实现可以提供基于下标值的常量 访问时间,但是这不是 List 接口保证的。Set 是一个无序集合。 阅读全文
posted @ 2020-07-12 10:08 咔啡 阅读(407) 评论(0) 推荐(0)
摘要:Comparable 接口用于定义对象的自然顺序,而 comparator 通常用于定义用户 定制的顺序。Comparable 总是只有一个,但是可以有多个 comparator 来定义 对象的顺序。 阅读全文
posted @ 2020-07-12 08:47 咔啡 阅读(273) 评论(0) 推荐(0)
摘要:不能,根据 hash code 的规定,这是不可能的。 阅读全文
posted @ 2020-07-12 08:44 咔啡 阅读(364) 评论(0) 推荐(0)
摘要:公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里 的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些 变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你 使用了一个内部的或第三方库中的公有编译时常量,但是这 阅读全文
posted @ 2020-07-12 08:32 咔啡 阅读(607) 评论(0) 推荐(0)
摘要:是的,我们是可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点, 不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。 最常见的例子就是对象中包含一个日期对象的引用。 阅读全文
posted @ 2020-07-12 08:07 咔啡 阅读(761) 评论(0) 推荐(0)
摘要:可以使用 String 接收 byte[] 参数的构造器来进行转换,需要注意的点是要使用 的正确的编码,否则会使用平台默认编码,这个编码可能跟原来的编码相同,也 可能不同。 阅读全文
posted @ 2020-07-12 08:02 咔啡 阅读(2069) 评论(0) 推荐(0)
摘要:如果不是特别关心内存和性能的话,使用 BigDecimal,否则使用预定义精度的 double 类型。 阅读全文
posted @ 2020-07-12 07:59 咔啡 阅读(1600) 评论(0) 推荐(0)
摘要:由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。 Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集 成和可测试性。由于依赖注入和控制反转,JDBC 得以简化。它是开源免费的。 阅读全文
posted @ 2020-07-11 21:48 咔啡 阅读(544) 评论(0) 推荐(0)
摘要:下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。 a)不要重载这样的方法:一个方法接收 int 参数,而另个方法接收 Integer 参 数。 b)不要重载参数数量一致,而只是参数顺序不同的方法。 c)如果重载的方法参数个数多于 5 个,采用可变参数。 阅读全文
posted @ 2020-07-11 21:46 咔啡 阅读(291) 评论(0) 推荐(0)
摘要:这是我在使用 Java 中 Collectionc 类的一些最佳实践: a)使用正确的集合类,例如,如果不需要同步列表,使用 ArrayList 而不是 Vector。 b)优先使用并发集合,而不是对集合进行同步。并发集合提供更好的可扩展性。 c)使用接口代表和访问集合,如使用 List 存储 Ar 阅读全文
posted @ 2020-07-11 21:42 咔啡 阅读(310) 评论(0) 推荐(0)
摘要:Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松 散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序 开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、 EJB 等,所以又称为框架的框架。 阅读全文
posted @ 2020-07-11 21:38 咔啡 阅读(1403) 评论(0) 推荐(0)
摘要:因为有强制的规范指定需要同时重写 hashcode 与 equal 是方法,许多容器类, 如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定。 阅读全文
posted @ 2020-07-11 21:34 咔啡 阅读(169) 评论(0) 推荐(0)
摘要:每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖。如果使用 XML 来描述依赖, Setter 注入的可读写会更强。经验法则是强制依赖使用构造器注入,可选依赖使用 setter 注入。 阅读全文
posted @ 2020-07-11 21:31 咔啡 阅读(1345) 评论(0) 推荐(0)
摘要:不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行。 阅读全文
posted @ 2020-07-11 21:30 咔啡 阅读(595) 评论(0) 推荐(0)
摘要:JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局 部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享, 而堆被整个 JVM 的所有线程共享。 阅读全文
posted @ 2020-07-11 21:28 咔啡 阅读(360) 评论(0) 推荐(0)
摘要:final 是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该 变量的值在初始化后不能被改变。finalize 方法是在对象被回收之前调用的方法, 给对象自己最后一个复活的机会,但是什么时候调用 finalize 没有保证。finally 是一个关键字,与 try 和 cat 阅读全文
posted @ 2020-07-11 21:27 咔啡 阅读(252) 评论(0) 推荐(0)
摘要:PriorityQueue 保证最高或者最低优先级的的元素总是在队列头部,但是 LinkedHashMap 维持的顺序是元素插入的顺序。当遍历一个 PriorityQueue 时,没有任何顺序保证,但是 LinkedHashMap 课保证遍历顺序是元素插入的顺 序。 阅读全文
posted @ 2020-07-11 21:26 咔啡 阅读(471) 评论(0) 推荐(0)
摘要:poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败 的时候会返回空,但是 remove() 失败的时候会抛出异常。 阅读全文
posted @ 2020-07-11 21:25 咔啡 阅读(1176) 评论(0) 推荐(0)
摘要:这两个类有许多不同的地方,下面列出了一部分: a) Hashtable 是 JDK 1 遗留下来的类,而 HashMap 是后来增加的。 b)Hashtable 是同步的,比较慢,但 HashMap 没有同步策略,所以会更快。 c)Hashtable 不允许有个空的 key,但是 HashMap 允 阅读全文
posted @ 2020-07-11 21:24 咔啡 阅读(265) 评论(0) 推荐(0)
摘要:是双向链表,你可以检查 JDK 的源码。在 Eclipse,你可以使用快捷键 Ctrl + T, 直接在编辑器中打开该类。 阅读全文
posted @ 2020-07-11 21:22 咔啡 阅读(3278) 评论(0) 推荐(1)
摘要:接口用于定义 API。它定义了类必须得遵循的规则。同时,它提供了一种抽象, 因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使用可随机 访问的 ArrayList,也可以使用方便插入和删除的 LinkedList。接口中不允许写 代码,以此来保证抽象,但是 Java 8 中你可以 阅读全文
posted @ 2020-07-11 21:20 咔啡 阅读(1195) 评论(0) 推荐(1)
摘要:重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动, 而重写是运行时活动。你可以在同一个类中重载方法,但是只能在子类中重写方 法。重写必须要有继承。 阅读全文
posted @ 2020-07-11 21:18 咔啡 阅读(433) 评论(0) 推荐(0)
摘要:虽然两种都可以实现代码复用,但是组合比继承共灵活,因为组合允许你在运行 时选择不同的实现。用组合实现的代码也比继承测试起来更加简单。 阅读全文
posted @ 2020-07-11 21:16 咔啡 阅读(283) 评论(0) 推荐(0)
摘要:可以使用 PowerMock 库来测试静态方法。 阅读全文
posted @ 2020-07-11 21:14 咔啡 阅读(444) 评论(0) 推荐(0)
摘要:适配器模式提供对接口的转换。如果你的客户端使用某些接口,但是你有另外一 些接口,你就可以写一个适配去来连接这些接口。 阅读全文
posted @ 2020-07-11 21:12 咔啡 阅读(497) 评论(0) 推荐(0)
摘要:组合模式使用树结构来展示部分与整体继承关系。它允许客户端采用统一的形式 来对待单个对象和对象容器。当你想要展示对象这种部分与整体的继承关系时采 用组合模式。 阅读全文
posted @ 2020-07-11 21:08 咔啡 阅读(312) 评论(0) 推荐(0)
摘要:模板方法提供算法的框架,你可以自己去配置或定义步骤。例如,你可以将排序 算法看做是一个模板。它定义了排序的步骤,但是具体的比较,可以使用 Comparable 或者其语言中类似东西,具体策略由你去配置。列出算法概要的方 法就是众所周知的模板方法。 阅读全文
posted @ 2020-07-11 21:05 咔啡 阅读(243) 评论(0) 推荐(0)
摘要:不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是 线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中 使用,如 将 SimpleDateFormat 限制在 ThreadLocal 中。如果你不这么做, 在解析或者格式化日期的时候, 阅读全文
posted @ 2020-07-11 21:03 咔啡 阅读(725) 评论(0) 推荐(0)
摘要:接口用于规范,抽象类用于共性. 声明方法的存在而不去实现它的类被叫做抽象类 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。 阅读全文
posted @ 2020-07-11 20:59 咔啡 阅读(334) 评论(0) 推荐(0)
摘要:虽然两种模式都是将对象的创建从应用的逻辑中分离,但是依赖注入比工程模式 更清晰。通过依赖注入,你的类就是 POJO,它只知道依赖而不关心它们怎么获 取。使用工厂模式,你的类需要通过工厂来获取依赖。因此,使用 DI 会比使用 工厂模式更容易测试。 阅读全文
posted @ 2020-07-11 20:55 咔啡 阅读(420) 评论(0) 推荐(0)
摘要:访问者模式用于解决在类的继承层次上增加操作,但是不直接与之关联。这种模 式采用双派发的形式来增加中间层。 阅读全文
posted @ 2020-07-11 20:52 咔啡 阅读(213) 评论(0) 推荐(0)
摘要:受检查异常编译器在编译期间检查。对于这种异常,方法强制处理或者通过 throws 子句声明。其中一种情况是 Exception 的子类但不是 RuntimeException 的子类。非受检查是 RuntimeException 的子类,在编译阶 段不受编译器的检查。 阅读全文
posted @ 2020-07-11 19:31 咔啡 阅读(719) 评论(0) 推荐(0)
摘要:Java 8 在 Java 历史上是一个开创新的版本,下面 JDK 8 中 5 个主要的特性: Lambda 表达式,允许像对象一样传递匿名函数 Stream API,充分利用现代多核 CPU,可以写出很简洁的代码 Date 与 Time API,最终,有一个稳定、简单的日期和时间库可供你使用 扩展 阅读全文
posted @ 2020-07-11 19:30 咔啡 阅读(416) 评论(0) 推荐(0)
摘要:DDD 原理 – 微服务面试问题 阅读全文
posted @ 2020-07-11 19:26 咔啡 阅读(200) 评论(0) 推荐(0)
摘要:IoC 的一些好处是:它将最小化应用程序中的代码量。它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例 或 JNDI 查找机制。它以最小的影响和最少的侵入机制促进松耦合。它支持即时的实例化和延迟加载服务。 阅读全文
posted @ 2020-07-11 19:20 咔啡 阅读(699) 评论(0) 推荐(0)
摘要:Spring 配置文件是 XML 文件。该文件主要包含类信息。它描述了这些类是如何 配置以及相互引入的。但是,XML 配置文件冗长且更加干净。如果没有正确规划 和编写,那么在大项目中管理变得非常困难。 阅读全文
posted @ 2020-07-11 19:17 咔啡 阅读(1120) 评论(0) 推荐(0)
摘要:为了创建一个 advice 对象而链接一个 aspect 和其它应用类型或对象,称为编 织(Weaving)。在 Spring AOP 中,编织在运行时执行。 阅读全文
posted @ 2020-07-11 19:13 咔啡 阅读(871) 评论(0) 推荐(0)
摘要:构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现 的,该类有一系列参数,每个参数代表一个对其他类的依赖。Setter 方法注入:Setter 方法注入是容器通过调用无参构造器或无参 static 工厂 方法实例化 bean 之后,调用该 bean 的 setter 方法,即实现了基 于 阅读全文
posted @ 2020-07-11 19:10 咔啡 阅读(922) 评论(0) 推荐(0)
摘要:开闭原则要求你的代码对扩展开放,对修改关闭。这个意思就是说,如果你想增 加一个新的功能,你可以很容易的在不改变已测试过的代码的前提下增加新的代 码。有好几个设计模式是基于开闭原则的,如策略模式,如果你需要一个新的策 略,只需要实现接口,增加配置,不需要改变核心逻辑。一个正在工作的例子是 Collec 阅读全文
posted @ 2020-07-11 19:00 咔啡 阅读(1157) 评论(0) 推荐(0)
摘要:一个公共的顶级类的源文件名称与类名相同,而嵌套静态类没有这个要求。一个 嵌套类位于顶级类内部,需要使用顶级类的名称来引用嵌套静态类,如 HashMap.Entry 是一个嵌套静态类,HashMap 是一个顶级类,Entry 是一个嵌 套静态类。 阅读全文
posted @ 2020-07-11 18:55 咔啡 阅读(291) 评论(1) 推荐(0)
摘要:类的内部可以有多个嵌套公共静态类,但是一个 Java 源文件只能有一个顶级公 共类,并且顶级公共类的名称与源文件名称必须一致。 阅读全文
posted @ 2020-07-11 18:52 咔啡 阅读(329) 评论(0) 推荐(0)
摘要:事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的 spring 项 目,则必须添加构建路径或添加 maven 依赖项,配置应用程序服务器,添加 spring 配置。所以一切都必须从头开始。 Spring Boot 是解决这个问题的方法。使用 spring boot 可以避免所有样板代码 阅读全文
posted @ 2020-07-11 18:51 咔啡 阅读(220) 评论(0) 推荐(0)
摘要:Version Feature Spring 2.5 发布于 2007 年。这是第一个支持注解的版本。 Spring 3.0 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支 持。 Spring 4.0 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。 阅读全文
posted @ 2020-07-11 18:49 咔啡 阅读(815) 评论(0) 推荐(0)
摘要:依赖注入,是 IOC 的一个方面,是个通常的概念,它有多种解释。这概念是说你 不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和 服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC 容 器)负责把他们组装起来。 阅读全文
posted @ 2020-07-11 18:46 咔啡 阅读(1863) 评论(0) 推荐(0)
摘要:DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以 更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器, 不会将整个 XML 文档加载到内存。由于这个原因,DOM 比 SAX 更快,也要 求更多的内存,不适合于解析大 XML 文件。 阅读全文
posted @ 2020-07-11 18:43 咔啡 阅读(402) 评论(0) 推荐(0)
摘要:AOP 核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一 组 API 提供横切功能。比如,一个日志模块可以被称作日志的 AOP 切面。根据需 求的不同,一个应用程序可以有若干切面。在 Spring AOP 中,切面通过带有 @Aspect 注解的类实现。 阅读全文
posted @ 2020-07-11 18:32 咔啡 阅读(160) 评论(0) 推荐(0)
摘要:轻量级 - Spring 在代码量和透明度方面都很轻便。IOC - 控制反转 AOP - 面向 切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。容器 - Spring 负 责创建和管理对象(Bean)的生命周期和配置。MVC - 对 web 应用提供了高 度可配置性,其他框架的集成也十分方便 阅读全文
posted @ 2020-07-11 18:02 咔啡 阅读(770) 评论(0) 推荐(0)
摘要:虽然 JDK 1.7 不像 JDK 5 和 8 一样的大版本,但是,还是有很多新的特性, 如 try-with-resource 语句,这样你在使用流或者资源的时候,就不需要手动关 闭,Java 会自动关闭。Fork-Join 池某种程度上实现 Java 版的 Map-reduce。 允许 Swit 阅读全文
posted @ 2020-07-11 17:38 咔啡 阅读(238) 评论(0) 推荐(0)
摘要:Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它 们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的 组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指 令。该元数据可以通过 XML,Java 注解或 Java 代 阅读全文
posted @ 2020-07-11 13:27 咔啡 阅读(1464) 评论(0) 推荐(0)
摘要:@RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的 控制器中的特定类/方法。此注释可应用于两个级别: 类级别:映射请求的 URL 方法级别:映射 URL 以及 HTTP 请求方法 阅读全文
posted @ 2020-07-10 19:17 咔啡 阅读(2293) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示