Geoserver相关知识(一)

一、Geoserver

Geoserver是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

Geoserver是一个功能齐全,遵循OGC开放标准的开源WFS和WMS服务器。利用Geoserver可以把数据作为maps/images来发布(利用WMS来实现)也可以直接发布实际的数据(利用WFS来实现),同时也提供了修改,删除和新增的功能(利用WFS)。

GeoServer, 顾名思义,是一个Server. 它是开源的,允许用户查看和编辑地理数据。这是地理信息系统(GIS) 领域。GeoServer 是符合OGC 规范的一个全功能的WFS 和WMS server。

GeoServer能够发布的数据类型:
①地图或影象——WMS;
②实时数据——WFS;
③用户更新、删除和编辑的数据——WFS。

二、Geoserver安装

1、官网下载geoserver安装包,需要下载tomcat作为容器,tomcat中解压即可使用。
下载地址 ,注意:下载的Tomcat的位数要和Java环境位数一致,例如JDK安装的是64位的,那tomcat也应该选择下载部署64位的。
下载后,解压到一个Tomcat 安装目录中的webapps文件夹下,如D:\software\Tomcat\apache-tomcat-8.5.35\webapps
Geoserver相关知识(一)_第1张图片
只需解压,无需安装;可双击执行如下目录bin下的startup.bat文件。
Geoserver相关知识(一)_第2张图片
由于tomcat从7.0.41版本开始就支持跨域了,只需要进行下面的简单配置:
● 找到geoserver的web.xml文件,我的电脑对应的路径为D:\software\Tomcat\apache-tomcat-8.5.35\webapps\geoserver\WEB-INF\web.xml;
Geoserver相关知识(一)_第3张图片
● 打开该文件,将下面的配置添加至该文件:

<filter>
    <filter-name>CorsFilterfilter-name>
    <filter-class>org.apache.catalina.filters.CorsFilterfilter-class>
filter>
<filter-mapping>
    <filter-name>CorsFilterfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

注意:geoserver默认的管理员账号为:admin/geoserver
2、启动geoserver。
打开tomcat的bin目录,点击startup.bat文件

三、WMS

Web地图服务(Web map service)利用具有地理空间位置信息的数据制作地图,将地图定义为地理数据可视的表现。

这个规范定义了三个操作:
①GetCapabitities返回服务级元数据,它是对服务信息内容和要求参数的一种描述;
② GetMap返回一个地图影像,其地理空间参考和大小参数是明确定义了的;
③GetFeatureInfo(可选)返回显示在地图上的某些特殊要素的信息。

四、WFS

Web要素服务(WebFeatureService),基础接口是GetCapabilities。

支持对地理要素的插入,更新,删除,检索和发现服务。

该服务根据HTTP客户请求返回GML(Geography Markup Language、地理标识语言)数据。

WFS对应于常见桌面程序中的条件查询功能,WFS通过OGC Filter构造查询条件,支持基于空间几何关系的查询,基于属性域的查询,当然还包括基于空间关系和属性域的共同查询。

五、Geoserver+Openlayers3加载瓦片地图

Geoservser上使用瓦片地图进行加载,第一次加载后会在服务器端指定文件夹自动生成加载过的地图切片,以后每次加载时会从该文件夹直接读取,大大增加了地图加载的速度。

首先进行Geoserver配置:

1.geoserver运行前,在Geoserver安装目录下的web.xml文件中添加如下参数,设置瓦片存储的位置。不预先设定的话默认存储于系统的tmp目录(windows下为C:\Users<用户名>\AppData\Local\Temp,linux下为/tmp)。如下图所示,地图切片将存储于D:\gwc文件夹下:
Geoserver相关知识(一)_第4张图片

2.点击Geoserver主页左侧的Gridsets,然后点击Create a new gridset,填入新建的gridset的名称,坐标系,然后点击Compute from maximum extent of CRS,最下面的Add zoom level用于设定地图的缩放层级,按需要的层级数量加即可,最后点击保存;
Geoserver相关知识(一)_第5张图片
3.点击左侧工具栏的Caching Defaults,在最下面Add default gridset下拉菜单选择刚刚建立好的gridset,点击提交;

4.点击左侧工具栏的Tile Layers,可以看到发布的图层列表,在每个元组的右侧的Select One下拉菜单可以选择坐标系(不进行步骤3则看不到刚刚设定gridset时的那个坐标系),点击后就是按该坐标系生成的瓦片地图,可以发现Geoserver还是使用的Openlsyers2。打开在步骤1中设定的存储路径,一边放大缩小地图可以看到在动态的生成地图缓存文件,点开会发现不同放大级数的地图切片。
Geoserver相关知识(一)_第6张图片
Geoserver相关知识(一)_第7张图片
5.跟普通的加载WMS地图不同的地方就是需要设定TileGrid,TileGrid里面的origin表示瓦片地图开始切片的起始点坐标,resolutions 表示地图的放大层级,这些在上面配置Geoserver的步骤4中打开的瓦片地图页面中查看源代码都能找到。完成这些配置后就是建立一个html页面,把地图添加进去就行了!

<span style="font-family:Microsoft YaHei;">
	function init(){
	  var format = 'image/png';
      var bounds = [73.44695998458512,3.6193745040060596,135.07924998249888,53.557498986448266];
	  var gr = new ol.tilegrid.TileGrid({
	  	origin : [ -180.0,-90.0 ],
	  	resolutions : [ 0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4, 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5, 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6, 1.341104507446289E-6, 6.705522537231445E-7, 3.3527612686157227E-7 ]
  	});
	var layer1 = [new ol.layer.Tile({
		source : new ol.source.TileWMS({
			url : 'http://192.168.1.100:7777/geoserver/gwc/service/wms',
			params : {
				'FORMAT' : format,
				'VERSION' : '1.1.1',
				'SRS' : 'EPSG:4326',
				'tiled' : true,
				'LAYERS' : 'China:China',
				STYLES : ''
			},
			tileGrid : gr,
			serverType: 'geoserver'
		})
	})];
      var projection = new ol.proj.Projection({
          code: 'EPSG:4326',
          units: 'm',
          axisOrientation: 'neu'
      });
      var map = new ol.Map({
        controls: ol.control.defaults({
          attribution: false
        }),
        target: 'map',
        layers: layer1,
        view: new ol.View({
           projection: projection
        })
      });
      map.getView().fitExtent(bounds, map.getSize()); 
 }
 </span>

Geoserver相关知识(一)_第8张图片
(Geoserver上显示瓦片地图的源代码)
Geoserver相关知识(一)_第9张图片

六、GeoServer服务切片编号规则

使用GeoServer发布切片服务之后,在缓存目录查看到文件夹命名以及文件名:
Geoserver相关知识(一)_第10张图片
“EPSG_900913_05\3_2\24_17.png”,其中EPSG_900913表示坐标系编码,05表示地图缩放级别,也就是z值;24表示x值;17表示y值;此外,GeoServer切片编号采用标准的tms编号规则,以地图左下角为(0,0)起点。

七、GeoServer发布切片服务

GeoWebCache本质就是一种切图工具,可以单独下载进行配置使用,但是在geoserver1.7版本之后,geoserver本身集成了GeoWebCache这个模块,这次介绍的GeoServer版本为2.18.0.

1、 配置切片缓存路径

在GeoServer安装目录中找到web.xml文件,
Geoserver相关知识(一)_第11张图片
打开web.xml文件,添加如下内容,配置切片缓存存放的目录:

<context-param>
	<param-name>GEOWEBCACHE_CACHE_DIRparam-name>
	<param-value>D:\software\Tomcat\apache-tomcat-8.5.35\webapps\geoserver\data\gwcparam-value>
context-param>

Geoserver相关知识(一)_第12张图片

2、 新建工作区

GeoServer启动完成后,访问GeoServer主页,建立工作区;(如果已有工作区,则跳过)
Geoserver相关知识(一)_第13张图片

3、 新建数据存储

以shp文件为例
Geoserver相关知识(一)_第14张图片
Geoserver相关知识(一)_第15张图片
Geoserver相关知识(一)_第16张图片

4、 切片方案

默认的GridSet中只包含了4326和900913坐标系,如果是其他坐标系,则需要新建GridSet。
点击Create a new gridset可以创建新的切图方案,也可以点击现成的切图方案右侧的Create a copy复制一个方案,并在此基础上进行修改。
Geoserver相关知识(一)_第17张图片
Geoserver相关知识(一)_第18张图片
点击保存之后,在gwc目录下可以看见新增的一个后缀为.bak的配置文件,就是切图方案的配置文件
Geoserver相关知识(一)_第19张图片

5、 切图

点击Tile Layers选择需要切图的服务,点击Seed/Truncate可以进入切图设置页面,点击Empty可以清除之前存在的切图缓存。
Geoserver相关知识(一)_第20张图片
点击Seed/Truncate,进入如下界面:
Geoserver相关知识(一)_第21张图片
Number of tasks to use:该选项表示可以用多少个任务来切图,类似于多线程的模式,如果电脑性能允许的情况下,可以适当增加这个数量,这样切片的速度会更快些;如果电脑性能不高的话,数值太大的话,反而可能会影响性能。
Type of operation:操作类型,包括:Reseed-regenerate all tiles(重新进行完整的切片操作)、Seed-generate missing tiles(只对缺失的部分进行切片)、Truncate-remove tiles(清空切片数据)。
Grid Set:选择切片的Gridset,和图层配置时候设置的Gridset有关。
Format:切片的数据格式。比如image/png
Zoom start:切片的开始层级。
Zoom stop:切片的结束层级,结合Zoom start的选项,就可以将这2层级数据之间的所有层级数据进行切片。
Modifiable Parameters:修饰参数,给切片选择样式等内容。
Bounding box:切片的边界范围,是个可选项。

点击submit按钮之后计算机便开始进行切图,可以通过Refresh list按钮查看当前切图进度和相关状况
Geoserver相关知识(一)_第22张图片

八、GeoServer图层发布服务

每添加完创建数据存储(见七(3)),会出现如下图所示界面,点击发布,会弹出图层发布界面。或者直接左侧图层 新增图层。
Geoserver相关知识(一)_第23张图片
需要注意的地方有SRS不能为空,默认会从文件中读出当前shp的采用的坐标系,如果读不出需要手动填写一下,填写最小的范围矩阵,可以充点击下方的“compute from native bounds”自动计算。
Geoserver相关知识(一)_第24张图片
另外提示:如果需要在发布layer的同时指定这个layer的默认样式,那么选择tab页到“发布”中重置默认的“default style”
Geoserver相关知识(一)_第25张图片
发布完成后,预览。
Geoserver相关知识(一)_第26张图片
注意事项
文件按照点线面分类,对应的一个shp文件一个sld符号文件。
新建style样式的时候
Geoserver相关知识(一)_第27张图片
Geoserver相关知识(一)_第28张图片
上图中的name不必着急填,先上传sld文件,则name会自动填充,如果name和sld中的标签name不一致的话,会导致符号报错。无法正常显示。

九、sld文件介绍

在 GeoServer 中,样式是使用SLD(Styled Layer Descriptor)的标记语言完成的。SLD 是一种基于 XML 的标记语言。
Geoserver相关知识(一)_第29张图片

1、 SLD概念

SLD 样式文档为GeoServer图层指定单个命名图层和用户样式。样式中可以是一种或多种要素类型样式,每个要素类型样式都包含一个或多个规则,这些规则控制如何根据要素属性和缩放级别应用样式。规则通过使用过滤器来选择适用的特征, 过滤器是包含谓词、表达式 和过滤器函数的逻辑条件。

2、 样式类型

GeoServer可以提供的矢量数据包括三类形状: 点,线和多边形。

线是最简单的,因为它们只有样式的边缘(指定颜色和粗细)。具有二维形状的多边形具有边和内部(也称为“填充”,可以指定颜色),两者的样式可以不同。点具有可以设置样式的边和填充。

可以通过对颜色,不透明度,对比度和其他参数的多种控制来设置样式。

也可以使用更高级的样式。可以使用众所周知的形状(例如圆形,正方形,星形,甚至自定义图形或文本)来指定点。可以使用破折号样式和哈希样式设置线条。可以使用自定义平铺图形填充多边形。样式可以基于数据中的属性,以便某些特征的样式不同。功能上的文本标签也是可以的。样式还可以通过缩放级别来确定,以便以适合其外观大小的方式显示要素。

3、 SLD示例(以地市级点为例)

SLD 的根元素是,包含一个图层和样式元素,这些元素描述了如何组合和设置地图样式。

在SLD文档中,一些标记具有前缀,例如ogc。这是因为它们是在XML名称空间中定义的。

StyledLayerDescriptor标记指定两个XML名称空间,一个称为xmlns,另一个称为xmlns:ogc。第一个名称空间是文档的默认名称空间,因此属于它的标记不需要前缀。属于第二个的标记需要前缀ogc。

SLD文档包含一系列层定义,指示要设置样式的层。每个层都是NamedLayer或UserLayer来定义。
Geoserver相关知识(一)_第30张图片
或者可包含以下元素:
——要设置样式的图层的名称。(必填)
——描述。
——要应用于图层的目录样式的名称。(中为,提供图层数据的一个或多个要素集合,使用GML指定。)
——要应用于图层的样式的定义。

样式元素指定要应用于图层的样式。包含规则和过滤器,以确定要使用特定符号系统设置样式的要素集。规则还可以指定特征样式可见的比例范围。

UserStyle——定义图层的样式,包含以下元素:
——样式的名称,用于在外部引用它。
</code> ——样式的标题。<br> ③<code><Abstract></code>——样式的描述。<br> ④<code><IsDefault></code>——该样式是否为命名图层的默认样式。在SLD库模式下使用,值为1或0(默认值)。<br> ⑤<code><FeatureTypeStyle></code>——定义用于呈现单个要素类型的符号。包含一个规则列表,用于确定要应用于图层每个特征的符号。包含有<code><Name> 、<Title> 、<Abstract> 、<FeatureTypeName>、<Rule></code>元素。<br> 通常一个图层只包含一个要素类型,因此通常省略<code><FeatureTypeName></code>。可以在样式中指定任意数量的<code><FeatureTypeStyle></code>元素。</p> <p>Rules——规则将过滤器与任意数量的符号组合在一起。过滤条件计算为true的要素将使用规则中的符号进行渲染。包含以下元素:<br> ①<code><Name></code>——指定规则的名称。<br> ②<code><Title></code> ——指定规则的标题。<br> ③<code><Abstract></code>——指定描述规则的摘要。<br> ④<code><Filter></code>——指定应用规则时的过滤器。过滤条件是通过使用比较运算符或空间运算符,或者通过逻辑运算符组合的两个或多个运算符来指定的。运算符通常用于将被过滤的特征的属性与其他属性或文字数据进行比较。<br> <code><PropertyIsNotEqualTo></code>——属性值不等于<br> <code><PropertyIsEqualTo></code>——属性值为<br> ⑤<code><MinScaleDenominator></code>——指定适用此规则的比例范围的最小比例分母(含)。如果存在,则该规则适用于给定的比例和所有较小的比例。<br> ⑥<code><MaxScaleDenominator></code>——指定适用此规则的比例范围的最大比例分母(不包括)。如果存在,则规则适用于大于给定比例的比例。<br> ⑦<code><PointSymbolizer></code>——将样式设置为点符号<br> <code><LineSymbolizer></code>——将样式设置为线符号<br> <code><PolygonSymbolizer></code>——将样式设置为面符号<br> <code><TextSymbolizer></code>——指定文本标签的样式<br> <code><RasterSymbolizer></code>——指定栅格数据的样式<br> 如下为一个完整的sld文件</p> <pre><code class="prism language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>StyledLayerDescriptor</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.opengis.net/sld<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>sld</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.opengis.net/sld<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>gml</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.opengis.net/gml<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>ogc</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.opengis.net/ogc<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.0.0<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>UserLayer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>LayerFeatureConstraints</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>FeatureTypeConstraint</span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>LayerFeatureConstraints</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>UserStyle</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Name</span><span class="token punctuation">></span></span>dsj<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Name</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>FeatureTypeStyle</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Name</span><span class="token punctuation">></span></span>group0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Name</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>FeatureTypeName</span><span class="token punctuation">></span></span>Feature<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>FeatureTypeName</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>SemanticTypeIdentifier</span><span class="token punctuation">></span></span>generic:geometry<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>SemanticTypeIdentifier</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>SemanticTypeIdentifier</span><span class="token punctuation">></span></span>simple<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>SemanticTypeIdentifier</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Rule</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Name</span><span class="token punctuation">></span></span>default rule<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Name</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>MaxScaleDenominator</span><span class="token punctuation">></span></span>260.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>MaxScaleDenominator</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>PointSymbolizer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Graphic</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Mark</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>WellKnownName</span><span class="token punctuation">></span></span>circle<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>WellKnownName</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Fill</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fill<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>#FFFFFF<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Fill</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Stroke</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stroke<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>#FF8080<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stroke-opacity<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>0.6<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Stroke</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Mark</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Size</span><span class="token punctuation">></span></span>3<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Size</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Graphic</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>PointSymbolizer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>TextSymbolizer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">ogc:</span>PropertyName</span><span class="token punctuation">></span></span>PINYIN<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">ogc:</span>PropertyName</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Font</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>font-family<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Arial<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>font-size<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>12.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>font-style<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>normal<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>font-weight<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>normal<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Font</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>LabelPlacement</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>PointPlacement</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>AnchorPoint</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>AnchorPointX</span><span class="token punctuation">></span></span>0.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>AnchorPointX</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>AnchorPointY</span><span class="token punctuation">></span></span>0.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>AnchorPointY</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>AnchorPoint</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Displacement</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>DisplacementX</span><span class="token punctuation">></span></span>0.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>DisplacementX</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>DisplacementY</span><span class="token punctuation">></span></span>0.0<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>DisplacementY</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Displacement</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>PointPlacement</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>LabelPlacement</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Halo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Radius</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Radius</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Fill</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>CssParameter</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fill<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>#FFFFFF<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>CssParameter</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Fill</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Halo</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">sld:</span>Fill</span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>TextSymbolizer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>Rule</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>FeatureTypeStyle</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>UserStyle</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>UserLayer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">sld:</span>StyledLayerDescriptor</span><span class="token punctuation">></span></span> </code></pre> <p><code><WellKnownName></code>指定符号的形状,<code><CssParameter name="fill"></code>指定填充颜​​色,<code><Size></code>设置图形的大小。<code><Stroke></Stroke></code>用于设置边框。设置边框颜色设置为黑色,设置宽度。<br> geoserver官方链接<br> <mark>注:<br> ①有中文需要将编码方式(encodeing)改为GB2312</mark></p> <h3>十、sld符号制作</h3> <h4>1、QGIS 3.16.15</h4> <h5>(1) QGIS下载地址</h5> <h5>(2) QGIS汉化</h5> <p>点击settings,紧接着点击options,勾选override system locale,选择简体中文确定,重启软件即可。<br> <a href="http://img.e-com-net.com/image/info8/5c7912b3995e4f87a1c77a25ec6dea80.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5c7912b3995e4f87a1c77a25ec6dea80.jpg" alt="Geoserver相关知识(一)_第31张图片" width="650" height="365" style="border:1px solid black;"></a></p> <h5>(3)QGIS界面介绍</h5> <p><a href="http://img.e-com-net.com/image/info8/02ad7961489e4b81911d3084af1c22ae.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/02ad7961489e4b81911d3084af1c22ae.jpg" alt="Geoserver相关知识(一)_第32张图片" width="650" height="364" style="border:1px solid black;"></a></p> <h5>(4) 铁路线符号制作</h5> <h5>(5)图层标注设置</h5> <p><a href="http://img.e-com-net.com/image/info8/9f9e739d33fd48679df6d8b6ed5270c4.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9f9e739d33fd48679df6d8b6ed5270c4.jpg" alt="Geoserver相关知识(一)_第33张图片" width="650" height="151" style="border:1px solid black;"></a></p> <h4>2、udig</h4> <h5>(1)uDig在官网上下载安装包直接解压即可使用</h5> <p><a href="http://img.e-com-net.com/image/info8/6dc7d909d1144faa9caf4aae94447eb7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6dc7d909d1144faa9caf4aae94447eb7.jpg" alt="Geoserver相关知识(一)_第34张图片" width="650" height="427" style="border:1px solid black;"></a></p> <h5>(2)打开uDig,进入操作界面。下图是面板功能介绍</h5> <p><a href="http://img.e-com-net.com/image/info8/3a037e8f0b844afd890653cc79235425.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/3a037e8f0b844afd890653cc79235425.jpg" alt="Geoserver相关知识(一)_第35张图片" width="650" height="354" style="border:1px solid black;"></a></p> <h5>(3)符号编辑</h5> <p>选择图层,进行符号编辑,本文档旨在介绍各个功能的用法及作用。选择对应需要编辑style的图层,右键点击显示菜单,选择change style<br> <a href="http://img.e-com-net.com/image/info8/c33001bc539d4b369c8f8e12ca6e326d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c33001bc539d4b369c8f8e12ca6e326d.jpg" alt="Geoserver相关知识(一)_第36张图片" width="472" height="390" style="border:1px solid black;"></a></p> <h5>(4)change style菜单</h5> <p><a href="http://img.e-com-net.com/image/info8/09bfbee7e83e471bb0bd56cf396dd8b5.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/09bfbee7e83e471bb0bd56cf396dd8b5.jpg" alt="Geoserver相关知识(一)_第37张图片" width="650" height="452" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/c9beb9e7c20941cbb2c2d7cc3efffa55.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/c9beb9e7c20941cbb2c2d7cc3efffa55.png" alt="Geoserver相关知识(一)_第38张图片" width="446" height="473" style="border:1px solid black;"></a><br> (其他的下拉选择框根据实际符号样式需要进行调节,选择即可在左侧看到直观效果);<br> <a href="http://img.e-com-net.com/image/info8/b80bdfd9ab0d4390b9302b86f2c7f8b0.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/b80bdfd9ab0d4390b9302b86f2c7f8b0.png" alt="Geoserver相关知识(一)_第39张图片" width="420" height="358" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/28f65fb9e35f4ee38d6a33306d41edc7.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/28f65fb9e35f4ee38d6a33306d41edc7.png" alt="Geoserver相关知识(一)_第40张图片" width="444" height="395" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/abd1ed5fa442455aa5c29ae475f0ff9c.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/abd1ed5fa442455aa5c29ae475f0ff9c.png" alt="Geoserver相关知识(一)_第41张图片" width="437" height="414" style="border:1px solid black;"></a><br> 比如根据国标码过滤则书写格式为:<br> gbcode=’31010’ 只有当数据的gbcodo码是31010的时候样式才会显示;<br> gbcode IN (‘31010’,’31020’) gbcode码为这两个值的时候都显示该符号样式<br> name like ‘%中%’ 模糊匹配,名称<br> <a href="http://img.e-com-net.com/image/info8/c7411fc349a24c2890537ef2745fa3ce.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/c7411fc349a24c2890537ef2745fa3ce.png" alt="Geoserver相关知识(一)_第42张图片" width="850" height="625" style="border:1px solid black;"></a></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1712292612305661952"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(GIS,tomcat,java,缓存,经验分享)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1833744295438413824.htm" title="How can I load the openai api configuration through js in html?" target="_blank">How can I load the openai api configuration through js in html?</a> <span class="text-muted">营赢盈英</span> <a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/openai/1.htm">openai</a> <div>题意:怎样在HTML中通过JavaScript加载OpenAIAPI配置问题背景:Iamtryingtosendarequestthroughjsinmyhtmlsothatopenaianalyzesitandsendsaresponse,butifinthejsIputthefollowing:我正在尝试通过HTML中的JavaScript发送一个请求,以便让OpenAI分析它并发送响应,但如</div> </li> <li><a href="/article/1833738119590014976.htm" title="jmeter远程启动配置" target="_blank">jmeter远程启动配置</a> <span class="text-muted">雪霁_</span> <a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">性能测试</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95/1.htm">压力测试</a><a class="tag" taget="_blank" href="/search/jmeter/1.htm">jmeter</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>前提条件保持windows端、linux端jdk版本一致配置linux压力机(配置agent)修改文件jmeter.properties,打开注释server_port开启端口(默认1099);打开注释,修改server.rmi.ssl.disable=false为true运行命令,./jmeter-server-Djava.rmi.server.hostname=10.0.0.48(ip为lin</div> </li> <li><a href="/article/1833736984678461440.htm" title="npm设置镜像及恢复默认设置" target="_blank">npm设置镜像及恢复默认设置</a> <span class="text-muted">GaoJamie</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>npm淘宝镜像npmconfigsetregistryhttps://registry.npm.taobao.orgnpm华为镜像npmconfigsetregistryhttps://mirrors.huaweicloud.com/repository/npm/全局安装cnpm并设置淘宝镜像npminstall-gcnpm--registry=https://registry.npm.taoba</div> </li> <li><a href="/article/1833736605769232384.htm" title="eureka核心操作解析:集群间数据同步、自我保护、三级缓存" target="_blank">eureka核心操作解析:集群间数据同步、自我保护、三级缓存</a> <span class="text-muted">dejavu111</span> <a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1.什么是注册中心?Eureka是springcloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)P(分区容错性)。一个Eureka中分为eurekaserver和eurekaclient。其中eurekaserver是作为服务的注册与发现中心。eurekaclient既可以作为服务的生产者,又可以作为服务的消费者。具体结构如下图:Eureka是一个基于REST(表述性状态</div> </li> <li><a href="/article/1833735343401168896.htm" title="mac java 8卸载_[macOS]macOS上卸载Java9 重装Java8" target="_blank">mac java 8卸载_[macOS]macOS上卸载Java9 重装Java8</a> <span class="text-muted">V6火箭</span> <a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/8%E5%8D%B8%E8%BD%BD/1.htm">8卸载</a> <div>[TOC]0x00场景装了Java9,但是发现不少应用不支持,没办法,卸载。0x01探索查看java版本java--versionorjava-version查看Java路径whichjava显示结果:/usr/bin/java。进入目录/usr/bin/,定位到原始位置/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands。</div> </li> <li><a href="/article/1833733075486470144.htm" title="java计算机毕业设计高校学生资助管理信息系统源码+mysql数据库+系统+lw文档+部署" target="_blank">java计算机毕业设计高校学生资助管理信息系统源码+mysql数据库+系统+lw文档+部署</a> <span class="text-muted">鸿源网络</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>java计算机毕业设计高校学生资助管理信息系统源码+mysql数据库+系统+lw文档+部署java计算机毕业设计高校学生资助管理信息系统源码+mysql数据库+系统+lw文档+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQ</div> </li> <li><a href="/article/1833731059431337984.htm" title="Pixel2刷入原生Google系统并获取ROOT权限" target="_blank">Pixel2刷入原生Google系统并获取ROOT权限</a> <span class="text-muted">Devil丶LY</span> <a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E7%AB%AF/1.htm">移动端</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>一、设备信息机型:pixel2二、预刷系统系统:google原生系统(pixel对应版本为walleye)Android版本:11Magisk版本:23.0(root用)三、刷机工具fastbootadb四、下载网站Google原生系统镜像下载地址TWRP下载地址Magisk下载地址五、刷机文件walleye-rp1a.201005.004.a1-factory-0c23f6cf.zip(goog</div> </li> <li><a href="/article/1833730429727895552.htm" title="分享JavaScript中直接调用CSS中的类名" target="_blank">分享JavaScript中直接调用CSS中的类名</a> <span class="text-muted">奔跑的呱呱牛</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>分享JavaScript中直接调用CSS中的类名在现代的JavaScript框架(如React、Vue)中,使用CSS模块(CSSModules)是一种非常流行的方式。.module.css文件扩展名代表的是CSS模块,它与普通的CSS文件不同,能够解决样式全局污染的问题,并且实现更好的样式隔离。为什么要使用.module.css作用域隔离:传统的CSS文件中的类名是全局的,这意味着如果多个组件或</div> </li> <li><a href="/article/1833729617874219008.htm" title="从头开始学习->JVM(一):java内存模型(JMM)不是java虚拟机内存模型(JVM)哦!" target="_blank">从头开始学习->JVM(一):java内存模型(JMM)不是java虚拟机内存模型(JVM)哦!</a> <span class="text-muted">吴里斯蒂亚诺_翀纳尔多</span> <div>前言在进入jvm的世界之前,我要先给大家整理一个概念上的细节,java内存模型和jvm内存模型,是两回事哦。在网上很多朋友的博客上,都会无意识的将java内存模型和jvm内存模型混为一谈,这让一部分不明白真相的看客都会以为是这样,但是实际上java内存模型和jvm内存模型,在概念上来讲是两回事,当然,不能否认的是这两者有着极大的关联性,甚至某种意义上来讲,JVM是JMM的实现方式,JMM是为JVM</div> </li> <li><a href="/article/1833728413177835520.htm" title="mac上安装和卸载java的jdk" target="_blank">mac上安装和卸载java的jdk</a> <span class="text-muted">默然相爱鱼鱼鱼</span> <a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a> <div>mac上安装和卸载java的jdkbrew安装brewcaskinstalljava8#安装java81配置Java环境变量1、定位JAVA_HOME位置/usr/libexec/java_home12、编辑profile文件vim~/.bash_profile1格式参考JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Con</div> </li> <li><a href="/article/1833727530943737856.htm" title="LinkedList模拟出栈入栈" target="_blank">LinkedList模拟出栈入栈</a> <span class="text-muted">虾米大王</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>packagecom.shrimpking.t11;importjava.util.LinkedList;/***CreatedbyIntelliJIDEA.**@Author:Shrimpking*@create2024/9/1011:49*/publicclassMyStack{privateLinkedListlist=newLinkedListms=newMyStack<>();ms.pu</div> </li> <li><a href="/article/1833725811115520000.htm" title="Java 正则表达式" target="_blank">Java 正则表达式</a> <span class="text-muted">南风_001</span> <div>正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如HelloWorld正则表达式匹配"HelloWorld"字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a"或"1"。下表列出了一些正则表达式的实例及描述:正则表达式描述thisistext匹配</div> </li> <li><a href="/article/1833724754700365824.htm" title="庖丁解java(一篇文章学java)" target="_blank">庖丁解java(一篇文章学java)</a> <span class="text-muted">庖丁解java</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>(大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发)一篇文章学java,这是我滴一个执念...当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢?请看下文.关于决定开始写博文的介绍(一切故事的起点源于这一次反省)中小技术公司的软扩展(微服务扩展是否有必要?)-CSDN博客SpringCloud(一个</div> </li> <li><a href="/article/1833722609250955264.htm" title="eureka的多级缓存" target="_blank">eureka的多级缓存</a> <span class="text-muted">chuixue24</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a> <div>1、概念eureka是采用的C-S模式的服务注册中心。分为Server和Client,Server提供服务的注册和发现,Client可以做为服务的提供者,也可以作为服务的消费者。采用的是AP的模式,更加注重数据的高可用2、服务端和客户端之间的服务注册信息获取服务端启动之后,客户端每隔30s会主动将自己的信息注册到服务端同时客户端也会每隔30s主动获取服务端(注册中心)的注册表,将获取到的注册表存放</div> </li> <li><a href="/article/1833722103464030208.htm" title="基于JAVA高校毕业就业管理系统计算机毕业设计源码+数据库+lw文档+系统+部署" target="_blank">基于JAVA高校毕业就业管理系统计算机毕业设计源码+数据库+lw文档+系统+部署</a> <span class="text-muted">源新网络</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>基于JAVA高校毕业就业管理系统计算机毕业设计源码+数据库+lw文档+系统+部署基于JAVA高校毕业就业管理系统计算机毕业设计源码+数据库+lw文档+系统+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7/8.0源码</div> </li> <li><a href="/article/1833716429409579008.htm" title="如何用Kotlin实现MVP架构的Android快速开发框架?" target="_blank">如何用Kotlin实现MVP架构的Android快速开发框架?</a> <span class="text-muted">2401_84132496</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>下拉刷新和上拉加载更多空页面在断网情况下加载缓存网络请求错误并重新加载基于Kotlin的使用说明(Java的使用具体参考java版本的demo)导入依赖在根目录中的build.gradle文件中加入maven{url“https://jitpack.io”}在应用下的build.gradle文件中加入在自定义的Application类中的onCreate方法中初始化CommonLibrary//初</div> </li> <li><a href="/article/1833704712512303104.htm" title="Java 获取中文拼音和首字母" target="_blank">Java 获取中文拼音和首字母</a> <span class="text-muted">颇有几分姿色</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>需求:获取中文首字母当做用户登录名。获取用户姓名拼音做其他逻辑。不需要定制化使用hutool封装的PinyinUtil即可,我这里需要自己定制,所以写了个工具类。实现基于搜狐的Pinyin4j库。依赖:cn.hutoolhutool-all5.4.2com.belerwebpinyin4j2.5.1PinyinUtils代码示例PinyinUtils提供了以下主要方法:toHanYuPinyinS</div> </li> <li><a href="/article/1833704599970738176.htm" title="面试频繁被问Java中的各种锁,今天就给大伙来梳理梳理外加视频教学" target="_blank">面试频繁被问Java中的各种锁,今天就给大伙来梳理梳理外加视频教学</a> <span class="text-muted">java涛仔</span> <div>大伙在面试的时候应该会经常碰到线程并发方面的问题,而且也会问到你各种分布式锁的概念,本文就给大家整理了下各种锁的分类,希望对你有所帮助。视频获取方式:私信【锁】即可领取锁的分类我们先总体的来看看有哪些具体的分类一、乐观锁/悲观锁  注意,乐观锁与悲观锁并不是具体的两种锁的实现,而一种设计思想。乐观锁  顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断</div> </li> <li><a href="/article/1833697143169314816.htm" title="信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)" target="_blank">信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)</a> <span class="text-muted">北欧人写代码</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>在SpringBoot中集成东方通中间件(如TongWeb作为Servlet容器)通常涉及几个步骤,但需要注意的是,TongWeb本身是一个独立的JavaEE应用服务器,而不是像Tomcat那样可以直接嵌入到SpringBoot应用中的中间件。因此,集成通常意味着将SpringBoot应用打包为WAR文件并部署到TongWeb服务器上。以下是在SpringBoot中集成东方通中间件(以TongWe</div> </li> <li><a href="/article/1833697016752992256.htm" title="Java开发中的常用字段校验注解" target="_blank">Java开发中的常用字段校验注解</a> <span class="text-muted">呢喃coding</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在Java开发中,数据校验是确保应用程序的数据完整性和一致性的重要步骤。Java提供了一系列注解来简化数据校验的过程,以下是一些常用的字段校验注解及其示例代码:@NotNull@NotNull用于确保字段不为null,适用于任何类型的字段,包括基本数据类型和对象引用。importjavax.validation.constraints.NotNull;publicclassExample{@Not</div> </li> <li><a href="/article/1833696890462498816.htm" title="【Linux】Epoll触发模式" target="_blank">【Linux】Epoll触发模式</a> <span class="text-muted">哥不想学算法</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>讲讲epoll的边沿触发和水平触发水平触发:如果epoll_wait缓冲区有数据则直接返回。边沿触发:如果一次没有读完epoll_wait缓冲区中的数据,则只有当另外有数据再写入时,才返回。使用边沿触发和非阻塞IO来达到水平触发的效果,减少了epoll_wait的调用次数,提高了效率。边沿触发可以只读取缓存区中前面的部分信息,进而分析后面的信息是否有用,如果无用则直接丢弃。</div> </li> <li><a href="/article/1833696763194732544.htm" title="斐波纳契数列(f(n)=f(n-1)+f(n-2))问题" target="_blank">斐波纳契数列(f(n)=f(n-1)+f(n-2))问题</a> <span class="text-muted">剑海风云</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%88%97/1.htm">数列</a> <div>packageorg.nxt.algorithm.series;importjava.math.BigInteger;/***fibonacciseries*@authornanxiaotao**/publicclassFibonacciSeries{privatestaticBigInteger[][]matrix(BigInteger[][]arrLeft,BigInteger[][]arrR</div> </li> <li><a href="/article/1833689832052846592.htm" title="Selenium面试题(二)" target="_blank">Selenium面试题(二)</a> <span class="text-muted">知识的宝藏</span> <a class="tag" taget="_blank" href="/search/Selenium%EF%BC%88Java%EF%BC%89/1.htm">Selenium(Java)</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a> <div>如何在不使用sendKeys()的情况下输入文本可以通过组合使用JavaScript和WebDriver扩展类来实现。以下是一个示例代码:publicstaticvoidsetAttribute(WebElementelement,StringattributeName,Stringvalue){WrapsDriverwrappedElement=(WrapsDriver)element;Java</div> </li> <li><a href="/article/1833688442979053568.htm" title="SpringBoot学习(16)上传文件" target="_blank">SpringBoot学习(16)上传文件</a> <span class="text-muted">星河漫漫l</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%BC%80%E5%8F%91/1.htm">运维开发</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>1、pom包配置我们使用SpringBoot版本2.1.0、jdk1.8、tomcat8.0。org.springframework.bootspring-boot-starter-parent2.1.0.RELEASE1.8org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-star</div> </li> <li><a href="/article/1833679784052355072.htm" title="Java经典面试题118问,还不会你就out了!(附赠答案)" target="_blank">Java经典面试题118问,还不会你就out了!(附赠答案)</a> <span class="text-muted">阿博的java技术栈</span> <div>前言1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其特性。2.JDK和JRE的区别是什么?Jav</div> </li> <li><a href="/article/1833677479475245056.htm" title="Web安全之SQL注入:如何预防及解决" target="_blank">Web安全之SQL注入:如何预防及解决</a> <span class="text-muted">J老熊</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Web%E5%AE%89%E5%85%A8/1.htm">Web安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>SQL注入(SQLInjection)是最常见的Web应用漏洞之一,它允许攻击者通过注入恶意SQL代码来操作数据库,获取、修改或删除数据。作为Java开发者,理解并防止SQL注入攻击是至关重要的。在本篇文章中,我们将详细介绍SQL注入的原理,演示如何在电商交易系统中出现SQL注入漏洞,并提供正确的防范措施和解决方案。1.什么是SQL注入?SQL注入是一种通过在用户输入中嵌入恶意SQL代码的攻击方式</div> </li> <li><a href="/article/1833676975206658048.htm" title="java tcp 客户端绑定端口_Java利用TCP协议实现客户端与服务器通信(附通信源码)" target="_blank">java tcp 客户端绑定端口_Java利用TCP协议实现客户端与服务器通信(附通信源码)</a> <span class="text-muted">Mrs.Wong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/tcp/1.htm">tcp</a><a class="tag" taget="_blank" href="/search/%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BB%91%E5%AE%9A%E7%AB%AF%E5%8F%A3/1.htm">客户端绑定端口</a> <div>进行TCP协议网络程序的编写,关键在于ServerSocket套接字的熟练使用,TCP通信中所有的信息传输都是依托ServerSocket类的输入输出流进行的。上一篇博客和大家分享了在网络编程中要注意的基础知识,关于IP、TCP、UDP以及端口和套接字的一些概念,想了解的小伙伴可以看我的这篇文章“盘点那些进行网络编程必须要知道的基础知识”,那么今天大灰狼就来和大家分享一下如何使用TCP/IP进行网</div> </li> <li><a href="/article/1833675210088345600.htm" title="JDBC客户端连接Starrocks 2.5" target="_blank">JDBC客户端连接Starrocks 2.5</a> <span class="text-muted">MARSERERER</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>4.0.0org.exampleTestStarrocksJdbc1.0-SNAPSHOT88UTF-8mysqlmysql-connector-java5.1.47-->8.0.28maven-assembly-pluginjar-with-dependenciestruecom.example.Testmake-assemblypackagesinglepackagecom.example;i</div> </li> <li><a href="/article/1833674072685375488.htm" title="java Object类源代码详解 及nativ" target="_blank">java Object类源代码详解 及nativ</a> <span class="text-muted">轻口味</span> <a class="tag" taget="_blank" href="/search/JAVA%E8%AF%AD%E6%B3%95%E5%8F%8A%E5%9F%BA%E7%A1%80%E5%A2%9E%E5%BC%BA/1.htm">JAVA语法及基础增强</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/object/1.htm">object</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/equals/1.htm">equals</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80/1.htm">语言</a><a class="tag" taget="_blank" href="/search/dll/1.htm">dll</a> <div>Java代码packagejava.lang;publicclassObject{/*一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用。*/privatestaticnativevoidregisterNatives();/*对象初始化时自动调用此方法*/static{registerNatives();}/*返回此Object的运行时类。*/publicfinalnativ</div> </li> <li><a href="/article/1833674071309643776.htm" title="JDom解析xml文件的java.lang.NoClassDefFoundError问题" target="_blank">JDom解析xml文件的java.lang.NoClassDefFoundError问题</a> <span class="text-muted">轻口味</span> <a class="tag" taget="_blank" href="/search/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/1.htm">常见问题</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a><a class="tag" taget="_blank" href="/search/encoding/1.htm">encoding</a><a class="tag" taget="_blank" href="/search/class/1.htm">class</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a> <div>java代码为:importjava.io.IOException;importjava.util.List;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.JDOMException;importorg.jdom.input.SAXBuilder;importorg.jdom.xpath.XPath;publicclas</div> </li> <li><a href="/article/35.htm" title="JVM StackMapTable 属性的作用及理解" target="_blank">JVM StackMapTable 属性的作用及理解</a> <span class="text-muted">lijingyao8206</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82%E7%A0%81/1.htm">字节码</a><a class="tag" taget="_blank" href="/search/Class%E6%96%87%E4%BB%B6/1.htm">Class文件</a><a class="tag" taget="_blank" href="/search/StackMapTable/1.htm">StackMapTable</a> <div>        在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就是一个method需要且仅对应一个Stack Map Table。在Java 7版</div> </li> <li><a href="/article/162.htm" title="回调函数调用方法" target="_blank">回调函数调用方法</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近在看大神写的代码时,.发现其中使用了很多的回调 ,以前只是在学习的时候经常用到 ,现在写个笔记 记录一下   代码很简单:           MainDemo  :调用方法  得到方法的返回结果         </div> </li> <li><a href="/article/289.htm" title="[时间机器]制造时间机器需要一些材料" target="_blank">[时间机器]制造时间机器需要一些材料</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a> <div>      根据我的计算和推测,要完全实现制造一台时间机器,需要某些我们这个世界不存在的物质     和材料...       甚至可以这样说,这种材料和物质,我们在反应堆中也无法获得......      </div> </li> <li><a href="/article/416.htm" title="开口埋怨不如闭口做事" target="_blank">开口埋怨不如闭口做事</a> <span class="text-muted">邓集海</span> <a class="tag" taget="_blank" href="/search/%E9%82%93%E9%9B%86%E6%B5%B7+%E5%81%9A%E4%BA%BA+%E5%81%9A%E4%BA%8B+%E5%B7%A5%E4%BD%9C/1.htm">邓集海 做人 做事 工作</a> <div>“开口埋怨,不如闭口做事。”不是名人名言,而是一个普通父亲对儿子的训导。但是,因为这句训导,这位普通父亲却造就了一个名人儿子。这位普通父亲造就的名人儿子,叫张明正。      张明正出身贫寒,读书时成绩差,常挨老师批评。高中毕业,张明正连普通大学的分数线都没上。高考成绩出来后,平时开口怨这怨那的张明正,不从自身找原因,而是不停地埋怨自己家庭条件不好、埋怨父母没有给他创造良好的学习环境。      </div> </li> <li><a href="/article/543.htm" title="jQuery插件开发全解析,类级别与对象级别开发" target="_blank">jQuery插件开发全解析,类级别与对象级别开发</a> <span class="text-muted">IT独行者</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/%E6%8F%92%E4%BB%B6%E3%80%80/1.htm">插件 </a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a> <div>jQuery插件的开发包括两种: 一种是类级别的插件开发,即给 jQuery添加新的全局函数,相当于给 jQuery类本身添加方法。 jQuery的全局函数就是属于 jQuery命名空间的函数,另一种是对象级别的插件开发,即给 jQuery对象添加方法。下面就两种函数的开发做详细的说明。   1 、类级别的插件开发 类级别的插件开发最直接的理解就是给jQuer</div> </li> <li><a href="/article/670.htm" title="Rome解析Rss" target="_blank">Rome解析Rss</a> <span class="text-muted">413277409</span> <a class="tag" taget="_blank" href="/search/Rome%E8%A7%A3%E6%9E%90Rss/1.htm">Rome解析Rss</a> <div>import java.net.URL;  import java.util.List;    import org.junit.Test;    import com.sun.syndication.feed.synd.SyndCategory;  import com.sun.syndication.feed.synd.S</div> </li> <li><a href="/article/797.htm" title="RSA加密解密" target="_blank">RSA加密解密</a> <span class="text-muted">无量</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E5%AF%86/1.htm">解密</a><a class="tag" taget="_blank" href="/search/rsa/1.htm">rsa</a> <div>RSA加密解密代码 代码有待整理 package com.tongbanjie.commons.util; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerat</div> </li> <li><a href="/article/924.htm" title="linux 软件安装遇到的问题" target="_blank">linux 软件安装遇到的问题</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/1.htm">遇到的问题</a><a class="tag" taget="_blank" href="/search/ftp/1.htm">ftp</a> <div>1 ftp配置中遇到的问题    500 OOPS: cannot change directory   出现该问题的原因:是SELinux安装机制的问题.只要disable SELinux就可以了   修改方法:1 修改/etc/selinux/config 中SELINUX=disabled    2 source /etc</div> </li> <li><a href="/article/1051.htm" title="面试心得" target="_blank">面试心得</a> <span class="text-muted">alafqq</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>最近面试了好几家公司。记录下; 支付宝,面试我的人胖胖的,看着人挺好的;博彦外包的职位,面试失败; 阿里金融,面试官人也挺和善,只不过我让他吐血了。。。 由于印象比较深,记录下; 1,自我介绍 2,说下八种基本类型;(算上string。楼主才答了3种,哈哈,string其实不是基本类型,是引用类型) 3,什么是包装类,包装类的优点; 4,平时看过什么书?NND,什么书都没看过。。照样</div> </li> <li><a href="/article/1178.htm" title="java的多态性探讨" target="_blank">java的多态性探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>java的多态性是指main方法在调用属性的时候类可以对这一属性做出反应的情况 //package 1; class A{ public void test(){ System.out.println("A"); } } class D extends A{ public void test(){ S</div> </li> <li><a href="/article/1305.htm" title="网络编程基础篇之JavaScript-学习笔记" target="_blank">网络编程基础篇之JavaScript-学习笔记</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>1.documentWrite <html> <head> <script language="JavaScript"> document.write("这是电脑网络学校"); document.close(); </script> </h</div> </li> <li><a href="/article/1432.htm" title="探索JUnit4扩展:深入Rule" target="_blank">探索JUnit4扩展:深入Rule</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/Rule/1.htm">Rule</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>        本文将进一步探究Rule的应用,展示如何使用Rule来替代@BeforeClass,@AfterClass,@Before和@After的功能。         在上一篇中提到,可以使用Rule替代现有的大部分Runner扩展,而且也不提倡对Runner中的withBefores(),withAfte</div> </li> <li><a href="/article/1559.htm" title="[CSS]CSS浮动十五条规则" target="_blank">[CSS]CSS浮动十五条规则</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>这些浮动规则,主要是参考CSS权威指南关于浮动规则的总结,然后添加一些简单的例子以验证和理解这些规则。   1. 所有的页面元素都可以浮动 2. 一个元素浮动后,会成为块级元素,比如<span>,a, strong等都会变成块级元素 3.一个元素左浮动,会向最近的块级父元素的左上角移动,直到浮动元素的左外边界碰到块级父元素的左内边界;如果这个块级父元素已经有浮动元素停靠了</div> </li> <li><a href="/article/1686.htm" title="【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景" target="_blank">【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/partition/1.htm">partition</a> <div>0.Kafka服务器配置 3个broker 1个topic,6个partition,副本因子是2 2个consumer,每个consumer三个线程并发读取   1. Producer package kafka.examples.multibrokers.producers; import java.util.Properties; import java.util.</div> </li> <li><a href="/article/1813.htm" title="zabbix_agentd.conf配置文件详解" target="_blank">zabbix_agentd.conf配置文件详解</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/zabbix+%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/1.htm">zabbix 配置文件</a> <div>Aliaskey的别名,例如 Alias=ttlsa.userid:vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]+),,,,\1], 或者ttlsa的用户ID。你可以使用key:vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]+),,,,\1],也可以使用ttlsa.userid。备注: 别名不能重复,但是可以有多个</div> </li> <li><a href="/article/1940.htm" title="java--19.用矩阵求Fibonacci数列的第N项" target="_blank">java--19.用矩阵求Fibonacci数列的第N项</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/fibonacci/1.htm">fibonacci</a> <div>参考了网上的思路,写了个Java版的: public class Fibonacci { final static int[] A={1,1,1,0}; public static void main(String[] args) { int n=7; for(int i=0;i<=n;i++){ int f=fibonac</div> </li> <li><a href="/article/2067.htm" title="Netty源码学习-LengthFieldBasedFrameDecoder" target="_blank">Netty源码学习-LengthFieldBasedFrameDecoder</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div>先看看LengthFieldBasedFrameDecoder的官方API http://docs.jboss.org/netty/3.1/api/org/jboss/netty/handler/codec/frame/LengthFieldBasedFrameDecoder.html API举例说明了LengthFieldBasedFrameDecoder的解析机制,如下: 实</div> </li> <li><a href="/article/2194.htm" title="AES加密解密" target="_blank">AES加密解密</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86/1.htm">加密解密</a> <div>AES加解密算法,使用Base64做转码以及辅助加密: package com.wintv.common; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decod</div> </li> <li><a href="/article/2321.htm" title="文件编码格式转换" target="_blank">文件编码格式转换</a> <span class="text-muted">ctrain</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E6%A0%BC%E5%BC%8F/1.htm">编码格式</a> <div> package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; </div> </li> <li><a href="/article/2448.htm" title="mysql 在linux客户端插入数据中文乱码" target="_blank">mysql 在linux客户端插入数据中文乱码</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/1.htm">中文乱码</a> <div>1、查看系统客户端,数据库,连接层的编码  查看方法: http://daizj.iteye.com/blog/2174993 进入mysql,通过如下命令查看数据库编码方式: mysql>  show variables like 'character_set_%'; +--------------------------+------</div> </li> <li><a href="/article/2575.htm" title="好代码是廉价的代码" target="_blank">好代码是廉价的代码</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6/1.htm">读书</a> <div>  长久以来我一直主张:好代码是廉价的代码。 当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。 当他们走近看我的表情、知道我是认真的时,才收敛一点。 当最初的惊愕消退后,他们会用一些这样的话来反驳: “好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。” 我只</div> </li> <li><a href="/article/2702.htm" title="Android网络请求库——android-async-http" target="_blank">Android网络请求库——android-async-http</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通</div> </li> <li><a href="/article/2829.htm" title="ORACLE 复习笔记之SQL语句的优化" target="_blank">ORACLE 复习笔记之SQL语句的优化</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/SQL%E4%BC%98%E5%8C%96/1.htm">SQL优化</a><a class="tag" taget="_blank" href="/search/Oracle+sql%E8%AF%AD%E5%8F%A5%E4%BC%98%E5%8C%96/1.htm">Oracle sql语句优化</a><a class="tag" taget="_blank" href="/search/SQL%E8%AF%AD%E5%8F%A5%E7%9A%84%E4%BC%98%E5%8C%96/1.htm">SQL语句的优化</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2097999   SQL语句的优化总结如下   sql语句的优化可以按照如下六个步骤进行: 合理使用索引 避免或者简化排序 消除对大表的扫描 避免复杂的通配符匹配 调整子查询的性能 EXISTS和IN运算符 下面我就按照上面这六个步骤分别进行总结: </div> </li> <li><a href="/article/2956.htm" title="浅析:Android 嵌套滑动机制(NestedScrolling)" target="_blank">浅析:Android 嵌套滑动机制(NestedScrolling)</a> <span class="text-muted">gg163</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</a><a class="tag" taget="_blank" href="/search/%E6%BB%91%E5%8A%A8%E6%9C%BA%E5%88%B6/1.htm">滑动机制</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%A5%97/1.htm">嵌套</a> <div>谷歌在发布安卓 Lollipop版本之后,为了更好的用户体验,Google为Android的滑动机制提供了NestedScrolling特性 NestedScrolling的特性可以体现在哪里呢?<!--[if !supportLineBreakNewLine]--><!--[endif]--> 比如你使用了Toolbar,下面一个ScrollView,向上滚</div> </li> <li><a href="/article/3083.htm" title="使用hovertree菜单作为后台导航" target="_blank">使用hovertree菜单作为后台导航</a> <span class="text-muted">hvt</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a> <div>  hovertree是一个jquery菜单插件,官方网址:http://keleyi.com/jq/hovertree/ ,可以登录该网址体验效果。 0.1.3版本:http://keleyi.com/jq/hovertree/demo/demo.0.1.3.htm hovertree插件包含文件: http://keleyi.com/jq/hovertree/css</div> </li> <li><a href="/article/3210.htm" title="SVG 教程 (二)矩形" target="_blank">SVG 教程 (二)矩形</a> <span class="text-muted">天梯梦</span> <a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a> <div>SVG <rect> SVG Shapes SVG有一些预定义的形状元素,可被开发者使用和操作: 矩形 <rect> 圆形 <circle> 椭圆 <ellipse> 线 <line> 折线 <polyline> 多边形 <polygon> 路径 <path> </div> </li> <li><a href="/article/3337.htm" title="一个简单的队列" target="_blank">一个简单的队列</a> <span class="text-muted">luyulong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a> <div> public class MyQueue { private long[] arr; private int front; private int end; // 有效数据的大小 private int elements; public MyQueue() { arr = new long[10]; elements = 0; front </div> </li> <li><a href="/article/3464.htm" title="基础数据结构和算法九:Binary Search Tree" target="_blank">基础数据结构和算法九:Binary Search Tree</a> <span class="text-muted">sunwinner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>  A binary search tree (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction that the key in any node is larger than the keys in all</div> </li> <li><a href="/article/3591.htm" title="项目出现的一些问题和体会" target="_blank">项目出现的一些问题和体会</a> <span class="text-muted">Steven-Walker</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a> <div>     第一篇博客不知道要写点什么,就先来点近阶段的感悟吧。     这几天学了servlet和数据库等知识,就参照老方的视频写了一个简单的增删改查的,完成了最简单的一些功能,使用了三层架构。 dao层完成的是对数据库具体的功能实现,service层调用了dao层的实现方法,具体对servlet提供支持。  &</div> </li> <li><a href="/article/3718.htm" title="高手问答:Java老A带你全面提升Java单兵作战能力!" target="_blank">高手问答:Java老A带你全面提升Java单兵作战能力!</a> <span class="text-muted">ITeye管理员</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>本期特邀《Java特种兵》作者:谢宇,CSDN论坛ID: xieyuooo 针对JAVA问题给予大家解答,欢迎网友积极提问,与专家一起讨论! 作者简介: 淘宝网资深Java工程师,CSDN超人气博主,人称“胖哥”。 CSDN博客地址: http://blog.csdn.net/xieyuooo 作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>