第18章 毕业(1 / 8)
毕业答辩的日子如命运的审判日,如期降临。云宝特意换上那件略显陈旧却洗得干干净净的衬衫,怀揣着紧张与憧憬,脚步微微发沉地迈进答辩教室。室内,五位评委如冷面判官般正襟危坐,他们的目光仿若冰冷的刀刃,齐刷刷地射向云宝,仿佛要将他看穿。
第一位评委推了推那副厚重的黑框眼镜,镜片后的目光带着一丝审视,尖声问道:“小伙子,都知道编程里有个多态性,那你就给我讲讲,在 Java 语言里,咋实现多态性的?还有,举个实实在在的例子,说说在实际项目里,这多态性能派上啥用场。” 云宝微微一怔,脑海中迅速检索知识,略一思索后,沉稳作答:“在 Java 里,实现多态性主要靠方法重载和方法重写。方法重载呢,就是在一个类里,好几个方法名字一样,但它们的参数不一样。打个比方,我们有个‘动物’类,里面有个‘叫’的方法。要是有‘狗’类继承了‘动物’类,‘狗’类里也有个‘叫’的方法,而且叫声和‘动物’类里的不一样,这就是方法重写。在实际项目中,比如做一个宠物管理系统,有‘猫’‘狗’‘兔子’等不同类,它们都继承自‘宠物’类,都有‘展示信息’这个方法,但展示的内容各有不同。这样,我们用一个‘宠物’类型的变量,就能调用不同子类的‘展示信息’方法,这就是多态性的应用。”
评委冷哼一声,不依不饶地追问:“哼,说起来容易,那实际项目里,多态性能让代码好维护、好扩展,到底咋做到的?你可别给我讲些空话。” 云宝深吸一口气,镇定回应:“通过多态,我们把不同子类相同的行为抽象到父类里。要是以后想加个新的宠物类,像‘仓鼠’类,我们只要在‘仓鼠’类里重写‘展示信息’方法就行,不用去改那些已经写好的、和其他宠物相关的代码。这样,代码结构更清楚,改起来、加新功能都方便。比如说,原来的宠物管理系统已经有了‘猫’和‘狗’的管理功能,现在要加‘仓鼠’的管理,我们只需要在‘仓鼠’类里按它的特点写好‘展示信息’方法,在主程序里用‘宠物’变量去调用,就能轻松实现对‘仓鼠’的管理,其他部分代码基本不用动。”
第二位评委清了清嗓子,带着几分挑剔的口吻提问:“数据库编程里,事务的 AcId 特性很关键。你给我说明白,这 AcId 到底是啥意思?再讲讲,在简单的转账场景里,怎么保证这 AcId 特性?” 云宝迅速整理思绪,认真解释:“AcId 就是原子性、一致性、隔离性和持久性。原子性就是说转账这事,要么全成,要么全不成。好比从 A 账户转 100 块到 b 账户,这一整个操作得是一个整体,不能 A 账户钱扣了,b 账户却没收到钱。一致性呢,就是转账前后,两个账户的钱加起来总数得一样。隔离性是保证同时进行的几个转账操作,不会互相干扰。比如说,A 给 b 转账的时候,c 给 d 转账的操作不能影响到 A 和 b 的转账。持久性就是一旦转账成功,这结果就得一直保存着,哪怕系统突然出问题了,转账记录也不能丢。”
评委皱着眉,质疑道:“高并发的时候,转账操作一个接一个,怎么保证隔离性,不让脏读、不可重复读这些问题出现?你可别含糊其辞。” 云宝不慌不忙,有条不紊地回答:“可以通过设置不同的事务隔离级别来解决。像用 REAd mIttEd 隔离级别,就能避免脏读,也就是一个事务只能读到其他事务已经提交的数据。要是用 REpEAtAbLE REAd 隔离级别,不光能避免脏读,还能防止不可重复读,就是一个事务多次读同一个数据,结果都是一样的。在转账操作频繁,又对数据准确性要求高的情况下,我们可以选 REpEAtAbLE REAd 隔离级别,靠数据库的锁机制,让同时进
↑返回顶部↑
温馨提示:亲爱的读者,为了避免丢失和转马,请勿依赖搜索访问,建议你收藏【顶点小说网】 m.dy208.com。我们将持续为您更新!
请勿开启浏览器阅读模式,可能将导致章节内容缺失及无法阅读下一章。