




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京传智播客教育 ,呼叫中心项目开发,接口,接口相当于没有方法实现的抽象类。 public interface Flyable void Flay(); 接口方法不要public。,1、一个类只能继承自一个类,但是可以实现多个接口 2、一个抽象类中可以定义实现代码,但是接口不能定义实现代码(哪怕方法中只是一个空的括号,也是空实现)。 3、接口的多态特性、类型转换、is、as 和类基本一样。 抽象类定义的是公共的实现和能力,接口只能定义公共的能力。 接口相当于给类打一个标签,标志这个类有这种能力。 复习:接口中的方法不能声明public、private等,因为没有意义,private是类内部互相
2、调,哪儿来的类内部?接口中能声明:方法,属性(属性本质是两个方法),索引器,不能声明字段。,常用系统接口,using,实现了IDisposable接口的对象可以使用using进行资源声明,出了using的作用域以后自动调用Dispose方法。 Dispose和Close的区别:实现了IDisposable接口必须定义Dispose方法,但不一定有Close方法,很多Dispose的实现都是调用Close方法。SqlConnection Close以后还能重新Open,但是Dispose以后就不能再用。 foreach:实现了IEnumerable接口的对象都可以使用foreach进行遍历。,算
3、法复杂度(*),数据结构第一章,算法复杂度:时间复杂度、空间复杂度。在问题规模为N的时候,最差的情况下需要耗用的时间和空间(内存等)的数量级。 面试题:分析某个算法的时间复杂度、空间复杂度。 挨个门去敲时间复杂度为O(n),空间复杂度为 O(1)。 去老杨脑子查时间复杂度为 O(1) ,空间复杂度为 O(n) 没有常数,O(2*n)是错的,应该是O(n);去掉低阶,O(n*n+n)是错误的,应该是O(n*n)。数量级的概念。 分析练习:数组颠倒顺序;将int数组转换为string数组的空间复杂度、时间复杂度。,列表,ArrayList,可以看做是动态的数组。Add、Clear、Contains
4、、Count、Remove、RemoveAt、ToArray(转换,再没关系)、索引器 C#中所有的数组类型int、string等都是继承自Array类。list1.AddRange(strs) 练习:有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:奇数显示在左侧、偶数显示在右侧。比如2 7 8 3 22 9显示成7 3 9 2 8 22。更牛X的解法:排序。 集合,ArrayList、HashSet、Hashtable、Dictionary等都可以叫做集合类。实现了IEnumerable(getEnumerator()、IEnumerable的接口都可以使
5、用foreach进行遍历。,泛型,用ArrayList的麻烦的地方:数据放进去就不知道是什么类型的了;不能防止非法类型数据的放入;将ArrayList返回给其他函数,会令调用者很困惑。要区分变量、返回值类型和实际对象类型的区别。IntArrayList,StringArrayList又没完没了。 我们需要泛型的ArrayList,所以就有了List。List 除此之外并无不同,表示List中放的数据类型是int类型的,因为有声明类型时的约定,因此所有方法的参数、返回值都是确定类型的了。 案例:把分拣奇偶数的程序用泛型实现。分析算法复杂度。 从一个整数的ArrayList、List中取出最大数。
6、别用max方法。 List 实现了IEnumerable(泛型版本的IEnumerable)、ICollection (泛型版本的ICollection) 。 所有的List所有的方法也都是泛型的,范型的集合提供的方法更多,Max、Min、Sort等,讲Linq的时候会详细介绍。,Dictionary(字典) Hashtable,Key-value Pair 键值对。成语不可以重复,但是解释可以重复。 Dictionary: Add:添加,如果重复,则报错 索引器方式设置值:可以重复设置,即使不存在也没关系,如果重复则新数据覆盖旧数据 ContainsKey,判断是否存在这个Key 练习:火星
7、文翻译器 字库 练习:拆字(别和火星文的代码混在一起)。spit( ),str0key,str.SubString(1)value, Dictionary。 练习:计算字符串中每种字符出现的次数(面试题)。“Welcome to Chinaworld”,不区分大小写,打印“W2”“e 2”“o 3” (常考)Dictionary的非泛型对应的是Hashtable;ListArrayList,Dictionary揭秘,ASP.NET 程序员天天要打交道的 Application、Cache、Session、Request.Params等均由 Dictionary /Hashtable 实现。数据
8、库中的索引也是相似的原理。 自己动手写Dictionary 。Dictionary性能测试(做火星文翻译200次)。为什么速度这么快? 查字典为什么能这么快?目录中记录了每个汉字的页码,查找的时候先看汉字的页码,再翻到指定的页就可以非常快速的找到词条了 Dictionary中有一个存储键值对的区域,采用一个固定算法(散列算法,非常快,可以认为时间复杂度为O(1) )根据key来计算这个kvp存放的地址,计算key的值的键值对应该存储的地址,将键值对放入指定的地址即可。查找的时候首先计算key的地址,就可以找到数据了。根据key找房间号,而不是逐个房间找。(*),其他集合类(*),HashSet
9、:不能盛放重复的数据,重复的数据只保留一份。Add(T value)添加元素;Contains(T value)判断是否存在元素,HashSet使用了和Dictionary类似的算法,因此Contains方法效率非常高,时间复杂度为O(1)。 面试题:取出整数数组中不重复数据的个数,30,31,99,38,31,99,50。 面试题:现有110共10个整数,已随机放入一个有8个元素的数组a8。要求找出没有被放入数组的那2个数。注意:程序不用实现自然数随机放入数组的过程,测试数据9,8,5,3,1,10,2,7。 (*)Stack,栈,先入后出,Push(压栈)、Pop(出栈)。 (*)Queu
10、e,队列,先入先出:Enqueue(入队)、Dequeue(出队),根据简历编写参考看重点,这个项目尽力避免讲太多WinForm特有的东西。不用把这个项目本身直接写到简历中,而是把功能组合到其他项目中。 1)三层架构,代码生成器 2)系统用户管理,用户的密码以md5散列值的形式保存在数据库中,这样哪怕是数据库管理员也无法查看用户的密码。 3)客户资料管理。使用NPOI实现从Excel文件中批量导入客户资料,还可以将客户资料导出到Excel文件。 4)各地分店每天将当天新增的客户资料以Excel文件的形式上传到总公司服务器,呼叫中心使用Quartz.Net进行定时任务,每天凌晨2点自动去服务器下
11、载分店上传的Excel文件,然后将文件导入数据库中的客户表。为了保证下载的Excel文件没有被黑客、病毒等篡改,分店将上传的Excel文件用MD5算法计算散列值,并且把MD5文件也保存在Excel同目录下,然后总公司下载Excel文件后计算文件的MD5值与服务器上的MD5值进行比较,以确认文件是否被篡改。,根据简历编写参考看重点2,5)系统的关键运行步骤,比如用户管理、数据导出、FTP文件导入数据库等都使用Log4Net进行日志记录。 6)系统可配置性:FTP服务器的IP地址、FTP用户名密码等信息都不是在程序中写死的,完全可以由管理员在后台系统中进行配置。 7)客户资料的查询支持按照拼音检索
12、。为了提高检索速度,在用户表中增加一个“姓名拼音”字段,在用户增加、修改的时候使用Visual Studio International Pack开发包计算姓名对应的拼音,然后将姓名拼音更新到“姓名拼音”字段中。 8)客户资料的检索支持复合检索,也就是根据用户姓名、地区、购买日期、分店等信息进行多条件复合检索。 9)常见问题管理。将用户常见的问题、回答保存在系统中,并且可以动态的对常见问题进行增删改查。常见问题以树状数据保存在数据库中,这样就可以支持常见问题的无限级分类。,根据简历编写参考看重点3,10)系统内置邮件发送功能,可以给选定的一个或者多个用户发送邮件,如果给多个用户发送邮件,还可以
13、在邮件内容中加入姓名、性别等的占位符,比如“name你好,您于buydate购买了我们的productname”,这样不同的用户收到的邮件内容都有个性化的内容。 11)数据报表。RDLC。,SQLServer安全设置,SQLServer是一个没有界面的后台服务,可以通过ADO.Net连接SQLServer执行CreateTable、Update语句操作数据库,ManagementStudio是一个管理客户端,通过它连接SQLServer就可以用图形化的方式操作数据库 访问数据库必须是通过验证的,否则不安全。用ManagementStudio 以Windows身份验证方式登录数据库;在数据库根节
14、点(.SQLEXPRESS)右键属性安全性选中“SQLServer和Windows身份验证”;在数据库根节点右键重新启动;安全性登录名sa,右键属性,设置密码,注意如果“强制实施密码策略”则对密码复杂度要求高,切换到“状态”页,选择“启用”; 不建议使用SA登录,而是应该为每个数据库建单独的用户名(也需要启用SQLServer验证),这个用户名只有操作这个数据库的能力。首先在数据库根节点的安全性登录名上新建用户,然后在特定数据库的“安全性”“用户”下右键“新建用户”,引入这个用户即可,dbowner。,三层架构,复杂项目不能把SQL语句直接写到程序里,不模块化、难以维护,应该采用三层架构。通过
15、后面学习再去理解三层架构的优点,现在先吸收,再理解。当然不是所有公司都这么做,还是看公司习惯。Web开发中的三层架构也是同样的结构。 模型层Model;数据访问层DAL(Data Access Layer);业务逻辑层BLL(business logic layer )。实体类就是Model;对数据进行操作的代码写在DAL中,一般就是SQL语句,DAL只有对数据的操作,没有“如果金额大于20则不能删除”这样的逻辑;BLL调用DAL中的代码进行逻辑操作,比如“如果金额大于20则不能删除”。SQL语句一般只应该出现在DAL中。 三层:UI(界面,User Interface)、BLL、DAL。Mo
16、del是在三层之间进行数据传递的。UI层调用BLL、BLL调用DAL,数据用Model传递,UI不能直接调用DAL。,实战三层架构,获得自增字段值的两种方法:insert .; select identity、insert into .) output inserted.id values 创建Model、BLL、DAL三个文件夹。编写T_Person模型类,编写SQLHelper(复习ADO.Net),编写T_PersonDAL(int AddNew(Person model)、bool Delete(int id)、bool Update(Person model)、Person Get(
17、int id)、IEnumerable ListAll())、再编写DAL类。如果不理解可以先不管BLL,让UI直接调用DAL。更正规的做法是每层都放到单独的项目中。Model是在各层之间传递数据用的。用定做蛋糕来比喻,蛋糕的规格、文字就是Model,蛋糕师是DAL,BLL是售货员,UI是用户。 上面的命名规则、文件夹的分布只是习惯,不是定死的。BLL不是简单对DAL的一个转发,像“未审核的数据不能删除”这样的逻辑应该写到BLL中。(*)BLL、DAL中的方法一般不声明为静态的,为以后DALFactory提供扩展 三层的优点:UI层和BLL打交道,不用处理SQL语句;UI层(界面代码,就是写到Form中的代码)访问的都是强类型的对象,而不是rowage这样的东西,开发更方便,更不容易出错。一般三层的代码都是一个人写;UI层中没有复杂的代码,解耦,容易改变UI层技术。 使用三层架构实现WinForm版本的增删改查(CRUD)。 很麻烦。想想有没有什么解决方案?大体说一下实现思路。需要哪些基础知识?,自己动手写代码生成器,每次写三层的三个类的时候都重复的写,代码都差不多,所以可以用代码生成器自动生成代码(我讨厌它,无奈)。 基础知识:Path.Combine()可以进行两个路径的拼接,省得自己处理的问题;Directory.CreateDirectory()如果文件夹不存在则创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保安服务质量监控与保障手册
- 绩效考核指标全面指南
- 职业教育国际化进程
- 固体废物处理与处置教学方案
- 创新驱动下的企业数字化转型路径
- 区域中心小学餐饮配送服务体系建设规划方案探讨
- 合肥特殊疾病管理办法
- 学校三年发展规划实施成果评估与反思总结报告
- 江苏红酒仓储管理办法
- 回迁工作经费管理办法
- 广东省行业企业职业技能竞赛技术工作指引
- 浙江2025年6月高一学考模拟历史试题及答案
- 2025年计算机程序设计考试试卷及答案
- 2025年河南省中考数学真题含答案
- 人力中介公司管理制度
- 抗精神病药氯丙嗪讲课件
- 2025人教英语初中八年级下册期末测试卷(含答案)
- 燃气入户回访管理制度
- 燃气公司计量管理制度
- 综合与实践 白昼时长规律的探究 同步练习(含答案)人教版七年级数学下册
- 2025年山西烟草专卖局考试题库带答案分析试卷及答案
评论
0/150
提交评论