Java
文章平均质量分 76
WongBynn
这个作者很懒,什么都没留下…
展开
-
Java多线程通信方式[四]
使用CountDownLatch实现多线程闭锁CountDownLatch是一个同步工具类,可以用来协调多个线程的执行时间。例如:可以让A线程在其他线程运行完毕之后再执行。也就是说,如果其他线程没有执行完毕,则A线程就会一直等待。这种特性也称之为闭锁。闭锁的使用场景: 确保某个计算,在其需要的所有资源都准备就绪后再执行。 确保某个服务,在其依赖的所有服务都已启动后再启动。 确保某个任务,在所有参与者都准备就绪后再执行。 CountDownLatch的原理Coun原创 2022-01-09 16:31:23 · 282 阅读 · 0 评论 -
Java多线程通信方式[三]
信号量**信号量(semaphore):**是一种用于提供不同进程之间或者一个给定的不同线程间同步手段的原语。信号量多用于进程间的同步与互斥,简单的说一下同步和互斥的意思:同步:处理竞争就是同步,安排进程执行的先后顺序就是同步,每个进程都有一定的个先后执行顺序。互斥:互斥访问不可共享的临界资源,同时会引发两个新的控制问题(互斥可以说是特殊的同步)。竞争:当并发进程竞争使用同一个资源的时候,我们就称为竞争进程。共享资源通常分为两类:一类是互斥共享资源,即任一时刻只允许一个进程访问该资源;另原创 2021-12-28 17:37:40 · 285 阅读 · 0 评论 -
Java多线程通信方式[二]
使用Lock重构生产者消费者及线程通信在上一篇在文章中,都是使用synchronized对方法进行加锁,然后通过wait()、notify()、notifyAll进行线程通信。除此之外,还可以使用Lock给方法加锁,然后使用Condition接口提供的await()、singalAll()进行线程通信。二者的对应关系如下表:Lock加锁目的 synchronzied Lock接口的Lock()、unlock()方法 使得当前线程处于等待状态 wait() Conditio原创 2021-12-26 08:54:03 · 190 阅读 · 0 评论 -
Java多线程通信方式[一]
使用CountDownLatch实现多线程闭锁CountDownLatch是一个同步工具类,可以用来协调多个线程的执行时间。例如:可以让A线程在其他线程运行完毕之后再执行。也就是说,如果其他线程没有执行完毕,则A线程就会一直等待。这种特性也称之为闭锁。闭锁的使用场景: 确保某个计算,在其需要的所有资源都准备就绪后再执行。 确保某个服务,在其依赖的所有服务都已启动后再启动。 确保某个任务,在所有参与者都准备就绪后再执行。 CountDownLatch的原理Coun原创 2021-12-25 11:40:05 · 466 阅读 · 0 评论 -
深入理解volatile关键字
volatilevolatile是JVM提供的一个轻量级的同步机制,除了能够“避免JVM对long/double的误操作”外,还有以下两个作用: volatile修饰的变量可以对所有线程立即可见 不同的线程如果要访问同一个变量,就必须借助主内存进行传递。但是如果给变量加了votatile关键字,则该变量的值就可以被所有线程立即感知。 volatile可以禁止指令“重排序”优化 在理解重排序之前,有必要了解一下“原子性”,因为重排序的对象必须是原子性的语句。但是在Java中,并不是所有原创 2021-12-23 14:13:03 · 301 阅读 · 0 评论 -
Java | 编码的艺术
思考在《调香术》这本书里面有这样一句话,<font color= “#660066" >“人所共知,调香是科学技术和艺术的结合,在调配高级香水、空气清新剂、化妆品香精时。“艺术”二字占有更大的分量,同艺术家、画家一样,调香师的艺术修养决定了他的作品到达的境界。”如果对这句话引深一下,我觉得编程也是如此,<font color= “#660066" >开发人员对编码理解和领悟的水平高低,决定了其编码艺术水平到达的境界,越是优雅、简洁的代码,其艺术水平就越高,更容易让人产生心理共原创 2021-12-05 10:20:03 · 218 阅读 · 0 评论 -
Spring Boot常用注解总结
Spring Boot总结@SpringBootApplication@SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合;该注解通常被使用在主类上。@Configuration等同于Spring的XML配置文件;使用Java代码可以检查类型安全,一般加在主类上;原创 2021-11-23 14:11:09 · 452 阅读 · 0 评论 -
GeoTools,GIS的另一个基础设施~
About GeoToolsGeoTools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, for example to implement Geographic Information Systems (GIS). The GeoTools library implements Open Geo原创 2021-11-22 10:04:56 · 849 阅读 · 0 评论 -
使用Java操作office的案例
前言在Web领域开发人员会经常遇到操作office的项目需求,作为Web领域占比较高的编程语言Java而言,更是如此。比如生成Word、导出Excel、Word转PDF(这个操作主要是为了能够使用户在浏览器端查看PDF文件)。好了,话不多说,既然Java操作office如此常用,那就一起来实战吧~使用Java导出Excel我们在Spring Boot工程里面,使用hutool工具类进行Excel的写操作,hutool工具类是一个开源且功能强大的Java类库,其官方网站为:https:/原创 2021-11-20 17:51:45 · 1047 阅读 · 0 评论 -
2021-11-14
shp文件shp文件全称Shapefile文件,是美国环境系统研究所(ESRI)研制的GIS文件系统格式文件,是工业标准的矢量数据文件。Shapefile将空间特征表中的非拓扑几何对象和属性信息存储在数据集中,特征表中的几何对象存为以坐标点集表示的图形文件—SHP文件,Shapefile文件并不含拓扑(Topological)数据结构。一个Shape文件包括三个文件:一个主文件(.shp),一个索引文件(.shx),和一个dBASE(*.dbf)表。在大多数GISer的日常工作中,得益于ArcG原创 2021-11-14 16:21:30 · 793 阅读 · 0 评论 -
Java遍历map的五种方式
使用For-Each迭代entries这是最常见的方法,并在大多数情况下更可取的。当你在循环中需要使用Map的键和值时,就可以使用这个方法Map<Integer,Integer>map=newHashMap<Integer,Integer>();for(Map.Entry<Integer,Integer>entry:map.entrySet()){System.out.println("key="+entry.getKey...原创 2021-10-29 14:25:31 · 406 阅读 · 0 评论