Java
文章平均质量分 84
꧁꫞ND꫞꧂
每一天都值得期待与认证对待
展开
-
JDK 发展至今的垃圾回收机制
JDK的不断迭代,垃圾回收机制也是在更新,不同的开发环境下,有不同的适应的回收器和垃圾回收处理可提供。转载 2022-07-26 14:05:55 · 1330 阅读 · 0 评论 -
Java中if-else优化
本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章。不一定全对,只希望得到更多的讨论,因为有了更深入的讨论才能进步。文章有点长,我在文章最后会给出相关的思考和总结陈词,你可以跳到结尾。所谓箭头型代码,基本上来说就是下面这个图片所示的情况。那么,这样“箭头型”的代码有转载 2022-05-06 19:51:54 · 2220 阅读 · 0 评论 -
编程的智慧
编程的智慧编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。反复推敲代码有些人喜欢炫耀自己写了多少多少万行的代码,仿佛代码的数量是衡量编程水平的标准。然而,如果你总是匆匆写出代码,却从来不回头去推敲,修改和提炼,其实是不可能提高编程水平的。你转载 2022-05-06 19:49:49 · 424 阅读 · 1 评论 -
JDK多版本对比
来源同事的整理,分享一波原创 2021-12-17 14:33:50 · 6662 阅读 · 0 评论 -
服务器CPU高定位代码方式
CPU高如何定位代码top命令查看进程id,假设看到的进程id是75191 top -p 75191 -H (83828代表进程id,-H 代表线程模式) 第一个线程75259从十进制转换为16进制为0x125fb jstack 75259 | grep 125fb -A 100ps:线程问题基本围绕jstack命令展开来源于同事的分享...原创 2021-12-17 14:30:53 · 156 阅读 · 0 评论 -
HashMap的工作原理
1、HashMap 在 JAVA 中的怎么工作的?基于 Hash 的原理。2、什么是哈希?最简单形式的 hash,是一种在对任何变量 / 对象的属性应用任何公式 / 算法后, 为其分配唯一代码的方法。一个真正的 hash 方法必须遵循下面的原则:“哈希函数每次在相同或相等的对象上应用哈希函数时, 应每次返回相同的哈希码。换句话说, 两个相等的对象必须一致地生成相同的哈希码。Java 中所有的对象都有 Hash 方法,Java 中的所有对象都继承Object...转载 2021-07-28 22:30:44 · 483 阅读 · 0 评论 -
voliate
voliate的两个特性:cacheline、伪共享。他为了保证唯一其实损耗了性能,为此做具体说明Java虚拟机规范试图定义一种Java内存模型(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,让Java程序在各种平台上都能达到一致的内存访问效果。简单来说,由于CPU执行指令的速度是很快的,但是内存访问的速度就慢了很多,相差的不是一个数量级,所以搞处理器的那群大佬们又在CPU里加了好几层高速缓存。 在Java内存模型里,对上述的优化又进行了一波抽象。JMM规定所有变量都是存在主存中的,类似于上面提到转载 2021-07-14 20:36:39 · 1466 阅读 · 0 评论 -
JVM如何调优
上期我们介绍了JVM内存模型及垃圾回收的算法juejin.cn/post/691347…。这里我们对JVM GC的性能调优参数进行一个整理,通过调节参数来保证我们系统的可靠性。 -Xms3550m:初始化堆大小,一开始使用的内存大小,如果超出该大小就会自动扩容; -Xmx3550m:最大堆大小,初始化系统就会分配,虽然一开始使用的是初始堆大小,但是可以根据情况动态扩容,但是不能超过最大堆大小,否则会抛出outOfMemoryError; -Xmn:设置年轻代的大小; ...原创 2021-01-14 08:30:54 · 276 阅读 · 0 评论 -
Navicat 将Oracle数据导入mysql
如果你的Navicat没有连接mysql一选项,那么换个。1.要完成数据迁移当然要有源数据库,在本次示例中,源数据库是Oracle,目标数据库是mysql。反向迁移流程是类似的2.首先,在目标主机上建立目标数据库的表空间。此时表空间中并没有数据。3.然后,打开navicat,建立navicat到源数据库的连接,注意,navicat的数据传输其实是数据输出而不是数据导入。可以由连接图标和连接端口注意到,此时连接到的数据库是oracle。点击工具 -> 数据传输,注意要提前连接过mysq原创 2020-11-18 14:50:16 · 1511 阅读 · 0 评论 -
Java和scala中反射的实现
java 实现反射:java反射需要继承序列化extends Serializable反射调用 scala class 中的函数val clazz = Class.forName("com.testclass") //构造一个需要反射类的对象clazz //使用该对象去获取私有函数.getDeclaredMethod(s"$函数名", classOf[String], classOf[String]) //并得到该函数入参的数据类型,如有多个入参,要声明多个classOf...原创 2020-09-15 11:53:38 · 478 阅读 · 0 评论 -
连接池的对比
一、.背景介绍什么是连接池1)先讲一下“池”, 池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能。为转载 2020-08-18 15:15:36 · 363 阅读 · 0 评论 -
Java并行流执行,简单便捷的,在用了么都
Java8并行流:执行速度快的飞起!在 Java 7 之前,如果想要并行处理一个集合,我们需要以下几步手动分成几部分为每部分创建线程在适当的时候合并并且还需要关注多个线程之间共享变量的修改问题。而 Java8 为我们提供了并行流,可以一键开启并行模式。是不是很酷呢?让我们来看看。并行流认识和开启并行流什么是并行流:并行流就是将一个流的内容分成多个数据块,并用不同的线程分别处理每个不同数据块的流。例如有这么一个需求:有一个 List集合,而 list 中每个 apple 对象转载 2020-12-19 18:09:06 · 973 阅读 · 1 评论 -
java中的锁
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲观锁#乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此.转载 2020-11-02 10:59:22 · 157 阅读 · 0 评论 -
普通项目读取resources文件
我们平时运行的时候,对于普通项目的配置问题,应该是配置到对应的配置文件,不是写到某个类里面。在idea和服务器上的类位置不同,所以访问配置资源文件的地址和方式有所不同。Java的方式读取resources文件的方式:public static void main(String[] args) throws IOException { File file = new File("src/main/resources/sshConfig.properties"); I.原创 2020-10-14 11:05:19 · 1605 阅读 · 0 评论 -
jdk15发布了,新的迭代提高开发效率
2020 年是 Java 诞生的第 25 个年头。在过去的这些年中,Java 在过去增强功能的推动下为用户提供了超过二十年的创新,例如 Java 5 中的泛型,Java 8 中的 Lambda 和 Java 9 中的模块,这些迭代提高了 Java 平台的性能,稳定性和安全性。Java 虽然 25 岁了,但是依然持续着创新之道。9月 15 日 Oracle 宣布 JDK15 正式发布。这是 Java 迭代周期缩短为六个月以后的第六个版本。随着迭代速度的加快,让 Java 的设计开发测试人员能够更加轻松的面转载 2020-09-24 10:55:03 · 403 阅读 · 0 评论 -
Hutool一个Java工具类的便捷使用
不要再重复造轮子了,这款开源工具类库贼好使!SpringBoot实战电商项目mall(40k+star)地址:github.com/macrozheng/…摘要Hutool是一个小而全的Java工具类库,它帮助我们简化每一行代码,避免重复造轮子。如果你有需要用到某些工具类的时候,不妨在Hutool里面找找。本文总结了平时常用的16个工具类,希望对大家有所帮助!安装Hutool的安装非常简单,Maven项目中只需在pom.xml添加以下依赖即可。<dependency>转载 2020-09-08 11:21:20 · 557 阅读 · 0 评论 -
Flink之ParameterValuesProvider 传参拼装
关系型数据库的查询参数拼装def oracleData (parameter: Map[String, Object], env: ExecutionEnvironment): DataSet[Row] = { //获取组合 val ids = parameter.get(IndexParams.PF_ID).get.toString //获取币种 val ccyType = parameter.get(IndexParams.CCY_TYPE).get.toStr.原创 2020-07-21 17:59:22 · 537 阅读 · 0 评论 -
反射异常 java.lang.reflect.InvocationTargetException 处理
InvocationTargetException异常由Method.invoke(obj, args...)方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收。遇到个问题,就是我们在使用反射方式调用底层代码的时候,报错java.lang.reflect.InvocationTargetException,打印scala信息就抛出个java.lang.reflect.InvocationTargetException异常,然后没有其他的说明,使用getStackTraceStri转载 2020-07-06 10:35:52 · 60306 阅读 · 1 评论 -
Scala中怎么用ListMap
其实语法大家都知道,知识环境不一样,可能我们的需求也不一样,最近遇到一个问题:要求每个功能使用java和scala两种语言实现,但是最后的返回结果使用同一个格式返回,java里返回的List<Map<String,String>>结果,那么在scala里处理成以下格式package flinkonkafkaimport java.utilimport scala.collection.mutable.ArrayBufferobject TOB { def ma原创 2020-06-18 15:09:41 · 946 阅读 · 0 评论 -
Java常见的设计模式整理
设计模式六大原则1.开放封闭原则:对扩展开放,对修改封闭,意即程序拓展时不要动原有的代码2.LSP原则:任何基类可以出现的地方,子类一定可以出现3.依赖倒置原则:使用接口,依赖于抽象而不是具体4.接口隔离原则:为了解耦,使用多个相互隔离的接口5.迪米特法则:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。6.CRP法则:尽量使用合成/聚合的方式,而...原创 2020-04-26 18:46:57 · 393 阅读 · 0 评论 -
Java六大设计原则
研磨设计模式推介大家读一下一、设计模式的六大原则:1.单一原则:就是每个Java类只做一件事,一个接口可以有多个实现类,但是每个实现类都是只做一件事,低耦合。这样的话,要是想要修改我们的业务逻辑,只需要改业务层逻辑,不需要修改底层的实现。2.里氏替换原则:它定义了父子类的关系,就是所有的子类都必须拥有父类有的功能,如果要想实现其他的功能,可以重新写个方法,但是不能重写父...原创 2020-04-19 19:58:40 · 759 阅读 · 0 评论 -
JAVA设计模式总结之23种设计模式
一、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。...转载 2020-04-19 19:57:01 · 357 阅读 · 0 评论 -
Excel导出简略版
一、Apache poi、jxl 的缺陷在说如何实现之前,我们先来讨论一下传统 Excel 框架的不足!除了上面说的,Apache poi、jxl 都存在生成 excel 文件不够简单优雅快速外,它们都还存在一个严重的问题,那就是非常耗内存,严重时会导致内存溢出。POI 虽然目前来说,是 excel 解析框架中被使用最广泛的,但这个框架并不完美。为什么这么说呢?开发者们大部分使用 ...原创 2019-10-14 16:43:05 · 160 阅读 · 0 评论 -
Java8之Stream基本特性
什么是StreamStream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列(注意是抽象概念),通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。通俗来说就是你只用告诉“流”你需要什么,便在出口处等待结果接口。上图为Steam操作的基本流程,在后面的学习过程中可反复与具体的代码进行对照,加深学习印象。Stream相关概念Str...转载 2019-10-14 10:08:18 · 3981 阅读 · 0 评论 -
经纬度相关的处理
1.通过经纬度判断两个点之间的距离,这里面的地球半径取得是平均半径,赤道半径和极地半径是不同的,所以取平均。public class Distance { public static final double DEGREES_TO_RADIANS = Math.PI / 180.0; public static final double RADIANS_TO_DEGREES...原创 2019-10-12 10:48:21 · 934 阅读 · 0 评论 -
Json里面套json使用Java拼接SQL
需求:传入的好多个条件,不同条件之间的关系也是不同的。 案例JSON String json= "{\"code\":\"0\",\"msg\": \"\",\"searchtype\":\"1\",\"label_id\":\"\",\"county\":\"1|2|3|4\",\"lng_lat\": [{\"lng\":\"122.1231\"},{\"lat\":\"112.32...原创 2019-09-30 18:30:19 · 1111 阅读 · 0 评论 -
Java程序员该知道的
高并发架构消息队列为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?如何保证消息队列的高可用?如何保证消息不被重复消费?(如何保证消息消费时的幂等性)如何保证消息的可靠性传输?(如何处理消息丢失的问题)如何保证消息的顺序性?如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理...原创 2019-09-17 16:38:30 · 319 阅读 · 0 评论