个人的一些技巧总结

1.在写加密类,压缩类等工具类时,因为这些工具比较通用,最好使用比特流作为数据来源和输出,即参数和return都是byte[] ,byte是最底层的信息编码方式,这样写比较通用。

2.在写加密等时,当字符串作为参数时,通过Base64String传输字符串比较稳定,当使用String时,容易发生错误。??

3.关于事件event,其实事件就是在相应的地方执行委托,事件就是委托,但是事件多了一个event关键字,其作用就是保证委托的执行调用在类内进行(俗称订阅,相当于私有,但是又可以公开以为他添加处理过程),在外部是不能调用的。

(普通委托如果设置为私有,则类外无法进行赋值,如果公有则类外可以通过实例可以直接调用该委托,而事件只想公开赋值部分,隐藏调用能力,为了解决这个问题使用event关键字,使其半公开)

其中注意:EventHandler相当于Action\Func\ 是给定的用于事件的委托类型,方便我们定义事件。  event相当于public\private\protect 表明该委托对象半公开(公开赋值,不公开调用)。

public event EventHandler Click;

(其实事件的实现机制和自动属性的实现机制类似   定义一个event ClickHandle Click;  编译后为先定义一个私有的委托实例,然后Click定义为公开set;protect get;  不过在事件中是add和remove

private delegate ClickHandler _click;

public Click{

add{ _click+=value; }

remove{_click-=value;}

}

)

//刚刚又明白一件事,事件的调用本质大概是可以按以上思路理解,但是对于事件的发布者和订阅者的概念原先理解的不够透着,有点模糊甚至颠倒了。

定义事件的地方,叫做事件的发布者(event Click),而接收通知的地方叫做订阅者,这个订阅者并不是触发这个事件(OnClick(s,e))的地方,而是我们需要触发这个事件后接收触发消息和参数的地方。

比如button1.Click+=()=>{...};此处叫做订阅者,因为当Click事件发生后,他会接到通知,然后他指定做出某些操作。

button1.Click+=(s,e)=>{};

button1.Click+=(s,e)=>{};

button1.Click+=(s,e)=>{};

为事件赋值的地方都是事件的订阅者,例如上面Click事件有三个订阅者,当事件发生时,他将事件触发的消息会告诉这三个订阅者,这三个订阅者,因为订阅了,所以才会得到通知,做出事件发生后的操作。

而事件触发,不是谁想触发就去调用Onclick方法这么简单的,触发操作OnClick在何处调用,这个是定义这个事件后,根据本事件的含义,来到指定的地方,触发。这个Onclick在该触发时调用,是事件机制的一部分,是定义事件后应该完成的,位置是根据事件含义指定的,他是事件机制、事件定义的一部分,而不是订阅者,整个事件的核心因此就成了为事件传方法的订阅者。Click+=...

class Car

{

pulic event EventHandle<CarInfo> CarArrive;

public void NewCar(string car)

{

     if(CarArrive!+=null)

     {

          carArrive(this,car);

     }

}

}

main()

{

Person p1=new Person("danny");

Person p2=new Person("Jerrny");

Person p3=new Person("Liming");

Car car=new Car();

car.CarArrive+=p1.CarArriveDo();

car.CarArrive+=p2.CarArriveDo();

car.CarArrive+=p3.CarArriveDo();

car.NewCar("ferrari");

}

如上所述,有三个人(danny\Jernny\Liming)订阅了有车到达这个事件,当NewCar被调用时,有新车到达,触发了CarArrive事件,然后这个事件被通知给三个订阅者。

Car是事件的发布者,三个Person是事件的订阅者。当事件发生时,触发事件通知给订阅者

http://blog.csdn.net/lulu_jiang/article/details/6451300 

 

4.写程序千万不要想着复制现成的代码,学着查文档、看文档(控件使用文档、类的属性方法列表),这样才能熟而生巧,掌握问题原理,最重要的是学会解决问题。

如果每次不会就百度现成代码,那碰到搜索不到的问题答案,那就不知所措了,所以,不 要 粘 代 码,学会解决问题的过程

 

5.学习东西也不是编代码越多越好,重要的是通过编写掌握它的原理及功用,如果掌握了这些,不必要去尝试熟练练习所有的东西,浪费时间,知道就可以。(比如Linq不必刻意练习所有语法,掌握原理、功用、并知道有哪些查询语法就可以)但是要花八 成 的 时 间 去 做 理 解练 习 ,熟   练  掌   握  原   理

6.拿到任务不要直接写代码,直接写是最花费时间的,容易出现设计问题和实现问题,甚至导致要反复推倒重写。先设计实现逻辑

,然后用原子程序验证知识点,最后动手,这样基本不会浪费多余的一点时间。

7.掌握一个新东西,从四个方面进行,分别考虑:功能(它能干什么)、原理(它是用什么技术原理实现的)、怎么用(它有哪些属性、方法分别作用是什么、这个东西可以实现哪些效果)、哪些场景用(以后在遇到哪些、哪类问题可以考虑本处)                         //回来补充:属性、方法、事件外,还有一个很重要的东西《特性Attribute》,在学习EF框架时,因为对insert特性默认为自增,走了不少弯路,在列的特性上应该手动设置为None,所以,掌握它有哪些特性、起到什么作用非常重要

8.为什么使用框架,框架可以减少硬编码,提高编程效率。比如Dapper\EF框架,通过使用实体映射,将使用sql的操作变成了对实体属性的操作,就类似于使用RTF格式文本编辑,如果要设置一个属性Aglin居中,将\gc插入文本,对应位置,会非常麻烦且容易出错,如果使用对应的框架和实体模型,那么只要改变属性Aglin就可以,减少许多麻烦。

9.属性的主要作用是用来暴露给调用者使用的,注意,不要习惯将属性变成全局变量的定义,多处使用到的可以通过传参调用来实现传参的,不要定义太多无用的属性

10.尽量少的new,因为创建实例是最耗费资源的,公共使用的东西,尽量保证只new一次,情况不同时,通过改变参数,保证参数改变后的有效应用,不必再次创建。例如在写页眉页脚修改时,外部只定义创建一次即可,通过赋参数,保证show的时候参数有效应用即可

11.吗卖批,一定要及时提交及时备份。这次做了次磁盘分区,然后,程序就坏了,又没有备份,还好提交了一部分,没提交的部分比较少

转载于:https://www.cnblogs.com/lbzhu/p/7654645.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
疫情居家办公系统管理系统按照操作主体分为管理员和用户。管理员的功能包括办公设备管理、部门信息管理、字典管理、公告信息管理、请假信息管理、签到信息管理、留言管理、外出报备管理、薪资管理、用户管理、公司资料管理、管理员管理。用户的功能等。该系统采用了MySQL数据库,Java语言,Spring Boot框架等技术进行编程实现。 疫情居家办公系统管理系统可以提高疫情居家办公系统信息管理问题的解决效率,优化疫情居家办公系统信息处理流程,保证疫情居家办公系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理疫情居家办公系统信息,包括外出报备管理,培训管理,签到管理,薪资管理等,可以管理公告。 外出报备管理界面,管理员在外出报备管理界面中可以对界面中显示,可以对外出报备信息的外出报备状态进行查看,可以添加新的外出报备信息等。签到管理界面,管理员在签到管理界面中查看签到种类信息,签到描述信息,新增签到信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值