随笔分类 - 面试题
摘要:1. 设定堆内存⼤⼩,这是最基本的。 2. -Xms:启动JVM时的堆内存空间。 3. -Xmx:堆内存最⼤限制。 4. 设定新⽣代⼤⼩。 5. 新⽣代不宜太⼩,否则会有⼤量对象涌⼊⽼年代 6. -XX:NewRatio:新⽣代和⽼年代的占⽐。 7. -XX:NewSize:新⽣代空间。 8. -X
阅读全文
摘要:1. PC寄存器:a. 每个线程拥有⼀个pc寄存器;b. 指向下⼀条指令的地址。 2. ⽅法区:a. 保存装载的类的元信息:类型的常量池,字段、⽅法信息,⽅法字节码;jdk6时,String等常量信息置于⽅法区,jdk7移到了堆中;b. 通常和永久区(Perm)关联在⼀起; 3. 堆:a. 应⽤系统
阅读全文
摘要:a. 优点:i. 模块解耦:把模块拆分,使⽤接⼝通信,降低模块之间的耦合度.ii. 项⽬拆分,不同团队负责不同的⼦项⽬:把项⽬拆分成若⼲个⼦项⽬,不同的团队负责不同的⼦项⽬.iii. 提⾼项⽬扩展性:增加功能时只需要再增加⼀个⼦项⽬,调⽤其他系统的接⼝就可以。iv. 分布式部署:可以灵活的进⾏分布式
阅读全文
摘要:1. ⼆阶段提交:a. 概念:参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是中⽌操作。b. 作⽤:主要保证了分布式事务的原⼦性;第⼀阶段为准备阶段,第⼆阶段为提交阶段 c. 缺点:不仅要锁住参与者的所有资源,⽽且要锁住协调者资源,开销⼤。⼀句话总结就是:
阅读全文
摘要:a. 第⼀层缓存:readOnlyCacheMap,本质上是ConcurrentHashMap:这是⼀个JVM的CurrentHashMap只读缓存,这个主要是为了供客户端获取注册信息时使⽤,其缓存更新,依赖于定时器的更新,通过和readWriteCacheMap 的值做对⽐,如果数据不⼀致,则以r
阅读全文
摘要:某个服务不可⽤时,各个Eureka Client不能及时的知道,需要1~3个⼼跳周期才能感知,但是,由于基于Netflix的服务调⽤端都会使⽤Hystrix来容错和降级,当服务调⽤不可⽤时Hystrix也能及时感知到,通过熔断机制来降级服务调⽤,因此弥补了基于客户端服务发现的时效性的缺点
阅读全文
摘要:a. 当⼀个服务实例启动,会将它的ip地址等信息注册到eureka;b. 当a服务调⽤b服务,a服务会通过Ribbon检查本地是否有b服务实例信息的缓存;c. Ribbon会定期从eureka刷新本地缓存。
阅读全文
摘要:特性 ActiveMQ RabbitMQ RocketMQ kafka 开发语⾔ java erlang java scala 单机吞吐量 万级 万级 10万级 10万级 时效性 ms级 us级 ms级 ms级以内 可⽤性 ⾼(主从架构) ⾼(主从架构) ⾮常⾼(分布式架构) ⾮常⾼(分布式架构)
阅读全文
摘要:a消息处理过程: b. 四种交换机:i. 直连交换机,Direct exchange:带路由功能的交换机,根据routing_key(消息发送的时候需要指定)直接绑定到队列,⼀个交换机也可以通过过个routing_key绑定多个队列。ii. 扇形交换机,Fanout exchange:⼴播消息。ii
阅读全文
摘要:1、虚拟机:我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有⾃⼰的操作系统,虚拟机⼀旦被开启,预分配给他的资源将全部被占⽤。,每⼀个虚拟机包括应⽤,必要的⼆进制和库,以及⼀个完整的⽤户操作系统。2、Docker:容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。容器包
阅读全文
摘要:a. explain select语句;b. 当只要⼀条数据时使⽤limit 1;c. 为搜索字段建索引;d. 避免select *;e. 字段尽量使⽤not null;f. 垂直分割;g. 拆分⼤的delete和insert语句:delete和insert会锁表;h. 分表分库分区。
阅读全文
摘要:a. RDB:快照形式是直接把内存中的数据保存到⼀个 dump ⽂件中,定时保存,保存策略。(会丢数据) b. AOF:把所有的对Redis的服务器进⾏修改的命令都存到⼀个⽂件⾥,命令的集合。(影响性能)
阅读全文
摘要:a. 更多的数据结构; b. 可持久化; c. 计数器; d. 发布-订阅功能; e. 事务功能; f. 过期回调功能; g. 队列功能; h. 排序、聚合查询功能
阅读全文
摘要:特点: 1)代码量少且代码末尾没有分号; 2)空类型安全(编译期处理了各种 null 情况,避免执行时异常); 3)函数式的,可使用 lambda 表达式; 4)可扩展方法(可扩展任意类的属性); 5)互操作性强,可以在一个项目中使用 kotlin 和 java 两种语言混合开发;
阅读全文
摘要:序列化:将一个对象转换成可存储或可传输的状态,序列化后的对象可以在网络上传输,也可以存储到本地,或实现跨进程传输; 为什么要进行序列化:开发过程中,我们需要将对象的引用传给其他 activity 或 fragment使用时,需要将这些对象放到一个 Intent 或 Bundle 中,再进行传递,而
阅读全文
摘要:final:变量、类、方法的修饰符,被 final 修饰的类不能被继承,变量或方法被 final 修饰则不能被修改和重写。 finally:异常处理时提供 finally 块来执行清除操作,不管有没有异常抛出,此处代码都会被执行。如果 try 语句块中包含 return 语句,finally 语句块
阅读全文
摘要:进程:具有一定独立功能的程序,是系统进行资源分配和调度运行的基本单位。 线程:进程的一个实体,是 CPU 调度的基本单位,也是进程中执行运算的最小单位,即执行处理机调度的基本单位,如果把进程理解为逻辑上操作系统所完成的任务,线程则表示完成该任务的许多可能的子任务之一。 关系:一个进程可有多个线程,至
阅读全文
摘要:<? extends T>限定参数类型的上界,参数类型必须是 T 或 T 的子类型,但对于 List<?extends T>,不能通过 add()来加入元素,因为不知道<? extends T>是 T 的哪一种子类; <? super T>限定参数类型的下界,参数类型必须是 T 或 T 的父类型,不
阅读全文
摘要:抽象类意义 抽象类是用来提供子类的通用性,用来创建继承层级里子类的模板,减少代码编写,有利于代码规范化。 接口意义 1)有利于代码的规范,对于大型项目,对一些接口进行定义,可以给开发人员一个清晰的指示,防止开发人员随意命名和代码混乱,影响开发效率。 2)有利于代码维护和扩展,当前类不能满足要求时,不
阅读全文
摘要:抽象类在类前面须用 abstract 关键字修饰,一般至少包含一个抽象方法,抽象方法指只有声明,用关键字 abstract 修饰,没有具体的实现的方法。因抽象类中含有无具体实现的方法,固不能用抽象类创建对象。当然如果只是用 abstract 修饰类而无具体实现,也是抽象 类。抽象类也可以有成员变量和
阅读全文