自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码农翻身的博客

专门用于收集归纳、总结整理学习过程中不会的、常见的问题及答案

  • 博客(70)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 SpringBoot自定义拦截器

执行顺序前置Filter---->前置Interceptor---->controller---->后置Interceptor---->后置Filter实现步骤:1、创建自己的拦截器类并实现 HandlerInterceptor 接口。2、创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法。(SpringBoot 2.0之前)SpringBoot 2.0 后,WebMvcConfigurerAdapter被

2022-05-11 11:28:49 455

原创 【SmartGit】SmartGit.破.解

【SmartGit】SmartGit无限期使用教程感谢大佬们提供的资源https://gitee.com/pedoc/crackSmartGit一、首先安装好SmartGit,安装过程请自行百度二、打开Gitee链接下载资源https://gitee.com/pedoc/crackSmartGit/releases下载下来后就是这两个东西:三、正式开始破解%用户名% 为自己电脑的用户名打开用户目录:C:\Users%用户名%\AppData\Roaming\syntevo\SmartG

2020-08-27 15:07:49 4878

原创 快速排序【Java实现】

public static void main(String[] args) { int arr[] = {60,30,70,90,50,10,40,80}; System.out.println("排序前:"+ Arrays.toString(arr)); quickSort(arr,0,arr.length-1); } /* * 左标记的作用是找到一个比基准值pivot大的数字 * 右标记的作用是找到一个比基...

2020-07-02 22:37:49 700 1

原创 插入排序【Java实现】

插入排序法介绍:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。插入排序法思想:插入排序(InsertionSorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表插入排序思路图:插入排序的过程演示 @Test

2020-07-02 16:11:44 181

原创 使用异或运算(^)交换两个数的值

通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:a=10100001, b=00000110a=a^b; //a=10100111b=b^a; //b=10100001a=a^b; //a=00000110

2020-07-02 13:57:46 1014

原创 选择排序【Java实现】

选择排序基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。选择排序思想:选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1]~arr[n-1]

2020-07-01 18:13:02 206

原创 冒泡排序【Java实现】

来源:尚硅谷http://www.gulixueyuan.com/my/course/319冒泡排序基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的

2020-07-01 00:36:59 285

原创 算法的时间复杂度

来源:尚硅谷 http://www.gulixueyuan.com/my/course/319算法的时间复杂度时间频度基本介绍时间频度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。忽略常数项2n+20 和 2n 随着n 变大,执行曲线无限接近, 20可以忽略3n+10 和 3n 随着n 变大,执行曲线无限接近, 10可以忽略忽略低次项忽略系数结论:随着n值变

2020-06-30 17:03:05 972

原创 JUnit单元测试注解

一、常用注解JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有:@BeforeClass 全局只会执行一次,而且是第一个运行@Before 在测试方法运行之前运行@Test 测试方法@After 在测试方法运行之后允许@AfterClass 全局只会执行一次,而且是最后一个运行@Ignore 忽略此方法...

2020-06-29 08:58:34 300

原创 【Java IO流】缓冲流

IO流 处理流之一:缓冲流为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类 时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。 缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:BufferedInputStream 和 BufferedOutputStreamBufferedReader 和 BufferedWriter当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区当使用BufferedInputS

2020-06-28 19:23:14 201

原创 【Java IO流】节点流(或文件流)

节点流(或文件流)定义文件路径时,注意:可以用“/”或者“\”。在写入一个文件时,如果使用构造器FileOutputStream(file),则目录下有同名文 件将被覆盖。如果使用构造器FileOutputStream(file,true),则目录下的同名文件不会被覆盖, 在文件内容末尾追加内容。在读取文件时,必须保证该文件已存在,否则报异常。字节流操作字节,比如:.mp3,.avi,.rmvb,mp4,.jpg,.doc,.ppt字符流操作字符,只能操作普通文本文件。最常见的文本文 件:.t

2020-06-28 15:57:12 202

原创 【Java IO流】OutputStream和Writer

OutputStream & WriterOutputStream ** 和 Writer ** 是所有输出流的基类。**OutputStream ** void write(int b/int c) void write(byte[] b/char[] cbuf) void write(byte[] b/char[] buff, int off, int len) void close() 需要先刷新,再关闭此流因为字符流直接以字符作为操作单位,所以 Writer 可以

2020-06-28 15:03:07 1088

原创 【Java IO流】IO流的分类

IO流的分类按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流抽象基类字节流字符流输入流InputStreamReader输出流OutputStreamWriterJava的IO流共涉及40多个类,实际上非常规则,都是从如下4个 抽象基类派生的。由这四个类派生出来的子类名称都是以其父类名作为子类名后缀IO 流体系...

2020-06-27 21:51:17 216

原创 【Java IO流】InputStream和Reader

尚硅谷:http://www.gulixueyuan.com/course/311InputStream & ReaderInputStream 和 Reader 是所有输入流的基类。InputStream(典型实现:FileInputStream) int read() read(byte[] b) int read(byte[] b, int off, int len)Reader(典型实现:FileReader) int read() int read(

2020-06-27 11:17:49 309

原创 【Java IO流】File类的使用

File类的使用java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。File对象可以作为参数传递给流的构造File 类的使用:常用构造器public File(String pathname)

2020-06-26 12:00:56 181

原创 Java泛型总结

源出处:尚硅谷:http://www.gulixueyuan.com/my/course/311一、泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的 对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来 解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于 这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个 参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个就 是类

2020-06-23 00:15:53 155

原创 Java集合框架的总结整理

源出处:尚硅谷:http://www.gulixueyuan.com/my/course/310Java集合框架的总结整理Java集合框架概述Java集合框架概述一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点:数组初始化以后,长度就确定了。数组声明的类型,就决定了进行元素初始化时的类型

2020-06-13 12:08:56 231

原创 ArrayList源码分析及扩容机制

ArrayList的主要成员变量://数组默认初始容量private static final int DEFAULT_CAPACITY = 10;//定义一个空的数组实例以供其他需要用到空数组的地方调用 private static final Object[] EMPTY_ELEMENTDATA = {}; /*定义一个空数组,跟前面的区别就是这个空数组是用来判断ArrayList第一添加数据的时候要扩容多少。默认的构造器情况下返回这个空数组 */private static fi

2020-06-11 22:57:24 214

原创 Java Map接口的常用方法

来源:尚硅谷:http://www.gulixueyuan.com/my/course/310Map接口概述Map与Collection并列存在。用于保存具有映射关系的数据:key-valueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应 的类,须重写hashCode()和equals()方法常用String类作为Map的“键”key 和 value 之间存在单向一对一关系,即通过指定的 key 总

2020-06-09 16:10:00 2286

转载 哈希表的数据结构

转载自:https://www.jianshu.com/p/b468abd86f61Hash表的结构图:数组 + 链表哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表白话一点的说就是通过把Key通过一个固定的算法函数(hash函数)转换成一个整型数字,然后就对该数字对数组的长度进行取余,取余结果就

2020-06-06 22:35:52 2567

转载 Java Collection接口方法

Java Collection接口方法来源:Java8中文版 http://www.matools.com/api/java8

2020-06-02 22:41:19 347

原创 Java Iterator迭代器接口

源出处:尚硅谷http://www.gulixueyuan.com/my/course/310Iterator迭代器接口Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素GOF给迭代器模式的定义为:提供一种方法访问一个容器(container)对象中各个元 素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生。类似于“公 交车上的售票员”、“火车上的乘务员”、“空姐”。Collection接口继承了java.lang.Iterable接口,该

2020-05-29 22:57:51 373

原创 Java List接口常用方法

源出处:尚硅谷:http://www.gulixueyuan.com/my/course/310Collection子接口之一: List接口List接口概述鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据 序号存取容器中的元素。JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。

2020-05-29 20:06:30 660

原创 数据结构知识结构框架图

来源:尚硅谷 http://www.gulixueyuan.com/my/course/310

2020-05-28 17:29:22 368

转载 fail-fast快速失败机制

fail-fast俗称快速失败,是在多线程进行迭代操作时产生冲突的一种异常抛出机制,下面我们就由ArrayList来深入理解Java中的fail-fast机制.1. fail-fast简介“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制。某个线程在对collection进行迭代时,不允许其他线程对该collection进行结构上的修改。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,

2020-05-28 14:53:16 276

原创 Java枚举类的使用

主要内容:如何自定义枚举类如何使用关键字enum定义枚举类Enum类的主要方法实现接口的枚举类枚举类的使用类的对象只有有限个,确定的。 举例如下:- 星期:Monday(星期一)、......、Sunday(星期天)- 性别:Man(男)、Woman(女) - 季节:Spring(春节)......Winter(冬天) - 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银 行卡)、CreditCard(信用卡) - 就职状态:

2020-05-24 22:18:56 500 1

原创 StringBuffer和StringBuilder的源码解析及扩容机制

StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储StringBuffer和StringBuilder在底层实现和内存结构上是一样的,它们的方法的作用也是一样的,只不过StringBuffer里的方法都被声明为了同步方法(用synchronized关键字修饰),所以才产生了线程安全和线程不安全的问题。由于它们的底层实现内存结构都是一样的,所以现在以S.

2020-05-18 19:45:23 800 1

原创 Java String常用方法

int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolean isEmpty():判断是否是空字符串:return value.length == 0String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写String toUpperCase():使用默认语言环境,将 String 中的所有字符转..

2020-05-17 16:24:52 122

原创 Java使用线程池创建多线程

在JDK5.0之前,创建线程有2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。新增方式:使用线程池背景

2020-05-16 12:03:21 1776

原创 【Java面经整理】wait()、notify()、notifyAll()

ps:Java面试题整理专栏,专门收集整理搬运面试题和答案wait() 与 notify() 和 notifyAll()wait():令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当 前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有 权后才能继续执行。notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待notifyAll ():唤醒正在排队等待资源的所有线程结束等待.这三个

2020-05-16 11:37:29 272

原创 Java实现Callable接口创建多线程

在JDK5.0之前,创建线程有2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Java实现Callable接口创建多线程:/** * 例子:遍历100以内的偶数,并计算100以内所有偶数的总和

2020-05-15 23:21:21 1278

转载 Java锁都有哪些?

转载自:http://blog.itpub.net/31545684/viewspace-2375117/Java15种锁的介绍在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁 / 非公平锁可重入锁 / 不可重入锁独享锁 / 共享锁互斥锁 / 读写锁乐观锁 / 悲观锁分段锁偏向锁 / 轻量级锁 / 重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进

2020-05-15 18:42:01 258

原创 【Java线程通信】线程1、线程2交替打印1-100

【Java线程通信】线程1、线程2交替打印1-100线程通信的例子:使用两个线程打印1-100 线程1,线程2 交替打印涉及到的三个方法:wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。说明:1.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或

2020-05-15 17:42:40 312

原创 Lock锁方式解决线程安全问题

Lock锁方式解决线程安全问题Lock(锁)从JDK 5.0开始,Java提供了更强大的线程同步机制——通过显式定义同 步锁对象来实现同步。同步锁使用Lock对象充当。java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的 工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象 加锁,线程开始访问共享资源之前应先获得Lock对象。ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和

2020-05-15 11:53:08 436

原创 synchronized与Lock的区别与联系

Lock和synchronized的比较Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现。synchronized发生异常时,会自动释放线程占有的锁;而Lock在发生异常时,如果没有主动通过unLock()方法去释放锁,则可能会造成死锁,因此使用Lock时需要在finally块中释放锁。Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断。通过Loc

2020-05-14 17:33:52 290 1

原创 Java的几种锁

1. 可重入锁如synchronized和ReentrantLock都是可重入锁,可重入性实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。当一个线程执行到某个synchronized方法时,如method1方法,而在method1中会调用另一个synchronized方法method2,此时线程不必重新去申请锁,而是可以直接执行method2。如递归方法的调用,如果递归方法被synchronized修饰,如果synchronized不是可重入的,这样就会出现自己等待自己释放锁的情况。

2020-05-14 17:13:34 201

原创 Java同步代码块和同步方法处理Thread类和Runnable的线程安全问题

Java同步代码块和同步方法处理Thread类和Runnable的线程安全问题源出处:http://www.gulixueyuan.com/my/course/310例子:创建三个窗口卖票,总票数为100张问题:卖票过程中,出现了重票、错票 -->出现了线程的安全问题问题出现的原因:当某个线程操作车票的过程中,操作尚未完成时,其他线程参与进来,也操作车票。如何解决:当一个线程a在操作ticket的时候,其他线程不能参与进来。直到线程a操作完ticket时,其他线程才可以开始操作ticket

2020-05-14 15:20:27 324

原创 Java 线程的生命周期及五种状态转换

Java 线程的生命周期及五种状态转换JDK中用Thread.State类定义了线程的几种状态想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态:新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态,如 Thread t = new MyThread();就绪: 处于新建状态的线程调用线程对象的start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的

2020-05-10 23:33:13 877 2

原创 【Java面经整理】Thread中,run方法和start方法的区别

java Thread中,run方法和start方法的区别,下面说法错误的是?ps:Java面试题整理专栏,专门收集整理搬运面试题和答案链接:https://www.nowcoder.com/questionTerminal/8b92d18f34a743adbdb1f2e76a8d2232来源:牛客网java Thread中,run方法和start方法的区别,下面说法错误的是?A.通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。B.他们都可以实现了

2020-05-10 20:35:56 730

原创 Java方法执行内存分析

以下程序在JVM中如何执行?public class testMethod(){ public static void main(String[] args){ int a = 10; int b = 20; int retValue = sumInt(a, b); System.out.println("retValue = " + retValue); ...

2020-05-06 14:55:32 995

Mappings.rar

【迁移到 AndroidX】support库与对应的AndroidX artifacts和类的映射 If you run into issues with migration, refer to these tables to determine the proper mappings from the support library to the corresponding AndroidX artifacts and classes:

2020-04-09

MyStore-RegisterAndLogin-master.zip

基于JavaWeb的购物商城,实现注册登录功能,具体请查看CSDN博客。

2019-08-23

Setup CrypTool 2.1 (Stable Build 7997.1).exe

CrypTool门户为每个人提高了对加密技术的认识和兴趣。 CrypTool项目中的所有学习程序都是开源的,并且是免费的。CrypTool项目在密码学和密码分析领域开发了世界上最广泛的免费电子学习程序。 CrypTool是CrypTool开发的杂类共享软件。

2019-06-06

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

TA关注的人

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