codesmith的使用
新建一个C#模版。
model类的模版代码如下:
<%--
Name: 模型层代码生成模版
Author: XX
Description: 根据数据库的内容生成模型层代码
Version: V1. 新规初成
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" ResponseEncoding="UTF-8"%>
<%@ Property Name="Namespace" Type="String" Default="Model" Category="内容" Description="命名空间名称" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="内容" Description="数据源表" %>
<%@ Property Name="ObjectName" Type="String" Category="注释" Description="对象名称,为生成注释而用" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
using System;
using System.Collections.Generic;
using System.Text; namespace <%=Namespace%>
{
/// <summary>
/// <%=ObjectName%>的模型
/// </summary>
[Serializable()]
public class <%=GetClassName(SourceTable)%>
{
private <%=GetPrimaryKeyType(SourceTable)%> <%=GetPrimaryKeyFieldName(SourceTable)%>;
<%
// 循环输出非主键列的定义
foreach(ColumnSchema colum in SourceTable.NonPrimaryKeyColumns)
{
%>
private <%=GetDataTypeByColumn(colum)%> <%=GetFieldNameByColumn(colum)%>;
<%
}
%> public <%= GetClassName(SourceTable)%>() {} public <%=GetPrimaryKeyType(SourceTable)%> <%=GetPrimaryKeyPropertyName(SourceTable)%>
{
get{ return this.<%=GetPrimaryKeyFieldName(SourceTable)%>; }
set{ this.<%=GetPrimaryKeyFieldName(SourceTable)%> = value; }
} <%
// 循环输出非主键列的属性
foreach(ColumnSchema colum in SourceTable.NonPrimaryKeyColumns)
{
%>
public <%=GetDataTypeByColumn(colum)%> <%=GetPropertyNameByColumn(colum)%>
{
get{ return this.<%=GetFieldNameByColumn(colum)%>; }
set{ this.<%=GetFieldNameByColumn(colum)%> = value; }
} <%
}
%>
}
} <script runat="template"> // 根据表对象获得类名称
public string GetClassName(TableSchema table)
{
string tempTable;
if (table.Name.EndsWith("s"))
{
tempTable = table.Name.Substring(,table.Name.Length-);
}
else
{
tempTable = table.Name;
}
return ConvertToPascal(tempTable);
} // 根据表对象获得主键的类型
public string GetPrimaryKeyType(TableSchema table)
{
if (table.PrimaryKey != null)
{
if (table.PrimaryKey.MemberColumns.Count == )
{
return GetCSharpDataTypeByDBColumn(table.PrimaryKey.MemberColumns[]);
}
else
{
throw new ApplicationException("此模板只支持单个列的主键");
}
}
else
{
throw new ApplicationException("此模板需要有主键的表");
}
} // 根据表对象获得主键的名称(原始)
public string GetPrimaryKeyName(TableSchema table)
{
if (table.PrimaryKey != null)
{
if (table.PrimaryKey.MemberColumns.Count == )
{
return ConvertToCamel(table.PrimaryKey.MemberColumns[].Name);
}
else
{
throw new ApplicationException("此模板只支持单个列的主键");
}
}
else
{
throw new ApplicationException("此模板需要有主键的表");
}
} // 根据表对象获得主键的字段名(骆驼命名)
public string GetPrimaryKeyFieldName(TableSchema table)
{
return ConvertToCamel(GetPrimaryKeyName(table));
} // 根据表对象获得主键的属性名(帕斯卡命名)
public string GetPrimaryKeyPropertyName(TableSchema table)
{
return ConvertToPascal(GetPrimaryKeyName(table));
} // 根据列对象获得列的类型
public string GetDataTypeByColumn(ColumnSchema column)
{
return GetCSharpDataTypeByDBColumn(column);
} // 根据列对象获得列的字段名(骆驼命名)
public string GetFieldNameByColumn(ColumnSchema column)
{
return ConvertToCamel(column.Name);
} // 根据列对象获得列的属性名(帕斯卡命名)
public string GetPropertyNameByColumn(ColumnSchema column)
{
return ConvertToPascal(column.Name);
} // 根据列对象获得CSharp中类型
public string GetCSharpDataTypeByDBColumn(ColumnSchema column)
{
switch (column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "byte";
case DbType.Currency: return "decimal";
case DbType.Date: return "DateTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
} // 帕斯卡命名转换
public string ConvertToPascal(string str)
{
return str.Substring(,).ToUpper() + str.Substring();
} // 骆驼命名转换
public string ConvertToCamel(string str)
{
return str.Substring(,).ToLower() + str.Substring();
} // 重写获得文件名的方法
public override string GetFileName()
{
return GetClassName(SourceTable) + ".cs";
}
</script>
代码写好后,连接SQL数据库。

点击图中红色处。


(注:该数据库类型为sqlserver类型)
添加完成后效果如下图:(该添加数据库的表全部显示出来了。)

再列表中选择你要生成的实体类的表,单击select按钮。

再将实体类名称写入。

点击红色框中的按钮,进行生成。生成页面如下图:

最后再保存到自己想要保存的地方即可。
业务逻辑层的模版如下:
<%--
Name: 数据访问层代码生成模版
Author: Fencer
Description: 根据数据库的内容生成模型层代码
Version: V1. 新规初成
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" ResponseEncoding="UTF-8"%>
<%@ Property Name="Namespace" Type="String" Default="SQLServerDAL" Category="内容" Description="命名空间名称" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="内容" Description="数据源表" %>
<%@ Property Name="ObjectName" Type="String" Category="注释" Description="对象名称,为生成注释而用" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Model;
namespace <%=Namespace%>
{ /// <summary>
/// <%=ObjectName%>的数据访问操作
/// </summary>
public class <%=GetModelName(SourceTable)%>BLL
{
/// <summary>
/// 添加<%=ObjectName%>
/// </summary>
/// <param name="<%=GetModelParameterName(SourceTable)%>"><%=ObjectName%></param>
/// <returns>最新编号</returns>
public int Add<%=GetModelName(SourceTable)%>(<%=GetModelName(SourceTable)%> <%=GetModelParameterName(SourceTable)%>)
{
string sql = <%=GetInsertSql()%>; SqlParameter[] pas = new SqlParameter[]
{
<%
for(int i=; i<SourceTable.NonPrimaryKeyColumns.Count; i++)
{
ColumnSchema column = SourceTable.NonPrimaryKeyColumns[i];
%>
new SqlParameter("@<%=column.Name%>",SqlDbType.<%=GetSqlDbType(column)%>,<%=column.Size%>)<%= (i==(SourceTable.NonPrimaryKeyColumns.Count-)? "":",")%>
<%
}
%>
}; <%
for(int i=; i<SourceTable.NonPrimaryKeyColumns.Count; i++)
{
%>
pas[<%=i%>].Value = <%=GetModelParameterName(SourceTable)%>.<%=ConvertToPascal(SourceTable.NonPrimaryKeyColumns[i].Name)%>;
<%
}
%> return Convert.ToInt32(SqlHelper.ExecuteNonQuery(sql, CommandType.Text, pas));
} /// <summary>
/// 更新<%=ObjectName%>
/// </summary>
/// <param name="<%=GetModelParameterName(SourceTable)%>"><%=ObjectName%></param>
/// <returns>bool</returns>
public bool Update<%=GetModelName(SourceTable)%>(<%=GetModelName(SourceTable)%> <%=GetModelParameterName(SourceTable)%>)
{
string sql = <%=GetUpdateSql()%>; SqlParameter[] pas = new SqlParameter[]
{
<%
for(int i=; i<SourceTable.NonPrimaryKeyColumns.Count; i++)
{
ColumnSchema column = SourceTable.NonPrimaryKeyColumns[i];
%>
new SqlParameter("@<%=column.Name%>",SqlDbType.<%=GetSqlDbType(column)%>,<%=column.Size%>),
<%
}
%>
new SqlParameter("@<%=GetPrimaryKeyName(SourceTable)%>",SqlDbType.<%=GetSqlDbType(GetPrimaryKeyColumn(SourceTable))%>,<%=GetPrimaryKeySize(SourceTable)%>)
}; <%
for(int i=; i<=SourceTable.NonPrimaryKeyColumns.Count; i++)
{
if (i < SourceTable.NonPrimaryKeyColumns.Count)
{
%>
pas[<%=i%>].Value = <%=GetModelParameterName(SourceTable)%>.<%=ConvertToPascal(SourceTable.NonPrimaryKeyColumns[i].Name)%>;
<%
}
else
{
%>
pas[<%=i%>].Value = <%=GetModelParameterName(SourceTable)%>.<%=ConvertToPascal(GetPrimaryKeyName(SourceTable))%>;
<%
}
}
%> int rows = SqlHelper.ExecuteNonQuery(sql, CommandType.Text, pas);
return (rows == );
} /// <summary>
/// 根据ID删除<%=ObjectName%>
/// </summary>
/// <param name="<%=GetPrimaryKeyFieldName(SourceTable)%>"><%=ObjectName%>ID</param>
/// <returns>bool</returns>
public bool Delete<%=GetModelName(SourceTable)%>By<%=GetPrimaryKeyPropertyName(SourceTable)%>(<%=GetPrimaryKeyType(SourceTable)%> <%=GetPrimaryKeyFieldName(SourceTable)%>)
{
string sql = "DELETE FROM <%=SourceTable.Name%> WHERE <%=GetPrimaryKeyName(SourceTable)%>=@<%=GetPrimaryKeyName(SourceTable)%>"; SqlParameter pa = new SqlParameter("@<%=GetPrimaryKeyName(SourceTable)%>",SqlDbType.<%=GetPrimaryKeySqlDbType(SourceTable)%>,<%=GetPrimaryKeySize(SourceTable)%>);
pa.Value = <%=GetPrimaryKeyFieldName(SourceTable)%>; int rows = SqlHelper.ExecuteNonQuery(sql, CommandType.Text, pa); return (rows == );
} /// <summary>
/// 根据ID查询<%=ObjectName%>
/// </summary>
/// <param name="<%=GetPrimaryKeyFieldName(SourceTable)%>"><%=ObjectName%>ID</param>
/// <returns><%=ObjectName%>对象</returns>
public <%=GetModelName(SourceTable)%> Get<%=GetModelName(SourceTable)%>By<%=GetPrimaryKeyPropertyName(SourceTable)%>(<%=GetPrimaryKeyType(SourceTable)%> <%=GetPrimaryKeyFieldName(SourceTable)%>)
{
string sql = <%=GetSelectOneModelSql()%>; SqlParameter pa = new SqlParameter("@<%=GetPrimaryKeyName(SourceTable)%>",SqlDbType.<%=GetPrimaryKeySqlDbType(SourceTable)%>,<%=GetPrimaryKeySize(SourceTable)%>);
pa.Value = <%=GetPrimaryKeyFieldName(SourceTable)%>; using(SqlDataReader rdr = SqlHelper.ExecuteReader(sql, CommandType.Text,pa))
{
if (rdr.Read())
{
<%=GetModelName(SourceTable)%> <%=GetModelParameterName(SourceTable)%> = new <%=GetModelName(SourceTable)%>();
<%
foreach(ColumnSchema column in SourceTable.Columns)
{
%>
<%=GetModelParameterName(SourceTable)%>.<%=ConvertToPascal(column.Name)%> = (<%=GetCSharpDataTypeByDBColumn(column)%>)rdr["<%=column.Name%>"];
<%
}
%> return <%=GetModelParameterName(SourceTable)%>;
}
} return null;
} /// <summary>
/// 获得所有<%=ObjectName%>
/// </summary>
/// <returns><%=ObjectName%>集合</returns>
public List<<%=GetModelName(SourceTable)%>> GetAll<%=GetModelName(SourceTable)%>s()
{
string sql = <%=GetSelectAllModelSql()%>; List<<%=GetModelName(SourceTable)%>> all<%=GetModelName(SourceTable)%>s = new List<<%=GetModelName(SourceTable)%>>(); using(SqlDataReader rdr = SqlHelper.ExecuteReader(sql, CommandType.Text))
{
while (rdr.Read())
{
<%=GetModelName(SourceTable)%> <%=GetModelParameterName(SourceTable)%> = new <%=GetModelName(SourceTable)%>();
<%
foreach(ColumnSchema column in SourceTable.Columns)
{
%>
<%=GetModelParameterName(SourceTable)%>.<%=ConvertToPascal(column.Name)%> = (<%=GetCSharpDataTypeByDBColumn(column)%>)rdr["<% =column.Name%>"];
<%
}
%> all<%=GetModelName(SourceTable)%>s.Add(<%=GetModelParameterName(SourceTable)%>);
}
} return all<%=GetModelName(SourceTable)%>s;
}
}
} <script runat="template">
public string GetClassName(TableSchema table)
{
string tempTable;
if (table.Name.EndsWith("s"))
{
tempTable = table.Name.Substring(,table.Name.Length-);
}
else
{
tempTable = table.Name;
}
return tempTable;
} public string GetModelName(TableSchema table)
{
return ConvertToPascal(GetClassName(table));
} public string GetModelParameterName(TableSchema table)
{
return ConvertToCamel(GetClassName(table));
} public string GetPrimaryKeyType(TableSchema table)
{
if (table.PrimaryKey != null)
{
if (table.PrimaryKey.MemberColumns.Count == )
{
return GetCSharpDataTypeByDBColumn(table.PrimaryKey.MemberColumns[]);
}
else
{
throw new ApplicationException("此模板只支持单个列的主键");
}
}
else
{
throw new ApplicationException("此模板需要有主键的表");
}
} public ColumnSchema GetPrimaryKeyColumn(TableSchema table)
{
if (table.PrimaryKey != null)
{
if (table.PrimaryKey.MemberColumns.Count == )
{
return table.PrimaryKey.MemberColumns[];
}
else
{
throw new ApplicationException("此模板只支持单个列的主键");
}
}
else
{
throw new ApplicationException("此模板需要有主键的表");
}
} public string GetPrimaryKeyName(TableSchema table)
{
if (table.PrimaryKey != null)
{
if (table.PrimaryKey.MemberColumns.Count == )
{
return table.PrimaryKey.MemberColumns[].Name;
}
else
{
throw new ApplicationException("此模板只支持单个列的主键");
}
}
else
{
throw new ApplicationException("此模板需要有主键的表");
}
} public string GetPrimaryKeySize(TableSchema table)
{
return table.PrimaryKey.MemberColumns[].Size.ToString();
} public string GetPrimaryKeySqlDbType(TableSchema table)
{
return GetSqlDbType(table.PrimaryKey.MemberColumns[]);
} public string GetPrimaryKeyFieldName(TableSchema table)
{
return ConvertToCamel(GetPrimaryKeyName(table));
} public string GetPrimaryKeyPropertyName(TableSchema table)
{
return ConvertToPascal(GetPrimaryKeyName(table));
} public string GetInsertSql()
{
string sql = "\"INSERT INTO " + SourceTable.Name + "(";
foreach(ColumnSchema column in SourceTable.NonPrimaryKeyColumns)
{
sql += column.Name + ",";
}
sql = sql.Substring(,sql.Length-);
sql += ")\" +\n"; sql += "\t\t\t\t\" values(";
foreach(ColumnSchema column in SourceTable.NonPrimaryKeyColumns)
{
sql += "@" + column.Name + ",";
}
sql = sql.Substring(,sql.Length-);
sql += ")\""; return sql;
} public string GetUpdateSql()
{
string sql = "\"UPDATE " + SourceTable.Name + " \" +\n";
sql += "\t\t\t\t\"SET ";
foreach(ColumnSchema column in SourceTable.NonPrimaryKeyColumns)
{
sql += column.Name + "=@" + column.Name + ",";
}
sql = sql.Substring(,sql.Length-);
sql += " \" +\n"; sql += "\t\t\t\t\"WHERE " + GetPrimaryKeyName(SourceTable) + "=@" + GetPrimaryKeyName(SourceTable) + "\""; return sql;
} public string GetSelectOneModelSql()
{
string sql = "\"SELECT ";
foreach(ColumnSchema column in SourceTable.Columns)
{
sql += column.Name + ",";
}
sql = sql.Substring(,sql.Length-);
sql += " \" +\n"; sql += "\t\t\t\t\"FROM " + SourceTable.Name + " \" +\n";
sql += "\t\t\t\t\"WHERE " + GetPrimaryKeyName(SourceTable) + "=@" + GetPrimaryKeyName(SourceTable) + "\""; return sql;
} public string GetSelectAllModelSql()
{
string sql = "\"SELECT ";
foreach(ColumnSchema column in SourceTable.Columns)
{
sql += column.Name + ",";
}
sql = sql.Substring(,sql.Length-);
sql += " \" +\n"; sql += "\t\t\t\t\"FROM " + SourceTable.Name + "\""; return sql;
} public string GetCSharpDataTypeByDBColumn(ColumnSchema column)
{
switch (column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "byte";
case DbType.Currency: return "decimal";
case DbType.Date: return "DateTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
} public string GetSqlDbType(ColumnSchema column)
{
switch (column.NativeType)
{
case "bigint": return "BigInt";
case "binary": return "Binary";
case "bit": return "Bit";
case "char": return "Char";
case "datetime": return "DateTime";
case "decimal": return "Decimal";
case "float": return "Float";
case "image": return "Image";
case "int": return "Int";
case "money": return "Money";
case "nchar": return "NChar";
case "ntext": return "NText";
case "numeric": return "Decimal";
case "nvarchar": return "NVarChar";
case "real": return "Real";
case "smalldatetime": return "SmallDateTime";
case "smallint": return "SmallInt";
case "smallmoney": return "SmallMoney";
case "sql_variant": return "Variant";
case "sysname": return "NChar";
case "text": return "Text";
case "timestamp": return "Timestamp";
case "tinyint": return "TinyInt";
case "uniqueidentifier": return "UniqueIdentifier";
case "varbinary": return "VarBinary";
case "varchar": return "VarChar";
default: return "__UNKNOWN__" + column.NativeType;
}
} public string ConvertToPascal(string str)
{
return str.Substring(,).ToUpper() + str.Substring();
} public string ConvertToCamel(string str)
{
return str.Substring(,).ToLower() + str.Substring();
} public override string GetFileName()
{
return GetModelName(SourceTable) + "Service.cs";
} public string ConvertDataType(string datatype,string dataname)
{
string result = "";
if(datatype=="int")
{
result="Convert.ToInt32("+dataname+")";
}else if(datatype=="string")
{
result =dataname.ToString();
}else if(datatype=="DateTime")
{
result ="Convert.ToDateTime("+dataname+")";
}else if(datatype=="bool")
{
result = "Convert.ToBoolean("+dataname+")";
}else if(datatype=="byte")
{
result = "Convert.ToByte("+dataname+")";
}else
{
result = "("+datatype+")"+dataname;
}
return result;
}
</script>
codesmith的使用的更多相关文章
- 完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案
		
问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写MySQL模板的时候,会发现一个问题:MySQL数据表中的列说明获取不到,也就是column ...
 - CodeSmith模板代码生成实战详解
		
前言 公司项目是基于soa面向服务的架构思想开发的,项目分解众多子项目是必然的.然而子项目的架子结构种类也过多的话,就会对后期的开发维护产生一锅粥的感觉.为了尽可能的在结构层避免出现这种混乱的现象,我 ...
 - CodeSmith 介绍
		
代码生成器作用 中国有句古语叫做“工欲善其事,必先利其器”,用通俗的话来说就是“磨刀不误砍柴功”,古人的这些话告诉我们:要把事情做好,事先应该准备合适的工具.工具不仅仅包括器具, 还包括思想.理论.经 ...
 - CodeSmith模板
		
重复性的工作交给代码生成器就好,这里分享几套模板, 1.从数据库抓取字段,生成Table元素,这个在web开发中很有用 <%-- Name: Author: Description: --%&g ...
 - 2015.05.14:codesmith
		
安装: 安装好codesmith会有两个软件:一个编译器(CodeSmith Generator Explorer),一个生成工具(CodeSmith Generator Studio) 破解: 一般 ...
 - CodeSmith Merge策略--小白教程
		
为了让 自动产生的代码 和 程序员手写的代码 互不干涉, 提出了Merge策略, 包括以下三种 InsertRegion: 只插入(覆盖)到指定 #region区域 InsertClass: ...
 - codesmith生成java类
		
今天生成的时候的时候找不到类型转换的文件JavaAlias 后台发现我装完codesmith后,没有把类型转换类放入对应的文件 把System-JavaTableNameComments.csmap和 ...
 - 在Windows7 下调试CodeSmith 注意事项
		
编写CodeSmith模板和编写程序一样,也需要进行调试,CodeSmith支持使用CLR’s Just-in-Time debugger调试模板. 要调试模板,首先要在CodeTemplate声明中 ...
 - 【工具】CodeSmith Generator 7.0.2激活步骤
		
学过三层的人应该认识CodeSmith Generator吧,今天我就跟大家一起探讨下CodeSmith Generator 7.0.2的激活,这最新版本破解的难度也是超越以往......具体看这篇日 ...
 - CodeSmith连接Oracle
		
Win7上仅安装了Oracle32位客户端,此时CodeSmith无法连接Oracle数据库. 解决方法一:如果同一台电脑安装了Oracle64位数据库,这样CodeSmith可以连接数据库. 解决方 ...
 
随机推荐
- PHP 读取/导出 CSV文件
			
工作中经常会有遇到导入/导出的需求,下面是常用的方法.读取CSV文件,可以分页读取,设置读取行数,起始行数即可.导出CSV文件,用两种方法进行实现. /** * 读取CSV文件 * @param st ...
 - 小tip:我是如何初体验uglifyjs压缩JS的
			
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2946 一.故事总有其 ...
 - jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - struts.xml详细配置
			
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quo ...
 - 实验一:C语言实现DES加解密算法
			
计算程序执行10万次需要的时间: 总共需要175秒 加解密一次的时间小于:0.00175秒 纯计算加解密的时间会更短 去除IO操作后的时间 也就是说加解密一次的时间为0.07毫秒 /*-------- ...
 - iOS开发网络篇—JSON数据的解析
			
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
 - poj 1606Jugs
			
http://poj.org/problem?id=1606 #include<cstdio> #include<cstring> #define MAXN 1000000 u ...
 - 新的疑问(未解决):VC项目的配置,不是都能在Project -- Properties里设置解决的
			
现象:死活解决不了引入外部库的LPCWSTR参数传递问题.而用VS新建的项目,就没有这个问题. 我怀疑是当初.pro文件产生VC项目文件时候,做了一些设置,但是内容太长了,又很复杂,所以没法核对. 用 ...
 - 如何在一台机器上安装两个MYSQL数据库
			
1.正常安装第一个mysql(安装步骤省略) 2.在控制面板里停止第一个mysql服务 3.将C:\Program Files\MySQL目录下的所有目录和文件copy到另外一个路径,我这里是copy ...
 - thickbox 关于动态生成 无法跳出弹出框的问题
			
问题描述: 用jQuery动态生成thickbox的连接代码,发现没有效果. 原因: thickbox在页面加载后,会给a,input,area等绑定弹出事件. 通过tb_init(’a.thickb ...