mysql中的dual
许多人都是由于本身软弱而做出问心有愧的事来的,并非都是蓄意背信弃义。——拉罗什富科 前两天看到项目中有这样一句SQL 1SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password` FROM DUAL; 最后这里有一个FROM DUAL 我没有在数据库中找到DUAL表,它是一个关键字 但我们就算去掉FROM DUAL,也能成功执行 1SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password`; 而且很多类似的例子 1234-- 查询当前时间SELECT NOW() FROM DUAL;-- 查询当前数据库版本号SELECT VERSION() FROM DUAL; 我们去掉后面的FROM DUAL,...
java模块导出与导入
只有经历过地狱般的磨砺,才能练就创造天堂的力量;只有流过血的手指,才能弹出世间的绝响。——泰戈尔 在java9中,新增了模块导入导出功能 我们可以新建一个module-info.java文件 然后我们可以在其中定义模块名、导出模块、引入模块 例如我这里定义了模块名为simple.design 导出的包为com.ruben.vistor.example.insurance和com.ruben.vistor.example.check 导入的包为java.net.http以及java.sql 123456module simple.design { exports com.ruben.vistor.example.insurance; exports com.ruben.vistor.example.check; requires java.net.http; requires java.sql;} 我们在本模块中可以使用到java.net.http以及java.sql 当然我们导出的这两个包下面的类也可以在另一个模块中引用 需要...
创建只读集合
真正的人生,只有在经过艰难卓绝的斗争之后才能实现。——塞涅卡 在java8中 我们可以使用下面的函数创建只读集合 12345678Collections.unmodifiableCollection(Arrays.asList(""));Collections.unmodifiableList(Collections.singletonList(""));Collections.unmodifiableMap(new HashMap<>(1 << 4));Collections.unmodifiableSet(new HashSet<>());Collections.unmodifiableNavigableMap(new TreeMap<>());Collections.unmodifiableNavigableSet(new TreeSet<>());Collections.unmodifiableSortedMap(new TreeMap<>());Colle...
新版Stream
最具挑战性的挑战莫过于提升自我。——迈克尔·F·斯特利 Java9和Java16中更新了Stream中的函数 1234567891011121314151617181920212223242526272829303132// @since 9:无限流现在可以给终止条件啦!注意第二个参数// @since 16:toList简化了.collect(Collectors.toList())// 这里是从0获取到99的元素List<Integer> collect = Stream.iterate(0, i -> i < 100, i -> ++i).toList();System.out.println("iterate&toList:" + collect);// @since 9:takeWhile——只要满足条件就取出元素,直到遇到第一个不满足的元素为止(不受并行流影响,属于有状态中间操作)System.out.print("takeWhile:");collect.parallelStream(...
接口能玩的小花招
一个人的礼貌是一面照出他的肖像的镜子。——歌德 首先写一个函数式接口 12345678910@FunctionalInterfacepublic interface Person { /** * 睡 * * @author <achao1441470436@gmail.com> * @since 2021/7/20 0020 23:20 */ void sleep();} 我们能通过调用其中的sleep方法执行函数(方法) 123 Person person = () -> System.out.println("睡"); person.sleep();// 执行结果:睡 而执行的函数则是我们接口本身,这个函数式接口就代表了一个函数 函数式接口 其实就可以理解为 函数、方法本身 但我们今天主要聊的不是这个 我们在函数中定义的变量默认就是常量 1234567891011121314@FunctionalInterfacepublic interf...
新版Optional
我们每一做一件事都应该既小心谨慎,又充满信心。——爱比克泰德 首先关于Optional的博客我已经写过好几篇了 Optional进行优雅非空判断 Optional再扩展 Optional没有peek函数?自己写一个 在Java9中更新了Optional的三个函数 第一个:将Optional中的值转换为Stream,如果值不存在,则返回空的Stream 12345678910111213141516171819202122/** * 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...
访问者模式
让自己的内心藏着一条巨龙,既是一种苦刑,也是一种乐趣——雨果 今天跟着一个网站学了学访问者模式 简单来说,如果我们要在不改动现有逻辑的情况下对类进行增强,则可以使用访问者模式 真实世界类比 优秀的保险代理人总能为不同类型的团体提供不同的保单。 假如有这样一位非常希望赢得新客户的资深保险代理人。 他可以拜访街区中的每栋楼, 尝试向每个路人推销保险。 所以, 根据大楼内组织类型的不同, 他可以提供专门的保单: 如果建筑是居民楼, 他会推销医疗保险。如果建筑是银行, 他会推销失窃保险。如果建筑是咖啡厅, 他会推销火灾和洪水保险。 我们这里有多栋建筑,但我们不能在建筑类中写推销保险的代码,并且尽可能考虑未来拓展性当设计完成后,此时此刻突然来了是送外卖的,我们现在再改动原有每个建筑的代码了,工作量就会太多。。。 我们尝试用访问者模式去完成这样一个案例: 建筑接口12345678910111213141516171819202122232425262728293031323334353637package com.ruben.vistor.example.Insurance;/** * ...
在线毛笔字生成
草木蔓发,青山可望。一一王维 可用这个网站 https://www.zhenhaotv.com/ 生成毛笔字图片
uniapp打电话
人不可能阻止指甲生长….同样的,人也不能压抑自己与生俱来的冲动!——吉良吉影 代码如下 123uni.makePhoneCall({ phoneNumber: '114' //仅为示例}); 同样拥有成功、失败和完成的回调 123456uni.makePhoneCall({ phoneNumber: '114' //仅为示例 ,success:res=>{ console.log(res); } ,fail:res=>{ console.log(res); } ,complete:res=>{ console.log(res); }});
自定义鼠标
无息乌乎生,无绝乌乎续,无无乌乎有? ——明·宋应星《谈天·日说三》 我们可以使用CSS中的 1cursor: url(https://VampireAchao.github.io/imgs/mouse1.cur),auto; 去自定义我们的鼠标图片 这里后面的auto是如果前面鼠标图片失效时的备选方案 我们也可以改成default、pointer等等 甚至可以多个并存 1cursor: url(https://VampireAchao.github.io/imgs/mouse1.cur),url(https://VampireAchao.github.io/imgs/mouse2.cur),auto; 效果如下
