java
文章平均质量分 51
小灰灰要减肥
java小菜鸟一枚
展开
-
docker 20安装教程及常见命令详解
本文笔记学习来自B站狂神说视频链接:https://www.bilibili.com/video/BV1og4y1q7M4?p=14docker安装先卸载系统之前的老版本dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker原创 2021-03-28 11:06:49 · 3774 阅读 · 0 评论 -
2021年3月java开发面试题汇总
最近去了很对家面试,面试不会的记录下来,方便自己以后查看?面试时间(2021.3.10-2021.3.30)java基础和linux基础switch支持的数据类型基本数据类型:byte, short, char, int包装数据类型:Byte, Short, Character, Integer枚举类型:Enum字符串类型:String(Jdk 7+ 开始支持)为什么重写了equal要重写hashcodehashmap和hashtable的区别常见的集合类有哪些?说下区别?list—&g原创 2021-03-20 14:35:36 · 235 阅读 · 0 评论 -
Lock接口获取锁的方法lock,tryLock,lockInterruptibly
lockpackage com.yf.reentrantLock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class DemoLock { public static void main(String[] args) { int proLen=1; //一个生产者线程 int conLen=1; //一个原创 2021-03-16 13:09:06 · 297 阅读 · 0 评论 -
2021年java面试题
最近去了很对家面试,面试不会的下下来,方便自己以后查看switch支持的数据类型基本数据类型:byte, short, char, int包装数据类型:Byte, Short, Character, Integer枚举类型:Enum字符串类型:String(Jdk 7+ 开始支持)...原创 2021-03-13 18:06:36 · 85 阅读 · 0 评论 -
java注解的使用和原理,自定义注解
jdk自带的三个注解/*jdk自带注解*/public class JDKAnno implements Runnable { @Override //默认注解 public void run() { } @Deprecated //方法已弃用,表示这个方法已过时,不建议用 public static void f1() { } //关闭编译器警告信息 @SuppressWarnings("unchecked")原创 2021-03-13 17:41:15 · 151 阅读 · 0 评论 -
springcloud-Hoxton 学习教程(可参考jar包依赖版本)
创建一个父项目,引入maven依赖一开始引入的时候,依赖冲突很多,心态爆炸,下面是可以用的依赖版本号:注意:dependencyManagement标签,只是做了版本归一,后面的子项目在引入jar包的时候如果父pom有规定,可以不写版本号<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o原创 2021-03-02 17:37:44 · 791 阅读 · 0 评论 -
ThreadPoolExecutor应用
ThreadPoolExecutor JDK能够提供的线程池, 大家可以往这个线程池里面扔东西,让它自己去运行,首先看戏如何定义一个线程池:这里面有7个 参数:public ThreadPoolExecutor(int corePoolSize, 核心线程数int maximumPoolSize, 最大线程数long keepAliveTime, 生存时间,线程多久没干活请归还操作系统TimeUnit unit,生存时间的单位BlockingQueue workQueue, 任务队列Thre原创 2021-01-22 14:43:15 · 156 阅读 · 1 评论 -
ThreadLocal 详解
两个线程共同访问一个对象name的值先被t1线程改成"zhangsan",又被t2线程改成"lisi",所以最后打印出来是"lisi";定义一个Person类public class Person { String name;}定义两个线程访问这个同一个对象public class Demo01 { volatile static Person person=new Person(); public static void main(String[] args)原创 2021-01-20 13:09:54 · 75 阅读 · 0 评论 -
LockSupport 详细应用
locksupport是一个阻塞线程的锁LockSupport.park方法:park方法,使当前线程阻塞住代码运行结果:当i=5的时候,线程阻塞,程序不往下运行public class LockSupport01 { public static void main(String[] args) { Thread t=new Thread(()->{ for (int i = 0; i <10 ; i++) {原创 2021-01-18 11:58:13 · 148 阅读 · 0 评论 -
cas无锁优化,自旋锁 ,Atomic类
在我的博客测试volatile不具有原子性,加volatile还用加sysnchronized吗?加sysnchronized还用加volatile吗中讲到加volatile还加sysnchronized好麻烦,能不能有别的办法呢?有的,我们可以通过cas操作来实现线程安全import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;/** * cas无锁原创 2021-01-12 11:47:59 · 178 阅读 · 0 评论 -
测试volatile不具有原子性,加volatile还用加sysnchronized吗?加sysnchronized还用加volatile吗?
/** * 测试volatile不具有原子性 */public class T { volatile int count=0; //属性上加volatile 保证可见性 public void sumCount(){ for (int i = 0; i <1000 ; i++) { count++; //count++操作在底层是好几步来实现,它本身不是一个原子性的操作 } } public st原创 2021-01-12 11:10:53 · 118 阅读 · 2 评论 -
线程volatile使用
测试定义一个类,启一个线程来跑这个类,在主线程main方法里面,在执行1毫秒以后,把flag设成false,在flag不加volatile的情况下,程序在1毫秒之后未停止,说明main线程更改的flag并没有及时的同步到新线程里面,加volatile则在1毫秒之后停止public class HelloVolatile { volatile boolean flag=true; //不加volatitle,会发现程序在过1毫秒之后,线程还在继续执行,说明并没有把flag及时的变成fal原创 2021-01-11 23:21:10 · 122 阅读 · 0 评论 -
创建线程的方式
实现runable接口 public static void creatThead1(){ //线程表达方式1 实现runnable接口 Runnable runnable=()->{ System.out.println("线程跑起来了"); }; Thread thread=new Thread(runnable); thread.start(); //注意这里线程不要写成run方法,这样就原创 2021-01-11 12:21:18 · 61 阅读 · 0 评论 -
线程thread中join的用法详解
在线程中调用其他线程的join方法1.首先创建一个线程,在主线程中main中运行public class Thread01 extends Thread { @Override public void run() { try { for (int i = 0; i <100 ; i++) { Thread.sleep(50); //sleep 线程睡一会,再到既定时间醒来加入到就绪状态原创 2021-01-11 12:19:22 · 457 阅读 · 0 评论 -
lambda表达式应用
首先定义一个接口public interface Study{ void stu();}需要使用这个方法的时候,需要一个类对他进行实现,但是这个实现类只在一个地方用到,我们使用匿名内部类的方式来定义public class Demo01 { public static void main(String[] args) { //匿名内部类的使用:假设一个接口的实现类只被用到一次,我们就没有必要再去创建一个类,直接写匿名内部类就好 //省事安全!原创 2021-01-10 13:37:53 · 236 阅读 · 6 评论 -
模板方法模式看这篇就够啦
情景:假如一个父类的的方法需要子类自己去实现,但是子类实现方法的顺序是固定的,而且必须要被调用到?爸爸要求儿子先洗手再吃饭然后在玩耍,不允许顺序反过来????来,上代码:1.定义一个抽象父类:public abstract class Dad { //定义一个抽象父类,写两个抽象方法,一个具体方法,通过子类继承重写抽象方法, // 再通过调用具体方法来运行被重写过得抽象方法 //方法的先后执行顺序是固定的,并且无法修改,所以这里用final修饰 //这里的run方法原创 2021-01-07 16:35:08 · 74 阅读 · 0 评论 -
详解深拷贝和浅拷贝 java
浅拷贝定义一个Location类public class Location { String name; int x; public Location(String name, int x) { this.name = name; this.x = x; } public String getName() { return name; } public void setName(String n原创 2021-01-07 11:39:59 · 107 阅读 · 0 评论 -
使用抽象类踩过得坑
首先,先看下代码,1.我创建了一个抽象类public abstract class Tools { public String name = "C"; public Tools() { System.out.println("父类也创建出来了"); } public String getName() { return name; } public void setName(String name) {原创 2020-12-30 23:20:27 · 163 阅读 · 0 评论 -
设计模式之单例模式
如下所以例子中构造方法都私有化,无法通过构造方法new对象饿汉模式对象在一开始类加载的时候就new出来,JVM保证线程安全简单实用,推荐使用!唯一缺点:不管用到与否,类装载时就完成实例化/** * 单例模式之饿汉模式 */public class Singleton01 { private static final Singleton01 singleton = new Singleton01(); public static Singleton01 getInstance(原创 2020-12-25 22:43:54 · 69 阅读 · 0 评论 -
idea 导入别人的项目后,显示包的名称错误does not correspond to the file path
在把别人的项目导入idea的过程中,jdk需要重新配置后,发现所有的类里面显示的包都是错的 does not correspond to the file path,发现包的结构是正确的,但是显示引入包是错误的?结果发现是因为自己在标记为源码文件的位置标记错了,必须标记在src下面,如果标记在整个项目,就会报错选择src,右键标记下就解决了不报错了。。。。ok...原创 2020-12-22 22:50:12 · 12219 阅读 · 0 评论 -
选择排序,冒泡排序,插入排序
/*数组排序,选择,冒泡,插入*/public class Code03Sort { public static void main(String[] args) { int[] arr = {9,5,4,3,8,0,9,5,1,0,89,98}; print(arr); // Sort01(arr); // SelectSort(arr); // bubSort(arr); insertSor.原创 2020-12-17 13:31:58 · 112 阅读 · 2 评论 -
算数右移>>和逻辑右移>>>的区别
1.首先先来了解下为啥没有区分算数左移和逻辑左移?因为左移的时候无论是算数左移还是逻辑左移,左移过后空出来的低位都用0填充,所以没有区别2.左移和右移的普遍规律是啥?假设有个整数N 以int类型举例如果左移X位,则得到的结果是N*2的X次方如果右移X位,则得到的结果是N/2的X次方3.>>>逻辑右移?因为如果按照逻辑右移来看,假设移位前是4 ,4>>>2 向右移两位,高位补0,则得到的结果是1;那如果是-4呢?-4>>..原创 2020-12-17 12:53:32 · 3855 阅读 · 1 评论 -
算法-求n的阶乘相加
/*计算阶乘:N!+(N-1)!+(N-2)!.....1*/public class Code02Factorial { public static void main(String[] args) { int n = 4; factorial(n); } private static void factorial(int n) { long sum = 0; //所以阶乘求和的数 long fac = 1; .原创 2020-12-16 10:39:38 · 2018 阅读 · 0 评论 -
SSM配置教程
SSM配置教程一:引包spring——10个上传架包——3个Jackson架包——3个Mysql-connector——1个Aspectjweaver切面架包——1个Mybatis:log4j——1个mybatis——1个mybatisSpring——1个Servlet.api——一个二:项目布局三:文件...原创 2018-07-23 10:26:37 · 292 阅读 · 0 评论