- 博客(75)
- 资源 (5)
- 收藏
- 关注
原创 【坐标转换】四参数和七参数计算,并正向转换坐标(附完整源代码地址)
实际项目中,经常遇到到不同坐标系之间变换的需求,比如西安80转wgs84,再转成百度坐标用于web显示。但网上只有不同椭球基准坐标系之间转换的片段资料或代码,本文将尽量展示出更多的核心代码(涉及变换的整个流程),供大家参考。四参数计算四参数变换模式主要用于范围较小平面坐标变换,四参数计算需要两个以上的参考原点。四参数类public class FourParam implements ParamCalculator { /** * x轴偏移 */ .
2020-08-05 15:15:32 8367 26
原创 大数据平台架构技术选型与场景运用
内容来源:2017年5月6日,大眼科技CTO张逸在“魅族技术开放日第八期——数据洞察”进行《大数据平台架构技术选型与场景运用》演讲分享。视频地址:https://mp.csdn.net/console/editor/html/104497130摘要本次分享将结合多个大数据项目与产品研发的经验,探讨如何基于不同的需求场景搭建通用的大数据平台。内容涵盖数据采集、存储与分析处理等多方面的主流...
2020-02-25 16:36:27 1366
转载 【机器学习】基础
概述机器学习(Machine Learning,ML) 是使用计算机来彰显数据背后的真实含义,它为了把无序的数据转换成有用的信息。是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能...
2020-02-12 15:39:51 743
转载 Java I/O体系——从原理到应用到高性能优化,这一篇全说清楚了
本文介绍操作系统I/O工作原理,Java I/O设计,基本使用,开源项目中实现高性能I/O常见方法和实现,彻底搞懂高性能I/O之道基础概念在介绍I/O原理之前,先重温几个基础概念:1.操作系统与内核操作系统:管理计算机硬件与软件资源的系统软件内核:操作系统的核心软件,负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,为应用程序提供对计算机硬件的安全访问服务...
2019-12-27 11:41:33 984
原创 【java并发编程】底层原理——锁分类和java锁机制
一、什么是锁? 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。 锁通常需要硬件支持才能有效实施。这种支持通常采取一个或多个原子指令的形式,如"test-and-set", "fetch-and-add" or "compare-and-swap"”。这些指令允许单个进程测试...
2019-02-22 16:14:19 5154 1
原创 【java并发编程】底层原理——用户态和内核态的区别
一、背景--线程状态切换的代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。synch...
2019-02-21 14:57:47 9129 2
原创 MySQL-查询优化
对于刚入行的程序猿来说,如何优化MySQL查询,是必须跨过的坎。网上有很多关于SQL优化的博文,但大多是片段和结论。这里,我摘抄了《高性能MySQL》一书的内容,从全局的角度将MySQL查询优化的思路和要点进行串通,希望能帮助大家有一个系统性的认知。如果希望深入学习请阅读此书籍,并在实际开发中反复思考佐证。一、MySQL基本架构1、基本架构组成Server层:包括连接器、查询缓存、...
2018-12-20 18:32:02 22546 3
原创 【Spring MVC源码解析】(三)HandlerMapping
HandlerMapping家族成员可以分为两支,一支继承自AbastractUrlHandlerMapping,另一支继承自AbastracHandlerMethodMapping,两只都继承自AbastractHandlerMapping。绿框AbstractHandlerMapping抽象类,实现了【获得请求对应的处理器和拦截器们】的骨架逻辑,然后提供getHandlerInternal(HttpServletRequest request)模板方法,交由子类实现。AbstractH...
2021-05-11 11:10:28 336 1
原创 【Spring MVC源码解析】(二)请求处理流程
一、概览本篇来看看,一个web用户请求是如何被Spring mvc(DispatchServlet)处理的,先上图:具体步骤:第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找)第三步:处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handl
2021-04-27 14:00:39 334
原创 智慧规划技术路径——基于高德地图的公共服务设施覆盖评价
以往的分析评价方式真的对吗?1.中国的城市规划长期受制于数据的获取,使得规划决策多为拍脑袋式决策。规划工作的数据基础高度依赖测绘数据、统计资料以及政府部门的官方数据,在进行城市系统性、综合性分析方面,会有很多掣肘的地方。2.以常见幼儿园、小学等教育设施覆盖范围评价为例。基于测绘和文字资料,辨认地理位置,照搬规范,使用刻板的直线距离(步行可达300米、500米、1000米)来评价教育设施覆盖水平是否合理?直线距离不代表步行距离,真实路网未必可达!3.有没有适用于大多数城市的一套智慧规划方案?使..
2021-04-22 16:03:41 894
原创 【Spring MVC源码解析】(一)创建容器
Java web 项目在Tomcat、Jetty等服务器中运行,是因为实现了Servlet规范,即实现了服务器应用。SpringMVC是当下java web项目最流行的框架,我们一起来看看Spring MVC 是怎么和 Servlet 集成,怎么来初始化 Spring 容器的。父子容器首先来看下web应用初始化的核心文件,web.xml<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
2021-04-19 17:33:33 262
原创 【CAD】Java使用第三方类库解析CAD文件,详细接口说明
前篇我们一起认识了CAD绘图交换文件DXF数据格式,并以java代码为例,展示如何自定义读取dxf文件中的图形元素,将其解析成java对象类,以进行二次扩展开发。但毕竟CAD的图元世界很庞大,自己建立一套完整解析类库耗时耗力,需要一个团队支持,当然你是大牛除外。所以,下文将给大家介绍多年来我觉得最好用的一个CAD第三方解析类库,其资料偏少,基本没有说明文档,本文我会将常用接口一一列出,以Demo形式向你阐述。类库包含的所有图元 //Entity types public final st.
2021-02-07 11:25:33 5911 7
原创 【Gis】Alpha Shapes提取离散点凹边轮廓线(java实现)
Alpha Shapes算法介绍计算几何中Alpha Shqpes描述欧氏平面有限点集形状的一组分段线性的简单曲线。Alpha Shqpes可以用来从一堆无序的点集中提取边缘
2021-02-01 12:41:58 3183 6
原创 【CAD】java自实现解析CAD文件,读取图形元素(附国外大牛CAD解析库,读写二维三维)
上一篇已经理解DXF绘图交换文件数据格式。接下来使用java程序加载.dxf文件,解析其中的直线、多段线、圆弧、圆图形元素,可用于前端结合高德、百度地图进行可视化展示。文末附国外大牛CAD读写java库,完整解析所有元素。1.定义实体以点、线实体class为例/*** 向量(坐标)点*/public class Vertex { /** * 编号 */ protected int id; /** * x轴坐标 *.
2021-01-18 10:57:35 7919 32
原创 【CAD】DXF文件格式详细说明,清晰易懂
DWG格式数据是AutoCAD图形文件,内部工作格式,以二进制方式存储,格式不开源。DXF格式是AutoCAD(Drawing Exchange Format) 绘图交换文件,主要作用就是用于与其他软件进行数据交互。对外交互,说明格式标准稳定,并可解析,所以如果自己开发CAD文件的读写软件需要从.dxf文件入手。下面我们就一起来揭开.dxf文件格式的面纱文末附DXF文件格式白皮书一、数据结构就如文本章节一般,任何数据内容都有一个格式让你去认识它,dwf文件数据结构简单,行递进式结构,.
2021-01-18 10:56:31 5432 2
原创 【SpringIOC源码解析】一——IOC容器启动流程
什么是IOCIoC只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是在类内部主动创建依赖对象,从而导致类与类之间高耦合;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用
2020-12-03 14:25:04 785
转载 keepalive配置文件详解
第一部分:全局定义块1、email通知。作用:有故障,发邮件报警。2、Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。3、花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一
2020-12-01 16:45:13 4307 1
转载 VRRP协议详解
产生背景及应用环境1.1为什么要用VRRPVRRP(Virtual Router Redundancy Protocol)------虚拟路由器冗余协议,其最新技术标准是RFC3768。为什么要用VRRP呢,主要是为了实现数据链路层互通设备的冗余备份功能,我们来看图一:通过上图可以看到,常规的局域网一般都是多个终端接到交换机上,然后通过单独的出口路由器连接到Internet,这时候问题来了,如果这个出口路由器坏掉了,那么整个上行的流量就会全部断掉,这就是传说中的单点故障。所以说我们要
2020-12-01 09:43:36 868
原创 【SpringIOC源码解析】二——XMl文件解析与BeanDefiniotn注册
spring启动会创建 Bean 容器,加载并注册 Bean,Bean的配置是在Xml文件中,它是如何解析的呢?/**XmlBeanDefinitionReader303行*/public int loadBeanDefinitions(Resource resource) throws BeanDefinitionStoreException { //封装扩展编码集功能的Resource,主要对资源文件的编码进行处理 return loadBeanDefinitions(new Enco
2020-11-20 16:04:25 168
原创 【SpringIOC源码解析】三——Bean的加载过程
在第二篇我们了解了Xml标签解析和BeanDefinition的注册,接下来就是Bean加载的探索。对于Bean的加载,Spring中的调用方式为:MyEntity entity=applicationContext.getBean(“myEntity”);BeanFactory提供多个重载的getBean()接口,其具体实现是由AbstractBeanFactory.doGetBean执行,这是一个极其复杂和冗长的过程。/**AbstractBeanFactory 239行*/pr
2020-11-20 15:46:15 341 1
转载 方案虽好,成本先行:数据库Sharding+Proxy实践解析
一、分库分表的背景在谈论数据库架构演变和优化时,我们经常会听到分片、分库分表(Sharding)这样的关键词,在很长一段时间内,在各个公司、各中技术论坛里都很热衷谈论各种分片方案,尤其是互联网非常普及的 MySQL 数据库。但对笔者来说,分片、分库分表并不是一门创新技术,也不是一个好方案,它只是由于数据体系结构的限制而做的无奈之举,所以后来在听到这些词时,对笔者来说,更大意义在于感觉到朋友的公司业务量在快速增长,而对这个方案本身,其实有非常多问题。二、分表的根本原因以 MySQL 为例,分库分表
2020-11-10 16:39:30 544
转载 Linux环境Tomcat不能被shutdown.sh正常关闭
问题分析在Linux环境下,使用shutdown.sh脚本关闭Tomcat,经常会出现无法正常关闭的情况,使用ps -ef命令查看发现仍然有tomcat的进程。查看linux日志以及源代码,问题出在WebappClassLoaderBase中,此类为Context的类加载器父类,在容器关闭时,会调用其stop方法,stop方法会调用clearReferencesThreads方法private boolean clearReferencesStopThreads = false;priv
2020-11-03 09:42:40 1141
原创 Netty+Protobuf+Disruptor构建高性能应用服务器
github:https://github.com/54lyll/cooser码云:https://gitee.com/wind_zhou/cooser1服务器架构1.1简介Cooser是基于Netty框架搭建的Reactor模式高性能,可扩展的网络服务器。基于Netty对NIO的多路复用机制,高效利用cpu硬件资源,优化服务器并发连接性能,达到伸缩性要求。我司业务场景为常量连接(十百千),大量请求,作为底层TCP服务器,从数据传输体量、解析性能考虑,采用Google Proto...
2020-10-30 16:37:22 1645 2
原创 Docker部署实践——web服务、mysql、nginx、mongo、kafka等
一、生产环境1.镜像 Name Tag Description webapp 1.0 应用服务运行环境,基于jdk1.8、python3.6 mysql 5.7 Mysql 数据库,内置smw_v2数据库 mongo 4.2.9 Mongodb,内存占用配置2G
2020-10-15 16:46:51 269
原创 Dokcer入门与安装
一、Docker介绍Docker 是基于 Go 语言实现的开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。1. Docker特征更快速的交付和部署 使用 Docker ,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码,只要是开发测试过的代码,就可以确保在生产环境无缝运行 Do.
2020-10-15 16:29:38 247 1
原创 【坐标转换】高斯正反向投影计算
高斯投影高斯投影又称横轴椭圆柱等角投影, 假象有一椭圆柱面横套在地球椭球体外面,并与某一条子午线(称中央子午线或轴子午线)相切,椭圆柱的中心轴通过椭球体中心,然后用一定的投影方法将中央子午线两侧各一定经差范围内的地区投影到椭圆柱面上,再将此柱面展开即成为投影面。投影带的划分为限制投影变形的大小需要分带。我国规定按经差6°和3°进行投影分带,为大比例尺测图和工程测量采用3°带投影。特殊情况下工程测量控制网也可用1.5°带或任意带。高斯投影6°带自0°子午线起每隔经差6°自西向东分带,依次.
2020-08-04 18:28:15 3025
原创 【坐标转换】——基础知识与公式
地球椭球地球椭球体又称地球椭圆体或地球扁球体,代表地球大小和形状的数学曲面,以长半径和扁率表示,因它十分迫近于椭球体,故通常以参考椭球体表示地球椭球体的形状和大小。通常所说地球的形状和大小,实际上就是以参考椭球体的半长径、半短径和扁率来表示。1975年国际大地测量与地球物理联合会推荐的数据为:半长径6378140米,半短径6356755米,扁率1∶298.257。在众多椭球体中,WGS-84椭球体被认为符合上述条件最好的椭球。基准所谓基准是指为描述空间位置而定义的点、线和面。而大地测量基准是指用
2020-08-04 17:40:07 15193 1
原创 【Netty】——“请求-响应“同步通信机制
项目需求使用Netty搭建Tcp服务器,实现与Http Web服务器一样的同步“请求-响应”的单工同步通信方式。虽然Netty提供了异步IO和同步IO的统一实现,但是我们的需求关键并不是IO的同步异步关系,而是实现请求-响应这种典型的一问一答交互方式。要实现这个需求,需要解决两个问题:1.请求和响应的正确匹配客户端发送消息后,服务端返回响应结果,那么此结果怎么和客户端的请求正确匹配呢,即一个消息请求如何对应一个消息响应呢?解决思路:客户端程序中为每一条请求消息设置一个全局唯一id,服务端返回的响
2020-07-23 10:15:44 4290 12
原创 【Netty】——整合Google Protobuf
Google Protobuf 简介protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持php、java、c++、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。 protobuf...
2020-07-22 14:35:20 578
原创 【Netty】——Reactor模式详解
我想大家都经历过学习优秀开源框架的痛苦,特别是第一次看源码,直接从一个类的方法一步步跳转下去的漩涡。极客时间里软件设计之美专栏提到:了解一个软件、框架的设计应该从三部分着手 ——模型、接口、实现。Netty的整体架构,基于了一个著名的模式——Reactor模式。Reactor模式,是高性能网络编程的必知必会模式,下面我们就从Reactor模式入手,来打开Netty学习的大门。为何要用Reactor最开始Java BIO网络编程思想是经典的connection per thread,即SocketSe
2020-06-05 15:46:00 1394 1
转载 Secondary NameNode:究竟是什么?
很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,直到读了这篇文章Secondary Namenode - What it really do? (需翻墙)才发现并不是这样。文章写的很通俗易懂,现将其翻译如下:Secondary NameNode:它究竟有什么作用?在Hadoop中,有一些命名不好的模块,Secondary ...
2020-04-17 10:08:30 1142
原创 Linux文件权限
简介Linux最为服务器系统,其最优秀的地方之一就在于它的多用户多任务环境,即Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变得十分重要。例如,某台 Linux 服务器上有 4 个用户,分别是 root、www、ftp 和 mysql,在同一时间内,root 用户可能在查看系统日志、管理维...
2020-03-11 15:29:40 292
原创 Linux 配置固定IP
Centos系统1.查询网卡信息 ifconfig2.修改网卡配置文件vim /etc/sysconfig/network-scripts/ifcfg-XXXXXX为ifconfig查询到的网卡设备名称(网络接口名称),例如:RHEL6中网卡eth0的配置文件是“ifcfg-eth0”,而RHEL7中网卡ens33的配置文件是“ifcfg-ens33”。TYPE="Eth...
2020-03-08 16:40:24 1291
原创 【机器学习】一文理解贝叶斯定理
贝叶斯定理的由来贝叶斯定理是18世纪英国数学家托马斯·贝叶斯(Thomas Bayes)提出得重要概率论理论。贝叶斯定理源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有 N 个白球,M 个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。而一个自然而然的问题是反过来:“如...
2020-02-25 09:38:27 2050
原创 【机器学习】决策树算法
决策树 概念决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。相比朴素贝叶斯分类,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。决...
2020-02-19 15:36:09 1220
原创 【机器学习】k-近邻算法
KNN概述k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,这里只讨论分类问题中的 k-近邻算法。作为一种有监督分类算法,是最简单的机器学习算法之一,顾名思义,其算法主体思想就是根据距离相近的邻居类别,来判定自己的所属类别。算法的前提是需要有一个已被标记类别的训练数据集,通俗理解其计算过程:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实...
2020-02-17 11:38:12 767
原创 【django】——models模型CRUD操作
增Create1.保存要创建对象,请使用模型类的关键字参数将其实例化,然后调用save()将其保存到数据库。#方式一 Test模块常用 一个步骤中创建和保存对象models.Entity.objects.create(c1='xx', c2='oo') # 增加一条数据,可以接受字典类型数据 **kwargs#方式二 obj = models.Entity(c1...
2020-02-11 15:15:57 549
原创 【django】——models模型定义与字段
一、ORM简介如今几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的,而对象的信息保存在关系数据库中。按照原始SQL方式开发,程序员会在自己的业务逻辑代码中编写很多sql语句用来CRUD相关数据库数据,而这些代码通常都是极其相似或者重复。ORM对象关系映射(object elational Mapping,简称ORM)模式是一种为了解决面向对象与...
2020-02-11 14:04:56 1184
原创 Django手动删除数据库表后同步models的解决方案
第一次使用Django的测试model使用时,不小心手动删除mysql数据库中的表,再使用django中的model类报很多错误。网上查询了一些解决方法,大部分都说删除0001_inital.py文件(与数据库表的映射关系),但是仅对python manage.py makemigrations有用。下面以例子阐述完整解决办法。1.创建models模型和数据库表web模块下models.p...
2019-12-26 16:09:33 2134 2
原创 python虚拟环境
一、认识虚拟环境Virtual Environment 它是一个虚拟化,从电脑独立开辟出来的环境。通俗来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,通常把这部分独立出来的空间称作“容器”。各个容器之间互相隔离,互不影响,在单个项目的容器中(虚拟环境),可以只安装该项目需要的第三方库。譬如,使用Django框架的项目,通常可以做一个Django的虚拟环境,里面只需要安装Djan...
2019-12-25 16:11:45 438 1
spire.xls-4.11.3 Java Excel 组件
2022-11-09
Spark快速大数据分析pdf 高清
2019-07-15
涂抹MySQL(跟着三思一步一步学MySQL)
2019-01-26
算法导论-第三版
2018-10-04
数据结构与算法分析+java语言描述(原书第3版)高清
2018-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人