后端
怪只怪满眼尽是人间烟火
尚未佩妥剑 转眼已江湖
展开
-
springboot验证码实现
缓存使用的是:ExpiringMap(一个轻量的Java缓存方式)1.首先是生成验证码。2.将生产的验证码保存在缓存中,只保存1-2分钟。原创 2022-08-16 14:02:28 · 799 阅读 · 0 评论 -
Spring Boot Admin简单配置
启动两个项目: server、clientserver配置:注意spring-boot-admin的版本号和spring-boot-starter-parent版本号,不能偏差过大。client配置:点击应用墙,访问对应应用:http://localhost:8000/原创 2022-06-15 10:27:30 · 1994 阅读 · 0 评论 -
spingboot实现redis的发布订阅
配置订阅频道import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.listener.ChannelTopic;原创 2022-04-02 16:01:20 · 1089 阅读 · 0 评论 -
java返回json格式的状态码数据(二)
public interface CommonConstants { /** * 成功标记 */ Integer SUCCESS = 0; /** * 失败标记 */ Integer FAIL = 1;}public class R<T> implements Serializable { private static final long serialVersionUID = 1L; @.原创 2022-02-16 13:46:26 · 498 阅读 · 0 评论 -
java获取数据库数据保存到本地txt文件中
首先是Services@Servicepublic class logServiceimpl implements logService { @Autowired @Qualifier("primaryJdbcTemplate") protected JdbcTemplate jdbcTemplate; @Override public List<lockLog> getlog() { String sql="show原创 2021-11-01 15:31:45 · 2276 阅读 · 0 评论 -
linux 添加开机自启动脚本
将你自己的restart.sh脚本改造成如下:#!/bin/sh#chkconfig: 2345 80 90#description:开机自动启动的脚本程序#下面是你的sh脚本,上面的是默认写法ps aux | grep /tools/hmclient-0.0.1-SNAPSHOT.jar | grep -v 'grep' | awk '{print $2}' | xargs kill -9nohup java -jar /tools/hmclient-0.0.1-SNAPSHO原创 2021-08-18 16:50:11 · 169 阅读 · 0 评论 -
for循环中使用多线程
public class test { private final static Executor executor = Executors.newCachedThreadPool();//启用多线程 public static void main(String[] args) { for (int i = 0; i <= 3; i++) { final int j = i; //关键是这一句.原创 2021-08-07 10:24:42 · 3052 阅读 · 0 评论 -
java动态sql执行数据
查询:String sql = "SELECT " + Joiner.on(",").join(columns) + " FROM " + table + " WHERE 1=1";写入: String sql = "INSERT INTO %s(%s) VALUES(%s)" , table,Joiner.on(",").join(columns), '值';原创 2021-08-02 23:15:44 · 320 阅读 · 0 评论 -
Java字符串拼接写法 joiner.on
public class test { public static void main(String[] args) { List<String> list= new ArrayList(); list.add("one"); list.add("two"); list.add("three"); list.add("four"); String value= Joiner.on(",").原创 2021-08-02 23:12:19 · 709 阅读 · 0 评论 -
layui左侧菜单接口java实现:替代init.json
首先是创建菜单表结构,我写的写的字段比较多,实际要实现,不需要这么多字段CREATE TABLE `menu` ( `id` int(20) NOT NULL AUTO_INCREMENT, `pid` int(20) DEFAULT NULL COMMENT '父菜单ID。一级菜单为0', `title` varchar(255) DEFAULT NULL COMMENT '菜单标题', `icon` varchar(255) DEFAULT NULL COMMENT '图标',原创 2021-07-15 00:54:17 · 1365 阅读 · 5 评论 -
java实现多级菜单(java递归)方法二
@Autowired private TreeBuilder treeBuilder; /** * 获取树状结构数据 */ @RequestMapping("menu/queryMenuTree") @ResponseBody public Object queryMenuTree(int id){ //查询Node数据 List<Node> list=menuService.quer...原创 2021-07-12 09:14:17 · 407 阅读 · 0 评论 -
java实现多级菜单(java递归)方法一
查询菜单树public List<Map<String, Object>> queryCategoryInfo() { List<Map<String, Object>> allMenu = queryAllCategory(); //根节点 List<Map<String, Object>> rootMenu = new ArrayList<Map<String, Object>原创 2021-07-12 09:11:06 · 391 阅读 · 0 评论 -
java发送html模板
首先看一下模板:原创 2021-06-08 14:24:48 · 830 阅读 · 2 评论 -
java动态拼接String类sql
String sql = "SELECT * from em_earmarkboxinfo ac "; //定义一个list<string>类型的集合,用来放拼接的SQL语句 List<String> list = new ArrayList<>(); if (ebiboxid != 0) { String sqla = " BoxId= " + ebiboxid; ...原创 2021-02-03 15:45:02 · 1321 阅读 · 1 评论 -
SpringBoot项目的application.properties放在Jar包外加载
第一、项目jar包同级下的config文件夹是优先级最高的,是在执行命令的目录下建config文件夹。application.properties放在config文件夹里面肯定最先读取。第二、项目jar包同级下直接放properties文件是次优先级,是直接把配置文件放到jar包的同级目录。第三、项目内部的classpath同级config文件夹是第三优先级,在classpath下建一个config文件夹,然后把配置文件放进去。第四、项目内部的classpath同级放properties原创 2020-12-30 10:16:28 · 2760 阅读 · 3 评论 -
采用redis+ThreadLocal获取全局的登录用户信息(二)增加token快失效时刷新
在写token登录的时候,发现cookie中的token到时自动失效,如果此时有人正在操作,非常影响体验,于是增加了一个token快失效时刷新token的功能。下面代码重点就在TokenTool类中的时间判断1.先写一个tokenTime的工具类public class TokenTime { /* 1小时以内,token有效 1-2小时之内,token进行刷新 2小时之后,token失效 */ //co原创 2020-12-25 23:34:09 · 1355 阅读 · 0 评论 -
服务器端口监测系统
前提说明:在日常的项目中,由于数据量大,数据库隔几天就会自动宕机,独自运行的程序也会自行宕机,或者网络不稳当。产生的各种各样的问题,有时候没有及时发现会导致问题变得越来越大。于是写了一个监控系统,每隔1分钟对程序进行监测,如有离线状态的消息,每隔5分钟会发送邮件。方便正常维护处置。1.Demo2.建表总共建两张表即可CREATE TABLE `socket` ( `id` varchar(255) NOT NULL, `mc` varchar(255) DEFAULT ...原创 2020-12-21 14:54:22 · 488 阅读 · 0 评论 -
接口幂等性问题解决方案
https://blog.csdn.net/const_/article/details/104968727https://blog.csdn.net/qq_44622763/article/details/89927374原创 2020-10-15 11:18:49 · 265 阅读 · 0 评论 -
支付宝手机网站支付对接(java)
以下所有的对接都基于沙盒环境,正式环境需要和支付宝进行签约。发起支付由用户提交付款信息,包括金额,用户订单号,商品名称,订单描述等信息。付款流程扫码付款。后端通知付款成功后支付平台会向后台发送一个异步的消息通知,系统在接收该信息时才对订单做出状态的更改,比如说更改会员状态,修改订单信息等操作。1.下载资料。https://opendocs.alipay.com/open/270/106291/2.下载秘钥生成工具:https://opendocs.alipay.com/ope原创 2020-09-11 10:50:46 · 2160 阅读 · 1 评论 -
微信小程序获取用户唯一openid,包含java
1.首先WXML文件 <button type="primary" open-type="getUserInfo" lang="zh_CN" bindtap="primary" bindgetuserinfo="YuYueSubmit" class="YuYueSubmit"> 预约申请 </button>2.然后js文件 //获取openid YuYueSubmit: function (e) { wx.login({ succes原创 2020-07-29 14:11:37 · 390 阅读 · 0 评论 -
MySQL数据库自动添加时间戳
类型为TIMESTAMP 长度自动为0为空项选择not NULL默认值中填入 CURRENT_TIMESTAMP原创 2020-07-27 20:27:03 · 1261 阅读 · 0 评论 -
springboot通过url访问项目外的其他目录下的图片
1.首先在application.properties文件中增加配置:#资源绝对路径为file:D://sws/module-base/module-base/upload,图片存放的真实路径spring.resources.static-locations=file:D://sws/module-base/module-base/upload #资源映射路径为/image/**,使用url访问的请求路径spring.mvc.static-path-pattern=/image/原创 2020-07-27 19:56:36 · 1755 阅读 · 0 评论 -
@Scheduled执行阻塞解决办法
问题还原:写了多了定时任务,但是部分任务一直不执行,想起来多个函数上使用了@Scheduled,该定时任务默认使用单线程,从而导致了线程阻塞。解决办法: 方案一:使用@Async注解实现异步任务 @Async @Scheduled(cron="0 0/10 * * * ? ") //每10分钟执行一次注意:Application主类要开启 @EnableAsync 注解 方案二:配置线程池import java.util.c...原创 2020-07-21 17:25:54 · 2690 阅读 · 0 评论 -
mysql的表分区
1.RANGEalter table `cdb_test` partition by range (id) ( partition `p0` values less than (2), partition `p1` values less than (4), partition `p2` values less than (maxvalue))2.List原创 2020-07-16 20:59:45 · 923 阅读 · 0 评论 -
springboot 各种日志打印
1.springboot打印sql语句在application.properties文件中:#开启打印MyBatis sql日志输出logging.level.com.sws.platform.gis.dao=debug红色部门修改为mappper(.java)文件路径。原创 2020-07-13 17:18:18 · 339 阅读 · 0 评论 -
Echarts地图坐标geoCoordMap数据动态获取
这是一组geoCoordMap格式的数据: var geoCoordMap = { '台湾': [121.5135,25.0308], '黑龙江': [127.9688, 45.368], '内蒙古': [110.3467, 41.4899], "吉林": [125.8154, 44.2584], '北京市': [116.4551, 40.2539], "辽宁": [123.1238, 42.1216],}刚开始想的方法是获取到三个参数,前端循...原创 2020-06-08 10:56:06 · 7487 阅读 · 0 评论 -
开始时间和结束时间设置为 yyyy-MM-dd 00:00:00 ~~yyyy-MM-dd 23:59:59
String format ="yyyy-MM-dd"; String format1 ="yyyy-MM-dd 00:00:00"; String format2 ="yyyy-MM-dd 23:59:59"; SimpleDateFormat sdf = new SimpleDateFormat(format); SimpleDateFormat sdf1 = new SimpleDateFormat(f...原创 2020-05-27 10:20:22 · 2155 阅读 · 0 评论 -
springboot+sockjs进行消息推送(群发)
首先是pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven...原创 2019-05-31 17:36:02 · 1237 阅读 · 0 评论 -
springboot上传文件及文件上传限制大小异常捕获
一个简单的页面上传文件,上传的接口是/upload,请求方法是post,enctype(表单类型)是multipart/form-data<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title&g...原创 2019-06-24 11:35:16 · 4606 阅读 · 9 评论 -
ZooKeeper入门(二)Java操作zookeeper
首先是pom依赖: <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>...原创 2019-07-30 11:08:03 · 558 阅读 · 0 评论 -
ZooKeeper入门(三)zookeeper的Watcher机制
process方法是Watcher接口中的一个回调方法,当ZooKeeper向客户端发送一个Watcher事件通知时,客户端就会对相应的process方法进行回调,从而实现对事件的处理。import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.z...原创 2019-07-30 11:37:03 · 630 阅读 · 0 评论 -
ZooKeeper入门(四)实现分布式锁
首先是引入pom依赖: <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency>接下来是java代...原创 2019-07-30 17:13:34 · 437 阅读 · 0 评论 -
ZooKeeper入门(五)配置集群和选举机制
一. 配置集群1. 准备多台ZooKeeper服务器 2. 配置ZooKeeper服务器在每台服务器的conf/zoo.cfg文件中添加如下内容:server.20=192.168.4.20:2888:3888server.21=192.168.4.21:2888:3888server.22=192.168.4.22:2888:3888格式: server.A=B...原创 2019-07-30 17:37:51 · 894 阅读 · 0 评论 -
SpringBoot集成Kafka
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> ...原创 2019-08-07 09:40:16 · 461 阅读 · 0 评论 -
Spring boot 默认日志配置
#\u914D\u7F6E\u65E5\u5FD7logging.level.root=INFOlogging.level.org.springframework.web=DEBUGlogging.level.org.hibernate=ERROR#logging.path=D:\\demo1logging.file=d:\\svn\\log\\demo1.log原创 2019-03-12 09:26:26 · 435 阅读 · 0 评论 -
JAVA爬虫Jsoup,抓取房价
里面的命名很烂,但能跑出来效果。依赖:<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId>...原创 2018-11-16 09:29:15 · 792 阅读 · 0 评论 -
SSO(登录系统)
// 登录功能(SSO单独的服务)@Overridepublic TaotaoResult login(String username, String password) throws Exception { //根据用户名查询用户信息 TbUserExample example = new TbUserExample(); Criteria criteria = ...转载 2019-05-16 17:56:44 · 1861 阅读 · 0 评论 -
Spring中的事件机制
Spring的事件驱动模型由三部分组成:事件(消息):ApplicationEvent,继承自JDK的EventObject,所有事件将继承它,并通过source得到事件源。 事件发布者(生产者):ApplicationEventPublisher(一般用这个)及ApplicationEventMulticaster接口,使用这个接口,我们的Service就拥有了发布事件的能力。 事件订阅...原创 2019-05-15 10:39:59 · 482 阅读 · 0 评论 -
Redis的入门(一)安装,设置密码
下载redis压缩包如下操作。首先cmd进度进入界面。然后cd进入redis所在的文件夹。redis-server redis.windows.conf //运行redis, redis-cli.exe -h 127.0.0.1 -p 6379 //进入本地的redis。 a.命令修改 config get requirepass //获取当前密码 onfig...原创 2018-12-04 00:02:08 · 424 阅读 · 0 评论 -
java的poi导入Excel文件
首先看看前台写法: <form action="poi/upload.do" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="productFile"> <input type="sub原创 2018-12-05 15:27:06 · 1383 阅读 · 0 评论