uniapp无限树形结构
性格左右命运,气度影响格局。——余世雅博士 插件地址:https://ext.dcloud.net.cn/plugin?id=5718 作者: luyj 介绍: 无限极树形结构。支持搜索、面包屑导航、单项选择、多项选择。 代码块 luyj-tree 内包含luyj-tree-search、luyj-tree-navigation、luyj-tree-item 说明 本插件是基于xiaolu-tree进行了uni_modules模块化。并进行了一些修改。 本人暂时只在微信小程序端和H5 使用Chrome浏览器测试。更改了一些内容,有可能会有一些错误 或说明与实际不一致,介意者慎用。本人会适当的抽出业余时间,把它完善,毕竟有一定的下载量了,而且自己也需要学习,再次感谢原作者。 暂时,使用自定义插件渲染有问题,会出现duplication is found under a single shadow root. The first one was accepted ,还未找到解决方案。 安装方式本组件符合easycom规范,HBuilderX 2.5.5起,只需将本组件导...
springboot学习项目
物有甘苦,尝之者识;道有夷险,履之者知。一一明·刘基《拟连珠》 分享一个能用来学习的项目 Spring Boot Demogitee地址 介绍: 项目简介spring boot demo 是一个用来深度学习并实战 spring boot 的项目,目前总共包含 66 个集成demo,已经完成 55 个。 该项目已成功集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、JdbcTemplate(通用JDBC操作数据库)、JPA(强大的ORM框架)、mybatis(强大的ORM框架)、通用Mapper(快速操作Mybatis)、PageHelper(通用的Mybatis分页插件)、mybatis-plus(快速操作Mybatis)、BeetlSQL(强大的ORM框架)、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存...
TransmittableThreadLocal
我们一直寻找的,却是自己原本已经拥有的;我们总是东张西望,唯独漏了自己想要的,这就是我们至今难以如愿以偿的原因——柏拉图 分享一个TransmittableThreadLocal作为InheritableThreadLocal的拓展 出自阿里,github地址: 1https://github.com/alibaba/transmittable-thread-local 部分描述: JDK的InheritableThreadLocal类可以完成父线程到子线程的值传递。但对于使用线程池等会池化复用线程的执行组件的情况,线程由线程池创建好,并且线程是池化起来反复使用的;这时父子线程关系的ThreadLocal值传递已经没有意义,应用需要的实际上是把 任务提交给线程池时的ThreadLocal值传递到 任务执行时。 本库提供的TransmittableThreadLocal类继承并加强InheritableThreadLocal类,解决上述的问题,使用详见User Guide。 整个TransmittableThreadLocal库的核心功能(用户API与框架/中间件...
数组扁平化flat
还保持着较为清醒的头脑,就决然不能把人生之船长期停泊在某个温暖的港湾。——路遥《早晨从中午开始》 在前端开发中可能会有这样的需求: 将一个数组中的数组拆分出来放到原数组中 那么我们就可以使用flat函数 1[1,[2,3,[4,5,6,[7,8,9]]]].flat() flat中可以传入参数为数字,表示你要拆分数组的层数 如果全部拆分,可以使用flat(Infinity) 1[1,[2,3,[4,5,6,[7,8,9]]]].flat(Infinity) 如果是较为复杂点的对象,则就只能使用map先取出来,再使用flat 1[{ruben:[1]},{ruben:[2,3]}].map(({ruben})=>ruben).flat()
数据库连接自动断开重连不上
凡事总要有信心,老想着“行”。要是做一件事,先就担心着”怕咱不行吧”,那你就没有勇气了。——盖叫天 今天报了这么一个错 数据库连接不上了,重连也失败,超时 解决办法: 加上hikari配置 123456789101112131415161718spring: # 数据源配置 datasource: hikari: connection-test-query: SELECT 1 FROM DUAL connection-timeout: 600000 maximum-pool-size: 500 max-lifetime: 1800000 minimum-idle: 20 validation-timeout: 3000 idle-timeout: 60000 connection-init-sql: SET NAMES utf8mb4 driver-class-name: com.mysql.cj.jdbc.Driver username: ruben passwor...
simple-query
吾生也有涯,而知也无涯。——《庄子》 给Mybatis-Plus提交的PR又过了 https://gitee.com/baomidou/mybatis-plus/pulls/194 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148package com.baomidou.mybatisplus.extension.toolkit;import com.baomid...
程序化的事件侦听器
吾心信其可行,则移山填海之难,终有成功之日。——孙中山 vue官方文档——程序化的事件侦听器 vue官方文档——实例方法/事件 我们可以使用this.$on在vue中侦听一个事件 123vm.$on('test', function (msg) { console.log(msg)}) 然后我们可以在其他地方访问它 12vm.$emit('test', 'hi')// => "hi" 例如这里,我在一个页面中使用vm.$on 而在另一处中使用vm.$emit 可以看到成功调用test事件 基于这一点,我们可以在uniapp中进行页面间的通信 uniapp官方文档 也就是说,在其中一个页面中我们使用uni.$on或者uni.$once,在另一个页面中就可以使用uni.$emit进行调用,前提是uni,$on或者uni.$once必须触发成功 uni.$once触发后就会立马移除该监听器,也就是说只能触发一次 而uni.$on就只能使用uni.$off进行...
mixin
所有智力方面的工作都要依赖于兴趣。——皮亚杰 如果我们需要在各个vue页面使用相同的公共元素 我们就可以使用minxin 官方文档:https://cn.vuejs.org/v2/guide/mixins.html 我们新建一个mixin.js 1234567891011121314151617181920export default { data() { return { name: 'ruben' } }, created() { console.log('this.name', this.name); // 尝试访问调用方属性 console.log('this.prefix', this.prefix); }, mounted() { console.log("mixin mounted"); }, methods: { hello() { console.l...
箭头函数与this指向探究
我有明珠一颗,久被尘劳关锁,一朝尘净光生,照破山河万朵。——柴陵郁禅师 今天研究了下箭头函数与this,发现了一些挺好玩的特性 首先,我们在控制台输入上这段js 123456789101112131415161718192021var handler = { name :'handler', init: function() { let init1 = function(event) { console.log("init1: ", this); let init5 = function(){ console.log("init5: ", this); } init5(); // init5: Window {window: Window, self: Window, document: document, name: '', loca...
数组解构赋值
倘若A代表人生的成功,那么公式是:A =X+Y+Z。X是工作,Y是游戏,z是保持缄默。——(美)爱因斯坦 我们以前从一个数组中获取第一项,可能是如下写法: 12let list = [1,2,3]let i = list[0] 有了解构赋值,可以如下写法: 12let list = [1,2,3]let [i] = list 如果稍微复杂点,例如下面这样从对象中取出来数组: 12let ruben = {hobby:['anime']}let favorite = ruben.hobby[0] 就可以写成: 12let ruben = {hobby:['anime']}let {hobby:[favorite]} = ruben 如果再复杂点 123let ruben = {hobby:['anime']}let achao = {favorite:undefined}achao.favorite =...
