中缀表示法
无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故。——陆游 文档 中缀表示法能让我们定义一些“关键字” 标有 infix 关键字的函数也可以使用中缀表示法(忽略该调用的点与圆括号)调用。中缀函数必须满足以下要求: 它们必须是成员函数或扩展函数; 它们必须只有一个参数; 其参数不得接受可变数量的参数且不能有默认值。 1234567infix fun Int.shl(x: Int): Int { …… }// 用中缀表示法调用该函数1 shl 2// 等同于这样1.shl(2) 代码如下: 1234567891011121314infix fun Int?.default(x: Int): Int = this ?: xinfix fun String?.default(x: String): String { return this ?: x}// 用中缀表示法调用该函数1 default 0// 等同于这样null.default(0)"1".default("x")null.def...
操作符重载
游客是你,风景是我,无法避免,让你经过。——《稀客》 中文文档 kotlin里我们可以进行操作符重载,以达到对象+对象、-对象这样的操作: 12345678910111213141516171819// 定义一个类data class Point(val x: Int, val y: Int)// 对其进行操作符重载,让其能够使用-Point()语法operator fun Point.unaryMinus() = Point(-x, -y)val point = Point(10, 20)println(-point) // 输出“Point(x=-10, y=-20)”// 对String进行操作符重载,让其能够使用 +"" 语法operator fun String.unaryPlus() = this + thisprintln(+"x")// 对其进行二元操作符重载,使其可以使用 Point() + Point() 语法operator fun Point.plus(s: Point) = Point(this.x + s....
拓展函数
对于聪明人来说,劝告是多余的;对于愚昧人来说,劝告是不够的——莫里哀 中文文档 拓展函数的定义: 1fun String.delBlank() = this.filter { !Character.isWhitespace(it) } 以及: 123fun Int?.default(i: Int = 0) = ifun String?.default(i: String = "") = i 使用: 123456789101112fun String.delBlank() = this.filter { !Character.isWhitespace(it) }val noBlank = "Hello World".delBlank()println(noBlank)fun Int?.default(i: Int = 0) = ifun String?.default(i: String = "") = ival s: Int? = nullprintln(s.default...
COALESCE
沉默是最好的蔑视——康格里夫 分享一个关键字COALESCE获取第一个非空数据,表结构如下 执行sql: 1SELECT COALESCE(username,password) FROM `user_detail`
flexmark-java
不能用温情征服对方的人,用殴打也征服不了对方——契诃夫 分享一个markdown解析框架:flexmark-java https://github.com/vsch/flexmark-java 使用: 12345<dependency> <groupId>com.vladsch.flexmark</groupId> <artifactId>flexmark-all</artifactId> <version>0.64.0</version></dependency> demo: 1234567891011121314151617181920212223242526package com.vladsch.flexmark.samples;import com.vladsch.flexmark.util.ast.Node;import com.vladsch.flexmark.html.HtmlRenderer;import com.vladsch.flexmark...
react中配置图片容错
爱情是友谊的精华,书信是爱情的妙药——豪厄尔 之前写了:vue中img错误默认图片以及img图片丢失后默认图 今天写个react版本的: 1<img src={xxxx} onError={(e) => e.target.src = '/img/oss/2020-06-01/head.jpg'} alt={value.alt} /> 代码很简单,也很管用
java标签
重要的不是知识的数量,而是知识的质量。有些人知道的很多很多,但却不知道最有用的东西——列夫·托尔斯泰 多层for循环中如果想要跳出循环,可以使用标签: 12345678910111213List<Integer> list = asList(0, 1, 2);Assertions.assertNotNull(list);outerOfList:for (Integer integer : list) { for (Integer i : list) { System.out.println(i); // 直接跳出最外层循环 break outerOfList; } // 不会执行 System.out.println(integer);} 执行结果
mysql单条sql批量更新封装
要成就大事业,就要趁青年时代——歌德 之前写了:mysql单条sql批量新增封装 现在写个批量更新的,源码地址 目前还不支持乐观锁,主要代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586package io.github.vampireachao.stream.plugin.mybatisplus.engine.methods;import com.baomidou.mybatisplus.core.injector.AbstractMethod;import com.baomidou.mybatisplus.core.metadata.TableInfo;import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;impor...
hutool动态编译+lombok
显示出对别人的欢乐不屑一顾的样子,那是侮辱了别人——玛格丽特·尤瑟纳尔 这里采取了一种讨巧的方式避开了需求,实现了效果 思路是使用lombok官方自带的delombok进行处理: 见:https://gitee.com/dromara/hutool/issues/I56DED delombok官方文档:https://projectlombok.org/features/delombok 代码如下: 12345678910111213141516171819202122232425262728293031package com.ruben;import cn.hutool.core.compiler.CompilerUtil;import cn.hutool.core.io.FileUtil;import cn.hutool.core.util.ReflectUtil;import cn.hutool.core.util.RuntimeUtil;import cn.hutool.core.util.StrUtil;import org.junit.jupiter.api.As...
hutool excel写数据
为人但知足,何处不安生——耶律楚材 依赖见:hutool获取excel中的图片 代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051package com.ruben;import cn.hutool.core.collection.CollUtil;import cn.hutool.core.date.DateUtil;import cn.hutool.poi.excel.ExcelUtil;import cn.hutool.poi.excel.ExcelWriter;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.Map;/** * ExcelDemo * * @author VampireAchao * @since 2022/9/7 */public class ExcelDemo { public stat...
