mvc导出excel报错No converter
无翼而飞者,声也。——佚名 今天导出excel报错 1No converter for [class org.springframework.core.io.ByteArrayResource] with preset Content-Type 'application/vnd.ms-excel' 代码如下: 123456789@PostMapping("exportSettle")fun export(dto: CommonDTO) { val writer = ExcelUtil.getWriter() writer.writeRow(Maps.of("key", "value"), true) response.addHeader("Content-Disposition", writer.getDisposition("test.xlsx", CharsetUtil.CHARSET_UTF_8)) response.contentTyp...
SUBSTRING_INDEX
天下兴亡,匹夫有责——顾炎武 分享一个函数 SUBSTRING_INDEX 1SUBSTRING_INDEX( your_column , char, 1 ) 可以像split一样截取片段 例如 1SUBSTRING_INDEX( '1.00' ,'.',1 ) 得到1 例如 1SUBSTRING_INDEX( '1.00' ,'.',-1 ) 得到00
mysql随机查询(二)
活教会我思考,可思考没有教会我生活。——赫尔芩 之前写过mysql随机查询 今天学到一个新方式: 1SELECT * FROM user_info ORDER BY rand() ASC limit 1 非常的简单方便 对应mp的写法: 1List<UserInfo> list = Database.list(Wrappers.query(new UserInfo()).orderByAsc("rand()").last("limit 1"));
map.put踩坑
辱骂与恐吓绝不是战斗。——鲁迅 今天发现一个坑,原来HashMap的put方法返回值并不是put进去的value,而是被覆盖的value或null 其注释也告诉我们 源码也表示 希望大伙不要跟我一样用错了。。。
通过getter获取setter函数
勤劳的家庭,饥饿过其门而不入。——富兰克林 分享一个通过getter获取setter函数 放在:https://gitee.com/dromara/stream-query 1234567891011121314151617181920212223242526/** * 通过getter获取setter * * @param getter getter对应的lambda * @param <T> getter参数类型 * @param <R> property类型 * @return 返回setter对应的lambda */public static <T, R> SerBiCons<T, R> getSetter(SerFunc<T, R> getter) { return getSetter(getter, SerBiCons.class);}/** * 通过getter获取setter * * @param getter getter对应的lambda * @param...
recordrtc
贫者因书而富,富者因书而贵。——王安石 分享一个JavaScript音频 + 视频 + 屏幕 + 画布(2D+ 3D动画)录制库:WebRTC https://recordrtc.org/ https://github.com/muaz-khan/RecordRTC demo:https://www.webrtc-experiment.com/RecordRTC/simple-demos/ 123456789101112let stream = await navigator.mediaDevices.getUserMedia({video: true, audio: true});let recorder = new RecordRTCPromisesHandler(stream, { type: 'video'});recorder.startRecording();const sleep = m => new Promise(r => setTimeout(r, m));await slee...
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 部分了解更多关于本项目的设计初衷。
