lambda2sql
哪怕对自己的一点小小的克制,也会使人变得强而有力。——高尔基 分享一个开源项目lambda2sql: https://github.com/ajermakovics/lambda2sql 编写如下的lambda 1person -> person.getAge() < 100 && person.getHeight() > 200 会被转换为 1age < 100 AND height > 200 使用起来非常简单,也非常有意思 123456789101112131415161718192021222324252627282930313233343536373839404142package lambda2sql;import org.junit.Assert;import org.junit.Test;public class Lambda2SqlTest { @Test public void testComparisons() { assertEqual("age = 1", e...
cherry pick
每一个人在世界上都会受挫折,有许多人反而在折断的地方长得最结实。——海明威 分享一个Git技巧Cherry Pick Cherry:樱桃 Pick:摘取 Cherry Pick的作用是将其他分支上的提交,摘取到主分支,就像摘樱桃一样 例如此处使用idea操作(旧版本界面可能按钮位置有不同,但功能应该是支持的) 我们此处需要将master的一个commit,摘取到issues/I63T01分支上,先检出分支 然后选中我们需要Pick(摘取)的分支,右键Cherry Pick 然后对应的提交就可以摘取到当前的分支上 此时我们如果push代码,则会将该commit提交到远端仓库 使用idea的git可视化界面,任何操作都变得非常的容易和简单,这里就顺带以几个提交代码的快捷键作为文章收尾吧 Ctrl+K弹出提交代码界面 编写Commit Message后按下Tab键并填写提交用户名、邮箱(此处填写时可以按上下键和回车选择) Ctrl+Alt+K提交并push 弹出push界面后Ctrl+Enter或者Alt+P即可推送到远端仓库,不需要手舞足蹈地使用鼠标
kotlin的KProperty
浪子挥霍的是他的祖业,财迷葬送的却是他自己。——托·富勒 在mp中使用KtQueryWrapper时,需要如下使用: 1KtQueryWrapper(User::class.java).eq(User::name, "sss").eq(User::roleId, "sss2") 这里的User::name是一个KProperty,其文档:https://kotlinlang.org/docs/reflection.html 可以使用KProperty的name属性获取到其属性名 1User::name.name 当然其还有很丰富的其他属性、函数 在项目中使用其,需要先引入kotlin-reflect依赖 1234<dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId></dependency>
slidev
君子先择而后交,小人先交而后择。——王通 分享一个为开发者打造的演示文稿工具:https://cn.sli.dev/ Slidev (slide + dev, /slʌɪdɪv/) 是基于 Web 的幻灯片制作和演示工具。它旨在让开发者专注在 Markdown 中编写内容,同时拥有支持 HTML 和 Vue 组件的能力,并且能够呈现像素级完美的布局,还在你的演讲稿中内置了互动的演示样例。 它使用了功能丰富的 markdown 文件来生成精美的幻灯片,具有即时重载的体验。它还拥有很多内置的集成功能,如实时编码、导出 PDF、演讲录制等。由于 Slidev 是由 web 驱动的,因此你可以使用它进行任何操作 —— 具有无限的可能性。 你可以在 为什么选 Slidev 部分了解更多关于本项目的设计初衷。
idea项目添加icon
恨,能挑起争端;爱,能遮掩一切过错。——佚名 分享一个小技巧,在idea项目列表能显示icon 方式很简单,直接在.idea目录下添加icon.png即可
chrome控制台小技巧
跟孩子的一颗真挚的心接触,使它暂时忘掉了生活中难以摆脱的困境。——泰戈尔 我们打开chrome控制台检查元素(快捷键ctrl+shift+c) 当我们选中一个元素的时候,此处显示== $0 我们点击控制台,输入$0回车 发现$0就是我们刚刚选中的这个元素 例如此处我需要dromara的这个表格里的项目清单转换为vdoing的卡片格式,选到对应的tbody标签,执行: 1234567let list = []$0.childNodes.forEach(i=>i.children?.[0] && list.push( [["- name: " + i.children?.[0]?.children?.[0].innerText], [" desc: " + i.children?.[3]?.innerText]], [" link: " + decodeURIComponent(i.children?.[0]?.children?.[0].href.replace("...
cloudeon
放松与娱乐,被认为是生活中不可缺少的要素。——亚里士多德 分享一个开源项目:https://cloudeon.top/ Gitee:https://gitee.com/dromara/CloudEon Github:https://github.com/dromara/CloudEon 简化kubernetes上大数据集群的运维管理 一款基于kubernetes的开源大数据平台,旨在为用户提供一种简单、高效、可扩展的大数据解决方案。 快速开始:https://docs.cloudeon.top/en/latest/quickstart/
vueuse
多数人在心底蔑视德,但很少有人轻视荣誉。——沃夫拿格 分享一个vue的组合式api封装库vueuse github:https://github.com/vueuse/vueuse 官档:https://vueuse.org/ 大致用法: 12345678910111213141516171819202122import { useLocalStorage, useMouse, usePreferredDark } from '@vueuse/core'export default { setup() { // tracks mouse position const { x, y } = useMouse() // is user prefers dark theme const isDark = usePreferredDark() // persist state in localStorage const store = useLocalStorag...
js文件名排序
处人不可任己意,要悉人之情;处事不可任己见,要悉事之理。——吕坤 分享一个今天写的简单的文件名排序 12345678910111213141516171819202122232425262728293031323334353637383940function fileNameCompare(a, b) { if (a == null || b == null) return 0; let na = a.split(/[-_.—, (]/) let nb = b.split(/[-_.—, (]/) let maxLoop = Math.max(na.length, nb.length) for (let i = 0; i < maxLoop; i++) { if (!isNaN(Number(na[i])) && !isNaN(Number(nb[i]))) { let num = Number(na[i]) - Number(nb[i]) ...
mp wrapper小技巧
别让你的舌头超越你的思想。——第欧根尼 对于mp的wrapper,直接使用nested+or是可以正确执行的 例如: 1Db.list(Wrappers.lambdaQuery(UserInfo.class).or().eq(UserInfo::getName, "Jon")); 生成 122023-04-13 22:39:54.858 DEBUG 20668 --- [ main] o.d.s.s.p.m.m.UserInfoMapper.selectList : ==> Preparing: SELECT id,name,age,email,version,gmt_deleted FROM user_info WHERE gmt_deleted='2001-01-01 00:00:00' AND (name = ?)2023-04-13 22:39:54.858 DEBUG 20668 --- [ main] o.d.s.s.p.m.m.UserInfoMapper.selectL...
