Java
Memorial*
我只想静静的写程序
展开
-
使用poi导入导出Excel(实测有效)
使用poi导入导出Excel原创 2022-07-22 14:14:41 · 5278 阅读 · 2 评论 -
Maven解决依赖冲突的方法
1.使用命令查找依赖冲突命令:mvn -Dverbose dependency:tree如果在执行结果中出现omitted for conflict with这样的字样,就表示项目中存在依赖冲突也可以发现core包发生了版本冲突。2.解决依赖冲突 发现了冲突的包之后,剩下的就是选择一个合适版本的包留下,如果是传递依赖的包正确,那么把显示依赖的包去掉。 如果是某一个传递依赖的包有问题,那么我们需要手动把这个传递依赖去掉。 ...原创 2021-09-14 18:24:39 · 1292 阅读 · 0 评论 -
LeetCode--852. 山脉数组的峰顶索引
符合下列属性的数组 arr 称为 山脉数组 :arr.length >= 3存在 i(0 < i< arr.length - 1)使得:arr[0] < arr[1] < ... arr[i-1] < arr[i]arr[i] > arr[i+1] > ... > arr[arr.length - 1]给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < ar.原创 2021-06-15 23:16:31 · 273 阅读 · 0 评论 -
反转链表--java实现
题目:输入一个链表,反转链表后,输出新链表的表头。示例:输入:{1,2,3}复制返回值:{3,2,1}原创 2021-06-14 22:48:20 · 1033 阅读 · 4 评论 -
LeetCode 374题 猜数字大小
题目描述:猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pic原创 2021-06-14 22:35:02 · 201 阅读 · 2 评论 -
java-建造者模式
建造者模式:他不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器(或静态工厂),得到一个builder对象,然后客户端在builde对象上调用类似setter的方法,来设置每个相关的可选参数, 最后,客户端调用无参的builder方法来生成通常是不可变的对象。...原创 2021-06-09 22:44:55 · 123 阅读 · 0 评论 -
java-静态域与静态方法
静态域与静态方法静态域:即static关键字,每个类中只有一个这样的域,每个类中的静态域被所有实例所共享,该静态域属于类,不属于任何独立的对象。 静态常量:使用final关键字修饰的常量,即不允许再修改,但被所有实例共享。 静态方法:一种不能向对象实施操作的方法。没有隐式参数即没有this参数。静态方法使用场景:不需要访问对象状态,其所需参数都是显示参数提供。 一个方法只需要访问类的静态域。 工厂方法:常用静态工厂方法来构造对象。...原创 2021-06-09 22:41:45 · 267 阅读 · 0 评论 -
java实现http请求的几种方式
转载:https://blog.csdn.net/riemann_/article/details/90539829转载 2021-04-18 10:31:51 · 241 阅读 · 0 评论 -
Java实现数据缓存
1.利用HashMap加同步说明:把HashMap当作缓存容器。每缓存一个key的时候,都进行同步。代码:package memory;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * Created by adrian.wu on 2018/12/12. */public class MemorySecond<K, V> implements Computable&原创 2021-01-31 20:13:05 · 4907 阅读 · 0 评论 -
SpringBoot了解自动配置原理
1、SpringBoot特点1.1、依赖管理父项目做依赖管理依赖管理 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version><.原创 2020-12-27 20:16:26 · 147 阅读 · 2 评论 -
SpringBoot和缓存
Cache缓存快速使用:启动类:package com.atguigu.cache;import org.apache.ibatis.annotations.Mapper;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplic原创 2020-12-20 21:27:05 · 114 阅读 · 0 评论 -
默默刷题---------215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4采用冒泡排序:public class Demo09 { public static void main(String[] args) { int[] arr= {3,2,3,..原创 2020-06-29 20:54:50 · 161 阅读 · 0 评论 -
springboot模板引擎--------thymeleaf
1、引入thymeleaf; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>2、Thymeleaf使用@ConfigurationProper原创 2020-06-27 16:55:47 · 172 阅读 · 0 评论 -
WebJars——web端静态资源的jar包
1、WebJars介绍Web前端使用了越来越多的JS或CSS,如jQuery,Backbone.js和Bootstrap。一般情况下,我们是将这些Web资源拷贝到Java Web项目的webapp相应目录下进行管理。这种通过人工方式管理可能会产生版本误差,拷贝版本错误,漏拷等现象,导致前端页面无法正确展示,版本不一致,文件混乱等,导致出现一些莫名其妙的错误等。WebJars是将web前端资源(js,css等)打成jar包文件,然后借助Maven工具,以jar包形式对web前端资源进行统一依赖管理,保原创 2020-06-16 16:04:42 · 281 阅读 · 0 评论 -
leetcode---面试题29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i].length&...原创 2020-06-05 14:58:31 · 174 阅读 · 0 评论 -
LeetCode-238. 除自身以外数组的乘积
给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分...原创 2020-06-04 14:17:44 · 184 阅读 · 0 评论 -
每日一题1.--------LeetCode35 - 搜索插入位置
package com.LeetCode;/** * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 * <p> * 你可以假设数组中无重复元素。 */public class SearchInsert { public static void main(String[] args) {...原创 2020-04-12 10:40:19 · 110 阅读 · 0 评论 -
Java——Collection集合
1、使用ArrayList存储若干学生的姓名,编写一个方法,找出集合中姓名长度大于5的,将其放在新的List返回public class Student { private String name; public Student() { } public Student(String name) { this.name = name;...原创 2020-02-27 22:34:08 · 184 阅读 · 0 评论 -
java面向对象练习
一:* 1,声明Shape类,声明一个计算面积的方法getArea* 2,声明ShapeOpr类,其中有一个方法printArea,接收参数Shape,用于得到某形状的面积,并直接输出* 3,声明测试类public class Shape { private int r; public Shape() { } public Shape(int ...原创 2020-02-25 23:14:49 · 688 阅读 · 1 评论 -
java---数组
4.1 声明一个整型数组,大小为10,循环依次赋值为1的平方,2的平方....一直到10的平方 4.2 计算该数组中所有元素的平均值 5.3 计算该数组中偶数之和减去奇数之和的结果package com.Arry;/** * 4.1 声明一个整型数组,大小为10,循环依次赋值为1的平方,2的平方....一直到10的平方 * 4.2 计算该数组中所有元素的平均值 * ...原创 2020-02-17 22:49:21 · 337 阅读 · 0 评论 -
Java日常练习
4,计算1-1000之间所有的质数之和/** * 求1000以内的所有质数的和 */public class Demo06 { public static void main(String[] args) { int sum = 0; for (int i = 1000; i > 1; i--) { boolean ...原创 2020-02-16 15:01:23 · 233 阅读 · 0 评论 -
java校招面试----运去哪
1.基本数据类型:整型(byte、short、int、long)浮点型(float、double)字符型(char)布尔型(boolean)2.String、StringBuffer和StringBuilder:String:不可变,线程安全StringBuffer:可变,线程安全StringBuilder:可变,线程不安全3.HashMap和HashTable的区别H...原创 2020-01-01 16:49:10 · 570 阅读 · 1 评论 -
Collection底层数据结构
Collection1. ListArraylist:Object数组 Vector:Object数组 LinkedList:双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环)2. SetHashSet(无序,唯一):基于 HashMap 实现的,底层采用 HashMap 来保存元素 LinkedHashSet:LinkedHashSet 继承于 Hash...原创 2019-11-25 11:41:58 · 277 阅读 · 0 评论 -
。。。。。。。。。。。。。
原创 2019-11-20 15:47:23 · 91 阅读 · 0 评论 -
Spring注解的使用
一、什么是注解Annotation(注解)是JDK1.5及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以@注解名在代码中存在的。根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,可以在编译时选择代码里...原创 2019-11-20 10:50:16 · 124 阅读 · 0 评论 -
MyBatis中#和$的区别
区别#{ }是预编译处理,MyBatis在处理#{ }时,会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串后,会在值两边加上单引号,如传入1,2,3就会变成'1,2,3'。 ${ }是字符串替换,MyBatis在处理${ }时,会将sql中的${ }替换为变量的值,传入的数据不会在两边加上单引号。注意:使用${ }会导致sql注入,...原创 2019-11-19 15:38:31 · 195 阅读 · 0 评论 -
java8 stream().map().collect()用法
有一个集合:List<User> users = getList(); //从数据库查询的用户集合现在想获取User的身份证号码;在后续的逻辑处理中要用;常用的方法我们大家都知道,用for循环,List<String> idcards=new ArrayList<String>();//定义一个集合来装身份证号码for(int i=0;...原创 2019-11-15 17:26:23 · 1356 阅读 · 0 评论 -
逻辑删除和物理删除
在实际开发中基本都会有删除数据的需求,删除又分为逻辑删除和物理删除。下面说下二者的区别:一、所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_del)或者说是状态字段(status)做修改操作。比如0是删除,1是未删除。在逻辑上数据是被删除的,但数据本身依然存在库中。对应的sql语句一般是这样的:update... set status/is_del=......原创 2019-11-08 09:22:38 · 1206 阅读 · 0 评论 -
Timer和TimerTask
Timer和TimerTask支持在将来某些时候安排执行任务的能力。使用这些类,可以创建在后台运行、等待特定时刻的线程。当时间到达时,执行链接到线程的任务。有各种选项可以用来安排重复执行以及在特定日期运行的任务。尽管使用Thread类总是可以手动创建在特定时间运行的任务,但是Timer和TimerTask极大的简化了这一步骤。Timer和TimerTask可以同时使用,Timer用来安排任务,...原创 2019-11-02 11:57:32 · 102 阅读 · 0 评论 -
StringTokenizer类
package StringTokenizer;import java.util.StringTokenizer;/** * @author 犀角 * @date 2019/11/2 11:02 * @description 文本处理:解析格式化的输入字符串。就是将字符串分隔成一系列独立的部分,又称为标记。它们是可以表达语义含义的特定序列。 * StringTokenizer可以枚举...原创 2019-11-02 11:11:03 · 94 阅读 · 0 评论 -
使用映射
映射是存储键和值之间关联关系的对象。给定一个键,就可以找到对应的值。键和值都是对象。键必须唯一,但是值可以重复。关键点:没有实现Iterator接口。意味着不能使用for-each风格的for循环遍历映射。此外,不能为映射获取迭代器。但是,可以获取映射的集合视图,集合视图允许使用for循环和迭代器。映射围绕两个方法get()和put()。为了将值放入映射中,使用put()方法,指定键和值。...原创 2019-11-02 10:47:08 · 456 阅读 · 0 评论 -
Iterator
使用迭代器遍历集合的内容:1.通过调用集合的Iterator()方法,获取指向集合开头的迭代器。2.建立一个hasNext()方法调用循环。只要hasNext()方法返回true,就继续迭代。3.在循环中,通过调用next()方法获取每个元素。package Collection;import java.util.ArrayList;import java.util.Ite...原创 2019-11-02 10:22:10 · 2290 阅读 · 0 评论 -
Collection类
1.ArrayList 类支持能够按需增长的动态数组。本质上,ArrayList就是元素为对象引用的长度可变的数组。package Collection;import java.util.ArrayList;import java.util.Iterator;import java.util.ListIterator;class ArrayListDemo { publ...原创 2019-11-02 09:47:31 · 137 阅读 · 0 评论 -
CyclicBarrier和CountDownLatch区别
1.CountDownLatchpackage Thread;import java.util.concurrent.CountDownLatch;/** * @author 犀角 * @date 2019/11/1 15:10 * @description */public class CountDownLatchTest { public static vo...原创 2019-11-01 15:51:49 · 82 阅读 · 0 评论 -
CountDownLatch
概念:CountDownLatch是通过一个计数器,记录线程的数量,每个线程在完成自己的任务之后,调用countDown方法,将计数器减一,当计数器的值将为0时,原来等待的线程,即调用countDownLatch.await()方法线程将会被唤起,继续执行。这里有个主线程,调用countDownLatch.await()方法的线程,它会处于挂起状态,直到所有的线程都执行完countDownLatc...原创 2019-11-01 14:36:59 · 128 阅读 · 0 评论 -
Semaphore
关于Semaphore的使用介绍1.什么是SemaphoreSemaphore是一个计数信号量,通常用于限制对某些资源访问的线程数量,Semaphore管理一系列许可证。举个栗子:假如我们要去游泳池游泳,泳池一共有6条泳道,每条泳道只能有1个人在上面使用。每个人去游泳之前要先 acquire() 一下获取许可证,如果有空闲泳道就可以去游泳;如果没有空闲泳道,就只能阻塞等待。游完泳之后,再 ...原创 2019-11-01 11:56:36 · 159 阅读 · 0 评论 -
java多线程之同步
当两个或多个线程需要访问共享的资源时,它们需要以某种方式确保每次只有一个线程使用资源。实现这个目的的过程称作同步。同步的关键是监视器的概念,监视器就是用作互斥锁的对象。在给定的时刻,只有一个线程可以拥有监视器。当线程取得锁时,也就进入了监视器。其他企图进入加锁监视器的线程都会被挂起,直到第一个线程退出监视器。也就是说,这些等待的其他线程在等待监视器,如果需要的话,拥有监视器的线程可以再次进入...原创 2019-11-01 10:43:27 · 80 阅读 · 0 评论 -
java基础-变量类型
Java语言支持的变量类型有:类变量:独立于方法之外的变量,用 static 修饰。 实例变量:独立于方法之外的变量,不过没有 static 修饰。 局部变量:类的方法中的变量。 Java 局部变量 局部变量声明在方法、构造方法或者语句块中; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只...原创 2019-10-30 09:03:44 · 77 阅读 · 0 评论 -
List的几种遍历方式
List<Integer> list=new ArrayList<Integer>(); list.add(n1.val); list.add(n2.val); list.add(n3.val); list.add(n4.val); list.add(n5.val); list...原创 2019-10-29 17:23:26 · 635 阅读 · 0 评论 -
AES加密解密
package com.jst.dc.biz.util;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import java.security.SecureRandom;/** * @author 犀角 * @date 2019/10/29 10...原创 2019-10-29 14:11:12 · 303 阅读 · 0 评论