自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 springbootadmin监控jvm并发送邮件告警

一、springbootadmin server端1、添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

2022-04-10 11:40:42 1899

转载 linux下添加用户并赋予root权限

linux下添加用户并赋予root权限

2022-04-06 13:32:16 760

原创 职责链设计模式实现商品购买到售后

一、业务流向根据商品不同的状态,由不同的职责实体去处理二、代码实现1、定义职责链模型public abstract class Handler { public Handler next; //处理请求的方法 public abstract void handleProcess(Product product); public void next(Handler handler){ this.next = handler; }

2022-04-01 13:23:39 653 1

原创 高并发环境下,解决多线程线程安全和数据顺序性问题

1、场景从数据源kafka接收到多个topic(多种类型的)数据,(比如某个商品goods 的交易订单trade,交易金额数据broker,交易店铺order,交易历史stock情况)然后将数据收集,再由多线程使用websocket实时推送给客户端比如 推送用户关注商品的相关信息。2、最初实现每个topic(trade,broker等)接收程序起单独的线程,在每个线程中将数据数据整理,当有用户登录的时候,将此用户关注商品(goods )类型的相关数据(trade,broker等)推送给用

2022-03-29 16:18:22 4980 1

原创 使用netty实现行情信息推送

前言:比如使用同花顺或者富途等app软件炒股时,可以看到各种股票在某一时刻的数据,比如行情的成交信息(最高价,最低价,开盘价,收盘价)等,盘口信息(各个买卖档位数据)等。以港股为例,可能每秒要有数千条信息发送过来,然后处理展示在app上。因此,要通过各种数据压测,也确定自己的架构能在过程中,保证服务不会挂掉。最终实现的效果是 可以控制每秒钟行情种类数据的发送量,比如 成交 4000/s (条数/单位) 盘口数据 3000/s 挂单数据 3000/s 快照信息2000/s 。实现方案:由于在测试时

2022-03-11 16:04:21 841 2

原创 springboot+rocketMq顺序消息实现

前言:最近公司项目有个功能,在A模块中填写表单,B模块中进行审批,审批结果要通知回A系统进行展示,并且审批的流程是有顺序的,所以决定选用rocketMq进行实现。代码实现:一、生产者实现(demo形式) try { DefaultMQProducer producer = new DefaultMQProducer("approve_group_name"); producer.setNamesrvAddr("106.12.1..

2022-01-05 15:06:34 780

原创 消息发送功能搭配策略和建造者设计模式(绝对经典)

前言消息发送可以简单划分为:短信、邮箱、消息推送、app消息发送等几种模式,但是随着业务的扩大很有可能引入其他的消息发送方式,如果基于if-else或者switch-case的方式,代码会显得耦合度很高,迭代开发要修改的地方很多,所有抽象出接口,使用策略模式会很好的解耦。设计思想1、消息发送独立成一个单独的服务2、把消息类型抽象出一个服务提供者provider接口,抽象方法是发送消息3、每个不同的消息实现provider接口4、定义消息发送的服务接口5、服务接口的实现组装各个消息

2021-12-24 18:02:00 1847

原创 基于数据库实现网站国际化的设计

前言 之前写过,公司给任务让设计一个cms的管网系统,大致分成三部分 网站部分,栏目部分,内容部分,以往国家化的做法是使用i18n来做,但以我们的业务来讲行不通的,因为我们内容可能涉及长篇大论是其一,其二是内容数量会很多,比如帮助中心这个栏目,会延伸出很多内容,所以选择直接在数据库中存储翻译的内容,实现动态切换。一、数据库设计 1、栏目表设计 因为我们栏目表是一个层级关系的表结构,刚开始是想直接存储一模一样字段信息的数据放进数据库,比如中文和英文直接每条数据对应...

2021-12-24 15:00:39 1134

原创 记一次CMS系统设计的过程

一、背景 刚进公司第三天,老大给了个需求,给我们公司设计一个官网后台管理系统,给出的资料只有几个参照官网如苹果公司大陆官网。巧的是我们总公司下的一个子公司官网也有一部分需要修缮的地方(子公司官网之前是别的公司做的,不可能拿到源码的)。二、官网参照资料 1、业务给的资料 1.1logo 展现在官网左上角 1.2 主功能栏 包含上图的功能资产理财 ...

2021-12-09 15:39:06 2062

原创 自定义mybatis框架

一、回顾原生框架工作流程 1.xml方式通常我们在service层注入mapper,在maper中写接口,接口名和xml中的statement标签中的id对应,当调用对应接口的时候,就会把statement中的sql语句解析出来,然后连接数据库执行。2.注解方式与xml形式不同的是,sql语句直接放在接口上的注解中,解析出sql了之后,同样连接数据库执行。二、自定义框架的思想步骤1、mapper只是接口,没有实现,怎么执行一系列操作的?2.接口中的参数怎么和解析出来的sql..

2021-10-12 20:26:29 162

原创 spring事务传播属性详解(值得收藏)

一、传播属性介绍PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION...

2021-09-29 23:51:25 476

原创 静态代理和动态代理代码实现

一、静态代理public class UserServiceImpl implements UserService { @Override public void add() { }}public class UserProxy { private UserService userService; public UserProxy(UserService userService) { this.userService = us

2021-09-29 22:42:49 223

原创 基于Aop手写spring事务(声明式事务)

1.导入依赖2一、前言 spring事务分为编程式事务和声明式事务。编程式事务需要自己手动开启,提交,回滚事务,声明式事务则是添加自带的Transactional注解就 ok,正常情况下就不用关心事务的操作了。声明式事务优点:声明式事务帮助我们节省了很多代码,他会自动帮我们进行事务的开启、提交以及回滚等操作,把程序员从事务管理中解放出来。声明式事务管理使用了 AOP 实现的,本质就是在目标方法执行前后进行拦截。 在目标方法执行前加入或创建一个事务,在执行方法执行后,根据实际情...

2021-09-29 22:35:16 348

原创 springboot+springSecurity+vue+百度云AI实现人脸登录(客户端)

1、在登录界面中新加人脸登录按钮<el-button type="primary" style="width: 150px" @click="faceLogin" >人脸登录</el-button>http://localhost:8080/#/faceLogin faceLogin(){ this.$router.push('/faceLogin'); },{ path: '/facelogin', nam.

2021-09-14 00:00:33 912 1

原创 springboot+springSecurity+vue+百度云AI实现人脸登录(服务端)

一、实现思路根据前端落地页拍摄的面部头像进行登录,拿到图片第一步去后端请求校验,看抓取的照片是否有人脸,如果有,再进行第二步人脸比对,如果比对有结果,且相似度大于设置的分值,则认为比对成功,跳转到自己的系统。二、服务端接口: 1.人脸注册 既然要人脸登录,肯定系统中要存在登录人的人脸数据信息,如果没有,直接就无法登录。 所以首先要人脸注册。 2.人脸检测 如果上传的人脸照片没有头像信息,则无不对必要,直接登陆失败。 3.人...

2021-09-13 23:37:23 1828 5

原创 springboot日志框架配置(按日志级别输出到文件)

一、默认配置springboot默认的日志门面是SLF4J ,日志框架是Logback如果在springboot的resources目录下配置logback-spring.xml,logback-spring.groovy,logback.xmlorlogback.groovy这几个文件的话,spring就不在使用默认的日志配置二、日志配置及输出演示1.代码<?xml version="1.0" encoding="UTF-8" ?><confi...

2021-09-11 12:07:13 1232 1

原创 Java8 stream流式表达式用法

一、stream 介绍(抄录一波)Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。+--------------------+ +------+ +------+ +---+ +-------+| stream of elements +-----> |filter+-> |sorted+-..

2021-09-08 22:33:56 1452 1

原创 springboot+websocket+vue+vuex实现在线聊天(客户端)

一、使用node代理ws请求proxyObj['/ws'] = { ws: true, target: "ws://localhost:8081"}二、创建聊天窗口

2021-09-06 22:27:45 6049 39

原创 springboot+websocket+vue+vuex实现在线聊天(服务端)

一、实现方案使用websocket为服务端和客户端简历长链接,客户端作为发送者的一方向服务端通过设置的注册点建立连接并发送消息,客户端作为接收者的一方通过代理接入服务端订阅消息,服务端会向客户端推送由客户端作为发送者发送的消息。二、websocket配置package com.dong.boot.config;import org.springframework.context.annotation.Configuration;import org.springframework.mes

2021-09-05 20:01:38 783 1

原创 rabbitMq高可用(处理消息堆积 消费端)

一、解决方案当提供者向Mq发送消息,消费端消费之后,仍然有消息存在队列中,或者提供者操作不当,重复向Mq发送消息,都会造成消息堆积。在消费端可以拿到消息的唯一标识,引入redis,如果消息消费成功,则插入redis一条记录,下次消费者再消费之前,首先判断有没有此唯一标识在redis中存在,如果有,则直接返回并删除队列消息。消费成功之后同样操作。如果消费失败,则让队列重新发送消息。二、消费端实现 Service ser= (Service ) message.getPayload();

2021-09-04 20:47:39 435

原创 rabbitMq高可用(避免消息丢失)

一、实现方案 创建一张表记录消息发送的日志,消息发送时插入一条待发送的记录,如果消息发送成功则更新消息状态。发送失败时更新记录表的重发次数,达到重发次数则认定消息发送失败,使用定时任务扫描发出消息一段时间仍未待发送状态的消息,从而避免消息非人为编码原因导致中间件不可用。二、创建表 和 对应实体,定义实体静态属性CREATE TABLE `send_log` ( `msgId` varchar(255) DEFAULT NULL, `serviceId` int(11) D...

2021-09-04 17:03:54 259

原创 springboot生成+校验二维码

一、准备工作:作者采用导入第三方插件的方式进行生成和二维码的校验,首先导入第三方的依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependen

2021-08-31 21:55:37 560

原创 springboot+rabbitMq 实现邮件发送

一、准备工作 1、作者使用的是163邮箱进行邮件发送,以下是截图步骤获取邮件发送需要的参数进入到设置选项选择邮件协议选项选择任意一种协议开启继续下一步然后用手机发送 信息到指定账号最后163邮箱会提供一个16位大写的字符串作为密码。接着查找163邮箱开启协议的端口 和服务器名称,这里直接贴出来吧服务器地址:POP3服务器: pop.163.comSMTP服务器: smtp.163.comIMAP服务器: imap.1...

2021-08-27 23:07:19 1544

原创 springboot+poi+vue实现excel导入

一、准备工作(可参考上一篇excel导出)二、实现步骤 1.将文件“上传到后端” 2.后端对文件进行解析 3.把解析后的数据持久化到数据库三、实现1.调用elementui的上传控件<el-upload style="display: inline-flex;margin-right: 8px" class="upload-demo" :show-file-list="false" ...

2021-08-27 22:28:43 387

原创 springboot+poi+vue实现导出excel

一、准备工作 1.将poi依赖导入到pom.xml<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>二、前端查询出数据,...

2021-08-27 22:11:12 344

原创 vue+elementUI通过关键字过滤树节点

一、效果图1、初始界面2、添加搜索条件 运维3、清除搜索条件二、直接上代码,然后解释下代码吧<template> <div style="width: 450px"> <el-input placeholder="输入部门名称进行搜索..." prefix-icon="el-icon-search" v-model="filterText" size="mini"> ...

2021-08-15 16:43:50 1725 1

原创 使用mybatis进行递归操作

一,适用场景 当业务中要查询带层级的数据时,并且不知道层级数或者层级大于三级时,使用递归操作把数据整合成要展示的数据时。当然编程语言同样可以做到,本次只是阐述用mybatis时的用法。二、数据库数据结构说明id 当前数据主键,也是标识parentId 标识当前数据的父id -1则代表是一级depPath 存放用于查询自己上级,或者下属层级的数据时比较方便 (业务方面)适用场景:比如某银行某业务需要审批才能让客户看到,该业务需要操作人员的上级才有审批权限,并且该操作人员可以审...

2021-08-15 16:26:26 2966

原创 vuex实现从服务端动态加载路由

一、前言通常情况下,前端配置主要放在router.js文件中,如果新加一个菜单的话,就直接在文件中新增一个路由。当然按照后端可维护性得到做法,可以把菜单作为配置,配置起来,不用每次都修改文件内容。二、通常在文件中配置的做法import Vue from 'vue'import VueRouter from 'vue-router'import Login from '../views/Login.vue'import HomeDemo from '../views/HomeDemo.vu

2021-08-11 00:05:37 334

原创 vue配置axios 和npm代理转发时遇到的坑

一、请求方式错误的坑 1.问题复现 登录时,肯定是post请求带着用户名和密码去登陆,但在页面检查代码时,却发现请求方式是get方式。这是我的配置let base='';export const KeyValuePostRequest=(url,params)=>{ return axios({ methods:'post', url:`${base}${url}`, data:params, tr...

2021-08-08 23:47:10 1938

原创 springSecurity前后端分离项目登陆返回json

一、前言在传统的前后端不分离项目中,根据请求进来的路径,经过业务处理之后,一般是采用ModelView形式返回,或者是直接返回字符串,根据提前编写好的view匹配规则,转发到对应的页面,故而可以说是,有服务端来控制页面的展示。在前后端分离项目中,服务端只需要返回接送数据即可,展示的工作则有前端根据路由去匹配,决定展示的内容,所以,无论是哪种框架,都是只返回json即可。SpringSecurity中直接在配置中将登陆状态的结果封装成json返回。二、在配置中实现json的返回package c

2021-08-08 23:24:39 1001

原创 Vue SPA工作原理

一、spa应用解释 全称是single page application(单页面应用),即我们访问页面时,只有index.html文件和一个static文件夹,但就是这个些静态文件能使我们看到十分丰富的页面效果,目前企业级的管理系统大多数都是应用此开发模式,接下里就是介绍一个html如何展现出全部网站内容的原理。二、神奇的index.html...

2021-08-07 20:56:07 460

原创 Exception in thread “pool-2-thread-1“ java.lang.ExceptionInInitializerError 解决

Exception in thread "pool-2-thread-1" :表示在某线程中的异常,最可能的是自己做异步操作时,借助线程池来完成,而异常就是在异步时抛出的。java.lang.ExceptionInInitializerError 代表初始化失败时的异常。较为神奇的是,编译出来的文件,明明有啊?报错信息为啥老是提到这一行呢?如果出现这样的匪夷所思的问题,就要一步步向源头去找,于是我找到了罪魁祸首:这是AlipayConfig报错的那一行,二这个参数又是从ConfigPro..

2020-08-06 14:54:54 8838

原创 java/lang/NoClassDefFoundError: java/lang/invoke/MethodHandle 解决

报错信息是eclipse的Consloe显示:Error occurred during initialization of VMjava/lang/NoClassDefFoundError: java/lang/invoke/MethodHandle项目右键 buildpath 设置jdk (本来我设置jdk1.8的,但是上一次跑的项目是用的1.6) 确认版本和java compile的一定要一致,不只是显示的版本号,还要看jdk的jar包在本地的路径,完全一致,即可解决掉本问题...

2020-08-06 14:29:36 712

原创 idea 非导入jar包 报java.lang.NoClassDefFoundError

java.lang.ClassNotFoundException: visitorCharge处理办法:删除target下classes文件重新编译即可

2020-06-30 11:17:42 379

原创 OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000083e80000, 1366294528, 0) failed;

我是在手动搭建云hbase时遇到的安装zookeeper和hdfs时 启动命令的时候会报OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000083e80000, 3221225472, 0) failed; error='Cannot allocate memory' (errno=12)这种错误原因就是

2017-09-12 10:42:42 15327 1

原创 Centos突然出现连接不上网(有线网络提示已断开)

问题:右上角两个小电脑出现‘X’号 有限网络 已断开解决办法:1、点击虚拟机桌面右下角的网络适配机(从左到右第四个)右键选择“配置”选项          2、看到弹出窗口的右侧属于“网络连接”的选项 选择第一项‘桥接模式’  3、确定后点击右上角的电脑(左键)会看到system eth0 选项了

2017-08-29 10:10:31 5378 1

原创 linux怎样完全删除用户(即使在user被占用时)

比如用userdel 删除用户时,会报错  user hadoop is currently used by process 2994 意思是说这个用户正在被进程2994占用,并且及时被删除之后还是在/home的目录下找到这个用户名 进而无法创建这个用户了 需要做到一下几步 1.先用rm -rf 命令把当前/home 目录下的用户名删除(看见就烦)   2.用userdel +用户

2017-08-28 17:41:52 18622 2

原创 无密码打通ssh通道

每个Linux机器之间需要ssh连接访问时,需要用户名和密码登录访问,可以采用RSA或者DSA加密密钥和公钥共同实现相互访问不再需要每次都输入密码                    1.我有两台机器 ip分别是 (主)192.168.209.131和(目的)192.168.209.132 (用户名相同redis)          2.加密方式选择RSA或者DS

2017-08-03 11:37:33 597

IE10.zip浏览器安装

浏览器

2021-09-08

空空如也

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

TA关注的人

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