
JAVA
文章平均质量分 80
你是我的小毛驴
这个作者很懒,什么都没留下…
展开
-
java集合知识点
集合ListArrayListArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数 组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数 组的数据复制到新的存储空间中。当从 ArrayList 的中间位置插入或者删除元素时,需要对数组进 行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。线程不安全//扩容int newCapacity = oldCapacity + (oldCapacity原创 2021-03-03 11:06:01 · 201 阅读 · 4 评论 -
JVM虚拟机
JVM三种最主要的JVM:Sun公司的HotSpot(常用),BEA公司的JRockit,IBM公司的J9 VMJRE、JVM、JDK三者的关系JDK是Java程序员常用的开发包、目的就是用来编译和调试Java程序的。JRE是指Java运行环境,也就是我们的写好的程序必须在JRE才能够运行。JVM是Java虚拟机的缩写,是指负责将字节码解释成为特定的机器码进行运行,值得注意的是在运行过程中,Java源程序需要通过编译器编译为.class文件,否则JVM不认识本地方法栈主要作用是登记nati原创 2021-03-03 10:58:40 · 259 阅读 · 1 评论 -
ThreadLocal理解
ThreadLocal怎么理解呢,在我看来就是给每一个Thread提供私有的空间,用来存放数据,这个数据可以再在Thread整个存活周期内被拿到ThreadLocal 的两种典型的使用场景1、任务多且每一个都需要,存在并发安全,比如SimpleDateFormat ,每一个任务都需要,但是又不是并发安全的类,如果在每一个任务里面都new一个SimpleDateFormat 对象的话,太占用内存了,如果只new一个SimpleDateFormat 对象的话有需要加锁,影响并发性能,但是这个类只是拿来做格原创 2021-01-27 16:14:52 · 158 阅读 · 0 评论 -
excel操作---poi、easyexcel
poi导入依赖<!-- https://mvnrepository.com/artifact/org.apache.poi/poi 03版--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version></dependency>原创 2021-01-27 16:11:12 · 318 阅读 · 1 评论 -
JUC-java.util.concurrent学习(五)--ForkJoin,CompletableFuture
JUC-java.util.concurrent学习(五)–ForkJoin做任务拆分合并public class MyForkJoin extends RecursiveTask<Long> { private Long start; private Long end; private Long temp=5000L; public MyForkJoin(Long start, Long end) { this.start = start;原创 2020-12-19 14:24:44 · 156 阅读 · 1 评论 -
函数型接口
函数型接口函数型接口public class MyFunction { public static void main(String[] args) { Function<String, String> function = new Function<String, String>() { @Override public String apply(String s) { return s; }原创 2020-12-19 14:21:32 · 123 阅读 · 1 评论 -
JUC-java.util.concurrent学习(四)---线程池
JUC-java.util.concurrent学习(四)线程池三大方法//ExecutorService executorService = Executors.newSingleThreadExecutor();//单个线程执行任务//ExecutorService executorService = Executors.newFixedThreadPool(3);//创建固定线程执行任务ExecutorService executorService = Executors.newCached原创 2020-12-19 14:14:38 · 144 阅读 · 2 评论 -
JUC-java.util.concurrent学习(三)---BlockingQueue
BlockingQueueQueue和List,Set是同一级的,Queue下面有阻塞队列 BlockingQueue,双端队列BlockingDeque,非阻塞队列AbstractQueue阻塞:在队列为空拿去的时候会阻塞,在队列满了往里面放的时候会阻塞四组API操作抛出异常有返回值,不抛出异常阻塞等待超时等待添加addofferputoffer移除removepolltakepoll判断首elementpeek/** * 抛出原创 2020-12-19 14:11:30 · 116 阅读 · 1 评论 -
JUC-java.util.concurrent学习(二)---Callable,CountDownLatch,CyclicBarrier,Semaphore,ReadWriteLock
JUC-java.util.concurrent学习(二)CallableRunnable是不能返回结果的,不能抛出异常的@FunctionalInterfacepublic interface Callable<V> { /** * Computes a result, or throws an exception if unable to do so. * * @return computed result * @throws Exc原创 2020-12-19 13:05:38 · 301 阅读 · 2 评论 -
JUC-java.util.concurrent学习(一)
JUC-java.util.concurrent学习(一)1、、并发问题public class SelaPhone { public static void main(String[] args) { Phone phone=new Phone(); new Thread(()->{ for (int i = 0; i < 25; i++) { phone.sela(); } }).sta原创 2020-12-19 12:59:48 · 166 阅读 · 1 评论 -
CAS原子操作
CAS翻译成中文为比较并交换,是对cpu的层面而言,在java中主要是通过java.util.concurrent.atomic包下的一些原子操作类实现的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Qn5VLRu-1607501914269)(D:\Typora\Image\image-20201209153931566.png)]这些类的实现是通过unsafe类实现,而unsafe类执行的是native方法,底层是由c++写的public final boole原创 2020-12-09 16:21:16 · 118 阅读 · 0 评论 -
JMM内存模型
JMM内存模型三大特性:可见性:对于共享变量,两个线程同时使用一个线程做了修改,另一个线程会不会知道原子性:原子性就相当于事务,如果有多个步骤,必须同时执行(不能打乱步骤)有序性:在将代码转化为汇编指令时,处理器为了达到更好地执行效果,可能会重排指令,也就是说会和我们写的代码执行顺序不一样,但是它会保证在单线程下执行结果是不变得,但是如果在多线程并发的情况下,就是能会出问题八大原子操作read:将主内存中的变量读取出来,方便后面的load操作使用load:将read操作的值加载到线程的工作内存原创 2020-12-08 17:17:40 · 111 阅读 · 0 评论 -
阿里云短信验证码开发
阿里云短信验证码开发准备首先需要在阿里云上开通短信服务,然后在AccessKey里面设置用户和用户组,并把用户加入到用户组里面然后创建一个key密码一定要事先记住,后面是不会在显示密码的然后在用户组里面添加短信权限管理再去短信服务里面添加签名和模板一定要注意用词,不然阿里不会通过的到这里所需阿里的东西都差不多准备好了,在快速学习里面有一个查看demo,可以看到开发例子开发新建service@Servicepublic class MessageServiceImpl im原创 2020-11-10 18:20:25 · 297 阅读 · 0 评论 -
Java类的加载机制-双亲委派机制
Java类的加载机制-双亲委派机制jdk8默认的类加载器有三种启动类加载器–Bootstrap ClassLoader扩展类加载器–Extension ClassLoader应用程序类加载器–Application ClassLoader启动类加载器(Bootstrap ClassLoader)是虚拟机实现的,通过getparent方法时拿不到的,为null,启动类加载器主要是负责加载java的基础类,jdk文件夹中lib文件夹目录中jar包的类扩展类加载器(Extension ClassL原创 2020-11-05 20:31:00 · 225 阅读 · 0 评论 -
java8的stream用法
stream用法stream主要是对集合的各种操作,极大的简化了编程,并且可读性非常强stream流的数据源,可以是数组或集合,对于stream流的操作属于链式操作,也就是有中间操作和结尾操作中间操作:如filter(),map(),limit()等,中间流的操作完成会生成一个新的流,以便进行后面的操作结尾操作:如count(),allMatch(),collect()等中间操作不会立马执行,等到结尾操作时同时执行stream流的创建:集合可以直接使用stream()和parallelStre原创 2020-08-27 16:09:03 · 235 阅读 · 0 评论 -
如何使用 Spring Boot 实现异常处理?
如何使用 Spring Boot 实现异常处理?使用 @ExceptionHandler 注解处理局部异常(只能处理当前controller中的ArithmeticException和NullPointerException异常,缺点就是只能处理单个controller的异常)@Controllerpublic class ExceptionHandlerController { @RequestMapping("/excep") public String exceptionMethod原创 2020-08-05 11:51:31 · 2494 阅读 · 0 评论 -
Spring Boot 核心注解?主要由哪几个注解组成?
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?核心注解是@SpringBootApplication,它主要由@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan这三个构成@SpringBootConfiguration里面就只有一个@Configuration主要注解,也就是把该类变成一个配置类所以@SpringBootConfiguration就相当于@Configuration。@Enabl原创 2020-08-05 09:45:15 · 11685 阅读 · 0 评论 -
六大基本原则(面向对象)
面向对象的六大基本原则单一职责原则每一个类有自己单独的职责,每一个类都单独开,自己干自己的事,就像人一样,眼睛负责视觉,耳朵负责听觉,鼻子负责嗅觉(方法也是)开放封闭原则对拓展开放,对修改关闭,也就是说可以通过拓展增加新功能,不要修改原有的代码是实现新功能里氏替换原则子类能够完成的事情,不要使用父类完成,尽量使用子类依赖倒置原则高层次的模块不能够依赖低层次的模块,应该依赖于抽象,抽象不能依赖于实现接口隔离原则采用多个分类接口,如玩游戏时,一个视频接口,键盘输入接口,不原创 2020-08-04 10:41:37 · 220 阅读 · 0 评论 -
springboot打包-可运行jar和普通jar
springboot打包-可运行jar和普通jar首先引入maven的打包插件,默认打包成一个可以运行的jar,无需tomcat<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-p原创 2020-07-30 16:54:56 · 1667 阅读 · 1 评论 -
Springboot的定时任务详解
定时任务使用@Scheduled@Scheduled 注解也支持 cron 表达式,使用 cron 表达式,可以非常丰富的描述定时任务的时间Quartz添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId></dependency>原创 2020-07-30 15:31:31 · 209 阅读 · 0 评论