About PostGIS
PostGIS 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 (GIS), much like ESRI's SDE or Oracle's Spatial extension. PostGIS follows the OpenGIS "Simple Features Specification for SQL" and has been certified as compliant with the "Types and Functions" profile.
PostGIS development was started by Refractions Research as a project in open source spatial database technology. PostGIS is released under the GNU General Public License. PostGIS continues to be developed by a group of contributors led by a Project Steering Committee and new features continue to be added.
译文:
PostGIS 向 PostgreSQL 对象关系数据库添加了对地理对象的支持。 实际上,PostGIS 在空间上启用了 PostgreSQL 服务器,使其可以用作地理信息系统 (GIS) 的后端空间数据库,就像 ESRI 的 SDE 或 Oracle 的 Spatial 扩展一样。 PostGIS 遵循 OpenGIS“SQL 的简单特征规范”,并已被认证为符合“类型和函数”配置文件。
PostGIS 的开发由 Refractions Research 作为开源空间数据库技术中的一个项目启动。 PostGIS 是在 GNU 通用公共许可证下发布的。 PostGIS 继续由项目指导委员会领导的一组贡献者开发,并继续添加新功能。
友情提示:本文篇幅较长,共分为5篇文章,几乎涵盖了PostGIS的所有内容,PostGIS作为PostgreSQL的重要插件,是目前国内外GIS行业的首选数据库的主要推动力。如果你感兴趣的话,可以先收藏,再慢慢学习~
DownLoad
在下面的网址中,你可以选择下载适合你的windows版本,如果你是用于生产环境,建议尽量不要选择最近的release版本。在下载安装PostGIS插件之前,你需要先具有PostgreSQL的运行环境。
在下面的网址中,我们在自己使用的PostGreSQL版本里面,选择PostGIS插件,因为这些是被PostGIS官方团队所验证和支持的。
http://download.osgeo.org/postgis/windows/
在这个网址,你可以选择适合你的其他版本安装包,也包括免安装的压缩包形式文件。
http://postgis.net/install/
安装
下载完成之后,进行安装;
PostGIS
的安装很简单,一路下一步,但是需要注意的是,PostGIS
插件需要和PostgreSQL
安装在同一个目录(也就是PostGIS
需要选择PostGreSQL
的根目录进行安装)。
安装过程当中的空间数据库可以创建也可以不创建,这个根据自己的情况来看,如果你要创建空间数据库的话,就需要连接到当前的PostgreSQL
。
准备PostGIS
在开始菜单栏找到PostGreSQL
,点击里面的pgAdmin4
;
点击左上角的Server,根据提示输入连接信息进行登录;
登录上之后,创建一个数据库实例,并新建数据库;
依次点击:数据库名-Extensions-右击-create-extension,输入:postgis
;
使用PostGIS的前置知识
1. 常见的PostGIS支持的GIS对象
这些创建GIS对象的语法要熟悉,实际工作中很容易忘~
• POINT(0 0) //点 • LINESTRING(0 0,1 1,1 2) //线 • POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) // 面 • MULTIPOINT((0 0),(1 2)) //多点 • MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) // 多线 • MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) // 多面 • GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4)) //几何集合
2. SRID——存储空间对象的地理坐标系的编号,其输入输出可通过以下接口进行
bytea WKB = ST_AsBinary(geometry); text WKT = ST_AsText(geometry); geometry = ST_GeomFromWKB(bytea WKB, SRID); geometry = ST_GeometryFromText(text WKT, SRID);
示例
SELECT (ST_GeomFromText('POINT(-126.4 45.32)', 312), 'A Place'); 输出如下: (0101000020380100009A99999999995FC0295C8FC2F5A84640,"A Place")
3. 支持3D GIS对象的语法
PostGIS EWKB/EWKT增加了对3DM、3DZ、4D坐标的支持和嵌入式SRID信息。
• POINT(0 0 0) -- XYZ • SRID=32632;POINT(0 0) -- XY with SRID • POINTM(0 0 0) -- XYM • POINT(0 0 0 0) -- XYZM • SRID=4326;MULTIPOINTM(0 0 0,1 2 1) -- XYM with SRID • MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1)) • POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)) • MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0))) • GEOMETRYCOLLECTIONM( POINTM(2 3 9), LINESTRINGM(2 3 4, 3 4 5) ) • MULTICURVE( (0 0, 5 5), CIRCULARSTRING(4 0, 4 4, 8 4) ) • POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)), ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) ) • TRIANGLE ((0 0, 0 9, 9 0, 0 0)) • TIN( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )
3DM、3DZ、4D之间的转换接口:
bytea EWKB = ST_AsEWKB(geometry); text EWKT = ST_AsEWKT(geometry); geometry = ST_GeomFromEWKB(bytea EWKB); geometry = ST_GeomFromEWKT(text EWKT)
示例
SELECT 'SRID=4;POINT(0 0)'::geometry; 输出如下: 01010000200400000000000000000000000000000000000000
4. 弯曲的几何实体
SQL多媒体应用空间规范扩展了SQL规范的简单功能,定义了一些 圆弧插值曲线。 SQL-MM的定义包括3DM、3DZ和4D坐标,但不允许嵌入SRID信息。 Well-Known Text扩展还没有被完全支持。
下面是一些简单的曲线几何图形的例子。
• CIRCULARSTRING(0 0, 1 1, 1 0) • CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0) • COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1)) //类似于LINESTRING • CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))//复合曲线 • MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4)) //复合曲线
5. 创建一张空间表
CREATE TABLE global_points ( id SERIAL PRIMARY KEY, name VARCHAR(64), location GEOGRAPHY(POINT,4326) );
6. 插入数据
INSERT INTO global_points (name, location) VALUES ('Town', 'SRID=4326;POINT(-110 30)'); INSERT INTO global_points (name, location) VALUES ('Forest', 'SRID=4326;POINT(-109 29)'); INSERT INTO global_points (name, location) VALUES ('London', 'SRID=4326;POINT(0 49)');
7. 建立索引
Creating an index works the same as GEOMETRY. PostGIS will note that the column type is GEOGRAPHY and create an
appropriate sphere-based index instead of the usual planar index used for GEOMETRY.
CREATE INDEX global_points_gix ON global_points USING GIST ( location );
8. 查询与计算
//查询给位置1000公里之内的城镇 SELECT name FROM global_points WHERE ST_DWithin(location, 'SRID=4326;POINT(-110 29)':: geography, 1000000);
// 计算从西雅图飞往伦敦的距离 SELECT ST_Distance('LINESTRING(-122.33 47.606, 0.0 51.5)'::geography, 'POINT(-21.96 64.15)'::geography); //计算点线之间的距离 SELECT ST_Distance('LINESTRING(-122.33 47.606, 0.0 51.5)'::geometry, 'POINT(-21.96 64.15) '::geometry);
9. spatial_ref_sys表
spatial_ref_sys表是一个包含PostGIS和OGC兼容的数据库表,它列出了3000多个已知的空间参考系 系统以及在它们之间进行转换/投影所需的细节。 虽然PostGIS的spatial_ref_sys表包含了3000多个比较常用的空间参考系统定义 的定义,但它并不包含所有已知的定义,如果你熟悉proj4的结构,你可以定义你自己的投影。
10. SRID
一个整数值,用于唯一识别数据库中的空间参考系统(SRS)。
11. 创建一个空间数据表
//建表 CREATE TABLE ROADS (ID serial, ROAD_NAME text, geom geometry(LINESTRING,4326) ); //添加字段 ALTER TABLE roads ADD COLUMN geom2 geometry(LINESTRINGZ,4326);
12. 创建视图,目的是简化SQL语句
//创建视图 CREATE VIEW public.vwmytablemercator AS SELECT gid, ST_Transform(geom, 3395) As geom, f_name FROM public.mytable; //删除视图 DROP VIEW public.vwmytablemercator;
13. 加载 GIS (Vector) 数据
INSERT INTO roads (id, geom, road_name) VALUES (1,'SRID=4326;LINESTRING(191232 243118,191108 243242)'::geometry,'Jeff Rd'); INSERT INTO roads (id, geom, road_name) VALUES (2,'SRID=4326;LINESTRING(189141 244158,189265 244817)','Geordie Rd'); INSERT INTO roads (id, geom, road_name) VALUES (3,'SRID=4326;LINESTRING(192783 228138,192612 229814)','Paul St'); INSERT INTO roads (id, geom, road_name) VALUES (4,'SRID=4326;LINESTRING(189412 252431,189631 259122)','Graeme Ave'); INSERT INTO roads (id, geom, road_name) VALUES (5,'SRID=4326;LINESTRING(190131 224148,190871 228134)','Phil Tce'); INSERT INTO roads (id, geom, road_name) VALUES (6,'SRID=4326;LINESTRING(198231 263418,198213 268322)','Dave Cres'); COMMIT;
14. 导入数据
14.1 使用psql
psql -d [database] -f roads.sql
14.2 使用shp2pgsql
`# shp2pgsql -c -D -s 4269 -i -I shaperoads.shp myschema.roadstable > roads.sql
psql -d roadsdb -f roads.sql`
14.3 Unix 命令
# shp2pgsql shaperoads.shp myschema.roadstable | psql -d roadsdb
15. 检索数据
//全查 SELECT id, ST_AsText(geom) AS geom, road_name FROM roads; //条件查询 SELECT id, road_name FROM roads WHERE geom='SRID=312;LINESTRING(191232 243118,191108 243242)'::geometry; //相交查询 SELECT id, road_name FROM roads WHERE ST_Intersects(geom, 'SRID=312;POLYGON((...))'); //使用矩形框来查询框内是否含有目标实体 SELECT ST_AsText(geom) AS geom FROM roads WHERE geom && ST_MakeEnvelope(191232, 243117,191232, 243119,312,4326);
16. pgsql2shp
//语法模板 pgsql2shp [] [.] pgsql2shp []
17. 建立索引
索引使得处理空间数据库大型数据集成为可能。
GiST Indexes
GiST是 "通用搜索树 "的缩写,是一种通用的索引形式。除了GIS索引之外,GiST还被用来加速 加快对各种不规则数据结构(整数阵列、光谱数据等)的搜索,这些结构不适合使用普通的B-Tree 索引。
//2D索引 CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] ); //n维索引 CREATE INDEX [indexname] ON [tablename] USING GIST ([geometryfield] gist_geometry_ops_nd); //确保索引在更新或者建立时,依然可以对表进行写操作; CREATE INDEX CONCURRENTLY [indexname] ON [tablename] USING GIST ( [geometryfield] ); //收集表的统计数据报告,以便优化查询SQL VACUUM ANALYZE [table_name] [(column_name)];
BRIN Indexes
BRIN是 "块范围索引 "的意思,是PostgreSQL 9.5中引入的一种通用的索引形式。BRIN是 是一种有损失的索引,它的主要用途是为读和写的性能提供一个折中。它的主要目标是 处理非常大的表,其中一些列与它们在表中的物理位置有一些自然的关联。 表内的物理位置有一些自然的关联。除了GIS索引之外,BRIN还被用来加快对各种规则或不规则数据结构的搜索速度 (整数、数组等)
//普通2D索引 CREATE INDEX [indexname] ON [tablename] USING BRIN ( [geometryfield] ); //3D索引 CREATE INDEX [indexname] ON [tablename] USING BRIN ([geometryfield] brin_geometry_inclusion_ops_3d); //4D索引 CREATE INDEX [indexname] ON [tablename] USING BRIN ([geometryfield] brin_geometry_inclusion_ops_4d); //修改默认的块大小 CREATE INDEX [indexname] ON [tablename] USING BRIN ( [geometryfield] ) WITH ( pages_per_range = [number]);
SP-GiST Indexes
SP-GiST是 "空间分割的通用搜索树 "的缩写,是一种通用的索引形式,支持分割的 搜索树,如四叉树、K-D树和弧度树(tries)。这些数据结构的共同特点是,它们 重复地将搜索空间划分为不需要同等大小的分区。除了GIS索引之外,SP-GiST还被用来 加快对许多种数据的搜索,如电话路由、IP路由、子串搜索等。 与GiST索引一样,SP-GiST索引也是有损失的,因为它们存储的是包含空间对象的边界盒。 对象。SP-GiST索引可以被看作是GiST索引的替代品。性能测试表明,SP-GiST 索引在有许多重叠对象的情况下特别有用,也就是所谓的 "面条数据"。 一旦GIS数据表超过几千行,就可以使用SP-GiST索引来加快数据的空间搜索速度。
//2D索引 CREATE INDEX [indexname] ON [tablename] USING SPGIST ( [geometryfield] ); //3D索引 CREATE INDEX [indexname] ON [tablename] USING SPGIST ([geometryfield] spgist_geometry_ops_3d); //确保索引在更新或者建立时,依然可以对表进行写操作; CREATE INDEX CONCURRENTLY [indexname] ON [tablename] USING SPGIST ( [geometryfield] ); //收集表的统计数据,以便优化查询SQL VACUUM ANALYZE [table_name] [(column_name)];
关于空间索引的具体使用和操作符介绍,请大家参考这篇文章,这里就不具体一一展开了。
学以致用 | PostgreSQL之空间索引
那其实准确的来讲空间索引不是PostGreSQL
提供的,而是由PostGIS
提供的功能,这也正体现插件扩展的的意义就是存在于无形,却作用无处不在!
18. 复杂查询示例
//距离匹配查询 SELECT the_geom FROM geom_table WHERE ST_Distance(the_geom, 'SRID=312;POINT(100000 200000)') //指定100的缓冲区的范围内查询 SELECT the_geom FROM geom_table WHERE ST_DWithin(the_geom, 'SRID=312;POINT(100000 200000)', 100)
19. raster2pgsql
//栅格数据转为sql文件 raster2pgsql raster_options_go_here raster_file someschema.sometable > out.sql //实操示例,栅格数据入库 raster2pgsql -s 4326 -I -C -M *.tif -F -t 100x100 public.demelevation > elev.sql psql -d gisdb -f elev.sql //Unix下栅格数据入库的操作命令 raster2pgsql -s 4326 -I -C -M *.tif -F -t 100x100 public.demelevation | psql -d gisdb //创建一个全视图、2和4级的概述表,使用复制模式插入 raster2pgsql -I -C -e -Y -F -s 26986 -t 128x128 -l 2,4 bostonaerials2008/*.jpg aerials. boston | psql -U postgres -d gisdb -h localhost -p 5432 // get a list of raster types supported: raster2pgsql -G //创建一张存储栅格数据的表 CREATE TABLE myrasters(rid serial primary key, rast raster); //建立索引 CREATE INDEX myrasters_rast_st_convexhull_idx ON myrasters USING gist( ST_ConvexHull( rast) );
20. PostGIS Geometry/Geography/Box Data Types
box2d
box2d是一种空间数据类型,用于表示一个几何体或几何体集合的二维围合盒。例如 例如,ST_Extent聚合函数返回一个box2d对象。 该表示法包含xmin、ymin、xmax、ymax的值。这些是X和Y轴的最小值和最大值。 和Y扩展的最小值和最大值。
box3d
box3d是一个postgis空间数据类型,用于表示一个几何体或几何体集合的三维包围盒。 几何体的三维包围盒。例如,ST_3DExtent聚合函数返回一个box3d对象。 该表示法包含xmin, ymin, zmin, xmax, ymax, zmax的值。这些是X、Y和Z的最小和最大 X、Y和Z轴的极限值。
geometry
geometry是PostGIS的一个基本空间数据类型,用于表示平面(欧几里得)坐标系中的一个特征。 对几何体的所有空间操作都使用几何体所在的空间参考系统的单位。
geometry_dump
geometry_dump是一个包含字段的复合数据类型。
geom - 对一个几何体组件的引用
path[] - 一个一维的整数数组,定义了倾倒的几何体到geom组件的导航路径。 路径数组从1开始(例如,path[1]是第一个元素。) 它被ST_Dump*系列函数用作输出类型,将一个复杂的几何体分解成其组成部分。
geography
geography是一种空间数据类型,用于在大地坐标系中表示一个特征。大地坐标系的模型 使用一个椭圆体对地球进行建模。 通过考虑到椭圆体模型,对地理学类型的空间操作可以提供更准确的结果。
总结
这篇文章,我们主要对PostGIS 的背景、下载、安装,以及一些常用的前置知识进行了较为系统的介绍。
如果你对PostGIS有兴趣,希望可以帮助到你~
你可能感兴趣的:([第一篇] PostGIS:“我让PG更完美”)
壁纸样机神器:快速生成个性化壁纸,提升你的设备颜值
2401_89910411
人工智能
在数字化时代,壁纸不仅是设备的装饰,更是个人风格的展示。想要快速制作出精美的壁纸吗?壁纸样机神器来帮你!这款工具集多种功能于一身,让你轻松成为壁纸设计师。一、功能亮点1.一键生成高清壁纸壁纸样机神器支持多种图片格式的上传,无论是你从网上下载的图片,还是自己拍摄的照片,都可以轻松导入。上传后,系统会自动适配高清分辨率,确保壁纸在任何设备上都能完美展示。2.智能模板库平台提供了丰富的模板选择,涵盖从极
Mamba超绝创新!搭上异常检测准确率99%+!一区秒了!
人工智能学起来
人工智能 深度学习
今天给大家推荐一个创新Max,且不卷的idea:基于Mamba做异常检测!以往的异常检测方法,以基于CNN、Transformer为主。但CNN在处理长距离依赖性方面存在困难,Transformer虽然表现出色,但由于其自注意力机制,计算复杂度较高。而Mamba,则完美弥补了这两者的缺陷,在有效处理长距离依赖性同时,具有线性复杂度,计算资源需求少!在提高模型检测精度和速度方面,一骑绝尘!比如模型A
DeepSeek原理介绍以及对网络安全行业的影响
AI拉呱
Deepseek 人工智能
大家好,我是AI拉呱,一个专注于人工智领域与网络安全方面的博主,现任资深算法研究员一职,兼职硕士研究生导师;热爱机器学习和深度学习算法应用,深耕大语言模型微调、量化、私域部署。曾获多次获得AI竞赛大奖,拥有多项发明专利和学术论文。对于AI算法有自己独特见解和经验。曾辅导十几位非计算机学生转行到算法岗位就业。关注评审分享一起学习更多知识。1.DeepSeek公司介绍1.1DeepSeek是什么:wh
大模型(含deepseek r1)本地部署利器ollama的API操作指南
人工智能llm
ollama介绍:Ollama是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。它支持多种预训练的大型语言模型(如LLaMA2、Mistral、Gemma、DeepSeek等),并提供了一个简单高效的方式来加载和使用这些模型。出现Error:somethingwentwrong,pleaseseetheollamaserverlogsfordet
吐血整理Java集合框架,免费送
聪明马的博客
Java java 数据结构
Java集合框架(JavaCollectionsFramework)是Java标准库中的一个重要部分。它为Java开发人员提供了一组常用的数据结构,如列表、集合、映射等,使其更容易地处理数据。在这篇博客中,我将详细介绍Java集合框架,包括它的主要特点、常用的集合类型以及如何使用它们来解决实际问题。一、Java集合框架的主要特点Java集合框架的主要特点是:统一的接口。Java集合框架提供了一组统
再有人问你DDD,把这篇文章丢给他
聪明马的博客
Java java 开发语言
DDD(Domain-DrivenDesign,中文名领域模型设计)是一种软件开发方法论,它强调将业务领域中的知识融入到软件设计中。DDD强调将软件开发过程分为两个主要阶段:领域分析和领域建模。领域分析是指深入了解业务领域中的问题和需求,领域建模是将分析出的领域知识转化为软件模型。在本文中,我不再过多说明DDD的来龙去脉,我将用多个例子来详细说明使用DDD和不使用DDD的区别、优势和劣势。需求:假
Git Submodule用的多吗?
Eleven
git 全栈工程师
接上篇文章,再来一起学习下gitsubmodule。我之前在项目中遇到过这种情况:多团队开发微信小程序,一个主包有很多分包的,做法是在主包里用一个脚本文件管理各分包的情况。主包在编译前,需执行一下这个脚本文件,已便于update各分包。GitSubmodule是Git提供的一种管理项目依赖的方式,允许你将一个Git仓库作为另一个Git仓库的子目录。这种方式非常适合管理项目依赖的第三方库或模块化开发
Go 并发控制:semaphore 详解
后端go面试并发编程信号量
今天我们来介绍一个Go官方库x提供的扩展并发原语semaphore,译为“信号量”。因为它就像一个信号一样控制多个goroutine之间协作。概念讲解我先简单介绍下信号量的概念,为不熟悉的读者作为补充知识。一个生活中的例子:假设一个餐厅总共有10张餐桌,每来1位顾客占用1张餐桌,那么同一时间共计可以有10人在就餐,超过10人则需要排队等位;如果有1位顾客就餐完成,则可以让排队等待的第1位顾客来就餐
焦虑驱动的成长:从Bushcraft到AI的启示
腾讯的IMA工具,将公众号和我个人的知识库融合在一起,精准地回答了这个问题:Bushcraft和Glamping玩法的区别是什么?我在想,2019年那时,我受长安邀请,参加了《天空下周末》的Glamping大会,我们创建了Bushcraft野营区,野性和Glamping的文明有些格格不入。那个时候,我被一个问题困扰:都是美好的生活方式,Glamping我喜欢,Bushcraft我也喜欢,到底应该选
chatgpt4.0账号购买指南:畅享体验更加丝滑的GPT 4.0/4o
chatgpt
解锁4.0的宇宙,开启无限可能!快来体验4.0的超能力,感受未来科技的魅力!✨以下是五大理由,让你立刻爱上它:1️⃣语言理解力MAX!ChatGPT4.0不仅仅是升级,更是进化!相比之前的版本,它拥有更强大的语言理解和生成能力,能够像一位真正的专家一样理解你的复杂问题,并提供更相关、更深入、更令人信服的答案。告别答非所问的尴尬,迎接精准高效的沟通!2️⃣多模态支持,玩转图文交互!️ChatGPT4
2024 百度万象大会举办:大模型全面重构百度移动生态,让智能体人人可用
百度
「智能体就是生产力,这是每一个人放大杠杆、撬动红利,成为超级个体的时代机遇。」5月30日,在苏州举办的2024百度移动生态万象大会上,百度集团资深副总裁、百度移动生态事业群组总经理何俊杰发表《让智能体人人可用》的主题演讲。他认为,百度有责任也有能力做好新技术的普惠者,让所有人因此受益。在本次大会上,百度搜索、文心一言APP、百度文库、百度电商、文心智能体平台、百度APP等百度移动生态业务都发布了基
炫“库”行动—人大金仓有奖征文—金仓读写分离集群优势
阳光下的微笑7
数据库 运维 big data 数据库架构 数据仓库
炫“库”行动—人大金仓有奖征文—金仓读写分离集群优势金仓读写分离集群实现了真正的高可用。为了保障数据的安全性,金仓数据库集群由多个数据库节点通过集群软件组织起来,客户通过访问集群的VIP来访问数据。并且只要有一个数据库节点正常,就不会中断业务。同时金仓读写分离集群可以保证用户能够7×24小时不间断的对数据进行访问,使得客户业务能够顺利进行。金仓读写分离集群同样具有高可用、灾备、负载均衡等特性,更保
一张图搞定(2020版)IDEA中集成Maven插件【图文】详细
一个长不胖的程序YUAN
Maven工具 Maven IDEA集成插件
1、首先你得先确保一下你的电脑上是有成功配置好的Maven工具。配置成功之后的演示:黑窗口中输入mvn-v,出现以上情况就是配置成功的,要是你没有配置好,请查看这篇Maven配置文章。建议配置阿里云镜像,以此让下载依赖更快,配置阿里云镜像。2、最好先在本地创建一个jar包本地仓库,以便之后直接配置时好指定你本地仓库的路径。为了让这篇文章只是出现IDEA集成Maven插件,我就把创建本地仓库的做法放
国内如何使用Claude 3.5/4.0?只有这3种方法!最后一种适合新手!
claude
绕过限制,畅享Claude3.5/4.0:国内用户使用指南最近,很多小伙伴都想体验Claude的魅力,感受AI的强大。然而,由于Anthropic对Claude,特别是Claude3.5/4.0的访问限制,以及对新用户注册的严格把控️,国内用户想要顺畅使用真的不容易啊!别担心!本文将化身你的锦囊妙计,详细介绍几种在国内使用Claude3.5/4.0的策略,并提供全面的操作指南和注意事项,让你轻松玩
腾讯控股销售易,中国 SaaS 将迎来商业新变局?
saas
SaaS行业爆炸性新闻:腾讯集团副总裁李强出任销售易董事长,销售易也对外公开了腾讯控股销售易的信息。根据双方官方披露,腾讯这一次的加码从资金全方位的延展到了技术、营销以及行业协同等方面,这都意味着销售易在腾讯云业务里的权重大幅提升。我相信很多人都明白,这将给中国CRM行业带来颠覆性变革。首先,对于销售易来说,这次与腾讯的战略合作升级,一定会极大的增强自身实力与市场竞争力。中国SaaS目前面临的几个
PHP全文检索引擎WindSearch,新增“即用模式”
WindSearch是一个可以跟php项目完美融合的全文检索引擎,它由纯PHP开发,相比ES,WS无内存占用,无需维护,没有任何繁琐的安装配置,同时又拥有强大的索引跟搜索能力,总的来说,ES常用的功能它都有,但WS更轻量,更方便。WindSearch2.0版本新增“即用模式”,简单搜索场景下,导入、搜索等操作,更加简单直接,无需任何配置。即用模式导入、搜索操作的代码示例:导入数据//实例化对象$W
pgAdmin4在mac m1上面简单使用(Docker)
亚林瓜子
macos docker 容器 pg pgAdmin4 postgredql GUI
问题想要在本地简单了解一下pgAdmin4一些简单功能。故需要在本机先安装看一看。安装步骤拉取docker镜像dockerpulldpage/pgadmin4直接简单运行pgAdmin4dockerrun--namepgAdmin4-p5050:80\-e"
[email protected] "\-e"PGADMIN_DEFAULT_PASSWORD=Supe
拯救者机型背光键盘无法开启
famous_pengfei
计算机外设 笔记本电脑
如果你是联想拯救者系列笔记本电脑的用户,想必对背光键盘这一酷炫功能十分喜爱。然而,当背光键盘突然无法开启时,这无疑会让人感到困惑和沮丧。别担心,联想官方知识库已经为你准备好了详细的解决方案。文章中提到,Windows10系统下,用户可以通过开始菜单进入LenovoSettings来开启背光键盘。这个方法简单易懂,即使是电脑小白也能轻松上手。此外,文章还提供了详细的图文说明,帮助用户更直观地理解操作
GenAI 平台,3 分钟即可构建基于 Claude、DeepSeek 的 AI Agent
DO_Community
人工智能
DigitalOcean云服务在前不久发布了GenAI平台——一个让任何团队都能在几分钟内构建和部署AI代理的平台。DigitalOcean的GenAI平台持续扩展,让人工智能驱动的开发变得更加易用、灵活且强大。近日,Digitalocean宣布将Anthropic的Claude模型和DeepSeekR1引入Digitalocean的生态系统,为你提供更多构建和部署AI应用的选择。通过Anthro
2025年三个月自学手册 网络安全(黑客技术)
网安kk
web安全 安全 网络 网络安全 人工智能
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。如何成为一名黑客很多朋友在学习安全方面都会半路转行,因为不知如何去学,在这里,我将这个整份答案分为黑客(网络安全)入门必备、黑客(网络安全)职业指南、黑客(网络安全)学习导航
在项目中调用本地Deepseek(接入本地Deepseek)
mr_cmx
AI ai 前端 DeepSeek AI
前言之前发表的文章已经讲了如何本地部署Deepseek模型,并且如何给Deepseek模型投喂数据、搭建本地知识库,但大部分人不知道怎么应用,让自己的项目接入AI模型。文末有彩蛋哦!!!要接入本地部署的deepseek,我就要利用到我们之前部署时安装的ollama服务,并调用其API本地API接口1、生成文本(GenerateText)url:POST/api/generate功能:向模型发送提示
DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命
云边有个稻草人
热门文章 chatgpt 搜索引擎 人工智能 DeepSeek
云边有个稻草人-CSDN博客在众多创新技术中,DeepSeek和ChatGPT无疑是最为引人注目的。它们通过强大的搜索和对话生成能力,能够改变我们与计算机交互的方式,帮助我们高效地获取信息,增强智能服务。本文将深入探讨这两项技术如何结合使用,为用户提供更精准、更流畅的对话和搜索体验。目录一、介绍1.1什么是DeepSeek?1.2什么是ChatGPT?1.3DeepSeek与ChatGPT的结合:
深入理解Spring Boot中的事件驱动架构
省赚客APP开发者@聚娃科技
spring boot 架构 java
深入理解SpringBoot中的事件驱动架构大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!1.引言事件驱动架构在现代软件开发中越来越受欢迎,它能够提高系统的松耦合性和可扩展性。SpringBoot作为一个流行的Java框架,提供了强大的事件驱动支持。本文将深入探讨SpringBoot中事件驱动架构的实现原理和最佳实践。2.SpringFramework中的事件模型在
dreamweaver html语言,Dreamweaver网页设计与制作(HTML+CSS+JavaScript)
weixin_39979245
dreamweaver html语言
Dreamweaver网页设计与制作(HTML+CSS+JavaScript)编辑锁定讨论上传视频本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!《Dreamweaver网页设计与制作(HTML+CSS+JavaScript)》是2014年清华大学出版社出版的图书。Dreamweaver网页设计与制作(HTML+CSS+JavaScript)图书详细信息编辑ISBN:978
JavaScript的魔法世界:巧妙之处与实战技巧
skyksksksksks
综合个人杂记 javascript 开发语言 html5 css 前端
一、从浏览器玩具到全栈利器的蜕变之路JavaScript诞生于1995年,原本只是网景公司为浏览器设计的"小脚本"。谁能想到这个曾被戏称为"玩具语言"的家伙,如今已蜕变成支撑现代Web开发的擎天柱?就像一只破茧成蝶的幼虫,JavaScript经历了ECMAScript标准的持续进化,在Node.js的加持下突破了浏览器的桎梏,实现了从客户端到服务端的华丽转身。V8引擎的涡轮增压让它跑得比猎豹还快,
前端开发入门指南:HTML、CSS和JavaScript基础知识
方向感超强的
javascript css html 前端
引言:大家好,我是一名简单的前端开发爱好者,对于网页设计和用户体验的追求让我深深着迷。在本篇文章中,我将带领大家探索前端开发的基础知识,涵盖HTML、CSS和JavaScript。如果你对这个领域感兴趣,或者想要了解如何开始学习前端开发,那么这篇文章将为你提供一个良好的起点。1.前端开发概述在我们深入了解前端开发的细节之前,让我们先了解一下前端开发的定义和作用。简而言之,前端开发涉及构建用户直接与
docker配置Redis主从复制原理及操作
纪佰伦
docker redis 主从 分布式
一、前言要配置Redis主从复制,我默认是了解过Redis的持久化功能的,也就是RDB和AOF,只需要简单了解过即可。持久化的一个作用就是可以定期将内存中的数据备份到硬盘,在系统发生故障的时候,也可以通过持久化文件回复数据,二、关于主从复制1、什么是主从复制主从复制是一种分布式系统数据同步技术,其中主服务器负责处理所有写操作并将变更同步到一个或多个从服务器。从服务器接收这些变更并复制主服务器的数据
知识图谱构建:LLM与知识工程的完美结合
AI智能涌现深度研究
AI大模型应用入门实战与进阶 DeepSeek R1 & 大数据AI人工智能 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
1.背景介绍1.1知识爆炸与信息孤岛随着互联网和信息技术的飞速发展,我们正处于一个知识爆炸的时代。海量的数据和信息充斥着我们的生活,但同时也带来了信息过载和信息孤岛的问题。传统的信息检索方式难以有效地组织和利用这些知识,难以满足人们对知识获取和应用的需求。1.2知识图谱的兴起知识图谱作为一种语义网络,能够将实体、概念及其之间的关系以结构化的方式进行表达和存储,从而有效地组织和管理知识。近年来,知识
SAT-3D饮食行为训练系统在营养教学中的应用心得体会
上海GR
经验分享
在营养学领域的探索之旅中,我有幸深入接触并实践了SAT-3D膳食诊断和饮食行为训练系统(以下简称SAT-3D系统,研制单位:上海共荣医学科技有限公司),这一经历不仅极大地拓宽了我的专业视野,也让我在营养实训教学上获得了前所未有的启示与感悟。SAT-3D系统,作为一个集科学性与实用性于一体的膳食评估与行为干预工具,其在营养实训教学中的应用,无疑为传统的教学模式注入了一股新鲜血液,让我深刻体会到科技赋
C++ 设计模式-外观模式
ox0080
# 北漂+滴滴出行 C++设计模式 VIP 激励 c++ 外观模式 开发语言
外观模式的定义外观模式是一种结构型设计模式,它通过提供一个简化的接口来隐藏系统的复杂性。外观模式的核心思想是:封装复杂子系统:将多个复杂的子系统或组件封装在一个统一的接口后面。提供简单接口:为客户端提供一个更简单、更易用的接口,而不需要客户端直接与复杂的子系统交互。外观模式就像一个“前台接待员”,客户端只需要与这个接待员打交道,而不需要了解后台复杂的运作机制。外观模式的核心思想简化接口外观模式通过
JAVA基础
灵静志远
位运算 加载 Date 字符串池 覆盖
一、类的初始化顺序
1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器
同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。
二、String
1 String a = "abc";
JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根
keepalived实现redis主从高可用
bylijinnan
redis
方案说明
两台机器(称为A和B),以统一的VIP对外提供服务
1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A)
2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务
3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始
java文件操作大全
0624chenhong
java
最近在博客园看到一篇比较全面的文件操作文章,转过来留着。
http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html
转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html
一.获得控制台用户输入的信息
&nbs
android学习任务
不懂事的小屁孩
工作
任务
完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem
zoom.js
换个号韩国红果果
oom
它的基于bootstrap 的
https://raw.github.com/twbs/bootstrap/master/js/transition.js transition.js模块引用顺序
<link rel="stylesheet" href="style/zoom.css">
<script src=&q
详解Oracle云操作系统Solaris 11.2
蓝儿唯美
Solaris
当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。
spring学习——springmvc(一)
a-john
springMVC
Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。
1,跟踪Spring MVC的请求
请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前
hdu4342 History repeat itself-------多校联合五
aijuans
数论
水题就不多说什么了。
#include<iostream>#include<cstdlib>#include<stdio.h>#define ll __int64using namespace std;int main(){ int t; ll n; scanf("%d",&t); while(t--)
EJB和javabean的区别
asia007
bean ejb
EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了
1.EJB用于服务端应用开发, 而JavaBeans
Struts的action和Result总结
百合不是茶
struts Action配置 Result配置
一:Action的配置详解:
下面是一个Struts中一个空的Struts.xml的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
&quo
如何带好自已的团队
bijian1013
项目管理 团队管理 团队
在网上看到博客"
怎么才能让团队成员好好干活"的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点:
1.诚信
对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提
Java代码混淆工具
sunjing
ProGuard
Open Source Obfuscators
ProGuard
http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m
【Redis三】基于Redis sentinel的自动failover主从复制
bit1129
redis
在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。
什么是Sentine
使用代理实现Hibernate Dao层自动事务
白糖_
DAO spring AOP 框架 Hibernate
都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。
public void save(Object obj){
Session session = this.getSession();
Transaction tran = session.beginTransaction();
try
maven3实战读书笔记
braveCS
maven3
Maven简介
是什么?
Is a software project management and comprehension tool.项目管理工具
是基于POM概念(工程对象模型)
[设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复]
[与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]
功能:
编程之美-子数组的最大乘积
bylijinnan
编程之美
public class MaxProduct {
/**
* 编程之美 子数组的最大乘积
* 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。
* 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。
* 但按题目的意思,是要求得这个子数组,而不
读书笔记-2
chengxuyuancsdn
读书笔记
1、反射
2、oracle年-月-日 时-分-秒
3、oracle创建有参、无参函数
4、oracle行转列
5、Struts2拦截器
6、Filter过滤器(web.xml)
1、反射
(1)检查类的结构
在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。
2、oracle年月日时分秒
s
[求学与房地产]慎重选择IT培训学校
comsci
it
关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题
培训学校的教学楼和宿舍的环境和稳定性问题
我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子...
&nb
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
daizj
oracle rman filesperset PARALLELISM
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转
PARALLELISM ---
我们还可以通过parallelism参数来指定同时"自动"创建多少个通道:
RMAN > configure device type disk parallelism 3 ;
表示启动三个通道,可以加快备份恢复的速度。
简单排序:冒泡排序
dieslrae
冒泡排序
public void bubbleSort(int[] array){
for(int i=1;i<array.length;i++){
for(int k=0;k<array.length-i;k++){
if(array[k] > array[k+1]){
初二上学期难记单词三
dcj3sjt126com
sciet
concert 音乐会
tonight 今晚
famous 有名的;著名的
song 歌曲
thousand 千
accident 事故;灾难
careless 粗心的,大意的
break 折断;断裂;破碎
heart 心(脏)
happen 偶尔发生,碰巧
tourist 旅游者;观光者
science (自然)科学
marry 结婚
subject 题目;
I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码
dcj3sjt126com
redis
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。
异常一:
make[2]: cc: Command not found
异常原因:没有安装g
并发容器
shuizhaosi888
并发容器
通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。
并发容器ConcurrentHashMap
替代同步基于散列的Map,通过Lock控制。
&nb
Spring Security(12)——Remember-Me功能
234390216
Spring Security Remember Me 记住我
Remember-Me功能
目录
1.1 概述
1.2 基于简单加密token的方法
1.3 基于持久化token的方法
1.4 Remember-Me相关接口和实现
位运算
焦志广
位运算
一、位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&am
nodejs 数据库连接 mongodb mysql
liguangsong
mongodb mysql node 数据库连接
1.mysql 连接
package.json中dependencies加入
"mysql":"~2.7.0"
执行 npm install
在config 下创建文件 database.js
java动态编译
olive6615
java HotSpot jvm 动态编译
在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。
HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视
Storm0.9.5的集群部署配置优化
roadrunners
优化 storm.yaml
nimbus结点配置(storm.yaml)信息:
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional inf
101个MySQL 的调节和优化的提示
tomcat_oracle
mysql
1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。 3. 使用电池供电的RAM(注:RAM即随机存储器)。 4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列
zoj 3829 Known Notation(贪心)
阿尔萨斯
ZOJ
题目链接:zoj 3829 Known Notation
题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。
解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1