c#+arcAE对图层进行各种渲染操作
转载:http://blog.sina.com.cn/s/blog_6023833e0100t5t0.html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Display;
namespace lesson3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
loadMapDocument();
}
//加载地图文档
private void loadMapDocument()
{
System.Windows.Forms.OpenFileDialog openFileDialog;
openFileDialog = new OpenFileDialog();
openFileDialog.Title = "打开地图文档";
openFileDialog.Filter = "map documents(*.mxd)|*.mxd";
openFileDialog.ShowDialog();
string filePath = openFileDialog.FileName;
if (axMapControl1.CheckMxFile(filePath))
{
axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass;
axMapControl1.LoadMxFile(filePath, 0, Type.Missing);
axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;
}
else
{
MessageBox.Show(filePath + "不是有效的地图文档");
}
}
//获取颜色对象
private IRgbColor getRGB(int r, int g, int b)
{
IRgbColor pColor;
pColor = new RgbColorClass();
pColor.Red = r;
pColor.Green = g;
pColor.Blue = b;
return pColor;
}
private IGeoFeatureLayer getGeoLayer(string layerName)
{
ILayer layer;
IGeoFeatureLayer geoFeatureLayer ;
for (int i = 0; i < this.axMapControl1.LayerCount; i++)
{
layer = this.axMapControl1.get_Layer(i);
if (layer != null && layer.Name == layerName)
{
geoFeatureLayer = layer as IGeoFeatureLayer ;
return geoFeatureLayer;
}
}
return null;
}
//简单渲染专题图
private void button1_Click(object sender, EventArgs e)
{
//简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross;
simpleFillSymbol.Color = getRGB(255, 0, 0);
//创建边线符号
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
simpleLineSymbol.Color = getRGB(0, 255, 0);
ISymbol symbol = simpleLineSymbol as ISymbol;
symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
simpleFillSymbol.Outline = simpleLineSymbol;
ISimpleRenderer simpleRender =new SimpleRendererClass ();
simpleRender .Symbol =simpleFillSymbol as ISymbol ;
simpleRender.Label ="continent";
simpleRender.Description ="简单渲染";
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer("Continents");
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer ;
}
this.axMapControl1.Refresh();
}
//创建颜色带
private IColorRamp CreateAlgorithmicColorRamp(int count )
{
//创建一个新AlgorithmicColorRampClass对象
IAlgorithmicColorRamp algColorRamp = new AlgorithmicColorRampClass();
IRgbColor fromColor = new RgbColorClass();
IRgbColor toColor = new RgbColorClass();
//创建起始颜色对象
fromColor.Red = 255;
fromColor.Green = 0;
fromColor.Blue = 0;
//创建终止颜色对象
toColor.Red = 0;
toColor.Green = 0;
toColor.Blue = 255;
//设置AlgorithmicColorRampClass的起止颜色属性
algColorRamp.ToColor = fromColor;
algColorRamp.FromColor = toColor;
//设置梯度类型
algColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
//设置颜色带颜色数量
algColorRamp.Size = count ;
//创建颜色带
bool bture = true;
algColorRamp.CreateRamp(out bture);
return algColorRamp;
}
//分级专题图
private void button2_Click(object sender, EventArgs e)
{
int classCount = 6;
ITableHistogram tableHistogram;
IBasicHistogram basicHistogram;
ITable table;
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer("Continents");
ILayer layer = geoFeatureLayer as ILayer;
table = layer as ITable;
tableHistogram =new BasicTableHistogramClass ();
//按照 数值字段分级
tableHistogram.Table =table ;
tableHistogram.Field ="sqmi";
basicHistogram =tableHistogram as IBasicHistogram ;
object values;
object frequencys;
//先统计每个值和各个值出现的次数
basicHistogram.GetHistogram (out values ,out frequencys );
//创建平均分级对象
IClassifyGEN classifyGEN =new QuantileClass ();
//用统计结果进行分级 ,级别数目为classCount
classifyGEN.Classify (values ,frequencys , ref classCount );
//获得分级结果,是个 双精度类型数组
double [] classes;
classes=classifyGEN.ClassBreaks as double [];
IEnumColors enumColors = CreateAlgorithmicColorRamp(classes.Length ).Colors;
IColor color;
IClassBreaksRenderer classBreaksRenderer = new ClassBreaksRendererClass();
classBreaksRenderer.Field = "sqmi";
classBreaksRenderer.BreakCount = classCount;
classBreaksRenderer.SortClassesAscending = true;
ISimpleFillSymbol simpleFillSymbol;
for (int i = 0; i < classes.Length-1 ; i++)
{
color = enumColors.Next();
simpleFillSymbol = new SimpleFillSymbolClass ();
simpleFillSymbol.Color = color;
simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
classBreaksRenderer.set_Symbol(i, simpleFillSymbol as ISymbol);
classBreaksRenderer.set_Break(i, classes[i]);
}
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = classBreaksRenderer as IFeatureRenderer;
}
this.axMapControl1.ActiveView.Refresh();
}
//单一值专题图
private void button3_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer("Continents");
IUniqueValueRenderer uniqueValueRenderer =new UniqueValueRendererClass ();
uniqueValueRenderer.FieldCount =1;
uniqueValueRenderer.set_Field (0,"continent");
//简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid ;
IFeatureCursor featureCursor = geoFeatureLayer.FeatureClass.Search(null, false);
IFeature feature;
if (featureCursor != null)
{
IEnumColors enumColors = CreateAlgorithmicColorRamp(8).Colors;
int fieldIndex =geoFeatureLayer.FeatureClass.Fields.FindField ("continent");
for (int i = 0; i <8; i++)
{
feature = featureCursor.NextFeature();
string nameValue = feature.get_Value(fieldIndex).ToString ();
simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Color = enumColors.Next();
uniqueValueRenderer.AddValue(nameValue, "continent", simpleFillSymbol as ISymbol);
}
}
geoFeatureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer;
this.axMapControl1.Refresh();
}
//ProportionalSymbolRenderer
private void button4_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer ;
IProportionalSymbolRenderer proportionalSymbolRenderer ;
ITable table ;
ICursor cursor;
IDataStatistics dataStatistics ;
IStatisticsResults statisticsResult;
stdole.IFontDisp fontDisp;
geoFeatureLayer = getGeoLayer("Continents");
featureLayer =geoFeatureLayer as IFeatureLayer ;
table =geoFeatureLayer as ITable ;
cursor =table.Search (null,true );
dataStatistics =new DataStatisticsClass ();
dataStatistics.Cursor =cursor ;
dataStatistics.Field ="sqmi";
statisticsResult =dataStatistics.Statistics ;
if (statisticsResult !=null)
{
IFillSymbol fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (0,255,0);
ICharacterMarkerSymbol characterMarkerSymbol=new CharacterMarkerSymbolClass ();
fontDisp =new stdole.StdFontClass () as stdole.IFontDisp ;
fontDisp.Name ="arial";
fontDisp.Size =20;
characterMarkerSymbol.Font =fontDisp ;
characterMarkerSymbol.CharacterIndex =90;
characterMarkerSymbol.Color =getRGB (255,0,0);
characterMarkerSymbol.Size =8;
proportionalSymbolRenderer=new ProportionalSymbolRendererClass ();
proportionalSymbolRenderer.ValueUnit =esriUnits.esriUnknownUnits;
proportionalSymbolRenderer .Field ="sqmi";
proportionalSymbolRenderer.FlanneryCompensation =false ;
proportionalSymbolRenderer.MinDataValue =statisticsResult.Minimum ;
proportionalSymbolRenderer.MaxDataValue =statisticsResult.Maximum ;
proportionalSymbolRenderer.BackgroundSymbol =fillSymbol ;
proportionalSymbolRenderer.MinSymbol =characterMarkerSymbol as ISymbol ;
proportionalSymbolRenderer.LegendSymbolCount =10;
proportionalSymbolRenderer.CreateLegendSymbols ();
geoFeatureLayer.Renderer =proportionalSymbolRenderer as IFeatureRenderer ;
}
this.axMapControl1.Refresh();
}
//BarChartSymbol
private void button5_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer ;
IFeatureLayer featureLayer ;
ITable table ;
ICursor cursor;
IRowBuffer rowBuffer;
//设置渲染要素
string field1="sqmi";
string field2="sqkm";
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
featureLayer =geoFeatureLayer as IFeatureLayer ;
table =featureLayer as ITable ;
geoFeatureLayer.ScaleSymbols =true;
IChartRenderer chartRenderer =new ChartRendererClass ();
IRendererFields rendererFields=chartRenderer as IRendererFields ;
rendererFields.AddField (field1 ,field1 );
rendererFields.AddField (field2,field2);
int [] fieldIndexs=new int [2];
fieldIndexs [0]=table.FindField (field1);
fieldIndexs [1]=table.FindField (field2);
//获取要素最大值
double fieldValue =0.0,maxValue=0.0;
cursor = table.Search(null, true);
rowBuffer =cursor .NextRow ();
while (rowBuffer!=null )
{
for (int i =0;i<2;i++)
{
fieldValue =double .Parse (rowBuffer.get_Value (fieldIndexs[i]).ToString ()) ;
if (fieldValue >maxValue )
{
maxValue =fieldValue ;
}
}
rowBuffer =cursor.NextRow ();
}
//创建水平排列符号
IBarChartSymbol barChartSymbol =new BarChartSymbolClass ();
barChartSymbol.Width =10;
IMarkerSymbol markerSymbol =barChartSymbol as IMarkerSymbol ;
markerSymbol.Size =50;
IChartSymbol chartSymbol=barChartSymbol as IChartSymbol ;
chartSymbol.MaxValue =maxValue ;
//添加渲染符号
ISymbolArray symbolArray =barChartSymbol as ISymbolArray ;
IFillSymbol fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (255,0,0);
symbolArray.AddSymbol (fillSymbol as ISymbol );
fillSymbol =new SimpleFillSymbolClass ();
fillSymbol .Color =getRGB (0,255,0);
symbolArray .AddSymbol (fillSymbol as ISymbol );
//设置柱状图符号
chartRenderer.ChartSymbol =barChartSymbol as IChartSymbol ;
fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (0,0,255);
chartRenderer.BaseSymbol =fillSymbol as ISymbol ;
chartRenderer.UseOverposter =false ;
//创建图例
chartRenderer.CreateLegend ();
geoFeatureLayer.Renderer =chartRenderer as IFeatureRenderer ;
this.axMapControl1.Refresh();
}
//StackedChartSymbol
private void button6_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer;
//设置渲染要素
string field1 = "sqmi";
string field2 = "sqkm";
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IRendererFields rendererFields = chartRenderer as IRendererFields;
rendererFields.AddField(field1, field1);
rendererFields.AddField(field2, field2);
int[] fieldIndexs = new int[2];
fieldIndexs[0] = table.FindField(field1);
fieldIndexs[1] = table.FindField(field2);
//获取要素最大值
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = 0; i < 2; i++)
{
fieldValue = double.Parse(rowBuffer.get_Value(fieldIndexs[i]).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//创建累积排列符号
IStackedChartSymbol stackedChartSymbol = new StackedChartSymbolClass();
stackedChartSymbol.Width = 10;
IMarkerSymbol markerSymbol = stackedChartSymbol as IMarkerSymbol;
markerSymbol.Size = 50;
IChartSymbol chartSymbol = stackedChartSymbol as IChartSymbol;
chartSymbol.MaxValue = maxValue;
//添加渲染符号
ISymbolArray symbolArray = stackedChartSymbol as ISymbolArray;
IFillSymbol fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = getRGB(255, 0, 0);
symbolArray.AddSymbol(fillSymbol as ISymbol);
fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = getRGB(0, 255, 0);
symbolArray.AddSymbol(fillSymbol as ISymbol);
//设置柱状图符号
chartRenderer.ChartSymbol = stackedChartSymbol as IChartSymbol;
fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = getRGB(0, 0, 255);
chartRenderer.BaseSymbol = fillSymbol as ISymbol;
chartRenderer.UseOverposter = false;
//创建图例
chartRenderer.CreateLegend();
geoFeatureLayer.Renderer = chartRenderer as IFeatureRenderer;
this.axMapControl1.Refresh();
}
//PieChartRenderer
private void button7_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer;
//设置饼图的要素
string field1 = "sqmi";
string field2 = "sqkm";
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IPieChartRenderer pieChartRenderer =chartRenderer as IPieChartRenderer ;
IRendererFields rendererFields = chartRenderer as IRendererFields;
rendererFields.AddField(field1, field1);
rendererFields.AddField(field2, field2);
int[] fieldIndexs = new int[2];
fieldIndexs[0] = table.FindField(field1);
fieldIndexs[1] = table.FindField(field2);
//获取渲染要素的最大值
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = 0; i < 2; i++)
{
fieldValue = double.Parse(rowBuffer.get_Value(fieldIndexs[i]).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//设置饼图符号
IPieChartSymbol pieChartSymbol =new PieChartSymbolClass ();
pieChartSymbol.Clockwise =true ;
pieChartSymbol.UseOutline =true ;
IChartSymbol chartSymbol =pieChartSymbol as IChartSymbol ;
chartSymbol.MaxValue =maxValue ;
ILineSymbol lineSymbol =new SimpleLineSymbolClass ();
lineSymbol.Color =getRGB (255,0,0);
lineSymbol.Width =2;
pieChartSymbol.Outline =lineSymbol ;
IMarkerSymbol markerSymbol=pieChartSymbol as IMarkerSymbol ;
markerSymbol.Size =30;
//添加渲染符号
ISymbolArray symbolArray=pieChartSymbol as ISymbolArray ;
IFillSymbol fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (0,255,0);
symbolArray.AddSymbol (fillSymbol as ISymbol );
fillSymbol =new SimpleFillSymbolClass ();
fillSymbol .Color=getRGB (0,0,255);
symbolArray.AddSymbol (fillSymbol as ISymbol );
chartRenderer.ChartSymbol =pieChartSymbol as IChartSymbol ;
fillSymbol=new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (100,100,100);
chartRenderer.BaseSymbol =fillSymbol as ISymbol ;
chartRenderer.UseOverposter =false ;
//创建图例
chartRenderer.CreateLegend ();
geoFeatureLayer.Renderer =chartRenderer as IFeatureRenderer ;
this.axMapControl1.Refresh ();
}
//DotDensityFillSymbol
private void button8_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer ;
IDotDensityFillSymbol dotDensityFillSymbol;
IDotDensityRenderer dotDensityRenderer ;
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
dotDensityRenderer=new DotDensityRendererClass ();
IRendererFields rendererFields =dotDensityRenderer as IRendererFields ;
//设置渲染字段
string field1="sqmi";
rendererFields.AddField (field1 ,field1 );
//设置填充颜色和背景色
dotDensityFillSymbol =new DotDensityFillSymbolClass ();
dotDensityFillSymbol.DotSize =3;
dotDensityFillSymbol.Color =getRGB (255,0,0);
dotDensityFillSymbol.BackgroundColor =getRGB (0,255,0);
//设置渲染符号
ISymbolArray symbolArray =dotDensityFillSymbol as ISymbolArray ;
ISimpleMarkerSymbol simpleMarkerSymbol =new SimpleMarkerSymbolClass ();
simpleMarkerSymbol.Style =esriSimpleMarkerStyle.esriSMSCircle ;
simpleMarkerSymbol.Size =2;
simpleMarkerSymbol.Color =getRGB (0,0,255);
symbolArray.AddSymbol (simpleMarkerSymbol as ISymbol );
dotDensityRenderer.DotDensitySymbol =dotDensityFillSymbol ;
//设置渲染密度
dotDensityRenderer.DotValue =50000;
//创建图例
dotDensityRenderer.CreateLegend ();
geoFeatureLayer .Renderer =dotDensityRenderer as IFeatureRenderer ;
this.axMapControl1.Refresh ();
}
}
}
c#+arcAE对图层进行各种渲染操作的更多相关文章
- AE开发中栅格图层实现分级渲染
GP工具IDW执行后,生成的栅格图层是黑白二色,需要手动进行分级渲染,似乎不是所有栅格图层都可以进行分级渲染,注意异常处理.注意ARCMAP中是有颜色的,无需自己处理. IRasterClassify ...
- 图片下载、渲染操作 小例子 看多FutureTask
并发执行下载图片操作 import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent. ...
- ArcGIS Desktop和Engine中对点要素图层Graduated Symbols渲染的实现 Rotation Symbol (转)
摘要 ArcGIS中,对于要素图层的渲染,支持按照要素字段的值渲染要素的大小,其中Graduated Symbols可以对大小进行分级渲染.在个人开发系统的过程中,也可以用来美化数据显 ...
- 浮点型/小数/栅格图层转为整数型arcgis操作
有时候会遇到将32位栅格数据提取属性表的操作,但是一般此类数据都是浮点型,是无法计算得到属性表的.因此我们可以利用数据管理工具下的: 复制栅格工具,在最下面选择16位即可,看自己数据情况选择signe ...
- vue学习笔记:数据渲染操作
{{xxx}} 基本的插值表达式 插值表达式 使用两个大括号 {{ data中定义的数据名 }} 可以将数据插入到指定的位置 这种写法不仅可以显示data属性里定义的值,也可以书写js中的表达式,可以 ...
- CAD画三维图怎么渲染?一分钟教你快速操作
从事过CAD相关工作的都知道,CAD绘制的方式有二维平面图以及三维图形,三维图形,画三维图方式也是比较简单的.那当然三维图画完后一般还需要进行渲染操作,步骤也是比较简洁的.下面就来给大家操作一下CAD ...
- iOS 离屏渲染的研究
GPU渲染机制: CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示. G ...
- iOS离屏渲染简书
更详细地址https://zsisme.gitbooks.io/ios-/content/chapter15/offscreen-rendering.html(包含了核心动画) GPU渲染机制: CP ...
- 离屏渲染学习笔记 /iOS圆角性能问题
离屏渲染学习笔记 一.概念理解 OpenGL中,GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行. O ...
随机推荐
- ifconfig-dropped
drop的包是因为网卡的buffer满了 查看当前网卡的buffer size情况 ethtool -g eth0 Ring parameters for eth0: Pre-set maximums ...
- 【xsy1131】tortue FFT
题目大意: 一次游戏要按N个按键.每个按键阿米巴有P[i]的概率按错.对于一串x个连续按对的按键,阿米巴可以得分 $f(x)=tan(\dfrac{x}{N})\times e^{arcsin(0.8 ...
- 【poj3252】 Round Numbers (数位DP+记忆化DFS)
题目大意:给你一个区间$[l,r]$,求在该区间内有多少整数在二进制下$0$的数量$≥1$的数量.数据范围$1≤l,r≤2*10^{9}$. 第一次用记忆化dfs写数位dp,感觉神清气爽~(原谅我这个 ...
- PowerDesigner最基础的使用方法入门学习(转)
PowerDesigner最基础的使用方法入门学习 1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自行学习) 我的PowerDesigner版本是16. ...
- Opserver 初探二《exceptions配置》
上一节主要介绍Opserver的搭建以及redis.sqlserver监控的配置,本节主要介绍异常日志的记录和监控.要实现异常日志的监控我们需要在项目中引入StackExchange.Exceptio ...
- 如何在window server IIS上部署可以使用web deploy?
环境: windows server2012 方式1: 1,下载"wpilauncher.exe" Web平台安装程序.下载地址:http://www.microsoft.com/ ...
- Netty核心概念(4)之Bootstrap
1.前言 第三节介绍了Netty的一些基本概念,此节介绍Netty的第一个概念Bootstrap——启动类.Netty中服务端和客户端的启动类是不一样的,这个不要搞错了,类都在bootstrap包下. ...
- [转]你真的了解 console 吗
原文:https://segmentfault.com/a/1190000000481884 对于前端开发者来说,在开发过程中需要监控某些表达式或变量的值的时候,用 debugger 会显得过于笨重, ...
- start with connect by prior
start with connect by prior的使用: select … from tablename start with 条件1 connect by 条件2 where 条件3; sta ...
- 使用redis的发布订阅模式实现消息队列
配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...