Java帝国之风云再起

IO大臣这些年来和线程大臣斗,和XML大臣争,和JDBC大臣抢,发现争来争去、抢来抢去不过是皇上的棋子而已,实在是没什么意思。

他心灰意冷,称病告假,赋闲在家。

如今在家里养养花草,养养小动物,也挺悠闲的。

这一日IO大臣正在拾掇一个名贵的盆景,下人通报有乡下亲戚来访。 IO大臣心想估计又是哪个八竿子打不着的亲戚来借钱了,送几两银子打发了算了。 

可是下人说来者是一个小伙子,仪表堂堂,衣帽干净,不是一个穷光蛋,转念一想,反正闲着没事,了解下民间疾苦还是不错滴嘛! 于是吩咐让他在书房召见。

小伙子一见到IO大臣,立刻迎上前去行礼,自报家门说:“大人,小人名叫李忠,也是您老老家XXXX地方的人,大人为Java帝国建了这么多的功业,功勋卓著,家乡人都以大人您为荣啊,已经打算为您立一个石碑了!”

IO大臣微微点头,马屁拍得太多了,都没有感觉了,看到桌子上不菲的礼品,心想还是切入正题吧。

“小李,此次来京城有何贵干?”

小李说:“小的不才,只考中了秀才,一直在老家靠写Java程序为生,最近小人打算写一个MVC的框架,方便家乡的人开发Web程序,但是发现Java中缺失了一个重要的功能,进行不下去了!”

能写框架 ? 看来这位秀才有两把刷子。

“缺了什么功能啊?” 

“大人,我们家乡的人在写Web程序的时候,经常需要把一个URL和一个Java类/方法关联起来,比如http://localhost:8080/hello, 对于/hello这个URI,大家希望由HelloWorld这个Java类来执行,对于http://localhost:8080/add, 大家希望由Calculator这个类的add()方法来执行。” 说完小李抬头看了一眼。

IO大臣点头表示理解。

“为了实现这样的功能,我们得写不少重复的代码,小人就想,要不我写个简单的MVC框架,把HTTP请求封装起来,通过配置文件的方式让大家把一个URL和Java类关联起来,这样就省了好多事情了。比如像下面这样”

0?wx_fmt=jpeg

0?wx_fmt=jpeg

IO大臣也是经历过大风大浪的老手,他马上就明白了,这是一个不错的办法啊,当你在浏览器中输入http://xxxxxx/add?num1=10&num2=20的时候, 这个框架就可以把HTTP请求封装起来,然后读取这个XML的配置文件(哼,该死的XML老头儿), 就知道由Calculator这个类来处理,可以new 出来一个Calculator的对象,调用add方法即可,嗯,还需要想办法把num1,num2这样的参数给传入进来,最好也弄点配置....  IO大臣越想越深入。

“大人?” 小李看到IO大臣入神了,轻声提醒。 

“哦......”,IO大臣从沉思中惊醒, “后生可畏啊,小李子,你这个想法非常不错,你刚才说Java缺少了一个什么重要功能来着?”

“是这样的,大人,我们不是要读取这个XML配置文件,然后去创建那个Calculator类的对象吗?”

“你直接new出来不就行了吗?”

“大人请注意,我的框架想创建这个类的实例是在运行时,不是在编译时,我只知道类的名字,这只是一个字符串,没法new啊!

IO大臣立刻明白了,小李子的MVC框架是事先写好的,事先并不知道用户要创建一个Calculator对象,还是一个HelloWorld对象,他只知道一个字符串的类名,没法创建类的实例出来。

即使创建出这个Calculator对象,还需要从执行相关的方法,但是MVC框架只知道方法名称,这也是个字符串("add"),怎么去执行啊?

“那你怎么不向当地的官府反映下? ”

“这个......”

“有话直说!”

“现在大人您不怎么上朝,在家修身养性,可能不知道朝中局势大变,我们家族的人,只要是和大人您有点关联,都会受到打压,我去官府反映了,可是被一顿棍棒给打了出来啊。”

IO大臣勃然大怒,这还了得,老夫这才休息了多久?就被人欺负成这个样子!

冷静下来一想,不怪别人,还是自己疏忽了。

他叫来幕僚InputReader,支开无关闲杂人等(上次的间谍事件让人心有余悸)。

InputReader了解了情况,沉思片刻说:

“概括起来有这么几层意思:

1.要能通过一个类的名称(字符串)来创建对象;

2.根据方法名称(字符串)来执行方法;

3.还应该通过一个类的名称来查看这个类有哪些字段,哪些方法。

所有的这些都应该发生在运行时, 这种能力确实是我们帝国所欠缺的。”

小李听到InputReader的总结,心里非常佩服。

IO大臣说:“这其实就是程序在运行时检视自己或他人的一个能力啊! 我们叫他反射(Reflection)怎么样? 对了,Python王国,Ruby王国有这样得东西吗?” 

IO大臣这么问,其实也是为了增加一个砝码,人家有的东西,我们Java也要有。

“他们都是动态语言,在运行时给一个对象添加方法、修改方法都不在话下,更不用说反射了!” InputReader说道。 

“那就这样,明日早朝,我给皇上上一个奏章。争取把这个反射给实现了!”

InputReader 看到一直以来精神萎靡的IO大臣精神抖擞,准备再战,自己的升官梦又死灰复燃,激动万分:“大人,我来起草奏章吧。”

IO大臣说:“嗯,你一定要把反射的API给定义好。”

“遵命!”

到了晚上,InputReader拿出了一个初步的版本:

0?wx_fmt=jpeg

三人一直研究到半夜,又增加了很多新的内容,例如获取接口、获取父类..... 总而言之,几乎所有的信息都可以通过反射来得到。

第二天早朝,IO大臣在XML大臣,线程大臣,JDBC大臣狐疑的目光中走入了大殿,心说这老头儿怎么又开始活跃起来了呢?

IO大臣向死对头们不屑地瞥了一眼,便开始向皇上慷慨陈词,陈诉反射的种种好处,顺便向皇上大倒苦水,添油加醋地说自己家族的人被欺凌的经历,还不失时机地表达了老骥伏枥志在千里,还能再效忠陛下的决心。

皇上听到IO大臣的遭遇,大为同情,差点就被说动了,但转念一想,朝中各个大臣的均势已经维持了一段时间,如果IO大臣东山再起,平衡势必要被打破。

他狠了狠心,说道:“爱卿年事已高,就不要再折腾了,朝中任务繁忙,万一有点闪失朕也无法向天下交代啊,还是在家中颐养天年吧!”

IO大臣心里一阵悲苦, 完了,彻底完了,不过无论如何我得留一个后手,他说道:“陛下,这个反射的功能对框架而言意义重大,Java帝国想繁荣昌盛,也离不开各种总各样框架的支持,另外别的王国都有这个功能,陛下不可不察。臣手下的InputReader,深谋远虑,可以承担此等重任。”

别的王国也有这个功能!皇上彻底被打动,看到IO大臣悲催的脸色,也有些于心不忍,他说道:“准奏,由InputReader任Reflection大臣!”

IO大臣心中一阵宽慰,他的的那些死敌们本来想反对,但是对这个所谓的反射确实不了解,只能听之任之了。

三个月后,Java Reflection正式推出,可以在运行时对一个类进行各种操作:查看字段/方法,设置字段/方法的权限,创建对象,调用指定的方法。所有这些,都可以通过“名称”来进行。

Java Reflection是JDK中一项非常基础、非常重要的技术,臣民们大为喜欢,利用它实现了各种各样的框架,如Spring,Hibernate, Struts,Java帝国空前繁荣。

ps:Java帝国系列已经写了很多,Java SE的主要知识点已经覆盖,关于Java,还想听的知识点?欢迎给我留言!

推荐阅读:

Java:一个帝国的诞生

我是一个Java Class

持久化:Java帝国反击战

Java帝国之消息队列

Java帝国之动态代理

Java注解是怎么成功上位的

Java帝国之泛型

JDBC的诞生

JSP:一个装配工的没落

(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017文章精华


码农翻身

用故事讲述技术

0.jpeg

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值