自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java利用Thumbnailator进行图片压缩

java利用Thumbnailator进行图片压缩

2022-08-01 14:24:24 1105

原创 Spring Boot全局异常处理

Spring Boot全局异常处理

2022-06-25 09:55:31 287

原创 部署常用命令

docker相关命令:docker exec -it mysql-test bash (mysql-test docker容器名 进入容器内部docker cp /本地文件路径 docker容器名:/容器路径docker load -i redis.tar 保存本地压缩包到dockerdocker imagesdocker ps -adocker stop idxxxdocker rm idxxx (id或者容器名 -f可以不用stop就直接删除)dock...

2021-10-24 14:12:57 2812

原创 《重构》第三章-笔记

3.24里有句话给我很深的映像: “从嗅觉上说,注释不但不是一种坏味道,事实上它们还是一种香味呢。我们之所以要在这里提到注释,是因为人们常把他当做“除臭剂”来使用。chang”

2021-06-06 15:10:06 178

原创 Leetcode 244 场周赛

t1:5776. 判断矩阵经轮转后是否一致​​​​​​​思路与

2021-06-06 14:00:32 110

原创 微博发布头条文章失去文本样式以及图片

起因:文稿里把编辑有各种样式的标题和正文以及图片视频的文稿发布到已授权的微博账号中,发现显示的文本样式以及图片全部都显示异常,首先是文本中的样式都消失了只剩下文字,其次是所有的图片的显示...

2021-05-30 15:45:57 874

原创 Leetcode243周赛

第一题:5772. 检查某单词是否等于两单词之和思路:timu

2021-05-30 15:26:19 95

原创 利用EasyExcel导出Excel的两种方式

首先准备实体类以及数据public class DemoData { @ExcelProperty({"主题","字符串标题"}) private String string; @ExcelProperty({"主题","日期标题"}) private Date date; @ExcelProperty({"主题","数字标题"}) private Double doubleData; /** * 忽略这个字段 */

2020-10-25 16:05:44 4156 1

原创 在接口中利用CyclicBarrier,完成并发操作

这边由于是直接判断map的大小来决定是否返回,所以一定得要使用支持并发的ConcurrentHashMap。还需要注意,方法一开始必须得要重置CyclicBarrier,不然第二次进方法的时候就不会跑CyclicBarrier后的方法了。 ConcurrentHashMap<String,List<ApPerson>> map = new ConcurrentHashMap<>(); // 这边就直接使用固定线程量的fixed作为线程池 .

2020-10-25 14:32:00 178

原创 mysql 使用静态内部类来当返回类型

有时业务中Vo中需要一个静态内部类来方便进行存储然而当这个静态内部类当场mybatis的返回值时,xml中的resultType需要用外部类加上$加上静态内部类即可。其实当这个类通过虚拟机转成.class文件时,也会导致有两个文件,而且静态内部类生成的class文件就是xml中需要写的形式。...

2020-09-19 14:28:22 537

原创 通过数据库获取本地图片路径,转成base64返显到页面

if(!list.isEmpty()){ String rootPath = SystemUtils.IS_OS_WINDOWS ? "D:/RESOURCE_ROOT" : "/home/RESOURCE_ROOT"; rootPath = this.getConfig(CFK_RESRC.ROOT_KEY, rootPath); for (CoreResrcFile file: list ) { ...

2020-09-11 17:31:08 706

原创 记一次被挖矿

利用top命令看到,cpu已经被kdevtmpfsi占满了,然后通过了解,这是一个常见的挖矿工具利用这个能够看到定时任务crontab -l(大多的挖矿工具都利用定时任务来进行)主要是有两个进程一个是kdevtmpfsi,另一个是它的守护进程,如果只删除kdevtmpfsi,他会不断恢复占用。利用ps -aux | grep kinsing 和 ps -aux | grep kdevtmpfsi 拿到进程的pid,然后分别用kill -9 [pid] 强制结束进程之后去tmp文件夹下把kdevt..

2020-08-15 11:32:29 112

原创 Leetcode23双周赛

排名:75 / 2044第一题:统计最大组的数目解题思路:这题是要统计数位上的值相加和相等的数,返回其中并列最多的组。这里可以构建一个足够大的数组,然后进行统计并列最多的组,最后在遍历结果集并记录次数返回。class Solution { public int countLargestGroup(int n) { int[] dict = new int[10000+10]; int max = 0; for (int i = 1; i <= n; i++)

2020-08-15 11:31:12 97

原创 Leetcode183周赛

排名:252 / 3754第一题:非递增顺序的最小子序列解题思路:先给原数组排个序,统计一下sum;之后从大到小,累加和temp,当temp>sum-temp就满足了题目要求。class Solution { public List<Integer> minSubsequence(int[] nums) { int n = nums.length; int max = 0; for (int i = 0; i < n; i++) {

2020-08-15 11:30:16 71

原创 mysql知识归纳

常用的数据库引擎有两种:MyISAM和InnoDBMyISAM只支持表级锁;Inno支持行级锁(默认)和表级锁MyISAM强调性能,不支持事务;InnoDB支持事务、外键。InnoDB支持MVCC(多版本并发控制),MVCC只支持READ COMMITTED(读已提交) 和 REPEATABLE READ(可重复读) 两个隔离级别下工作索引InnoDB: 其数据文件本身就是索引文件。相比MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按B+Tree组织的一个索引结构,树的叶节点d

2020-08-15 11:29:33 130

原创 jvm学习日志

在jdk1.8中,方法区被替换成了内存中的元空间。程序计数器:主要有两个作用:1.字节码解释器通过改变程序计数器来依次读取指令,实现流程控制,如顺序、循环、选择、异常处理等;2.在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而线程切换回来的时候知道线程运行到了何处。(生命周期与线程相同,不会出现oom)虚拟机栈:生命周期与线程相同,描述的是java方法执行的内存模型,每次的方法调用的数据都是通过栈传递的。(每一个栈帧中都拥有:局部变量表、操作数栈、动态链接、方法出口信息)(会出现爆栈和内存)..

2020-08-15 11:27:52 146

原创 WebSocket学习日志

参考文章:英文:https://www.callicoder.com/spring-boot-websocket-chat-example/中文:https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247485578&idx=1&sn=eac39f010b8c2be949e0daae770fd7ae&chksm=ebd7498bdca0c09d2dad0af154f53d2aa2c9a0cce6602d1814346

2020-08-15 11:24:44 139

原创 Leetcode178周赛

排名:873 / 3304第一题:有多少小于当前数字的数字解题思路:双循环直接比较大小即可。class Solution { public int[] smallerNumbersThanCurrent(int[] nums) { int ans[] = new int[nums.length]; for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums.length; j++)

2020-08-15 11:24:04 63

原创 Leetcode178周赛

排名:873 / 3304第一题:有多少小于当前数字的数字解题思路:双循环直接比较大小即可。class Solution { public int[] smallerNumbersThanCurrent(int[] nums) { int ans[] = new int[nums.length]; for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums.length; j++)

2020-08-09 14:41:07 94

原创 java-线程池

Runnable对比Callable:Runable不会返回结果或抛出检查异常,但是Callable可以。(Executors能够实现二者转换)execut()对比submit():execute()方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功与否;submit()方法用于提交需要返回值的任务。线程池会返回一个 Future 类型的对象,通过这个 Future 对象可以判断任务是否执行成功,并且可以通过 Future 的 get()方法来获取返回值,get()方法会阻塞当前线程

2020-08-09 14:34:33 89

原创 java-JUC包

JDK提供的这些容器大部分在java.util.concurrent包中。ConcurrentHashMap:线程安全的HashMapCopyOnWriteArrayList:线程安全的List,在读多写少的场合性能非常好,远远好于Vector。(在写多的场合下可以使用Collections.synchronizedList来保证并发效率)ConcurrentLinkedQueue:高效的并发队列,使用链表实现。可以看做一个线程安全的LinkedList,这是一个非阻塞队列。BlockingQueu

2020-08-09 14:31:14 487

原创 Java基础-并发

进程:进程就是程序的一次执行过程,是系统运行程序的基本单位。在Java中,当我们启动main函数时其实就是启动了一个JVM的进程,而main函数所在的线程就是这个进程中的一个线程,也称为主线程。线程:一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程所不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程都拥有自己的程序计数器、虚拟机栈和本地方法栈。总结:线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进...

2020-08-09 14:29:29 89

原创 java基础–集合类(Map)

JDK1.8 HashMap源码学习:HashMap的底层是使用数组+链表/数组+红黑树,当链表长度大于阈值(默认为8)时,将链表转化为红黑树(将链表转换成红黑树前会判断,如果当前数组的长度小于64时,娜美会先进行数组扩容,而不是转换为红黑树),以减少搜索时间(treeifyBin)。为了防止用户实现的hashCode方法较差,HashMap有一个扰动函数hash(其实每一个Hash算法应该都有) static final int hash(Object key) { int

2020-08-09 14:27:14 108

原创 java基础–集合类(Collection)

java的集合类主要就是Collection(List、Set)和 Map。ArrayList和LinkedList都不保证线程安全(事实上常用的集合类都不支持线程安全,线程安全模式的集合类都在juc包中)ArrayList底层使用的是Object数组、而LinkedList使用的是双向链表(1.6之前使用的是双向循环链表、1.7取消了循环)ArrayList会浪费一定的空间,空间浪费主要体现在在list列表的结尾会预留一定的容量空间。LinkedList的空间花费则体现在它的每一个元素都需要消耗比

2020-08-09 14:26:07 105

原创 Leetcode177周赛

排名:800 / 2985(题目简单,但是晚到了半小时。。。????)第一题:日期之间隔几天解题思路:日期问题,利用java的库函数和工具类可以方便的解决,但是leetcode不会默认导这些包,需要手动导一下。代码:import java.text.*;import java.util.Date;class Solution { public int daysBetweenDates(String date1, String date2) { SimpleDateFo

2020-08-09 14:24:20 100

原创 Leetcode20双周赛

本次排名:426 / 1541第一题:根据数字二进制下 1 的数目排序解题思路:把目标数组转成二进制,然后排序统计排序即可(之前代码是使用Pair存储,但是leetcode导包后没识别出来???然后换成List了)代码:class Solution { public int[] sortByBits(int[] arr) { int[] acc = new int[arr.length]; List<List<Integer>> list =n

2020-08-09 14:23:31 130

原创 java 异常知识点

在java中,所有的异常都有公共的祖先Throwable类,Throwable有两个重要子类:Exception和Error,而Error是程序无法处理的问题,比如说虚拟机运行错误,OOM等。Exception(异常):是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 异常由Java虚拟机抛出。NullPointerException(要访问的变量没有引用任何对象时,抛出该异常)、ArithmeticException..

2020-07-05 10:58:51 89

原创 java 基础复习

java程序从源代码到运行一般有3步: .java的源文件通过JDK的javac命令转换为jvm能够理解的.class文件(字节码),之后再由jvm将.class编译成为机器可执行的二进制码。jvm针对不同的系统操作有着特定的实现方式,目的是使用相同的字节码,它们都会给出相同的结果。也就能够保证说Java程序无须重新编译便可在多种不同操作系统的计算机上运行。(.class是相同的,不同的只不过是jvm在不同的环境中的实现)java的8个基本类型(byte和short不要忘记!!!):构造器是不能

2020-07-05 10:57:51 147

原创 solr学习日志

首先需要下载并解压solr,然后利用cmd进入solr的bin目录下,然后利用solr.cmd start启动。(添加core以及如何使用中文分词,网上教程比较多)在java中使用:1.需要在maven中添加相关的solr依赖(主要就是java操作solr的Api包–solrj): <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</ar

2020-07-05 10:56:42 183

原创 关于拦截器中注册不了RedisTemplate的问题

问题背景:常见的用户登录权限控制就是在用户登录时,将token信息放到redis中去,然后根据用户传递过来的请求头中获取token,判断是否登录(以及登录的用户信息)。然而在实际开发时,遇到了一个问题,在service层中,RedisTemplate能够成功注册进来,但是在拦截器中,RedisTemplate始终注册不进来。后来发现可以原因是在addInterceptors方法中添加拦截器时,是new的一个拦截器。@Configurationpublic class UserLoginConfi

2020-07-05 10:55:08 370

原创 Leetcode176周赛

排名:481 / 2409第一题:5340. 统计有序矩阵中的负数解题思路:直接双循环,遍历整个数组,统计负数即可。代码:class Solution { public int countNegatives(int[][] grid) { int ans = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[i].length; j++) { if (gri

2020-07-05 10:54:25 94

原创 Leetcode175周赛

排名:233 / 2046第一题:5332. 检查整数及其两倍数是否存在解题思路:数据量不大,直接暴力过了。class Solution { public boolean checkIfExist(int[] arr) { int n = arr.length; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { if (arr[i]*2==arr[j] || arr[j]

2020-07-05 10:53:55 92

原创 Leetcode19双周赛

本次排名:289/1120第一题:5311. 将数字变成 0 的操作次数解题思路:直接利用一个while,在里面进行判断即可class Solution { public int numberOfSteps (int num) { int ans = 1; while (num!=1){ if (num%2==0)num/=2; else num--; ans++; } return ans; }}第二题:5312. 大小为 K

2020-07-05 10:53:25 117

原创 利用java爬取51job招聘信息

大体思路:首先了解一下51job的url地址的规则(听上去有点扯????,但其实也是最为便捷的方式),然后发送一下http请求,接受返回值并正确解析即可。具体代码:首先准备一下接收类(实体类)package testpoll;import lombok.Data;@Datapublic class Jobs { private Integer jobId;//自动增长id private String jobName; //岗位 private String companyName

2020-07-05 10:52:26 768 4

原创 Leetcode174周赛

第一题:1341. 方阵中战斗力最弱的 K 行解题思路:遍历一遍二维数组,将每一行的值统计出来,并进行排列。把前k个放到答案数组中即可。代码:import javafx.util.Pair;class Solution { public int[] kWeakestRows(int[][] mat, int k) { List<Pair<Integer,Integer>> ans = new ArrayList<>(); int n

2020-07-05 10:50:54 77

原创 设计模式-创建型(学习归纳)

创建型设计模式主要有4种:单例模式、工厂模式、建造者模式、原型模式单例模式主要分为两种:懒汉式(当第一次调用时进行创建)、饿汉式(在系统加载时进行创建)主要的好处:1.减少系统开销 2.减轻GC压力注意的点:单例类必须有一个private访问级别的构造函数 成员变量与方法必须是static的常见的懒汉式:1.非线程安全和synchronized关键字线程安全版本package testDesignPattern.single;public class BasicLazy {

2020-07-05 10:49:59 109

原创 union-find学习日志(效率比较)

主要学习了quick-find,quick-union以及加权quick-union,利用1319. 连通网络的操作次数来对比三个算法的实际效率。quick-find:代码:package testUnionFind;public class QuickFind { int[] id; int count; public void init(int n){ id = new int[n]; count=n; for (int i = 0; i < n; i++) {

2020-06-24 09:40:54 123

原创 关于java8中LocalDateTime与thymeleaf整合时产生的问题

一开始使用springboot与thymeleaf整合时,发现java8中关于时间的字段LocalDateTime在前台使用dates.format会报错。前端代码如下:<td style=""th:text="${#dates.format(data.updateDate,'yyyy-MM-dd HH:mm:ss')}"></td>报错信息:Caused by: org.springframework.expression.spel.SpelEvaluationE

2020-06-24 09:37:42 1357

原创 LeetCode 第172周赛

ps:由于当时是工作日,做到一半,被主管拉去当工具人了(去手动删zookeeper服务了)。。。第一题:1323. 6 和 9 组成的最大数字解题思路:直接先将原数字转成String,然后将第一个6换成9.并返回即可。代码:class Solution { public int maximum69Number (int num) { String str = String.valueOf(num); StringBuilder sb = new Stri.

2020-06-24 09:37:05 96

原创 关于Lucene的学习日志

简单步骤描述:1. 首先搜集数据(数据可以是文件系统,数据库,网络上,手工输入的,或者像本例直接写在内存上的)2. 通过数据创建索引3. 用户输入关键字4. 通过关键字创建查询器5. 根据查询器到索引里获取数据6. 然后把查询结果展示在用户面前思路图:大致代码:package com.how2java;import java.io.IOException;import java.io.StringReader;import java.util.HashMap;import j

2020-06-24 09:35:40 147

空空如也

空空如也

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

TA关注的人

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