自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Deecyn's Blog

Java,Web,后端......

  • 博客(12)
  • 收藏
  • 关注

原创 详解 Synchronized 与锁

一、实现原理Java 中的每一个对象都可以作为锁,其具体表现为以下 3 种形式:对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的 Class 对象。对于同步方法块,锁是 Synchronized 括号里配置的对象。当一个线程访问同步代码块时,它首先需要得到锁才能继续执行代码块,当退出或抛出异常时必须释放锁,那么它是如何实现这个机制的呢?JVM 基于进入和退出监视器 Monitor 对象来实现方法同步和代码块同步,但两者的实现细节不一样:代码块同步: 基于 monitore

2020-08-24 01:17:26 219

原创 解析递归的本质:栈(多图预警!)

关于递归和栈。递归调用的本质就是栈的先进后出,递归可分为三个阶段:前进段:依次执行递归语句之前的代码,保存当前函数的现场(参数、局部变量等),并压入栈中。临界值:终止递归的前进段,通过 return 语句开始进入返回段。返回段:对于栈顶的函数,基于在前进段保存的函数的现场,依次执行递归语句之后的代码,执行完后出栈(执行 return 语句即出栈)。实战解析:两两交换链表中的结点仿照...

2020-04-10 12:53:20 1836 1

原创 一文解析 MyBatis Generator 的使用及配置

MyBatis-Generator 是 MyBatis 提供的一个代码生成工具,可以帮助我们生成数据库表对应的持久化对象(也称作 Model、PO)、操作数据库的接口(dao)、简单 SQL 的 mapper(XML 形式或注解形式)。MyBatis-Generator (常简写为 MBG 或 mbg)是一个独立工具,你可以下载它的 jar 包来运行,也可以在 Ant 和 Maven 中运行。其...

2020-04-06 21:50:53 767

原创 如何找到大于或等于一个整数的最小的 2 的幂?

在 Java 中,如何找到大于或等于一个整数的最小的 2 的幂呢?二、利用补码的「移位」和「按位或」操作1.操作原理首先,对于任意一个整数,若它为 2 的幂,则会有一个特点:它的二进制数(补码)只有一位最高位是 1,其它位全是 0 。根据这个特点可以找到思路:对于当前数的补码,先把最高位及以下的所有低位「变」成 1,然后再加 1 。例如,找到大于或等于 25 的最小的 2 的幂(这里只写 ...

2020-03-30 16:04:53 2326 2

原创 解析 String 的不可变性

问: Java 中的 String 类能不能被继承?为什么 String 有不可变性?这种设计有什么好处?一、String 的不可变性String 是 final 类型,final 类不能被继承。String 是不可变的,当修改已有字符串的值的时候,(如将 str = "abc" 修改为 “abcdef”),不是在原内存地址上修改数据,而是将原引用重新指向新对象、新地址。为什么不可变呢?...

2019-11-28 21:30:52 352

原创 关于Java中方法的重载与重写

问: 什么是方法重写?什么是方法重载?成员变量可以被重写吗?方法重载(Overloading):在一个类中,有两个及以上的方法,它们方法名称相同,但参数列表不同,这些方法互相称为重载方法。方法重写(Overriding):在子类和父类中,若有两个方法的名称和参数列表均相同,此时子类的方法将覆盖父类中的方法,称为方法重写。区别与联系:\重载(Overloading)重写(Ove...

2019-11-28 21:21:53 221

原创 Java 与值传递

问: 什么是值传递?什么是引用传递?为什么说 Java 中只有值传递?一、值传递与引用传递实参与形参:实际参数:在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中调用被调函数时,函数名后面括号中的参数称为“实际参数”。形式参数:在定义函数名和函数体时使用的参数,目的是用来接收调用此函数时传入的参数。值传递与引用传递:值传递:是指在调用函数时,将实际参数复...

2019-10-29 12:45:05 277

原创 MySQL 5.7 的安装历程

mysql5.7零基础入门级的安装教程:安装环境:Windows 10, 64 位(联想拯救者R720)安装版本:mysql-5.7.25-winx64一、下载1.进入官网首先,下载MySQL数据库可以访问官方网站:https://www.mysql.com2.选择版本点击 DOWNLOADS 模块下的 --> Community 模块下的 --> MySQL Comm...

2019-09-01 15:08:31 989

原创 记一次CentOS7-MySQL排坑历程

一、报错及起因今天在 CentOS7 中安装了 mysql5.7,然后为了测试数据库环境是否配置成功,便写了个基于 mybatis Spring 的 java web 程序连接操作 mysql 数据库,于是就一些发生了令人感到很烦的报错和故事:当程序涉及到关于数据库的操作如查询、插入等操作时,首先浏览器访问会很慢,进度条一直旋转,然后页面会报 500 错误:org.mybatis.spring...

2019-09-01 14:49:25 1169

原创 数组

一、认识数组数组是一种线性表数据结构。它用一块连续的内存空间,来存储相同类型的一组数据。1. 概念的理解线性表:顾名思义,线性表就是数据排列成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向,数组,链表,栈,队列等都是典型的线性表结构。与其相对立的,在非线性表中,数据之间并不是简单的前后关系,像树,堆,图等都是典型的非线性表。连续的内存空间和相同类型的数据:即计算机...

2019-09-01 14:21:43 896

原创 IDEA-Maven项目的jdk版本设置

在 Intellij IDEA 中,我们需要设置 Settings 中的 Java Compiler 和 Project Structure 中的 Language Level 中的 jdk 版本为自己目前使用的版本,否则会经常提示我们 jdk 版本不正确导致的语法错误。在 Maven 项目中,jdk 的配置也有一些额外需要注意的地方。比如配置为 jdk1.8 :但是在 Maven 项目中...

2019-09-01 13:25:21 1801

原创 自定义MyArrayList

PS:如果觉得文章有什么地方写错了,哪里写得不好,或者有什么建议,欢迎指点。ArrayList 类提供了 List ADT 的可增长数组的实现。一、自定义实现的 ArrayList 类 MyArrayList源码链接:戳此进GitHub查看MyArrayList 泛型类实现了 Iterable 接口从而可以拥有增强 for 循环(for each 循环)。public class M...

2019-08-30 22:36:02 289

空空如也

空空如也

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

TA关注的人

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