自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 【IDEA插件开发】idea插件开发你应该知道的网站和工具

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、网站二、工具1. Internal Actions2.读入数据总结前言如果你是第一次接触idea插件开发,那么提前知道以下几个网站和工具,对你快速掌握idea插件技能和协助你开发idea插件具有事半功倍作用提示:以下是本篇文章正文内容,下面案例可供参考一、网站

2021-12-26 22:51:13 975 1

原创 【IDEA插件开发】Quick Fix 快速修复插件开发

idea 插件开发,演示自己实现idea的quick fix功能

2021-12-22 00:19:26 3227

原创 【周志明JVM笔记】前端编译与优化

前端编译与优化概述在Java技术下谈“编译期”而没有具体上下文语境的话,其实是一句很含糊的表达,因为它可能是指一个前端编译器,也可能是指Java虚拟机的即时编译器,还可能是指使用静态的提前编译器。前端编译器:准确说应该是“编译器的前端”,把*.java文件转变成*.class文件的过程。JDK的Javac、Eclipse JDT中的增量式编译器(ECJ)即时编译器:常称JIT编译器,Just In Time Compiler,运行期把字节码转变成本地机器码的过程。HotSpot虚拟机的C1、C2

2021-05-17 12:54:30 271

原创 二维数组的多种遍历方式

记录二维数组,即矩阵的多种遍历方式。有以下二维矩阵:1、沿对角线向右上角遍历如图方式遍历,沿对角线向右上角遍历。按遍历的下标依次是:第一轮遍历:(0,0),(1,1),(2,2),(3,3),(4,4)第二轮遍历:(0,1),(1,2),(2,3),(3,4)第三轮遍历:(0,2),(1,3),(2,4)第四轮遍历:(0,3),(1,4)第五轮遍历:(0,4)设遍历的轮次为i,且对于任意一个被遍历的元素下标为(k, j),从上述遍历顺序看,有 j in [i, param[0].le

2020-05-22 01:00:06 2860

原创 【面试】Java GC过程

问:说一下Java gc过程。听到这个问题第一反应是很懵????,等等,Java gc的过程,不问一下哪个垃圾回收器的gc过程吗??不同的垃圾回收器的gc过程不是不一样的吗???一脸懵逼不知道该怎么回答好,把CMS讲一遍还是说几个垃圾回收算法??太嫩了,遇到这种问题大脑就一片空白,总结一下。我觉得这个问题问的实在是让我不知道该怎么回答,既然这样,大致说一下gc的内容应该是可以的吧。最开始的,肯定是...

2020-04-10 00:52:52 373 1

原创 【java】抽象同步队列AQS

1、什么是抽象同步队列? 抽象同步队列AQS(AbstractQueueSynchronized)是实现同步器的基础组件,并发包(J.U.C)包中锁的底层就是使用AQS实现的。2、AQS核心思想 AQS核心思想是,如果被请求的共享资源空闲,则将当前线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,...

2020-04-09 11:30:24 187

转载 【设计模式】——设计模式的六大原则

1. 单一职责原则:定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同...

2020-04-09 00:17:18 86

原创 【设计模式】——模板方法模式

1、什么是模板方法?模板方法模式就是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。2、看一个例子假设现在要冲泡两种饮料,咖啡和茶。他们的冲泡步骤分别如下:咖啡:把水煮沸,用热水泡咖啡,把咖啡倒进杯子,在咖啡中加入牛奶和糖茶:把水煮沸,用热水浸泡茶叶,把茶倒进杯子中,在茶中加入柠檬可以看到,冲泡两种...

2020-04-09 00:12:29 152

原创 【设计模式】——适配器模式

1、什么是适配器模式?适配器模式就是将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器。适配器可分为类适配器和对象适配器。###2、适配器模式主要涉及3个类型。Target:目标抽象类,即客户所需接口,可以是接口,也可以是具体类。Adapter:适配器类,适配器模式的核心类,对Adaptee和Target类进行适配。通常通过实现或继承Target类,...

2020-04-09 00:11:58 192

原创 【设计模式】——单例模式

1、什么是单例模式?单例模式就是保证一个类只有一个实例,并提供一个访问它的全局访问点。2、为什么要使用单例模式?在系统中,有些对象只需要存在一个,或者说这类对象若存在多个,则有可能导致一些问题,如:资源过量使用、程序行为异常和数据不一致等问题。数据库连接池、线程池等都是这类对象。3、使用单例模式的好处?节省创建对象的时间,特别是对于那些重量级对象而言。new操作次数减少,能够降低...

2020-04-09 00:11:16 136 1

原创 【设计模式】——概述

1、什么是设计模式?设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。2、使用设计模式的目的是什么?有什么作用?能干嘛?使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、易维护性和程序的重用性。3、设计模式有几大类型?有多少种?设计模式有3大类型,共23种,分别是:创建型模式:单例模式、简单工厂(不是23种之一)、工厂方法模式、抽象...

2020-04-09 00:10:28 78

原创 【mybatis】SqlSession运行过程——SqlSession的四大对象

在映射器Mapper的动态代理中,了解到mybatis是如何通过Mapper接口的全限定名和方法名来运行SQL的,接下来我们要看看SqlSession底层是怎么运行SQL的。实际上,SqlSession的执行过程是通过Executor、StatementHandler、ParameterHandler和ResultSetHandler来完成数据库操作和结果返回的,这就是SqlSession的四大...

2020-04-09 00:09:08 1004

原创 【mybatis】SqlSession运行过程——映射器Mapper的动态代理

1、什么是SqlSession?SqlSession是mybaits的核心接口,在mybatis中有两个实现类,DefaultSqlSession和SqlSessionManager。DefaultSqlSession是单线程使用的,而SqlSessionManager在多线程环境下使用。SqlSession的作用类似于一个JDBC中的Connection对象,代表着一个连接资源的启用...

2020-04-09 00:08:32 848

原创 mybatis是如何根据映射器(mapper.xml文件)生成sql语句?

mybatis是如何根据映射器(mapper.xml文件)生成sql语句?当XMLConfigBuilder解析映射器xml文件时,会将每一个SQL语句和其配置的内容保存起来。一般而言,在mybatis中一条SQL与它相关的配置信息是由MappedStatement、SqlSource和BoundSql等三个部分组成的。MappedStatement的作用是保存一个映射器节点(s...

2020-04-09 00:07:32 2811

原创 实现线程安全的方法

1、互斥同步互斥同步是最常见的一种并发正确性保障方法,一般使用Synchronized和JUC包下的可重入锁(即ReentrantLock和ReentrantReadWriterLock中的WriterLock)互斥同步是一种悲观的并发策略2、非阻塞同步非阻塞同步是基于冲突检测的乐观并发策略。采用CAS算法实现的同步操作,常见的有ReentrantReadWriterLock中的Re...

2020-04-09 00:06:15 405

原创 Java泛型,真实泛型和伪泛型

1、什么是泛型?泛型是JDK1.5的一项新增特性,本质是参数化类型的应用,也就是说所操作的数据类型被指定为一个参数。泛型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。2、为什么要使用泛型,用Object不行吗?如果没有使用泛型,而是使用Object,那么只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化。同时,使用Object就有可能转...

2020-04-09 00:04:54 1544

原创 【笔记】spring 生命周期

什么是控制反转和依赖注入?谁控制谁?Ioc容器控制bean的生命周期,由ioc容器来控制bean的初始化、实例化、销毁等,ioc容器即是资源(对象)的管理者。 控制什么?对象。 为何要反转?不反转的话,需要资源的使用者手动创建对象,代码耦合度较高,通过反转能够使代码大大解耦。 哪些方面反转了?创建对象的权力反转了,以前是有资源的使用者开创建对象,现在由ioc容器来创建对象。依赖注入是手...

2020-03-11 23:23:38 96

原创 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。

第一种class Solution { public int[] countBits(int num) { int[] a = new int[num+1]; for(int i=0;i<=num;i++){ a[i] = a[i >> 1] + (i&1); } ...

2019-10-17 14:52:38 1380

原创 【java】最大堆和最小堆的建立

最大堆public class MaxHeap { private static int size = 0; private void maxHeap(int k, Integer key, Integer[] array){ while (k > 0){ //父节点,即array的中点 int paren...

2019-10-06 03:43:14 738

原创 使用InheritableThreadLocal的细节

ThreadLocal不支持继承性,即在子线程中无法使用父线程的ThreadLocal,因此提供了InheritableThreadLocal来实现在子线程中也能使用父线程的ThreadLocal。在使用InheritableThreadLocal时,应该注意,父线程中对InheritableThreadLocal变量的赋值要先于对子线程的定义,例如 Runnable ru...

2019-09-26 11:32:40 197

原创 idea配置本地tomcat

第一步:点击下面Tomcat旁边的“下三角”第二步:选择+ 添加服务器,选择local本地第三步:配置tomcat属性从上至下,分别是,服务器名字,选择本地服务器,默认打开的浏览器,启动时的url,选择jre版本,端口号第四步:选择对应的项目,这里选择第一个第五步:确认注意:如果这里/boot_mvc修改了,相应的url也要修改,不然浏览器无法访问。...

2019-09-10 00:46:24 401

原创 搭建redis哨兵模式

主从同步:在多台数据服务器中,只有一台主服务器(master),只负责写入数据,不负责让外部程序读取程序。 有多台从服务器(slave),从服务器不写入数据(写入会出错),只负责同步主服务器的数据,让外部程序读取数据。 主服务器写入数据后,从服务器即可同步主服务器数据,即主从数据同步。 应用程序随机读取某一台从服务器数据。 当某一台从服务器不能工作时,整个系统不受影响;当主服务器不能工...

2019-09-06 00:20:12 116

原创 mybatis的级联和延迟加载配置

概述存在数据库表:--班级表create table t_clazz( id int(12) not null auto_increment, cla_name varchar(64) not null , primary key (id));--学生表create table t_student( id int(12) not null au...

2019-09-02 14:06:16 380

原创 java实现最小栈

实现一个栈,该栈带有出栈(pop)、入栈(push)和取最小元素(getMin)3个方法。3个方法时间复杂度都是O(1)。以{4,9,7,3,8,5}入栈为例。下图两个栈,第一个栈stack1用来存储所有元素,第二栈stack2用来存储最小元素。对于入栈(push)操作,当第一个元素4入stack1栈时,同时入stack2栈。在后续元素入stack1时,与stack2的栈顶元素比较,若该元...

2019-08-22 23:52:28 198

原创 java实现判断一个数是否为2的整数次幂

给定一个正整数,判断它是不是2的整数次幂。某一正整数n是2的整数次幂时,二进制都是最高位为1,其余位都为0;原数值-1后二进制的所有位都为1。因此将n和n-1逻辑与后值为0。 private static boolean isPowerOfTwo(int n){ return (n & (n-1))==0; } public stati...

2019-08-22 22:34:09 1340

原创 java实现三种方式求最大公约数

/** * 欧几里得算法:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。 */ private static int gcdV1(int a,int b){ int big = a > b ? a : b; int small = a < b ? a : b; ...

2019-08-22 21:33:20 1352 1

原创 java实现判断链表有环

判断链表有环使用两个指针left和right指向起点,每次left指针向后走一步,right指针向后走两步,上图是两个指针走一次后的结果。直到left和right指针再次指向同一个节点,说明该链表是有环链表。 private static boolean isCycle(Node node){ if (node == null){ thr...

2019-08-22 17:34:39 383

原创 java实现希尔排序

希尔排序算法描述:将一个数据序列分成若干组,每组由若干相隔一段距离(称为增量delta)的元素组成,在一个组内采用直接插入排序算法进行排序。 增量delta初值通常为数据序列长度的一半,以后每趟增量减半,最后值为1。随着增量逐渐减小,组数也减少,组内元素个数增加,数据序列接近有序。例如:数组{38,55,65,97,27,76,28,13,19},初始增量delta为4,则{38,27...

2019-08-21 00:08:55 166

原创 java实现直接插入排序和二分法插入排序

直接插入排序:第i趟排序将第i+1个元素temp插入到0-i的有序序列当中。将temp与0-i个有序元素向前进行比较,当0-i有序元素中的第j个元素小于temp时,将第j+1至i个元素向后移动一位,同时将temp插入到j+1中。重复上述步骤i趟完成排序。 二分法插入排序:将上述temp与0-i个有序元素进行比较更改为使用二分查找找到temp插入的下标,减少比较次数,但移动次数不变。publi...

2019-08-20 21:17:12 294

原创 RdsvgtmYAQ

RdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQRdsvgtmYAQ

2019-08-20 20:20:15 90

原创 java实现旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的旋转,输出旋转数组的最小元素。例如,输入{3,4,5,1,2},输出1。array表示递增排序旋转数组,使用left和right指针分别代表数组的左边界和右边界,数组中间元素的下标mid = (left+right)/2。一个标准的递增排序旋转数组,总是有array[left] >= array[r...

2019-07-24 06:02:37 271

原创 java实现“两个队列实现栈”

两个队列,inputQueue和outputQueue。其中inputQueue用于入栈操作时存放元素,outputQueue用于辅助出栈操作。例如,入栈元素01234,在inputQueue中存放01234,出栈时,将0123转移到outputQueue,此时inputQueue只剩元素4,4出栈后,将outputQueue中的0123在转移到inputQueue中。public cl...

2019-07-22 23:24:44 287

原创 java实现“用两个栈实现队列”

使用两个栈实现队列,并提供一个队列尾部插入节点和队列头部删除节点方法。两个栈,一个栈作为入列栈inputStack,一个栈作为出列栈outputStack。对于入列操作,直接将元素push到inputStack中。对于出列操作,outputStack存在元素时,outputStack直接pop;outputStack为空时,检查inputStack是否为空,inputStack...

2019-07-22 18:14:27 143

原创 java实现给定二叉树的某一个节点求的下一个节点

给定一棵二叉树和其中的一个结点,找出中序遍历序列的下一个节点。(树中的节点有指向左右子节点和父节点指针)。二叉树节点类public class TreeNode { private int item; private TreeNode left; private TreeNode right; private TreeNode parent; p...

2019-07-22 03:25:09 413

原创 java实现根据前序遍历和中序遍历重建二叉树

前序遍历:{1,2,4,7,3,5,6,8}中序遍历:{4,7,2,1,5,3,8,6}根据前序遍历第一个元素“1”,可以将中序遍历分成左右子树,左子树{4,7,2},右子树{5,3,8,6}。接着,根据前序遍历第二个元素“2”,将“1”的左子树{4,7,2}分为左子树{4,7},右子树{}。再根据前序遍历第三个元素“4”,将“2”的左子树{4,7}分为左子树{},右子树{7}。...

2019-07-22 03:14:25 722

原创 java实现堆排序

public class HeapSort { /** * 采用最大堆升序排序数组 * @param array 已经构建好但未排序的二叉堆数组 * @param border 数组边界,此边界指向最想最后一个“删除”的数据 *(即在数组中最左侧的“删除”数据)。初始值为数组的长度length。 */ public static...

2019-07-15 04:04:23 108

原创 java实现冒泡排序

基础冒泡排序/** * 基础冒泡排序 * @param arrays 数组 * @return 返回排序后数组 */ public static int[] bubbleSort1(int[] arrays){ if (arrays == null){ return null; } ...

2019-07-15 01:12:48 101

原创 java实现快速排序

分别采用双边循环法和单边循环法实现快速排序public class QuickSort { /** * 双边循环法实现快速排序 * @param arrays 待排序数组 * @param left 需要排序数据左指针下标 * @param right 需要排序数据右指针下标 */ public static void qu...

2019-07-14 23:53:06 165

原创 maven搭建ssm框架

<!-- 集中定义依赖版本号 --> <properties> <junit.version>4.12</junit.version> <spring.version>4.1.3.RELEASE</spring.version> <mybatis.version&...

2019-07-11 00:24:48 228

原创 使用maven创建mybatis逆向工程

第一步、使用maven创建项目默认选项,不需要点击“Create from archetype”。创建成功。第二步、pom.xml文件加入以下依赖和插件 <dependencies> <dependency> <groupId>org.mybatis</groupId> ...

2019-06-21 16:45:49 478

管理信息系统13版部分章节重点

管理信息系统13版部分章节重点

2018-12-05

劳顿管理信息系统13版习题集

劳顿管理信息系统13版习题集全部

2018-12-05

空空如也

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

TA关注的人

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