复习:操作系统:文件
Java和C#都提供了文件操作相关的类库,名称空间都命名为IO。
PS:这是和JavaScript在功能上最大的不同,也是前端需要node.js的原因
当我们对文件进行读写操作的时候,注意我们是对文件进行了某种程度的“占有”的,即:不允许其他线程/进程对文件进行操作。比如:
允许不允许是通过“锁(lock)”机制实现的。
这种“允许不允许”“加锁不解锁”都是由操作系统完成的,不需要我们应用开发人员操心。
但是,我们要做一件事,而且千万不能忘记:
告诉操作系统,我们的活干完了。
让操作系统解锁(又被称之为:释放/清理资源、关闭流/连接)
否则,@想一想@:会出现什么情况?
文件一直被独占,其他进程/线程无法访问,只有等待……等到天荒地老啊,同学们!
而且一般情况都不会直接报错,报错信息只能通过想要操作该文件的第三方反馈(被占用无法操作/等得太久超时timeout)
为了解决这个问题,
让相关I/O类实现他们,然后采取一些特定语法(C#的using()和Java的try())帮助开发人员记得释放资源……
因为缓冲机制的存在,有时候我们还是需要手动的把缓冲区里的数据“冲”到目标文件/内存中。
Java和C#首先提供了流(Stream)对象,用于传输数据。
然后在Stream中提供flush()方法,确保清空缓冲区内容。
有时候,如果忘记flush()方法,会导致文件未能接收到全部数据,也是一个很容易出bug的地方。
深入学习了对象之后,大家对序列化应该有了更深的认识。
#常见面试题:为什么需要序列化?
最典型的情形:
序列化的方式方法很多,Java和C#都提供了内置的序列化机制。
也可以通过实现接口,实现自定义的序列化方法:
因为我们项目有生成验证码的功能,需要绘图……
不管是使用绘图软件,还是代码控制,在计算机上绘制的图片的工具/过程大致都是一样的:
windows绘图板演示:
坐标一般都是以左上角为原点
最后是将上述内容转化成各种相应的图片格式。
多快好省!前端后端,线上线下,名师精讲
更多了解 加: