java
文章平均质量分 85
步道师就是我
10年大龄码农
展开
-
专题3-MySQL 性能优化思路和工具
一、优化思路作为架构师或者开发人员,说到数据库性能优化,你的思路是什么样的?或者具体一点,如果在面试的时候遇到这个问题:你会从哪些维度来优化数据库,你会怎么回答?我们在第一节开始的时候讲了,目标是为了让大家建立数据库的知识体系,和正确的调优的思路。我们说到性能调优,大部分时候想要实现的目标是让我们的查询更快。一个查询的动作又是由很多个环节组成的,每个环节都会消耗时间,我们在第一节讲 SQL 语句的执行流程的时候已经分析过了。我们要减少查询所消耗的时间,就要从每一个环节入手。原创 2022-05-13 14:47:19 · 291 阅读 · 0 评论 -
专题2-MySQL 索引原理详解
一、 索引是什么?1.1 索引是什么当一张表有 500 万条数据,在没有索引的 name 字段上执行一个查询:select * from user_innodb where name ='jim';如果 name 字段上面有索引呢?ALTER TABLE user_innodb DROP INDEX idx_name; ALTER TABLE user_innodb ADD INDEX idx_name (name);索引的创建是需要消耗时间的。有索引的查询和没有索引的查询原创 2022-05-13 14:37:20 · 350 阅读 · 0 评论 -
专题1-Mysql架构与内部模块
前提说明:所有案例演示环境:MySQL 5.7存储引擎:InnoDB一、一条查询SQL是如何执行的?程序或者工具要操作数据库,第一步跟数据库建立连接。1、通信协议首先,MySQL 必须要运行一个服务,监听默认的端口(3306)。1.1 通信协议MySQL 支持多种通信协议。第一种就是 TCP/IP 协议,编程语言的连接模块都是用 TCP 协议连接到 MySQL 服务器的,比如 mysql-connector-java-x.x.xx.jar。..原创 2022-05-13 14:01:37 · 364 阅读 · 0 评论 -
jvm专题系列-11、字节码执行
1、javapclass文件反汇编工具public class Calc { public int calc() { int a = 500; int b = 200; int c = 50; return (a + b) / c; }}javap –verbose Calc显示如下:public int calc(); Code: Stack=2, Locals=4, Args_size.原创 2022-03-14 19:01:49 · 1191 阅读 · 0 评论 -
jvm专题系列-10、Class文件结构
1、语言无关性2、文件结构类型 名称 数量 u4 magic 1 u2 minor_version 1 u2 major_version 1 u2 constant_pool_count 1 cp_info constant_pool constant_pool_count - 1 u2 access_flags 1 u2 this_class 1 u2 s.原创 2022-03-14 17:40:22 · 734 阅读 · 0 评论 -
jvm专题系列-9、锁
1、线程安全示例多线程网站统计访问人数 使用锁,维护计数器的串行访问与安全性多线程访问ArrayListpublic static List<Integer> numberList =new ArrayList<Integer>();public static class AddToList implements Runnable{ int startnum=0; public AddToList(int startnumber){原创 2022-03-14 15:36:09 · 390 阅读 · 0 评论 -
jvm专题系列-8、Java堆分析
1、内存溢出(OOM)的原因在JVM中,内存区间包括(堆、永久区、线程栈、直接内存)1.1 堆溢出1.2 永久区1.3 栈溢出1.4 直接内存溢出遇到内存溢出后,应该如何思考和处理问题?2、MAT使用基础2.1 支配树2.2 浅堆(Shallow Heap)与深堆(Retained Heap)2.3 显示入引用(inc...原创 2022-03-13 10:37:34 · 254 阅读 · 0 评论 -
jvm专题系列-7、性能监控工具
1、系统性能监控确定系统运行的整体状态,基本定位问题所在1.1 uptime系统时间运行时间 例子中为7分钟连接数 每一个终端算一个连接1,5,15分钟内的系统平均负载 运行队列中的平均进程数1.2 top同uptime可以知道哪个程序占CPU最多1.3 vmstat1.4 pidstat细致观察进程需要安装 sudo apt-get install sysstat监控CPU监控IO监控内存..原创 2022-03-13 09:53:38 · 170 阅读 · 0 评论 -
MyCat入门及案例实操
1. Mycat概述如今随着互联网的发展,数据的量级也是成指数的增长,从 GB 到 TB 到 PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候 NoSQL 的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合 NoSQL 一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候 NoSQL 肯定是无法满足的,所以还是需要使用关系性数据库。如何使用原创 2022-02-22 17:06:38 · 1260 阅读 · 0 评论 -
jvm专题系列-6、类装载器
一、class装载验证流程加载链接验证准备解析初始化1.1 加载装载类的第一个阶段取得类的二进制流转为方法区数据结构在Java堆中生成对应的java.lang.Class对象1.2 链接 -> 验证目的:保证Class流的格式是正确的文件格式的验证是否以0xCAFEBABE开头版本号是否合理元数据验证是否有父类继承了final类?非抽象类实现了所有的抽象方法...原创 2021-12-22 17:10:18 · 696 阅读 · 0 评论 -
jvm专题系列-5、GC参数
一、堆的回顾二、串行收集器最古老,最稳定效率高可能会产生较长的停顿-XX:+UseSerialGC 新生代、老年代使用串行回收 新生代复制算法 老年代标记-压缩图2,暂略0.844: [GC 0.844: [DefNew: 17472K->2176K(19648K), 0.0188339 secs] 17472K->2375K(63360K), 0.0189186 secs] [Times: user=0.01 sys=0.00.原创 2021-12-21 14:59:51 · 140 阅读 · 0 评论 -
jvm专题系列-4、GC算法与种类
一、GC的概念 Garbage Collection 垃圾收集 1960年 List 使用了GC Java中,GC的对象是堆空间和永久区 二、GC算法2.1 引用计数法老牌垃圾回收算法引用计数器的实现很简单。 对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1 当引用失效时,引用计数器就减1。 只要对象A的引用计数器的值为0,则对象A就不可能再被使用存在问题 引用和去引用伴随加法和减法,影响性能 很难处理循环原创 2021-12-20 10:56:07 · 127 阅读 · 0 评论 -
jvm专题系列-2、jvm运行机制
一、JVM启动流程二、JVM基本结构2.1 PC寄存器每个线程拥有一个PC寄存器在线程创建时创建指向下一条指令的地址执行本地方法时,PC的值为undefined2.2 方法区保存装载的类信息类型的常量池字段,方法信息方法字节码通常和永久区(Perm)关联在一起JDK6时,String等常量信息置于方法 JDK7时,已经移动到了堆2.3 Java堆 和程序开发密切相关 应用系...原创 2021-12-06 11:50:19 · 80 阅读 · 0 评论 -
jvm专题系列-1、初识jvm
一、JVM的概念JVM是Java Virtual Machine的简称。意为Java虚拟机虚拟机 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统 有哪些虚拟机 VMWare Visual Box JVMVMWare或者Visual Box都是使用软件模拟物理CPU的指令集JVM使用软件模拟Java字节码的指令集二、JVM发展历史1996年 SUN JDK 1.0 Classic VM 纯解释运行,原创 2021-12-06 10:43:49 · 118 阅读 · 0 评论 -
jdk1.8之ConcurrentHashMap的读写操作
ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢?ConcurrentHashMap的简介我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。JDK原创 2021-11-24 18:12:10 · 1294 阅读 · 0 评论 -
Java中<? extends T>和<? super T>的理解
? 通配符类型- <? extends T> 表示类型的上界,表示参数化类型的可能是T或是 T的子类;<? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object;上界<? extends T>不能往里存,只能往外取比如,我们现在定义:List<? extends T>首先你很容易误解它为继承于T的所有类的集合,你可能认为,你定义的这个List可以用来put任何T的子类,.原创 2021-11-24 14:34:52 · 399 阅读 · 0 评论 -
java应用程序启动发布脚本
#!/bin/bashJAR_FILE=/app/services/project/data-access-1.0-SNAPSHOT.jarSTDOUT_FILE=/app/services/project/stdout.logJAVA_OPTS="-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "JAVA_DEBUG_OPTS=""if [ "$1" = "debug" ]; then JAVA_DEBUG_OPT..原创 2021-04-02 14:15:00 · 185 阅读 · 0 评论 -
java 集合的一些特点
Collection├List ├LinkedList ├ArrayList└Vector └Stack└SetMap ├Hashtable ├HashMap └WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(E转载 2017-08-09 09:38:46 · 320 阅读 · 0 评论