Java
文章平均质量分 56
一个普通但努力的程序猿
这个作者很懒,什么都没留下…
展开
-
Map+函数式优化if-else
Map+函数式优化if-else需求最近写了一个服务:根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则实现方式:根据优惠券类型resourceType -> 确定查询哪个数据表根据编码resourceId -> 到对应的数据表里边查询优惠券的派发方式grantType和领取规则优惠券有多种类型,分别对应了不同的数据库表:红包 —— 红包发放规则表购物券 —— 购物券表QQ会员外卖会员实际的优惠券远不止这原创 2022-01-17 11:12:48 · 1371 阅读 · 0 评论 -
for循环优化
for循环优化方法一:最常规的的写法for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i));}优点:较常见,易于理解缺点:每次都要计算list.size()方法二:数组长度提取出来int m = list.size();for (int i = 0; i < m; i++) { System.out.println(list.get(i));}优点:不必每次都计原创 2021-08-30 11:53:22 · 100 阅读 · 0 评论 -
Java 性能小细节
Java 性能小细节代码优化细节1、尽量指定类、方法的final修饰符2、尽量重用对象3、尽可能使用局部变量4、及时关闭流5、尽量减少对变量的重复计算6、尽量采用懒加载的策略,即在需要的时候才创建7、慎用异常8、不要在循环中使用try…catch…,应该把其放在最外层9、如果能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度10、当复制大量数据时,使用System.arraycopy()命令11、乘法和除法使用移位操作12、循环内不要不断创建对象引用原创 2021-08-27 11:46:19 · 371 阅读 · 2 评论 -
BigDecimal工具类
import java.math.BigDecimal;/** * 用于高精确处理常用的数学运算 */public class BigDecimalUtils { //默认除法运算精度 private static final int DEF_DIV_SCALE = 10; /** * 提供精确的加法运算 * * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */原创 2021-08-11 10:31:15 · 194 阅读 · 0 评论 -
Java8-lambda
感受 lambda 之美!一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、Java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。1.1 java8自带的常用函数式接口。pub原创 2021-08-03 18:06:12 · 122 阅读 · 0 评论 -
自定义处理try...catch
自定义处理try…catch1 封装统一返回结果类源代码public class AjaxResult { //是否成功 private Boolean success; //状态码 private Integer code; //提示信息 private String msg; //数据 private Object data; public AjaxResult() { } //自定义返回结果的构造方法原创 2021-08-03 17:56:04 · 222 阅读 · 0 评论 -
线程并发协作
线程并发协作应用场景假设仓库中只能存放一定数量的产品,生产者将生产的产品放入仓库,消费者从仓库中取走产品消费。如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,知道仓库中的产品被消费者取走为止。如果仓库中有产品,则消费者可以将产品取走消费,否则停止消费并等待,知道仓库中再次放入产品为止。管程法利用缓冲区进行处理生产者:负责生产数据的模块消费者:负责处理数据的模块缓冲区:消费者不能直接使用生产者的数据,生产者将生产好的数据放入缓冲区,消费者从缓冲区消费数据。代码示例如原创 2021-06-23 16:19:06 · 54 阅读 · 0 评论 -
Lambda表达式
Lambda表达式避免匿名内部类定义过多其实质属于函数式编程可以使代码变得更简洁,只留下核心逻辑理解Functional Interface(函数式接口)是学习lambda表达式的关键所在。函数式接口的定义:任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。//原始写法如下public class TestThread implements Runnable{ @Override public void run() {原创 2021-06-17 15:11:36 · 44 阅读 · 0 评论 -
多线程实现
Process与Thread说起进程,就不得不说程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。通常在一个进程中可以包含若干个现成,当然一个进程中至少有一个现成,不然没有存在的意义。线城市CPU调度和执行的单位。注意:很多线程是模拟出来的,真正的多线程是指有多个CPU,即我们常说的多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换原创 2021-06-17 14:14:29 · 142 阅读 · 0 评论 -
Mybatis接口Mapper内的方法为什么不能重载?
Mybatis接口Mapper内的方法为什么不能重载?动态代理的功能:通过拦截器方法回调,对目标target方法进行增强。言外之意就是为了增强目标target方法。上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标target都不要的科幻模式。注:本文默认认为,读者对动态代理的原理是理解的,如果不明白target的含义,难以看懂本篇文章,建议先理解动态代理。1. 自定义JDK动态代理之投鞭断流实现自动映射器Mapper首先定义一个pojo。public c原创 2021-06-11 09:40:27 · 430 阅读 · 0 评论 -
JAVA八大排序
JAVA八大排序一、冒泡排序我想对于它每个学过C语言的都会了解,这可能是很多人接触的第一个排序算法。基本思想冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法描述冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元原创 2021-06-08 18:32:30 · 176 阅读 · 0 评论 -
SQL查询是否存在优化小技巧
SQL查询是否存在优化旧:统计有多少个号码存在于表中,需查询整个表中的数据。####SQLselect count(phone)from table_namewhere phone = "187****7862";####JAVAint nums = xxDao.countXxxByXxx(params);if(nums > 0){ //存在时,执行此处代码}else{ //不存在时,执行此处代码}新:select 1 查询到一条数据就会停止查询。###原创 2021-06-08 16:46:35 · 188 阅读 · 0 评论 -
JAVA位运算
JAVA位运算基础内容A = 0011 1100B = 0000 1101A&B = 0000 1100A|B = 0011 1101A^B = 0011 1101~B = 1111 0010重点面试题java中如何更快的计算2*8?//使用Java位运算机制,二进制运算System.ot.println(2<<3);计算机中:0000 0000 = 0;0000 0001 = 1;0000 0010 = 2;0000 0011 =原创 2021-06-08 16:41:13 · 30 阅读 · 0 评论 -
JAVA递归
JAVA递归递归就是A方法调用A方法!本身调用 本身利用递归可以用用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转换为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有递归头,将陷入死循环。递归体:什么时候需要调用自身方法。//递归示例:计算某个数字的阶乘//递归只适用于偶尔使用原创 2021-06-08 16:30:53 · 45 阅读 · 0 评论 -
MarkDown语法学习,主要用于Typora
MarkDown语法学习标题:#空格+标题名字 回车##空格+二级标题 依次类推 最多六级标题字体粗体 :** 文本内容 **斜体:* 文本内容 *斜体并加粗:两边加上***引用箭头符号:>好好学习天天向上分割线三个—三个***图片路径可以用本地路径也可以使用网络路径超链接点击跳转百度列表数字排列A 数字+空格BC-+空格表格最快插入表格 Ctrl+T 此处注意快捷键冲突。代码三个`例如:public static v原创 2021-06-02 15:24:07 · 39 阅读 · 0 评论