- 博客(52)
- 收藏
- 关注
原创 Java面试题(每天10题)-------连载(50)
服务器端运行的项目名称为 path,外部访问的 URL 则使用 XML 的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效。在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的 web 站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。web server 允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右,Linux 是 1000 个左右。maxProcessors 的值。
2023-12-18 09:54:16
1514
1
原创 Java面试题(每天10题)-------连载(49)
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。(有时候也是在第一次请求时实例化)在 servlet 注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。,所以增大年轻代后,将会减小年老代大小。
2023-12-15 10:02:09
1889
原创 Java面试题(每天10题)-------连载(47)
虽然 Mybatis 解析 Xml 映射文件是按照顺序解析的,但是,被引用的 B 标签依然可以定义在任何地方,Mybatis 都可以正确识别。原理是,Mybatis 解析 A 标签,发现 A 标签引用了 B 标签,但是 B 标签尚未解析到,尚不存在,此时,Mybatis 会将 A 标签标记为未解析状态,然后继续解析余下的标签,包含 B 标签,待所有标签解析完毕,Mybatis 会重新解析那些被标记为未解析的标签,此时再解析 A 标签时,B 标签已经存在,A 标签也就可以正常解析完成了。
2023-12-13 09:18:30
1564
原创 Java面试题(每天10题)-------连载(46)
Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而 Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spirng、Spirng Boot 的优势之上,两个框架在开始目标就不一致,Dubbo定位服务治理、Spirng Cloud 是一个生态。而 SpringCloud 是基于 Http 协议+Rest 接口调用远程过程的通信,相对来说,Http 请求会有更大的报文,占的带宽也会更多。址,就能进行服务注册和发现。
2023-12-11 09:09:14
1048
原创 Java面试题(每天10题)-------连载(45)
单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议 TCP,异步,Hessian 序列化;采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现 Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,远程服务调用和 rmi 互操作。在依赖低版本的 Common-Collections包,java 序列化存在安全漏洞;
2023-12-08 09:13:17
1215
原创 Java面试题(每天10题)-------连载(44)
Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和Spring 框架无缝集成。Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信。服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端。为主,即优先级更高。到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避。据包大小混合,消费者和提供者个数差不多,可传文件,传输协议。协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群。
2023-12-06 09:08:04
1114
原创 Java面试题(每天10题)-------连载(43)
在构造方法 注入不支持大部分的依赖注入,因为在调用构造方法中必须传入正确的构造参数,否则。对于基本类型,如果我们没有注入的话,可以为基本类型设置默认值。设值注入不会重写构造方法的值。法注入的话,那么构造方法将不能覆盖由设值方法注入的值。在使用设值注入时有可能还不能保证某种依赖是否已经被注入,也就是说这时对象的依赖关系有可。而在另一种情况下,构造器注入则不允许生成依赖关系不完整的对象。在设值注入方法支持大部分的依赖注入,如果我们仅需 要注入。的问题,因对象的设值方法是在对象被创建之前被调用的。
2023-12-05 09:22:36
1579
1
原创 Java面试题(每天10题)-------连载(42)
在Spring框架中,无论何时bean被使用时,当仅被调用了一个属性。一个明智的做法是将这个bean 声明为内部bean。内部bean可以用setter注入属性和构造方法注入构造参数的方式来实现。比如,在我们的应用程序中,一个Customer类引用了一个Person类,我们的要做的是创建一个Person 的实例,然后在Customer内部使用。内部bean</bean></bean>
2023-12-04 09:41:56
1188
原创 Java面试题(每天10题)-------连载(41)
Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心 Spring是如何在后台进行工作的。Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问集成,WebAOP(面向切面编程)、工具、消息和测试模块。
2023-12-01 11:29:13
1285
原创 Java面试题(每天10题)-------连载(40)
,每条记录越小,相同的块存储的记录就越多。当需要查询大字段时,此时的关联查询是不可避免的,但也是值得的。size 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。类型的,而且这些字段的访问并不多,这时候放在一起就变成缺点了。果集的 query 都会被缓存,这样便会造成内存资源的过渡消耗。字符大小写、空格或者注释的不同,缓存都是认为是不同的 sql(因为。的请求将分配一个读入缓冲区,MySQL 会为它分配一段内存缓冲区。数据库的记录存储是按行存储的,数据块大小又是固定的(16K。
2023-11-30 13:47:13
1090
原创 Java面试题(每天10题)-------连载(39)
复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。当一个从服务器连接主服务器时,它通知主服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍.的数据分布到多个系统上去,这种分布的机制,是通过将 Mysql。别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据。
2023-11-28 09:18:35
1785
原创 Java面试题(每天10题)-------连载(38)
我希望本文可以帮助你提升技术水平。那些,感觉学的好难,甚至会令你沮丧的人,别担心,我认为,如果你愿意试一试本文介绍的几点,会向前迈进,克服这种感觉。Mysql 数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql。值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。
2023-11-27 09:43:37
1037
原创 Java面试题(每天10题)-------连载(37)
以下是非标准字符串类型:TINYTEXTTEXTMEDIUMTEXTLONGTEXT连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。格式化数字X到D有效数字。返回当前日期或时间。NOW()将当前日期和时间作为一个值返回。MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY()从日期值中提取给定数据。HOUR(),MINUTE(),SECOND()从时间值中提取给定数据。DATEDIFFAB。
2023-11-24 15:34:41
1132
原创 Java面试题(每天10题)-------连载(36)
是一个二进制对象,可以容纳可变数量的数据。将结果行作为关联数组或来自数据库的常规数组返回。它们只能在所能容纳价值的最大长度上有所不同。开发的,用于在磁带等辅助存储系统上存储和。类型,并具有相同的最大长度和存储要求。值进行排序和比较时区分大小写,对。简称为索引顺序访问方法。从数据库返回结果行作为对象。类型之间的唯一区别在于对。所有这些例子都是一样的,是一个不区分大小写的。
2023-11-22 09:46:15
499
原创 Java面试题(每天10题)-------连载(35)
每当行被更改时,时间戳字段将获取当前时间戳。将返回由分配的最后一个值,并且不需要指定表名称。
2023-11-21 10:54:13
247
原创 Java面试题(每天10题)-------连载(34)
按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。存储引擎称为表类型,数据使用各种技术存储在文件中。列长度固定为创建表时声明的长度,长度值范围是。值被存储时,它们被用空格填充到特定长度,检索。修饰符就将时间戳字段更新为当前时间。只要表中的其他字段发生更改,类型在存储和检索方面有所不同。表,这减少了磁盘或内存使用。表格的每一行都由主键唯一标识。值时需删除尾随空格。一个表只有一个主键。
2023-11-20 09:24:54
270
原创 Java面试题(每天10题)-------连载(32)
享元模式的主要⽬的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与⼯⼚模式⼀起使⽤。当⼀个客户端请求时,⼯⼚需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建⼀个新对象,如数据库连接池;在以上的三种模式中,第⼀种如果传⼊的字符串有误,不能正确创建对象,第三种相对于第⼆种,不需要实例化⼯⼚类,所以,⼤多数情况下,我们会选⽤第三种——类的适配器模式:当希望将⼀个类转换成满⾜另⼀个新接⼝的类时,可以使⽤类的适配器模式,创建⼀个新类,继承原有的类,
2023-11-16 10:42:00
680
原创 Java面试题(每天10题)-------连载(30)
1、不可以,线程有5种状态,新建(new)、可运⾏(runnable)、运⾏中(running)、阻塞(block)、死亡(dead2、只有当线程run⽅法或者主线程main⽅法结束,⼜或者抛出异常时,线程才会结束⽣命周期。
2023-11-14 09:38:51
449
原创 Java面试题(每天10题)-------连载(29)
守护线程(即),是个服务线程,准确地来说就是服务其他的线程,这是它的作⽤——⽽其他的线程只有⼀种,那就是⽤户线程。所以java⾥线程分2种,1、守护线程,⽐如垃圾回收线程,就是最典型的守护线程。2、⽤户线程,就是应⽤程序⾥的⾃定义线程。
2023-11-13 09:35:48
309
原创 Java面试题(每天10题)-------连载(28)
并发⾼、业务执⾏时间⻓,解决这种类型任务的关键不在于线程池⽽在于整体架构的设计,看看这些业务⾥⾯某些数据是否能做缓存是第⼀步,增加服务器是第⼆步,⾄于线程池的设置,设置参考(2)。假如是业务时间⻓集中在计算操作上,也就是计算密集型任务,这个就没办法了,和(1)⼀样吧,线程池中的线程数设置得少⼀些,减少线程上下⽂的切换。独⽴运⾏和独⽴调度的基本单位,没有单独地址空间,有独⽴的栈,局部变量,寄存器, 程序计数器等。⽅法都必须获得调⽤该⽅法的类实例的锁⽅能执⾏,否则所属线程阻塞,⽅法⼀旦执⾏,就独占该锁。
2023-11-10 09:28:49
426
1
原创 Java面试题(每天10题)-------连载(27)
的静态⽅法,让调⽤线程进⼊睡眠状态,让出执⾏机会给其他线程,等到休眠时间结束后,线程进⼊就绪状态和其他线程⼀起竞争cpu。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进⼊了运⾏状态,开始运⾏run函数当中的代码。()⽅法执⾏完毕才能执⾏下⾯的代码,所以执⾏路径还是只有⼀条,根本就没有线程的特征,所以在多线程执⾏时要使⽤start。总之,读的时候上读锁,写的时候上写锁!⽅法时,它就进⼊到⼀个和该对象相关的等待池,同时释放对象的机锁,使得其他线程能够访问,可以通过notify。
2023-11-09 09:18:42
683
原创 Java面试题(每天10题)-------连载(26)
1FutureTask可⽤于异步获取执⾏结果或取消执⾏任务的场景。通过传⼊Runnable或者Callable的任务给FutureTask,直接调⽤其run⽅法或者放⼊线程池执⾏,之后可以在外部通过FutureTask的get⽅法异步获取执⾏结果,因此,FutureTask⾮常适合⽤于耗时的计算,主线程可以在完成⾃⼰的任务后,再去获取结果。另外,FutureTask还可以确保即使调⽤了多次run⽅法,它都只会执⾏⼀次Runnable或者Callable任务,或者通过。
2023-11-08 15:29:12
235
原创 Java面试题(每天10题)-------连载(25)
线程是操作系统能够进⾏运算调度的最⼩单位,它被包含在进程之中,是进程中的实际运作单位,可以使⽤多线程对进⾏运算提速。比如:如果一个线程完成一个任务要100ms,那么十个线程完成该任务只需要10ms。1、线程安全线程安全就是多线程访问时,采⽤了加锁机制,当⼀个线程访问该类的某个数据时,进⾏保护,其他线程不能进⾏访问,直到该线程读取完,其他线程才可使⽤。不会出现数据不⼀致或者数据污染。Vector是⽤同步⽅法来实现线程安全的, ⽽和它相似的ArrayList不是线程安全的。2、线程不安全。
2023-11-07 13:53:37
441
原创 Java面试题(每天10题)-------连载(24)
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁。
2023-11-06 09:47:43
200
原创 Java面试题(每天10题)-------连载(23)
实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。主要有以下四种类加载器:1. 启动类加载器(Bootstrap ClassLoader)用来加载 java 核心类库,无法被 java 程序直接引用。2. 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。
2023-11-03 16:21:48
223
原创 Java面试题(每天10题)-------连载(22)
jstack 可以看当前栈的情况,jmap 查看内存,jhat 进行 dump 堆的信息mat(eclipse 的也要了解一下)
2023-11-02 09:44:24
149
原创 Java面试题(每天10题)-------连载(21)
如果有特别大的对象,新生代放不下,就会使用老年代的担保,直接放到老年代里面。堆里面分为新生代和老生代(java8 取消了永久代,采用了 Metaspace),新生代包含 Eden+Survivor 区,survivor 区里面分为 from 和 to 区,内存回收时,如果用的是复制算法,从 from 复制到 to,当经过一次或者多次 GC 之后,存活下来的对象会被移动到老年区,当 JVM 内存不够用的时候,会触发 Full GC,清理 JVM 老年区。一般来说,Java应用的类都是由它来完成加载的。
2023-11-01 09:46:56
440
原创 Java面试题(每天10题)-------连载
DGC 叫做分布式垃圾回收。RMI 使用 DGC 来做自动垃圾回收。因为 RMI 包含了跨虚拟机的远程对象的引用,垃圾回收是很困难的。DGC 使用引用计数算法来给远程对象提供自动内存管理。
2023-10-31 09:42:39
376
原创 Java面试题(每天10题)-------连载
JVM 的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在 JVM 启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这些 对象回收掉之前,他们会一直占据堆内存空间。
2023-10-30 09:42:34
171
原创 Java面试题(每天10题)-------连载
返回事务块内所有命令的返回值,按命令执行的先后顺序排列。可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行,监控一直持续到EXEC。执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放到一个队列中,当EXEC。,客户端可以清空事务队列,并放弃执行事务, 并且客户端会从事务状态中退出。如果在一个事务中的命令出现错误,那么所有的命令都不会执行;如果在一个事务中出现运行错误,那么正确的命令会被执行。命令被调用时,所有队列中的命令才会被执行。
2023-10-27 10:20:31
274
原创 Java面试题(每天10题)-------连载
官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)Redis利用队列技术将并发访问变为串行访问1)绝大部分请求是纯粹的内存操作(非常快速)2)采用单线程,避免了不必要的上下文切换和竞争条件。3)非阻塞IO优点:速度快,因为数据存在内存中,类似于HashMapHashMap。
2023-10-26 10:31:45
128
原创 Java面试题(每天10题)-------连载
为了更快的构建产品就绪应用程序,Spring Boot 提供了一些非功能性特征。它只需要很少的配置,并且不需要样板代码。上的更改,而无需重新启动服务器。也提供了其它的启动器项目包括,包括用于开发特定类型应用程序的典型依赖项。松耦合应用的单元测试可以很容易的进行。配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;作为一个开发者,我不需要再担心这些依赖项和它们的兼容版本。SpringMVC 的问题在于需要配置大量的参数。下面的截图是添加进我们应用程序的不同的依赖项。的核心配置文件有哪几个?
2023-10-23 09:38:06
119
原创 Java面试题(每天10题)-------连载
打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfifiguration.class })。包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成。命名的,代表了一个特定的应用类型。可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成。
2023-10-20 09:11:07
107
原创 Java面试题(每天10题)-------连载
默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现Serializable。请允许我今天只更新一题,因为mybatis他就只有这么多,我怕昨天也没仔细看,实在抱歉。存储,不同在于其存储作用域为 Mapper(Namespace)掉并重新更新,如果开启了二级缓存,则只根据配置判断是否刷新。C/U/D操作后,默认该作用域下所有 select。)二级缓存与一级缓存其机制相同,默认也是采用。Session flush 或。就将清空,默认打开一级缓存。本地缓存,其存储作用域为。,并且可自定义存储源,如。
2023-10-19 09:36:39
114
原创 Java面试题(每天10题)-------连载
创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器。通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql。如果支持,它的实现原理是什么?语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。4、当实体类中的属性名和表中的字段名不一样 ,怎么办?
2023-10-18 09:51:10
121
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅