国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

看我如何快速學習.Net(高可用數據采集平臺)

2019-11-17 02:38:36
字體:
來源:轉載
供稿:網友

看我如何快速學習.Net(高可用數據采集平臺)

最近文章:高可用數據采集平臺(如何玩轉3門語言php+.net+aauto)、高并發數據采集的架構應用(Redis的應用)

項目文檔:關鍵詞匹配項目深入研究(二)- 分表思想的引入

吐槽:本人也是非常討厭拿來主義的,有些培訓每個細節都提到過,主管還找我要實際案例,而不是去安排合適的人去做這件事情,有點過于拿來主義了,有點擔心。

好消息的是:高并發數據采集的架構應用(Redis的應用)團隊已經實現了,不過有部分代碼還是我寫的,值得喝彩下,說明團隊的能力還是不錯的。

最近有時間,我也是用.net完成高可用數據采集平臺(如何玩轉3門語言php+.net+aauto)服務的編碼工作。

正文開始

要想快速學習某一件事情,我們就得必須做好規劃。

首先我們先來分析下要實現該項目需要哪些方面的技術,我們從哪里開始分析呢,當然有系統分析師幫你做啦!

所需的技術

1. Microsoft Studio 2010 IDE以及.Net Framework基礎知識的了解

2. 如何利用C#創建服務,服務安裝以及卸載

3. SQLite的基礎應用以及C#如何使用SQLite

4. C#定時器的應用

5. C#的多線程應用以及線程池的應用

6. 操作系統信號量,互斥同步鎖概念以及C#如何使用信號量、互斥同步鎖

7. C#文件操作,ini配置文件讀取技術

8. C# WEB API的調用,以及異步處理知識和C# TASK的了解應用

9. 數據傳輸解析技術,以及C#如何解析JSON

10. 其它常用應用,比如DataSet、DataTable、DataRow、Dictionary、List、KeyValuePair、String等

這些點看起來好恐怖,要想做好應用這些只是小小的一部分,但相對于菜鳥或者學生們就等于天書了,但是我只有一個星期的事情。

只要我們有目的去做事,任何事都不會有阻礙,廢話少說,等下閑我啰嗦了。

1. Microsoft Studio 2010 IDE以及.Net Framework基礎知識的了解

這點我竟然列為了重點,有些人有可能對這點不重視,但是我相信很多有經驗的人都會同我一樣非常重視這點。

Microsoft Studio 2010 IDE都不用說了,這個大家都是專家,我為什么會選擇博客園寫文章,是因為我在上學的時候看了一本博客園出版的書,講的是設計模式的應用,覺得非常的不錯,當時博客園是.Net技術平臺的佼佼者。

Microsoft Studio 2010 IDE最主要的一點,就是選擇框架,選擇項目適合的框架。

.Net Framework 主要也是注意下為什么有那么多版本,了解下他們互相是否有關系,比如從2.0升到4.0是否能夠平穩的過渡。

2. 如何利用C#創建服務,服務安裝以及卸載

我也是看了一篇博客而學來的,非常不錯,我也把地址貼出來:http://www.survivalescaperooms.com/aierong/archive/2012/05/28/2521409.html

我也是主要用了(a) 利用.net框架類ServiceBase,步驟參考上面博客的地址:安裝的時候注意下選擇好對應版本的installutil。

代碼貼出來

public partial class MainService : ServiceBase    {        readonly System.Timers.Timer _timer_request;        readonly System.Timers.Timer _timer_upload;               WorkPRocess work = new WorkProcess(10);               public MainService()        {            InitializeComponent();            //install db table            TaskModel.install();            _timer_upload  = _timer_request = new System.Timers.Timer(5000)            {                AutoReset = true,                Enabled = true            };            _timer_request.Elapsed += delegate(object sender, ElapsedEventArgs e)            {                Logger.log("Start Request Data From Api");                try                {                    TaskResponse response = TaskFactory.createFromApi();                    TaskModel.save(response);                }                catch (Exception ex)                {                    Logger.error(ex.Message);                }                Logger.log("End Request Data From Api");            };            _timer_upload.Elapsed += delegate(object sender, ElapsedEventArgs e)            {                Logger.log("Start Upload Data To Api");                try                {                    if (!work.wait())                    {                        work.doing();                    }                }                catch (Exception ex)                {                    Logger.error(ex.Message);                }                Logger.log("End Upload Data To Api");                           };                 }        protected override void OnStart(string[] args)        {            _timer_request.Enabled = true;            _timer_upload.Enabled = true;          }        protected override void OnStop()        {            _timer_request.Enabled = false;            _timer_upload.Enabled = false;        }    }

3. SQLite的基礎應用以及C#如何使用SQLite

也是一樣,有博客就是好,推薦代碼直接拷貝一份過來。http://www.survivalescaperooms.com/OnlyVersion/p/3746086.html

我也貼個相對精簡的吧。

class DB    {        /// <summary>                /// 獲得連接對象                /// </summary>             /// <returns>SQLiteConnection</returns>               public static SQLiteConnection GetSQLiteConnection(){            string str = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);            var con = new SQLiteConnection("Data Source=" + str + @"/" + "DataBase" + @"/" + "InfoServiceDb.db");            return con;              }        /// <summary>        /// 準備操作命令參數        /// </summary>        /// <param name="cmd">SQLiteCommand</param>        /// <param name="conn">SQLiteConnection</param>        /// <param name="cmdText">Sql命令文本</param>        /// <param name="data">參數數組</param>        private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, Dictionary<String, String> data)        {            if (conn.State != ConnectionState.Open)                conn.Open();            cmd.Parameters.Clear();            cmd.Connection = conn;            cmd.CommandText = cmdText;            cmd.CommandType = CommandType.Text;            cmd.CommandTimeout = 30;            if (data != null && data.Count >= 1)            {                foreach (KeyValuePair<String, String> val in data)                {                    cmd.Parameters.AddWithValue(val.Key, val.Value);                }            }        }        /// <summary>        /// 查詢,返回DataSet        /// </summary>        /// <param name="cmdText">Sql命令文本</param>        /// <param name="data">參數數組</param>        /// <returns>DataSet</returns>        public static DataSet ExecuteDataset(string cmdText, Dictionary<string, string> data)        {            var ds = new DataSet();            using (SQLiteConnection connection = GetSQLiteConnection())            {                var command = new SQLiteCommand();                PrepareCommand(command, connection, cmdText, data);                var da = new SQLiteDataAdapter(command);                da.Fill(ds);            }            return ds;        }        /// <summary>        /// 查詢,返回DataTable        /// </summary>        /// <param name="cmdText">Sql命令文本</param>        /// <param name="data">參數數組</param>        /// <returns>DataTable</returns>        public static DataTable ExecuteDataTable(string cmdText, Dictionary<string, string> data)        {            var dt = new DataTable();            using (SQLiteConnection connection = GetSQLiteConnection())            {                var command = new SQLiteCommand();                PrepareCommand(command, connection, cmdText, data);                SQLiteDataReader reader = command.ExecuteReader();                dt.Load(reader);            }            return dt;        }        /// <summary>        /// 返回一行數據        /// </summary>        /// <param name="cmdText">Sql命令文本</param>        /// <param name="data">參數數組</param>        /// <returns>DataRow</returns>        public static DataRow ExecuteDataRow(string cmdText, Dictionary<string, string> data)        {            DataSet ds = ExecuteDataset(cmdText, data);            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)                return ds.Tables[0].Rows[0];            return null;        }        /// <summary>        /// 執行數據庫操作        /// </summary>        /// <param name="cmdText">Sql命令文本</param>        /// <param name="data">傳入的參數</param>        /// <returns>返回受影響的行數</returns>        public static int ExecuteNonQuery(string cmdText, Dictionary<string, string> data)        {            using (SQLiteConnection connection = GetSQLiteConnection())            {                var command = new SQLiteCommand();                PrepareCommand(command, connection, cmdText, data);                return command.ExecuteNonQuery();            }        }        /// <summary>        /// 返回SqlDataReader對象        /// </
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西和县| 桦川县| 图们市| 岳普湖县| 出国| 昌邑市| 顺昌县| 江油市| 盖州市| 罗山县| 玉屏| 长子县| 惠水县| 民乐县| 江安县| 武城县| 密云县| 西安市| 当阳市| 台南市| 措勤县| 津市市| 房山区| 张家口市| 横峰县| 南阳市| 天柱县| 延长县| 富平县| 丹巴县| 雷山县| 仙桃市| 临湘市| 建昌县| 垦利县| 通榆县| 云林县| 马边| 白玉县| 达日县| 宝山区|