自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeeCode No.179最大数

题目描述:给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:“210”示例 2:输入:nums = [3,30,34,5,9]输出:“9534330”示例 3:输入:nums = [1]输出:“1”示例 4:输入:nums = [10]输出:“10”提示:1 <= nums.length <= 1000 <=

2021-09-16 22:19:24 101

原创 JavaWeb常见面试题

gethepost的区别?1.get请求数据只能放在url的queryString中(URL问号后边紧跟的)post请求数据既可以放在queryString中,又可以放在body中。2.get请求数据的长度有限,并且是ascii字符,对方要以同样的编码格式进行解码。post数据放在body中相对于get更加安全。3.get请求一般设计为幂等的,post一般为非幂等(幂等:不论操作多少次效果完全一样,比如说刷新页面,修改操作一般不是幂等的)4.get请求一般可以被缓存,将资源缓存起来,免得 下次

2021-08-25 16:19:44 149

原创 Spring浅析

Spring是什么?在javaEE当中,我们不得不提到Spring框架这个东西,那么Spring框架究竟指的是什么东西呢?在Spring的官网当中,我们可以看到一个醒目的标题:                   “Spring makes Java Simple.”正如他的标题缩所描述的,在Java的编程中,使用Spring能够让我们更快速,更容易,并且更安全的完成开发。Spring专注于速度,便捷与开发效率,正式因为这一点,也让Spring成为了全世界最流行的Java框架。Spring Fr

2021-08-20 23:27:28 185

原创 八大排序-选择排序

选择排序选择排序在宏观上,可以看成是逆着进行排序,我们知道,冒泡排序,每进行一轮排序之后,数组中最大的元素会走到数组的最后一个位置,对于选择排序来说,每进行一次排序,数组中最小的元素都会走到第一个位置,所以。我们总共需要进行n-1轮排序。最后一个元素已经是最大的了不用再进行判断。1.每一轮排序时都让i指针所指的元素跟后边元素进行比较,2.如果i大于j所指的元素,就让i和j的值互换,3.始终保持i指针所指的是当前待排数组中最小的那个元素,4.一轮遍历完成之后,i当前所指的元素就是最小元素,此时i++

2021-08-17 00:52:28 79

原创 八大排序-希尔排序(shell)

希尔排序(shell)希尔排序实际上是属于对直接插入排序的一次优化,具体的流程为:1.每次都定义一个gap,将数组中的元素每gap个分为一组,2.然后通过对每一组的第j个元素进行直接插入排序,3.gap依次缩减,直到最终gap的值等于1,此时就相当于进行了直接插入排序,4.这样做的目的是为了让原本非常杂乱无序的数组变得相对有序,然后在使用直接插入排序效率就会高很多。代码实现如下://shellSortpublic static void shellSort(int[] array){ i

2021-08-17 00:14:13 83

原创 八大排序-冒泡排序

冒泡排序原理及代码实现(C++)冒泡排序算法的基本定义冒泡排序是数据结构课程中一种比较简单的排序算法,其重要的思想就是相邻数据的“两两交换”,实质上就是指从第一个元素开始,依次比较相邻元素的大小,将较大的元素放在后面,然后继续比较下一组元素的大小,重复上述的操作,直到没有数据可以进行比较。这样进行下来的操作称之为一轮操作,一轮操作结束后,这组数据中的最后一个元素便是这组数据中最大的元素。此后再次执行新的一轮排序,即从第一个元素开始,依次两两比较相邻两个元素的大小,将较大的元素向后移一位,重复该步骤,

2021-08-16 23:39:15 67

原创 八大排序-直接插入排序

直接插入排序直接插入排序算法的核心思想是:将一个数字往已经排好序的序列中找到合适的位置进行插入,重复该步骤。例如:一次一次每次指针i所指的位置标记为key,指针j指向前一个元素,也就是i-1位置,依次判断j的值和key的值,如果j的值比key大,则将j的值向后移,腾出空间,j–,直到找到一个可以将key值放下的位置,将此处的值赋值为key。代码实现如下: //insertSort public static void insertSort(int[] array){

2021-08-16 23:27:30 111

原创 AVL树(二叉平衡搜索树)

AVL树AVL树也叫二叉平衡搜索树。看到这个名字又不得不提起平衡树和搜索树搜索树的定义:对于一棵二叉树,要想使之成为搜索树需满足一下条件:1.任取一个节点,左孩子.key<自身.key<右孩子.key。2.中序遍历是有序的。注意,此时key值比较不仅仅是针对于左孩子,而是左孩子及左孩子中所有的子节点,比如:就不是一棵搜索树,因为左子树中6这个节点的值不小于根节点的值,所以不能称之为搜索树。平衡树的定义:AVL中对平衡(Balance)的定义:如果:在一个树中任取一个

2021-08-15 09:00:53 208

原创 线程-线程池

什么是线程池?  线程池也是实际开发中的一个重要组件并发编程这个里面是希望精益求精。  一开始,多进程。进程的创建销毁,开销太大,于是就引入了线程,  但是创建线程的开销也不小,频繁创建销毁,还是挺难的,于是又发明了一个东西“协程”。但是在协程广泛使用之前,为了解决线程的创建销毁开销,就引入了线程池~  把一些线程提前创建好,用的时候,直接从池子里面取一个线程就用,用完了也不是直接销毁,而是重新放回到池子里。为什么需要线程池?  在学校附近新开了一家快递店,老板很精明,想到一个与众不同的

2021-08-13 12:05:44 119

原创 14.最长公共子前缀

题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。输入输出示例:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提示信息:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成解题思路:

2021-08-12 12:49:34 238

原创 阻塞队列-消息队列

目录阻塞什么是阻塞?阻塞队列消息队列队列,先进先出~阻塞什么是阻塞?1、这个队列是线程安全的(内部进行了加锁控制)。2、当队列满的时候,往队列里插元素,就会阻塞,,直到队列不满才会进行插入操作。当队列为空的时候,从队列里取出元素,此时也会阻塞。。一直阻塞到队列不为空的时候才完成取元素操作。阻塞队列可以帮我们完成“生产者消费者模型”生产消费者模型:规模稍微大一点的程序,势必会用到生产者消费者模型~~(包饺子模型)一个人擀饺子皮(生产者),多个人包饺子(消费者)。生产者将饺子皮放到一个地方,

2021-08-10 12:11:40 1970

原创 单例模式初了解

目录单例模式单例模式的实现单例模式的风格饿汉模式懒汉模式单例模式线程安全问题那么该如何保证线程安全呢?单例模式单例模式是一种设计模式,  所谓设计模式,就像棋谱一样,针对了一些特定的场景,已经产生了对应的解决方案。比如:  我们在学习JDBC的时候创建的一个数据源DataSource就应该是一个单例。  还有,在实际开发中还有一些负责加载数据到内存的类,也应该是单例,  因为这样的类一般有几个G,甚至十几个G,如果不是单例的话,每次运行都要占用大量的内存,单例模式相当于从语法的角度,强制规定

2021-08-10 11:09:24 83

原创 如何保证线程的安全?(synchronized)

  上篇中我们提到了多线程中可能存在线程不安全的情况发生,那么针对此问题我们应该怎么去解决呢,如下图,如果按照这样的顺序执行线程,必定会造成数据的丢失,也就产生了线程安全问题.   下面介绍一种解决线程安全问题的解决方法,那就是:加锁!!!synchronized 关键字(监视器锁) 他的功能就是,保证了操作的原子性,同时,禁止了指令的重排序和保证了内存的可见性。synchronized的底层是使用操作系统的mutex lock实现的。  在要执行的操作加上synchronized关键字后,再次

2021-08-08 15:19:10 405

原创 多线程安全问题

目录线程不安全的原因一个例子明白线程不安全解决线程不安全问题(原子性)总结线程不安全的原因  我们知道,在系统中线程的执行机制是“抢占式”执行的过程,他就是导致我们线程不安全的“万恶之源”,但是呢,这样的执行机制是操作系统的内核自己实现的,程序猿无法干预,所以,这个问题属于环境问题。对于环境问题,我们无法改变,只能学会适应。一个例子明白线程不安全  对于系统中线程不安全的例子:相信大家都有购买过火车票或者高铁票的经历:  小明和小红都想要明天下午西安-北京的高铁,但是通过购票软件查看票只剩下最

2021-08-08 11:41:52 67

原创 图书管理系统—JavaSE实现

图书管理系统目录图书管理系统一、项目框架二、图书模块代码1、Book2、BookList三、操作模块代码1、新增图书2、借阅图书3、删除图书4、显示所有图书5、退出系统6、查找图书7、操作接口8、归还图书四、用户登录模块代码1、管理员2、普通用户3、用户抽象类一、项目框架1、在idea中新建一个项目取名为:BookManagement。2、在项目的src目录下按照以下结构创建对应的 包 和.java文件。          二、图书模块代码1、Bookpackage book;/**

2021-05-31 16:35:58 252 1

原创 排序-归并排序

归并排序   归并排序(Merge-Sort) 是建立在归并操作上的一种有效的排序算法,该算法是采用了分治法的一个典型应用。具体思想是:    将已经有序的子序列进行合并,从而得到完全有序的序列,即先使得每个子序列有序,在将子序列进行合并,保证合并后是有序的。上图中:1、首先对整个序列进行两两拆分,直到每个序列都只有一个数据,2、然后将子序列依次进行合并,合并的时候进行排序,从而保证合并后的序列都是有序的。3、重复上述步骤,直到所有的序列被合并为一个序列,这个序列就是归并排序后的序列。 

2021-05-14 17:01:08 61

原创 二叉树的基本概念及遍历(先中后)序

树形结构:在思考二叉树之前我们需要先对“树”这种结构有一定的认识:树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i<= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可

2021-05-07 11:37:47 472

原创 Java中的抽象类和接口

java中的抽象类和接口这里写目录标题java中的抽象类和接口一、什么是抽象类?二、什么是接口?三、抽象类与接口的区别?一、什么是抽象类?提起抽象类,我们不得不谈起另一个名词:抽象方法,在java当中被关键字abstract所修饰的方法,我们称之为“抽象方法”。那么如果一个类包含了一个抽象方法,那么这个类就被叫做抽象类。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不

2021-04-20 16:51:45 71

原创 237. 删除链表中的节点

题目描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.public void deleteNode(ListNode node) { node.val = node.

2021-04-18 21:19:10 56

原创 21.合并两个有序链表

合并两个有序链表题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。实现: public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode newhead = new ListNode(); ListNode cur = newhead; while (l1 != null && l2 != null) {

2021-04-17 23:19:10 47

原创 猜数字游戏

题目描述:完成猜数字游戏。从键盘输入每次猜的数字,系统提示猜的值比实际值“大了”或“小了”。直到猜中数字。 //题目14:完成猜数字游戏 public static void main14(String[] args) { Scanner scan = new Scanner(System.in); Random random = new Random(); //随机数类,如果给定了一个时间戳,那么给定的数字都是一样的了

2021-04-16 20:51:13 57

原创 最大公约数

题目描述:解法一:求两个整数的最大公约数。例如:输入:18 24输出:6 public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请依次输入两个正整数:"); int num1 = scan.nextInt(); int num2 = scan.nextInt(); i

2021-04-16 20:45:22 46

原创 打印乘法口诀表

题目描述:打印输出乘法口诀表在这里插入代码片 public static void main(String[] args) { int i = 1; while (i <= 9) { int j = i; while (j <= 9) { System.out.printf("%d*%d=%2d ", i, j, i * j); j++;

2021-04-16 20:33:01 64

原创 打印素数(1-100)

题目描述:打印1-100以内所有的素数。(素数:只有1和他本身两个因数) public static void main(String[] args) { int i = 1; while (i <= 100) { int j = 2; int flg = 1; //定义一个标志来记录,1代表质数,0代表合数。 while (j <= (

2021-04-16 20:30:14 4335 1

原创 判断素数(只有1和它本身两个因数)

题目描述:从键盘循环输入,判定一个数字是否是素数(只有1和它本身两个公因数)。输0退出! public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (true) { System.out.println("请输入一个整数(输0退出):"); int num = scan.nextInt();

2021-04-16 20:25:34 609

原创 夹哇基础知识总结part6(类和对象)

类和对象目录类和对象类和对象的基本概念什么是类?什么是对象?类的定义构造方法代码块匿名对象类和对象的基本概念什么是类?类是一种自定义类型,是一种模板,通过一个类可以产生多个对象,(印刷模子)一个类可以产生多个对象什么是对象?对象是一个实体,将类的一个实体化,(印刷出的纸)!面向对象的三大特征:封装、继承、多态。类的定义类包含两部分,一个是成员属性,一个是成员方法 访问修饰限定符,     public:公有的     private:私有的     protected:受保护的

2021-04-10 22:58:54 91

原创 夹哇基础知识总结part5(数组)

Java当中的数组目录Java当中的数组(一)、一维数组1、数组的定义2、数组的初始化3、一维数组的遍历4、下标越界(二)、二维数组1、二维数组的定义2、二维数组的遍历3、不规则数组Arrays数组工具类中常用的方法:1、数组是存放相同数据类型的集合,内存是连续的2、Java中数组存在堆上,new : 实例化一个对象,定义一个数组,其实就是定义一个对象,(一)、一维数组1、数组的定义 public static void main(String[] args) { int

2021-04-03 16:10:40 82

原创 夹哇基础知识总结part4(方法的使用)

Java当中方法的使用目录Java当中方法的使用一、方法是什么?二、方法的书写规范三、实参与形参的关系四、方法的重载五、递归(我调我自己)经典的可用递归求解的问题1、求一个数的阶乘(递归)2、按顺序打印一个数字的每一位3、求1+2+3+4+.....+n4、斐波那契数列一、方法是什么?1、java方法 对应 c语言的函数。2、方法就是一个代码片段,可以看做是一个功能。3、能够模块化的组织代码。让代码能够被重复使用,简化开发。4、main()也是一个方法二、方法的书写规范   public s

2021-03-31 19:21:02 69

原创 夹哇基础知识总结part3(逻辑控制)

java中的逻辑控制目录java中的逻辑控制(一)分支结构(1)switch……case……(2)if……else……(二)循环结构(1)while()……(2)for()……(3)do……while() 其他tipsbreak;continue;(一)分支结构  分支结构,顾名思义,指的是程序运行到该处,经过该逻辑控制语句后,会选择其中一条分支向下执行。就像开车时遇到分叉路口一样,我们只能从中选择一条路继续行驶,分支结构亦是如此。。。(1)switch……case……switch的用法规则是:

2021-03-29 22:32:23 86

原创 夹哇基础知识总结part2(运算符)

Java中的运算符目录Java中的运算符(一) 算术运算符(二)复合运算符(三)关系运算符(四)逻辑运算符(五)条件运算符(一) 算术运算符算术运算符可分为:双目运算符: ‘ + ’ , ‘ - ’ , ‘ * ’ , ‘ / ’ ,‘ % ’ .单目运算符: ’ ++ ’ , ’ - - '.首先,双目运算符中:加减乘除这太简单了8,就不多说了,最后一个‘%’读作“模”,表示取余数,例如:4%3 = 1,15%4 = 3.它和

2021-03-24 21:17:55 94

原创 夹哇基础知识总结part1(基础数据类型)

Java中的数据类型(变量)一、整形(int)整形int 长度:4个字节可以表示正数,也可以表示负数,由于他占4个字节,以一个字节占8位来看,一个int类型数据总共占32位。在这32位中,第一位,也就是最高位是符号位,用于标识整数或者是负数。用0代表正数,1代表负数。那么他在内存中能够表示的整数的范围就是:-231~231-1.二、长整形(long)长整形long 长度:8个字节可以表示正数,也可以表示负数占8个字节,总共64位,除去最高位符号位,剩下的63位为数值位,故他能够表示

2021-03-21 13:51:30 174 2

空空如也

空空如也

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

TA关注的人

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