自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Python+GIS ≈Geopandas?

最近读《红楼梦》,读到了宁荣二府受元妃之命前往清虚观打醮,那人马纷纷、轿车云云的场面,好不气派!在清虚观里张法官有意与宝玉说亲,但是心里只有黛玉的宝玉自然反感至极。至第二日,宝玉因张道士的说亲心中大不自在,且因为黛玉中暑,闷闷不乐。为此专门前往潇湘馆来看黛玉,却不知原为好意的探视却因为黛玉的偏执、任性的小性子惹起了两人的误会。至此大观园里的潇湘馆两人又是哭又是闹,甚至惊动了贾母。两人虽各处一室、却情发一心,一个掩面啜泣,一个仰天长叹,真真叫人看的捉急。也难怪,哪个少男少女谈恋爱不是在这样的感情里互相较量

2022-03-27 17:52:30 1201

原创 最全cmd命令集合,快来收藏~

前言Windows 是我们日常使用最多的操作系统,其丰富的软件生态,使其成为我们日常最离不开的操作系统。值得一提的是,Windows不像Linux 那样可以使非常自如的使用命令行,对比使用之后,就会发现Windows的命令行有点不人性化,用起来很不方便,但是有时候我们又不得不去使用cmd命令,为了方便大家学习和使用,我找来了较全的cmd命令集合,供大家学习和使用。因为有时候在网上找的命令不符合我们的使用目的。甚至还有不对的命令。CMD command Description Window

2022-01-27 16:45:02 2710

原创 基于Windows10+Pycharm2021 安装PyQt5 or PyQt6

前言因为我自己想利用Python做一个GIS的小工具,查了一些资料发现PyQt,比较强大并且界面也比较美观,因此就决定配置一下PyQt的开发环境。我安装的是python3.10.1,无论我怎么费尽心思去排查问题都无法正确安装PyQt5和PyQt5-tools,总之就是报依赖冲突或者版本不匹配的错误。试了5~6次,我觉得是不是我的Python版本是不是太新了,就尝试安装了Python3.7.6,再把之前安装的其它依赖包一大堆依赖包挪到3.7.6下面之后,我就卸载了Python3.10.1。安装Py

2022-01-21 18:09:16 3577 1

原创 Java多线程通信方式[四]

使用CountDownLatch实现多线程闭锁CountDownLatch是一个同步工具类,可以用来协调多个线程的执行时间。例如:可以让A线程在其他线程运行完毕之后再执行。也就是说,如果其他线程没有执行完毕,则A线程就会一直等待。这种特性也称之为闭锁。闭锁的使用场景: 确保某个计算,在其需要的所有资源都准备就绪后再执行。 确保某个服务,在其依赖的所有服务都已启动后再启动。 确保某个任务,在所有参与者都准备就绪后再执行。 CountDownLatch的原理Coun

2022-01-09 16:31:23 283

原创 Java多线程通信方式[三]

信号量**信号量(semaphore):**是一种用于提供不同进程之间或者一个给定的不同线程间同步手段的原语。信号量多用于进程间的同步与互斥,简单的说一下同步和互斥的意思:同步:处理竞争就是同步,安排进程执行的先后顺序就是同步,每个进程都有一定的个先后执行顺序。互斥:互斥访问不可共享的临界资源,同时会引发两个新的控制问题(互斥可以说是特殊的同步)。竞争:当并发进程竞争使用同一个资源的时候,我们就称为竞争进程。共享资源通常分为两类:一类是互斥共享资源,即任一时刻只允许一个进程访问该资源;另

2021-12-28 17:37:40 285

原创 Java多线程通信方式[二]

使用Lock重构生产者消费者及线程通信在上一篇在文章中,都是使用synchronized对方法进行加锁,然后通过wait()、notify()、notifyAll进行线程通信。除此之外,还可以使用Lock给方法加锁,然后使用Condition接口提供的await()、singalAll()进行线程通信。二者的对应关系如下表:Lock加锁目的 synchronzied Lock接口的Lock()、unlock()方法 使得当前线程处于等待状态 wait() Conditio

2021-12-26 08:54:03 191

原创 Java多线程通信方式[一]

使用CountDownLatch实现多线程闭锁CountDownLatch是一个同步工具类,可以用来协调多个线程的执行时间。例如:可以让A线程在其他线程运行完毕之后再执行。也就是说,如果其他线程没有执行完毕,则A线程就会一直等待。这种特性也称之为闭锁。闭锁的使用场景: 确保某个计算,在其需要的所有资源都准备就绪后再执行。 确保某个服务,在其依赖的所有服务都已启动后再启动。 确保某个任务,在所有参与者都准备就绪后再执行。 CountDownLatch的原理Coun

2021-12-25 11:40:05 466

原创 深入理解volatile关键字

volatilevolatile是JVM提供的一个轻量级的同步机制,除了能够“避免JVM对long/double的误操作”外,还有以下两个作用: volatile修饰的变量可以对所有线程立即可见 不同的线程如果要访问同一个变量,就必须借助主内存进行传递。但是如果给变量加了votatile关键字,则该变量的值就可以被所有线程立即感知。 volatile可以禁止指令“重排序”优化 在理解重排序之前,有必要了解一下“原子性”,因为重排序的对象必须是原子性的语句。但是在Java中,并不是所有

2021-12-23 14:13:03 301

原创 巧用tree命令导出文件目录递归详情

缘由我清楚的记得在我读研二的时候有一次我帮老师收“海外名师课堂”的作业,有一名巴基斯坦的学生,想要老师的课件,我当时给他说这个不被允许,随便给外国留学生拷贝课件原则上是不允许的,我是这样认为的。但是他说这个是经过了我们老师的同意,听到这我就给他拷贝了课件,不然好像显得我们巴铁关系也不怎么铁,一个课件都不拷贝。但是同时他希望我能给他提供课件的目录概览信息,他当时说的英文,但是我听出来了,并想都没想就回答:“OK,I’ll send you later.”回到教研室,我就开始琢磨这个事儿,因为课件很..

2021-12-20 12:56:03 692

原创 Go语言之包和go工具

引言Go自带100多个包,可以为大多数应用程序提供基础。Go社区是一个茁壮成长的生态环境,其中鼓励包设计、共享、重用以及改进,已经发布的很多包,可以在https://godoc.org找到。包管理系统的目的是为了对关联的特性进行分类,组织成便于理解和修改的单元,使其与程序的其它包保持独立,从而有助于设计和维护大型程序。Go的包管理类似于Java的依赖管理,比如常用的:maven,不同的是,Go的包管理不需要指定GAV坐标,而是需要调用者主动下载包文件。包通过控制名字是否导出使其对包外可见来提

2021-12-19 17:04:48 200

原创 Go语言之goroutine和通道

goroutine在Go里,每一个并发执行的活动称为goroutine。 如果你是一名Java程序员,可以把goroutine比作为线程,但是goroutine和线程在数量上有很大的差别,原因在于Go语言引入了协程的概念,协程相比于线程是一种用户态的线程,协程更加轻量,实用更加经济,因此同样的服务器可以开销的协程数量要比线程多很多。goroutine和协程的区别: goroutine是协程的go语言实现,相当于把别的语言的类库的功能内置到语言里。从调度上看,goroutine的调度开销远远小

2021-12-13 15:43:27 228

原创 Go语言之接口

接口接口类型是对其他类型行为的概括与抽象。通过使用接口,我们可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定类型的实现上。很多面向对象的编程语言都有接口的概念,Go语言的接口的独特之处在于它是隐式实现的。换句话说,对于一个具体的类型,无需声明它实现了哪些接口,只要提供接口所必需的方法即可。这种设计让你无需改变已有的类型的实现,就可以为这些类型创建新的接口,对于那些不能修改包的类型,这一点特别有用。声明接口并实现声明一个Car接口,并new出三种车辆去实现这个接口,代码如下:pa

2021-12-11 16:15:45 1689

原创 Go语言之方法

概念方法的声明和函数极为类似,区别在于在函数名称前指定了一个类型,意思就是把这个函数绑定到了这个类型上,这就是方法。这个就是OOP编程思想的体现,让方法属于某一个类型,会Java的同学可能会非常熟悉这种感觉。packagemainimport("fmt""math")typePointstruct{x,yfloat64}//普通的函数funcDistance(p,qPoint)float64{returnmath.Hypot(q.x-p....

2021-12-09 17:48:26 617

原创 Go语言之函数

函数函数是每一种编程语言在构建大型程序时进行连续调用的子单元,一般情况下一个函数,是一定可以完成某种功能,这种功能可以是数据的处理或者包装、也可能是一个HTTP请求,也可以是对数据库的操作等。这种调用单元就是函数,每种语言函数的写法会有差异,但是理论原理都是一样的。以上是我个人的理解,如有问题,可以私信交流哦~函数声明在Go语言里面,每个函数声明包含一个名称、一个形参列表、一个可选的返回列表以及函数体:func name(parameter-list) (result-list){ ..

2021-12-08 15:26:48 100

原创 Go语言复合数据类型之JSON

JSONJSON是JavaScript对象的表示法,是一种发送和接收信息的格式标准。也是我们日常工作中使用最为广泛的数据结构之一。Go语言通过标准库encoding/json,encoding.xml,encoding/asn1和其他库对JSON的解码和编码做了很好的支持,这些库都拥有相同的API。我们在实例中使用最多的encoding/json来做演示。JSON的对象用来编码Go里面的map(键为字符串类型)和结构体,如下:boolean truenumber -25.3str...

2021-12-08 13:23:54 795

原创 Java | 编码的艺术

思考在《调香术》这本书里面有这样一句话,<font color= “#660066" >“人所共知,调香是科学技术和艺术的结合,在调配高级香水、空气清新剂、化妆品香精时。“艺术”二字占有更大的分量,同艺术家、画家一样,调香师的艺术修养决定了他的作品到达的境界。”如果对这句话引深一下,我觉得编程也是如此,<font color= “#660066" >开发人员对编码理解和领悟的水平高低,决定了其编码艺术水平到达的境界,越是优雅、简洁的代码,其艺术水平就越高,更容易让人产生心理共

2021-12-05 10:20:03 218

原创 [第四篇] PostGIS:“我让PG更完美”

概要本篇文章主要分为几何图形处理函数、仿生变换函数、聚类函数、边界分析函数、线性参考函数、轨迹函数、SFCGAL 函数、版本函数这八部分。Geometry ProcessingST_Buffer(T) Returns a geometry covering all points within a given distance from the input geometry.//语法geometryST_Buffer(geometryg1,floatradius_of_buff...

2021-11-26 14:18:50 339

原创 [第三篇] PostGIS:“我让PG更完美”

概要本篇文章主要分为几何图形输入输出其它输入格式、几何图形输出(WKT/WKB)、边界操作符、距离操作符、拓扑空间关系函数、距离空间关系函数、测量函数这九部分。Geometry Input Other FormatsST_Box2dFromGeoHashReturn a BOX2D from a GeoHash string.//语法box2dST_Box2dFromGeoHash(textgeohash,integerprecision=full_precision_of_...

2021-11-26 14:12:23 312

原创 [第二篇] PostGIS:“我让PG更完美”

概要本篇文章主要介绍了PostGIS的基础函数、几何图形访问函数、几何图形编辑函数、几何图形验证函数、空间参考系统函数、几何图形输入输出(WKT/WKB)这七部分。PostGIS ReferenceST_CollectCreates a GeometryCollection or Multi* geometry from a set of geometries.//语法geometryST_Collect(geometryg1,geometryg2);geometryST...

2021-11-26 14:03:01 166

原创 [第二篇] PostGIS:“我让PG更完美”

概要本篇文章主要介绍了PostGIS的基础函数、几何图形访问函数、几何图形编辑函数、几何图形验证函数、空间参考系统函数、几何图形输入输出(WKT/WKB)这七部分。PostGIS ReferenceST_CollectCreates a GeometryCollection or Multi* geometry from a set of geometries.//语法geometryST_Collect(geometryg1,geometryg2);geometryST...

2021-11-26 14:01:03 226

原创 [第一篇] PostGIS:“我让PG更完美”

About PostGISPostGIS adds support for geographic objects to the PostgreSQL object-relational database. In effect, PostGIS "spatially enables" the PostgreSQL server, allowing it to be used as a backend spatial database for geographic information systems

2021-11-26 12:58:20 824

原创 Spring Boot常用注解总结

Spring Boot总结@SpringBootApplication@SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合;该注解通常被使用在主类上。@Configuration等同于Spring的XML配置文件;使用Java代码可以检查类型安全,一般加在主类上;

2021-11-23 14:11:09 452

原创 Go语言之结构体

概念结构体是将零个或者多个任意类型的命名变量组合在一起的聚合数据类型,每个变量都叫做结构体的成员。在Java语言中,对应的概念则是类,这是Java面向对象编程思想的重要体现。细节 先看看Go语言中的结构体: #定义一个雇员的结构体typeEmployeestruct{IDintNamestringAddressstringDobtime.TimePostionintSalaryintManage...

2021-11-22 16:50:22 331

原创 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 850

原创 使用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 1048

原创 Linux之目录介绍

前言Linux操作系统是开发人员几乎每天不得不去使用的操作系统之一,因为我们的程序上线、运维、服务更新,都需要借助Linux操作系统。然而,可能大多数开发人员对于Linux操作系统的目录都是一知半解,可能不清楚每个目录的作用,进行服务部署的时候,总是凭着以往的经验在根目录或者自己习惯使用的目录里面进行文件系统的操作。因为我就是这样的人,哈哈哈~其实这样并不好,因为如果不清楚每个目录的作用,有时候可能会导致严重上线故障。曾经在北京出差的时候,需要进行服务部署,通过使用df -h命令后,我发现只有run

2021-11-16 19:53:29 530

原创 Go语言复合数据类型之map

map概念map是使用非常广泛且设计精妙的数据结构之一,在Java里面,我们使用最多的数据结构之一就是map。map是一个拥有键值对元素的无序集合,在这个集合中,键的值是唯一的,可以通过键来获取、更新、删除对应的值。无论散列表多大,这些操作都可以在常量的时间内完成。map细节 声明一个map: var ages map[string]int或者下面这样ages := make(map[string]int) //创建一个从string到int的map我们也可以使用map的字...

2021-11-16 14:16:37 481

原创 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 826

原创 Go语言复合数据类型之slice

slice概念slice表示一个拥有相同类型元素的可变长度的序列。slice通常写成[]T,其中元素的类型都是T,这点儿类似于java中的泛型,可以接受未知类型的变量。slice是一种轻量级的数据结构,可以用来访问数组的部分或者全部元素。slice的底层是数组,slice有三个属性:指针、长度、容量;指针:是指向每个元素的地址;长度:slice所存储的元素个数;容量:slice的大小;slice细节 Go内置的len()和cap()函数可以返回slice的长度和容量大小。一个底

2021-11-14 12:48:04 362

原创 Go语言复合数据类型之数组

在学习复合数据类型之前,我们得知道复合数据类型是由基本数据类型组合而成,和Java一样,Go语言也有基本数据类型,不过Go语言的基础数据类型有点特殊,它们分别是整数、浮点数、复数、布尔值、字符串、常量这六大类。相比之下,Java的基础数据类型就显得非常细致,它们分别是:byte、int、short、long、char、float、double、boolean。数组的概念数组是具有固定长度且拥有零个或者多个类型元素的序列。由于数组的长度是固定的,所以在Go里面很少直接使用,使用更多的是slice。

2021-11-12 20:31:48 232

原创 Go语言之包和文件

在Go语言中,包的作用和其他语言的库或者模块类似,Go语言的包我感觉类似于IDEA里面的module,就是可以互相调用的子工程的概念。用于支持模块化、封装、编译隔离和重用。一个包的源代码保存在一个或者多个以.go结尾的文件中,它所在目录名的尾部就是包的导入路径。每一个包给它的声明提供独立的命名空间。例如,在image包中,Decode标识符合unicode/utf16中的标识符一样,但是关联了不同的函数。为了从外部引用一个函数,我们必须明确修饰标识符来指明所指的是image.Decode或utf16.D

2021-11-08 12:42:04 193

原创 Go语言类型之声明

在任何程序中,我们都会进行类型的声明,这一点任何程序设计语言都是相似的。不同的类型会有不同的含义,比如:int类型可以用来表示循环的索引、时间戳、文件描述符、月份等;float64可以用来表示速度、或者温度;string类型的可以用来表示文件名称、姓名、实体的描述等;在Go语言中,使用type声明定义一个新的命名类型,该类型一定是底层已有的类型,如下所示:type name underlying-type类型的声明通常出现在包级别,这里命名的类型在整个包中可见,如果该类型的首字母大写,则其他.

2021-11-08 10:36:59 341

原创 CentOS7搭建nfs共享服务

需求背景相信做Java开发的小伙伴可能都会遇到这样的需求,在生产环境多台机器需要访问一台机器上数据,这样的数据一般都是为了统一管理和存储,并且呢,这样的数据一般比较大,不容易进行迁移,因此我需要多台机器访问一台机器的上的数据的功能。技术路线1About SambaSamba is the standard Windows interoperability suite of programs for Linux and Unix.Samba is Free Software licens

2021-11-07 21:45:14 399

原创 初识GDAL与实战

初识GDALGDAL(Geospatial Data Abstraction Library),是一个用于矢量和栅格格式数据之间的转换器。由开源地理空间基金会在 X/MIT 风格的开源许可下发布。作为一个库,它为所有支持的格式向调用应用程序提供单个栅格抽象数据模型和单个矢量抽象数据模型。它还带有各种有用的命令行实用程序,用于数据转换和处理。该新闻页面描述了2021年10月GDAL / OGR 3.3.3版本。GIS的基础设施-GDAL个人认为,GDAL可以称为GIS的基础设施 ,为什么这么说呢?

2021-11-06 20:22:52 794

原创 学以致用 | Redis概念与简单实操

Redis概念Redis是一个由C语言编写、基于key-value存储结构的开源NoSQL数据库,其读写速度为10万次/秒,这个速度已经远远大于传统的关系型数据库。使用场景 在高并发的情况下,可将Redis作为应用程序与关系数据库之间的缓存。 读操作:直接从Redis中高速读取数据; 写操作:写操作有两种方式; A. 先将数据写入MySQL 数据库,用于持久化,然后再将写入的数据同步至Redis中,方便后面访问量上来后高速读取; B. 在高并发访问的情况下,可以先..

2021-10-30 18:08:39 104

原创 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 408

原创 Go语言程序结构之变量

初识Go语言之变量var声明创建一个具体类型的变量,然后给它附加一个名字,设置他的初始值,这种声明都是一个通用的形式:varnametype=expression在实际的开发中,为了方便开发,我们一般不会这么写,我们会省略type或者expression,因为省略了type,编译器会由expression推断出type的值,而省略了expression,编译器会给变量自动赋值为零值,就是常见的nil。不同类型的零值如下表所示:type 零值 int 0 bo...

2021-10-29 13:41:41 107

原创 Windows10使用TomCat本地部署ArcGIS API for JavaScript 4.12

前言:使用TomCat本地部署ArcGIS API for JavaScript本来应该是很简单的一件事,不知道我是哪里阴差阳错没弄好,折腾了好几个小时,最后在师兄的帮助下,完成这项小任务,所以在此记录一下,希望可以帮助更多的人,不要走我这样的弯路。1. 所需软件TomCat 8.5.41 || ArcGIS API for JavaScript 4.12(latest)2. ...

2019-08-08 11:54:40 495

原创 win10上python2和python3 共存

看图操作即可这里需要重启命令行终端哦!不然python2和python3是识别不出来的!

2019-07-16 18:09:52 71

原创 windows10:pip is configured with locations that require TLS/SSL, however the ssl module in Python is

计算机---属性---高级系统设置---环境变量---系统变量---path,添加Anaconda的Scripts;bin以及安装的根目录:如下图

2019-07-16 08:56:52 1226 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除