框架设计之菜鸟漫漫江湖路类别 四:宗教活动江湖学艺(上)

 

文/月汐玉 原创作品,版权全部,禁止转发

四:江湖学艺(上)

*
*

创业黑道项目遇难,引入技术老董人物,力挽狂澜;本身敬之并从其学得武艺(Martial arts)

楔子

 

  他说,只要带上永远那些词,那背后的承诺,就必将不会达成。

本节启幕,语言就不复古了,转成MAZDA话的记述文,不然怕是得拖十年才能写完。 

  1

话说当年,小编去游乐乐的时候拉长笔者也才4位,美术工作2名,加作者和技艺万分,还有BOSS,凑和四个。

  笔者尚未试过这样去欣赏一个人,脑子里、日记里,全是一人的名字。

 

  罗子正。

就在本身闭头苦B Coding 时,短短数日, 游乐乐人士招聘速度快捷;
一须臾各机构已连发建立,美术工作一部门,编辑一单位,策划一部门,技术一部门。

  听别人说他父母给她取那个名字是梦想他变成1个外市点都很正的人,嗯,包涵长相。

BOSS想法也日复5日不断演化中,项目已超越原有的陈设,上线日期也不止未来延迟。

  事实上他也很对得起父母的企盼,成绩永远在年级前十,而脸颊,是全校公认的男神。

最神秘的,当属原活动版块监护人神秘失踪后,才新招一个人承担,第③天一起吃过中午饭,第2天发现人又失踪了。

  小编是到高级中学快毕业才认识他的。高校开晚会,他抱着一把吉他就上了台。

由于技术十三分和BOSS有朋友关系,说好帮手数月,大体项目差不离就会相差,所以BOSS引入技术主任人物,负责统一管理技术部。

  淡白紫色的凳子被放在舞西安心,他坐下来,聚光灯打在他随身,好像满世界的光都打在了她身上。

而且原来的技巧尤其,则转到开发Ulolo后台管理类别。

  他低头调试吉他弦,修长白皙的指头在弦上律动。

技巧组长来的首先件事,便是审查批准项目代码,并找出了花色里“平日黄页”的原委:DataReader关闭难点。

  旁边有罗子正的小迷妹,笔者听到他和团结的对象惊叹:“好想成为那把吉他啊!”

小编早已写过一篇有关DataReader,能够参考:DataReader不荒谬,该入手时就得了!,此文介绍了DataReader本质上的连带内涵消息。

  小编差不离笑出声来,那话就如言情剧一样夸张。其实以前听过罗子正的名字,也了然她是哪个人,但直接对她无感。长得帅的人多了去了,作者总不能够见一个喜爱三个吗?

至于DataReader难题,由于品种里多处是Ctrl+C,Ctrl+V,批量代码生成量产,已经疏散在挨家挨户页面中。

  后来干什么喜欢他呢?

从而技术老总的想法是重写SQLHelper里的SqlDataReader的回到:

  大致是因为他唱歌的时候,像极了那么些作者欣赏的饭馆驻场明星,又或许是因为他投降的时候,刚好是能让本身心动角度。总之,笔者开端在人流中摸索他的身形,开头留心他的自由化。

透过重写Data里德r,
将原本DataReader的数据,急迅读取到二个新的容器MDataReader,然后倒闭链接再再次回到。

  2

故此完全项目代码基本不用改动,当年的早秋小白依旧按原来的法门编码,继续CT卡宴L+C+V。

  升旗的时候,我们班和她们班中间隔了多个班,可他很高,小编如若往他们班那里看去,就能来看总是自信飞扬的他的笑颜。

 

  从那现在,各类星期五晚上的升旗活动,就成了自笔者最愿意的移位。

那是那时候的MDataReader的贯彻代码:

  第三回和他讲上话,是去福利院做义务工作。

 

  笔者有私心,我是因为观察他是管理员才报名的。

宗教活动 1宗教活动 2MDataReader 实现

  这天去了多少个哥们和八个女人。三个女孩子分别是自小编,和他女对象。

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
namespace UloloDataFramework.Core.Data
{
    public class MDataReader : System.Data.IDataReader, System.Collections.IEnumerable
    {
        public static implicit operator MDataReader(System.Data.SqlClient.SqlDataReader _SourceDataReader)
        {
            MDataReader mrdr = new MDataReader();
            mrdr.CreateSelf(ref _SourceDataReader);
            _SourceDataReader.Close();
            _SourceDataReader.Dispose();
            return mrdr;
        }

  是的,他有女对象。

        //public static implicit operator MDataReader(System.Data.IDataReader _SourceDataReader)
        //{
        //    MDataReader mrdr = new MDataReader();
        //    mrdr.CreateSelf(ref (SqlDataReader)_SourceDataReader);
        //    _SourceDataReader.Close();
        //    _SourceDataReader.Dispose();
        //    return mrdr;
        //}

  他女对象和他真正很般配,多少人都喜欢音乐,都很有才气,学习也都很好,简直是男才女貌。

        private System.Collections.Specialized.OrderedDictionary[] _MeList;
        private int _MeListI = -1;
        private int _BaseListI = 0;

  笔者不想做令本人讨厌的事,所以尽恐怕和他保持距离。

        private bool isRead = false;
        private int _RecordsAffected = -1;
        private int _FieldCount = -1;

  刚晤面时他对自身说:“你好同学,谢谢你能来。”作者不佳意思得只知道点点头,什么话也说不出口。

        public MDataReader()
        {
        }
        public MDataReader(System.Data.IDataReader _SourceDataReader)
        {
            //MDataReader mrdr = new MDataReader();
            this.CreateSelf(ref  _SourceDataReader);
            _SourceDataReader.Close();
            _SourceDataReader.Dispose();
            //return mrdr;
        }
        public MDataReader(System.Data.SqlClient.SqlDataReader _SourceDataReader)
        {
            //MDataReader mrdr = new MDataReader();
            this.CreateSelf(ref _SourceDataReader);
            _SourceDataReader.Close();
            _SourceDataReader.Dispose();
            //return mrdr;
        }
        public void CreateSelf(ref System.Data.SqlClient.SqlDataReader _SourceDataReader)
        {
            do
            {
                if (_SourceDataReader.HasRows)
                {
                    _MeListI++;
                    System.Array.Resize<System.Collections.Specialized.OrderedDictionary>(ref _MeList, _MeListI + 1);
                    _MeList[_MeListI] = new System.Collections.Specialized.OrderedDictionary();

  到了尊敬老人院,其余人忙着陪老人拉家常,帮他们修剪指甲,都找到工作做。而小编,初来乍到何以也不懂。

                    _FieldCount = _SourceDataReader.FieldCount;
                    _RecordsAffected = _SourceDataReader.RecordsAffected;
                    for (int j = 0; _SourceDataReader.Read(); j++)
                    {
                        _MeList[_MeListI].Add(j.ToString(), new ReaderDataItemClass());
                        for (int i = 0; i < _SourceDataReader.FieldCount; i++)
                        {
                            ((ReaderDataItemClass)_MeList[_MeListI][j.ToString()]).Add(_SourceDataReader.GetName(i), _SourceDataReader[_SourceDataReader.GetName(i)]);
                        }
                    }
                }

  说实话我不怎么蒙,作者先是次来福利院,不知情是否富有尊敬老人院都这么,那里并不曾正式的工作人士,老人们睡得地点唯有一张张看上去很陈旧的板床。很破败,比起作者想象得尊敬老人院,那里实在太简陋了。

            } while (_SourceDataReader.NextResult());
        }
        public void CreateSelf(ref System.Data.IDataReader _SourceDataReader)
        {
            System.Data.SqlClient.SqlDataReader srd = (System.Data.SqlClient.SqlDataReader)_SourceDataReader;
            CreateSelf(ref srd);
            srd.Close();
            srd.Dispose();
        }
        public bool NextResult()
        {
            _BaseListI++;
            if (_BaseListI > _MeListI)
            {
                Dispose();
                return false;

  见本人无所适从,罗子正过将手上的礼品拿给外人,走到本身方今。

            }
            else
            {
                _MeList[_BaseListI – 1].Clear();
                _MeList[_BaseListI – 1] = null;
                isRead = false;
                return true;
            }
        }

  他说:“倒霉意思啊,作者忘了你是第一回来。你能够陪他们讲出口什么的,他们都很好相处的。”

        public bool Read()
        {
            try
            {
                if (!isRead)
                {
                    isRead = true;
                    return (_MeList[_BaseListI].Count == 0) ? false : true;
                }

  “那里,失业人士吗?”笔者战战兢兢地问,生怕本身说错话。

                ((ReaderDataItemClass)_MeList[_BaseListI][0]).Clear();
                _MeList[_BaseListI][0] = null;
                _MeList[_BaseListI].RemoveAt(0);
                return (_MeList[_BaseListI].Count == 0) ? false : true;
            }
            catch { return false; }
        }

  他抿嘴耸肩,一副无可奈哪里规范:“其实那里并不是真的含义上的老人院,这里只是一间没人住的工厂,那么些老一辈大多没有亲朋好友。有的有,却还不如没有。所以那里基本是没人管的,政党各样月会给部分补贴,但她们缺的不只是物质,还有心情上的寄托。大家有时会卷土重来,给他俩送一些吃的、用的,陪他们聊聊天。”

        public object this[int index]
        {
            get
            {
                return ((ReaderDataItemClass)_MeList[_BaseListI][0])[index];
            }
        }

  笔者看向老人们,聊天的时候,不管是还是不是幽默,都会笑,也有个别很不佳意思,坐在一边安静地听着。阳光洋洋洒洒的落下来,笔者蓦地认为很暖和,那种温和,是从心底传来的。

        public object this[string key]
        {
            get
            {
                return ((ReaderDataItemClass)_MeList[_BaseListI][0])[key];
            }
        }

  3

        public bool HasRows
        {
            get
            {
                return (_MeList[_BaseListI].Count == 0) ? false : true;
            }
        }

  尊敬老人院回来后,笔者和他成了朋友,他看看作者会和自笔者打招呼,笔者依然胆小得只敢点点头以作回应。

        public void Dispose()
        {
            _MeList = null;
        }

  不过笔者越来越喜爱她了,他此人就如太阳一样,走到哪个地方都会发光,而且那光是暖的,不惧攻击性的。

        public void Close()
        {
            _MeList = null;
        }

  小编在日记里2次遍写下他的名字,一笔一划,比写本身的名字还认真。

        #region IDataRecord 成员

  日子一天天过去,高等高校统招考试马上到了。

        public int FieldCount
        {
            get { return _MeList == null ? 0 : ((ReaderDataItemClass)_MeList[_BaseListI][0]).Count; }
        }

  作者毕竟鼓起勇气,打开了拉家常软件里和她的对话框,跟他说:高等学校统招考试加油!

        public bool GetBoolean(int i)
        {
            return bool.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  他甚至秒回自家:嗯,你也是啊!

        public byte GetByte(int i)
        {
            return byte.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  笔者回了个:嗯,早点睡。

        public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
        {
            return 0;
        }

  就在本人没从他回自家音信的甜蜜感中出来时,他突然打来叁个电话。

        public char GetChar(int i)
        {
            return char.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  笔者不清楚接如故不接,纠结了几秒,小编咬咬牙,依然接了。

        public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
        {
            return 0;
        }

  “喂?”作者小声的打了个招呼。

        public string GetDataTypeName(int i)
        {
            return (((ReaderDataItemClass)_MeList[_BaseListI][0])[i].GetType().Name);
        }

  “能陪自身拉家常吗?”他的响动有个别沙哑,像是哭过,又像是头痛。

        public DateTime GetDateTime(int i)
        {
            return DateTime.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  笔者不怎么想不开他:“当然可以,然而怎么了?发生什么样事了啊?”

        public decimal GetDecimal(int i)
        {
            return decimal.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  他没作答小编的题材,自顾自地问小编:“你,有爱好的人啊?”

        public double GetDouble(int i)
        {
            return double.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  小编心跳立刻漏了一拍,那短短的弹指间,小编想了重重种恐怕,他是否领略自家喜爱他的事了?他打电话给本人是或不是想告知笔者决不痴心妄想了?

        public Type GetFieldType(int i)
        {
            return (((ReaderDataItemClass)_MeList[_BaseListI][0])[i].GetType());
        }

  小编恐惧,害怕从他嘴里听到伤人的话,于是本人赶忙否认:“没有。”

        public float GetFloat(int i)
        {
            return float.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  什么人知道他只是停了停,说了句:“真好。”

        public Guid GetGuid(int i)
        {
            return new Guid((((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString()));
        }

  小编或然不知情她究竟怎么了,听语气却是很不在状态:“你生病了啊?要不急急?”

        public short GetInt16(int i)
        {
            return short.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  “记住,只要带上永远这一个词,那前面包车型客车许诺,就必将不会兑现。”说完那句话,他就挂了电话。

        public int GetInt32(int i)
        {
            return int.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  小编望着已经甘休通话页面的手提式有线电话机显示屏,久久地出神。

        public long GetInt64(int i)
        {
            return long.Parse(((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString());
        }

  4

        public string GetName(int i)
        {
            return ((ReaderDataItemClass)_MeList[_BaseListI][0]).Keys[i].ToString();

  小编很担心她,但接下去几天自个儿再也联系不到他。发新闻不回,打电话关机。

        }

  或者是因为考试不想被扰攘吧,作者只能用那样的说辞说服本身。

        public int GetOrdinal(string name)
        {
            System.Collections.ArrayList tmpList = ((ReaderDataItemClass)_MeList[_BaseListI][0]).Keys;
            return tmpList.IndexOf(name);
        }

  好不不难考完试,大家都松了一口气。三个班的坐在一起,等着班组长给大家开最终四个班会。大家互动交谈着,有聊试卷的,有聊假日的,有聊高校的。还有的因为舍不得同学,哭了四起。

        public string GetString(int i)
        {
            return ((ReaderDataItemClass)_MeList[_BaseListI][0])[i].ToString();
        }

  “哎,你们听他们说了呢?男神罗子正居然一科都没考!”大家班的一个女人像是发现什么样新陆地,一进来就公布。

        public object GetValue(int i)
        {
            return ((ReaderDataItemClass)_MeList[_BaseListI][0])[i];
        }

  “不会呢?”“明明上学那么好。”

        public int GetValues(object[] values)
        {
            for (int i = 0; i < values.Length; i++)
            {
                values[i] = ((ReaderDataItemClass)_MeList[_BaseListI][0])[i];
            }
            return values.Length;
        }

  大家都在打乱的座谈着,小编诱惑那些同学的胳膊,很着急的问:“怎么会?”

        public bool IsDBNull(int i)
        {
            return (TypeCode)((ReaderDataItemClass)_MeList[_BaseListI][0])[i] == System.TypeCode.DBNull;
        }

  她即便有点懵笔者干吗如此激动,但依旧跟自家表达到:“听他们说高等学校统招考试今天她女对象和她分开了,恐怕是因为那些啊。”

        #endregion

  高等高校统招考试前天,那不便是,他打电话给自个儿丰裕夜晚!笔者联想起这天他说的话和她的事态,早知道笔者就相应劝劝他。

        #region IDataReader 成员

  他会不会出事?不行,小编要去找他!这样想着,作者二话不说的跑出去,作者要去找她!

        public int Depth
        {
            get { return 0; }
        }

  但是当自己跑出高校门口,站在那条十字路纠结往哪些方向去时,作者才想起来,笔者有史以来不亮堂他家在何处,笔者也不领悟她会去哪儿。

        public DataTable GetSchemaTable()
        {
            DataTable dt = new DataTable();
            object[] tmpObj = null;
            for (int i = 0; i < ((ReaderDataItemClass)_MeList[_BaseListI][0]).Count – 1; i++)
            {
                dt.Columns.Add(this.GetName(i));
            }

  小编一直……找不到他。

            while (this.Read())
            {
                ((ReaderDataItemClass)_MeList[_BaseListI][0]).CopyTo(tmpObj, 0);
                dt.Rows.Add(tmpObj);
            }

  而且本人找到她又能怎么着呢?安慰他,和他告白?之后呢?小编笑了起来,小编有史以来什么都做不了,笔者找不到他,找到了本人也不敢说哪些,也转移不了他没考试那个谜底。小编帮不了他,就像是那3次次能和她精晓的机会,作者都贰遍次说服自己放任。

            return dt;
        }

  笑着笑着,作者又陡然哭了起来,笔者蹲在原地,不顾形象地放声大哭。

        public bool IsClosed
        {
            get { return true; }
        }

  幸而,因为高等高校统招考试,那一段路被权且封了,没有车也从没行人,什么人也看不到自个儿这些蠢样子。

        public int RecordsAffected
        {
            get { return _RecordsAffected; }
        }

  5

        #endregion

  后来,小编去了一所二流学校,1人在不熟悉的条件,哪个人也不认得,哪个人也凭借不了。

        #region IDataRecord 成员

  笔者起来学着积极和旁人交谈,去做志愿者,去打工。小编渐渐变得很明朗,主要的是,更有胆略了。

        public IDataReader GetData(int i)
        {
            throw new Exception(“ERR”);
        }

  再后来,笔者听别人讲她去复读了,第①年考取了海外的大学,出去留学了。

        #endregion

  小编和他再也没联系过,那串号码小编间接保存着,却向来没打通过。

        #region IEnumerable 成员

  大家都会向上,不管你愿不愿意,没有人能平素呆在原地,也未曾须求一贯呆在原地。笔者和他前行的不二法门不均等,注定会越走越远,笔者很后悔当初没有敢于一点,不过后悔没有用。小编只可以在本人后来行走的途中变得更威猛,去追求小编所想要的东西

        public IEnumerator GetEnumerator()
        {
            return new System.Data.Common.DbEnumerator(this);
        }

  就那样走吗,带着最可贵的东西,向来走、一向走……

        #endregion
    }

公众号:快阅读  luoboduwu

    class ReaderDataItemClass : System.Collections.Specialized.OrderedDictionary, System.Collections.Specialized.IOrderedDictionary
    {
        private System.Collections.ArrayList _KeyList;
        public ReaderDataItemClass()
            : base()
        {
            _KeyList = new System.Collections.ArrayList();
        }

        public new System.Collections.ArrayList Keys
        {
            get { return _KeyList; }
        }

        public new void Add(object key, object value)
        {
            _KeyList.Add(key);
            base.Add(key, value);
        }

        public new void Clear()
        {
            _KeyList.Clear();
            base.Clear();
        }

        public void Remove(int index)
        {
            _KeyList.RemoveAt(index);

            base.RemoveAt(index);
        }

    }

 

当时作者是小白,连SQLHelper望着都难找,连存款和储蓄进程的编辑,也是扔给技术尤其的,所以对技术高管的实力就很钦佩了。 

后来招了三个“副技术老总”,负责了本来的运动模块和新开发论坛模块,还有论坛的编辑器。

当自家原来项目为主落定时,前后又成功了多少个小项目,犹记得刚达成了“目地的指南”模块时,事情就生出了。

自作者稍有点闲空时,技术总裁突然让自个儿写三个缓存类:

本身苦思N小时,基于对控件的熟练程度,我晓得页面有那东东能够安装缓存:

宗教活动 3

唯独写成缓存类,那会小白的作者,除了会写个实体类,写其余类,咪咪,一时半刻找不着北,蛋疼了近时辰。。。

稍会,技术高管和BOSS开完会后出来,问作者写的什么了,作者摸了摸头,说了句无从入手。

下一场她花了点时间把缓存类的大概写了下,然后让本身看懂了再补充。

本人看了看,看到一个List<string>,就看不懂了,问技术首席营业官这么些List<T>是哪些东东。

工头只回复了多个字“泛型”,笔者并未再问,在网络寻找泛型,看了相关小说和介绍。

而且当年计算机里存档了如此一份CHM知识库文书档案,在作者闲时,总会抽空看看:

宗教活动 4 

 

因此多篇小说的读书之后,加上上下左右前中后的扫了往往代码,基本把缓存那块,除了不懂的,能懂的都懂了。

于是一转身,问COO必要加什么样效果?

后来大体是供给“缓存优先级别,和界限设置,及按必要定时检查和测试并清空缓存功用”。

大抵前后按高管供给,来回改了N十二回,还专程写了个winform界面来测试缓存的兴高采烈。

2天左右。。一句差不离也算交代了。

 

那会的源码,幸好笔者的硬盘里有存档,那里顺道提供大伙下载,见识下自身那会儿的潜力:点击下载 

那段飞速时间,是求知欲最强的时候,和技巧首席执行官的沟通中,总会碰到有些不知情的词,像“网关”,“VPN”,”DNS“,”Hosts“,”Hook”。

聊的时候作者不懂,只好呵呵,总裁以为本身精晓,聊完后回电脑桌边第①件事正是查相关词,精晓下是如杨建桥东。

通过不断的摸索,看作品,那时候的灵气,看完文章,如故有知情不了词,像”VPN“,”流“,”Hook“。

下篇预报:

四:江湖学艺(下):缓存过后,技术首席营业官让自身写MDataTable,不明觉厉。 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注