C# + ArcEngine 常用方法(不定时更新)
1、Arcengine调用GP服务,抛出异常方法
object sev = null;
try
{
Application.DoEvents();
gp.Execute(gpBuildPyramidsandStatistics, null);
Application.DoEvents();
Console.WriteLine(gp.GetMessages(ref sev));
}
catch (Exception ex)
{
// Print geoprocessing execution error messages.
MessageBox.Show(gp.GetMessages(ref sev));
} //ps:调用GP服务处理数据库中的数据,必须添加gp的环境变量workspace.http://www.ithao123.cn/content-7464230.html
//Geoprocessor GP = new Geoprocessor(); //string sWorkPath; //IWorkspace pWork;
//if(pWork.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
//{ //sWorkPath = System.IO.Path.Combine(Application.StartupPath,"gpenvwk.sde");
//pWork.WorkspaceFactory.Create(Application.StartupPath,"gpenvwk.sde",pWork.ConnectionProperties,0);
//}
//else
//{
//sWorkPath = pWork.PathName;
//}
//GP.SetEnvironmentValue("workspace",sWorkPath);
//GP.OverwriteOutput = true;
2、日志生成类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms; namespace Geoway.IDB.FileCheck.Utility
{
///<summary>
///目的:日志操作类
///创建人:jwh
///创建日期:2016/7/11
///修改描述:
///修改人:
///修改日期:
///备注:
///</summary>
public class LogExport
{
private static object _lockerForLog = new object();
public static string LOGPATH = Application.StartupPath + "\\log\\checklog";//日志文件夹 /// <summary>
/// 记录日志
/// </summary>
/// <param name="content"></param>
/// <param name="logPath"></param>
public static void SaveLog(string content, string logPath = "")
{
try
{
if (string.IsNullOrEmpty(logPath))
{
logPath = LOGPATH;
} lock (_lockerForLog)
{
FileStream fs;
if (!Directory.Exists(logPath))
{
Directory.CreateDirectory(logPath);
}
fs = new FileStream(Path.Combine(logPath, DateTime.Now.ToString("yyyyMMdd") + ".log"), FileMode.OpenOrCreate);
StreamWriter streamWriter = new StreamWriter(fs);
streamWriter.BaseStream.Seek(, SeekOrigin.End);
streamWriter.WriteLine(DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss") + " " + content);
streamWriter.Flush();
streamWriter.Close();
fs.Close();
}
}
catch
{
}
}
}
}
3、获取数据库中的镶嵌数据集
/// <summary>
/// 获取界面上选择的镶嵌数据集
/// </summary>
/// <returns></returns>
public IMosaicDataset GetMosaicDataset()
{
try
{
_selMosicName = cmbMosicData.SelectedItem.ToString(); IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", "");
propertySet.SetProperty("INSTANCE", "sde:oracle11g:XXX.XXX.XXX/db11g");
propertySet.SetProperty("USER", "XXX"); propertySet.SetProperty("PASSWORD", "XXX");
propertySet.SetProperty("DATABASE", "");
propertySet.SetProperty("VERSION", "");
IWorkspaceFactory2 workspaceFactory2 = new SdeWorkspaceFactoryClass();
IWorkspace pWorkspace = workspaceFactory2.Open(propertySet, ); IMosaicDataset pMosicDataset = null;
IMosaicWorkspaceExtensionHelper pMosaicWsExHelper = new MosaicWorkspaceExtensionHelperClass();
IMosaicWorkspaceExtension pMosaicWsExt = pMosaicWsExHelper.FindExtension(pWorkspace);
if (pMosaicWsExt != null)
{
try
{
pMosicDataset = pMosaicWsExt.OpenMosaicDataset(_selMosicName);
}
catch (Exception ex)
{
return pMosicDataset;
}
}
return pMosicDataset;
}
catch (Exception ex)
{
return null;
}
}
4、跨线程调用控件的属性和方法
//定义两个委托
delegate void SetTextValueCallback(Control oControl, string propName, object propValue);
delegate void SetUCLogValueHandler(string log, EnumLogType enumLogType); /// <summary>
/// 设置控件参数
/// </summary>
/// <param name="oControl">控件</param>
/// <param name="propName">参数名称</param>
/// <param name="propValue">参数值</param>
private void SetTextPropertyValue(Control oControl, string propName, object propValue)
{
if (oControl.InvokeRequired)
{
SetTextValueCallback d = new SetTextValueCallback(SetTextPropertyValue);
oControl.Invoke(d, new object[] { oControl, propName, propValue });
}
else
{
Type t = oControl.GetType();
System.Reflection.PropertyInfo[] props = t.GetProperties();
foreach (System.Reflection.PropertyInfo p in props)
{
if (p.Name.ToUpper() == propName.ToUpper())
{
p.SetValue(oControl, propValue, null);
}
}
}
} /// <summary>
/// 设置UCLog控件输出
/// </summary>
/// <param name="log"></param>
/// <param name="enumLogType"></param>
private void SetUClogValue(string log, EnumLogType enumLogType)
{
if (_ucLog.InvokeRequired == true)
{
SetUCLogValueHandler set = new SetUCLogValueHandler(_ucLog.AddMsg);//委托的方法参数应和SetCalResult一致
_ucLog.Invoke(set, new object[] { log, enumLogType }); //此方法第二参数用于传入方法,代替形参result
} } //实例化
SetTextValueCallback setControlvalue = new SetTextValueCallback(SetTextPropertyValue);
SetUCLogValueHandler setUClogValue = new SetUCLogValueHandler(SetUClogValue);
//调用
setControlvalue(_progresslabal, "Text", "正在创建金字塔... ...");
setUClogValue(_selMosicName + "数据BuildPyramids处理成功." + log, EnumLogType.SuccessAudit);
5、创建XML文件
public static void CreateXmlFile(string xmlPath, string rootName)
{
XmlDocument xmlDoc = new XmlDocument();
//创建类型声明节点
XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "GB2312", "");
xmlDoc.AppendChild(node);
//创建根节点
XmlNode root = xmlDoc.CreateElement(rootName);
xmlDoc.AppendChild(root); CreateNode(xmlDoc, root, "NodeName", "value"); try
{
xmlDoc.Save(xmlPath);
}
catch (Exception ex)
{
}
} /// <summary>
/// 创建节点
/// </summary>
/// <param name="xmldoc"></param> xml文档
/// <param name="parentnode"></param>父节点
/// <param name="name"></param> 节点名
/// <param name="value"></param> 节点值
///
public static void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value)
{
XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
node.InnerText = value;
parentNode.AppendChild(node);
}
6、我们在执行控制台应用程序或者其他程序时,有时候加了断点也无法调试,一个可能是我们设置了新的项目生成配置,而该配置默认的不生成.pdb文件,导致无法调试,解决方案是在“生成”页面的“高级”里把输出——>调试信息改成full。
7、查询用户job的运行状态
select job,what,failures,broken from user_jobs
8、arcengine删除表
/// <summary>
/// 从工作空间中删除指定表
/// </summary>
/// <param name="pWorkSpace"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static bool DeleteTable(IWorkspace pWorkspace,String tableName)
{
try
{
IFeatureWorkspace pFeatureworkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatureworkspace.OpenFeatureClass(tableName);//存在删除
if (pFeatureClass != null)
{
IDataset pDataset = pFeatureClass as IDataset;
if (pDataset.CanDelete())
{
pDataset.Delete();
return true;//删除成功
}
}
}
catch { }
return false;//删除失败
}
9、C#向Oracle的Blob字段插入值(引用自网络)
(1)先插入其它字段,BLOB字段初始化的时候,先初始化一个EMPTY_BLOB(),相当于一个BLOB对象的空壳,内部啥也没有,但是是一个对象。
(2)SELECT <BLOB字段> FROM <表名称> WHERE <关键字>=<插入关键值> FOR UPDATE;--FOR UPDATE是必须的。
(3)如果在程序中就直接得到一个BLOB对象的引用(相当于指针),如果过程中,上述修改为SELECT INTO到一个BLOB类型的变量中,其实也是BLOB对象的指针,然后对这个BLOB进行编辑,过程中对其进行编辑使用DBMS_LOB包来完成编辑工作,程序中将前端提交的内容(可能是图片或者上传文件直接可以转为byte[]数组、可能是文本字符串需要根据相应字符集转义为byte[]数组),通过java.sql.Blob接口对应的驱动实现类内部的setBytes(....)方法来完成写入。
(4)不论是程序还是过程,使用UPDATE <表名称> WHERE <关键字>=<插入关键值>; COMMIT;即可完成编辑过程。
static void Main(string[] args)
{
int nSize = ;
byte[] bArray = new byte[nSize];
for (int i = ; i < nSize; i++)
{
bArray[i] = ;
} /*
* 须使用OracleClient命名空间
* 须安装支持OLEDB 的ORACLE 客户端
*/
string sConn = "Data Source=192.168.0.5;User ID=hpbjjy;Unicode=True;Password=hpbjjy";
OracleConnection conn = new OracleConnection(sConn);
OracleTransaction tra = null;
try
{
conn.Open();
Console.WriteLine("打开成功!");
OracleCommand com = conn.CreateCommand();
tra = conn.BeginTransaction();
com.Transaction = tra; /*
* 先使用查询获得该BLOB字段的对象
* 同时使用for update 锁定该字段,否则无法修改
*/
string SQL = "select tag2 from sysconf where name='HotelName' for update"; // tag2字段类型为BLOB
com.CommandText = SQL;
OracleDataReader reader = com.ExecuteReader();
OracleLob lob = OracleLob.Null;
reader.Read();
lob = reader.GetOracleLob(); // 获取BLOB对象 lob.Write(bArray, , bArray.Length); // 将数据写入该对象
SQL = "update sysconf set tag2=:t where name='HotelName'";
com.CommandText = SQL;
com.Parameters.Add("t", OracleType.Blob).Value = lob;
com.ExecuteNonQuery(); tra.Commit();
Console.WriteLine("成功完成!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
if (tra != null)
tra.Rollback();
} if (conn.State == ConnectionState.Open)
conn.Close();
Console.Read();
}
10、Dev Treelist使用方法
右击节点信息
TreeListHitInfo hInfo = treeList1.CalcHitInfo(new Point(e.X, e.Y));
TreeListNode node = hInfo.Node;
treeList1.FocusedNode = node;
代码初始化Treelist
DataTable dt = new DataTable();
DataColumn dcOID = new DataColumn("KeyFieldName", Type.GetType("System.Int32"));
DataColumn dcParentOID = new DataColumn("ParentFieldName", Type.GetType("System.Int32"));
DataColumn dcNodeName = new DataColumn("NodeName", Type.GetType("System.String"));
DataColumn dcNodeCode = new DataColumn("NodeCode", Type.GetType("System.String")); dt.Columns.Add(dcOID);
dt.Columns.Add(dcParentOID);
dt.Columns.Add(dcNodeName);
dt.Columns.Add(dcNodeCode); DataRow dr1 = dt.NewRow();
dr1["KeyFieldName"] = ;
dr1["ParentFieldName"] = ;
dr1["NodeName"] = "第三次农业普查";
dr1["NodeCode"] = "根节点编码";
dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow();
dr2["KeyFieldName"] = ;
dr2["ParentFieldName"] = ;
dr2["NodeName"] = "农作物总播种面积";
dr2["NodeCode"] = "节点子节点编码2";
dt.Rows.Add(dr2); DataRow dr3 = dt.NewRow();
dr3["KeyFieldName"] = ;
dr3["ParentFieldName"] = ;
dr3["NodeName"] = "主要农作物播种面积";
dr3["NodeCode"] = "节点子节点编码3";
dt.Rows.Add(dr3); treeList_SNP.BeginUnboundLoad();
treeList_SNP.KeyFieldName = "KeyFieldName";
treeList_SNP.ParentFieldName = "ParentFieldName";
treeList_SNP.DataSource = dt;
treeList_SNP.EndUnboundLoad();
treeList_SNP.ExpandAll();
TreeList_SNP = treeList_SNP;
treeList_SNP.Nodes.FirstNode.Nodes[].Checked = true;
http://blog.163.com/china__xuhua/blog/static/199723169201203111653783/ http://www.dxper.net/thread-62-1-1.html http://www.jb51.net/article/53337.htm
11、DEV XtraForm 皮肤设置
在启动的main函数里加上: BonusSkins.Register();
AppearanceObject.DefaultFont = new Font("微软雅黑", );
UserLookAndFeel.Default.SetSkinStyle("标准风格");
SkinManager.EnableFormSkins(); 引用:using DevExpress.LookAndFeel;
using DevExpress.Skins;
using DevExpress.UserSkins;
using DevExpress.Utils;
using System.Drawing;
12、两个类之间实时传值(利用委托)
假设FormA窗体中有一个数据处理的ProcessBar需要实时更新状态,但是FormA中的数据处理方法在ClassA,这样,我们就行要根据ClassA中方法执行的状态,
实时给FormA中的ProcessBar传值; 在ClassA中定义如下: //委托
public delegate void ExecutingEeventHandler(int nodeIndex,int nodeCount); /// <summary>
/// 传递processbar序号
/// </summary>
public event ExecutingEeventHandler Executing; //事件触发函数
private void OnExcuting(int index, int nodeCount)
{
if (Executing != null)
{
Executing(index, nodeCount);
}
} 在ClassA的执行方法中加入事件触发函数:OnExcuting(index, catalogNodeLists.Count); 在FormA中把ProcessBar状态更新的函数注册到ExecutingEeventHandler中;
classA.Executing += new ClassA.ExecutingEeventHandler(expOper_Executing);
void expOper_Executing(int nodeIndex, int nodeCount)
{
_Processbar.SetProgress(nodeIndex, nodeCount);
}
13、dev treelist 只允许同级拖拽,不变成子目录设置
private void treeList1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeListNode dragNode, targetNode;
TreeList tl = sender as TreeList;
Point p = tl.PointToClient(new Point(e.X, e.Y));
dragNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
targetNode = tl.CalcHitInfo(p).Node;
tl.SetNodeIndex(dragNode, tl.GetNodeIndex(targetNode));
e.Effect = DragDropEffects.None;
}
14、GridView 列对齐
col.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
15、设置TableLayoutPanel等宽高(http://blog.csdn.net/langyuewu/article/details/38865423#),最好在代码中初始化TableLayoutPanel
private void InitLayoutDemo()
{
TableLayoutPanel demoLayoutPanel = new TableLayoutPanel();
demoLayoutPanel.Dock = DockStyle.Fill;
this.Controls.Add(demoLayoutPanel);
int row = , col = ;
DynamicLayout(demoLayoutPanel, row, col);
for (int i = ; i < row; i++)
{
for (int j = ; j < col; j++)
{
Button btn = new Button();
btn.Text = string.Format("({0},{1})", i, j);
btn.Dock = DockStyle.Fill;
demoLayoutPanel.Controls.Add(btn);
demoLayoutPanel.SetRow(btn, i);
demoLayoutPanel.SetColumn(btn, j);
}
}
} /// <summary>
/// 动态布局
/// </summary>
/// <param name="layoutPanel">布局面板</param>
/// <param name="row">行</param>
/// <param name="col">列</param>
private void DynamicLayout(TableLayoutPanel layoutPanel, int row, int col)
{
layoutPanel.RowCount = row; //设置分成几行
for (int i = ; i < row; i++)
{
layoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
}
layoutPanel.ColumnCount = col; //设置分成几列
for (int i = ; i < col; i++)
{
layoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
}
}
15、XML操作
最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference. Attribute, 指在<Employee >中的粗体部分。 Comment,指形如:<!-- my comment --> 的节点。 Text,指在<Name>Tom<Name>的粗体部分。 在XML中,可以用XmlNode对象来参照各种XML数据类型。 2.1 查询已知绝对路径的节点(集) objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”) 或者 objNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”) 以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如: objNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”) If Not (objNode is Nothing) then ‘- Do process End If 2.2 查询已知相对路径的节点(集) 可使用类似于文件路径的相对路径的方式来查询XML的数据 objNode = objDoc.SelectSingleNode(“Company/Department”) objNodeList = objNode.SelectNodes(“../Department) objNode = objNode.SelectNode(“Employees/Employee”) 2.3 查询已知元素名的节点(集) 在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如: objNodeList = objDoc.SelectNodes(“Company//Employee”) 2.4 查询属性(attribute)节点 以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如: objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”) objNodeList = objDoc.SelectNodes(“Company//@id”) 2.5 查询Text节点 使用text()来获取Text节点。 objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”) 2.6 查询特定条件的节点 使用[]符号来查询特定条件的节点。例如: a. 返回id号为 10102的Employee节点 objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’’]”) b. 返回Name为Zhang Qi的Name 节点 objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”) c. 返回部门含有职员22345的部门名称节点 objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name") 2.7 查询多重模式的节点 使用 | 符号可以获得多重模式的节点。例如: objNodeList = objDoc.SelectNodes(“Company/Department/Department_Name | Company/Department/Manager”) 2.8 查询任意子节点 使用*符号可以返回当前节点的所有子节点。 objNodeList = objDoc.SelectNodes(“Company/*/Manager) 或者 objNodeList = objNode.ChildNodes 3 XML数据的编辑 3.1 增加一个元素的属性(attribute)节点 Dim objNodeAttr As XmlNode objNodeAttr = objDoc.CreateAttribute("id", Nothing) objNodeAttr.InnerXml = "101" objNode.Attributes.Append(objNodeAttr) 3.2 删除一个元素的属性 objNode.Attributes.Remove(objNodeAttr) 3.3 增加一个子元素(Element) Dim objNodeChild As XmlNode objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing) objNodeChild.InnerXml = "101" objNode.AppendChild(objNodeChild) 3.4 删除一个子元素 objNode.RemoveChild(objNodeChild) 3.5 替换一个子元素 objNOde.ReplaceChild(newChild,oldChild) 4 参考数据 <?xml version="1.0" encoding="UTF-8"?> <Company> <Department > <Department_Name>Cai WuBu</Department_Name> <Manager>Zhang Bin</Manager> <Employees> <Employee > <Employee_ID>12345</Employee_ID> <Name>Zhang Bin</Name> <Gender>male</Gender> </Employee> <Employee > <Employee_ID>10101</Employee_ID> <Name>Zhang QI</Name> <Gender>female</Gender> </Employee> <Employee > <Employee_ID>10102</Employee_ID> <Name>Zhang Xia</Name> <Gender>male</Gender> </Employee> <Employee > <Employee_ID>10201</Employee_ID> <Name>ZhangChuang</Name> <Gender>male</Gender> </Employee> <Employee > <Employee_ID>10202</Employee_ID> <Name>Zhang Jun</Name> <Gender>male</Gender> </Employee> </Employees> </Department> <Department > <Department_Name>KaiFa Bu</Department_Name> <Manager>Wang Bin</Manager> <Employees> <Employee > <Employee_ID>22345</Employee_ID> <Name>Wang Bin</Name> <Gender>male</Gender> </Employee> <Employee > <Employee_ID>20101</Employee_ID> <Name>Wang QI</Name> <Gender>female</Gender> </Employee> <Employee > <Employee_ID>20102</Employee_ID> <Name>Wang Xia</Name> <Gender>male</Gender> </Employee> <Employee > <Employee_ID>20201</Employee_ID> <Name>Wang Chuang</Name> <Gender>male</Gender> </Employee> <Employee > <Employee_ID>20201</Employee_ID> <Name>Wang Jun</Name> <Gender>male</Gender> </Employee> </Employees> </Department> </Company>
16、shp图层属性表读写效率
http://blog.csdn.net/freewaywalker/article/details/23703863
C# + ArcEngine 常用方法(不定时更新)的更多相关文章
- iOS 属性修饰符记录 --不定时更新
重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰 ...
- linux下svn定时更新项目
方法一.用shell脚本定时更新项目 1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test 2.建立脚本文件update.sh,分两步进行.首先利 ...
- ASP.NET中设置一个定时器来定时更新 转
asp.net 定时器 比较少用, 中国红木网这是一个相当实用的功能,有了RSS博客镜像,就不需要在多处同时发布博客日志了.比如你同时在新浪上有自己的博客,又同时有自己的个人博客站点,那么你只需要在 ...
- Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新)
Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新) 标签: Vivado 2015-07-03 14:35 4453人阅读 评论(0) 收藏 举报 分类: 硬件(14) 版权声 ...
- Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新
Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...
- [Android Traffic] 调整定时更新的频率(C2DM与退避算法)
转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...
- Java专业技能面试问题(不定时更新)
刚看到园友五月的仓颉<面试感悟----一名3年工作经验的程序员应该具备的技能>感觉很不错,不论是为面试跳槽准备,还是打算深化精进自己的技术都可以参考一下.面向工资编程多少也有点道理,虽然技 ...
- Dcloud课程6 php脚本如何在Linux下定时更新数据
Dcloud课程6 php脚本如何在Linux下定时更新数据 一.总结 一句话总结:linux下用crontab命令实现定时任务. 1.linux下执行php脚本用什么命令? 直接用php命令php ...
- 创建yum本地仓库,将阿里仓库同步到本地,并定时更新
很多时候为了加速自己内部的rpm包安装速度,都会搭建自己的yum源仓库,而使用系统光盘自带的源,由于软件版本比较落后,所以不太适用,而大家都在用的阿里仓库比较好用,所以就想到了把阿里仓库的rpm全部拉 ...
- celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决
今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...
随机推荐
- linux链路聚合
配置聚合连接(网卡绑定,链路聚合): eth0 ================>>虚拟网卡team eth1 配置聚合连接 [root@Centos7-Server ~]# nmcli ...
- Angular-chart.js 使用说明(基于angular.js工程)
Angular-chart.js是基于Chart.js的angular组件,引入项目后直接操作数据即可. 引用方法: 分别将Chart.js.angular-chart.js.angular-c ...
- C# WebClient 使用http免费代理
static void Main(string[] args) { WebClient client = new WebClient(); client.Encoding = Encoding.Get ...
- php sign签名实例
1:实现签名代码: /** * 签名生成算法 * @param array $params API调用的请求参数集合的关联数组,不包含sign参数 * @param string $secret 签名 ...
- Python学习:2.Python集成学习环境(IDE)Pycharm的安装配置以及激活方
一.下载Pycharm Pycharm作为Python现在最流行的集成开发环境,我们今后的Python的学习也就使用Pycharm进行,那今天我们就讲一下Pycharm的安装配置以及激活 1.我们首先 ...
- Hash学习笔记
啊啊啊啊,这篇博客估计是我最早的边写边学的博客了,先忌一忌. 本文章借鉴与一本通提高篇,但因为是个人的学习笔记,因此写上原创. 目录 谁TM边写边学还写这玩意? 后面又加了 Hash Hash表 更多 ...
- mysql 筛选重复名称
CREATE TABLE `blur_article` ( `id` ) NOT NULL, `name` ) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=In ...
- 分享一个工作中遇得到的sql(按每天每人统计拖车次数与小修次数)
查询每人每天的数据 首先先建表 CREATE TABLE `user` ( `name` ) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CR ...
- 隐式Dijkstra:在状态集合中用优先队列求前k小
这种技巧是挺久以前接触的了,最近又突然遇到几道新题,于是总结了一下体会. 这种算法适用的前提是,标题所述的"状态集合"大到不可枚举(否则枚举就行了qaq) ...
- 从0开始 java 网站开发(jsp)【1】
前提:安装java 并配置环境变量 java下载地址: http://www.java.com/zh_CN/ 环境变量配置 本地PC路径: 电脑--属性--高级--环境变量 在系统变量中: 新建 名: ...