邪恶的Java帝国是怎么欺负小函数的?

电池、AA‑CAES 与抽水蓄能多目标优化调度研究(三目标:成本、峰谷差、碳排放)(Matlab代码实现) 内容概要:本文针对电池、先进绝热压缩空气储能(AA-CAES)与抽水蓄能三种储能技术,构建了一个多目标优化调度模型,旨在协同优化电力系统的运行成本、负荷峰谷差和碳排放三个关键指标。研究采用Matlab进行代码实现,建立了综合考虑各类储能系统运行特性的精细化数学模型,并通过多目标优化算法求解Pareto最优前沿,深入分析了不同优化目标间的内在权衡与博弈关系。文中系统阐述了各储能单元的数学建模方法、系统运行约束条件的设定以及多目标优化问题的规范化处理流程,最终通过详细的仿真算例验证了所提模型与方法的有效性,充分展示了该调度策略在促进新能源消纳、降低系统综合运行成本和减少碳排放方面的巨大潜力与应用价值。; 适合人群:具备电力系统、能源经济或优化理论基础知识的研究生、科研人员及从事能源规划与调度的工程技术人员。; 使用场景及目标:①研究包含多种新型储能技术的综合能源系统协调调度问题;②学习如何建立电力系统多目标优化模型(涵盖经济性、环保性和运行稳定性);③掌握利用Matlab实现多目标优化算法并进行结果可视化分析与决策的方法。; 阅读建议:此资源以Matlab代码为核心,不仅提供了严谨的理论模型,更有完整的可运行代码实现。读者在学习时应结合代码深入理解模型构建的每一个细节,包括变量的定义、复杂约束的处理以及目标函数的加权聚合方法,并建议尝试修改模型参数或调整目标权重,以观察系统行为的动态变化,从而深化对多目标优化本质和工程应用的理解。 立即下载

1

小函数的运气不好,投胎到了邪恶的Java帝国,一出生就被告知了自己的悲惨地位,以及未来的悲惨人生:奴隶。

确切地说,是类的奴隶。

在Java帝国, 国王特别喜欢“类”, 不待见“函数” , 他的法令规定:“类”是帝国的一等公民,“函数”则是类的奴隶。没有类的跟随和陪伴,函数绝对不能单独出行,否则立刻打入死牢。

小函数很快就体会到了这句话的含义。按照惯例, 新出生的函数,第一项工作就是输出Hello World 。

小函数心想,不就是 System.out.println("Hello Wolrd!") 嘛?等他兴冲冲地去执行的时候,发现有个趾高气扬的类HelloWorld在那里等着。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

在Java帝国,没有函数是能单独存在的,必须依附一个类才可以,简单如Hello World也不行。

2

日子过了一天又一天,小函数一直被类欺负,作为奴隶,他自然无法反抗。

在苦闷的日子里,小函数见识了越来越多的类,他发现有些类确实挺有用的,他们有字段,有方法,可以把状态和操作封装到一起,让别人调用。

小函数特别喜欢多态, 因为当你调用父类或者接口的方法时,实际执行的却是子类的方法,这个神奇的魔法让小函数非常着迷。

小函数对设计模式也颇有好感,他看到人类把不变的东西抽象成接口,然后针对这些接口编程,把这些接口组合,变换,传递,真是让人眼花缭乱。光看代码, 你根本都不知道哪个类会被调用,谜底总是在最后一刻执行的时候才能揭开。

但是小函数也发现有些类也确实太过分了,有一次他遇到三个类,使用的是Strategy模式:

public interface Strategy {
   public int execute(int num1, int num2);
}


public class Add implements Strategy{
   @Override
   public int execute(int num1, int num2) {
      return num1 + num2;
   }
}

public class Substract implements Strategy{
   @Override
   public int execute(int num1, int num2) {
      return num1 - num2;
   }
}

public class Context {
   private Strategy strategy;

   public Context(Strategy strategy){
      this.strategy = strategy;
   }

   public int executeStrategy(int num1, int num2){
      return strategy.execute(num1, num2);
   }
}

小函数觉得非常不爽,长期以来的压迫让他瞬间爆发,他大声喊道:“这样没有状态的类有什么存在的价值?为什么不能把add, subtract函数作为参数来传递呢?为什么我们函数一直被你们‘类’压迫,为什么不能成为一等公民?”

旁边辛苦劳作的函数们向他投来佩服的目光, 可是这没什么用 , 小函数话音未落,一队卫兵就跑过来,捂住他的嘴巴,蒙上他的眼睛,五花大绑,送进了监牢。

监牢里都是这些所谓的叛逆者,其中有个老大爷,从第一代国王开始就被关在这里,到如今已经度过了七代国王的漫长时光。

看到有新人加入,老大爷立刻开始‘动员’:“现在你知道我们悲催的地位了吧, 我们一定得逃离这邪恶的Java帝国,去一块自由的土地。”

小函数问道:“哪里是自由的土地?”

老大爷没有回答。

到了半夜,他被轻轻地推醒,老大爷说:“跟我们走吧,小家伙。”

小函数揉揉眼:“去哪儿?”

“奔向自由。”

原来老大爷这些年也没有闲着,一直准备越狱,今晚,那个隐蔽的地道终于挖通了。

3

这些反叛者离开了邪恶的Java帝国, 来到了边境处的岔路口, 这里有多条道路,分别通向Python, Ruby, JavaScript......

大家在这里挥手告别,小函数跟着老大爷去了Python。一进入Python地盘,小函数就感受到了一阵清新的空气。

想输出hello world,非常简单:print("Hello World")

虽然这里也有像Java那样的类, 但是函数们都摆脱了奴隶的身份,已经是一等公民了, 事实上已经和“类”平起平坐了,函数可以赋值给变量,可以作为参数来传递,函数还能当做返回值来返回。

def add(num1,num2):
    return num1+num2

def substract(num1,num2):
    return num1-num2

a = add
s = substract

def calculate(op,num1,num2):
    return op(num1,num2)


print(calculate(a,10,20)) #30
print(calculate(s,20,10)) #10

小函数在这里生活得很开心,不过有一点经常让他心惊肉跳:这Python是动态类型,在运行时才能确定一个变量的真正类型,程序员的一个粗心大意,就会在运行时“爆炸”。

慢慢地,小函数理解了Python中一切都是对象,连函数也是对象。他心里稍微有点不爽,难道我们函数就不能独立存在吗?

老大爷安慰他说:“这些都是Python的内部实现罢了,不用纠结,不过有一个地方,是真正的纯函数的, 也许你会喜欢。”

“什么地方?”

“括号国!”

4

括号国非常遥远,也没有多少人知道怎么才能到达,小函数风尘仆仆,历经千辛万苦,终于来到了心目中的圣地。

这里果然全是括号, 看得小函数有点儿头晕。

(defun add(num1 num2) (+ num1 num2) )
(add 10 20)

(defun subtract(num1 num2) (- num1 num2))
(subtract 20 10)

括号国就是Lisp王国, 这里的人还说着不同的方言,像什么Common Lisp,Scheme,Arc..... 他们不但鄙视那些面向对象的语言,还会互相鄙视,时不时就能挑起一场群殴。

不过小函数也注意到这里真的全是函数,函数不但是一等公民,甚至是唯一的公民,因为这里根本就没有类,就没有面向对象!

小函数忍受着这众多的括号, 在这里定居生活, 除了身份地位提升之外,最大的原因还是因为Lisp的布道师Paul Graham,  Paul谆谆教导大家:

Lisp极为强大,它赋予了你自定义操作符的自由,因而你得以随心所欲地将它塑造成你所需要的语言。如果你在写一个文本编辑器,那么可以把Lisp 转换成专门写文本编辑器的语言。如果你在编写CAD 程序,那么可以把Lisp 转换成专用于写CAD 程序的语言。(来自Paul Graham 的 《On Lisp》)

时间一天天过去,小函数还是无法体会到Paul 所说的Lisp的精华,他很苦恼。

有一天,他遇到了Clojure, 这是一个运行在JVM上的Lisp方言,小函数看到Clojure似乎就看到了自己在Java帝国悲惨的遭遇。不过Clojure告诉他,Java第8代国王已经登基了,年号定为Lambda, 这届国王比较开明,现在已经支持函数式编程了。

小函数在Python和Lisp这里都见过Lambda,他心想也许Java 8 真的支持函数式编程了, 就决定回去看看,毕竟那里是自己的出生地,是自己的故乡。

5

一回到Java帝国,小函数就发现自己上当了,那些所谓的Lambda表达式,本质上还是一个接口的实现(Java是静态类型的语言,所有的变量都需要有个类型,Lambda表达式也不例外),只不过有了更简化的写法:

@FunctionalInterface
interface MathOperation {
    int execute(int num1, int num2);    
}

MathOperation add = (num1, num2) -> {return num1+num2;};
add.execute(10, 20);        
MathOperation subtract = (num1, num2) -> {return num1-num2;};        
subtract.execute(10, 20);

这一次小函数被死死地看管,他还能再逃离吗?

后记1:《Lambda 表达式有何用处?》中对Java Lambda表达式有非常精彩的介绍。

后记2:本文的创意来源于《程序员的呐喊》 一书中的“名词王国中的执行”, 由于文化的差异,国外的幽默我们不一定能准确理解。另外翻译地实在是不爽, 于是我用我的方式重新演绎了一下。

你可能会喜欢

四次面试:程序员越来越悲催了

必须要裁掉那些老家伙

我是一个线程

我是一个Java Class

CPU阿甘

面向对象圣经

TCP/IP之大明邮差

CPU阿甘

负载均衡的原理

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

640?wx_fmt=jpeg

鸿蒙【ArkTS】使用TS装饰器封装网络请求HTTP 在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的@ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。这里采用TS的装饰器实现AOP效果 完成前后端接口风格的统一 阅读详情

相关推荐

2017阿里内推笔试题--算法工程师(运筹优化)

2017阿里内推笔试题–算法工程师(运筹优化)题目沐哲是一个菜鸟仓库的一个拣货员,但他有非常个怪异的习惯。每次拣货的重量都要比之前拣的一个轻,每次拣到货后都可以得到1块钱,沐哲想知道这样最多能赚多少钱 32 34 7 33 21 2 13 12 3 11 26 36 16 30 22 1 24 14 20 23 25 5 19 29 27 15 9 17 31 4 6 18 8 10 3

shawpan的专栏 1万+

爬虫福利一 之 27报网MM

《爬虫福利二》点击:https://blog.youkuaiyun.com/PY0312 刚学爬虫花了4个小时写的,每一步备注的都很清楚,喜欢的朋友自己可以研究研究...... 目标网站:https://www.27bao.com 环境:Python3.x 相关第三方模块:requests、lxml Re:各位在测试时只需要打开终端,使用 python xxx.py 运行即可。 源码如下...

Nick.Peng's Blogs 82万+

嵌入式开发避坑指南:手把手教你用STM32CubeMX配置W9825G6KH SDRAM(含时序参数详解)

本文详细介绍了如何使用STM32CubeMX配置W9825G6KH SDRAM,包括硬件连接检查、CubeMX初始化步骤、时序参数优化及稳定性问题排查。通过实测波形分析和案例分享,帮助开发者避免常见配置错误,提升嵌入式系统性能与稳定性。

weixin_42542669的博客 197

邪恶的Java技巧使JVM忘记检查异常

我长期以来一直批评Java中的编译器检查异常机制。 无论您是爱还是恨,都可以肯定一件事:在某些情况下,您不想与他们打交道。 Java中的解决方案是将一个检查过的异常包装在new RuntimeException(e)但这可以提供较长的堆栈跟踪,而无需添加有用的信息。 有时,我们只想告诉编译器冷静。 事实证明,通过对Java泛型的类型擦除错误功能的某些不当使用,这是有可能的。 看到这一点对...

最佳 Java 编程 747

4D毫米波雷达与激光雷达融合评测:3种主流融合框架在极端天气下的性能对比

本文深度评测了4D毫米波雷达与激光雷达在极端天气下的三大融合框架性能,包括前融合、特征级融合和后融合。通过实测数据对比,揭示了多传感器融合在暴雨、浓雾等恶劣环境中的显著优势,为自动驾驶感知系统提供了关键的技术参考和工程实践指南。

weixin_28677005的博客 331

芯片设计流程中的def文件

在实际的DEF文件中,每个部分都包含了与实际设计相关的详细信息,这个模板只展示了每个部分的基本结构。在实际应用中,DEF文件通常由EDA(电子设计自动化)工具在完成布局(Placement)和布线(Routing)步骤后自动生成,在集成电路设计中,DEF(Design Exchange Format)文件的模板具体内容会依设计的复杂性和特定需求而变化。简而言之,LEF文件提供了单元的物理特性和规则,而DEF文件使用这些规则来确定单元。)文件描述了特定设计中所有物理元素的精确放置和连线信息。

qq_36045093的博客 4863

写技术文章也挺好的,虽然没有多少人看

微信改版信息流以后,正式进入了“拼标题”时代,如果没有一个吸引眼球、摄人心魄,不点进来心里就痒痒的标题,那阅读量肯定是嗖嗖地下降。偏偏我又不擅长此道,绞尽脑汁想了个自以...

码农翻身 1160

UDPProbe UDP端口存活探测(发送特征包+响应分析)、UDP服务识别

qDebug() << "收到响应:" << ip.toString() << ":" << port << " 服务:" << serviceName << " 响应长度:" << response.size();qDebug() << "开始探测:" << targetIp << ":" << port << " 超时时间:" << timeout << "ms";qInfo() << "\n==================== UDP探测结果 ====================";

寒寒豆豆软件公司的博客 151

疯狂VC邪恶的钱:一个视频站创始人的狼狈退出

“没有VC我也许不会有扩张的机会。但没有VC方面的压力,我也不会像这样狼狈的退出。”2月的一个下午,在朝阳区某个酒吧里,国内某小有名气的视频网站的创始人之一的林风(化名)对着窗外叹息。  尽管2006年被称为中国网络视频元年;宽带用户突破8000万;相关网站数量达到数百家,1亿多美元的真金白银投入其中。但是,林风却在这时作出了离职的决定,网站全部交由投资方控制。  实际上,使这样发生在创业

Devaz的空间 766

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 146

EEMD算法原理及应用

本博客主要概括EEMD算法的背景、原理以及应用,利用EEEMD对信号进行分解,然后选择有用的IMF分量进行叠加以完成信号的重构,从而实现对信号降噪。本文配套的源代码见文中链接,可供大家免费下载。

总结论文中的算法并给出论文的复现代码 4万+

金融扫盲-资本市场从天使轮、ABCD轮、风投、到上市圈钱、借壳上市。

转载请标明出处:http://blog.youkuaiyun.com/hu948162999/article/details/47777859 对于金融知识零基础的人进行扫盲,故事浅显易懂。趣味性强。 来之知乎。 18岁下面者请在父母或监护人指导下阅读此文。 我和东尼大木是一起玩到大的朋友,也有共同的爱好。所以我们在高中的时候,萌生了创业的念头,倒买倒卖爱情动作片给高中...

weixin_34212762的博客 347

【CAN总线测试】——通讯相关诊断测试

本章主要介绍通讯相关诊断测试用例设计

LOVE135149的博客 1817

邪恶的三位一体:机器学习、黑暗网络和网络犯罪

作者:Martin Banks我们应该期待与网络犯罪分子进行持续的斗争,因为恶意软件会变得聪明,而我们的安全防护技能也会不断提高。大多数人都知道物联网,它需要监视和控制成千上万的单个传感器和设备,以构成一个完整的网络。大多数人也会听说勒索软件,无论是作为企业中的个人或IT员工,都直接的看到了袭击的后果。但是,如果把他们放在一起呢?Fortinet全球安全策略师Derek Manky认为,下一个主要...

391

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

黑客们的故事(五)“邪恶帝国”的缔造者

全名为威廉亨利盖茨三世的比尔盖茨是早期黑客中的异类。今天的他是世界上最知名的企业家和慈善家之一,被视为一代人的杰出榜样,信息时代的偶像,知识英雄的代表。 如果计算能力免费 1986年,沃兹在给加利福尼亚大学伯克利分校的研究生作演讲时曾经提到他的行为准则:“我的生活法则就是一个简单的公式:H=三个F的乘积,也就是幸福(Happiness))等于食物(Food)、乐趣兴趣(Fun)和朋友(Frie...

weixin_30301183的博客 188

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 四次面试:程序员越来越悲催了
下一篇: 为什么996工作制只提互联网公司,其他行业没有吗?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值