- 博客(21)
- 收藏
- 关注
原创 【学习总结】项目中用到的caffeine缓存
一、使用背景:在开发中经常用到缓存,首先想到的是redis,但是我们只想缓存少量的数据,并且只是给代码内部使用。redis固然好用,但是每次练级也是需要网络io的,所以本地缓存使用就有必要了。二、用过的本地缓存:刚开始了解到guava cache可以作为本地缓存,但是了解到caffeine性能更优于guava cache,而且springboot2.0开始不再支持guava cache了,而是用了caffeine代替。一张图说明问题:三、怎么定义不多说,先看看怎么在项目中使用。
2021-04-15 11:25:34 2606
原创 【采坑日记】dynamic-datasource-spring-boot-starter本地IDEA启动正常,打包后运行jar包出错
今天遇到一个奇怪的问题:本地IDEA启动正常,打包后运行jar包出错;具体报错信息如下:奇怪的是找不到SeataDataSourceProxy类,在我的项目中并没有使用到seata分布式事务。查找问题如下:由 dynamic-datasource-spring-boot-starter 入手:查找相关的引入文件发现在pom中有引入io.seata的包(图片中在默认情况下是红色的),查询对应的类发现seata默认是不加载的。解决方案:在pom中引入对应的sea.
2021-01-18 14:33:02 1319
原创 【算法】求开根号,使用二分法
一个算法题:使用二分法求一个数的开根号的值。思路:取中间值,计算中间值的平方是否等于这个值? 1、如果等于,则返回中间值(就是结果值); 2、如果大于,那取下方的区间,继续求值; 3、如果小于,那取上方的区间,继续求值。大致的思路就是这样,需要考虑的是保留几位小数的问题,如果中间值等于边界值,则也返回中间值。递归套路,代码如下:import java.math.BigDecimal;public class Mai...
2020-12-21 13:52:40 3368
原创 【代码小技巧】LocalDate、LocalDateTime、LocalTime日期使用总结
1、获取日期的最小、最大时间LocalDateTimeLocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);//2020-10-29 00:00:00LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);//2020-10-29 23:59:592、获取本年的最小、最大日期LocalDateLocalDa
2020-10-29 17:53:45 1758
原创 【踩过的坑系列】OKhttp访问其他
开发中遇到这样的情况:RestTemplate访问其他服务失败,但是postman是可以正常访问的。查找的很多情况,都没有解决问题,实在是头疼。想到有人之前推荐使用OKhttp来替代RestTemplate,而且非常方便。故自己尝试使用,并解决问题。由此,把自己的方法分享出来。是真的好用。get请求如下:JSONObject anString = null;String url = baseurl+"/admin/dept/tree";OkHttpClient client = new
2020-10-16 17:18:27 441
原创 navicat premium15连接oracle失败的问题
今天是要navicat premium连接数据库,怎么弄都不行,网上找了很多资料说是OIC.DLL文件的问题,不管怎么改都没用。可能还有一个问题,就是版本的问题:32位我下载的是64位的navicat premium15,实际上公司的oracle是32位的,导致出现问题。建议确认是不是32位或64位。下载对应的版本后再测试,按照情况修改对应的OIC.DLL文件。ps:这个问题弄了很久才弄好,记录一下。希望能有所帮助。...
2020-09-09 16:36:28 1296
原创 vue+springboot实现语音控制页面操作
工作中遇到了一个需求:语音控制大屏。说的清楚一点就是,使用麦克风说话来控制页面的跳转等操作;如:打开xxx,页面响应对应的操作。此功能提供两种实现方案参考,第一种是在页面上提供按钮,页面录音,转向后台解析语音,转成命令,再返回给前端实现相应的操作;第二种方案是使用企业微信创建应用,使用手机录音转向后台解析,再返回给前端实现相应的操作。这里两种方案只是录音的方式不同,后台的思想是相同的。这里踩的坑分享出来,提供大家参考。会提供主要的实现代码,包括前端、后台。第一种方案:在页面上实现录音...
2020-07-10 16:10:18 6327 2
原创 java中list数组排序问题 List中Map数组根据map中两个或多个字段排序
工作中有个需求,list数组先根据相似度值排序,然后再按照名称的长度排序,由大到小降序。使用到JAVA8的特性,特此记录一下:不多说,先上代码:private List<Map<String, Object>> sortList(List<Map<String, Object>> list){ return list.stream().sorted(Comparator.comparing(AipClientController::co
2020-06-29 11:34:30 4901
原创 mybatis-plus执行sql时会报错,但是sql是可以正常执行的
sql语句中有"()" 、"[]"和其他特殊字符时执行报错,但是该sql能够在Navicat连接数据库中正常执行请参考下面连接:https://blog.csdn.net/drose29/article/details/103893228只测试了"()",其他的还没有测试,要在mapper文件中添加@SqlParser(filter=true)List<Map&l...
2020-04-10 10:56:10 5174 1
原创 后台导出txt文件、excel文件,前端用Blob接收
工作中根据实际需要将查询数据库中的数据生成txt文件,而前端使用Blob接收。后台代码如下:private void getData2Stream(List<Map<String,String>> list,HttpServletResponse resp)throws Exception{ resp.setCharacterEncoding("U...
2020-03-26 09:48:54 1131
原创 【学习】设计模式--第三种:装饰者模式
装饰者模式(Decorator Pattern)--在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能(百度百科)。UML图:说明:1、Component抽象类或接口,用于定义最核心、最基本的对象。 2、concreteComponent具体的对象,实现Component抽象类或接口;最核心、最基本的实现,需要装饰的就是这个对象。 ...
2019-11-11 22:29:50 153
原创 【学习】设计模式--第二种:策略模式
策略模式--是指对象有某个行为,但是在不同的场景中,该行为有不同的实现算。UML图:主要思想:1、通过Context类来配置,维护一个Strategy对象,屏蔽客户端对策略、算法的直接访问,封装可能存在的变化; 2、Strategy类是抽象类或者接口类,所有的具体算法都要实现(继承)该类。例子:商场优惠活动,如打8折、满100减50等。1、...
2019-11-02 12:27:45 163
原创 【记录】Vue+Element使用输入框带远程搜索功能模块修改下拉框样式
使用的组件<el-autocomplete> 在默认情况下下来框的大小与输入框一致,当内容过长时,不能显示的部分就会隐藏起来。考虑使用两种解决办法:1、当时想用<el-tooltip>文字提示,虽然有用,但是当返回的数据过多时,会有卡顿的情况,应该是组件渲染的问题了,没找可以解决的办法。2、修改下拉框的宽度,查找官方文档,有popper-class属性可用。...
2019-10-28 15:55:46 1150
原创 【记录】vue element表单数字或小数校验遇到的坑
做个表单输入数字的校验,要求可以是小数,最多输入小数点后4位。在网上查找了方法,有个放错了地方,导致没有生效,在此记录一下。 data() { var isnumber = (rule, value, callback) => { if (!value) { callback(); ...
2019-10-25 18:13:54 4523
原创 【原创】前端Vue Element SheetJs实现excel自动导入功能
在工作中有个excel导入的功能需求,有两种实现方式,一个是在前端处理,另一个是在后端处理。我使用前端处理方式实现该功能。主要用到SheetJs插件:SheetJs的GitHub连接。由于需要多次使用该功能,我将其封装成功能模块,提高代码使用效率(再也不要复制粘贴一大段代码了)。先上封装的代码:import XLSX from 'xlsx'///excel导入功能使用:/...
2019-10-24 15:07:16 4245 1
原创 【学习】设计模式--第一种:简单工厂模式
简单工厂模式--简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。由一个工厂类创建实例对象。一个简单的计算器设计:父类:(所有的算法都继承该类,子类都复写getResult方法)public class Operation { private double numberA; private double numberB; public double ge...
2019-10-16 23:07:01 119
原创 vue+element实现动态添加非空验证效果
在工作中遇到了这样的需求,要求实现在页面上选择某个选项后,查找后台配置表来判断某几个字段是否必填,如果必填,则修改rules验证规则,添加{required:true},必填要求。实现思路:根据要求,只需要在rules中对应字段名称添加"required:true" 即可。观察到rules是一个对象结构数据,可以使用ES6语法修改动态修改数据。基本结构如下: rules...
2019-09-27 14:30:31 2757 1
原创 【记录】使用js代码修改fineBI里控件字体大小
由于实际需求,需要修改finebi中的表格字体大小,不能直接修改样式css文件,考虑使用js后台控制修改。参考资料如下:根据刷新功能修改代码:setTimeout( function () { var a = 0; setInterval( function () { //获取选择器名称 ...
2019-01-04 13:43:42 1864
转载 【记录】react警告:Warning: Encountered two children with the same key解决办法
问题:在做前端项目时使用react+ant design使用<Select>标签出现警告如下:Warning: Encountered two children with the same key, `.$高峰出车率`. Keys should be unique so that components maintain their identity across update...
2018-11-16 21:56:56 42205 5
原创 【记录】获取不到数据request.getParameter()问题
今天遇到做一个页面向后台提交表单时报错的情况,经过断点排查发现request.getParameter(“xxx”)获取不到参数,经过测试发现表单提交的参数中带有%的特殊字符串,导致request.getParameter(“xxx”)取不到数据,解决办法:只需要将这个%在参数中去掉就行。特此记录一下,下次别出现这个问题了!!有问题的表单提交如下:FixJSON: {"_method":...
2018-11-16 15:17:32 2131
原创 【记录】使用antd-design遇到的问题
这次做前端使用到了antd-design,主页:https://ant.design/docs/react/introduce-cn。使用Select选择器时,<Option>选项中value是必须存在的,不可省略,即<Select> <Option value="lucy">lucy</Option> </Select>,否则会报错...
2018-09-28 22:27:34 529
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人