java
文章平均质量分 56
会飞的小蜗
Java、PHP
展开
-
java + syslog 发送UDP日志
2、实例2-1、client 端SyslogGAUtils.java2-1、server 端SyslogServerEventHandler.javaUDPSyslogServerFinal.java原创 2022-06-08 10:41:38 · 1224 阅读 · 2 评论 -
离线报表解决方案【centos6 + Phantomjs + Echarts + freemarker + java poi】
文章目录前言1、可选方案2、方案确定3、开发实施3-1、首先需要安装Phantomjs前言先说下实际需求,由于业务需要,使用定时任务来生产离线报表(包含echarts 图表),为了最大限度的与前端保持一致性,所以需要离线报表也有echart图,生成要求就是:word、pdf ,当时形成了以下几种方案,我也都逐步趟过坑了,如果大家使用时遇到问题,也可以在评论区进行提问。1、可选方案2、方案确定经过尝试之后,还是确定了方案3,通过phantomjs(webkit内核)+JS+freemarker交原创 2022-05-11 08:39:25 · 1199 阅读 · 0 评论 -
spring mvc 结合 websocket 与前端js 实现 心跳检测机制 并 断连重试
文章目录一、前端实验代码二、服务端1、先说maven依赖2、线程池 (可选) :3、拦截器实现 HandShakeInterceptor.cladd4、连接状态捕获 MyWebSocketHandler.class5、对指定请求进行拦截 WebSocketConfig.class先推荐大家一个前端socket在线工具https://www.idcd.com/tool/socket一、前端实验代码<!--仅供测试--><!-- websocket的配置 --><sc原创 2022-04-15 13:56:15 · 4153 阅读 · 0 评论 -
maven多模块项目管理(帮助你解决许多的依赖版本问题)
文章目录一、第一种创建方式(推荐)1、创建空项目,然后起个名字2、然后在创建好的空项目中,创建父工程3、名词解析4、父工程创建好后,必须遵循两个原则5、创建子工程6、依赖版本控制(重要)二、第二种创建方式(推荐)一、第一种创建方式(推荐)1、创建空项目,然后起个名字2、然后在创建好的空项目中,创建父工程3、名词解析名词解释:GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。ArtifactID是项目的唯一的标识符,实际对应项目的原创 2022-01-23 15:49:31 · 1605 阅读 · 0 评论 -
web应用安全
文章目录1、检测到目标主机可能存在缓慢的HTTP拒绝服务攻击2、检测到目标URL存在http host头攻击漏洞1、检测到目标主机可能存在缓慢的HTTP拒绝服务攻击博客:https://blog.csdn.net/qq_22537681/article/details/880283672、检测到目标URL存在http host头攻击漏洞博客:https://blog.csdn.net/shidebin/article/details/86510937...原创 2022-01-21 13:18:06 · 242 阅读 · 0 评论 -
JWT认证原理、流程整合springboot
文章目录JWT整合spring boot3、在网关(推荐)或者为微服务项目中定义JWT拦截器4、配置JWT拦截器JWTJSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。头部(Header)头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。{“typ”:“JWT”,“alg”:“HS256”}在头部原创 2022-01-19 19:10:02 · 406 阅读 · 0 评论 -
使用Java、JS 对数据进行base64 加解密(解决中文乱码)
使用Java、JS 对数据进行base64 加解密(解决中文乱码)原创 2021-12-17 16:50:06 · 2172 阅读 · 0 评论 -
一台Linux服务器,使用docker 部署多个 SeaTa服务(二)【spring boot整合seata1.4.0】
一台Linux服务器,使用docker 部署多个 SeaTa服务(二)【spring boot整合seata1.4.0】原创 2021-12-02 11:10:07 · 1886 阅读 · 0 评论 -
elasticsearch 7.4 常用API操作之 在 spring boot 中的使用(二)
文章目录原创 2021-11-29 13:08:07 · 1922 阅读 · 0 评论 -
1、Java中“并发编程”详解【voliate、synchronized、JMM内存模型、原子类操作Atomic..、CAS原理】
文章目录1、对volatile 的理解?1、对volatile 的理解?volatile 是 Java 虚拟机提供的轻量级的同步机制保证可见性禁止指令排序不保证原子性JMM(Java 内存模型)JMM 本身是一种抽象的概念并不是真实存在,它描述的是一组规定或则规范,通过这组规范定义了程序中的访问方式。JMM 同步规定:1、线程解锁前,必须把共享变量的值刷新回主内存2、线程加锁前,必须读取主内存的最新值到自己的工作内存3、加锁解锁是同一把锁由于 JVM 运行程序的实体是线程原创 2021-11-29 08:25:38 · 296 阅读 · 0 评论 -
Java常见算法(六)【省份数量- 分组算法:深度优先、广度优先、并查集 】
文章目录省份数量-经典的分组算法1、深度优先遍历2、广度优先省份数量-经典的分组算法比如现在有三个城市:A城市、B城市、C城市,其中 A 城市与 B城市相连,C城市与A、B城市都不相连。画图展示:然后我们得到的数组是这样的:例如:A城市与自己相连,A城市与B城市相连,A城市与C不相连,所以得到:{1,1,0 } 。后面两个城市的关系也是类似,不再描述…所以最终用数组表示三个城市的关系是这样的:{ {1,1,0 } , { 1,1,0 } , { 0, 0, 1} }这里说明一下我们的入原创 2021-11-26 09:08:40 · 881 阅读 · 0 评论 -
Java常见算法(五)【二叉树:morris遍历】
文章目录二叉树遍历-线索二叉树(Morris)1、前序遍历-线索二叉树2、中序遍历-线索二叉树(常用)3、后序遍历-线索二叉树(不推荐)实验源码:二叉树遍历-线索二叉树(Morris)https://www.bilibili.com/video/BV1Jv411A7Ty?p=311、前序遍历-线索二叉树https://www.bilibili.com/video/BV1Jv411A7Ty?p=32 //1、前序-线索二叉树:根 左 右 public static void morr原创 2021-11-25 07:57:03 · 651 阅读 · 0 评论 -
JSON串 转成 指定实体类对象( TypeReference<>() {} )
1、JSON串 tsrData:{ "code": 1005, "msg": "用户名存在重复", "data": null}2、实体类:package com.esint.ztb.hst.pojo.hstVo;import java.io.Serializable;/** * 好视通返回值封装 */public class HstR implements Serializable { private Integer code; private原创 2021-11-24 09:20:57 · 6112 阅读 · 0 评论 -
Java常见算法(四)【二叉树遍历:递归、迭代(模拟递归)】
文章目录二叉树遍历1、前序遍历-递归2、中序遍历-递归3、后序遍历-递归前、中、后续遍历实验源码二叉树遍历https://www.bilibili.com/video/BV1Jv411A7Ty?p=221、前序遍历-递归https://www.bilibili.com/video/BV1Jv411A7Ty?p=23前序、中序、后续遍历其实就是一直打印栈顶,但是打印的时机有所不同;前序遍历是第一次成为栈顶就打印。 //1、前序-递归 public static void preor原创 2021-11-19 08:58:12 · 679 阅读 · 0 评论 -
Java常见算法(三)【二叉树的最小深度计算的深度优先和广度优先、贪心算法常见实例】
文章目录一、二叉树的最小深度1、深度优先:先找到所有叶子节点2、广度优先:从根节点开始找字节点一、二叉树的最小深度1、深度优先:先找到所有叶子节点 //1、深度优先算法:先找到所有叶子节点 public static int minDepth(TreeNode root){ if(root==null){ return 0; } if(root.left==null && root.right==null原创 2021-11-17 09:01:37 · 1131 阅读 · 0 评论 -
R 返回值实体类封装
为了团队内部的返回值统一,对于返回值的封装还是很有必要的。返回的json结构如下:{ "msg": "success", "code": 0, "data": { //返回值 ..... }}返回示例:封装好的R实体类:/** * R返回值封装 * * */package com.xunqi.common.utils;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReferen原创 2021-11-05 16:32:59 · 950 阅读 · 0 评论 -
jackson 操作 List 与 String 互转
直接看实例:package com.elq.product.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.elq.product.dao.LogsDao;import com.elq.product.entity.LogsEntity;import com.elq.product.service.IndexService;import com.fasterxm原创 2021-10-21 11:47:12 · 1431 阅读 · 0 评论 -
springboot、mybatis-plus 实体类接收参数
我们先来看下表结构:实体类:package com.elq.product.entity;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableName;import com.fasterxml.jackson.annotation.JsonForma原创 2021-10-21 08:18:59 · 1032 阅读 · 0 评论 -
Sentinel 使用详解、熔断降级实例
文章目录1、sentinel的下载和安装2、Sentinel规则管理及推送1、原始模式2、Pull 模式3、Push 模式3、整合项目配置Sentinel,在Sentinel dashboard实现监控4、实例1.第一个实例:1、sentinel的下载和安装sentinel下载地址:https://github.com/alibaba/Sentinel/releases1.7.1下载地址: https://github.com/alibaba/Sentinel/releases/download/1.原创 2021-10-19 08:26:11 · 971 阅读 · 0 评论 -
spring定时任务
一、定时任务1、cron表达式语法:秒 分 时 日 月 周 年(其中“年”Spring不支持,也就是说在spring定时任务中只能设置:秒 分 时 日 月 周)2、cron示例3、SpringBoot整合@EnableScheduling@Scheduled实例:package com.xunqi.gulimall.seckill.scheduled;import lombok.extern.slf4j.Slf4j;import org.springframework.sch原创 2021-10-01 20:32:54 · 1023 阅读 · 0 评论 -
RabbitMQ消费者可靠性抵达(八)
1.引入 spring-boot-starter-amqp<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2. application.properties配置# RabbitMQ配置spring.rabbitmq.hos原创 2021-09-24 09:00:34 · 102 阅读 · 0 评论 -
spring事务详解
事务1. spring boot 本地事务本文将按照声明式事务的五个特性进行介绍:事务传播机制事务隔离机制只读事务超时回滚规则Spring事务传播机制事务的特性原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。隔离性(Isolation):可能有许原创 2021-09-24 08:38:32 · 161 阅读 · 0 评论 -
Spring boot 拦截器笔记
1. 实现 HandlerInterceptor 接口package com.xunqi.gulimall.order.interceptor;import com.xunqi.common.vo.MemberResponseVo;import org.springframework.stereotype.Component;import org.springframework.util.AntPathMatcher;import org.springframework.web.servlet原创 2021-09-24 08:24:45 · 111 阅读 · 0 评论 -
RabbitMQ发送端可靠性抵达(七)
文章目录1.引入 spring-boot-starter-amqp2. application.properties配置3.确认抵达4.实现1.引入 spring-boot-starter-amqp<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></depen原创 2021-09-23 09:21:44 · 129 阅读 · 0 评论 -
RabbitMQ整合到springboot项目(六)
文章目录1.引入 spring-boot-starter-amqp2. application.properties配置3.发送json数据需要进行配置(**使用MessageConvert自动转换为json**)4.使用4.1 发送4.2.监听5.@RabbitListener 和 @RabbitHandler1.引入 spring-boot-starter-amqp<dependency> <groupId>org.springframework.boot</g原创 2021-09-23 09:19:10 · 224 阅读 · 0 评论 -
临时购物车&用户购物车
先说下临时购物车的场景:当我们在浏览商城的时,我们可能在没登陆的情况下把一些商品放入购物车中,当我们关闭浏览器再进到购物车页面,依然会有这个商品,然而我们登陆了账号后,购物车里面的商品就会自动进到我们的个人购物车中。实现说明:用户打开浏览器时,点击加入购物车,这是我们浏览器先判断是否有登录的session,如果没有则会生成一个"user-key"的cookie,并且作用域为我们的一级域名 ,如 “ xx.com ” , 然后在 redis 中以哈希的数据结构来存储临时用户的购物车信息://临时用户原创 2021-09-20 21:30:37 · 604 阅读 · 0 评论 -
密码加密方式:MD5加密 & 盐值加密
在我们项目开发中,对于密码的存储都会进行加密处理,我们可以自定义一个加密方式进行加解密后的字符串对比,也可以使用我们的md5加密(不可逆)。 //常用的MD5加密 String s = DigestUtils.md5Hex("123456"); System.out.println(s);运行结果:e10adc3949ba59abbe56e057f20f883eMD5 经过摘要算法加密可以将任何长度的字符串转化成固定长度大小,无论加密前的字符串多大,即便是1G的数据,经过M原创 2021-09-18 20:52:42 · 4601 阅读 · 0 评论 -
nginx + keepalived 实现双机热备高可用方案
生产环境之Nginx高可用方案准备工作:192.168.16.128192.168.16.129两台虚拟机。安装好Nginx安装Nginx更新yum源文件:Copyrpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.原创 2021-09-15 13:27:35 · 280 阅读 · 0 评论 -
深入理解并发编程和异步编排
文章目录1.多线程1.1 继承 Thread,重写run() 方法1.2 实现 Runnable接口 ,实现run() 方法1.3 实现Callable接口并实现call方法+FutureTask 实现对返回值的获取1.4 线程池1.多线程多线程创建常见的四种方式:1.1 继承 Thread,重写run() 方法 public static class Thread01 extends Thread { @Override public void run() {原创 2021-09-14 20:35:40 · 446 阅读 · 0 评论 -
微服务项目中使用 spring cache + redis + lua脚本 业务实例
文章目录1.简介2.业务实例1.简介spring基于注解的缓存对于缓存声明,spring的缓存提供了一组java注解:@Cacheable:触发缓存写入。@CacheEvict:触发缓存清除。@CachePut:更新缓存(不会影响到方法的运行)。@Caching:重新组合要应用于方法的多个缓存操作。@CacheConfig:设置类级别上共享的一些常见缓存设置。1.@Cacheable注解顾名思义,@Cacheable可以用来进行缓存的写入,将结果存储在缓存中,以便于在后续调用的时原创 2021-09-13 11:39:35 · 472 阅读 · 0 评论 -
Jmeter + jvisualvm对项目进行压测调优
文章目录1.Jmeter2.jvisualvm1.Jmeter1、JMeter安装https://jmeter.apache.org/download_jmeter.cgi下载对应的压缩包,解压运行jmeter.bat即可JMeter压测示例2. 添加线程组:2.jvisualvm安装插件方便查看gcCmd启动jvisualvm工具->插件如果503错误解决:打开网址:https://visualvm.github.io/pluginscenters.html原创 2021-09-12 13:35:02 · 255 阅读 · 0 评论 -
RabbitMQ 探究(五、topic 路由匹配队列)
生产者:package rabbitMq.topic;import Utils.RabbitMqUtil;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import java.io.IOException;import java.util.concurrent.TimeoutException;//生产者public class TestRabbitMqP { public s.原创 2021-08-30 13:23:49 · 412 阅读 · 0 评论 -
RabbitMQ 探究(四、direct 路由队列)
生产者:package rabbitMq.direct;import Utils.RabbitMqUtil;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import java.io.IOException;import java.util.concurrent.TimeoutException;//生产者public class TestRabbitMqP { public .原创 2021-08-30 12:56:05 · 193 阅读 · 0 评论 -
RabbitMQ 探究(三、fanout 广播)
fanout 广播:生产者生产消息,并发送到交换机,由交换机进行消息发布,消费者订阅消息并生产临时消息队列来消费rabbitMQ 连接工具package Utils;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;import java.util.c原创 2021-08-30 09:40:31 · 177 阅读 · 0 评论 -
RabbitMQ 探究(二、work queues)
工作队列(work queues)这个模式是怎么样的呢?一个生产者,多个消费者,无交换机!我们直接来看这种情况,当生产者生产消息的速度比较快,为了加快消费,我们让两个消费者来消费消息:工具类:package Utils;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import java.io.IO原创 2021-08-30 07:54:25 · 136 阅读 · 0 评论 -
RabbitMQ 探究(一)
工作中用的RabbitMQ ,但并没有深入探究它里面的所有消息队列类型,今天有时间来整体的尝试一番!首先需要引入包: <!--rabbitmq 依赖客户端--> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <ver原创 2021-08-29 21:14:49 · 143 阅读 · 0 评论 -
Java8 stream流编程处理常见的三级菜单目录
我们先来看一下流编程:什么是 Stream?Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。和以前的Collection操作不同, Stream操作还有两个基础的特征:Pipe原创 2021-08-28 20:29:19 · 871 阅读 · 0 评论 -
redisson的分布式锁对于后续业务超时的处理办法
在项目中,我们一般会使用redis的setnx与expire的原子操作来完成分布式锁的设置,但是会有一个问题是这样的,我们在上游设置了一个锁,比如是mylock,并给它设置了超时时间为12s ,但是下游业务由于要进行接口请求,执行了大概20s , 这样的话就会造成业务没有执行完的情况下锁就被释放掉了,那我们该如何解决此类问题呢?Redisson我们可以根据redisson的可重入锁,来设置分布式锁,使用的方式和java中的ReentrantLock基本一致。并且redisson内部提供了一个监控锁的看原创 2021-08-27 11:55:23 · 2780 阅读 · 1 评论 -
ms手记总结
文章目录1.Threadlocal2.spring 的执行流程3.spring 的生命周期4.Cglib和jdk动态代理的区别1.ThreadlocalThreadLocal和Synchronized都是为了解决多线程中相同变量的访问冲突问题,不同的点是Synchronized是通过线程等待,牺牲时间来解决访问冲突ThreadLocal是通过每个线程单独一份存储空间,牺牲空间来解决冲突,并且相比于Synchronized,ThreadLocal具有线程隔离的效果,只有在线程内才能获取到对应的值,线程原创 2021-08-27 09:35:27 · 139 阅读 · 0 评论 -
一、微服务相关
文章目录一、微服务1. 服务注册与发现1.1 什么是注册中心1.2、注册中心的主要作用是什么1.3 Eureka主要由哪三部分组成?1.4 Eureka Server项目需要引用的关键依赖是什么?1.5 Eureka Server项目主要配置项都有哪些,分别是什么作用?1.6 Eureka Client项目需要引用的关键依赖是什么?1.7 Eureka Client项目主要配置项都有哪些,分别是什么作用?1.8 想在Eureka管理界面显示服务具体IP地址需要如何配置?1.9 心跳频率如何配置?1.10 客原创 2021-08-16 21:18:44 · 1144 阅读 · 0 评论