访问者模式
让自己的内心藏着一条巨龙,既是一种苦刑,也是一种乐趣——雨果 今天跟着一个网站学了学访问者模式 简单来说,如果我们要在不改动现有逻辑的情况下对类进行增强,则可以使用访问者模式 真实世界类比 优秀的保险代理人总能为不同类型的团体提供不同的保单。 假如有这样一位非常希望赢得新客户的资深保险代理人。 他可以拜访街区中的每栋楼, 尝试向每个路人推销保险。 所以, 根据大楼内组织类型的不同, 他可以提供专门的保单: 如果建筑是居民楼, 他会推销医疗保险。如果建筑是银行, 他会推销失窃保险。如果建筑是咖啡厅, 他会推销火灾和洪水保险。 我们这里有多栋建筑,但我们不能在建筑类中写推销保险的代码,并且尽可能考虑未来拓展性当设计完成后,此时此刻突然来了是送外卖的,我们现在再改动原有每个建筑的代码了,工作量就会太多。。。 我们尝试用访问者模式去完成这样一个案例: 建筑接口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; 效果如下
mybatis-plus动态表名
却是平流无石处,时时闻说有沉沦。——唐•杜荀鹤 配置 123456789101112131415161718@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) -> { St...
在线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 123456789101112131415161718<p>请把鼠标移动到单词上,可以看到鼠标指针发生变化:</p><span style="cursor:auto">auto</span><br><span style="cursor:crosshair">crosshair</span><br><span style="cursor:default">default</sp...
springboot建站脚手架
往者不谏,来者可追——《 论语·微子》 地址:https://gitee.com/VampireAchao/simple-scaffold.git 目录结构: 可以用于搭建一些小型项目,注释齐全 已通过阿里代码审查工具扫描
mybatis-plus防止全表更新与删除
宁要好梨一个,不要烂梨一筐。积极肯干和忠心耿耿的人即使只有两三个,也比十个朝气沉沉的人强。——列宁 我们可以如下配置 12345678910111213@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); // 阻止全表更新与删除 BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false paginatio...
手动回滚、提交事务
再小的个子,也能给沙漠留下长长的身影;再小的人物,也能让历史吐出重重的叹息。——余秋雨《文化苦旅》 我们可以手动管理事务 首先需要引用两个Bean 1234@Resourceprivate TransactionDefinition transactionDefinition;@Resourceprivate IArticleEnclosureService articleEnclosureService; 然后是使用 1234567891011 PlatformTransactionManager transactionManager = Objects.requireNonNull(transactionTemplate.getTransactionManager()); TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition);if (逻辑执行正确) { //提交事务 transactionManager.c...
