自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 springboot使用@Scheduled和@Async实现定时任务多线程并发

springboot使用@Scheduled和@Async实现定时任务多线程并发

2022-11-07 14:39:33 1835 1

原创 leecode每日两题~持续更新

1、删除单链表中某个特定节点如:1 -> 2 -> 3 ->4 删掉2 变成 1 -> 3 ->4思路:首先方法中传参过来的那个节点就是要删的节点node,找到要删节点的下一个节点node.next,把node.next的值给了node(覆盖),也就变成了1 -> 3 -> 3 ->4,然后将node的指针指向node的下一个的下一个节点,也就是node.next.next,这样就会使得原来的3没有指针指向,被垃圾回收,所以最后变成1 ->

2021-11-10 21:13:06 4350

原创 七大排序相关代码(没有堆排序)

1.冒泡排序(O(n^2))【括号内为时间复杂度】package mian.Text;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;//80000万个数据检测速度:冒泡在该机器上用时:13秒public class maopao { public static void main(String[] args) {// int [] arr = {1,2,3,

2021-07-28 17:26:13 122

原创 java中你没见过的使=实用方法,减少代码量,你值得拥有

package com.main.Test;import com.sun.xml.internal.ws.util.StringUtils;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.nio.charset.Charset;import java.util.*;import java.util.stream.Collectors;pu

2021-07-16 18:00:06 98

原创 单向环形链表(Josepfu)

➢Josephu 问题Josephu 问题为:设编号为1,2, … n的n个人围坐一-圈,约定编号为k (1<=k<=n) 的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生-一个出队编号的序列。构建-个单向的环形链表思路1.先创建第-一个节点,让first指向该节点,并形成环形2.后面当我们每创建一个新的节点,就把该节点,加入到已有的环形链表中即可遍历环形链表1.先让一个辅助指针(变量)curBoy,指

2021-07-16 10:35:54 81

原创 双向链表CRUD

分析双向链表的遍历,添加,修改,删除的操作思路===》代码实现1)遍历方和单链表-样,只是可以向前,也可以向后查找2)添加(默认添加到双向链表的最后)(1)先找到双向链表的最后这个节点(2) temp.next =newHeroNode(3) newHeroNode.pre =temp;3)修改思路和原来的单向链表一样.4)删除(1)因为是双向链表,因此,我们可以实现自我删除某个节点(2)直接找到要删除的这个节点,比如temp(3) temp.pre.next = temp.next(

2021-07-15 17:02:53 74

原创 单链表大厂面试题

求单链表的有效个数(不算头节点)//求单链表的有效个数(不算头节点) public static int getLength(HeroNode head){ if (head.next == null){ return 0; } HeroNode temp = head.next; int length = 0; while (temp != null){ length+

2021-07-15 14:22:38 82

原创 单链表简单的增删改查

1)链表是以节点的方式来存储,是链式存储2)每个节点包含 data域,next域:指向下一个节点.3)如图: 发现链表的各个节点不一定是连续存储.4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定思路分析:添加(创建)1.先创建- -个head头节点,作用就是表示单链表的头2.后面我们每添加一-个节点,就直接加入到链表的最后遍历:代码实现:(按添加顺序排序)package com.main.dataStructures;public class SingleLinked

2021-07-13 18:02:33 94 1

原创 普通队列和环形队列

普通思路分析:1)将尾指针往后移: rear+1, 当front== rear [ 空]2)若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数组元素中,否则无法存入数据。rear == maxSize- 1[队列满]代码实现:package com.main.dataStructures;public class ArrayQueueDemo{ public static void main(String[] args) { ArrayQ

2021-07-13 15:12:54 144

原创 稀疏数组及io写入和读取

package com.main.dataStructures;import java.io.*;import java.util.ArrayList;import java.util.Arrays;import java.util.List;//1.创建一个二维数组//2.将二维数组转换为稀疏数组//3.将稀疏数组保存到磁盘中//4.读取磁盘中的文件,转换为稀疏数组//5.将稀疏数组转换为二维数组public class SparseArray { public stati

2021-07-12 13:16:23 179

原创 大厂面试--redis

8大类型String(字符类型)Hash(散列类型)List(列表类型)Set(集合类型)SortedSet(有序集合类型,简称zset)Bitmap(位图)HyperLoglog(统计)GEO(地理)命令不区分大小写,而key是区分大小写的help @类型名词string命令:设置单个键值 set 获取单个get同时设置多个键值mset 同时获取多个mget数值增减递增数字 -> INCR key 增加指定的整数 -&g

2021-05-12 14:15:06 127

原创 Github骚操作

查询东西的时候,用in限制搜索范围查找名字,readme文件,介绍中有seckill这个关键字的项目:seckill in:name,readme,description查询点赞数超过5000的springboot项目:springboot stars: >=5000查询复制数超过5000的springboot项目:springcloud forks: >5000查询复制数在100到200且点赞数在100到 200之间的springboot项目:springboot fork

2021-05-08 15:30:59 69

原创 大厂面试--linux部分高级命令

top指令:查看系统性能的命令uptime:查看系统性能的命令的精简版vmstat -n 2 3 :查看CPUmpstat -P ALL 2 :查看所有cpu核信息,每两秒弹一次(idle:cpu空闲率,越高越好,低于60%,cpu就有压力了)每个进程使用cpu的用量分解信息:pidstat -u 1 -p 进程编号(对于用户,每秒钟查样一次,打印他的详细情况)查看应用程序可用内存数:free -m(mb为单位)应用程序可用内存/系统物理内存> 70%内存充足应用程序可用内

2021-05-07 22:01:07 127

原创 大厂面试--垃圾回收器

串行垃圾回收器(serial):它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程。所以不适合服务器环境。并行垃圾回收器(parallel):多个垃圾收集线程并行工作,此时用户线程是暂停的,适用于科学计算/大数据处理首台处理等弱交互场景。并发垃圾回收器(CMS ConcMarkSweep): 用户线程和垃圾收集线程同时执行(不一定是并行,可能交替执行),不需要停顿用户线程。互联网公司多用它,适用对应时间有要求的场景。G1垃圾回收器(GARBAGE First):G1垃圾回收器将堆内.

2021-05-07 10:42:29 156

原创 大厂面试--OOM错误的多种不同类型

StackOverflowError和OutOfMemoryError属于错误,不是异常StackOverflowErrorpackage com.company;public class StackOverFlowErrorDemo { public static void main(String[] args) { stackOverFlowError(); } private static void stackOverFlowError() {

2021-05-06 11:09:52 122

原创 大厂面试--JVM(Java Virtual Machine)、GC(Garbage Collection)

1.JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots?什么是垃圾?简单的说就是内存中已经不再被使用到的空间就是垃圾如何判断一个对象是否可以被回收?(1)引用计数法Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,给对象中添加一个引用计数器,每当有一个地方引用它,计数器值加1,每当有一个引用失效时,计数器值减1。任何时刻计数器值为零的对象就是不可能再被使用的,那么这个对象就是可回收对

2021-04-30 09:12:55 72

原创 大厂面试--线程池

线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程

2021-04-28 17:41:08 161

原创 大厂面试--阻塞队列(附synchronized和Lock的区别)

ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按FIFO (先进先出)原则对元素进行排序。LinkedBlockingQueue:一个基于链表结构的阻塞队列,此队列按FIFO (先进先出) 排序元素,吞吐量通常要高于ArrayBlockingQueue。SynchronousQueue:一个不存储元素的阻塞队列。每个插入操作必须等到另一个线程调用移除操作, 否则插入操作一:直处于阻塞状态,吞吐量通常要高。1。队列先进先出(FIFO)2。阻塞队列2.1阻塞队列有没

2021-04-22 17:29:42 672

原创 大厂面试-- CountDownLatch、CyclicBarrier、Semaphore

CountDownLatch:让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计数器减一(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。具体代码演示:秦灭六国package com.company;import lombok.Getter;enum CountryEnum{

2021-04-22 11:01:37 78

原创 大厂面试--公平锁、非公平锁、可重入锁、自旋锁、独占锁和共享锁(即读写锁)

公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级后转或者饥饿现象两者区别公平锁/非公平锁并发包中ReentrantL ock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁,默认是非公平锁关于两者区别:公平锁:Threads acquire a fair lock in the order in which they r

2021-04-21 17:32:35 97

原创 大厂面试--集合类不安全问题

解决集合类不安全问题的办法:1.Vector<>() 线程安全 效率低2.Collections.synchronizedList(new ArrayList<>())3.CopyOnWriteArraySet()写时复制CopyOnWrite容器即写时复制的容器,往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] newElements,然后新的容器Object[] newEl

2021-04-20 20:22:23 47

原创 大厂面试--CAS

CAS 全称: compareAndSwap (比较并交换)api的使用package com.company;import java.util.concurrent.atomic.AtomicInteger;//CAS -> compareAndSet -> 比较并交换public class CASDemo { public static void main(String[] args) { AtomicInteger atomicInteger = ne

2021-04-20 15:08:20 79

原创 大厂面试--volatile

volatile是java虚拟机提供的轻量级的同步机制。三大特性:保证可见性,不保证原子性,禁止指令重排。JVM(java虚拟机)JMM(java内存模型)代码演示volatile的可见性没有volatile的package com.company;public class Main { public static void main(String[] args) { // write your code here MyData myData = new My

2021-04-19 16:32:46 228

原创 大厂面试--成员变量与局部变量

就近原则变量的分类成员变量:类变量、实例变量局部变量非静态代码块的执行:每次创建实例对象都会执行方法的调用规则:调用一次执行一次局部变量与成员变量的区别:①声明的位置局部变量:方法体{}中,形参,代码块{}中成员变量:类中方法外类变量:有static修饰实例变量:没有static修饰②修饰符局部变量: final成员变量: public、protected、private、 final、 static、 volatile、 trans ient③值存储的位置局部变量:栈实例

2021-04-17 17:31:37 58

原创 大厂面试--递归与迭代

package com.main.xxx;public class TestStep { public static void main(String[] args) { TestStep testStep = new TestStep(); //获取当前系统时间 long start = System.currentTimeMillis(); System.out.println(testStep.f(40));//165580.

2021-04-17 15:40:27 66

原创 大厂面试--方法的参数传递机制

package com.main.xxx;import java.util.Arrays;public class Exam4 { public static void main(String[] args) { int i = 1; String str = "hello"; Integer num = 2; int [] arr = {1,2,3,4,5}; MyData my = new MyData().

2021-04-17 14:30:59 48

原创 大厂面试--类初始化和实例初始化

无继承的情况下执行顺序:静态代码块->main方法->代码块->构造方法有继承的情况下执行顺序:父类静态代码块->子类静态代码块->main方法->父类代码块->父类构造方法->子类代码块->子类构造方法package com.main.xxx;/** * 父类的初始化<clinit>: * (1)j = method(); * (2)父类的静态代码块 * * 父类的实例化方法: * (1)super()...

2021-04-17 14:30:28 47

原创 大厂面试--单例设计模式

饿汉式:直接实例化饿汉式package com.main.single;/** * 饿汉式: * 直接创建实例对象,不管你是否需要这个对象都会创建 * * (1)构造器私有化 * (2)自行创建,并且用静态变量保存 * (3)向外提供这个实例 * (4)强调这是一个单例,我们可以用final修改 */public class Singleton1 { public static final Singleton1 IN...

2021-04-17 09:34:44 76

原创 redis在项目中的应用(windows系统)

1.下载安装下载地址:https://github.com/MSOpenTech/redis/releases解压完成后(1)双击启动redis(2)启动成功后是这样(注:启动后不能关闭黑窗口,一直挂着,否则redis会关闭)(3)启动Redis Desktop Manager单击此处出现此界面关于上一步中的redis的主机地址在redis的安装目录下找到redis.windows.conf文件,找到如图所示位置,把bind127.0.0.1前的#去掉即可,主机地址即为127.0.0

2021-04-15 16:15:16 234

基于web的在线教育学习平台的设计与实现.docx

基于web的在线教育学习平台的设计与实现.docx

2022-04-18

空空如也

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

TA关注的人

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