- 博客(170)
- 资源 (18)
- 收藏
- 关注
转载 Java怎么跳出多重循环
最近面试被问到这样一个问题,一时愣住了,没答上来,在博客上看了一下解决方案https://blog.csdn.net/runner1920/article/details/61925553
2021-09-11 14:03:08
385
原创 毕业之后所有面试总结
目录2021/8/6 中青智造 笔试+面试 Java开发2021/9/3 泛微北京 性格测试+笔试+面试 Java开发2021/9/6 德衍睿通 笔试+面试 Java开发2021/9/6 友谊时光 笔试 Java游戏开发2021/9/7 掌上智珠 面试 Java开发2021/8/6 中青智造 笔试+面试 Java开发1、查询学生表中重复的学生信息模拟数据:create table student ( `id` int(10) primary key auto_increment, `name`
2021-09-08 00:01:59
2522
3
原创 第二次工作总结
第二份工作总结今天是 2021-9-3,今天正式从牛卡福离职了,说说这段时间的感受吧,我是 6月 26号到达 的北京,在来北京也遇到了很多挫折,开始在思迪的时候,一直没给我安排什么实际的活, 也没有体会到高并发,高流量的场景,天天要么整理文档,要么写前段,要么写 crud的接 口,日子过的很无聊,所以就准备拿到毕业证之后就不在这干了,在这期间也拿到过几家的 offer,主要纠结的就是我姨夫给我内推的牛卡福科技和阳光保险。待遇的话阳光保险稍微 好一点,但是办公环境和房租压力的话,牛卡福就好一点了,所以在这两
2021-09-04 17:09:38
854
原创 centos7安装redis
1、下载redis及其客户端2、上传和解压资源上传和解压资源位置如下所示解压命令 tar -zvxf 压缩包3、编译并安装1、切换到redis安装目录cd redis-6.2.42、执行编译make3、安装make install PREFIX=/opt/redis/redis-6.2.44、改配置1、修改配置文件vim redis.conf2、让远程连接能生效,找到bind 127.0.0.1, 将其注释3、添加密码,找到requirepass,后面跟的就是
2021-08-09 11:42:38
4132
原创 centos安装mysql8
目录1、下载2、上传3、解压4、创建数据库文件位置5、赋权6、改配置7、生成临时密码8、启动服务9 、添加服务到系统进程10、设置自启动11、修改密码12、设置允许远程登录13、重启14、开放3306端口15、测试连接1、下载这里是下载位置,不要积分2、上传上传文件到mysql文件夹下3、解压在该压缩包同级的位置再创一个mysql文件夹,然后将压缩包解压到mysql目录下解压命令:tar -zvxf 压缩包名称 解压后存放的目录4、创建数据库文件位置创建文件夹命令:mkdir m
2021-08-08 18:31:31
368
1
转载 # 启用hiddenMethod过滤器 spring.mvc.hiddenmethod.filter.enabled=true的作用
https://blog.csdn.net/Arctan_/article/details/102957615
2021-07-24 22:24:40
6214
原创 Java实现异步的四种方式
目录1、开线程2、Future3、CompletableFuture4、Async注解1、开线程/** * 开线程 */public class ThreadTest { public void test() { new Thread(() -> { //做处理 try { Thread.sleep(1000); } catch (InterruptedExcep
2021-06-07 16:11:02
12865
原创 Linux学习笔记
目录1、Linux基本篇1、Linux目录结构2、vi和vim2.1 基本介绍2.2 常见的三种模式及转换2.3练习案例3、开机、重启、登录、注销4、用户管理4.1 添加用户4.2 删除用户4.3 查询用户信息4.4 切换用户4.5 用户组5、实用指令5.1 指定运行级别5.2 例子:如何找回root密码5.3 帮助指令5.4 文件目录类1、pwd2、ls3、cd4、mkdir5、touch6、cp7、rm8、mv9、cat10、>和>>11、echo12、head13 、tail14、l
2021-05-15 14:09:05
272
原创 centos7上tomcat8的安装
目录1、下载2、解压3、启动4、观察是否开启5、浏览器访问1、下载https://download.csdn.net/download/m0_45025658/122079312、解压我上传的路径为opt下# 解压tar -zxvf apache-tomcat-8.5.51.tar.gz# 新建目录mkdir tomcat# 移动到新建目录内mv apache-tomcat-8.5.513、启动进入下面目录,找到start.up命令执行./start.up4、观察是
2021-05-09 00:14:40
163
原创 centos7下java8的安装
文章目录1、下载java82、上传3、解压4、设置环境变量5、配置生效+开机自启6、验证是否生效1、下载java8https://download.csdn.net/download/m0_45025658/122079312、上传我上传的目录是/opt下3、解压首先创建一个目录java,然后解压上传的java,到java目录中mkdir javatar -zxvf jdk-8u281-linux-x64.tar.gzmv jdk1.8.0_281/ java/进入到java目录下,
2021-05-08 23:29:11
743
5
原创 swagger调用接口显示的数据和真实返回的数据有差异
今天遇到一个奇怪的问题,就是接口返回的数据和swagger调用接口后展示的数据有区别数据库中的数据可以看出当我phone为hk12345时对应的user_id为1380508531521015809接口返回的数据可以看出我接口返回的user_id也是1380508531521015809swagger显示的数据可以看到swagger显示的userId和之前的不同,但是又很相似后面发现id太长,数据失真了,只要在实体类的属性上加上@JsonFormat(shape= Json
2021-04-09 21:46:02
1901
1
原创 SpringBoot集成Swagger3
1、maven依赖如下 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>2、基本信息配置packag
2021-01-28 17:02:06
1056
1
原创 dependencies和dependencyManagement的区别
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。...
2021-01-28 16:36:36
125
原创 java集合框架
目录1、和数组的区别2、Collection的体系架构3、Collection的常用方法(1)添加元素(2)删除元素(3)遍历元素(4)判断4、List子接口(1) 添加元素(2) 删除元素(3)遍历元素(4)判断(5)获取(6)自动装箱(7)装箱元素的删除(8)获得子集合5、List实现类1、ArrayList、 Vector 、LinkedList基本比较2、ArrayList删除问题3、ArrayList源码分析4、Vector特有的遍历方式5、LinkedList源码分析6、泛型1、泛型类2、泛型接
2020-12-17 01:13:01
312
原创 原子整数
JUC并发包提供了:AtomicBooleanAtomicIntegerAtomicLong以AtomicInteger为例,一些简单的APIpackage com.sharing_model.no_lock;import java.util.concurrent.atomic.AtomicInteger;/** * AtomicInteger 测试 */public class AtomicIntegerTest { public static void main(
2020-12-13 13:06:00
422
原创 Java原子引用
目录1、 原子引用2、 ABA问题3、 AtomicStampedReference4、 AtomicMarkableReference1、 原子引用为什么需要原子引用?因为引用类型也需要被保护AtomicReferenceAtomicMarkableReferenceAtomicStampedReferencepackage com.sharing_model.no_lock;import java.math.BigDecimal;import java.util.ArrayList
2020-12-13 13:05:47
860
原创 字段更新器
AtomicReferenceFieldUpdaterAtomicIntegerFieldUpdaterAtomicLongFieldUpdater利用字段更新器,可以针对对象的某个域(Field)进行原子操作,只能配合volatile使用,否则会出现异常package com.sharing_model.no_lock;import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;/** * 字段更新器: ..
2020-12-13 13:05:32
185
原创 Java 原子累加器
为什么AtomicInteger等等有累加的方法,还需要另外搞一个原子累加器?因为原子累加器性能高package com.sharing_model.no_lock;import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicLong;import java.util.concurrent.atomic.LongAdder;import java.util.function.
2020-12-13 13:04:54
1036
原创 共享模型之不可变
目录1、转换问题2、不可变类的设计3、享元模式3.1 体现3.2 DIY 数据库连接池4、final原理4.1 设置final变量的原理4.2 获取final变量的原理5、无状态1、转换问题SimpleDataFormat不安全package com.sharing_model.immutable;import java.text.ParseException;import java.text.SimpleDateFormat;/** * 共享模型之不可变 * SimpleDataFo
2020-12-13 13:04:33
143
4
原创 Java线程池
1、自定义线程池package com.sharing_model.ThreadPool;import java.util.ArrayDeque;import java.util.Deque;import java.util.HashSet;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLo
2020-12-13 13:04:09
201
原创 Java异步模式之工作线程
目录1、定义2、饥饿3、解决饥饿4、创建多少线程池合适5、任务调度线程池1、使用Timer的坏处2、使用任务调度线程池的好处3、小例子6、Tomcat线程池7、Fork / Join1、概念2、使用3、改进1、定义2、饥饿package com.sharing_model.work_thread;import java.util.Arrays;import java.util.List;import java.util.Random;import java.util.concurrent
2020-12-13 13:03:52
179
原创 StampedLock
该类自1.8加入,是为了进一步优化读性能,它的特点时在使用读锁,写锁时都必须配合【戳】使用加解读锁long stamp = lock.readLock();lock.unlockRead(stamp); 加解写锁long stamp = lock.writeLock();lock.unlockWrite(stamp);乐观读,StampedLock支持tryOptimisticRead()方法(乐观读),读取完毕之后需要做一次戳校验,如果校验通过,表示这期间确实没有写操作,数据可以安全使用
2020-12-13 13:03:26
100
1
原创 Java 无锁
目录1、共享资源——无锁实现2、CAS的工作方式3、CAS 和 Volatile的关系4、为什么无锁效率高?5、CAS的特点1、共享资源——无锁实现package com.sharing_model.no_lock;import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;/** * 下面代码有什么问题? 很明显的发现是线程不安全的 * 解决方式:
2020-12-12 19:23:41
412
原创 Java共享模型之内存
目录1、Java内存模型2、可见性3、可见性 VS 原子性4、终止模式之两线程终止模式4.1 错误思路4.2 正确思路5、设计模式——犹豫模式6、有序性7、volatile原理1、如何保证可见性2、如何保证有序性8、DCL 单例模式9、happens-before1、Java内存模型JMM即Java Memory Model,它定义了主存、工作内存抽象概念、底层对应着cpu寄存器、缓存、硬件内存、cpu指令优化等。JMM体现在以下几个方面原子性:保证指令不会受到线程上下文切换的影响可见性:保证指
2020-12-12 19:23:14
156
原创 Semaphore、CountDownLatch、CyclicBarrier
目录1、semaphore的作用2、改进数据库连接池3、acquire4、release5、countdownlatch6、CyclicBarrier1、semaphore的作用信号量,用来限制能同时访问共享资源的线程上限package com.sharing_model.juc;import java.util.concurrent.Semaphore;/** * 信号量,用来限制能同时访问共享资源的线程上限 */public class SemaphoreTest{ publ
2020-12-12 19:22:30
125
原创 多线程设计模式
目录1、固定运行顺序1、wait / notify 版本2、await / signal 版本3、park / unpark 版本2、交替运行顺序1、wait / notify 版本2、await / signal 版本3、park / unpark 版本1、固定运行顺序比如,必须先2后1打印1、wait / notify 版本package com.sharing_model.synchronous_mode;/** * 同步模式之顺序控制 * 固定运行顺序: wait notify版
2020-12-12 19:21:16
143
原创 ReentrantLock学习
目录3.21 ReentrantLock1、可重入2、可打断3、锁超时4、解决哲学家就餐问题5、公平锁6、条件变量3.21 ReentrantLock相对于synchronized它具备如下特点:可中断可设置超时时间可以设置为公平锁支持多个条件变量与synchronized一样,都支持可重入基本语法//获取值reentrantLock.lock();try { //临界区} finally { //释放锁 reentrantLock.unLock();}1、可重入
2020-12-12 17:41:39
135
原创 线程的活跃性分析
目录1、死锁2、死锁检测3、哲学家就餐问题4、活锁5、饥饿1、死锁有这样的情况:一个线程需要同时获取多把锁,这是就容易发生死锁t1线程获取了A对象锁,接下来想要获取B对象的锁t2线程获取了B对象锁,接下来想要获取A对象的锁package com.sharing_model.more_lock;import javax.crypto.spec.IvParameterSpec;/** * 死锁: * t1线程获取了A对象锁,接下来想要获取B对象的锁 * t2线程获取了B对象锁,接下来想要
2020-12-12 17:41:23
245
1
原创 Park & Unpark
它们是LockSupport类中的方法//暂停当线程LockSupport.park();//恢复某个线程的运行LockSupport.unpark(暂停线程对象)public class ParkAndUnpark { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { System.out.
2020-12-12 17:41:03
380
原创 异步模式之生产者、消费者
3.16 异步模式之生产者/消费者要点:和前面的保护性暂停中的GuardObject不同,不需要产生结果和消费结果的线程一一对应消费队列可以用来平衡生产和消费的线程资源生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据JDK中各种阻塞队列,采用的就是这种模式package com.sharing_model.producer_consumer;import java.util.Li
2020-12-12 17:40:22
302
原创 同步模式之保护性暂停
目录3.15 同步模式之保护性暂停1、基本使用2、拓展: 增加超时3、拓展: 增加测试4、原理之join5、扩展: 解耦3.15 同步模式之保护性暂停1、基本使用用一个线程等待另一个线程的执行结果要点:有一个结果需要从一个线程传递另一个线程,让他们关联同一个Object如果有结果不断从一个线程传递到另一个线程那么可以使用消息队列(见消费者、生产者)JDK中,join的实现,Future的实现,采用的就是此模式因为要等待另一方的结果,因此归类到同步模式package com.shari
2020-12-12 16:36:36
293
原创 sleep 和 wait 的区别
sleep(long n) 和 wait(long n) 的区别:sleep是Thread方法,而wait是Object的方法sleep不需要强制和synchronized配合使用,但wait需要和synchronized一起使用sleep在睡眠的同时,不会释放对象锁,但wait在等待的时候会释放对象锁。它们的状态都是TIMED_WAITINGpublic class WaitAndSleep { static final Object lock = new Ob.
2020-12-12 12:49:13
137
原创 wait & notify
目录1、wait / notify 原理2、API介绍3、练习1、wait / notify 原理Owner线程发现条件不满足,调用wait方法,即可进入WaitSet变为WAITING状态BLOCKED和WAITING的线程都处于阻塞状态,不占用CPU时间片BLOCKED线程会在Owner线程释放锁的时候被唤醒WAITING线程会在Owner线程调用notify或notifyAll时唤醒,但唤醒后并不意味着立刻获得锁,仍需进入EntryList重新竞争2、API介绍obj.wait
2020-12-11 15:35:16
106
原创 Synchronized加锁后线程的基本执行流程
当一个线程Thread-2执行到同步代码块,会判断其有没有指向一个monitor,如果没有的话,Thread-2就会占用Owner,其他的线程再次执行到同步代码块时,发现指向了monitor,其他的线程就会放到EntryList中,并处于阻塞操作,等待持有锁的资源完成。完成之后,就会从EntryList取出一个再执行。注意:synchronized必须是进入同一个对象的monitor才有上述效果不加synchronized的对象不会关联监视器,不遵从以上规则...
2020-12-11 15:26:44
351
原创 线程安全练习
目录1、卖票2、转账1、卖票package com.sharing_model.thread_no_safe;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.Vector;/** * 模拟买票操作: 发现出现了线程安全问题 * 很难获得到预期结果(余票数 + 卖出去票数 = 原票数),没有发生指令交错现象 * * 解决方式:在sell方法上加上锁 *
2020-12-11 14:53:55
138
原创 线程的安全性分析
3.8 线程的安全性分析成员变量和静态变量是否线程安全?1、如果它们没有共享,则线程安全2、如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 2.1 如果只有读操作,则线程安全 2.2 如果读写操作,则这段代码是临界区,需要考虑线程安全局部变量是否线程安全1、局部变量是线程安全的2、但局部变量引用的对象则未必 2.1 如果该对象没有逃离方法的作用访问,它是线程安全的 2.2 如果该对象逃离方法的作用范围,则需考虑线程安全局部变量为什么是线程安全的。方法
2020-12-11 14:49:24
119
原创 Java 共享带来的问题和解决方案
3.1 共享带来的问题两个线程对同一个数分别执行相同次数的+1和-1操作,那么最后的结果一定是0吗?目录3.1 共享带来的问题3.2 临界区3.3 竞态条件3.4 synchronize解决方案3.5 synchronized面对对象改进3.6 方法上的synchronizedpackage com.sharing_model;/** * 共享问题: * 两个线程对同一个数分别执行相同次数的+1和-1操作,那么最后的结果一定是0吗? */public class SharingProbl
2020-12-11 14:23:04
264
SpringBoot整合RabbitMQ.zip
2020-06-29
springboot_SpringDataRedis_redis.zip
2020-04-26
jdk 和 tomcat.zip
2020-03-03
springboot使用cache连接redis.zip
2020-02-10
springboot使用springCache和不使用springCache的对比.zip
2020-02-09
springboot 使用springCache(1).zip
2020-02-09
java验证码(算术型和字符型)和生成和解析代码,yanzhengma.zip
2019-12-26
37个超炫网站后台框架.zip
2019-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人