ITOO-记录成长篇

       ITOO3.0已经入手将近三个月的时间了,想想从一开始进入提高班,当时还是一名菜鸟,做着《机房收费系统》,那时候很简单的一个小项目,硬着头皮就做完了,后来做了一个简单的《牛腩新闻发布系统》一个web小系统,再到后来的机房重构,才渐渐走上了三层的道路,加上了设计模式,还不太了解什么是.NET,C#语言有什么好处。

      接着我们就开始漫长的ITOO之路,前端普通的html+css+javascript,数据库使用的是sqlserver2008,部署服务器使用的是MicrosoftServer2008。从1.0到2.0也许我也就知道这一点了。没有任何的项目经验,在做项目之前,原型图是什么自己都搞不懂,也就知道为了敲代码而敲代码了。

       ITOO-工具篇

       在ITOO项目过程中我们还是有好多东西要学习的,svn这个工具在机房合作的时候就用到过,但是当时毕竟人少,没有出现错误。到了我们ITOO,还是继续使用svn,但是我认为svn还是有点欠缺,会有更好的工具来替代它吗?

Nuget包,通过nuget我们告别了相互拷贝DLL的时代了,一人发布,多人受用的思想,简直是起到为人民服务的宗旨,使用Nuget作为依赖项管理工具。如果你想要引用一个第三方依赖项,还需要手动从网上下载并添加到项目中的话,那你就out了。作为一个高级程序员善于利用工具, 它都提供了对依赖项的自动化管理。你只需要添加一行字符串来说明你想要使用那个类库,下载、引用就全交给管理工具来实现了。在c#世界中当然也有相应的产品,那就是Nuget,从此依赖项管理再也不是一件头痛的事情了。

Jenkins   利用Jenkins,实现持续集成。即使只有一个人工作在这个项目中,也应当编写构建脚本,应用持续集成。这样才能保证你的每一次提交都是安全的;并且将一些重复的工作自动化起来,可以解放你的大脑关注到更重要的地方去。

        最后还有一些关于禅道,Confluence,VS封装好的单元测试,这些工具我就不一一介绍了。

        ITOO-技术篇

日志  给系统中的重要功能打好LOG。想当年我们想要记录一些程序log,还要自己写一个简易的log类库。现在有很多成熟的log框架可以被c#使用。试想当你的程序部署到服务器上以后,如果没有充足的log,那么排查bug是多么的困难。服务器上又不能让你还原现场,不能调试,唯一能帮上忙的就是那些log了。当然打log也有很多学问,比如log等级设置,输出设置等,这里就不细说了。

       分布式事务机制 处理复杂逻辑。在这个系统中有很多并发操作,当时自己并不是很懂事务,使用了一些很蹩脚的方法来处理可能的数据异常。现在EF中已经封装了成熟的分布式事务机制来处理这些并发逻辑,使程序更加健壮。

       使用TDD,提高单元测试覆盖率。以前的系统中没有任何单元测试,一段简单的代码都需要启动程序手工验证。这样的反馈太耗时,并且不具备重复性。测试驱动开发能够保证代码简洁、正确,并且能快速得到反馈,保证测试覆盖率。遇到遗留代码时,也可以先添加单元测试,建立保护网,使重构更有信心。自动化部署。每次部署项目到服务器上是一个痛苦的经历,需要手动的替换项目中的某些文件,将文件复制到服务器上,终止当前服务器服务…..哪一个环节出错都是一个致命的打击。手动不仅效率低,而且极易出错。通过编写脚本实现自动化部署可以一劳永逸,和繁琐的手动操作说拜拜吧。

工作流,导入导出,cas登录和安全退出,动态建库建表,切库。都在等着我们去研究和努力。如何使用AOP来隔离业务和公共服务,虽然在系统中已经体现了,但是还是存在各种各样的问题。

        ITOO-总结篇

       这次ITOO3.0也许从内心都在想java和.NET到底有什么区别,.NET我们都学习了两年了,为什么还在学习,但是你看看下面这些东西c#自己的特性,如LINQ,委托,函数式编程等。比起不思进取的java语言,c#不知道强多少倍。java在java8版本才正式引入Lambda,而c#的LINQ早都出来多少年了。如果在进行列表操作时,你还只使用foreach,那么你太老土了。列表操作无非是filter,map,sort…而c#早为我们提供了一系列扩展方法,如Where,Select,Sort….可怜Java中只能使用Guava这种不伦不类的第三方类库来实现相应的效果,而且远没有c#的原生功能漂亮。c#既然每年都会引用那么多的特性,那么就要学习、掌握和使用。很多人一边使用着c#的老土语法,一边说自己精通c#,真让人无语。那我们真的认为C#已经没有什么可学习的了吗?

写了这么多,希望自己不要好高骛远,从基础做起,努力扎根。

时间: 2024-10-08 05:09:58

ITOO-记录成长篇的相关文章

MySQL Binlog Mixed模式记录成Row格式

概念: binlog format有三种形式:Statement.Mixed.Row,具体的信息可以自行到网上搜查. 分析(本文碰到的案例): 查看MySQL binlog format [email protected] : dba_test 02:33:39>show variables like 'binlog_format%';                                                                                

成长篇第十一期:群里小伙伴们的分享(十一)

由于最近群里面小伙伴们分享的技术,在之前基本都已经分享过了,所以本期就没有记录,希望群里的小伙伴们可以多来分享些技术哦

成长篇第六期:群里小伙伴们的分享(六)

分享1:下载苹果软件的论坛 分享2:某技术博客相关的代码规范 欢迎小伙伴们来群里分享技术哦

成长篇第四期:群里小伙伴们的分享(四)

分享1:关于string的深拷贝与浅拷贝 分享2:关于改变传输格式 分享3:关于传到后台某字符卡掉的现象 分享4:关于Request里面setHeader的方法 分享5:关于导推送证书的钥匙串 分享6:某人的博客信息分享 本周小伙伴们的分享就这么多哦,欢迎小伙伴们来群里补充哦,感谢有你们的陪伴

hihocoder [Offer收割]编程练习赛14 可疑的记录

题目3 : 可疑的记录 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi有一棵N个节点的树,编号1-N,其中1号节点是整棵树的根.他把这棵树的N-1条边记录成N-1行,每行2个整数a和b,表示a是b的父节点. 喜欢恶作剧的小Ho在小Hi的记录里加了一行两个整数,于是小Hi不得设法找出这行可疑的记录.具体来说,如果去掉某一行之后,余下N-1行按小Hi的规则(a是b的父节点)恰好能构成一棵N个节点的树,并且满足编号恰好是1-N且1号节点是根,那么被去掉的一行就被视

c++ 能够记录状态的vector

这个想法来自于数组链表,在数组链表中,数组的每一个元素对应一个指针,这个指针是下一个元素的index.用整数表示指针. 这是这个vector的源码: 1 #include <iostream> 2 using std::cout; 3 4 template <typename T> 5 class Vector 6 { 7 private: 8 int m_block,m_size,m_asize; 9 int *ip,*rip;//ip:actual->visual;rip

当时学习《鸟哥的Linux私房菜-基础学习篇》记录的点

1.当执行一个指令的时候,举例来说[ls],系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同名指令先被执行! 2.使用echo $PATH可以查看那些目录被定义了.echo 有[显示.印出]的意思,而PATH 前面加上的 $ 表示后面接的是变量. 3.shell script 是利用shell 的功能所写的一个[程序program],这个程序是使用纯文本文件,将一些shell的语法与指令(

软件工程知识点整理

1.指针和数组的区别: 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变. 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存.指针远比数组灵活,但也更危险. (1)修改内容 示例1中,字符数组a的容量是6个字符,其内容为hello\0.a的内容可以改变,如a[0]= ‘X’.指针p指向常量字符串“world”(位于静态存储区,内容为world\0),常量字符串

父母百年

自传119.在佳木斯上网写作2008年4----出城入城 2008年三月三日我写<花鸟忆出城(七古)>一段宏观调控的博爱状态:假期近水有楼台,月光皎洁自投怀.方知远水难解渴,城外野花并蒂开.东辉天使在人间,遭遇激情戏鸯鸳.阴柔阳刚尽欢乐,灯灭灯明白夜天.东居西迁看楼窗,少儿玩耍未知详.欲进受阻为守秘,水到渠成再入堂. 电影散场十二点,物资有课须紧赶.销约去家唤阿姨,回路相遇两笑脸.课间闻听来人找,深兰风衣躲屋角.喜出望外迎入怀,身容潇洒又灵巧.隔日携礼拜家慈,水果圆镜与花枝.不成敬意请收下,略