自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (2)
  • 收藏
  • 关注

原创 mysql group by 分组聚合后,按着聚合的时间进行升序排序,乱序字段组内再排序

业务背景:首先对sd.project_name项目名称进行分组后,但是分组聚合的GROUP_CONCAT的start_time和end_time组合后乱序了,导致的sql结果是这样子的。

2023-07-25 16:33:25 1234

原创 将List结果集转成Map<key,Object>或者Map<key,List>

业务背景:有时候我们需要循环List的某个属性,和固定的这个属性List进行比较,如果使用双层for循环 势必形象性能,所以我们可以将List转换成Map,key值就是那个属性,value就是List的里的对象或者,value就是list里的某些List,上面的其实是两个业务list,其中第一个list是预期曲线的值,横坐标是hour,第二个list是实际曲线的值,横坐标也是hour,但是第二个list,一条hour对应三条数据,因此使用Collectors.groupingBy。

2023-06-23 16:10:29 682

原创 DateUtil常用的一些静态方法,日期转换字符串等

总结了常用的一些日期和日期字符串以及年月计算环比同比的日期类型常用方法。* 字符串 日期时间 转换为日期格式。* 字符串日期时间 转换为 时间格式。* 获取上一年同月和今天同一日期。* 获取今日的日期字符串类型。* 获取本月是本年的第几个月。* 获取上月和今天同一日期。* 获取上一年同月月初日期。* 获取今天是本月的第几天。* 将日期字符串转换为日期。* 获取前一日的开始时间。* 获取今日的环比时间。* 获取本周的环比时间。* 获取本月的环比时间。* 获取本年第一天日期。* 获取本月月初日期。

2023-06-23 15:51:45 382

原创 mysql 拼装生成一个insert/update/delete语句

对于个人本地执行这么写当然是可以的,但是要是发给dba执行,这么写会被喷的,因此要求换一种使用concat 这种拼装sql的形式实现。values(13,'车辆拥堵入口',18,1,0,0);values(13,'车辆拥堵出口',19,1,0,0);values(13,'人员聚集',1,1,0,1);values(13,'人员走失',5,1,0,1);values(13,'人员倒地',4,1,0,0);values(13,'打架斗殴',3,1,0,0);values(13,'周界入侵',9,1,0,0);

2023-06-13 10:09:16 829

原创 读取http链接资源并上传到远程服务器

业务场景:有一段http音频资源,需要将这段音频上传到第三方服务器,但是其中有一个点,读取资源后要么不再服务器生成一份,要么生成后删除。因此采用FIle的一种创建临时文件的技术方案进行读取后,这样就不会再服务器上生成。方法audioNo参数为文件的名称,audioUrl参数是文件的远程http地址。

2023-04-01 10:03:01 306 1

原创 比较两个数据是否一致如果不一致删除交集外的数据

举例:关联区域下拉框 1 ,2 ,3,级联下拉框 001,002,003这种情况,二级下拉框可以不选择。背景:页面数据有个空间需要有个前后比较,如果变化了,需要在数据库中删除交集外的数据,第一次选择了 1 ,2 第二次选择了2,3 这种场景则需要将 1这种数据删除掉。使用not in ,因为是非子查询,因此不会影响sql执行效率!第三步:删除交集外的数据。

2023-01-10 10:35:33 150

原创 Java8 stream排序数值字符串类型降序或者升序,stream groupby分组统计属性值出现多少次和一共有多少属性值出现

Java8 stream排序数值字符串类型降序或者升序,如果不对字符串进行特殊处理,会出现 "77" 排在"111"这样的数值字符串前面的情况,实际77是比111要小,因此需要对字符串处理下。因此使用如下代码段进行排序。

2023-01-07 20:39:59 1912

原创 mysql查询某字符串是否在某字段中精确查找是否存在find_in_set和case when语法规则使用说明

mysql中函数find_in_set可以对字符串在某个字段中是否存在,如果存在则返回含有该查询项的所有记录。

2022-12-24 16:00:54 2493

原创 计算两个数值的同比和环比百分比并保留两位小数

笔者总结了计算两个int类型的数值的同比百分比和计算两个含小数的同比百分比,只需要将参数在传值时传入BigDecimal类型的即可,采用的是四舍五入保留2位的策略,如果其他的策略可自行更改。* 计算两个BigDecimal的百分比。* 计算两个值的百分比。

2022-12-17 22:04:03 1215

原创 踩坑ImageMagick将ios图片文件HEIC格式转jpg/png等

近期业务部门要求将heic文件转成jpg文件格式,刚开始使用了各种ImageReader都不可以,后来接触。,发现程序会一直报这个异常,说明im4java命令找不到imagemagick的引擎文件。安装7.0以后的版本会自动配置环境变量,如果安装过程中遇到有这个选项要打上勾,后,发现可以中间也踩了一些坑,现在做一下记录踩过的那些坑。org.im4java的pom文件依赖包。1、首先需要做的准备工作--下载。和org.im4java的插件。2、安装ImageMagick。

2022-10-27 09:40:45 1761

原创 关于对象转json字符串的几个工具比较

当处理层级关系比较浅的结构时,以上三家是都没有问题,但是当层级关系比较复杂时,譬如A对象里有B对象,List对象,B对象里有List等等就会出现json串丢失的现象。最近对一个大对象转成json字符串存入redis,在开发过程中发现比较有意思的,发现对象中的属性类型是List类型的,无法转成字符串,再次比较一下几个json转串的工具包。1、最常用的阿里巴巴家的fastjson--JSONObject方式。3、谷歌家的Gson方式。

2022-10-26 18:01:45 1344

原创 springboot服务启动正常接口访问404

嫌疑4:dispatcherServlet没有起作用,定时任务是正常运行的,说明服务是启动正常的,但是为什么接口访问404呢,有一种可能是dispatcherServlet这家伙没有正常工作,没有正常工作还有两种可能,一种是版本冲突了,另一种是懒加载了。问题背景:最近架构一个新项目,在本地开发测试正常,但是测试环境docker一部署,定时任务也能正常运行,但就是controller接口访问404,各种常规问题都找了死活儿不行。以下是按着正常的思路去排查的:(以下各种 嫌疑都可能找到问题解决方案,供您参考)

2022-09-19 11:40:15 5256

原创 mysql字符串类型的数字比较大小sql该如何写呢

然后排查sql,发现数据字段类型竟然是varchar类型的,字符串类型比较大小他是从最左位开始比较,第一位9就认为比4大,因此最大的数是99,所以需要对字符串类型的值进行转换成数值类型然后再进行比较。今天上线一个需求,线上产品验收发现一个bug,lot号范围是1-99,而实际数值应该是1-449才对。

2022-09-07 15:22:58 3170

原创 使用腾讯地图API根据详细地址反查坐标经纬度

业务背景:地图数据需要某个地点的详细坐标,通过调研,腾讯地图的API较为开放,个人每日10000次,并发5次/秒,企业1000000万次,基本符合业务需求。

2022-06-24 09:50:17 2964 1

原创 Mysql我国省市区字典数据

业务背景:几乎每个公司都需要一套针对全国省市区的字典数据,有的数据分开了三张表,有的数据不是很全,自己整理了一张省市区一张表的数据,用于备用。

2022-06-21 14:35:54 2569 6

原创 Guaua本地缓存结合Redis缓存使用demo

业务背景:客户端请求的快慢查询速度排序,本地服务器内存缓存 > redis等缓存 >数据库查询,因此一些业务是可以缓存在本地内存的,而java自带的Map,CurrentHashMap因此使用Guaua的Cache缓存会更加适用。......

2022-06-17 10:57:33 427

原创 Java读取https图片

参考以往的代码,需要什么SSL认证什么的建立链接,安全没必要啊,笔者用下面一种方式不需要建立SSL 认证就可以读取到https的图片流

2022-06-16 10:02:39 1286

原创 关于mysql单表海量数据分页查询优化的一个思路

单表数据量超几千万,查询越来越慢,需要优化,在索引等优化后仍不能满足条件,需要在mysql底层原理进行优化

2022-06-15 14:31:32 179

原创 必须使用@Autowired注解才能注入bean的几种情况

在开发过程中发现并不是所有的bean注入是@Autowired和@Resource两个注解都可以的,笔者总结了下以下两种情况必须使用@Autowired @Override public void init(ServletConfig config) throws ServletException{ SpringBeanAutowiringS......

2022-06-14 17:58:58 940

原创 关于Java应用服务器隔断时间卡死状态的一种场景解决

问题场景:公司有几个项目总是在运行一段时间后,总是出于卡死状态,接口请求后无任何响应

2022-06-14 11:38:21 1726

原创 查询mysql定时任务(事件)及事件的内容

公司的一部分业务处理是使用的mysql的事件处理的,发现并不是程序处理的,因此要查询下是否是mysql的事件执行的,因此查询库的定时任务。步骤一:查询定时任务是否开启show variables like '%sche%';如果开关是ON状态,说明定时任务是开启的步骤二:查询所有定时任务select * from mysql.event;其中有两个字段。一个是name,一个是body,name是定时任务名称,body存的是执行体步骤三:查看指定定时任务的执行体内容sel.

2022-05-30 13:33:44 8660

原创 Java解压缩zip包+rar包兼容rar4和rar5兼容多操作系统

业务背景:需要将zip包或者rar包进行解压缩,需要兼容rar4和rar5两种版本maven 依赖包:<dependency> <groupId>com.github.junrar</groupId> <artifactId>junrar</artifactId> <version>3.0.0</version></dependency><!-- 解压rar5

2022-05-12 10:51:25 5239 7

原创 jdk8+List数据根据某个属性去重

场景:由于特定查询,将主键重复的但是其他部分属性的对象数据进行了合并,但是想要去重掉主键一样的数据。实现方法:public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>(); return t -> seen

2022-05-12 10:25:48 1339

原创 取分组中每组里的第一条/最后一条数据

场景:有时候我们需要取每类商品里的价格最高或者优先级最高的那一条,分组肯定使用group by然后结合使用聚合函数min()或者max()对数据进行筛选示例如下,具体场景为:我们每件商品有申请记录,想取出每件商品的优先级最高的和申请的人数,则如下实现即可 SELECT min( bmgi.MEMBER_GRADE ) AS grade, bicd.ITEM_ID as itemId, count( DISTINCT bicd.MEMBER...

2022-04-08 13:26:24 1179

原创 关于Java面试过程中常见问题的整理(二)

1、Dubbo的集群容错策略① 默认的失败重试策略,Failover Cluster:失败重试重试2次,一共执行3次,这通常用于读操作或者具有幂等的写操作② Failfast Cluster:快速失败当服务消费方调用服务提供者失败后,立即报错,也就是只调用一次。通常这种模式用于非幂等性的写操作③Failsafe Cluster:失败安全当服务消费者调用服务出现异常时,直接忽略异常。这种模式通常用于写入审计日志等操作④Failback Cluster:失败自动恢复当服务消费端用

2022-01-19 14:34:31 392

原创 关于Java特性多态的理解

Java三大新特性之一--多态,老大难,估计工作十来年的小伙伴对于多态也有很多玩不明白,笔者也一直蒙圈中,今天找了一个小demo,想对多态有个深入的了解,demo介绍:A类是父类,B类继承A类,重写show(A obj)方法,通过下面各种多态的调用,方便理解对象的多态使用。static class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { .

2022-01-06 16:33:46 2343

原创 Springboot版本的WebSocket向app端推送消息实现

业务背景:app端需要实时接收到服务端的交易价格信息,肯定无法实时主动去轮询拉取pull操作,需要一种push实时数据到app端,因此websocket技术正好应用于此。技术栈选型:1 传统型 使用@ServerEndpoint注解实现2 前沿性 使用springboot 三个核心 一配二拦三监听一配指的 是注册并配置websocket的handler监听器和拦截器二拦指的 是拦截客户端请求的websocket的参数和权鉴服务三监听指的 是监听各种事件(请求连接/接收消息/关闭连接)

2021-12-21 15:19:20 5208 2

原创 关于Java面试过程中常见问题的整理(一)

最近遇到了一些mysql的专用术语,然后整理下以备自己及需要的朋友使用1、覆盖索引 回表2、一级索引 二级索引3、mysql的mvcc原理4、mysql的各种锁行锁 包含 S读锁/共享锁和X写锁/排它锁S读锁,其他事务可以继续加共享锁,但是不能继续加排他锁X写锁,一旦加了写锁之后,其他事务就不能加锁了如何加读锁和写锁LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},…]......

2021-12-15 17:31:34 1781

原创 mysql其中有两条重复数据将多余的重复数据状态置失效

程序问题生成了两条重复数据,当bug修复后,需要将多余的那条数据状态置成失效,因此需要将数据的主键id查找出来,最后进行update state=0思路步骤一:先将重复数据的member_id查找出来SELECT member_id FROM base_member_grade_info GROUP BY member_id HAVING count(*)>= 2步骤二:然后将最早的那一条的update_time查找出来,需要带上member_id并且按着member_id进行分组

2021-12-10 14:39:39 881

原创 Spring前一次定时任务没执行完,下次任务要求再次执行

业务背景:正常开发情况下,spring的定时任务只有当前任务线程执行完毕后才会扫描下一次定时任务,即为默认的同步任务。譬如定时表达式@Scheduled(cron = "0 0/1 * * * ?")意味当前定时任务理想情况下需要1分钟跑一次,但是当遇到有时间要求的定时任务时,同时又有新的增量任务进来时,则需要启动异步定时任务。如果采用的是spring自带的Scheduled注解实现的话第一步在springboot启动类上添加@EnableAsync注解启动异步任务第二步在实际的定时任务

2021-11-10 13:53:08 9525

原创 企业微信审批Java版

业务背景:公司目前的审批是走erp后台,然后还得走纸质的打印出来审批,影响效率,现在需要在企业微信直接提交申请单,然后审批,最后将审批数据同步到erp后台。第一步:验证回调Url,在配置回调url时,企业微信后台需要验证,因此需要写一个回调验证接口/** * 回调接口接受企业微信验证 * @param msgSignature * @param timestamp * @param nonce * @param echostr * @param response */@GetMap

2021-09-28 11:50:07 3491

原创 Mysql取出第几条数据sql实现

业务背景:在实际的开发过程中我们经常遇到规则为第几第几的数据,譬如薪水第二高霍着薪水前从第二到第五高的数据编写一个 SQL 查询,获取 Employee表中第二高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述Employee表,SQL查询应该返回200 作为第二高的薪水。如果不存在第...

2021-08-16 16:57:04 3218

原创 集群多机部署定时任务使用redis分布式锁

定时任务如果不进行控制,就会在集群环境下重复运行,除了使用qrtz或者类似xxl job等方式进行控制的,还可以使用redis分布式锁进行控制,获得锁对象的才可以进行业务操作代码实现:public void incrNewsViewCount() { Boolean flag = redisTemplate.opsForValue().setIfAbsent("news_count_incr_switch", "lock",60*60*3, TimeUnit.SECONDS); i

2021-08-13 14:36:51 2797

原创 SQL使用窗口高级函数查询连续多条或者更多数据

需求题干:表:Stadium+---------------+---------+| Column Name | Type |+--------------- +---------+| id | int || visit_date | date || people | int |+---------------+---------+visit_date 是表的主键每日人流量信息被记录在这三列...

2021-08-06 14:29:04 1901 2

原创 Mysql多字段多重排序小技巧

业务背景:当我们在实际开发过程中经常会遇到排序多重规则,按着时间倒序,按着不同类型不同的升序降序规则,使用case when then end 进行处理 示例如下:SELECT ali.AUCR_ID AS aucrId, bai.AUCR_ABBRE AS aucrAbbre, bai.AUCR_APP_LOGO AS aucrLogo, ali.LIVE_ID AS liveId, ali.LIVE_NAME AS li...

2021-08-04 15:16:31 1706

原创 sql查询每个部门前三高工资的员工

Employee表包含所有员工信息,每个员工有其对应的工号Id,姓名Name,工资Salary和部门编号DepartmentId。+----+-------+--------+--------------+| Id | Name | Salary | DepartmentId |+----+-------+--------+--------------+| 1 | Joe | 85000 | 1 || 2 | Henry | 80000 | 2 ...

2021-08-04 13:30:18 5495

原创 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度

publicstatic intlengthOfLongestSubstring(Strings){int[] last = new int[128];for(int i = 0; i < 128; i++) { last[i] = -1;}int n = s.length();int res = 0;int start = 0; // 窗口开始位置for(int i = 0; i < n; i++) { //pwwdkw int index ...

2021-08-03 15:55:42 356

原创 反射将不同对象转化为map

业务背景:当多次请求一个方法时,需要将对象转化为map,不需要每次业务代码进行转换,可以通过反射自动将属性和属性值 转换成map的key ->value形式,这样轻侵入业务代码,省去了很大的工作量。通过反射写一个转化工具类,但是考虑到对象存在继承父类属性的因素,所以要在反射中考虑通过反射获取父类对象实例,然后将属性key和属性值value,put到map散列表中。代码实现:import java.lang.reflect.Field;import java.util.HashMap;

2021-07-27 16:57:58 274

原创 算法每日一练:冒泡排序/插入排序

冒泡排序是将一无序排列的数组序列进行从大到小或者从小到大进行排序工作原理:对数组进行每一轮中每一个元素进行大小比较,并将较大的元素进行后置(位置交换),假设数组元素总共n个,则需要进行n-1轮大小比较第1轮 找出最大的第2轮 找出次大的........第n轮 找出次n大的原理很好理解private static void bubbleSort(int[] nums2) { int temp; int count=1; for(int i=0,s...

2021-07-26 15:52:04 302

原创 算法每日一练:二分查找

二分查找算法的前提是序列需要有序排列,升序或者降序都可二分查找的基本原理是折半比较,取序列的中间元素进行和目标元素的大小比较,如果大于目标元素,说明目标元素在当前对半元素的左侧,则下次查询向左查询即可,则把最右侧的元素更改为当前对半元素的前一个,如果小于目标元素,则说明目标元素在当前对半元素的右侧,则下次查询向右查询即可,则把最左侧的元素更改为当前对半元素的后一个,再进行对半查找,直至找出最后的目标元素。第一种写法:while循环写法public static int search(int[]

2021-07-23 14:49:17 184

mmseg4j-solr-2.3.0.jar

mmseg4j中文分词器 mmseg4j-core-1.10.0.jar mmseg4j-solr-2.3.0.jar两个主要依赖包

2021-06-07

anotherRedis1.3.7z

Another.Redis.Desktop.Manager.1.3.4.exe 和配置参数说明 Github国内镜像,供下载使用,有问题可移步到 https://github.com/qishibo/AnotherRedisDesktopManager

2020-05-25

空空如也

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

TA关注的人

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