自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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使用&lt;Select&gt;标签出现警告如下: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选择器时,&lt;Option&gt;选项中value是必须存在的,不可省略,即&lt;Select&gt; &lt;Option value="lucy"&gt;lucy&lt;/Option&gt; &lt;/Select&gt;,否则会报错...

2018-09-28 22:27:34 529

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除