自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 问答 (4)
  • 收藏
  • 关注

原创 实现Springboot的自动装配

在springboot检测到有com.hy.testone.condition这个类时,才会去加载UserService。value为com.hy.testone.service.UserService。补充:还可以在resources/META-INF文件下添加spring-autoconfigure-metadata.properties文件,内容为。3.新建一个springboot项目名为testTwo,在main函数中调用UserService。该模块就只定义一个类UserService。

2023-12-18 15:53:54 422

原创 剑指 Offer 30. 包含min函数的栈

题目说明:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。题目链接:https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/

2023-03-23 23:19:21 88

原创 剑指offer 09.用两个栈实现队列

剑指offer 09

2023-03-23 22:13:24 91

原创 大文件按行数拆分成多个文件,大文件获取总行数

大文件按行数拆分,大文件获取总行数package com;import java.io.*;import java.nio.file.Files;import java.nio.file.Paths;import java.util.stream.Collectors;/** * 大文件按行数拆分,大文件获取总行数 */public class CopyFile { //被分割的大文件 private static String fileName = "H:\\tmp\

2021-07-25 16:55:42 602

原创 2021-03-08

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323.分析:实际上就是把这个数组排下序。但是这个排序有点特殊。要按特定排序将 '小' 的数放前面.import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class Solution {...

2021-03-08 10:02:46 83

原创 @Configuration

@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>相当于这个beans标签<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="ht

2020-09-21 14:49:15 130

原创 @Order注解

@Order的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响;1.@Order的注解源码解读@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})@Documentedpublic @interface Order { /**

2020-09-21 14:38:50 5728

原创 java8 中List根据某一属性排序两种方法的区别

java8 的排序有两种使用sorted方法排序 : 使用sort方法排序区别直接看代码public class Main { public static void main(String[] args) { //创建Users List<User> users = createUsers(); //排序 方式一 使用sorted排序 调用该方法后users依然无序,返回一个有序的sortUsers Lis.

2020-07-31 16:02:42 2649

转载 synchronized 的底层怎么实现的

详见 点击这里

2020-06-08 15:11:34 112

原创 什么是Java序列化,如何实现java序列化

序列化解释: 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。  序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(...

2020-06-08 14:39:31 542

原创 把String转换为Timestamp

把String转换为Timestamp Timestamp time=new Timestamp(new SimpleDateFormat("yyyy-MM-dd").parse("2020-04-25").getTime());

2020-04-25 10:14:32 12091 1

原创 求1到n的整数中出现1的次数

若求出1~13的整数中1出现的次数,那么包括1的数有1、10、11、12、13。因此共出现6次分析:我们要求1到n的整数中出现1的次数。思路是分别计算个位、十位、百位........上出现 1 的个数。以 n =216为例:个位上: 1 ,11,21,31,.....211。个位上共出现(216/10)+ 1个 1 。因为除法取整,210~216间个位上的1取不到,所以我们加8进...

2020-04-20 13:36:31 134

原创 给定一条数据,若数据库中有则更新该数据,没有则新增一条数据。使用merge into实现

1.merge into 的语法MERGE INTO table_name alias1USING (table | view | sub_query) alias2ON (join condition)WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col2_valWHEN NOT MATCHED ...

2020-04-17 16:33:15 1717 1

原创 求连续子数组的最大和

举例:{6,-3,-2,7,-15,1,2,2} 的连续子数组的最大和为8。从第0个开始,到第3个为止。方法一和方法二都采用递归解法。方法一:循环解法:public class Solution { public int FindGreatestSumOfSubArray(int[] arr) { return func(arr); } ...

2020-04-13 18:10:14 141

原创 用递归实现全排列

给定一个字符串,输出其所有的全排列思路:假设字符串的长度为1,则输出该字符 假设字符串的长度为2,则交换字符1和字符2 假设字符串的长度为n,则交换字符1和字符i(1<i<n) 剩下的长度为n-1的字符串继续用该方法进行递归。代码实现:package com.hy;import java.util.ArrayList;import java.util.Array...

2020-04-07 15:05:50 351

原创 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

找出一个数组中的最小的k个数思路:1.先对前k个数进行排序2.使用插入排序的思想将后面的小元素插入到前k个数中3.返回前k个数import java.util.ArrayList;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] arr, i...

2020-04-07 11:45:27 370

原创 输入一棵二叉搜索树,将树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

题目链接:点击此处飞至原题方法一:1.将二叉搜索树中序遍历出来,并把每个节点都保存在一个list中2.改变list中每个元素的指向/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val...

2020-04-03 17:54:51 218

转载 关于类加载器和getClass(),Object.class,getClassLoader的理解

详见关于getClass(),Object.class,getClassLoader的理解。

2020-04-03 12:43:05 273

原创 利用反射机制,使得list中可以存放不同类型的对象

首先建立一个泛型为Integer的list。随后利用反射机制使list中存放一个student对象辅助类 Studentpublic class Student { private int id; private String name; //getters and setters and toString @Override public String...

2020-04-03 12:00:25 1139

原创 通过反射实现对某个对象属性的注入

直接上代码辅助类 Student :public class Student { private String name; private int age; @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } }测...

2020-04-03 11:44:23 1352

原创 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在

方法一:使用map存储每个元素出现的个数import java.util.*;public class Solution { public int MoreThanHalfNum_Solution(int [] arr) { HashMap<Integer,Integer> map=new HashMap<Integer,Integer>()...

2020-03-22 01:50:35 256

原创 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序

方法一:分析:1.复制各个节点,使得原来的各个节点的next指向复制的节点2.复制各个节点的random节点3.把新旧节点分离注意:不能破坏给出的节点的结构/*public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = n...

2020-03-22 00:22:53 138

原创 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

注意递归出口:root为null或者左右节点访问完,返回返回时要注意把path的最后一个数据remove注意:不能把path直接add到res中。否则更改path的时候。res中的path也会随之而改变。这就是因为res中存的时path的引用,path发生改变时,res中的值会发生相应改变代码:import java.util.ArrayList;/**public ...

2020-03-20 23:31:11 342

原创 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

二叉搜索树的特点:遍历的时候,如果遇到比最后一个元素大的节点,就说明它的前面都比最后一个元素小,该元素后面的所有值都必须大于最后一个值,这两个条件必须都要满足。否则就说明该序列不是二叉树后序遍历。代码:public class Solution { public boolean VerifySquenceOfBST(int [] arr) { if(arr==nu...

2020-03-18 00:49:36 172

原创 从上往下打印出二叉树的每个节点,同层节点从左至右打印。

考虑用队列来实现。队列的常用方法:容量不够或队列为空时不会抛异常:offer(添加队尾元素)、peek(访问队头元素)、poll(访问队头元素并移除) 容量不够或队列为空时抛异常:add、element(访问队列元素)、remove(访问队头元素并移除注意:在Java中Queue是和List、Map同等级别的接口,LinkedList中也实现了Queue接口,代码:imp...

2020-03-17 23:40:40 78

原创 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.

题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)代码:import java.util.*;public class...

2020-03-17 23:09:56 200

原创 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

分析:使用两个栈实现,一个用来存数据,另一个用来存最小值import java.util.Stack;public class Solution { Stack<Integer> stack=new Stack<Integer>(); Stack<Integer> min=new Stack<Integer>();...

2020-03-17 21:19:35 197

原创 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,

步骤:用四个变量(up ,down,left,right)模拟数组的边界,1.输出最上的一行,再up++。再判断up是否>down,若是,则break。2输出最右的一行,再right--。再判断left是否>right,若是,则break。3.输出最下的一行,再down--;再判断up是否>down,若是,则break。4.输出最左的一行,再left++。再判断l...

2020-03-17 17:52:19 208

原创 操作给定的二叉树,将其变换为源二叉树的镜像。

题目描述:操作给定的二叉树,将其变换为源二叉树的镜像分析:采用递归,将左右节点交换,递归出口:当节点为空时返回/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...

2020-03-17 17:02:31 144

原创 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

doesTree1HasTree2:该函数用来对比root1中是否包含root2当root1先为null,则表示root1不包含root2当root2先为null,则表示root2包含root1/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = nul...

2020-03-17 16:54:11 81

原创 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

方法一:直接比较法(笨办法)以list1为基础,list2的节点比list1的大,并且比list1的下一个节点小,则把该节点插入到list1,并且list1和list2都指向下一个节点若不符合该条件,则list1指向下一个节点注意:需要注意当list1节点到最后时要避免空指针/*public class ListNode { int val; ListNode ...

2020-03-17 15:46:36 70

原创 输入一个链表,输出该链表中倒数第k个结点

考虑使用快慢指针分析:要得到倒数第k个节点,步骤:1.让fast指针先走k步,2.让fast指针和low指针一起走,3.循环的出口:当fast指针刚好走完整个链表,即fast==null,此时low指针的指向刚好时倒数第k个节点/*public class ListNode { int val; ListNode next = null; Li...

2020-03-17 01:18:10 103

原创 单链表的反转

只需要四个指针,分别指向当前节点(B),前一个节点(A)和后一个节点(C)和head指针实际上只需要三个指针,C可以用A.next表示。步骤:1.将A的next指向C2.将B的next指向head3.更新head4.将C作为下一个要移动的节点,即把C 当作再B重复1,2,3过程5.当B为空时,跳出循环节点的定义:/** * 单个节点的定义 * @autho...

2020-03-17 00:59:27 72

原创 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

方法一:考虑用冒泡排序算法public class Solution { public void reOrderArray(int [] array) { for(int i=0;i<array.length;i++){ for(int j=0;j<array.length-i-1;j++){ if(...

2020-03-16 23:39:50 104

原创 快速排序

以数组的第一个数作为基准值,当右边遇到比基准值小的,再找左边比基准值大的,则将这两个值交换。一直到左边的下标等于右边的下标,再跳出循环。详细代码:import java.util.Date;public class TestTwo { public static int[] quickSort(int [] arr,int begin,int end) { //判空 if...

2020-03-16 22:40:54 76

转载 十大排序算法

常用十大算法的介绍及实现点击此处直达链接https://blog.csdn.net/weixin_41190227/article/details/86600821

2020-03-16 19:56:16 84

原创 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0

方法一:使用内置函数Math.pow(base,exponent)方法二:暴力递归解法public class Solution { public double Power(double base, int exponent) { if(exponent==0&&base!=0){ return 1D; }...

2020-03-16 17:13:52 214

原创 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

1.原码,反码和补码正整数的原码和反码及补码都是它本身负整数的原码是它本身。其反码是最高位不变,其余位取反。其补码是反码加1.如1的原码是0000 0001,反码和补码都是0000 0001。-1的原码是1000 0001,反码是1111 1110,补码是1111 1111。2.Integer.toBinaryString(int n):该函数表示将一个int转化成其对应的二进...

2020-03-16 00:13:08 79

原创 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:分析:我们对算法模型做些简化,我们知道,只可以放置两种类型的小矩形,一种是竖着放的2*1矩形,另一种是两块横着放的2*1矩形上下放置形成的2*2正方形,而题目要放置的是2*n的大矩形。要放置的是2*n的...

2020-03-15 19:06:50 862

原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

此题与 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 有所区别,详看青蛙跳台阶分析:n个台阶设有f(n)种跳法要跳n个台阶,可以先跳1个台阶,剩下的n-1个台阶有f(n-1)种跳法 可以先跳2个台阶,剩下的n-2个台阶有f(2-1)种跳法 ...

2020-03-15 17:51:08 395

空空如也

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

TA关注的人

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