博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC ...
阅读量:6996 次
发布时间:2019-06-27

本文共 33248 字,大约阅读时间需要 110 分钟。

C# -- 等待异步操作执行完成的方式

1. 等待异步操作的完成,代码实现:

class Program    {        static void Main(string[] args)        {            Func
mySum1 = SumNumbers; Func
mySum2 = SumNumbers; Func
mySum3 = SumNumbers; AsyncCallback callback = c => Console.WriteLine("线程ID:{0},回调函数执行:{1}",Thread.CurrentThread.ManagedThreadId,c.AsyncState); IAsyncResult result1= mySum1.BeginInvoke(10000, callback, "第一个异步"); IAsyncResult result2= mySum2.BeginInvoke(10000, callback, "第二个异步"); IAsyncResult result3= mySum3.BeginInvoke(10000, callback, "第三个异步"); //异步等待方式1:使用EndInvoke int asyc1 = mySum1.EndInvoke(result1); Console.WriteLine("第一个异步已经执行完成,结果:{0}",asyc1); //异步等待方式2:使用AsyncWaitHandle.WaitOne,参数-1表示一直等待到执行完成 if (result2.AsyncWaitHandle.WaitOne(-1)) { Console.WriteLine("第二个异步执行完成"); } //异步等待方式3:使用IsCompleted判断 while (!result3.IsCompleted) { Console.WriteLine("第三个异步还在执行中...."); Thread.Sleep(300); } Console.WriteLine("第三个异步执行完成"); Console.ReadKey(); } public static int SumNumbers(int count) { int sum = 0; for (int i = 0; i < count; i++) { sum += i; } Thread.Sleep(3000); return sum; } }

 

 

2. 代码执行结果:

 

 

C# -- 使用委托 delegate 执行异步操作

委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。 与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。

委托的类型由委托的名称定义。

1. 使用委托异步执行方法

class Program    {        public delegate void myWorking(string s);        static void Main(string[] args)        {            Console.WriteLine("主线程开始....线程ID:{0}", Thread.CurrentThread.ManagedThreadId);            myWorking myWork1 = new myWorking(w1 => Working(w1));            myWorking myWork2 = new myWorking(w2 => Working(w2));            myWorking myWork3 = new myWorking(w3 => Working(w3));            myWorking myWork4 = new myWorking(w4 => Working(w4));            myWorking myWork5 = new myWorking(w5 => Working(w5));                        //回调函数            AsyncCallback callback=new AsyncCallback(s=>Console.WriteLine("执行完成,线程ID:{0}",Thread.CurrentThread.ManagedThreadId));            //BeginInvoke异步执行,会新启动其他线程去执行代码            myWork1.BeginInvoke("唱歌", callback,null);            myWork2.BeginInvoke("写代码", callback, null);            myWork3.BeginInvoke("查资料", callback, null);            myWork4.BeginInvoke("交作业", callback, null);            myWork5.BeginInvoke("检查", callback, null);            Console.WriteLine("主线程结束....线程ID:{0}", Thread.CurrentThread.ManagedThreadId);            Console.ReadKey();        }        private static void Working(string strWork)        {            Console.WriteLine(strWork+".....线程ID:{0}",Thread.CurrentThread.ManagedThreadId);            Thread.Sleep(3000);        }    }

2. 执行结果:

 

 

JavaScript -- 原型:prototype的使用

在 JavaScript 中,prototype 是函数的一个属性,同时也是由构造函数创建的对象的一个属性。 函数的原型为对象。 它主要在函数用作构造函数时使用。

可以使用 prototype 属性向对象添加属性和方法,甚至于已创建的对象也是如此。

1. 举例:

   
Document

2. 运行结果:

 

 

 
 

 1、执行多条SQL语句,实现数据库事务

 2、执行一条计算查询结果语句,返回查询结果(object)

 3、执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )

 4、执行查询语句,返回DataTable

 5、执行查询语句,返回DataSet

 6、执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )

 7、执行存储过程,带参数

 8、构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)

 9、执行存储过程,返回影响的行数

10、创建 SqlCommand 对象实例(用来返回一个整数值)

using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.SqlClient;using System.Configuration;using System.Data.Common;using System.Collections.Generic;namespace DAL{    ///     /// 数据访问抽象基础类    /// Copyright (C) 2004-2008 By LiTianPing     ///     public abstract class DbHelperSQL    {        //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.                //private const string connectionString = "Data Source=.;Initial Catalog=数据库名称;User ID=sa;Password=数据库密码";        public static string connectionString = ConfigurationManager.ConnectionStrings["Data"].ConnectionString;                     public DbHelperSQL()        {                    }        #region 公用方法        ///         /// 判断是否存在某表的某个字段        ///         /// 表名称        /// 列名称        /// 
是否存在
public static bool ColumnExists(string tableName, string columnName) { string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'"; object res = GetSingle(sql); if (res == null) { return false; } return Convert.ToInt32(res) > 0; } public static int GetMaxID(string FieldName, string TableName) { string strsql = "select max(" + FieldName + ")+1 from " + TableName; object obj = GetSingle(strsql); if (obj == null) { return 1; } else { return int.Parse(obj.ToString()); } } public static bool Exists(string strSql) { object obj = GetSingle(strSql); int cmdresult; if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { cmdresult = 0; } else { cmdresult = int.Parse(obj.ToString()); } if (cmdresult == 0) { return false; } else { return true; } } /// /// 表是否存在 /// /// ///
public static bool TabExists(string TableName) { string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1"; //string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')"; object obj = GetSingle(strsql); int cmdresult; if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { cmdresult = 0; } else { cmdresult = int.Parse(obj.ToString()); } if (cmdresult == 0) { return false; } else { return true; } } public static bool Exists(string strSql, params SqlParameter[] cmdParms) { object obj = GetSingle(strSql, cmdParms); int cmdresult; if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { cmdresult = 0; } else { cmdresult = int.Parse(obj.ToString()); } if (cmdresult == 0) { return false; } else { return true; } } #endregion #region 执行简单SQL语句 /// /// 执行SQL语句,返回影响的记录数 /// /// SQL语句 ///
影响的记录数
public static int ExecuteSql(string SQLString) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw e; } } } } public static int ExecuteSqlByTime(string SQLString, int Times) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { try { connection.Open(); cmd.CommandTimeout = Times; int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw e; } } } } /// /// 执行多条SQL语句,实现数据库事务。 /// /// 多条SQL语句 public static int ExecuteSqlTran(List
SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; SqlTransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { int count = 0; for (int n = 0; n < SQLStringList.Count; n++) { string strsql = SQLStringList[n]; if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; count += cmd.ExecuteNonQuery(); } } tx.Commit(); return count; } catch { tx.Rollback(); return 0; } } } ///
/// 执行带一个存储过程参数的的SQL语句。 /// ///
SQL语句 ///
参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加 ///
影响的记录数
public static int ExecuteSql(string SQLString, string content) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(SQLString, connection); System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText); myParameter.Value = content; cmd.Parameters.Add(myParameter); try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SqlClient.SqlException e) { throw e; } finally { cmd.Dispose(); connection.Close(); } } } ///
/// 执行带一个存储过程参数的的SQL语句。 /// ///
SQL语句 ///
参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加 ///
影响的记录数
public static object ExecuteSqlGet(string SQLString, string content) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(SQLString, connection); System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText); myParameter.Value = content; cmd.Parameters.Add(myParameter); try { connection.Open(); object obj = cmd.ExecuteScalar(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } catch (System.Data.SqlClient.SqlException e) { throw e; } finally { cmd.Dispose(); connection.Close(); } } } ///
/// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例) /// ///
SQL语句 ///
图像字节,数据库的字段类型为image的情况 ///
影响的记录数
public static int ExecuteSqlInsertImg(string strSQL, byte[] fs) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(strSQL, connection); System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image); myParameter.Value = fs; cmd.Parameters.Add(myParameter); try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SqlClient.SqlException e) { throw e; } finally { cmd.Dispose(); connection.Close(); } } } ///
/// 执行一条计算查询结果语句,返回查询结果(object)。 /// ///
计算查询结果语句 ///
查询结果(object)
public static object GetSingle(string SQLString) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { try { connection.Open(); object obj = cmd.ExecuteScalar(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw e; } } } } public static object GetSingle(string SQLString, int Times) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { try { connection.Open(); cmd.CommandTimeout = Times; object obj = cmd.ExecuteScalar(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw e; } } } } ///
/// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ) /// ///
查询语句 ///
SqlDataReader
public static SqlDataReader ExecuteReader(string strSQL) { SqlConnection connection = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(strSQL, connection); try { connection.Open(); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return myReader; } catch (System.Data.SqlClient.SqlException e) { throw e; } } ///
/// 执行查询语句,返回DataSet /// ///
查询语句 ///
DataSet
public static DataSet Query(string SQLString) { using (SqlConnection connection = new SqlConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); SqlDataAdapter command = new SqlDataAdapter(SQLString, connection); command.Fill(ds, "ds"); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return ds; } } ///
/// 执行查询语句,返回pageDataSet /// ///
查询语句 ///
DataSet
public static DataSet pageQuery(string SQLString, int PageIndex, int PageSize) { using (SqlConnection connection = new SqlConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); SqlDataAdapter command = new SqlDataAdapter(SQLString, connection); command.Fill(ds, PageIndex, PageSize, "ds"); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return ds; } } public static DataSet Query(string SQLString, int Times) { using (SqlConnection connection = new SqlConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); SqlDataAdapter command = new SqlDataAdapter(SQLString, connection); command.SelectCommand.CommandTimeout = Times; command.Fill(ds, "ds"); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return ds; } } #endregion #region 执行带参数的SQL语句 ///
/// 执行SQL语句,返回影响的记录数 /// ///
SQL语句 ///
影响的记录数
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); int rows = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return rows; } catch (System.Data.SqlClient.SqlException e) { throw e; } } } } ///
/// 执行多条SQL语句,实现数据库事务。 /// ///
SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[]) public static void ExecuteSqlTran(Hashtable SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { SqlCommand cmd = new SqlCommand(); try { //循环 foreach (DictionaryEntry myDE in SQLStringList) { string cmdText = myDE.Key.ToString(); SqlParameter[] cmdParms = (SqlParameter[])myDE.Value; PrepareCommand(cmd, conn, trans, cmdText, cmdParms); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } trans.Commit(); } catch { trans.Rollback(); throw; } } } } ///
/// 执行多条SQL语句,实现数据库事务。 /// ///
SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[]) public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { SqlCommand cmd = new SqlCommand(); try { int indentity = 0; //循环 foreach (DictionaryEntry myDE in SQLStringList) { string cmdText = myDE.Key.ToString(); SqlParameter[] cmdParms = (SqlParameter[])myDE.Value; foreach (SqlParameter q in cmdParms) { if (q.Direction == ParameterDirection.InputOutput) { q.Value = indentity; } } PrepareCommand(cmd, conn, trans, cmdText, cmdParms); int val = cmd.ExecuteNonQuery(); foreach (SqlParameter q in cmdParms) { if (q.Direction == ParameterDirection.Output) { indentity = Convert.ToInt32(q.Value); } } cmd.Parameters.Clear(); } trans.Commit(); } catch { trans.Rollback(); throw; } } } } ///
/// 执行一条计算查询结果语句,返回查询结果(object)。 /// ///
计算查询结果语句 ///
查询结果(object)
public static object GetSingle(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); object obj = cmd.ExecuteScalar(); cmd.Parameters.Clear(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } catch (System.Data.SqlClient.SqlException e) { throw e; } } } } ///
/// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ) /// ///
查询语句 ///
SqlDataReader
public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms) { SqlConnection connection = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(); try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return myReader; } catch (System.Data.SqlClient.SqlException e) { throw e; } // finally // { // cmd.Dispose(); // connection.Close(); // } } ///
/// 执行查询语句,返回DataTable /// ///
查询语句 ///
DataTable
public static DataTable GetDataTable(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return ds.Tables[0]; } } } ///
/// 执行查询语句,返回DataSet /// ///
查询语句 ///
DataSet
public static DataSet PageQuery(string SQLString, int PageIndex, int PageSize, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds,PageIndex, PageSize, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return ds; } } } private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (SqlParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } } #endregion #region 存储过程操作 ///
/// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ) /// ///
存储过程名 ///
存储过程参数 ///
SqlDataReader
public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters) { SqlConnection connection = new SqlConnection(connectionString); SqlDataReader returnReader; connection.Open(); SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters); command.CommandType = CommandType.StoredProcedure; returnReader = command.ExecuteReader(CommandBehavior.CloseConnection); return returnReader; } ///
/// 执行存储过程 /// ///
存储过程名 ///
存储过程参数 ///
DataSet结果中的表名 ///
DataSet
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { DataSet dataSet = new DataSet(); connection.Open(); SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); sqlDA.Fill(dataSet, tableName); connection.Close(); return dataSet; } } public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times) { using (SqlConnection connection = new SqlConnection(connectionString)) { DataSet dataSet = new DataSet(); connection.Open(); SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); sqlDA.SelectCommand.CommandTimeout = Times; sqlDA.Fill(dataSet, tableName); connection.Close(); return dataSet; } } ///
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值) /// ///
数据库连接 ///
存储过程名 ///
存储过程参数 ///
SqlCommand
private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters) { SqlCommand command = new SqlCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters) { if (parameter != null) { // 检查未分配值的输出参数,将其分配以DBNull.Value. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } command.Parameters.Add(parameter); } } return command; } ///
/// 执行存储过程,返回影响的行数 /// ///
存储过程名 ///
存储过程参数 ///
影响的行数 ///
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected) { using (SqlConnection connection = new SqlConnection(connectionString)) { int result; connection.Open(); SqlCommand command = BuildIntCommand(connection, storedProcName, parameters); rowsAffected = command.ExecuteNonQuery(); result = (int)command.Parameters["ReturnValue"].Value; //Connection.Close(); return result; } } ///
/// 创建 SqlCommand 对象实例(用来返回一个整数值) /// ///
存储过程名 ///
存储过程参数 ///
SqlCommand 对象实例
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters) { SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters); command.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return command; } #endregion }}

 

 

获取控制器名称:

ViewContext.RouteData.Values["controller"].ToString();

获取Action名称:

ViewContext.RouteData.Values["action"].ToString();

获取路由参数值:

ViewContext.RouteData.Values[名称].ToString();

如:ViewContext.RouteData.Values["ID"].ToString(); 获取ID的值

 

 获取area名称

在代码中:

ControllerContext.RouteData.DataTokens["area"]

在View中:

ViewContext.RouteData.DataTokens["area"]

 

 代码如下:

var action = ViewContext.RouteData.Values["Action"].ToString().ToLower(); var controllerName = ViewContext.RouteData.Values["controller"].ToString().ToLower();var areaName = ViewContext.RouteData.DataTokens["area"].ToString().ToLower(); var modalID = Request["ModalID"];//举例,url如 edit?modalid=1

 

转载地址:http://fowvl.baihongyu.com/

你可能感兴趣的文章
Qt之信号与槽
查看>>
PDM/PLM系统授权模型的研究和应用(转载)
查看>>
Winform下的Datagrid的列风格(4)—DataGridComboBoxTableViewColumn
查看>>
上传图片 以及做成缩略图
查看>>
封装和多态
查看>>
POJ - 3041 Asteroids 【二分图匹配】
查看>>
luogu P4198 楼房重建——线段树
查看>>
使用property为类中的数据添加行为
查看>>
程序设计基础知识
查看>>
复变函数与积分变换
查看>>
12. 断点续传的原理
查看>>
C#基础:多态:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法...
查看>>
CSS 制作三角形原理剖析
查看>>
first blog
查看>>
Visifire图表
查看>>
python常用模块之paramiko与ssh
查看>>
Alpha发布——视频博客
查看>>
加载框(loading)
查看>>
Oracle 增加 修改 删除 列
查看>>
AES算法在Python中的使用
查看>>