本文主要是介绍再战江湖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单例的典型应用场景是什么
spring singleton的缺省是饿汉模式:启动容器时(即实例化容器时),为所有spring配置文件中定义的bean都生成一个实例
spring singleton设置为懒汉模式:<beans default-lazy-init="true">在第一个请求时才生成一个实例,以后的请求都调用这个实例
写出SQL查询,获得预期结果。
Employee 表包含所有员工信息,每个员工有其对应的 Id, Performance和 department Id。
+----+-------+--------+--------------+
| Id | Name | Performance| DepartmentId |
| 1 | 张三 | 700000 | 1 |
| 2 | 李四 | 800000 | 2 |
| 3 | 王五 | 600000 | 2 |
| 4 | 赵六 | 900000 | 1 |
+----+-------+--------+--------------+
Department 表包含公司所有部门的信息。
| Id | Name |
| 1 | 北方销售部 |
| 2 | 南方销售部 |
编写一个 SQL 查询,找出每个部门业绩最高的员工。例如,根据上述给定的表格,查询结果如下:
+------------+----------+--------+
| Department | Employee |Performance|
|北方销售部 |赵六 | 900000
|南方销售部 |李四 | 800000 |
+------------+----------+--------+
SELECTd. NAME,a. NAME,a.Performance
FROMemployee a
LEFT JOIN department d ON a.DepartmentId = d.Id
WHERENOT EXISTS (SELECT1FROMemployee bWHEREa.DepartmentId = b.DepartmentIdAND a.Performance < b.Performance)
简述JVM模型组成部分及各个部分的作用
1)程序计数器存储线程当前执行的字节码行号,字节码解释器在工作时就会通过改变这个计数器的值来选取下一条要执行的字节码指令。
2)虚拟机栈用于每个方法的局部变量表,操作数栈,动态链接,方法出口等信息。
3)本地方法栈与虚拟基站一样,不同的是它只为navtive方法服务,而虚拟机栈为java方法服务。
4)堆是java虚拟机管理的内存中最大的一块区域,在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例。它是垃圾收集器管理的主要区域。java堆可以处于内存中的不连续区域中,只要逻辑连续即可。
5)方法区存储已被虚拟机加载的类的信息,常量,静态变量,即时编译器编译后的代码等数据。
如何构建一个高并发环境下高可用,稳定的系统?
系统拆分
将一个系统拆分为多个子系统,使用 Spring Cloud 来做,然后每个系统连一个数据库
缓存
在数据库层之上加一层缓存,减少对数据库的访问压力
MQ
承载复杂写业务逻辑的场景里,用 MQ 来异步写,提升并发性
分库分表
将一个数据库拆分为多个库,多个库来扛更高的并发;然后将一个表拆分为多个表,每个表的数据量保持少一点,提高 sql 跑的性能
读写分离
主库写入,从库读取,搞一个读写分离。读流量太多的时候,还可以加更多的从库。
ElasticSearch
es 是分布式的,可以随便扩容,分布式天然就可以支撑高并发
CDN 加速
选择最优路径,把每个角落的请求快速的传递到机房
HTML 页面静态化
静态页面部署在 NGNIX 中,收到用户请求,Ngnix 不需要访问 Webapp 即可响应用户,减少应用渲染页面的时间,同时也降低了应用的压力。
这篇关于再战江湖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!