如何编写可怕的 Java 代码?

【Python&RS】Rasterio库安装+基础函数使用教程 Rasterio是一个Python库,专门用于栅格数据的读写操作。它支持多种栅格数据格式,如GeoTIFF、ENVI和HDF5,为处理和分析栅格数据提供了强大的工具。RasterIO适用于各种栅格数据应用,如卫星遥感、地图制作等。这篇文章跟大家介绍一下Rasterio库的安装以及一些基本函数的使用教程,附带源码。 阅读详情

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。

如果你正在寻找有关如何编写良好代码的建议,请点击查看这篇文章。

 

 

对一切使用异常

 

 

你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误的一种)很容易犯。

 

当你迭代一个集合时,很容易出错。让我们看看如何使用 Java 异常处理来解决该问题,而不用担心这些讨厌的差一错误!

 

 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
public static void horribleIteration(String [] words){    int i = 0;    try {        while(true){            System.out.println(words[i]);            i++;        }    } catch (IndexOutOfBoundsException e){        //iteration complete    }}

 

 

不用担心访问修饰符

 

 

你说什么?Java 中的访问修饰符,这不是浪费时间嘛!你是否知道将属性/方法等设为私有只是一个建议?如果你想修改它,那就去做吧!没什么能阻止你(除了缺乏知识之外)。

 

如果是这种情况,请看如下代码。

 

 
  •  
  •  
  •  
  •  
  •  
  •  
public static void readPrivate() throws NoSuchFieldException, IllegalAccessException {    Field f = System.class.getDeclaredField("lineSeparator");    f.setAccessible(true);    String separator = (String) f.get(System.class);    System.out.println("Line separator is " + separator + ".");}

 

我们在这里读取 lineSeparator,这并没有什么。但是修改 lineSeparator 会带来更多乐趣!在我们修改代码中的 lineSeparator 之后,看看 System.out.println 发生了什么:

 

 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
public static void readWritePrivate() throws NoSuchFieldException, IllegalAccessException {    Field f = System.class.getDeclaredField("lineSeparator");    f.setAccessible(true);    String separator = (String) f.get(System.class);    System.out.println("Line separator is " + separator + ".");
    f.set(System.class ,"!!!");    System.out.println("Line one");    System.out.println("Line two");    System.out.println("Line three");}

 

输出为:

 

 
  •  
  •  
  •  
  •  
Line separator is WARNING: All illegal access operations will be denied in a future release.Line one!!!Line two!!!Line three!!!

 

 

看起来不错!

 

 

在 Java 中没有什么是真正的 final

 

 

 

一些开发人员认为他们通过将 final 关键字放在变量前面来以说明不会去更改这个值。推荐:为什么要加 final 关键字了?事实是——有时候你真的想要改变一个 final 字段的值,所以这是如何做的:

 

 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
public static void notSoFinal() throws NoSuchFieldException, IllegalAccessException, InterruptedException {    ExampleClass example = new ExampleClass(10);    System.out.println("Final value was: "+ example.finalValue);    Field f = example.getClass().getDeclaredField("finalValue");    Field modifiersField = Field.class.getDeclaredField("modifiers");    modifiersField.setAccessible(true);    modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);    f.setInt(example, 77);    System.out.println("Final value was: "+ example.finalValue);}
public static class ExampleClass {    final int finalValue;
    public ExampleClass(int finalValue){        this.finalValue = finalValue;    }}

使用 Java 序列化,干就对了

 

 

这很简单,用 Java 序列化,玩得开心,好好享受。好吧,我想你想要一些理由。我看到 Java 平台首席架构师 Mark Reinhold 表示,他们后悔将序列化引入到 Java。显然,Java 中大约 1/3 的安全漏洞仅来自于序列化。

 

 

将对象用于一切

 

 

你知道类吗?浪费时间!

你是否想看到代码重用的巅峰之作?你去!

 

 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
public static void printThings (List things){    int i = 0;    try {        while(true){            System.out.println(things.get(i));            i++;        }    } catch (IndexOutOfBoundsException e){        //iteration complete    }}
List superList = new ArrayList();superList.add(7);superList.add("word");superList.add(true);superList.add(System.class);printThings(superList);

 

您可以相信我们一直以来都拥有这种力量吗?

 

另外,组合两个模式还有额外的好处!这只是你使用 Object 进行操作的开始。如果有疑问,请记住-使用对象。如果需要,你随时可以使用这种惊人的模式进行回退!

 

 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
public static void printThingsUppercaseStrings (List things){    int i = 0;    try {        while(true){            Object o = things.get(i);            System.out.println(o);            if(o.getClass() == String.class){                String so = (String) o;                so = so.toUpperCase();                System.out.println(so);            }            i++;        }    } catch (IndexOutOfBoundsException e){        //iteration complete    }}

 

这还是类型安全的,多么健壮的解决方案。

 

 

充分拥抱便捷编程的艺术

 

 

你知道比尔·盖茨更喜欢懒惰的开发人员吗?比尔·盖茨说过:

"I will always choose a lazy person to do a difficult job...because, he will find an easy way to do it. --Bill Gates"

"我总是会选择一个懒人去完成一份困难的工作...因为,他会找到捷径。" -- 比尔盖茨

 

因此,有了比尔·盖茨(Bill Gates)的大力支持,我们可以完全接受我们的懒惰。你准备好了吗?那就开始吧!

  • 永远不要编写测试,只是不要编写错误!

  • 将所有都定义为 public -方便访问!

  • 支持全局变量–您可能需要它们!

  • 大型接口优于小型专用接口–可以使用的方法越多越好!

  • 支持继承而不是合成(使用接口中的默认方法从未如此简单)!

  • 始终使用装箱类型–它们也可以用作对象!

  • 尽可能使用最短的名字(a, b, n 最好)!

 

 

 

不要学习任何新知识–你总是最了解

 

 

 

一个程序员最重要的品质就是对自己有信心。相信自己什么都懂,没有什么可学的!考虑到这一点,请确保不要学习:

 

  • 新类库

  • 新语言

  • 新框架

 

这样可以节省你的时间!你永远都不应学习任何新知识,因为你已经是最好的了。

注意,在构造函数中提供最终值时,这对我很有用。如果你在类中设置了 final 值,那么它将不起作用。(可能是一些编译器级别的优化破坏了所有的乐趣)

 

多模态模型评测神器 | OpenCompass MMBench 了解一下! MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。 阅读详情

相关推荐

E5071C 网络分析仪使用指南

E5071C 网络分析仪是 Keysight(原 Agilent)推出的一款高性能矢量网络分析仪,广泛应用于射频(RF)和微波(MW)电路设计、天线测试、滤波器优化等领域。它以高精度、宽频率范围(9 kHz–20 GHz)、出色的动态范围和灵活的测量功能著称。本文将详细介绍 E5071C 的基本操作方法,帮助用户快速上手并高效使用该设备。

2501_90901792的博客 4191

恐怖的代码,以及转载

项目中看到这样的代码:m_optimizedPolygons = false;if (gdi_compatible && (true == gdi_compatible->value().as_boolean()))        m_optimizedPolygons = true;看到什么问题了吗?有没有人吐血身亡?哦,对不起,朋友,帮忙打个120......无数C++的文章和书籍----至少

不亦快斋 3万+

mysql数据库中使用存储过程带来的好处和示例(存储过程的概念、定义、作用等详解)

MySQL的存储过程(Stored Procedure)是一组SQL语句集合。用户通过指定的存储过程名和参数来调用并执行它。存储过程可以在数据库中预编译并存储,这样它们可以被多次调用而无需重新编写或解析SQL语句。 存储过程将复杂的SQL逻辑封装在一个可重用的单元中。多次调用存储过程,而不需要重复编写相同的SQL代码。- 通过封装,可以隐藏复杂的SQL逻辑,只向用户或应用程序提供简单的接口。MySQL的存储过程和编程语言中的函数的原理和目标是一致的:封装可重用的代码逻辑并提高代码的可维护性和可重用性。

weixin_70208651的博客 1720

如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。 如果你正在寻找有关如何编写良好代码的建议,请查看其它文章! 对一切使用异常 你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻...

武培轩 1567

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 400

银河麒麟V10安装docker

最近在做的一个信创项目使用的操作系统是银河麒麟高级服务器V10,在安装docker时,会遇到下面的错误。 nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-20.10.0-3.el7.x86_64 经过分析,以下依赖包是centos系统中的包,所以需要给kylinos创建一个合适的centos源。经过实验,Kylin Linux Advanced Server V1

m0_38004228的博客 4909

吓人代码html,HTML5 canvas幽灵鬼魂动画代码 (吓人的效果)

【实例简介】【实例截图】【核心代码】HTML5 canvas幽灵鬼魂动画代码 - 源码之家canvas {position: fixed;top: 0;left: 0;}var blobs = [];function setup() {var iHeight = window.innerHeight;if (iHeight < 500) {iHeight = 500;}createCanva...

weixin_34494211的博客 3万+

某智能物流无人值守系统 ExportReport SQL注入漏洞复现

某智能物流无人值守系统 ExportReport存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。

0xSec 820

好玩,诡异,代码大全

通过学习《Inside the C++ Object Model》发现了一些好玩的代码,记录在此吧,以方便搜集以后发现的好玩,或者归你的代码。 类对象能展现多态吗? struct Base { int j; virtual void f() { std::cout << "Base::f()" <<

xujiezhige的专栏 1万+

华为OD机试 - 小火车最多人时所在园区站点(Java 2024 E卷 100分)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 996

YOLO26改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失

本文记录的是。传统的卷积神经网络中常用的最大池化平均池化和步长为2的卷积等操作进行下采样可能会导致信息丢失,为了解决信息丢失问题,HWD作者受无损信息变换方法的启发,引入Haar小波变换到下采样模块中,

Limiiiing的博客 352

恐怖代码(禁止入内)

例如:1.2.3.4.5.6.7.8.9................................................................................................................

fertd的博客 1万+

【python数据挖掘课程】二十八.基于LDA和pyLDAvis的主题挖掘及可视化分析

这是《Python数据挖掘课程》系列文章,前面很多文章都讲解了数据挖掘、机器学习,这篇文章主要讲解LDA和pyLDAvis算法,同时讲解如何读取CSV文本内容进行主题挖掘及可视化展示。文章比较基础,希望对你有所帮助,提供些思路,也是自己教学的内容。推荐大家购买作者新书《Python网络数据爬取及分析从入门到精通(分析篇)》,如果文章中存在错误或不足之处,还请海涵。 目录: 一.显示结果及安装 二.LDA主题挖掘 三.pyLDAvis可视化分析 四.小结

杨秀璋的专栏 1万+

java编写代码_如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误...

weixin_39945792的博客 185

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java编写p_如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!1|0对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻...

weixin_39641463的博客 78

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何编写java_如何编写可怕的 Java 代码?

1. 对一切使用异常2. 不用担心访问修饰符3. 在 Java 中没有什么是真正的 final4. 使用 Java 序列化,干就对5. 将对象用于一切6. 充分拥抱便捷编程的艺术7. 不要学习任何新知识–你总是最了解我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!1. ...

weixin_39717865的博客 73

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java如何获取对话框的叉叉_老妹儿,如何编写可怕的Java代码?

作者:武培轩来源:https://urlify.cn/AbeIbu我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。# 对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误...

weixin_29065659的博客 201

java如何编写windows木马_如何编写可怕的 Java 代码?

原标题:如何编写可怕的 Java 代码?作者:武培轩我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编...

weixin_35478664的博客 215

表示我想你的代码java_如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误...

weixin_34512248的博客 801

写的java代码 怎么看_如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误...

weixin_39949386的博客 71

java代码解锁华为_如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误...

weixin_39865625的博客 84

java如何代码找错误_如何编写可怕的Java代码?

我决定告诉你如何编写可怕的Java代码。如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读。如果你正在寻找有关如何编写良好代码的建议,请查看其它文章!对一切使用异常你知道循环对吗?差一错误(英语:Off-by-one error,缩写 OBOE,是在计数时由于边界条件判断失误导致结果多了一或少了一的错误,通常指计算机编程中循环多了一次或者少了一次的程序错误,属于逻辑错误...

weixin_30674431的博客 115
上一篇: JAVA8教程
下一篇: 涨姿势,Java中New一个对象是个怎么样的过程?
Java奥利给
博客等级 码龄6年 150粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值