基础入门
文章平均质量分 54
java基础入门
成长的小牛233
一个很菜,仍然热爱技术热爱生活的程序猿
展开
-
java核心技术-线程池基本原理以及常见面试题
文章目录线程池的实现原理线程池类继承关系ThreadPoolExecutorExecutor四种工具类ScheduledThreadPoolExecutorCompletableFuture用法线程池的实现原理线程池类继承关系ThreadPoolExecutorExecutor四种工具类ScheduledThreadPoolExecutorCompletableFuture用法...原创 2021-01-17 14:02:33 · 365 阅读 · 0 评论 -
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
文章目录问题背景:问题排查过程问题背景:运行环境:Mac For IDEA我的Mac 更新最新系统(window解决办法也是如下)后,由于新系统的Mac会带JDK导致自动更新Java版本,最后导致我在Idea控制台中执行mvn install后抛出No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK问题排查过程执行java -version判断java是原创 2021-02-18 19:27:57 · 230 阅读 · 2 评论 -
判断对象属性值是否为空
private boolean checkObjFieldIsNotNull(Object obj){ try { for (Field f : obj.getClass().getDeclaredFields()) { f.setAccessible(true); if (f.get(obj) != null) { return true; ...原创 2020-11-17 15:59:38 · 487 阅读 · 0 评论 -
阿里巴巴Java开发手册-日志规约
1.【强制】 应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用的SLF4j中的API。使用门面模式的日志框架吗,有利于维护和各个类的日志处理方式统一。 import org.slf4j.Logger; import org.slf4j.LoggerFactory; Logger logger = LoggerFactory.getLogger(JunitTestMyDemo.class);【强制】日志文件推荐至少保存15天【强制】日志命名规则:appNam原创 2020-09-01 19:35:32 · 950 阅读 · 0 评论 -
阿里巴巴Java开发手册-finally块必须对资源对象、流对象进行关闭操作,如果有异常也要做try-cach操作
对于JDK7及以上版本,可以使用try-with-resources方式使用方式: /** * https://www.cnblogs.com/itZhy/p/7636615.html * 其实这种方式只是语法糖,反编译以后还是tryCacheThrowTest()中的代码 * https://www.cnblogs.com/langtianya/p/5139465.html * Throwable#addSuppressed()作用:通常在finall.原创 2020-09-01 19:11:09 · 667 阅读 · 0 评论 -
阿里巴巴Java开发手册-使用JDK8的Opional类来防止出现NPE问题
/** * https://www.baeldung.com/java-optional */ @Test public void optionalTest(){ Peo peo = new Peo("weijie", 18); /** * of、ofNullable */ //of 判断peo是否为空,如果不为空程序继续执行 Optional<Peo>...原创 2020-09-01 18:44:01 · 285 阅读 · 0 评论 -
ConcurrentLinkedQueue常用方法
ConcurrentLinkedQueue<Integer> queue = new ConcurrentLinkedQueue(); for (int i = 0; i < 100; i++){ queue.add(i); } //获取元素 不移除头结点 System.out.println(queue.peek()); //返回在此队列元素上以恰当顺序进行迭代的迭代...原创 2020-08-16 02:08:30 · 378 阅读 · 0 评论 -
java中强引用、弱引用、软引用、虚引用学习
将引用之前首先让我们一起回顾一下java对象的生命周期强引用在实际开发场景中,我们一般使用的都是强引用,只要强引用存在,垃圾回收即使OOM也不会回收,知道强引用释放以后,对象才会被释放掉,可以显示地将引用赋值为null,这样的话,JVM会在合适的时间回收该对象。以下是测试: public void method() { Object o = new Object(); Object[] os = new Object[800000]; Syst原创 2020-08-06 14:54:08 · 195 阅读 · 0 评论 -
【链接转载保存】Collections.singletonList方法的使用
https://www.cnblogs.com/oreo/p/9761940.html转载 2020-07-31 10:38:58 · 276 阅读 · 0 评论 -
判断对象所有属性是否全部为空
private boolean checkObjFieldIsNotNull(Object obj){ try { for (Field f : obj.getClass().getDeclaredFields()) { f.setAccessible(true); if (f.get(obj) != null) { return true; } } }ca转载 2020-07-23 18:25:32 · 1782 阅读 · 0 评论 -
java stream filter map collector使用
class People{ String name; int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { ret...原创 2020-07-13 20:47:23 · 606 阅读 · 0 评论 -
枚举属性内容转List自己实现的方法
package jdksource;import java.lang.reflect.Array;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;/** * @author weijie * @date 2020/5/9 17:06 */public class EnumTypeChangList { public enum Weekday {原创 2020-05-09 17:59:25 · 938 阅读 · 0 评论 -
什么叫死锁?死锁案例?死锁必须满足哪些条件?如何定位死锁问题?有哪些解决死锁策略?哲学家问题?
死锁是什么?死锁一定发生在并发环境中,死锁是一种状态,当两个(或者多个线程)相互持有对方所需要的资源,却又都不主动释放手中持有的资源,导致大家都获取不到自己想要的资源,所有相关的线程无法继续执行。死锁案例import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @au...原创 2020-04-28 11:07:50 · 485 阅读 · 0 评论 -
【转载保存】ThreadPoolExecutor类使用详解
线程启动原理线程中断机制多线程实现方式FutureTask实现原理线程池之ThreadPoolExecutor概述线程池之ThreadPoolExecutor使用线程池之ThreadPoolExecutor状态控制线程池之ThreadPoolExecutor执行原理线程池之ScheduledThreadPoolExecutor概述线程池的优雅关闭实践转载:https://www.jianshu...转载 2020-02-17 03:09:40 · 189 阅读 · 0 评论 -
【转载保存】什么是线程阻塞?为什么会出现线程阻塞?
为什么会出现线程阻塞?1.睡眠状态:当一个线程执行代码的时候调用了sleep方法后,线程处于睡眠状态,需要设置一个睡眠时间,此时有其他线程需要执行时就会造成线程阻塞,而且sleep方法被调用之后,线程不会释放锁对象,也就是说锁还在该线程手里,CPU执行权还在自己手里,等睡眠时间一过,该线程就会进入就绪状态,典型的“占着茅坑不拉屎”;2.等待状态:当一个线程正在运行时,调用了wait方法,此...转载 2020-02-17 02:56:25 · 360 阅读 · 0 评论 -
java 8、9、10、11新特性学习
java8:https://www.runoob.com/java/java8-streams.html java9:https://www.runoob.com/java/java9-new-features.html java10:https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-10/index.htm...原创 2019-11-27 11:44:32 · 227 阅读 · 0 评论 -
【转载保存】java8新特性学习
编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8——lambda与并发,Java 8 Date Time API 教程: LocalDateTime和在Java 8中抽象类与接口的比较。我们也在其他地方引用了15个必读的Java 8教程。当然,我们也探究了...转载 2019-11-27 10:29:11 · 125 阅读 · 0 评论 -
多线程Runnable类创建多线程
package com.ajax;//多线程Runnable类创建多线程public class Example01 { public static void main(String [] args){ TicketWindow tw=new TicketWindow(); new Thread(tw,"窗口1").start(); new Thread(tw,"窗口2").st原创 2017-12-13 22:45:54 · 341 阅读 · 0 评论 -
多线程Thread类创建多线程
package com.ajax;//多线程Thread类创建多线程public class Example02 { public static void main(String[] args){ new MyThread().start(); new MyThread().start(); new MyThread().start();//创建一个线程对象并开启 new M原创 2017-12-13 22:46:24 · 208 阅读 · 0 评论 -
线程的优先级
package com.ajax;//线程的优先级public class Example03 { public static void main(String[] args){ Thread minPriority=new Thread(new MinPriority(),"优先级较低的线程"); Thread maxPriority=new Thread(new MaxPrior原创 2017-12-13 22:46:45 · 206 阅读 · 0 评论 -
线程休眠
package com.ajax;//线程休眠:该方法可以让当前正在执行的线程暂停一段时间,进入休眠等待状态让其他线程可以执行public class Example04 { public static void main(String[] args) throws Exception{ new Thread(new SleepThread()).start(); for(int i原创 2017-12-13 22:47:07 · 305 阅读 · 0 评论 -
线程让步
package com.ajax;//线程让步:通过yield方法来实现,该方法和sleep方法有点相似,都可以让当前正在运行的线程暂停,区别在于yield方法不会阻塞该线程,他只是将线程转换为就绪状态,让系统的调度器//重新调度一次public class Example05 { public static void main(String[] args){ //创建两个线程 T原创 2017-12-13 22:47:38 · 946 阅读 · 0 评论 -
线程插队
package com.ajax;//线程插队public class Example06 { public static void main(String[] args)throws Exception{ Thread t=new Thread(new EmergencyThread(),"线程一"); t.start(); for(int i=0;i<6;i++){ S原创 2017-12-13 22:48:05 · 819 阅读 · 0 评论 -
线程安全
package com.ajax;//线程安全public class Example07 { public static void main(String[] args){ SaleThread saleThread=new SaleThread(); new Thread(saleThread,"线程一").start(); new Thread(saleThread,"线程原创 2017-12-13 22:48:31 · 192 阅读 · 0 评论 -
java集合类总结
Collection:单列集合类的跟接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别时List和Set还有Queue。其中List的特点时元素有序,元素可重复,Set的特点时元素无序且不可重复,Queue与List性质一样,不同之处时Queue是先进先出。Map:键值对存储,每个值对应一个键,是一种映射关系,在Map集合中可以通过键值Key找到对应的值ValueList接口方法声...原创 2017-12-14 16:18:28 · 182 阅读 · 0 评论 -
Collections工具类
package com.ajax;import java.util.*;public class Example10 { public static void main(String[] args){ ArrayList list=new ArrayList(); Collections.addAll(list, "1","2","3","4"); System.out.pr原创 2017-12-14 19:17:05 · 165 阅读 · 0 评论 -
Arrays 工具类
package com.ajax;import java.util.*;public class Example10 { public static void main(String[] args){ int[] arr={1,3,2,5,4}; System.out.println("排序前:"); printArray(arr); Arrays.sort(arr);原创 2017-12-14 19:34:52 · 167 阅读 · 0 评论 -
set存储对象出现重复的解决办法
package com.student.vo;public class people { private int id; private String name; private String tel; public people(int id,String name,String tel){ this.id=id; this.name=name; this.tel=tel原创 2018-01-04 00:51:24 · 3763 阅读 · 0 评论 -
java中处理精度要求高的数据避免用double,用BigDecimal
package com.test;import java.io.Console;import java.math.BigDecimal;import java.math.BigInteger;import java.util.Arrays;import java.util.Scanner;public class M1001 { public static void mai...原创 2018-03-06 19:05:23 · 638 阅读 · 0 评论 -
java中String与new String的区别
String类:表示不可改变的字符串,当前对象创建完毕之后,该对象的内容(字符序列)是不能改变的,一旦内容改变就是一个新的对象。String对象的创建: 1):直接赋一个字面量: String str1 = “ABCD”; 2):通过构造器构造:String str = new String(“ABCD”); 面试题1:两种方式有什么区别,分别在内存中...原创 2018-03-06 21:28:07 · 22378 阅读 · 8 评论 -
java中常用的String方法
package com.test;import java.io.Console;import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] agrs){ char[] cs = new char[]{'A', 'b', ...原创 2018-03-06 21:59:32 · 141 阅读 · 0 评论 -
String练习代码保存
package com.test;public class M1001{ public static void main(String[] args) { System.out.println("-----------字符串截取----------------"); String str = "a,b,c,d,e,,"; String[]...原创 2018-03-07 19:36:17 · 157 阅读 · 0 评论 -
String、StringBuilder和StringBuffer的区别和用法
分别使用使用这三种来拼接字符串,对比各自损耗的时间: 经过测试:package com.test;public class Main{ public static void main(String[] args){ testString(); testStringBuffer(); testStringBuilder(); ...原创 2018-03-07 22:52:10 · 598 阅读 · 0 评论 -
java中随机数Random和ThreadLocalRandom()用法与区别
package com.test;import java.util.Random;import java.util.concurrent.ThreadLocalRandom;public class M1001{ public static void main(String[] args) { Random random = new Random(); ...原创 2018-03-08 09:28:33 · 4567 阅读 · 0 评论 -
java如何生成验证码
package com.test;import java.util.Random;import java.util.UUID;import java.util.concurrent.ThreadLocalRandom;public class M1001{ public static void main(String[] args) { System.out.p...原创 2018-03-08 12:35:29 · 538 阅读 · 0 评论 -
java中Date和DateFormat、SimpleDateFormat类
package com.test;import java.text.DateFormat;import java.util.Date;import java.util.Random;import java.util.UUID;import java.util.concurrent.ThreadLocalRandom;public class M1001{ public st...原创 2018-03-08 13:09:09 · 270 阅读 · 0 评论 -
重写java中集合类treeset中的方法
package com.tjrac_java_2;import java.util.Scanner;import java.util.TreeSet;public class test3 { public static void main(String[] args) { TreeSet<City> tree=new TreeSet<City&g...原创 2018-02-19 17:17:04 · 399 阅读 · 0 评论 -
java基础回顾之第一章节思维导图
233原创 2018-02-23 04:13:01 · 652 阅读 · 0 评论 -
java中日历类计算间隔多少天后变成的时间
package com.test;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Random;import ja...原创 2018-03-09 17:01:09 · 741 阅读 · 0 评论 -
Calendar如何计算最近一周的算法
package com.test;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Random;import ja...原创 2018-03-09 17:36:26 · 952 阅读 · 0 评论