自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 面试题:谈谈你对Mysql数据库优化的见解

数据库优化大体分为四个方面,一是数据库服务器的优化,二是架构的设计层面的优化,三是my.cnf配置的优化,四是sql语句的优化。一. 数据库服务器的优化1. 服务器硬件方面:影响Mysql性能因素主要有 CPU、可用内存大小、磁盘读写速度、网络带宽等;2. 操作系统方面:影响Mysql性能因素主要有 应用文件句柄数、系统的网络配置等;这部分的优化一般由DBA和运维工程师去完成,在硬件资源的优化中,我们重点关注的应该是服务本身所承载的体量,然后提出合理的指标要求避免出现资源浪费的想象。.

2022-02-20 12:23:10 2348

原创 Springboot项目打包实现配置、依赖包、jar分离

使用maven-assembly-plugin,对Springboot打包进行分离,以下代码直接复制粘贴,在按照给出的项目结构创建下,只需要修改pom.xml中的项目名字、Application的路径,assembly.xml中的id、打包格式即可使用。一.项目结构二.pom.xml所依赖插件 <build> <!--jar包名字 --> <finalName>sync</finalName> ..

2022-02-08 10:38:16 1884 1

原创 Mysql之常用工具介绍

一.mysql该 mysql 不是指 mysql 服务,而是指 mysql 的客户端工具。语法:mysql [options] [database]1. 连接选项参数 :-u, --user=name 指定用户名-p, --password[=name] 指定密码-h, --host=name 指定服务器IP或域名-P, --port=# 指定连接端口示例 :mysql -h 127.0.0.1 -P 3306 -u root -pmysql -h127.0.0...

2022-01-07 17:34:04 547 1

原创 Mysql之常用SQL技巧

一.SQL执行顺序1. 编写顺序SELECT DISTINCT<select list>FROM<left_table> <join_type>JOIN<right_table> ON <join_condition>WHERE<where_condition>GROUP BY<group_by_list>HAVING<having_condition>ORDER BY&..

2022-01-07 16:15:14 329

原创 Mysql之锁问题详细分析

一.锁概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。二.锁分类1. 从对数据操作的粒度分:1) 表锁:操作时,会锁定整个表;2) 行锁:操作时,会锁定当前操作行。2. 从...

2022-01-07 15:22:18 732

原创 Mysql之并发参数调整

一.前言从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在Mysql中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_cache_size、table_open_cahce。二.max_connections...

2022-01-06 17:17:10 222

原创 Mysql之内存管理及优化

一.内存优化原则1. 将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存;2. MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存;3. 排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。二.MyISAM 内存优化MyISAM 存储引擎使用 key...

2022-01-06 16:38:59 287

原创 Mysql之查询缓存介绍

一.概述开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存。二.操作流程流程图如下:1. 客户端发送一条查询给服务器;2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果,否则进入下一阶段;3. 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;4. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;5.先将...

2022-01-06 15:58:29 2650 1

原创 Mysql之索引失效原理分析

一. 前言索引失效是针对的是联合索引,在没有遵守最佳左法则、使用like和%、or 等情况下索引会失效。但是为什么索引会失效 ?索引失效和 Innodb 引擎的 B+树 存储方式有关,本文会对失效的原理进行逐一分析。二. B+树的索引1. 单索引的B+树如下图:单值索引在B+树结构里,一个节点只存一个键值对,键值对都是有序的。2. 联合索引的B+如下图:联合索引在B+树结构里,一个节点的键值对的数量不是1,而是大于等于2,键值对都是有序的。(1) 该图是由.

2022-01-06 14:32:58 4568 1

原创 Mysql之快速上手sql优化

一. 优化SQL步骤在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,本文将详细介绍在 MySQL中优化 SQL 语句的方法。本文将详细介绍,当面对一个有 SQL 性能问题的数据库时,应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题.

2022-01-05 17:53:15 706

原创 多路查找树

一.多叉树原理1.二叉树的问题分析:二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树:二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:(1) 问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响;(2) 问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度。2.多叉树概述:(1) 在二叉树中,每个节点有数据项,最多有两个子节点,...

2021-12-20 17:53:27 591

原创 彻底玩转单例模式

一.饿汉式1.代码如下:public class Hungry { private Hungry(){ } private static final Hungry hungry= new Hungry(); public static Hungry getInstance(){ return hungry; }}2.问题分析:public class Hungry { private static...

2021-12-07 11:58:19 410

原创 ElasticSearch7.6.x 快速入门到实战案例

一. 前提1. 版本选择:ElasticSearch7.6.1;2. 6.x 和 7.x的区别很大,6.x 是原生API;3. 以前做搜索都是通过 mysql进行搜索:like %java%,当大数据量的时候,速度十分慢,可以通过添加索引进行解决,添加索引后速度相对比较快点,但是本质还是达不到大数据的要求,此时就需要去使用一些分布式的全文搜索引擎;4.ElasticSearch:做搜索,百度、淘宝、github等都使用的它。二. Doug Cutting 介绍1. Go...

2021-10-25 15:40:01 824

原创 快速掌握JDK1.8中HashMap源码及常见面试题

HashMap源码前情提要1.什么是哈希?Hash也叫散列、哈希,对呀的英文是Hash;基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出;这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。2.哈希的特点(1)由于hash值不可以反推导出原始的数据;(2)输入数据的微小变化会得到完全不同的hash值,相同的数据会得到相同的值;(3)哈希算法的执行效率需要高效,因为使用很平凡,并且长的文本也能快速的计算出哈希值;(4)

2021-03-08 17:45:53 342

原创 稀疏数组

稀疏数组前情提要有一个需求:编写的五子棋程序中,有存盘退出和续上盘的功能分析问题:因为该二维数组的很多值是默认值 0, 因此记录了很多没有意义的数据,所以通过稀疏数组只对有用数据进行存储。1.稀疏数组概述1)当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。2)稀疏数组的处理方法是:a.记录数组一共有几行几列,有多少个不同的值;b.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。3)稀疏数组举例说明:.

2021-01-30 21:09:04 117

原创 二叉树(JAVA)

二叉树前情提要为什么需要树这种数据结构?我们通过对比数组、链表、树的优缺点来进行分析,分析如下:(1)数组存储方式的分析: 1)优点:通过下标方式访问元素,速度快;对于有序数组,还可使用二分查找提高检索速度; 2)缺点:如果要删除具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 。(2)链式存储方式的分析: 1)优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节...

2021-01-25 11:41:10 225 1

原创 平衡二叉树(JAVA)

平衡二叉树(AVL)前情提要平衡二叉树需要有二叉排序树的基础,平衡二叉树是对二叉排序树可能出现的性能问题进行优化。给定一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST),如下图所示:上图存在的问题分析:(1)左子树全部为空,从形式上看,更像一个单链表;(2)插入速度没有影响;(3)查询速度明显降低(因为需要依次比较), 不能发挥 BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢。解决方案:平衡二叉树(AVL)...

2021-01-22 13:59:56 204

原创 二叉排序树(JAVA)

二叉排序树前情提要需求: 给出一个数列 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数据的查询、添加、删除。解决方案分析: (1)使用数组: 1)数组未排序,优点:直接在数组尾添加,速度快; 缺点:查找速度慢; 2)数组排序,优点:可以使用二分查找,查找...

2021-01-20 21:41:08 212

原创 java的this关键词

一.this调用构造方法构造方法之间的相互调用需要使用this关键词1.构造方法调用格式this(参数列表);2.构造方法的调用class Person { // Person的成员属性 private int age; private String name; // 无参数的构造方法 Person() { } // 给姓名初始化的构造方法 Person

2017-12-15 17:25:47 368

原创 java的构造方法

一.构造方法介绍1.什么是构造方法对象创建的时候需要执行的方法2.构造方法的格式修饰符 构造方法名(参数列表){}3.构造方法的体现(1)构造方法没有返回值类型,也不需要返回值,因为它是为了构建对象的,对象创建完,方法就执行结束了(2)构造方法名必须和类名保持一致(3)构造方法没有具体的返回值class Person { // Person的成员属

2017-12-15 16:49:33 370

原创 CentOS6.5中安装tomcat

1.先安装好JDK查看这篇文章:CentOS6.5中安装JDK2.上传apache-tomcat-7.0.73.tar.gz3.创建tomcat目录#mkdir /usr/local/src/tomcat4.将上传的tomcat压缩包复制到新建目录下#cp apache-tomcat-7.0.73.tar.gz /usr/local/src/to

2017-12-14 10:41:50 339

原创 CentOS6.5中安装JDK

1.先卸载CentOS6.5自的open-jdk 查看这篇文章:卸载CentOS6.5自带的JDK2.上传linux版本的jdk:3.新建一个jdk安装目录:#mkdir /usr/local/src/java4.在上传的jdk压缩包目录下讲其拷贝到新建目录下:#cp jdk-7u75-linux-x64.tar.gz /usr/lo

2017-12-14 10:31:23 1243

原创 卸载CentOS6.5自带的JDK

1.查看CentOS6.5自带的JDK是否已经安装#Java -version2.查看JDK的信息#rpm -qa|grep java3.卸载JDK#rpm -e --nodeps tzdata-java-2013g-1.el6.noarch#rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.

2017-12-14 10:24:43 2899

原创 owner:java属性文件配置

一.OWNER入门1.什么是OWNER?OWNER是一个java库,其目标是通过Java属性文件来最小化处理应用程序配置所需的代码。2.OWNER的特点(1)简单:不需要代码来加载、转换和管理属性文件,仅仅只需要用最简单的方式使用属性(2)强大:基于注解、自动类型转换、变量扩张、参数化属性、热重载等(3)灵活:选择你需要的功能,屏蔽你不需要的,容易上手,具有丰富的文档

2017-12-04 11:07:54 2059 1

原创 集合浅析三:增强for循环

定义:增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。格式:for(元素的数据类型 变量 : Collection集合or数组){}Demo1://遍历数组int[] arr = new int[]{11,22,33};

2017-11-30 15:35:38 401

原创 集合浅析二:Iterator迭代器介绍

一.Interator迭代器概述java中提供了很多个集合,它们在存储元素时,采用的存储方式不同,所以取出的方式也有所不同;但是我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。该通用的方式如下:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出来;一直把集合中的所有元素全部取出,这种取出方式专业术语称为迭代。

2017-11-30 15:18:16 401

原创 集合浅析一:集合入门之Collenction接口

一.什么是集合集合是java提供的一种容器,可以用来储存多个数据二.集合的继承实现关系我们常用的集合是ArrayList集合,查看它的源码可以发现,它继承了AbstractList抽象类同时实现了List接口,然而List的接口又继承了Collection接口,所以Collection接口为最近顶层集合接口。源码:interface List exten

2017-11-30 14:41:45 661

原创 正则表达式匹配任意字符

问题:写该字符串(728b3e97663bb9a3-8b6df27c7c8892db-a7ed59234f76151a5c7d1ab3d6610850)的正则表达式,但是一直没找到"-"对应的表达式,后面发现可以用任意字符代替。两种解决方式:方式一:因为\s空白符,\S非空白符,所以使用[\s\S]是任意字符;方式二:直接使用[^]。正则表达式如下:

2017-11-29 11:56:10 893

原创 查看JVM内存信息的方法

通过如下一段代码可以查看JVM的内存信息:public class JVMmemory { public static void main(String[] args) { //JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设置不能高于计算机物理内存 long maxMemory = Runtime.getRuntime().maxMemory();

2017-11-24 10:31:15 929

原创 tomcat7之添加管理员账户

仅说明用户登录的配置在tomcat-users.xml配置如下代码:<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui" />分析:1.role参数:

2017-11-23 16:00:52 573

原创 tomcat7优化之JVM参数

JAVA程序启动的时候都会有JVM,都会分配一个初始化内存和最大化内存给应用程序,这个初始化内存和最大化内存在一定程度上影响应用的性能,当应用程序使用到最大内存的时候,JVM就要进行垃圾回收动作释放被占用的一些内存,所以需要自己调整Tomcat的JVM虚拟机内存的大小,为了调整初始化内存和最大化内存大小,我们就需要向JVM进行声明,一般通过-Xms和-Xmx进行设置。

2017-11-23 15:29:44 2172

原创 tomcat7优化之配置线程池

在tomcat目录下的conf中的server.xml中进行配置,一共分两步进行:第一步:添加如下代码<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="100" />分析:name:线程名字;namePrefix:线程的前缀;

2017-11-23 14:45:50 2535

原创 eclipse中报错:Dynamic Web Module 3.0 requires Java 1.6 or newer

eclipse中报如下错误:解决方案:第一步:查看Eclipse 的编译级别是不是1.7,不是就设置为1.7第二步:使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上;在pom.xml文件中添加如下代码: org.apache.maven.plugins maven-comp

2017-11-22 16:56:51 392

原创 EasyMock一:EasyMock简介

一.Mock介绍Mock 方法是单元测试中常见的一种技术:        它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开二.单元测试与Mock对象的比较1.单元测试是对应用中的某一模块进行测试        在单元测试中,常常是与其它模块协同进行测试,但是经常有遇到协同模块未开发完,或者是要与不易构造、复杂对象进行交

2017-11-16 16:23:52 570

原创 java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter解决方案

报错代码:java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892) at org.

2017-11-15 10:20:23 8919 4

原创 java的反射

一.反射的介绍java反射机制就是在运行状态的时候,能瞒住下面两点:1.对于任何一个类,都能够知道改类的所有属性和方法;2.对于任何一个对象,都能调用改对象的任何方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象,而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码

2017-11-13 15:43:01 316

原创 java的代码块

一.局部代码块局部代码块是定义在方法或语句中特点:1.以”{}”划定的代码区域,此时只需要关注作用域的不同即可2.方法和类都是以代码块的方式划定边界的class Demo{ public static void main(String[] args) { { int i = 1; System.out.println("普

2017-11-09 18:13:52 277

原创 java的匿名对象

匿名对象的概念匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。public class Person{ public void eat(){ System.out.println(); }}// 创建一个普通对象Person p = new Person();// 创建一个匿名对象new Person();匿名对象的特点

2017-11-09 17:53:04 270

原创 java的static关键字

一.static的使用场景::当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?为了解决上诉问题,我们需要使用static关键字:static是静态修饰符,一般用来修饰类中

2017-11-09 17:43:14 234

原创 java的final关键字

final的使用场景:1.有些类在描述完之后,不想被继承2.有些类中的部分方法功能是固定的,不想让子类重写为了解决上述问题,我们需要使用final修饰符:final是最终,不可变的意思,它可以用来修饰类,类的成员以及成员变量和局部变量final的使用分析:1.final修饰的类不可以配继承,但是可以继承其他类class A {} //A类fin

2017-11-09 16:44:47 222

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除