框架设计的菜鸟漫漫江湖路序列 四:江湖学艺(上)

 

▲ 点击上蓝字关注童教HSP间脑开发

季:江湖学艺(上)

君的业余时间,都花费在了何?

创业帮派项目遇难,引入技术老板人物,力挽狂澜;本人敬的并从夫拟得武艺

有人爱让追剧,有人醉心于戏游戏;

 

有人爱刷今日头条看热搜,有人一边“剁手”一边逛逛Tmall;

本节上马,语言就不复古了,转成公众话的记述文,不然怕是得拖十年才会写了。 

有人吃8时工作耗尽力气,有人吃爱恨情仇锁住自由;

话说当年,我失去游乐乐的时刻增长自身呢才4只人,美工2称为,加我及技巧极度,还有BOSS,凑和5个。

10000只人口饱受仅出8独人口,会受祥和之业余时间“值钱”起来。

 

汝将工夫因而当哪,就会合成什么的人口

就在自我闭头苦B Coding 时,短短数天, 游乐乐人士招聘速度连忙;
转各国机关已经不止建立,美工一部门,编辑一机构,策划同一单位,技术同单位。

你呢?

BOSS想法也日复一日不断演化着,项目既不止原有的计划性,上线日期为不绝于耳朝着后推移。

准备怎么用好人生碰着之第一独29天?

太神秘之,当属本挪版块负责人神秘失踪后,才新招一人口当,第一天同吃罢被午饭,第二上发现食指同时失踪了。

拿业余时间用在磨练写作上,是极其管用之个体增值方法。

由技术相当和BOSS有朋友干,说好动手数月份,大体项目多就是会见相差,所以BOSS引入技术主管人物,负责统管技术部。

有关作品,很多总人口私心有感受,就是表明不出;即使能写出来,但结构乱,无根本;再或者写出来,感觉非凡稚嫩,没有深度。

并且原来的技术分外,则改变到开发Ulolo后台管理系列。

今总计了学会做之道,以下8长达建议送给你。

艺总裁来之率先起事,就是核项目代码,并找来了种里“平日黄页”的原由:Data里德(Reade)r关闭问题。

1、 写作之材料都来自生活,“活得更加细致”,越可以写起好小说

自早就写过相同首关于Data里德(Reade)r,可以参照:DataReader不奇怪,该出手时就得了!,此文介绍了DataReader本质上之系内涵音信。

兹不流行假大空式写作,人人都生费力,没时间看虚头巴脑的物,只有真正接地气的走心的东西才可以于外人注意到。

关于Data里德(Reade)r问题,由于路里多处是Ctrl+C,Ctrl+V,批量代码生成量产,已经疏散于一一页面被。

故,想要练写作的话,首先要开一个在之明细,随身带来一个台式机或者手机上安装一个记事本,看到什么有意思的物,突发什么好的想法即刻马记下来,日积月累这个都是做之好材料。

因而技术老总的想法是再一次写SQLHelper里的SqlDataReader的返:

2、 真正好的著作不自然华丽,但得要走心

经过更写Data里德r,
将原本Data里德(Reade)r的多寡,快捷读博到一个初的容器MDataReader,然后关门链接再回。

千古说会刻画是靠这厮文笔好辞藻华丽,现在统统两样了,徒有其表的章万分麻烦吸引读者。

据此整项目代码基本不用转,当年之冬日小白仍旧照原的办法编码,继续CTRL+C+V。

兹我们依然手机看,即使30秒还扣压不有实际的始末,读者就会师把窗口关闭,所以做时更是要顾:不绕圈子,不刻意修饰,写对旁人有用之物,写会打动外人的东西。

 

3、 写作所有的窍门,其实就是三个字……

随即是当下之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;
        }

4、 学写作,就是若描绘有作品的高级感

        //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;

5、 会写作只是表层功夫,真正决定的是碰头想

            }
            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;
                }

即相当正规,有些人文笔很好,思想也比纯真,就恍如一个180cm身高的人头,看起人高马大,但实在年龄才17秋。

                ((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];
            }
        }

老二不怕是成套多问几独怎么处置,培育自己分析问题化解问题的力;

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

老三便是合多咨询多少个然后呢,作育好的想象能力。

        public void Dispose()
        {
            _MeList = null;
        }

6、 “读书破万窝下笔如暴发精明”,这词话相对没过时

        public void Close()
        {
            _MeList = null;
        }

初媒体时很两人习惯碎片化学习,平常东看一点西看一点,以为不用看呢得套到知识。

        #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;
        }

7、学做的老三单等级

        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);
        }

8、所有的书,都于疗愈

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

有的是学童当攻做后意识一个“神奇”的功能,先任最终之写作水平如何,写作这桩事带吃Ta很多幸福感。

        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()));
        }

如上8点是写作的基本原理,所谓大道至简,很多错综复杂的行最终都得归入简单的平整中。

        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());
        }

除常规的编课程内容外,我们其余启动了“21天创作练习打卡群”情势,提供教授督促学习,大神批改引导。

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

如若你愿意死磕自己,欢迎出席童教灵感写作训练营哦!

        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);
            }

            return dt;
        }

        public bool IsClosed
        {
            get { return true; }
        }

        public int RecordsAffected
        {
            get { return _RecordsAffected; }
        }

        #endregion

        #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
    }

    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 

 

由此多首稿子的读下,加上上下横前受到后的扫了多次代码,基本将缓存这块,除了不晓的,能懂的还了然了。

乃一转身,问老板需要加以什么效益?

后来大概是讲求“缓存优先级别,和止设置,及准要求定时检测并清空缓存功能”。

差不多前后按首席执行官要求,来回改了N十次等,还特意写了单winform界面来测试缓存的泰。

2天左右。。一句多吧总算交代了。

 

这会的源码,好以自之硬盘里生存档,这里顺路提供大伙下载,见识下自家这会儿底潜力:点击下载 

那段飞快时间,是求知欲太强之当儿,和技巧首席营业官的交流着,总会碰到一些未清楚的词,像“网关”,“VPN”,”DNS“,”Hosts“,”Hook”。

姑且的时节我莫知底,只好呵呵,COO以为自己驾驭,聊完后转电脑桌边第一码事就是翻开相关词,理解下是什么东东。

经持续的搜寻,看作品,这时候的慧,看了小说,仍然暴发领会不了歌词,像”VPN“,”流“,”Hook“。

下卷预告:

季:江湖学艺(下):缓存过后,技术总监给我勾勒MDataTable,不明觉厉。 

 

发表评论

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

网站地图xml地图