tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...

84ad76dc55096c27d86714643c49f2c4.png

每一个程序员都有自己清晰的职业规划和终极目标,无论之后是继续钻研技术,还是转管理岗、产品岗,都是需要自己具备有一定的实力,换句话说技术要牛逼。架构师,是很多程序员的终极目标,而成为一名Java架构师,那就需要对自己自身有一定要求,不仅技术能力要过硬,还需要有组织能力和提出解决方案的能力。那么作为架构师,需要掌握哪些技术呢?

今天,就由一线大厂架构师来总结总结他的开发十年,带你剖析并发编程与JVM,深入Tomcat和MySQL,离架构师更近一步!

注意:以下内容并非完整版,包括一些详细解析,需要的可以直接私信我。

01 并发编程进阶剖析

1.1 并发编程难题

  • Synchronized 相关问题
Synchronized 用 过 吗 , 其 原 理 是 什 么 ?
你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
什么是可重入性,为什么说Synchronized是可重入锁?
JVM 对 Java 的原生锁做了哪些优化?
为什么说 Synchronized 是非公平锁?
什么是锁消除和锁粗化?
为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是CAS,它有什么特性?
乐观锁一定就是好的吗?
  • 可重入锁ReentrantLock及其他显式锁 相关问题
跟Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
那么请谈谈AQS框架是怎么回事?
请尽可能详尽地对比下 Synchronized 和 ReentrantLock的异同
ReentrantLock 是如何实现可重入性的?
除了 ReetrantLock, 你还接触过 JUC 中的哪些并发工具?
请谈谈 ReadWriteLock 和 StampedLock
如何让 Java 的线程彼此同步?你了解过哪些同步器? 请分别介绍下
CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
  • Java线程池 相关问题
Java 中的线程池是如何实现的?
创建线程池的几个核心构造参数?
线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
既然提到可以通过配置不同参数创建出不同的线程池,那么Java 中默认实现好的线程池又有哪些呢?请比较它们的异同。
如何在Java线程池中提交线程?
  • Java 内存模型相关问题
什么是Java的内存模型,Java中各个线程是怎么彼此看到对方的变量的?
请谈谈volatile有什么特点,为什么它能保证变量对所有线程的可见性
既然volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile变量的运算就是并发安全的?
请对比下volatile 对比 Synchronized 的异同。
请谈谈 ThreadLocal 是怎么解决并发安全的?
很多人都说要慎用ThreadLocal,谈谈你的理解,使用ThreadLocal 需要注意些什么?

9de53a43522d0acd153d1c083f785a80.png

1.2 Java并发编程实战

  • 基础知识
线程安全性
对象的共享
对象的组合
基础构建模块
  • 结构化并发应用程序
任务执行
取消与关闭
线程池的使用
图形用户界面应用程序
  • 活跃行、性能与测试
避免活跃性危险
性能与可伸缩性
并发程序的测试
  • 高级主题
显示锁
构建自定义的同步工具
原子变量与非阻塞同步机制
Java内存模型

35d178c9246405107dd780d5d2aa4cd7.png

1.3 Java多线程并发编程知识导图(xmind)

937cd5e3623d1b01bb074ff8dd33d7c0.png

02 JVM性能深度剖析

2.1 JVM性能深度解剖 难题

内存模型以及分区,需要详细到每个区放什么
堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
对象创建方法,对象的内存分配,对象的访问定位。
GC 的两种判定方法
SafePoint 是什么
GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
GC 收集器有哪些?CMS 收集器与 G1 收集器的特点
Minor GC 与 Full GC 分别在什么时候发生?
几种常用的内存调试工具:jmap、jstack、jconsole、jhat
类加载的几个过程
JVM 内存分哪几个区,每个区的作用是什么?
如和判断一个对象是否存活?(或者 GC 对象的判定方法)
简述 java 垃圾回收机制?
java 中垃圾收集的方法有哪些?
java 内存模型
java 类加载过程?
简述 java 类加载机制?
类加载器双亲委派模型机制?
什么是类加载器,类加载器有哪些?
简述 java 内存分配与回收策率以及 Minor GC 和 Major GC

2.2 JVM调优总结


一些概念
基本垃圾回收算法
垃圾回收面临的问题
分代垃圾回收详述
典型配置举例
新一代的垃圾回收算法
调优方法
反思
参考资料

10a4c0924b60ebbb419491a30520ad56.png

2.3 深入理解Java虚拟机:JVM高级特性与最佳实践

走近Java
自动内存管理
虚拟机执行子系统
程序编译与代码优化
高效并发

b9f67e4cb818db7762508c2b38664582.png

2.4 JVM和性能优化(xmind)

Java内存区域
垃圾回收器和内存分配策略
JVM的执行子系统
编写高效优雅Java程序
深入了解性能优化

a9192fb1e66d8f45806c660502c86e3f.png

03 深入Tomcat底层

3.1 深入Tomcat难题

Tomcat 的缺省端口是多少,怎么修改?
Tomcat 有哪几种 Connector 运行模式(优化)?
Tomcat 有几种部署方式?
Tomcat 容器是如何创建 servlet 类实例?用到了什么原理?
Tomcat 如何优化?
内存调优
垃圾回收策略调优
共享 session 处理
添加 JMS 远程监控
监视 Tomcat 的内存使用情况
打印类的加载情况及对象的回收情况
Tomcat 一个请求的完整过程
Tomcat 工作模式?你怎样给 tomcat 去调优?如何加大 tomcat 连接数?Tomcat 中如何禁止列目录下的文件?怎样加大 Tomcat 的内存?Tomcat 有几种部署方式?

3.2 深入剖析Tomcat

一个简单的Web服务器
一个简单的servlet容器
连接器
Tomcat的默认连接器
servlet容器
生命周期
日志记录器
载入器
Session管理
安全性
StandardWrapper
StandardContext类
Host 和 Engine
服务器组件和服务组件
关闭钩子
启动Tomcat
部署器
Manager应用程序的servlet类
基于JMX的管理

fee4ade5a36117c511e3af31129b25c9.png

04 Mysql深度进阶

4.1 Mysql深度进阶难题

一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?
Mysql 的技术特点是什么?
Heap 表是什么?
Mysql 服务器默认端口是什么?
与 Oracle 相比,Mysql 有什么优势?
如何区分 FLOAT 和 DOUBLE?
区分 CHAR_LENGTH 和 LENGTH?
请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
在 Mysql 中 ENUM 的用法是什么?
如何定义 REGEXP?
CHAR 和 VARCHAR 的区别?
列的字符串类型可以是什么?
如何获取当前的 Mysql 版本?
Mysql 中使用什么存储引擎?
MYSQL 数据库服务器性能分析的方法命令有哪些?
我们如何在 mysql 中运行批处理模式?

6564604696effb97b07a8c21c9ad6a22.png

4.2 MySQL 性能优化的21个最佳实践

为查询缓存优化你的查询
EXPLAIN 你的 SELECT 查询
当只要一行数据时使用 LIMIT 1
为搜索字段建索引
在 Join 表的时候使用相当类型的例,并将其索引
千万不要 ORDER BY RAND()
避免 SELECT *
永远为每张表设置一个 ID
使用 ENUM 而不是 VARCHAR
从 PROCEDURE ANALYSE() 取得建议
尽可能的使用 NOT NULL
Prepared Statements
无缓冲的查询
把 IP 地址存成 UNSIGNED INT
固定长度的表会更快
垂直分割
拆分大的 DELETE 或 INSERT 语句
越小的列会越快
选择正确的存储引擎
使用一个对象关系映射器(Object Relational Mapper)
小心“永久链接”

ae4f36d6bc49ea53195d2d4056933acb.png

4.3 MySQL 王者晋级之路

Part1:倔强青铜篇

MySQL简介与主流分支版本.
MySQI数据库的安装、启动和关闭
MySQL体系结构与存储引擎
数据库文件

索引
事务

Part2:白银篇

备份恢复

Part3:黄金篇

主从复制概述
复制原理及实战演练

Part4:尊贵铂金篇

MHA
Keepalived+双主架构
PXC
ProxySQL

Part5:永恒钻石篇

MySQL特性
MySQL全面优化

Part6:至尊星耀篇

Lepus之MySQL 监控
MySQL版本升级

Part7:最强王者篇

MySQL面试宝典

f05bc93a7c53bb5180b6ccf000b716c9.png

4.4 MySQL优化问题(xmind)

0491f37d5e263f642f6551c306170d21.png

总结

实际上,想要成为一名Java架构师并不难,只需要我们掌握应有的技术,活跃自己的思维,调整自己的全局观,也是能够轻松胜任的!

如果你也想成为一名JAVA架构师,那么首先掌握这些应该具备的架构师技能是关键,因此不止步地去学习是非常重要的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

改进型的时钟置换算法-解惑

此算法又称为第二次机会算法;大致有两种思路: 思路1: 王道讲解的: 思路2: 清华大学陈渝讲解的: 刚开始接触时,觉得有一个是错误的,但不知道是哪个错误,其次清华大学这…

ifconfig相关

目录 一、ifconfig command not found 二、ifconfig结果相关参数解释 一、ifconfig command not found 出现这个问题的原因是新版本的linux默认不带 ifconfig(我这里是centos7,最小安装),官方推荐使用ip命令查看ip:i…

k8s jenkins pipeline 多分支发布_给 Jenkins 换一个新皮肤:BlueOcean

BlueOcean是什么Jenkins是一款Java开发的跨平台持续集成和持续发布的开源项目,它具有如下特征:安装及迁移方便:安装直接部署war包,迁移只需替换JENKINS_HOME目录。配置方便:可视化后台操作。丰富的插件生态圈&#xff…

linux文件目录解释

/根目录/bin存放用户使用的命令,二进制的可执行文件/boot开机启动相关的文件/dev系统中必要的设备文件/etc系统配置文件/home普通用户家目录,在目录下有与普通用户同名的目录rootroot用户的家目录/lib,/lib64库文件/media可以热插拔的设备的挂载点/mnt临…

python读取大文件的坑_如何在Python中读取大文件的特定部分

Given a large file (hundreds of MB) how would I use Python to quickly read the content between a specific start and end index within the file? Essentially, Im looking for a more efficient way of doing: open(filename).read()[start_index:end_index] 解决方案…

POSIX与程序可移植性

目录 一、系统调用和库函数 1、系统调用 2、库函数 二、程序的可移植性及其本质 三、系统开销 四、POSIX 1、定义 2、历史 3、谁来遵循 一、系统调用和库函数 1、系统调用 系统调用是通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可…

144显示器只有60_你知道显示器60Hz和144Hz的刷新率差别有多大吗?你没有用过吗?...

不知什么时候开始,高刷新率成为了显示器的一个重要卖点,成为了电竞游戏显示器的标配,越来越多的人在购买显示器时,开始抛弃早已定格60Hz刷新率,逐渐向120Hz刷/144Hz刷乃至更高的刷新率上靠拢。那么显示器60Hz和144Hz刷…

linux用户权限不够解析及解决方案

目录 一、用户账户:普通账户、超级账户(root) 二、组账户:私有组、标准组 三、linux下账户配置文件:passwd、shadow、group、gshadow。 四、文件权限 1、权限分类 2、文件权限含义 3、目录权限含义 四、权限不够…

chmod -R 644 dir04 报错:权限不够

错误截图 错误分析 1、分析当前用户有无对dir04的操作权限 有,dir04的所有者为wlh,wlh的权限为rwx。 2、分析-R是否可以使用空文件夹和文件,而非空文件夹不可以 可能是这样,但是尝试chmod -R 777 dir04成功。所以与非空无关&am…

云桌面部署_东胜区检察院检察工作网统一业务系统2.0云桌面终端全面部署完成...

按照最高检顶层设计和自治区院、市院关于做好统一业务系统2.0版试点应用工作的相关要求,东胜区人民检察院党组高度重视,高标准、高效率、高质量开展部署准备工作,着力保障统一业务应用2.0系统上线后稳、准、快的运行。为按时按要求完成任务&a…

python处理表格数据教程_python利用Excel读取和存储测试数据完成接口自动化教程...

http_request2.py用于发起http请求 #读取多条测试用例 #1、导入requests模块 import requests #从 class_12_19.do_excel1导入read_data函数 from do_excel2 import read_data from do_excel2 import write_data from do_excel2 import count_case #定义http请求函数 COOKIENon…

linux递归参数-R(r)和-p的区别

在linux系统中创建、复制、删除目录或文件时,常常会用到递归参数。常用的递归参数有-p,-r,-P等。为方便初学者学习、分辨与记忆,将其分类整理如下。 一般常用到递归的命令有:mkdir、cp、rm、ls、grep、chmod、chown等。 而mv命令没有递归参…

html table设置行高_字号与行高

1. 什么是字号与行高什么是字号大小?字号大小就是字体的高度,例如设置字号为50px,那么它的高度如下图所示:什么是行距呢?如下图所示:其中半行距 (lineHeight – fontSize) / 2。但是实际上,fon…

linux 用户名为没有名字 报错:cannot find name for user ID

经过一系列用户权限更改后,切换到普通用户,失败,报错如下: 解决方案:这个问题是因为普通用户没有权限读取/etc/passwd和/etc/group文件造成,添加权限即可。 转载自:id: cannot find name for us…

xposed hook 静态函数_浅谈 Xposed 新概念【模块作用域】

众所周知,Xposed 是一个系统级别的软件框架,它与 Cydia Substrate 不同,Xposed 仅可 hook app_process 中的 java 函数,不过对于大部分的 Android 应用来说已经足够了;它所提供的 API 可以供模块开发者在不修改目标应用…

adc0808温度换算公式_温湿度传感器的三种模拟量换算关系

气候的变化常常会导致空气当中的湿度以及温度随之而产生相应的变化,如果想及时感知空气中温湿度的变化,那就需要温湿度传感器。在日常生活中,温湿度传感器种类有很多,按照数据上传方式分有RS485型温湿度传感器、模拟量型温湿度传感…

共阳数码管段码表_简单共阴极数码管电路图大全

共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。判断公阴极和公阳极找公共共阴和公共共…

linux find 报错路径必须在表达式之前

执行 find -name yum*,查看当前文件夹下以yum开头的文件。 报错路径必须在表达式之前,如下图所示: 解决方案: 会出现“find: 路径必须在表达式之前”的错误提示。解决的方法有两种 使用转义符把*转义,即 yum\*用引号引起来 &am…

css 动态生成圆形区域内扇形个数_CSS实用技巧总结

❝作者:幻灵尔依 (授权原创)https://juejin.im/post/5e0fef935188253a624a6a72❞《css揭秘》中讲了47个css技巧,其中有很多日常编码中并不会用到,本文除了将书中部分实用技巧罗列出来之外,还尝试用帮助读者搞明白background、anim…

python怎么返回上一行代码_一行Python代码能做出哪些神器的事情

原标题:一行Python代码能做出哪些神器的事情 (1)一行代码启动一个Web服务 python -m SimpleHTTPServer 8080 # python2 python3 -m http.server 8080 # python3 (2)一行代码实现变量值互换a, b 1, 2; a, b b, a &…