余生一个帆
每个男人都有一个大G梦
展开
-
Springboot接收参数的21种方式
最近一直在忙着开发项目(ps:其实有些摆烂),好久没有更新博客了,打开csdn一看好多网友留言私信,继上篇博客(我是如何实现HttpGet请求传body参数的!,网友议论纷纷,各抒起见。今天正好抽出时间总结一下Springboot接受参数的21种方式(Post、Get、Delete),一并罗列出来,如果小伙伴们有其他方式也可以留言或私信交流!原创 2024-06-05 15:12:47 · 178 阅读 · 0 评论 -
Java集成Poi写入word文档
向word中动态写入数据,并且将写好的word文档下载给用户。原创 2023-09-16 12:23:26 · 629 阅读 · 0 评论 -
Websocket集群(使用redis订阅发布实现)
前言项目使用的springcloud框架,并且是集群搭建。这时服务实例就会存在相同的多个服务,这时我们的websocket服务就遇到了一个问题,如下图:需求:系统中有个系统通知的功能,管理员发布通知,全员即可查看到,要求实时性。解决思路:1.使用Rabbitmq使用广播队列2.使用Redis的发布订阅(官方文档)3.评论区见。。。实现效果:管理员发布通知:不同用户同时收到消息:如何实现:...原创 2021-12-03 09:45:10 · 1556 阅读 · 2 评论 -
Redisson实现分布式锁
Redisson是什么?如果你之前是在用 Redis 的话,那使用 Redisson 的话将会事半功倍,Redisson 提供了使用 Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对 Redis 的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)分布式锁必须要满足的四个条件首先,为了确保分原创 2021-07-05 15:54:04 · 200 阅读 · 0 评论 -
Springboot集群定时任务+Shedlock
我们常见的几种定时任务框架:1.XXL-JOB:是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用(推荐使用)2.Timer:是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行(用的较少)3.Spring Task:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且原创 2021-05-28 11:52:49 · 623 阅读 · 0 评论 -
Springboot动态创建mysql表
最近遇到一个需求,今天正好有时间分享一下。需求描述:用户通过web页面动态创建数据库表,包含表名称,表字段值,表结构。请求参数样例:请求参数:{ "tableName": "user", "list": [ { "fieldName": "name", "fieldType": "varchar", "fieldExtent": 100 }, {原创 2021-03-26 13:21:19 · 2019 阅读 · 6 评论 -
根据经纬度查询两点距离(sql)
前言:app可以获取当前所在位置的经纬度,根据当前经纬度,查询当前位置距离其他地点之间的距离;方案一:高德地图(百度地图,腾讯地图等)提供api。根据两点经纬度,计算出实际距离;方案二:三角函数的输入和输出都采用弧度值其中longitude是经度,latitude是纬度;a=latitude1 - latitude2为两点纬度之差 b=longitude1-longitude2 为两点经度之差;6378.137(KM) 为地球半径方案三:使用sql在代码中计算两点距离由于地球是球体,根据:原创 2021-01-15 22:45:02 · 2784 阅读 · 0 评论 -
使用redis分布式锁实现“茅台”秒杀
什么是分布式锁?分布式锁就是:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。举个大白话一样的例子:假设共享的资源是一辆共享汽车,这辆车在一个时间只能有一个人去驾驶,分布式系统就好比是要驾驶车的人,分布式锁就是保证这个时间点只能一个人驾驶,并且只有这一把钥匙。然而,有好多人要租车,但是要按顺序来排队,第一个人拿着钥匙去用车,下一个人要等着,当第一个人用完车把车还回来,下一个人才能继续驾驶,然后就是以此类推。分布式锁的特点为了保证分布式锁的可用性,必须要满足下面的四点条件!1.互斥性原创 2021-01-09 18:23:59 · 200 阅读 · 0 评论 -
Springboot集成RabbitMq实现延时队列
前言:先说先业务场景,如钉钉打卡app,公司规定9点上班,原创 2020-12-11 10:46:33 · 269 阅读 · 1 评论 -
Excel动态导入数据到数据库
前言(PM)我想要的效果:我知道数据库有什么字段,也知道表名,我就是想通过excel表格动态插入数据库,就这么豪横!菜鸟分析(攻城狮本人)1.表名:数据库真实存在的表(可变)2.字段名:数据库字段(可变,有时会多字段,有时会只插入一个字段)3.数据:当然随着字段更改,数据也对应分析:我们首先要清楚这些数据插入到哪张表,插入到哪些字段,所以我们要先解析出第一行,并且拿到is_execute这一列所有的值判断是否执行插入,然后再解析出第三行所要插入的数据;(第二行是描述暂忽略)所用技术点:spr原创 2020-12-01 20:51:48 · 961 阅读 · 1 评论 -
Springboot使用@Validated(优雅的代码)
背景回忆一下我们没用使用过@Validated时:上图是controller层,新增用户信息接口,为了校验参数合法性,真是费了好多 if else 判断,代码可读性较差,开发效率还很低,想想都很头疼啊!!!用什么好的解决办法吗?写这么多 if else 我也很烦,很累,很不开心!答案是有的,俗话说办法总比困难多,接下来我们就走进 Validation 的世界 。。。使用注解 @Validated 后我们接口的样子:有没有感觉清爽很多,说了这么多,大家也对比了,到底这个注解是干嘛的呢,如何原创 2020-10-28 20:17:30 · 2522 阅读 · 4 评论 -
1024程序员节快乐!
女朋友:1024?什么1024?你生日?我:1024程序员节(码农节)是广大程序员的共同节日!女朋友:为什么定为10月24号为程序员节日呢?我:1024也是程序员自发认定的节日,表明10月24日,是程序员节,这是由于信息量的单位1GB=1024MB,1MB=1024KB,1kb=1024Byte,程序员们就把1024作为了一种表示自己身份的符号1024。女朋友:是不是1024你们程序员都不用加班呀?我:。。。。。(无语了,这个不好说,因为我们程序员工作都是7*24的!一出bug第一时间就要修复;以原创 2020-10-24 12:34:37 · 513 阅读 · 1 评论 -
Java生成唯一id的几种方式(已验证)
1.数据库自增序列方式数据库方式比较简单,比如oracle可以用序列生成id,Mysql中的AUTO_INCREMENT等,这样可以生成唯一的ID,性能和稳定性依赖于数据库!如mysql主键递增:2.系统时间戳这种方式每秒最多一千个,如果是单体web系统集群部署方式,可以为每台机器加个标识!(并发量较大不建议使用) /** * 根据时间戳生成唯一id */ @Test public void test(){ SimpleDateFormat原创 2020-10-22 16:34:09 · 35512 阅读 · 3 评论 -
Springboot集成Zxing生成二维码
前言:需求描述:用户知道链接地址,但是不想点击链接,想通过扫码访问到指定网站;这时用户就只给我一个url地址,让我给他生成一个二维码!对Zxing的了解: ZXing,一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(“zebra crossing”)是一个开源的、多格式的、用Java实现的一维/二维条码图像处理库,具有到其他语言的端口。先看一下实现效果:代码实现过程:1.引入谷歌的zxing依赖原创 2020-10-21 16:00:32 · 673 阅读 · 1 评论 -
Springboot整合JWT(已验证)
前言:什么是JWT?答:J(json),W(web),T(token)是一种基于JSON的、用于在网络上声明某种主张的令牌(token)Jwt通常是由三部分组成:头信息(header), 消息体(payload)和签名(signature)。...原创 2020-09-24 17:51:09 · 1084 阅读 · 0 评论 -
Springboot定时任务
前言:项目需求:活动到点要自动结束(如 活动结束时间为2020-08-20 18:00:00),定时任务每一分钟执行一次;分析:1.首先我们可以确定的是要写一个定时任务;2.获取当前时间(精确到毫秒);3.取出活动结束时间;4.活动结束时间 <= 当前时间 则修改状态为 已结束;代码实现:启动类(注意:加上@EnableScheduling 注解) @SpringBootApplication @EnableScheduling //开启定时任务 publi原创 2020-08-20 19:08:18 · 270 阅读 · 0 评论 -
云服务器搭建Gitlab
前言:作为一名程序员,我们平时自己总结的一些代码,我们要保存起来,难免少不了自己的代码仓库,平常我们用的比较频繁的SVN和Gitlab。今天就分享一下在云服务器搭建一个属于自己私人gitlab服务。(我这里使用的是腾讯云centos 7 64bit系统)搭建步骤:1.安装依赖软件yum -y install policycoreutils openssh-server openssh-clients postfix2.设置postfix开机自启,并启动,postfix支持gitlab发信功能s原创 2020-08-06 16:22:11 · 708 阅读 · 0 评论 -
抽奖业务
可略过。。。受疫情影响,公司发展受限利润下滑严重,由于我们这群天真无鞋的攻城狮们拥有大无畏的牺牲精神。最终7月份为公司利润搬回一局。不管多困难,我们对老板的不抛弃不放弃精神深深感动了老板。老板为了表示感谢,也给大家意思意思,所以准备举行一场活动,给大家发些福利。大家看了活动清单,其中一个环节为抽奖环节,但是该怎么抽呢?如何保证公平公正公开呢?这时项目经理发话了,这个需求就由公司最帅的人来写好了,(总是天降大任于斯人也)这个锅就这样甩到了我的头上!思路废话不多说,直接上代码import java.原创 2020-07-22 17:06:45 · 254 阅读 · 2 评论 -
Springboot导出Excel表格
controller @ApiOperation("后台管理-导出开奖信息") @IgnoreAuth @GetMapping("exportPrizeExchangeInfo") public void exportPrizeExchangeInfo(BevActivitySettingIdReq req){ response.setCharacterEncoding("utf-8"); response.setContentType("mu原创 2020-07-17 19:04:14 · 923 阅读 · 1 评论 -
一文彻底搞懂Mysql索引
一.什么是索引?索引是帮助MySQL高效获取数据的排好序的数据结构(本质是一种优化查询的数据结构)二.为什么要使用索引?索引的出现就是为了提高查询效率,就一本新华词典,我们通过目录快速锁定要查询的“字”在那一页。其实说白了,索引要解决的就是查询问题。三.索引的优缺点?优点:可以有效的提高查询效率;可以加速表与表的连接;可以减少查询中分组和排序的时间缺点:占据磁盘空间;创建和维护索引消耗时间;对表中的数据进行CRUD时,索引也要同时维护,降低了数据的维护速度。四.索引的设计原则?原创 2020-06-20 16:18:46 · 379 阅读 · 0 评论 -
余生一个帆的热鸡汤(4)
1.人生所有的努力,无非就是两种结果,见笑或者见效,做好遇见前者的准备,做好遇见后者的从容。2.会遗憾,但不会后悔。会争取,但不会强求。能低头,但有底线。会妥协,但有原则。希望这能是你。3.日出东方催人醒,不及晚霞懂我心,辞别会有再见日,终有良人伴春秋。4.熬过无人问津的日子,才配得上诗和远方,没有动态的日子都在认真生活。5.人在年轻的时候总会有一段穷困潦倒的时光,在这段时光里,你会认清身边的一些人,读懂身边的一些事。6.受伤害能磨练你的心志,受欺骗能增长你的见识,受遗弃会教你自立的本领,受批评能原创 2020-06-04 22:39:51 · 444 阅读 · 1 评论 -
微服务搭建(一)云服务器下安装consul
下载:进官网下载consul ,下载64位的版本;上传:下载后将consul压缩包上传至云服务器;解压:unzip consul_1.7.2_linux_amd64.zip检查:检查是否解压成功:./consul运行:./consul agent -dev -ui -node=consul-dev -client=你的私网ip(云服务器私网:腾讯云本地ip;云服务器公...原创 2020-04-21 19:39:26 · 634 阅读 · 0 评论 -
2020最新面试题(含答案)
1.sql中有select,from,where,group by,order by,having请问sql执行时的顺序是怎样的?答:前面从from(表)where(按条件取出数据)group by(再对取出的数据分组)having(分组后再过滤得到最新数据集)select(按照设置列从数据集里面去除数据)order by(对取出的数据进行排序)执行顺序:from–where–group by...原创 2020-04-20 17:02:24 · 17151 阅读 · 22 评论 -
短信验证码
大家好,上一篇写了图片验证码的业务逻辑和实现过程,本篇博客主要介绍手机验证码业务。前言公司系统在注册页面有这么一个手机号验证的业务场景,公司大佬比较忙,不顾的来写这个简单的业务需求,所有就交给我来写了。实现思路整个流程:用户填写手机号,并请求获取验证码;1.用户填写手机号,发送给后台;2.后台校验手机号是否合法(正则校验),合法就生成一个4位/6位的随机数字,不合法就提示前端 “手机号...原创 2020-04-10 23:06:45 · 5501 阅读 · 17 评论 -
图片验证码
前言什么是图片验证码?先参考一个某宝注册时的form表单(我们在一些网站注册的时候,经常需要填写以下图片的信息)为什么要写图片验证码?这种图片验证方式是我们最常见的形式,它可以有效的防范恶意攻击者采用恶意工具,调用“动态验证码短信获取”接口进行动态短信发送, 导致接入用户短信被刷,造成账号余额损失。同时这种动态发送方式会朝许多无关的手机用户,发送很多验证码短信,导致手机用户被骚扰,甚至引...原创 2020-04-03 16:47:45 · 1395 阅读 · 0 评论 -
图片上传到阿里云OSS
需求分析:平常我们上网在所看到的图片,src的值都是一个url路径。点一下这个路径就可以打开这个图片(Miraculous)这个url路径是如何产生的呢?我们如何打开这个图片的呢?这个url是存在哪里呢?带着上面的疑问来看下面的博客,满足你的需求和欲望!1.功能分析:前端上传一个图片到后台,后台接受后上传至服务器,服务器返回我们一个图片地址URL路径 (我这里使用的是阿里云的OSS存储)后台拿...原创 2019-11-16 13:48:39 · 702 阅读 · 0 评论 -
支付宝支付(沙箱环境)
参考于:https://www.cnblogs.com/xifengxiaoma/p/10107635.html1.这里我使用的是支付宝沙箱环境,先看一下实现效果订单待支付页面:当点击“支付宝支付”按钮时发生跳转,跳转到支付页面:支付时可选择网页在线支付,也可下载安卓版沙箱环境支付宝app进行支付;这里我演示一下在线支付,点击登录账户付款按钮,登录上沙箱账户并完成支付:实现效果就...原创 2019-10-14 15:48:15 · 1048 阅读 · 0 评论 -
redis事务
redis到底支持事务吗?答:半支持,redis属于弱事务(redis和关系型数据库不同,默认状态下:不会开启事务,command立即执行,不会排队,不支持回滚);首先我们要搞清楚什么是事务?,事务可以做什么?事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合;事务拥有四大特...原创 2019-09-25 20:37:59 · 238 阅读 · 1 评论 -
数据库连接池密码加密(springboot-jasypt)
你的配置文件还在“裸奔”吗?密码还是明文吗?如果是的话,那你要小心哦!因为博主之前外包在一家银行工作,银行对敏感信息有严格要求一律不可使用明文。1.没有加密时我们的配置文件是这个样子(用户名密码全暴露):2加密后的配置文件是这个样子:请问你更喜欢哪一种呢,是不是第二种看着更舒服(存有神秘性,不被让别人一下就看穿你的数据库配置信息)。如果你喜欢第二种,请向下看⤵️3.实现加密的步骤...原创 2019-11-30 15:50:58 · 1200 阅读 · 0 评论 -
websocket通信
参考自:https://blog.csdn.net/weixin_39984161/article/details/96969704前言:前一段时间面试XX影音公司,技术总监发来一套openfire代码让我优化。顿时萌哔,第一次听说!于是产生了研究一波的心态,最后逛了半天博客看到一篇关于websocket的文章,感觉很nice。今天记录一下!websocket的优缺点这里我就不一一总结了,...原创 2019-10-31 18:09:20 · 177 阅读 · 0 评论 -
内网穿透(花生壳)
什么是内网穿透?答:内网穿透原理是映射端口,能让外网的电脑访问到内网的电脑;简单的说就是局域网的服务外网访问不到,通过内网穿透技术来实现外网到内网的端口映射,进行实现外网访问内网服务。(可以实现远程控制,在家可以访问到公司电脑的端口服务)2.如何快速实现内网穿透?答:自己搭建内网穿透需要一定的时间,因此如何想要段时间内快速实现内网穿透,我们可以借助市场上常常见到的一些工具。如:Ngrok、N...原创 2021-12-25 09:53:11 · 2688 阅读 · 0 评论 -
Java贪吃蛇小游戏(已验证)
平时在公司都是web开发,今天逛博客无意之间发现了一个有意思的小游戏。使用Java编写无需任何插件!于是就参考了网友的实现思路和代码,受教了。。。。效果图:面板类:这里主要就是对面板进行操作。package game;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import jav...原创 2019-10-06 10:41:17 · 561 阅读 · 0 评论 -
windows微信多开
windows下微信多开有多种实现方式。1.最暴力的方式:按下回车键鼠标左键双击微信原创 2019-10-06 10:24:44 · 1836 阅读 · 0 评论 -
redis使用实例
面试时总会被问到redis用过没有?首先我们要搞明白Sql和Nosql的区别:非关系型数据库(HBase,Redis,MongoDB,Neo4j)key,value形式进行存储,数据与数据之间没有关联关系,目前我们常用的是Redis(非关系数据库大多都是不支持事务的,对于Redis,语法错误会回滚,而运行错误则不会)关系型数据库:Mysql,Oracle,Sqlserver属于关系型数据库(...原创 2019-09-23 01:15:18 · 382 阅读 · 0 评论 -
高德地图根据地址获取经纬度(JAVA)
这里使用的是高德地图API,前端只需将地址传给后台即刻,然后我们返回给前端经纬度,从而使用经纬度来计算两地之间的距离;1.对接高德地图接口,首先要去高德地图官网申请一个key(这里很简单,大家可以参考高德地图申请key详解)按照步骤来,两分钟就可以搞的定!2.重点就是这里的key,key申请完成后接下来就跟简单了!先带大家看一下我给大家准备的一个demo效果图正常访问:输入上海市黄浦区瞿...原创 2019-09-17 23:59:37 · 4340 阅读 · 0 评论 -
多数据源切换
博主使用多数据源的原因:由于公司的项目比较老,之前使用的是C#和sql server,为了数据迁移和代码改造。于是我们使用Java语言开发,mysql和sql server并用;下面演示的数据源动态切换使用的技术为:springboot、mybatis、mysql1.还是老规矩,先看实现的效果是不是大家想要的,能否满足大家的需求!为了做演示,我这里使用的是本地的mysql地址和端口号都相同...原创 2019-09-14 15:54:54 · 514 阅读 · 0 评论 -
快速使用echarts(JAVA前后台交互)
1.我这里演示的是echarts折线图实例,先看一下echarts实现的效果图,是否是你想要的呢?2.echarts核心代码(html和js)如下:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" ><head> <meta charset="UTF-8"> ...原创 2019-09-13 21:49:06 · 1562 阅读 · 1 评论 -
零基础学习mysql主从复制
今天给大家分享一下mysql主从复制如何实现,我是通过下班后自学,学了一周才学会的(是不是很笨(⊙_⊙) )相信聪明的你们看了我写的这篇博客两个小时就可以get到msyql主从复制的原理…好,接下来我们进入今天的正题;1.先看实现效果(我这里使用的是两个虚拟机,版本号为Centos6.5)2.第一步,在mysql官网下载rpm本地电脑上;我使用的版本为mysql-5.7.27-1.el6.x...原创 2019-08-06 22:58:29 · 178 阅读 · 0 评论 -
zTree入门级使用
zTree大家应该有所了解吧,记住一点就好,使用zTree来实现一个高效树级目录;别的也不多说了,我也是第一次使用这个zTree,感觉很好用,于是给大家分享一下使用步骤,望大家多多指教。首先进入在zTree的官方文档API,对zTree有个初步的认识;1.在官方文档中我们下载相关js和css样式,保存到本地电脑(注意:下载是在码云上面下载的,如果没有码云账号,建议注册一个)。2.此时下...原创 2019-07-14 15:29:11 · 453 阅读 · 0 评论 -
sprinboot-mybatis初学者一看就懂
使用springboot整合mybatis项目1.springboot整合mybatis----目录结构如下:2.大家都知道,springboot省去了很多配置,有人就会问配置省哪去了??答案来了:(此地无银三百两)在pom.xml中引入依赖;如下是springboot项目的pom文件<?xml version="1.0" encoding="UTF-8"?><pro...原创 2019-07-12 22:45:29 · 322 阅读 · 0 评论