- 博客(43)
- 资源 (4)
- 收藏
- 关注
原创 【Java】手把手教你写出令人抓狂的代码
本文手把手教你如何写出令人抓狂的代码以及避免那些正确写法,按照本文教程来做,相信你的同事一定会对你印象深刻的。
2022-05-25 01:45:30
633
4
原创 JTS求多边形重合面积
前言通过JTS可以实现多边形求面积以及多个多边形求重合度,本文章只列举几个简单的使用例子。详细的文档使用链接:http://www.tsusiatsoftware.net/jts/main.htmlJTS1.依赖<dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts-core</artifactId> <version>1.14.0</v
2021-11-01 23:37:15
1513
原创 AviatorScript编译生成的字节码为何比Java代码慢?
一、快速了解1.问题实现同样功能的Java代码与AviatorScript代码,两者均会将代码编译成JVM可以执行的字节码,但是两者执行代码所消耗的时间,却有几十倍甚至上百倍的差距。在AS(AviatorScript简称)中,实现相同的功能,更换一种写法,其执行耗时可能也存在极大的差距。2.原因• AS将表达式编译生成的字节码与Java代码编译生成的字节码有较大差异,AS生成的字节码在执行时存在大量的类型转换、条件判断以及为了统一输入输出所做的额外操作,这些都是AS生成的字节码执行速度慢的原因,并且
2021-10-24 16:21:06
3217
原创 AviatorScript之获取动态生成的字节码
在ASMCodeGenerator.class中的getResult方法,会获得bytes数组,最终会根据这个字节数组生成class类,想要知道AS生成的字节码文件,就需要拦截下这个bytes数组。注意:在Aviator初始化instance时也会动态生成字节码,为了防止找到的bytes数组并不是我们自己的,应等其初始化完毕后,再打断点调试该方法。(低版本的Aviator初始化instance时不会生成字节码) /* * (non-Javadoc) * * @see com.goo
2021-10-22 01:03:22
890
原创 表达式引擎Aviator基本介绍及使用以及基于Aviator的规则引擎(附代码详细介绍)
1. Avaitor1.1 什么是Avaitor?Aviator是一门高性能、轻量级的Java语言实现的表达式求值引擎,主要用于表达式的动态求值。1.2 为什么需要Avaitor?Aviator的设计目标是 轻量级 和 高性能 ,相对于Groovy、JRuby的笨重,Aviator非常小,加上依赖包就450K,不算依赖包就70K,不过Aviator的语法受限,它并不是一门完整的语言,只是语言的一小部分集合。1.3 Avaitor的特点Aviator的实现思路与其它轻量级的求值器不同,其它求值器是
2021-07-18 05:30:37
36258
7
原创 【Postman】使用Postman请求带有@RequestBody注解的参数
例如我要请求该参数该参数的内部是这样子的那么我们Postman的请求该参数就可以这样子写例如像fullNames字段,其本身依旧还是一个类,内部还有属性,就参照我请求里fullNames的写法。
2021-01-31 11:51:37
1721
原创 【Java】使用Executors创建线程池的缺点
创建线程池最好不要使用Executors去创建,而是通过ThreadPoolExecutor的方式创建,通过这样子的创建方式,写的人就更加清楚线程池内部的运行规则,可以尽量避免内存溢出的情况。
2020-11-24 18:43:36
3283
原创 【Java】线程池简介(7大参数、4个拒绝策略)
池化技术是一个常用技术,主要目的都是为了避免对象的频繁创建和销毁带来的额外性能损耗。线程池的目的也是为了减少频繁的创建线程和销毁线程带来的性能损耗。通过利用线程池中已存在的线程去接收新的任务,可以减少创建和销毁带来的性能损耗。
2020-11-24 16:44:18
762
原创 Java创建多线程的四种方式(简单介绍+代码)
本文介绍创建多线程的四种方式:①继承Thread类。②实现Runnable接口。③实现Callable<T>接口,该接口需要传入泛型,泛型的类型就是线程执行完毕需要返回的值的类型。④使用线程池(线程池的操作就花里胡哨了,我这里就拿newFixedThreadPool来做例子)
2020-11-24 11:26:27
418
1
原创 Java多线程之生产者-消费者模型的三种写法(Synchronized、ReentrantLock、ArrayBlockingQueue)
通过Java代码来实现多线程的生产者消费者模型
2020-11-23 12:54:26
892
4
原创 Java统计多线程执行完毕后的总耗时(CountDownLatch)
关于计算多线程并发执行的总耗时,可以使用CountDownLatch类的await()方法和countDown()方法来实现
2020-11-22 17:41:58
4286
4
原创 Java CAS算法简介及简单模拟CAS算法
CAS算法的流程是:先读取一个预期值(**A**) → 从内存中读取一个值(**V**),如果A == V,那么就将新的值(**B**)给写入内存,如果A != V,那就不做任何操作。
2020-11-22 15:14:22
865
3
原创 Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳
二叉树前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳
2020-10-24 00:02:33
318
原创 Java迭代法和递归法实现二叉树的前、中、后序遍历(附详细讲解)
递归法实现二叉树的前、中、后序遍历的代码比较容易理解,不过迭代法来实现就比递归法稍微要复杂一点,所以我就将迭代法和递归法实现二叉树的前中后序遍历来做一个总结,将三种遍历的迭代法和递归法放到一起来,方便大家的理解,以及发现其中的共同点
2020-09-29 14:40:49
847
原创 Java有限状态机解力扣题:8. 字符串转换整数 (atoi),代码实现及详细解析
使用Java通过有限状态机解力扣题:8. 字符串转换整数 (atoi),附代码以及详细解析
2020-08-24 12:20:45
647
1
原创 【Java】将二维数组存入txt文件及读取txt文件转换为二维数组(超详细备注)
通过Java语言将二维数组存入txt文件及读取txt文件转换为二维数组
2020-07-25 12:18:11
6103
原创 Java超详细的稀疏数组和二维数组相互转换以及将数据存入磁盘的步骤
Java编程的稀疏数组和二维数组间的相互转换:1.创建一个二维数组 2.将二维数组转换为稀疏数组 3.将稀疏数组保存到磁盘中 4.读取磁盘中的文件,转换为稀疏数组 5.将稀疏数组转换为二维数组
2020-07-25 11:52:48
1133
2
原创 Java中Thread的常用方法介绍及线程的优先级介绍
介绍了1.run()方法2.start()方法3.currrentThread()方法4.getName()方法5.setName()方法6.yield()方法7.join()方法8.sleep()方法9.isAlive()方法。介绍了线程的优先级
2020-06-09 18:48:25
397
原创 Java创建多线程的两种方法的详细步骤介绍
主要介绍通过继承Thread类的方法创建多线程的步骤和实现Runnable接口的方法创建多线程的步骤。比较了Thread和Runnable两者的区别、联系、共同点,解释为什么开发中应该用Runnable来创建多线程。
2020-06-09 07:52:15
795
1
原创 Java单例模式(饿汉式和懒汉式)代码
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样子,我们就不能用new操作符在类的外部产生类的对象了,但在类的内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必
2020-06-03 21:48:46
2852
原创 Java中instanceof的解析
例:a instanceof A,为判断左边的a是否是右边A的实例,如果a是A的实例,那么返回true,否者返回false,这个判断主要是为了防止a强转为A时报错。
2020-06-03 11:23:17
386
原创 Java面向对象(设计类的重要结构之一:属性)
属性和局部变量之间的相同点和不同点1.相同点:①定义变量的格式:数据类型 变量名 = 变量值②先声明,后使用③变量都有其对应的作用域2.不同点①在类中声明的位置不同属性:直接定义在类的{ }中局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量②关于...
2020-06-03 10:12:10
322
原创 Java面向对象(类与对象)解析
面向对象和面向过程的区别1.面向过程:强调的是功能行为,以函数为最小单位,考虑的是怎么做。2.面向对象:强调具备了功能的对象,以类、对象为最小单位,考虑的是谁来做。通过面向对象完成一个项目或者功能的思路1.根据问题的需要,选择问题所针对的现实世界中的实体2.从实体中寻找问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。3.把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。再借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。4.将类实例化成计算机世界中的对象。对象是
2020-06-02 08:06:22
322
原创 Java 通过代码详细讲述可变个数形参的注意事项及使用方法
Java可变个数形参是jdk 5.0新增的内容,熟练使用可以方便我们的编程下面我来详细介绍一些可变个数形参的注意事项及使用方法。
2020-05-29 20:49:11
371
原创 Java 的main方法中无法调用自身所在类的其他方法的两种解决办法
编程时我们会发现有时main方法中调用自身所在的类的其他方法时,发现无法调用,在这里我列出了两种解决方法,并作解释
2020-05-29 08:13:49
4895
原创 Java 冒泡排序算法(详细过程讲解并附实现代码)
冒泡排序算法是由左向右,按顺序对两个数据比大小(如果是想数据由小到大排列),前一个比后一个大,那么就交换一下位置。每循环一轮,都会将该轮循环所遇到的最大的数排到最后面。假设数组长度是length,那么只要循环length - 1轮就可以把该数组按照由小到大排列好了。
2020-05-28 14:48:55
5702
1
原创 Java 通过switch解决输入年、月、日、求出是该年的第几天(考虑了闰年及非法输入的问题)
该方法主要是java语言通过witch来解决问题,并不是该问题的最优选择,只是该问题的其中一种解法。该解法考虑了年份是不是闰年及判断用户输入的数据是不是不合理的数据,并给出相应的提示。
2020-05-26 08:24:11
977
原创 Java中自增运算符(++)num++ 和算数运算符(+)num = num + 1 和 赋值运算符(+=)num += 1的区别
先声明一个变量int num = 0;假设要对该变量加一,通常有三种方法:num = num + 1;num += 1;num++;上述三种都可以使 num 最终结果等于1;可是上述三种运算它们有什么区别呢?其内部运算性质是一样的吗?答案是否定的。
2020-05-24 22:43:58
2394
mysql-connector-java-5.1.7.zip
2020-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人