接口能玩的小花招
一个人的礼貌是一面照出他的肖像的镜子。——歌德
首先写一个函数式接口
@FunctionalInterfacepublic interface Person { /** * 睡 * * @author <achao1441470436@gmail.com> * @since 2021/7/20 0020 23:20 */ void sleep();}
我们能通过调用其中的sleep方法执行函数(方法)
Person person = () -> System.out.println("睡"); person.sleep();// 执行结果:睡
而执行的函数则是我们接口本身,这个函数式接口就代表了一个函数
函数式接口 其实就可以理解为 函数、方法本身
但我们今天主要聊的不是这个
我们在函数中定义的变量默认就是常量
@FunctionalInterfacepublic interface Person { /** * 常量人 ...
新版Optional
我们每一做一件事都应该既小心谨慎,又充满信心。——爱比克泰德
首先关于Optional的博客我已经写过好几篇了
Optional进行优雅非空判断
Optional再扩展
Optional没有peek函数?自己写一个
在Java9中更新了Optional的三个函数
第一个:将Optional中的值转换为Stream,如果值不存在,则返回空的Stream
/** * If a value is present, returns a sequential {@link Stream} containing * only that value, otherwise returns an empty {@code Stream}. * * @apiNote * This method can be used to transform a {@code Stream} of optional * elements to a {@code Stream} of present value elements: * &l ...
访问者模式
让自己的内心藏着一条巨龙,既是一种苦刑,也是一种乐趣——雨果
今天跟着一个网站学了学访问者模式
简单来说,如果我们要在不改动现有逻辑的情况下对类进行增强,则可以使用访问者模式
真实世界类比
优秀的保险代理人总能为不同类型的团体提供不同的保单。
假如有这样一位非常希望赢得新客户的资深保险代理人。 他可以拜访街区中的每栋楼, 尝试向每个路人推销保险。 所以, 根据大楼内组织类型的不同, 他可以提供专门的保单:
如果建筑是居民楼, 他会推销医疗保险。如果建筑是银行, 他会推销失窃保险。如果建筑是咖啡厅, 他会推销火灾和洪水保险。
我们这里有多栋建筑,但我们不能在建筑类中写推销保险的代码,并且尽可能考虑未来拓展性当设计完成后,此时此刻突然来了是送外卖的,我们现在再改动原有每个建筑的代码了,工作量就会太多。。。
我们尝试用访问者模式去完成这样一个案例:
建筑接口package com.ruben.vistor.example.Insurance;/** * 建筑 * * @author <achao1441470436@gmail.com> * @since 2021/7/18 ...
在线毛笔字生成
草木蔓发,青山可望。一一王维
可用这个网站
https://www.zhenhaotv.com/
生成毛笔字图片
uniapp打电话
人不可能阻止指甲生长….同样的,人也不能压抑自己与生俱来的冲动!——吉良吉影
代码如下
uni.makePhoneCall({ phoneNumber: '114' //仅为示例});
同样拥有成功、失败和完成的回调
uni.makePhoneCall({ phoneNumber: '114' //仅为示例 ,success:res=>{ console.log(res); } ,fail:res=>{ console.log(res); } ,complete:res=>{ console.log(res); }});
自定义鼠标
无息乌乎生,无绝乌乎续,无无乌乎有? ——明·宋应星《谈天·日说三》
我们可以使用CSS中的
cursor: url(https://vampireachao.gitee.io/imgs/mouse1.cur),auto;
去自定义我们的鼠标图片
这里后面的auto是如果前面鼠标图片失效时的备选方案
我们也可以改成default、pointer等等
甚至可以多个并存
cursor: url(https://vampireachao.gitee.io/imgs/mouse1.cur),url(https://vampireachao.gitee.io/imgs/mouse2.cur),auto;
效果如下
mybatis-plus动态表名
却是平流无石处,时时闻说有沉沦。——唐•杜荀鹤
配置
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor(); HashMap<String, TableNameHandler> map = new HashMap<String, TableNameHandler>(2) {{ put("user", (sql, tableName) -> { String year = "_2018"; ...
在线yaml和properties互转
人生有些关口非狠狠地斗一下不可,不能为了混口饭吃而蹉跎了幸福。——巴尔扎克
网址:https://www.toyaml.com/index.html
可以实现yaml和properties文件互转
虽然不支持注释一并互转,总之还是挺实用的
cursor
生命是一个说故事的人,而每一刻间的故事都是新鲜的。——朱光潜
我们有时候会在页面上定义鼠标移入某个元素时的效果
请把鼠标移动到单词上,可以看到鼠标指针发生变化:
auto
crosshair
default
e-resize
help
move
n-resize
ne-resize
nw-resize
pointer
progress
s-resize
se-resize
sw-resize
text
w-resize
wait
<p>请把鼠标移动到单词上,可以看到鼠标指针发生变化:</p><span style="cursor:auto">auto</span><br><span style="cursor:crosshair">crosshair</span><br><span style="cursor:default">default</span><br><span style ...
springboot建站脚手架
往者不谏,来者可追——《 论语·微子》
地址:https://gitee.com/VampireAchao/simple-scaffold.git
目录结构:
可以用于搭建一些小型项目,注释齐全
已通过阿里代码审查工具扫描