Java
文章平均质量分 76
KingWang_WHU
github地址:https://github.com/KingWang93
展开
-
【Internship&Interview】2017阿里实习笔试/面试问题集锦
写在前面本人网申阿里实习(抱着试试的心态,毕竟还只是个研一),投了Java工程师的实习岗位,目前还在面试期间,不过感觉可能没有下一面了,所以目前先整理目前已经了解的情况。如有下文,后续补充。。。。1 流程分为两种:(1)网申投递简历–>在线测测评(主要包括几个方面:职场人际测试(提供相关场景)、性格测试(提供相关场景)、工作能力测试(场景)、与同事领导之间的沟通能力测试(场景)、自身评价(场景)、原创 2017-03-16 21:17:32 · 1958 阅读 · 1 评论 -
【ArcGIS】利用ArcGIS 的Java API实现SDE数据库的直连和服务连接
ArcGIS提供的API说明: ArcGIS java API地址上面可以看出来,ArcGIS提供了两种方式的数据库连接,一种是直连,一种是服务连接。连接数据库代码:package test;import java.net.MalformedURLException;import java.sql.Blob;import java.sql.Connection;import java.sq原创 2017-07-31 17:12:47 · 2955 阅读 · 2 评论 -
【GDAL/OGR】利用GDAL/OGR读取shp文件并转换为json文件(Java版)
前言: 对于GIS开发者来说,GDAL/OGR是最熟悉不过的开源GIS库了,GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。GDA原创 2017-08-04 23:13:24 · 3651 阅读 · 4 评论 -
【反向代理】跨域解决方式之一——反向代理
笔者在前几天遇到一个跨域问题,请求一个地图瓦片服务,但是地图瓦片服务地址由另一个地图服务商提供的,按照传统的后端解决跨域的手段,主要有两种:(1)后端设置CORS(这个需要第三方CORS的jar包) (2)对后端设置跨域访问(即在get或者post等方法中设置 response.setHeader(“Access-Control-Allow-Origin”, “*”);)具体可以参考:解决跨域的方原创 2017-08-05 00:29:44 · 5268 阅读 · 2 评论 -
【ArcSDE】ArcSDE服务的创建
ArcGIS 10.2全系列软件下载地址本博文主要是针对ArcSDE的SDK Java开发者,并且是服务连接方式开发的(程序中),至于程序中直连和服务连接开发的区别在笔者的另一篇博文中已经介绍了【ArcGIS】利用ArcGIS 的Java API实现SDE数据库的直连和服务连接,笔者尝试了直连方式利用sde 的sdk java版开发,但是失败了,因为arcgis只在9.3的时候公布过arcsde的s原创 2017-08-24 17:01:26 · 5779 阅读 · 0 评论 -
【Data Structure/Algorithm】排序之冒泡排序
排序算法中最入门的一个排序算法就是冒泡排序,面试中经常会考到的一个基础题目。那么什么是冒泡排序呢?以及冒泡排序算法的基本原理是什么呢? 本文会一 一解答。1,冒泡排序及其原理 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:第一趟,依次比较相邻的两个数,将小数放在前面,大数放在后面。重复第一趟步骤,每次从数组的第一个元素从头开始,直至全部排序完成。2,示例(本示例摘自ht原创 2017-09-25 13:34:13 · 2488 阅读 · 0 评论 -
【GeoTools】shp文件坐标转换
前言:GeoTools是一个开源的GIS开发工具,可以用来arcsde的开发,gis相关的文件转换读写,JTS等空间计算方法。GeoTools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, fo原创 2017-09-09 22:17:56 · 8441 阅读 · 1 评论 -
【Java】打包Jar包并用脚本执行
打包jar包的应用场景: 有时候,我们需要将一个java工程,放在服务器上让它执行。我们知道在IDE中,都是人为操作,执行这个程序。但是如果没有IDE环境,那么怎么执行Java工程呢? 这里,介绍一种jar包打包,并利用cmd执行的方式运行。 本文的IDE开发环境为Eclipse,所以idea环境开发的同学可能不太一样。工程建好之后,结构图如下: 1,创建并编辑MANIFEST原创 2017-07-03 16:31:17 · 6244 阅读 · 2 评论 -
【Java】classpath的理解及其使用方式
笔者之前对于classpath都没有什么深入的研究,之前的项目打包jar包都是按照网上的教程自己照着葫芦画瓢。但是因为最近碰到一些关于这方面的知识,因此索性觉得要好好补充一下这方面的知识。下面的文章主要是翻译自oralce官网关于设置classpath的说明Setting the class path,并对其中一些地方进行了部分的补充说明,方便读者理解。概要classpath是Java运行时环境搜索原创 2017-09-12 01:20:11 · 65882 阅读 · 4 评论 -
【Java】关于路径.和..以及/的说明
一张图说明,大家也可以尝试在Windows的dos窗口下尝试使用cd命令改变路径,观察一下这几个的区别。 直接放图,通俗易懂!原创 2017-09-12 01:23:53 · 2386 阅读 · 0 评论 -
【Java】反射之Class.forName()
Java中比较重要的一个特性就是反射,可能对于初级编程几乎没有什么接触,但是对于后期的高阶编程中是一个不可或缺的知识点。这里面涉及到的知识点就有jvm的class加载机制。这一机制在这篇文章: 深入分析Java ClassLoader原理中,有很好的讲解。1,什么是反射?按照oracle官网的介绍,反射的概念如下:Reflection enables Java code to discover i原创 2017-09-12 23:00:03 · 8277 阅读 · 0 评论 -
【Data Structure/Algorithm】排序之归并排序
本文针对《Algorithms》Fourth Edition书中的归并排序做一个总结,当做学习笔记以作记录。1,归并排序的算法原理归并排序算法的步骤为:(1)将数组逐步拆分成两个子数组,直至每个数组的大小为1。(2)因为分割到最后,数组的大小为1,因此,这个时候,就相当于数组已经排序(3)对数组进行两两合并排序,首先是合并数组大小为1的子数组,合并完之后数组大小为2,然后继续合并排序,得到大小为原创 2017-10-12 16:42:22 · 2423 阅读 · 1 评论 -
【Java】addShutdownHook函数的用法和注意事项
最近在看gRPC的一个Demo中,看到一个比较有意思的写法,程序中使用了addShutdownHook()函数。addShutdownHook()函数的用法如下:/** * Registers a new virtual-machine shutdown hook. * * <p> The Java virtual machine <i>shuts down</i> i原创 2017-11-11 00:24:53 · 14306 阅读 · 1 评论 -
【Java】ArrayList的源码分析
本文只是摘取网上的几篇博客1,源码分析https://www.cnblogs.com/ITtangtang/p/3948555.html http://blog.csdn.net/jzhf2012/article/details/8540410 http://blog.csdn.net/ns_code/article/details/355680112,源码分析中遇到的几个问题(1)代码中的en转载 2017-11-13 20:35:11 · 2314 阅读 · 0 评论 -
【FreeMarker】利用freemarker生成word版报表
前言: 在很多业务系统中,都需要生成月报,周报的报表。freemaker就很适合生成word版报表,freemaker就是利用word本身自带的xml格式进行文本替换,图片替换等操作的,当然除了简单的替换文本之外,他还有其他的高级用法,详情请见freemaker的官网,官网地址在文末给出。 利用freemaker生成报表只需要几个简单的步骤。下面利用示例展示整个流程1,制作word模板按原创 2017-07-07 21:03:45 · 2547 阅读 · 0 评论 -
【Oralce 12c】关于Oracle 12c几点需要注意的
1,jar包 对于java开发者而言,需要更换jar包,Oracle 12c的jar包更新,需要的是:odbc8.jar 2,时间格式 oracle 12c在利用jar包进行开发的时候,在获取时间字段字符串的时候,即resultset.getString(时间字段),获得的格式是yyyy/mm/dd hh:mm:ss.0,秒后面会有一个 .0。因此,我们需要进行处理,replace(“.0”,原创 2017-07-31 15:33:20 · 1666 阅读 · 0 评论 -
【MongoDb】MongoDb的hello world实例(Java版)
本次实验,前提是已经安装好mongodb环境。查看是否安装mongodb:其中需要用到相应的jar包 mongo-2.10.1.jarpackage dao;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.function.Consumer;import org原创 2017-07-31 14:43:04 · 363 阅读 · 0 评论 -
【ArcGIS/Java】利用ArcGIS的java API连接SDE库、sql操作
本文主要讲解一下怎么使用ArcGIS的Java API来连接SDE数据库,以及怎么实现空间数据的查询。 前提: ArcGIS的空间数据库SDE连接到Oracle的空间数据库中。 java API使用 arcgis9.2版:http://edndoc.esri.com/arcsde/9.2/api/japi/docs/overview-summary.html 10.0版:http://he原创 2017-07-31 14:11:34 · 4083 阅读 · 0 评论 -
【数据结构&算法】数据结构之单向链表(练习)
经过面试之后,感觉除了实习经历和项目经历之外,编程基础也很重要,其中算法和数据结构尤为重要。因此,最近没事的话,就会在leetcode上刷题,今天恰好遇到了一个知识的盲区——链表,在解题过程中同时利用首次尝试使用单元测试进行代码的测试(以前都是自己写main函数或者或其他方式测试)。下面,分享给大家,并提供自己的解题过程。题目: You are given two non-empty link原创 2017-03-19 00:22:32 · 479 阅读 · 1 评论 -
【Java】基础知识巩固(char和String)&&示例(一)
最近在项目上使用replaceAll()函数去掉小数点的时候,发现并没有得到自己想要的结果。之后便记录下自己遇到的问题,今天正好有空,不用上班(开心~),顺便整理一下此处遇到的问题。博客已经一个多星期没有更新了,终于又开始了!先放测试代码!下面的代码主要分为三部分 (1)replace和replaceAll的区别 (2)关于char类型数据的使用 (3)关于String类的理解代码原创 2017-03-27 23:02:34 · 772 阅读 · 0 评论 -
【Java】关于java.lang.UnsupportedOperationException异常错误的处理
今天在使用,set集合的add方法时,抛出了一个异常,java.lang.UnsupportedOperationException下面进行错误的复盘,代码如下:public static void main(String[] args) { Set<Object> set = PropertiesUtil.getKeyValue("xzqhall"); set.ad原创 2017-03-28 23:21:51 · 23489 阅读 · 0 评论 -
【Java】问题总结集锦
最近遇到的一些问题,趁着闲下来的一点时间,做了一些小实验,来解答一些疑问。 (1)直接关闭tomcat和利用shutdown.bat关闭区别 (2)在ServletContextListener中的contextDestroyed()方法的作用,在里面销毁线程与不销毁的区别 (3)调用contextDestroyed()方法需要在shutdown.bat运行之后进行,直接关闭star原创 2017-04-13 00:18:25 · 920 阅读 · 0 评论 -
【Java】多线程系列(二)之CountDownLatch的使用
前言 在多线程环境下,很多时候在主线程中需要等待子线程完成之后,再继续执行后面的代码。那么这种应用场景下可以利用CountDownLatch类来实现上面的功能。 下面假设一种场景,现在有一个任务执行时间很长,前端需要请求数据时的响应速度很快。那么可以考虑把该任务计算之后的结果放在内存中(这里使用的是ServletContextListener),每次隔一段时间更新一次。假设这个任务可以原创 2017-04-17 23:36:35 · 2323 阅读 · 0 评论 -
【Java】并发容器ConcurrentHashMap和CopyOnWriteArrayList(一)
本篇博文主要是初步试用并测试ConcurrentHashMap等并发容器的并发主要分为两部分测试第一部分测试ConcurrentHashMap和HashMap区别第二部分测试ConcurrentHashMap的并发能力(利用多线程,定时器测试)测试代码1:package test;import java.util.HashMap;import java.util.Iterator;import原创 2017-04-14 00:22:22 · 965 阅读 · 0 评论 -
【Gradle】Gradle的安装与配置
前言: java中,很多时候我们在项目中需要引入第三方jar包,对于每一个需要部署的服务,如果我们每次都是手动的下载jar包,然后引入jar包。尤其是在搜索jar包以及下载的过程,都是耗时费力的,有时候jar之间还存在着相互依赖的关系,以及jar包可能有多个版本,那么这个时候问题就有点麻烦。因此很多打包的工具应运而生,例如我们常用的Maven,还有我现在介绍的打包工具Gradle等等。Grad原创 2017-06-18 00:52:53 · 1962 阅读 · 0 评论 -
【Gradle】eclipse导入Gradle项目
应用场景 我们有时候会fork一个github上的开源项目,但是目前github上有很多项目都是gradle项目,利用的是Gradle进行整个项目的编译。那么这个时候,如果我们按照一般的导入工程的方法肯定是不对的。因此需要需要利用eclipse中的gradle插件,进行项目的导入。在导入Gradle项目之前,需要对IDE进行相应的配置 博主用的是eclipse开发,因此,本文以eclipse原创 2017-06-18 10:48:34 · 28092 阅读 · 0 评论 -
【Java】多线程系列(三)之阻塞线程的多种方法
前言:在某些应用场景下,我们可能需要等待某个线程执行完毕,然后才能进行后续的操作。例如,当你在计算利用多线程执行几个比较耗时的任务的时候,主线程需要利用这几个线程计算的结果,才能进行后续的操作。那么我们其实就需要等待所有线程执行完毕。这里,介绍几个常用的方法线程执行单次的场景下1,利用Thread类的join()方法package concurrent;import java.util.Array原创 2017-07-02 11:09:50 · 8467 阅读 · 0 评论 -
【Protocol Buffer】Protobuf的序列化和反序列化
前言 目前主流的几种数据交互的格式主要有xml、json、protobuf等等。一般的web项目中,最流行的主要还是json。因为浏览器对于json数据支持非常好,有很多内建的函数支持。xml数据格式在webservice中应用最为广泛,但是相比于json,它的数据更加冗余,因为需要成对的闭合标签。json使用了键值对的方式,不仅压缩了一定的数据空间,同时也具有可读性。protobuf是后起之秀原创 2017-07-12 21:22:13 · 18708 阅读 · 2 评论 -
【Java】移位运算
以前一直没有研究二进制的移位运算的应用场景是什么,怎么运算?怎么实现数据的四则运算的? 直到最近,在看Think in Java的书籍,才真正理解这个东西。下面记录一下学习笔记。1,二进制1.1 二进制的表示我们知道,计算机中所有数据都是以二进制形式存储。例如1(int)在二进制中的表现形式就是 00000000 00000000 00000000 00000001。 而0的二进制就是所原创 2017-07-09 15:59:13 · 11329 阅读 · 6 评论 -
【Vertx】利用vertx实现websocket数据推送
前言 vertx是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。 Vert.x基于全异步Java服务器Netty,并扩展出了很多有用的特性。Vert.x的亮点有: 【同时支持多种编程语言】目前已经支持了Java/JavaScript/Ruby/Python/Groovy/Clojure/Ceylon等。对程序员来说,直接好处是可以使用各种原创 2017-07-30 17:51:06 · 14066 阅读 · 4 评论 -
【JTS】JTS空间拓扑关系的测试
在JTS中有九种拓扑关系函数,touches、covers、within、crosses、intersects、disjoint、equals、overlaps、contains、coveredBy。 对于线,环,多边形这三种各有不同的特点,线不闭合,环是闭合的,多边形是一种面状。三者分别对应JTS中的LineString、LinearRing、Polygon。JTS的jar包和开发文档下载原创 2017-07-30 22:47:16 · 3190 阅读 · 0 评论 -
【JTS】利用JTS生成R树索引
前言因为,笔者最近在做一个大数据量地图在线展示的项目,因此需要利用一些手段来提升效率,例如地图缩放的时候,需要展示浏览器窗口下的实时点位,轨迹等信息。在大比例尺下(也就是放大级别较大的时候),因此只需要展示目前这个窗口大小内的数据。那么怎么知道目前窗口大小内的有哪些点位信息呢,这个时候,R树的索引就出现了,可以很好地解决这个问题。利用一个矩形框(浏览器窗口大小)来进行R树索引就可以找出矩形框内的点位原创 2017-07-30 22:30:51 · 5302 阅读 · 5 评论 -
【Data Structure/Algorithm】LCSS算法实现
最近在写一个关于路网处理的小论文,在写作中碰到一个问题就是,高德路网数据有很大一部分的道路没有路名。因此笔者想着利用OSM上的路网作为补充,看能不能进行数据的补充。整理思路如下:首先对高德路网和OSM的路网整体进行R树索引的建立对高德路网中的没有道路名称的道路,求解其MBR,然后进行R树查询查找到与其相交的OSM路网的道路。遍历上面求交后的结果,利用LCSS算法,求出匹配的道路。文中的R树建原创 2017-12-25 14:09:42 · 8302 阅读 · 1 评论