Java编程思想
文章平均质量分 84
Java领域经典之作《Thinking in Java5》,此专栏是笔者读书笔记和经验总结的JavaSE基础
ZWZhangYu
这个作者很懒,什么都没留下…
展开
-
【整理】后端接口设计和优化相关思路汇总
在高并发的后端系统中,合理使用缓存可以显著提升性能,减轻数据库的压力,并缩短接口的响应时间。缓存的核心思想是将一些计算量大、访问频繁的数据暂时存储在内存中(如Redis、Memcached等),当下次请求相同数据时,可以直接从缓存中获取,而不需要再次访问数据库或执行复杂的计算。原创 2024-08-19 21:45:24 · 980 阅读 · 0 评论 -
【代码优化】使用枚举替代 if/else 和 switch-case 语句的实践
使用枚举替代 if/else 和 switch-case 语句是一种提升代码可读性、可维护性和扩展性的有效方法。通过将不同的逻辑分支封装在枚举实例中,代码变得更加简洁,符合开闭原则,并且能够减少重复代码和潜在的错误。尽管如此,开发者在使用这种方法时仍需权衡其适用性,确保它适用于当前的开发场景。通过实践和不断优化,开发者可以充分利用枚举的强大功能,编写出更具结构化、扩展性和维护性的代码,提升整体的开发效率和代码质量。原创 2024-08-10 10:36:41 · 1023 阅读 · 0 评论 -
Java脚本化编程实践整理 ScriptEngineManager万字详解
对于多变的计算公式,应用程序扩展/定制:你可以“外部化”应用程序的各个部分,例如配置脚本、业务逻辑/规则和金融应用程序的数学表达式。对于规则引擎类似的功能实现,对于其中的业务流程,动态脚本使用也可以参考使用这种脚本语言特性。下图是Kettle软件工具的截图,可以看到下面有很多的脚本处理方式,Kettle就是Java编写的,我自己就使用过很多次其中的动态脚本的功能,那么对于这类场景来说,我们就可以去使用ScriptEngineManager去帮助我们实现。原创 2022-12-10 15:07:06 · 5568 阅读 · 1 评论 -
Java核心基础 String join()和StringJoiner
在Java8中String类有一个新的字符串分割拼接方法join(),Stringjoin()方法将多个元素通过给定的分隔符进行分割并返回一个新的字符串。该方法以特定的分隔符进行分割,去掉了最后一位冗余的分隔符。【2】需要注意,合并后的新字符串使用的前后缀是第一个StringJoiner的,此外两个StringJoiner对象的之间的分隔符使用的也是第一个StringJoiner对象的。StringJoiner用于构造由分隔符分隔的字符序列,并且可选地从提供的前缀开始并以提供的后缀结尾。...原创 2022-07-25 20:17:36 · 791 阅读 · 0 评论 -
Java平台调试体系原理和实践整理 远程Debug
JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。Java 程序都是运行在 Java 虚拟机上的,我们要调试 Java 程序,事实上就需要向 Java 虚拟机请求当前运行态的状态,并对虚拟机发出一定的指令,设置一..原创 2022-02-21 16:26:07 · 2600 阅读 · 0 评论 -
如何通过反射获取非静态内部类实例
【1】获取内部类对象需要依赖外部类的对象【2】通过Class获取内部类可以通过俩种方式。第一种:Class.forName("package.name.OuterClassI n n e r C l a s s " ) 通 过 InnerClass") 通过InnerClass")通过符号定位到内部类。第二种:通过外部类Class使用OuterClass.class.getDeclaredClasses()获取外部类下可用的内部类对象【3】实例化类需要构造器,反射调用构造器需要设置可访问construc原创 2022-01-08 17:31:11 · 1414 阅读 · 0 评论 -
Stream实践总结
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等原创 2021-09-19 23:12:24 · 1638 阅读 · 1 评论 -
为什么编译器会强制调用每个派生类中的构造器
在学习继承的时候了解到类的初始化过程是需要先加载父类的静态代码和构造函数以及相关属性的,那么为什么编译器会强制调用每个派生类中的构造器呢?class Super { public int field = 0; public int getField() { return field; }}class Sub extends Super { public int field = 1; @Override public int get原创 2020-09-19 14:03:24 · 1687 阅读 · 0 评论 -
类初始化和加载
在许多传统语言中,程序在启动时一次性全部加载。接着初始化,然后程序开始运行。必须仔细控制这些语言的初始化过程,以确保 statics 初始化的顺序不会造成麻烦。在 C++ 中,如果一个 static 期望使用另一个 static,而另一个 static 还没有初始化,就会出现问题。Java 中不存在这样的问题,因为它采用了一种不同的方式加载。因为 Java 中万物皆对象,所以加载活动就容易得多。记住每个类的编译代码都存在于它自己独立的文件中。该文件只有在使用程序代码时才会被加载。一般可以说“类的代码在首次原创 2020-09-19 13:28:07 · 1762 阅读 · 0 评论 -
finalize()原理分析
文章目录(1)为什么要设计finalize()(2)工作原理(3)finalize() 的用途(4)finalize()和析构函数的区别(5)终结条件(1)为什么要设计finalize()如果你创建的对象不是通过 new 来分配内存的,而垃圾回收器只知道如何释放用 new 创建的对象的内存,所以它不知道如何回收不是 new 分配的内存。为了处理这种情况,Java 允许在类中定义一个名为 finalize() 的方法。(2)工作原理当垃圾回收器准备回收对象的内存时,首先会调用其 finalize()原创 2020-09-14 19:25:46 · 2037 阅读 · 0 评论 -
System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()的区别
Arrays.copyOf()public static <T> T[] copyOf(T[] original, int newLength) { return (T[]) copyOf(original, newLength, original.getClass());} public static <T,U> T[] copyOf(U[] ...原创 2020-04-18 23:39:29 · 1898 阅读 · 0 评论 -
Java编程思想——函数式编程Lambda
(一)函数式编程函数式编程(FP)的意义所在:通过合并现有代码来生成新功能而不是从头开始编写所有内容,我们可以更快地获得更可靠的代码.至少在某些情况下,这套理论似乎很有用.在这一过程中,一些非函数式语言已经习惯了使用函数式编程产生的优雅的语法OO(object oriented,面向对象)是抽象数据,FP(functional programming,函数式编程)是抽象行为.Java 8 的...原创 2020-04-01 20:09:57 · 1605 阅读 · 1 评论