自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 35个Java代码优化细节

1.尽量指定类、方法的final修饰符带有final修饰符的类时不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,Java运行期优化能够使性能平均提高50%。2.尽量重用对象特别是String对象的使用,出现字符串连接时应该使用StringBuffer/Stri

2020-10-14 22:37:51 262

原创 MySQL面试之索引篇

1.什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找。2.索引是个什么样的数据结构?索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等。而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引。3.Hash索引和B+树索引有什么区别或者说优劣势?首先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据。B+树底层实现

2020-10-09 22:54:59 123

原创 oracle常用内置函数

/********************************日期类函数**********************************/--当前月份加2个月:add_monthsselect add_months(sysdate, 2) from dualselect add_months(to_date('2018-12-12', 'yyyy-MM-dd'), 2) from dual--指定日期和当前日期相差月份:months_betweenselect months_betwee

2020-07-13 23:37:00 118

原创 Windows下使用Vagrant+VirtualBox快速创建centos7虚拟机

使用vagrant up下载centos7慢的解决方法目标:在Windows上快速创建一台能ping通局域网及公网的centos7虚拟机1、下载并安装附件中的软件先安装VirtualBox:https://www.virtualbox.org/wiki/Downloads再安装vagrant:https://www.vagrantup.com/downloads.html下载需要的box:https://app.vagrantup.com/boxes/search以上资源我百度云也提供了一份:

2020-05-23 13:37:27 346

原创 Spring解决循环依赖的3种方式

循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用到new对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如何解决循环依赖的。Spring循环依赖第一种:构造器参数循环依赖第二种:setter方式单例,默认方式第三种:setter方式原型(prototype)第一种:构造器参数循环依赖Spring容器会将每一个正在创建的Bean标识符放在一个"当前创建Bean池"中,Bean标识符在创建过程中将一直保持在这个池中。因此如果在创建Bean过程

2020-05-21 16:37:45 395

原创 CASE WHEN THEN END用法

user表中sex字段,1代表男,2代表女,查询结果显示性别字段1、select *,case sex when 1 then '男' when 2 then '女' else '其他' end as '性别' from user2、select *,case when sex = 1 then '男' when sex = 2 then '女' else '其他' end as '性别' from userorder表,查询是首次下单和非首次下单金额select round(sum(case w

2020-05-21 15:18:15 457

原创 CAS简单介绍

CAS(Compare-And-Swap):比较并替换,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS比较当前工作内存中的值和主内存中的值,如果相同则执行规定操作,否则继续比较直到主内存和工作内存中的值一致为止。CAS并发原语体现在Java语言中就是sun.misc.UnSafe类中的各个方法。调用UnSafe类中的CAS方法...

2020-05-03 22:59:18 284

原创 ThreadLocal是什么?

ThreadLocal是线程本地存储,在每个线程中都创建了一个ThreadLocalMap对象,每个线程可以访问自己内部ThreadLocalMap对象内的value。经典的使用场景是为每个线程分配一个JDBC连接Connection。这样就可以保证每个线程的都在各自的Connection上进行数据库的操作,不会出现A线程关了B线程正在使用的Connection;还有session管理等问题。...

2020-05-03 16:17:34 85

原创 MySQL与SQL优化

MySQL DBMS-MySQL Database Management System。数据库管理系统。1. 结构图2. MySQL数据库引擎简介2.1 ISAM(Indexed Sequential Access Method)ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不...

2020-05-03 11:12:41 148 1

原创 HashMap为什么是线程不安全的

首先看一下HashMap的工作原理,回顾以下HashMap的结构:HashMap的结构就是哈希表,底层是一个数组,这个数组中尽可能地分散所有的key,通过key的hash值得到数组下标,然后把entry插入到该数组,假如有两个不同的key被分到相同发的下标,也就是哈希冲突,那么该数组在该下标下就会形成链表。为了减少冲突,我们需要时刻留意当前的size是否太大,检查是否需要扩容,一旦超过设定的...

2020-05-03 11:11:18 104

原创 synchronized用法(简单介绍)

简单介绍synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;修饰...

2020-04-29 21:26:02 535

原创 Java类的生命周期

一个Java类的完整的生命周期会经历加载、连接、初始化、使用和卸载五个阶段。JVM(Java 虚拟机)中的几个比较重要的内存区域方法区:在Java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。常量池:是方法区的一部分,主要用来存放常量和类中的符号引用等信息。堆区:用于存放类的对象实例。栈区:也叫Java虚拟机栈,是由一个一个的栈帧组成的...

2020-04-16 17:12:25 74

原创 Java对象的生命周期

对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。创建阶段一个Java类(除Object类外)至少有一个父类(Object),这个规则既是强制的,也是隐式的。你可能已经注意到在创建一个Jav...

2020-04-16 16:55:06 105

原创 SpringBoot自动化配置原理

SpringBoot的出现,得益于"习惯优于配置"的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都能被集成),这是基于Spring 4.x提供的条件配置Bean的能力。SpringBoot的配置文件SpringBoot有一个全局配置文件:application.properties或application.yml。我们的各种属性都可以在这个文件中进行配置,最常配置的比如:ser...

2020-04-16 15:59:01 205

原创 SpringBoot的条件注解

SpringBoot的自动化配置对于开发者来说,可能会从不同的角度体现这一点。首先搭建一个SpringBoot工程,接下来第一件事情可能就是添加依赖,在添加依赖的时候,我们是不需要添加版本号,给我们带来了很大的方便,做开发的小伙伴可能遇到不同版本的SpringBoot,对其他框架的依赖版本是有要求的,否则会出现意想不到的错误。那么SpringBoot是如何帮助我们自动添加版本的呢?我们知道,在工程...

2020-04-16 14:38:34 294

原创 MySQL事务

MySQL的InnoDB存储引擎,是通过事务来保证数据的一致性的。数据库事务通常包含了一个序列的对数据库的读/写操作。为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。特性事务的四个特性ACID。分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原...

2020-04-16 00:46:20 78

原创 Spring的面试题

问:在applicationContext.xml文件中定义了一个bean,id为authService,通过ApplicationContext实例对象的getBean方法到这个bean,这个背后的实现原理是什么?Spring容器启动的时候会解析applicationContext.xml,将xml中定义的bean(如authService)解析成Spring内部的BeanDefinition...

2020-04-15 00:48:24 164

原创 手写简单的Map接口实现

public interface Map<K,V> { V put(K k, V v); V get(K k); int size(); interface Entry<K,V> { K getKey(); V getValues(); }}public class HashMap&lt...

2020-04-13 23:34:08 190

原创 线程池ThreadPoolExecutor

为什么要用线程池,优势?线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。主要特点:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的损耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就...

2020-04-12 00:37:25 97

原创 volatile是什么

1、volatile是Java虚拟机提供的轻量级的同步(synchronized)机制 1.1、保证可见性 1.2、不保证原子性 1.3、禁止指令重排(有序性)2、JMM你谈谈 JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字...

2020-04-12 00:31:46 90

原创 FastDFS安装教程

1、安装gcc(编译时需要)FastDFS是C语言开发,安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gccyum install -y gcc gcc-c++2、安装libevent(运行时需求)若安装了桌面图形界面,就不需要安装;FastDFS依赖libevent库;yum -y install libevent3、安装li...

2020-02-10 18:58:39 260

原创 String类API的使用

String类的判断功能:* boolean equals(Object obj):比较字符串的内容是否相同* boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写* boolean startsWith(String str):判断字符串对象是否以指定的str开头* boolean endsWith(String ...

2019-03-01 15:24:10 144

原创 oracle左连接(用户表,中间表,角色表)的分页查询

select * from (select tt.,rownum as rowno from (select u.,r.rolename,ur.* from tb_system_user uleft join tb_system_user_role ur on u.id = ur.useridleft join tb_system_role r on r.id = ur.roleid ) tt...

2018-12-08 16:55:26 1460

原创 Oracle数据库,唯一标识ID(32)的生成

方法一:使用Sequence方法二:使用guid 获取方式:select sys_guid() from dual;SYS_GUID (),是Oracle 8i 后提供的函数。SYS_GUID产生并返回一个全球唯一的标识符(原始值)由16个字节组成。在大多数平台,生成的标识符由主机标符,执行函数的进程或者线程标识符,和进程或线程的一个非重复的值(字节序列)组成。可以用来生成唯一标识...

2018-12-08 16:44:39 2464

空空如也

空空如也

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

TA关注的人

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