Java
文章平均质量分 81
u010868192
这个作者很懒,什么都没留下…
展开
-
Java Enum 使用
Enum使用public enum PickListStatusEnum { CREATED(0, "待拣货"), PENDING(1, "拣货中"), COMPLETED(2, "已完成"), PARTIAL_DELIVERY(3, "部分出库"), ALL_DELIVERY(4, "全部出库"), ; PickListStatusEnum(Integer index, String value) { this.index = index; this.value = value;原创 2022-05-16 14:19:02 · 149 阅读 · 1 评论 -
Java Comparator比较器
Java 对象自定义排序在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口。public class StepComparator implements Comparator<Step>{ /** * 如果o1小于o2,返回一个负数;如果o1大于o2,返回一个正数;如果他们相等,则返回0; */ @Override public int compare(Step o1, Step o2) { Date acceptTim原创 2022-05-16 14:11:31 · 2589 阅读 · 0 评论 -
Java(集合、泛型、反射、注解)
Java(集合、泛型、反射、注解)1.集合,数据的存储2.泛型,参数化类型3.反射,反向追溯4.注解,框架中简化操作一.数据结构1.数组Char[] cs = new Char[]{'G','U','P','A','O'}; 赋值,相当于初始化了大小。Char[] cs1 = new Char[5];cs1[0] = 'G';....特点:1.内存地址连续,使用之前必须要指定数组长度2.可以通过下标访问的方式访问成员,随机查询效率高3.增删操作会给系统带来性能消耗[保证数原创 2022-01-08 15:39:27 · 549 阅读 · 0 评论 -
一、线程的基本认识
线程的基本认识线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中, 是进程中的实际运作单位.为什么要使用线程?在一个应用进程中,会存在多个同时执行的任务,如果其中一个任务 被阻塞。将会引起不依赖该任务的任务也被阻塞。通过对不同任务创 建不同的线程去处理,可以提升程序处理的实时性。线程的特点:一个线程只能启动一次,结束后不能再重启。即一个线程只能调用一次start()方法一个线程对应一个栈特点:异步并行一、Java中使用多线程的方式继承Thread类原创 2022-01-08 21:11:41 · 178 阅读 · 0 评论 -
二、线程的安全性分析
线程的安全性分析一、并发编程问题的源头可见性,由多核cpu缓存导致的,每个cpu访问各自的缓存,不同cpu缓存中的数据不可见。(缓存用于提高I/O存储速度)原子性,线程切换导致的,Java中一条代码对应底层多条代码(在多条代码的执行过程中,线程切换了。)。有序性,编译器编译代码时会改变代码的顺序(单线程没有什么影响,多线程影响比较大)1. 可见性问题多核cpu访问各自缓存所导致的不同cpu在执行线程时,cpu访问的数据是各自cpu中的缓存导致下图中:线程A对于变量X的操作,对于线程B不原创 2022-01-08 21:33:22 · 313 阅读 · 0 评论 -
三、多线程中如何安全发布对象
多线程中如何安全发布对象一、final域对于final域,编译器和处理器要遵守两个重排序规则。在构造函数内对一个final域的写入与随后把这个被构造对象的引用赋值给一 个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操 作之间不能重排序。这两个规则,可以防止指令重排序,来解决可见性问题。1 写final域的重排序规则i的值可能等于0,但j的值一定等于2写普通变量i的操作,被编译器重排序到构造函数之外。原创 2022-01-08 21:58:12 · 2371 阅读 · 0 评论 -
四、J.U.C核心之AQS-重入锁
J.U.C核心之AQS(ReentrantLock)J.U.C:Java.util.concurrent工具包AQS: AbstractQueuedSynchronizer一个持有锁的线程,在释放锁之前,如果再次访问加了该同步锁的其他方法, 这个线程不需要再次争抢锁,只需要记录重入次数重入锁可以解决死锁的问题。一、ReentrantLock实现原理重入锁 -> 互斥锁与Synchronized区别:需要手动加锁解锁。二、锁的设计思想(如果我们自己去实现)一定会设计原创 2022-01-08 23:08:40 · 343 阅读 · 0 评论 -
五、线程池
线程池提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务 直接分配给线程池中的线程来执行,任务处理完以后这个线程不会被销毁, 而是等待后续分配任务一下4个线程,其实都是ThreadPoolExecutor的实现类。newFixedThreadPool创建一个固定数量的线程池newSingleThreadExecutor创建只有一个线程的线程池newCachedThreadPool创建一个可以根据实际情况调整的线程池newScheduledThre原创 2022-01-09 14:15:58 · 188 阅读 · 0 评论 -
一、初步认识IO流
I/O流I/O 实际上是input和output,也就是输入和输出。而流其实是一种抽象 的概念,它表示的是数据的无结构化传递在Java中I/O流操作的类很多,但是核心体系实际上就只有File、 InputStream、OutputStream、Reader、Writer。字节流:操作的数据单元是8位的字节。InputStream、OutputStream 作为抽象基类。字符流:操作的数据单元是字符。以Writer、Reader作为抽象基类。(utf8中:一个中文字符有3个字节,一个英文字符对原创 2022-01-12 08:26:32 · 245 阅读 · 0 评论 -
二、深入了解NIO
深入了解NIO同步异步:消息的通信方式是同步的还是异步的阻塞非阻塞:调用者在拿得到被调用者返回结果之前的状态NIO 从JDK1.4 提出的,本意是New IO(相对于传统IO),它的出现为了弥补IO的不足, 提供了更高效的方式,提高服务端处理的性能。NIO(相同点:数据源)不同点(通信方式不一样)本地磁盘网络(Select/poll)多路复用,提升服务端处理连接数量(不会阻塞)。NIO的新特性:NIO的所有操作一定是基于缓冲区的(面向缓冲区)通道(Channel):原创 2022-01-18 17:32:30 · 575 阅读 · 0 评论 -
Java8 Stream
Java8 Stream()一、stream介绍stream操作符分为两类:中间操作符终止操作符二、中间操作符对于数据流来说,中间操作符在执行定制处理程序后,数据流依然可以传递给下一级的操作符。 Stream map(Function<? super T, ? extends R> mapper);转换操作符,将T类型转换成R类型,这里默认提供了转int,long,double的操作符。flatmap(flatmapToInt, flatmapToLong, flatm原创 2022-02-08 16:16:41 · 285 阅读 · 0 评论 -
Java以及Sql语句中常见的日期处理
Sql中对日期的处理(Sqlserver)为例日期处理相关方法原创 2020-02-20 19:48:08 · 1345 阅读 · 0 评论 -
easyExcel excel导入导出
easyExcel原创 2019-11-22 10:51:44 · 893 阅读 · 0 评论