自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄坤的博客

学习Java看这里

  • 博客(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

转载 mybatis多数据源配置

https://www.cnblogs.com/niumoo/p/14209663.html

2021-07-23 16:22:31 230

转载 Redis Aof和RDB的区别

https://www.cnblogs.com/zxs117/p/11242026.html

2021-07-06 09:32:12 186

原创 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

转载 后端如何参数校验

https://cloud.tencent.com/developer/article/1630185

2021-01-07 18:28:12 938

原创 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

redis-redisclient.zip

linux下的redis压缩包和windows下得客户端连接软件

2021-08-09

mysql-8.0.21-el7-x86_64.tar.gz

这是不要积分的呀,,,快下。。。linux版的mysql8

2021-08-08

SpringBoot整合RabbitMQ.zip

SpringBoot整合RabbitMQ的详细过程 **1.该篇博文首先讲述了交换机和队列之间的绑定关系** ①direct、②fanout、③topic **2.然后讲消息的回调** 四种情况下,确认触发哪个回调函数: ①消息推送到server,但是在server里找不到交换机 ②消息推送到server,找到交换机了,但是没找到队列 ③消息推送到sever,交换机和队列啥都没找到 ④消息推送成功 **3.消费者接收到消息的消息确认机制** ①自动确认、②手动确认、③根据情况确认

2020-06-29

springboot_poi.zip

通过poi的方式来操控excel文件,包括简单的读取和写入,并包含多类型的数据的读取。

2020-06-06

JAVA 文件常用流操作.zip

JAVA 文件常用流操作 包括文件的创建,重命名,删除等等。字节流,字符流,缓存流,数据流,打印流,内存流等等

2020-05-02

springboot_SpringDataRedis_redis.zip

springboot集成redis ————使用Spring Data Redis的方式,简单的使用opsForValue的方式来进行完整的增删改查功能,包括数据库,直接导入便可使用

2020-04-26

springboot_sendSms.zip

SpringBoot集成阿里云短信服务———发送手机验证码。完整的代码,保证可以运行,如果出了错误,那是你的账号没钱。

2020-03-16

springboot_junit.zip

**一个项目开发过程中总是免不了写测试,因为可以尽量的发现程序中的问题,要不然会出现各种各样的问题**,完整的代码请下载

2020-03-15

springboot_hotDeployment.zip

每次稍微修改一下东西代码,就会要手动重新启动,使用热部署后,一旦修改代码之后,便可以自动重新启动,无需手动。

2020-03-14

jdk 和 tomcat.zip

在官网上找liunx安装jdk和tomcat的压缩包时,花费了一些时间,所以现在整理出来了。 tomca: apache-tomcat-8.5.51.tar.gz jdk: jdk-8u112-linux-i586.tar.gz

2020-03-03

springboot使用cache连接redis.zip

这是springboot使用cache来连接redis的源码,包括sql文件。 全部删除(包括缓存):http://127.0.0.1:8016/allDelete 添加数据:http://127.0.0.1:8016/insert 查询数据:http://127.0.0.1:8016/select

2020-02-10

springboot使用springCache和不使用springCache的对比.zip

这个代码是Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用和不使用的对比,只是简单的使用

2020-02-09

springboot 使用springCache(1).zip

这个是尚未使用SpringCache之前。查询数据所需要的时间大约在一秒左右 使用IDE导入项目,启动应用,访问下面的地址 访问地址:http://localhost:8016/selete

2020-02-09

hk_blog_2.zip

个人博客项目,还没有完成,包含了登陆,账号格式验证,登陆验证,图片上传,分页,写博客等等,可以稍稍看一下

2020-01-18

springboot_sendEmail.zip

使用springboot发送邮件,包括简单邮件发送,html格式邮件发送,携带附件邮件发送,携带静态资源邮件发送

2020-01-06

java验证码(算术型和字符型)和生成和解析代码,yanzhengma.zip

java验证码(算术型和字符型)和生成和解析代码,两文带你一同学习生成与解析验证码过程。慢慢的积累小技术,以后做大项目。

2019-12-26

java编码规范.zip

java编码规范,分为华为版的编码规范和java代码规范详细版,可以教你写出正确格式的代码,让你看代码不在困难

2019-12-26

37个超炫网站后台框架.zip

一些网站的前端模板,各种不同风格的管理系统,还有一些好看的特效,放在自己写的前端模板中就可以使用,如火焰文字特效,大风车旋转,文字立体旋转,文字柳枝摇摆,文字外翻,图片堆叠

2019-12-26

空空如也

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

TA关注的人

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