
java
文章平均质量分 69
二十同学
公众号:二十同学
展开
-
读写shp等空间数据,进行geometry、SimpleFeature等转换的工具类
直接上代码import org.geotools.data.*;import org.geotools.data.collection.ListFeatureCollection;import org.geotools.data.shapefile.ShapefileDataStore;import org.geotools.data.shapefile.ShapefileDataStoreFactory;import org.geotools.data.simple.SimpleFeatu原创 2021-08-19 11:44:17 · 10358 阅读 · 1 评论 -
mid、mif文件转shapefile、geojson等格式的数据
mif/mid文件说明mid、mif文件是Mapinfo用来存储空间数据的一种格式,mif文件保存了地图的属性表结构和空间信息(点、线、面),mid文件则按照mif文件里表结构的顺序在每行保存了各个字段的属性信息,具体介绍可以参考这篇博文https://ershi.blog.youkuaiyun.com/article/details/99696139mid、mif文件如何转成我们常见的shapefile、geojson等格式的数据下面的方法,其中包括转wkt、geometry、SimpleFeatur原创 2021-08-19 11:28:42 · 10405 阅读 · 5 评论 -
如何获取多线程执行结果-java
在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结。一、Thread.join在一些简单的应用场景中我们可以使用线程本身提供的join方法,我们知道join方法的目的是让一个线程等待另一个线程结束后才能执行,利用此原理我们可以设置一个监控线程用来等待程序线程执行完毕后输出返回结果,下面我们看下具体示例代码首先定义一个结果实体类public class Result { priva原创 2021-08-12 16:15:13 · 13847 阅读 · 0 评论 -
回调机制java
回调是什么回调方将本身传递给调用方,这样调用方就可以在调用完毕之后告诉回调方它想要知道的信息。类A的a()方法调用类B的b()方法 类B的b()方法执行完毕主动调用类A的callback()方法简单来说就是A类中调用B类中的某个方法C, 然后B类中反过来调用A类中的方法D, D这个方法就叫回调方法经典的回调方法的步骤:class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为callbac原创 2020-08-19 17:16:35 · 59030 阅读 · 0 评论 -
读写csv,xlsx文件的工具类
Java对csv文件和xlsx文件进行读写的工具类,简单易用,代码如下:需要引用的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2....原创 2019-12-04 10:54:54 · 66084 阅读 · 0 评论 -
并发-AQS源码分析
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。二、框架...原创 2019-11-04 18:16:00 · 59094 阅读 · 0 评论 -
maven修改仓库地址-阿里云国内镜像,提高jar包下载速度
镜像 maven默认会从中央仓库下载jar包,这个仓库在国外,而且全世界的人都会从这里下载,所以下载速度肯定是非常慢的。镜像就相当于是中央仓库的一个副本,内容和中央仓库完全一样,目前有不少国内镜像,其中阿里云算是比较稳定的,同时也能保证下载速度配置方法在settings.xml 中配置,所有项目都会生效<mirrors> <mirro...原创 2018-12-08 10:23:32 · 71142 阅读 · 0 评论 -
如何用Eclipse创建一个Maven项目
1.什么是Maven Apache Maven 是一个项目管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。 Maven工程结构和内容被定义在一个 xml 文件中——pom.xml,是 Project Object Model (POM) 的简称,此文件是整个 Maven 系统的基础组件。...原创 2018-12-08 10:10:31 · 65482 阅读 · 0 评论 -
jvm-垃圾回收简单分析
首先看看传统的垃圾回收算法引用计数法和可达性分析法 引用计数法:给每一个对象添加一个引用计数器,表示这个对象的引用个数,一旦引用个数为0的时候,说明该对象已经没用了,就可以回收了。缺点是需要额外的空间,额外的更新操作,且不能处理循环引用。一旦有对象互相引用你即 A引用B,B引用A,如果使用引用计数法那这两个对象就永远不会回收造成内存泄漏。 可达性分析法:将一系...原创 2018-11-29 15:08:08 · 66677 阅读 · 0 评论 -
ReadWriteLock读写锁的使用(Java并发)
说到Java并发编程,很多开发第一个想到同时也是经常常用的肯定是Synchronized,但是Synchronized存在明显的一个性能问题就是读与读之间互斥,简言之就是,我们编程想要实现的最好效果是,可以做到读和读互不影响,读和写互斥,写和写互斥,提高读写的效率,如何实现呢?Java并发包中ReadWriteLock是一个接口,主要有两个方法,如下:public interface R...原创 2019-03-27 13:53:27 · 66284 阅读 · 0 评论 -
jvm-内存里的java对象
在java中,创建对象的方式有很多种。最常见的就是new关键字了。除此之外,还有反射,clone(),反序列化以及Unsafe.allocateInstance。其中,反序列化和clone()是直接复制已有的数据来初始化对象的字段。Unsafe.allocateInstance 没有初始化对象的字段。new和反射则是调用构造方法来初始化实例字段的。下面是new关键字的字节码...原创 2018-11-29 15:04:38 · 71364 阅读 · 0 评论 -
HashMap, ConcurrentHashMap 最详细的原理及源码分析
网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。阅读建议:四节基本上可以进行独立阅读,建议初学者可按照...原创 2018-12-19 10:24:04 · 57931 阅读 · 1 评论 -
代理模式(java设计模式)
代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSubject:真实主题角色,是实现抽象主题接口的类。Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。代理对象提供与真实对象相同的接口,以便在任何时刻都能代替...原创 2019-01-24 10:40:29 · 68673 阅读 · 0 评论 -
java自带的加密和解密类(Cipher类 )
该类位于javax.crypto包下,声明为 public class Cipher extends Object此类为加密和解密提供密码功能。它构成了 Java Cryptographic Extension (JCE) 框架的核心。为创建 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法并将所请求转换 的名称传递给它。还可以指定提供者的名称(可选)。...原创 2019-03-08 10:12:25 · 73262 阅读 · 1 评论 -
Java线程池用法解析
1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?newThread(newRunnable() {@Overridepublicvoidrun() {// TODO Auto-generated method stub}}).start();a. 每次new Thread新建对象性能差。那你...原创 2019-03-22 10:37:51 · 70039 阅读 · 0 评论 -
idea启动服务的时候报:Command line is too long错误
Idea启动项目报错:Command line is too long. Shorten command line for App or also for Spring Boot default configuration.如下图所示:解决方法:在该项目文件夹.idea/workspace.xml中找到<component name="PropertiesComponen...原创 2019-04-11 15:31:43 · 74248 阅读 · 0 评论 -
java正则表达式详解
一、正则表达式术语1)元字符 : 非一般字符,具有某种意义的字符。如 : \bX : \b边界符, 以 X开始的单词 2)正则表达式语法大全 字符 说明 \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,"n"匹配字符"n"。"\n"匹配换行符。序列"\\"匹配"\","\("匹配"("。 ...原创 2019-04-02 16:35:46 · 125788 阅读 · 13 评论 -
Java并发编程:线程池源码解析
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今...原创 2018-06-28 10:06:06 · 66670 阅读 · 0 评论 -
JVM-invokedynamic指令分析
invokedynamic指令是java7引入的。这是自 1.0 以来第一次引入新的虚拟机指令。到了 java 8 这条指令才第一次在 java 应用,用在 lambda 表达式里。在这之前的方法调用指令为 invokestatic、invokespecial、invokevirtual、invokeinterface。这四种指令和包含目标方法类名,方法名以及方法描述符的符号引用绑定...原创 2018-11-29 14:59:22 · 73254 阅读 · 0 评论 -
jvm执行反射
反射是java中一个相当重要的特性,它的应用十分广泛。譬如java调试器,在调试过程中枚举对象所有字段的值。在Web开发中,各种可配置的框架。为了框架的扩展性,基本上都是使用反射机制。譬如Spring的IOC容器。当然,这么方便的东西往往是牺牲另一部分的特性锁带来的,而反射牺牲的则是代码执行的性能。下面就来简单分析下反射的机制反射的实现首先看下Method类的源码pub...原创 2018-11-29 14:54:40 · 70608 阅读 · 0 评论 -
jvm处理异常
在java中,异常处理主要是由抛出异常和捕获异常两大元素组成。这两个元素就组成java程序控制流的非正常转移。 抛出异常分两种:显式和隐式。显式指的是在程序中通过throw关键字手动抛出异常实例,它的主体是应用程序;而隐式值指的是在jvm执行过程中,碰到无法继续执行的异常状态,自动抛出异常,它的主体是jvm。捕获异常则涉及到了try-catch-finally代码...原创 2018-11-29 14:44:24 · 67994 阅读 · 0 评论 -
java学习
转载 2018-08-04 15:27:52 · 71903 阅读 · 0 评论 -
史上最全面Java面试汇总(面试题+答案)
JAVA面试精选【Java基础第一部分】JAVA面试精选【Java基础第二部分】JAVA面试精选【Java基础第三部分】JAVA面试精选【Java算法与编程一】JAVA面试精选【Java算法与编程二】Java高级工程师—面试(1)Java高级工程师—面试(2)Java高级工程师—面试(3)BAT/网易等面试心得阿里历年面试题Java中高级面试题数据...原创 2018-07-06 14:09:25 · 99594 阅读 · 35 评论 -
Java递归删除空文件夹
import java.io.File;public class ClearFile { static int iFile = 0; public static void main(String[] args) { // TODO Auto-generated method stub// dir_str清理文件夹的路径 String dir_s...原创 2018-07-04 16:11:54 · 75919 阅读 · 4 评论 -
初识Java Socket编程
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。下面就让我们一起揭开Socket的神秘面纱。Socket编程一、网络基础知识(参考计算机网络) 关于计算机网络部分可以参考相关博客:《TCP/IP协议栈及OSI参考模型详解》http:/...原创 2018-06-14 16:29:12 · 68452 阅读 · 0 评论 -
实体类为什么要实现Serializable序列化的作用
客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时...原创 2018-06-07 11:46:37 · 114830 阅读 · 13 评论 -
mvn 打包命令---跳过测试
1. mvn clean 清理上次生成的2. mvn package -Dmaven.test.skip=true原创 2018-06-06 16:45:06 · 87658 阅读 · 2 评论 -
maven项目建立pom.xml报无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3
一、发现问题建立maven项目后,pom.xml在显示红叉,鼠标放上去,显示Execution default-testResources of goal org.apache.maven.plugins:maven-resources-plugin:2.4.3错误。二、原因分析缺少maven-resources-plugin-2.4.3.jar或该文件下载不正确,可到repository...原创 2018-06-13 13:33:37 · 75407 阅读 · 0 评论 -
最完美的单例模式写法、详解(java)
单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Pri...原创 2018-08-09 14:25:51 · 70450 阅读 · 0 评论 -
用Java实现给图片添加文字水印-源码分享
直接上源码:单张瓦片添加单个文字水印、可设置水印文字内容,字体,颜色,旋转角度,透明度controller层import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springfr...原创 2018-08-01 16:45:06 · 69439 阅读 · 2 评论 -
JVM执行方法分析
重载和重写 在java中,如果同一个类出现了多个名称相同,参数也相同的方法,是无法通过编译的。就是说,在同一个类中定义相同名字的方法,该方法的参数必须不同,这就叫做重载。重载方法在编译过程中就可以被识别。java编译器会根据所传入的参数的声明类型来选取重载方法。共有三个阶段不考虑基本类型的自动装拆箱和可变长参数的情况下选; 在(1)没找到的话,允许装拆箱但不允许...原创 2018-11-29 14:42:06 · 72717 阅读 · 0 评论 -
JVM加载类的过程
基本概念 JVM把class文件加载到内存中变成类共有三大步骤,加载,链接,初始化。其中,链接需要验证类是否符合JVM规范,而没有经过初始化的类,在内存里是不能使用的。 大家都知道,java语言可以把类型分两大类,基本类型和引用类型。基本类型是由JVM预先定义好的,所以,我们主要讨论的是引用类型。引用类型可以细分为4类:类,接口,数组和泛型。其中,泛型会在编译时被擦除,所...原创 2018-11-29 14:30:53 · 70041 阅读 · 1 评论 -
JMeter性能测试教程
Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。运行环境为Windows 10系统,JDK版本为1.8,JM...原创 2018-11-19 14:39:21 · 72070 阅读 · 3 评论 -
如何在eclipse中添加代码检查插件,实时提示检查问题,eclipse+sonarLint+sonarqube平台代码检查规则
在eclipse中引入sonarLint插件步骤如下:1、sonarLint安装打开eclipse后,执行 help->Eclipse Marketplace->查找sonarLint 进行插件安装,安装过程中会出现重启eclipse提示,选择确认重启就好。2、安装sonarqubesonarqube下载地址:https://www.sona...原创 2018-10-18 19:00:51 · 74427 阅读 · 0 评论 -
如何查看JAVA某个进程下的线程
jps -lvmjps -lvm 用于查看当前机器上运行的java进程。可以看到所有运行的java进程都列出来了top -Hp pid可以查看某个进程的线程信息-H 显示线程信息,-p指定pid如果想查看某个进程下的线程的堆栈信息的话可以使用下面命令jstack -l pidjstack -l 32318 查看此进程下线程的堆栈信息:下面是所有...原创 2018-09-01 17:30:57 · 88953 阅读 · 2 评论 -
在浏览器进行大文件分片上传(java服务端实现)
最近在做web网盘的系统,网盘最基本的功能便是文件上传,但是文件上传当遇到大文件的时候,在web端按传统方式上传简直是灾难,所以大文件上传可以采用分片上传的办法。其主要思路是:1.大文件上传时进行分片;2.分片上传;3.对分片文件进行合并。思路比较清晰简单,但一些问题在于:1.大文件如何进行分片?2.分片如何进行记录和存储?3.如何校验每个分片文件的唯一性和顺序性?4.如何合并文件?对于大...原创 2018-08-28 17:14:52 · 74122 阅读 · 10 评论 -
在eclipse下安装lombok
lombok官网:https://projectlombok.org/安装lombok可以在实体类中通过注解的方式,不需要写get和set方法,简单方便安装lombok有俩种办法第一种1.下载 lombok.jar2.安装(1)将lombok.jar移到eclipse的安装目录(2)在eclipse.in文件最后加入下面两行-Xbootclasspath/a:...原创 2018-08-01 16:57:22 · 69319 阅读 · 0 评论 -
org.apache.ibatis.binding.BindingException原因总结
今天遇到mybatis的报错,搞了好久才搞懂,在网上找了好久的相似案例,也没有搞定,先来看下网上常见的解决办法吧,相信也能解决大部分人的报错。排查方法如下:1、mapper接口和mapper.xml是否在同一个包(package)下?名字是否一样(仅后缀不同)?2、mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致?3、接口的方法名,与xml中的一...原创 2018-06-05 20:33:56 · 193371 阅读 · 18 评论