
Java
文章平均质量分 88
surpassLiang
视野决定效率
展开
-
基于BitMap的工作日间隔计算
BitMap无论在存储和计算工作日的复杂度上都占有明显的优势。数据库保存工作日的数据方式,虽然占用空间是BitMap的20多倍,2000个字节也可以忽略不计,由于它计算工作日算是最简单的,也不失为采纳的思路。原创 2024-07-14 00:52:41 · 1215 阅读 · 0 评论 -
HttpServletRequest设置下载文件的扩展名和默认文件名
常见的reponse类型反馈码原创 2022-10-24 17:42:46 · 4469 阅读 · 0 评论 -
gbk与utf8自动识别
UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。0xxxxxxx通过上图我们可以知道,0xxxxxxx是占用一个字节,那么他最大代表0~127(000000000~011111111)。这个也就是ASCII编码区,即utf-8完全兼容ASCII编码。我们知道,一个汉子的3个字节,所以对应。...原创 2022-07-20 20:38:40 · 2772 阅读 · 0 评论 -
HttpServletResponse 返回图片的几种方法对比
1.前言最近在看geowebcache源码,发现这里有这么一段代码,引起了我的注意,这段代码位于如下:geowebcache->core->org.geowebcache.util.ResponseUtils#writeFixedResponse()具体代码内容如下,public static void writeFixedResponse(HttpServletResponse response, int httpCode, String contentType, Resour原创 2021-12-06 13:24:08 · 5820 阅读 · 1 评论 -
GeoTools入门(九)-- DE-9IM
1. 概述在前面章节GeoTools入门(六)-- 查询那点事中,我们主要介绍了GeoTools关于shape查询的一些功能。作为一个地理信息处理框架,拓扑关系的处理是一种非常重要的功能。在GeoTools中,我们通过ECQL.toFilter()传递一个WKT字符串(RELATE)就可以实现DE-9IM 的查询:Filter filter =ECQL.toFilter("RELATE(geometry, LINESTRING (-134.921387 58.687767, -135.303391 59原创 2021-06-29 18:30:50 · 1536 阅读 · 3 评论 -
GeoTools入门(八)-- (SLD)样式处理
1. 样式概述样式(Style)犹如一盒蜡笔,使我们把地图绘制的更好看。实际上,制图的重点是使用地图进行交流,选择要包含的信息,严格删除偏离主题的信息等等。有时候,制图必须遵守制图标准,例如线条必须有多粗,水用什么颜色表示。所以制图标准可以为我们省去大量的时间去发挥创造力去展现地理要素信息。样式层描述符 (SLD) 就可以帮助我们实现这个需求,该文档为我们以 Java 对象的形式捕获的样式定义了一个很好的数据结构。1.1 控制渲染过程这是使用 GeoTools制作地图的核心。你可以想象一个大漏斗把原创 2021-06-29 01:23:51 · 5316 阅读 · 5 评论 -
GeoTools入门(七)-- 操作栅格数据
1. 概述在前面的章节,我们主要讲述了GeoTools对于矢量(主要是Shape)数据的操作。在地理信息系统的世界里,还有一类很重要的数据类型,那便是栅格数据。虽然GeoTools对于栅格数据的支持并没有gdal强大,但既然他作为GeoTools的一部分,我们还是又必要了解一下它。2. GridCoverageGeoTools对于栅格数据的支持主要又由GridCoverage实现的。作为一名程序员,我们习惯于处理诸如JPEG、GIF或者PNG等格式的栅格数据。在地理空间方面,有一个Coverage个概原创 2021-06-29 01:16:00 · 5844 阅读 · 4 评论 -
GeoTools入门(六)-- 查询那点事
1. 查询概述作为一名程序员,每天都在开发着大量的CRUD,而查询在CRUD中占有大多数。在前面的文章里介绍了对于shp的创建和修改i,今天我们就聊一聊GeoTools里的查询,准确的说是GeoTools对shp的查询。好了,我们先看一下GeoTools对于shp查询的基本语法结构:SimpleFeatureSource source = dataStore.getFeatureSource(typeName);FeatureType schema = source.getSchema();Filt原创 2021-06-29 01:11:24 · 5800 阅读 · 9 评论 -
GeoTools入门(五)-- CRS操作
1. CRS概述CRS全称为CoordinateReferenceSystems,中文叫坐标参考系统。它是GeoTools中的一个类,也是我们这次讨论的重点。在前面我们谈到了JTS库,了解到了数据模型,在这个基础上我们定义了几何体。那么什么是几何体呢?长方形、正方形、长方体等等等等,我们可以求他的周长、面积、体积。然而,在实际生活中,他们仅仅是我们想象的一个物体,并没有任何实际意义。只有当你给他附加一个单位,那么它才具备实际的意义。然而,对于一个地理几何体,我们还需要知道他们的位置。那么记录这些信息的数原创 2021-06-29 00:45:49 · 9083 阅读 · 4 评论 -
GeoTools入门(四)-- 创建shape要素
1. 几何体的创建在上一节中,我们通过一个csv文件转shp的示例展示了如何去创建一个点状的shp文件。然而在实际工作中,点要素只是几何体要素的一小部分,他还有线、多线、面、多面、曲线等多种几何体。那么他们都是怎么创建的呢?我们今天来探究一下他的真实面目。2. WKT简介因为GeoTools支持WKT创建几何体,那么我们有必要先简单了解一下什么是WKT。WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象、**空间参照系统**及空间参照系统之间的转换。它的二进制表示方式,亦原创 2021-06-29 00:32:49 · 3964 阅读 · 2 评论 -
GeoTools入门(三)-- 初识Shape文件
1. Csv2Shp在GeoTools官网用户向导的第二个示例Feature Tutorial主要将一个csv文件的点要素转换为shp文件。之前我们通过arggis等去创建shp文件已经司空见惯,而这次能通过代码创建一个shp文件,真是一件令人兴奋地事情。好了,已经迫不及待的寻找操作shp的方法了。至于官网的具体描述,感兴趣的可以详细阅读以下。我们还是以使用为主,就不做翻译式的描述了。2. 文件准备我们就按照官网提供的测试数据进行编写,将下面的代码复制到一个csv文件中。LAT, LON, CITY原创 2021-06-29 00:28:06 · 1870 阅读 · 5 评论 -
GeoTools入门(二)-- 快速入门
1. 前言本系列文章主要参考GeoTools官网的13个示例GeoTools Tutorials,做一简化阐述以及扩展。在第一节Quickstart中,我们主要讲述一下Maven Quickstart这个示例讲解,其他的实例大家可以参照官网做进一步学习。另外,为了降低学习成本,本系列课程的摒弃了QGIS、UDig等可视化工具,而是通过本篇文章提到的JMapFrame框架展示处理结果。2. 数据准备本实例主要用到的数据为官网提供的实例数据1:50m Cultural Vectors。3. pom文件原创 2021-06-29 00:22:38 · 5021 阅读 · 5 评论 -
GeoTools入门(一)-- 源码构建
1. GeoTools源码构建首先我们要明白为什么要进行源码构建?有人说为了学习优秀的代码,并于调试,做笔记。也有人会说为了满足项目的需求进行对源码的修改。我想,对于第一点还是很多人的想法,但是第二点,不仅需要身后的代码功能,但是一般也不建议这么做,因为如果要升级版本,这也算是灾难级别的影响。那有没有其他办法吗?根据代码的特性,合理的运用java的封装、继承和多态的特性进行改造,说白了就是要学会使用匿名内部类。今天我们不是去研究怎么改造代码,而是要搭建源码环境。构建不同版本的GeoTools工具类。免于原创 2021-06-29 00:17:53 · 2554 阅读 · 4 评论 -
HTTP content-type对照关系表
文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流,不知道下载文件类型) application/octet-stream .tif image/tiff .001 application/x-001 .301 application/x-301 .323 text/h323 .906 application/x-906 .907原创 2021-04-12 21:56:39 · 200 阅读 · 3 评论 -
Java代码统计工具
package cn.surpass;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;/** * @author lianghj */public class StatisticCodeLines { /** * 有效程序行数 */ public static int normalLines =原创 2021-03-30 17:02:36 · 729 阅读 · 1 评论 -
G1垃圾收集器入门
G1垃圾回收机入门原文网站概述目的这篇文章涵盖了G1垃圾收集器的基本用法以及它被用于HotspotJVM的方式。您将了解G1收集器的内部工作原理、使用G1的关键命令行开关以及记录其操作的选项。阅读时长接近一小时简介这篇文档介绍了Java虚拟机(JVM)G1垃圾收集(GC)的基本知识。在本文的第一部分是对JVM伴随垃圾回收器性能的概述。接下来我们回顾CMS收集器如何与hotspotJVM协同工作。然后,我们通过HotspotJVM上的G1垃圾收集器逐步介绍垃圾收集器的工作原理。在接下来的一个部翻译 2020-10-22 23:58:11 · 946 阅读 · 3 评论 -
wsdltojava报错/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52
原因这里是jdk8的一个bug,具体参见https://bugs.openjdk.java.net/browse/JDK-8020999解决办法在java的安装路径:${JAVA_HOME}\jdk1.8.0_241\jre\lib或者${JAVA_HOME}\jre1.8.0_214\lib下(主要看你引用的哪一个环境)新建文件:jaxp.properties内容:javax.x...原创 2020-04-13 10:10:31 · 394 阅读 · 1 评论 -
基于栈实现通过Oracle的PRIOR关键字查询结果组装java层级结构对象
1.需求描述对于数据库设计中,对于层级结构的设计一般使用parentId对于Id的引用实现。令我们愉悦的是,Oracle还提供了关键字PRIOR查询树状结构的语句。下面是对于多级菜单的层级结构查询的Sql语句。具体语法大家可以自行学习,这里不对此做过多的解释。SELECT ID, NVL(TO_CHAR(PARENT_ID), 'NULL') PARENT_ID, ...原创 2020-04-11 17:50:47 · 450 阅读 · 0 评论 -
MyBatis的那些动态Sql
1.前言动态Sql区别于静态Sql的一点就是在程序运行期间根据特定的条件生成的Sql.这里的条件和一般程序语言一样,包括判断、循环、顺序执行。那么为此Mybatis也提供了...原创 2020-04-04 20:33:05 · 764 阅读 · 0 评论 -
世上最简单mxGraph 导出图片中文乱码问题_分享一次解决问题的心理历程
1.前言正如标题所言,本篇博客并不是写怎么解决这个问题,说实话,这个问题最终解决下来也就是增加了一行有效代码。而真正关注的还是本次我解决这个问题的思路。希望对大家都有所启发、有所帮助。2.背景及问题描述最近在做一个实验管理的项目,涉及到工作流方面的知识,毋庸置疑,我们使用的是Activiti框架。当我们生成流程图的时候,发现涉及到中文名称的节点出现了“乱码”(如下图),这里之所以给乱码...原创 2020-03-27 14:36:13 · 1675 阅读 · 3 评论 -
一个程序在计算机中是如何运行的?超级干货!!!
开门见山,咱不说废话!你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}熟悉吧,可能大家都知道,运行输出...转载 2020-03-25 07:25:53 · 1990 阅读 · 0 评论 -
字符串比较也不是一件容易的事,你信吗?
目录1.前言2.案例一2.1 需求描述2.2 需求分析2.3 代码实现12.4 代码实现22.5小结3.案例二3.1 需求描述3.2 需求分析3.3 代码实现1.前言字符串比较大小对于任何一个程序员来说并不陌生,对于一个Java程序员,我们知道使用String#compareTo(str)或者是String#compareToIgnore...原创 2020-03-24 23:59:45 · 1103 阅读 · 1 评论 -
基于FastJson实现JSON与Java对象转换
1.pom.xml<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version></dependency>2.对象与字符串之...原创 2020-03-24 17:51:13 · 2290 阅读 · 0 评论 -
基于Idea构建Tomcat源码及问题解决
1.前言最近在项目中有一个想法,要是项目中能通过网页热部署一些二次开发的模块,那应该是一件很有意思而且很有实际作用的功能。所以想到了Tomcat中类加载器中反委派机制做法。为了更深入了解tomcat类加载器的反委派机制的具体实现,需要搭建Tomcat源码环境。虽然不是很难,但是还有避免不了一些坑,依次记载,方便大家学习交流。2.环境准备2.1 Idea环境本次Idea版本采用比较稳...原创 2020-03-23 21:59:42 · 686 阅读 · 0 评论 -
记录一次PDF文件生成水印
1.pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/x...原创 2020-03-20 21:36:26 · 1746 阅读 · 1 评论 -
别翻了,Lambda 表达式入门,看这篇就够了
今天分享的主题是《Lambda 表达式入门》,这也是之前一些读者留言强烈要求我写一写的,不好意思,让你们久等了,现在来满足你们,为时不晚吧? 01、初识 Lambda Lambda 表达式描述了一个代码块(或者叫匿名方法),可以将其...转载 2020-03-20 12:19:38 · 626 阅读 · 1 评论 -
Mybatis何时了,占位符你知多少
1.前序在Mybatis的世界里,存在两个我们经常用到的占位符,分别是${}和#{}。我们知道在实际开发过程中#{}的使用频率还是极高的;${}使用不当,极为容易引起Sql注入,但他却并没有在Mybatis框架中消失,足见他在框架的地位也不容小觑。他除了保证框架的兼容性,那是否还有其他存在的必要性呢?那么就跟我我的脚步,继续往下看吧。2.数据准备2.1 sql脚本CREATE T...原创 2020-03-19 22:12:40 · 2251 阅读 · 3 评论 -
开发中扫码枪的最佳实践(异常原来也可以这么用)
1.扫码枪的工作流程扫描枪作为光学、机械、电子、软件应用等技术紧密结合的高科技产品,是继键盘和鼠标之后的第三代主要的电脑输入设备。扫描枪自80年代诞生之后,得到了迅猛的发展和广泛的应用,从最直接的图片、照片、胶片到各类图纸图形以及文稿资料都可以用扫描枪输入到计算机中,进而实现对这些图像信息的处理、管理、使用、存储或输出。(摘自百度百科)上面提到扫描枪是一个输入设备,我们可以把它当做是键盘或...原创 2020-03-18 16:29:53 · 5685 阅读 · 1 评论 -
自定义Maven插件实践(descriptor failed: 52264问题解决)
大致步骤:1.创建Maven工程pom.xml文件内容<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2020-03-15 20:19:42 · 1451 阅读 · 0 评论 -
这个技巧绝对可以提升你的开发效率
1.前言最近在改造一个项目,之前由于作为其他软件的插件,使用mybatis会有冲突,所以并没有使用mybatis,而是使用的spring的springjdbc。现在决定要脱离那个设计软件,进而需要将之前大段的sql转换到mybatis中。本篇文章主要针对一段代码,分享一下如何快速的转换,这里会结合sublime(notepad++也可以)和excel处理。当然,目前已经有很多自动生成代码的工具...原创 2020-03-15 13:34:07 · 517 阅读 · 1 评论 -
warning: waiting for transaction lock on /var/lib/rpm/.rpm.lock
出现问题解决方法一rm -f /var/lib/rpm/.rpm.lockrpm --rebuilddb解决方法二fuser /var/lib/rpm/.rpm.lockkill -9 2712原创 2020-03-12 23:06:02 · 2070 阅读 · 0 评论 -
多线程中的ThreadLocal
1.ThreadLocal概述多线程的并发问题主要存在于多个线程对于同一个变量进行修改产生的数据不一致的问题,同一个变量指的值同一个对象的成员变量或者是同一个类的静态变量。之前我们常听过尽量不要使用静态变量,会引起并发问题,那么随着Spring框架的深入人心,单例中的成员变量也出现了多线程并发问题。Struts2接受参数采用成员变量自动封装,为此在Spring的配置采用多例模式,而Spring...原创 2020-03-08 22:43:28 · 885 阅读 · 2 评论 -
基于HttpClient上传文件客户端及基于SpringBoot服务文件服务端代码编码
1.服务端@PostMapping("/upload") public String updateLoad(@RequestParam("file") MultipartFile... files) { List<String> list = new ArrayList<>(); try { for (M...原创 2020-03-05 22:51:39 · 755 阅读 · 0 评论 -
Java执行Sql脚本工具类
/** * cn.esoon.util * * @author surpass * @date 2020/3/3 */public class RunSqlScript { private static volatile RunSqlScript instance; /** * 数据库连接地址 */ private String url;...原创 2020-03-03 21:03:08 · 1257 阅读 · 1 评论 -
基于Maven管理的SpringBoot项目引入外部Jar包
本篇文章主要是为了自己学习记录,便于以后查询,所以直接上代码。这里需要注意三个地方:1.dependencies标签便签引入的jar包scope为system,并且增加systemPath的标签,这个标签的${project.basedir}代表当前工程路径。2.build标签在SpringBoot项目中,打成的jar包中,maven依赖包全部在BOOT-INF\lib下,所以...原创 2020-03-02 23:03:24 · 1895 阅读 · 0 评论 -
Tomcat自定义jdk路径
问题描述在市面上tomcat总共有两种形式,一种是安装板的,也就是大约10M左右的exe安装程序,还有一种就是所谓的绿色版(免安装版)。对于安装版的tomcat。在安装过程中会指定jre的路径,但是绿色版并不能通过这种途径进行设置。一般情况下给path的环境变量配置java运行路径,tomcat启动的时候会自动使用path的环境变量。然而如果电脑装有多个版本的tomcat或者java,来会切换...原创 2020-03-01 14:18:33 · 519 阅读 · 0 评论 -
JVM常用参数配置
序号 参数 描述 实例 1 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小 -Xms1024M 2 -Xmx JVM可申请的最大Heap值,默认值为物理内存的1/4但小于1G,默...原创 2020-03-01 14:05:50 · 254 阅读 · 0 评论 -
透过ThreadPoolExecutor学习一下代码回滚
1 前言提起回滚,我们首先的能想到是事务回滚。这个词对于一个有一年以上开发经验不陌生。事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。而对于目前SpringBoot盛行的当下,给一个service类添加事务也是轻而易举的事。然而对于代码层面的回滚,我们的回滚意识就很薄弱。那么今天我们就通过JDK提供的并发包中的ThreadPoolEx...原创 2020-03-01 11:43:45 · 627 阅读 · 0 评论 -
SLF4J报错Failed to load class "org.slf4j.impl.StaticLoggerBinder."
起因使用maven搭建了一个项目,想着使用@Slf4j注解进行日志输出,所以引入了如下jar包:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</ve...原创 2020-02-29 17:48:35 · 685 阅读 · 0 评论 -
JDK鲜为人知的语法_For循环里的标签
1.开场白今天在看【ThreadPoolExecutor】类的过程中,突然发现有一个神奇的语法,之前从来没有见过,至于用那就更无从谈起了。我也相信很多人见到后也是耳目一新。这里仅作为一个记录,方便大家使用。那么这个语法是什么呢,我们先看一段源码:package java.util.concurrent;...public class ThreadPoolExecutor extend...原创 2020-02-29 17:19:44 · 418 阅读 · 1 评论