GT

实战 | SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)

孤者浪人 提交于 2020-03-23 18:41:38
3 月,跳不动了?>>>    20 大进阶架构专题每日送达       来自:简书,作者:wangzaiplus 链接:https://www.jianshu.com/p/dca01aad6bc8 一、先扔一张图       说明:   本文涵盖了关于RabbitMQ很多方面的知识点, 如:   消息发送确认机制   消费确认机制   消息的重新投递   消费幂等性, 等等   这些都是围绕上面那张整体流程图展开的, 所以有必要先贴出来, 见图知意   二、实现思路   简略介绍163邮箱授权码的获取   编写发送邮件工具类   编写RabbitMQ配置文件   生产者发起调用   消费者发送邮件   定时任务定时拉取投递失败的消息, 重新投递   各种异常情况的测试验证   拓展: 使用动态代理实现消费端幂等性验证和消息确认(ack)   三、项目介绍   springboot版本2.1.5.RELEASE, 旧版本可能有些配置属性不能使用, 需要以代码形式进行配置   RabbitMQ版本3.7.15   MailUtil: 发送邮件工具类   RabbitConfig: rabbitmq相关配置   TestServiceImpl: 生产者, 发送消息   MailConsumer: 消费者, 消费消息, 发送邮件   ResendMsg: 定时任务,

QiaoJianFeng/vue-mini-player

ⅰ亾dé卋堺 提交于 2020-03-23 18:40:42
3 月,跳不动了?>>> vue-mini-player 基于 Vue 的一个轻量级视频播放组件,适配 PC 和移动端 安装 $ npm install vue-mini-player -S 使用 # main . js import vueMiniPlayer from ' vue-mini-player ' Vue . use ( vueMiniPlayer ) 在项目中使用 vueMiniPlayer < template > < vueMiniPlayer : video = " video " /> < /template > < script > export default { data () { return { video : { url : ' https://api.dogecloud.com/player/get.mp4?vcode=5ac682e6f8231991&userId=17&ext=.mp4 ' , cover : ' https://i.loli.net/2019/06/06/5cf8c5d9c57b510947.png ' } } } } < /script > 💡 特色 1.轻量级 HTML5 播放器,精美 UI 控件,简单易上手 2.提供以 npm 的形式安装提供全局组件 3.多格式视频配置,移动端+PC 通用模式 多类型视频支持

工作流引擎activiti和jbpm哪个比较好?

给你一囗甜甜゛ 提交于 2020-03-23 18:36:26
3 月,跳不动了?>>> 在常用的ERP系统、OA系统的开发中,工作流引擎是一个必不可少的工具。之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时做出的决定是使用jbpm,但实际开发过程中发现这个选择是不合适的。目前我们改为选择Activiti作为工作流模块的引擎,理由如下: 1、Activiti拥有更简洁健壮的接口 JBPM自从版本五后,便重启炉灶,完全抛弃了JBMP4的代码基础,重新基于drools进行了实现。JBPM5,JBPM6似乎缺少一个合格的系统架构师,其接口设计匪夷所思,基本上是按照drools的接口再提供了一套JBPM接口,同名的接口,实现类不断重复出现,代码体系十分混乱。 一个典型的例子,同样是查询待办事项,在JBPM中接口如下: List<TaskSummary> getTasksAssignedAsExcludedOwner(String userId, String language); List<TaskSummary> getTasksAssignedAsPotentialOwner(String userId, String language); @Deprecated List<TaskSummary> getTasksAssignedAsPotentialOwner(String userId, List<String>

用户评论文本情感分析后做走势分析图

别说谁变了你拦得住时间么 提交于 2020-03-23 18:33:56
3 月,跳不动了?>>> 本文讲解怎样对用户评论做情感分析,然后展示使用哪些Excel的公式和功能制作走势图,仅作为实操演示,实际工作中应根据研究问题选择合适的数据处理方法。 1,文本采集和文本情感分析 用网络爬虫采集用户评论的时候,必须把评论发布时间采集下来,前面很多文章讲了数据采集方法,不再赘述。 下一步将采集下来的用户评论导入GooSeeker文本分析平台进行处理。注意要给每条文本编一个序号。因为文本分词和情感分析软件只处理文本内容,导入时间没有意义,并不特殊处理,所以,时间信息留在原文,那么就需要用每条文本的编号将情感分析结果跟原文进行匹配。 下图是导入的数据格式,把数据放在excel中,一条一行,首行是表头,“序号”和“正文”是必须填的,序号可以是自然编号。 2,为每条原始数据计算情感倾向 GooSeeker情感分析平台会把原始文本切成句子,做句子级别的情感分析,假设制作统计图表的时候想用一条完整的文本内容作为单位,那么就需要把情感分析结果进行加总。其实本文还以天为单位再次汇总。如果根据句子所表达的主题进行分类以后看各自的走势,汇总方式就要相应做调整。 2.1,将情感倾向用数字表示 如下图,情感倾向本来用文字“正面”“负面”“中性”表示,首先要变成数字1,-1,0,才能求和。 2.2,用透视表求和 如下图,“序号”就是给原文编的号,“句子序号

MVVM_UI和逻辑分离(事件利用命令替换),并实现模板切换等...

坚强是说给别人听的谎言 提交于 2020-03-23 18:21:19
3 月,跳不动了?>>> 近期公司重构了些界面,因为换肤和界面定制的缘故,需要把样式和逻辑分开;所以记录下关键的操作;主要是利用命令代替事件... 1 <Window x:Class= " Demo_MVVM.MainWindow " 2 xmlns= " http://schemas.microsoft.com/winfx/2006/xaml/presentation " 3 xmlns:x= " http://schemas.microsoft.com/winfx/2006/xaml " 4 xmlns:d= " http://schemas.microsoft.com/expression/blend/2008 " 5 xmlns:mc= " http://schemas.openxmlformats.org/markup-compatibility/2006 " 6 xmlns:local= " clr-namespace:Demo_MVVM " 7 xmlns:i= " http://schemas.microsoft.com/expression/2010/interactivity " 8 mc:Ignorable= " d " 9 Title= " MainWindow " 10 Height= " 450 " 11 Width= " 800 " 12

ASP.NET MVC5实现芒果分销后台管理系统(一):系统结构设计,集成AutoMapper,Log4net

久未见 提交于 2020-03-23 18:16:01
3 月,跳不动了?>>> 在构思完系统思维脑图后,小墨回到家中,便摩拳擦掌开始了开发工作。要想迅速完成系统开发,前期系统设计和准备尤其重要,因为小墨做过太多大大小小的业务系统,准备工作也是十分顺利。 系统结构 整个系统工程结构如上,基于传统的三层架构模式(不太懂的快去恶补一下) Web: 基于MVC工程模板搭建,系统模型,视图,控制器 Service: 业务 Repository: 持久化层,集成EntityFramework Tracking:日志组件集成Log4net CommonUtils:公共工具,提供加密解密/序列化/Excel处理,提供Castle Ioc管理 话不多说,直接上干货 集成Log4net 虽说李老板的芒果业务系统是如此的简单,可一向有着强迫症的小墨仍然有板有眼的规划系统的各个架构功能,做事尽善尽美是小墨的一贯作风。日志能省吗,当然不能!以下集成Log4net.   Nuget下载   这里直接右键解决方案Nuget中搜索Log4net,安装最新版5.2.7 日志配置文件   <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections>

Asp.Net Core 中IdentityServer4 授权原理及刷新Token的应用

烂漫一生 提交于 2020-03-23 18:15:01
3 月,跳不动了?>>> 一、前言 上面分享了 IdentityServer4 两篇系列文章,核心主题主要是 密码授权模式 及 自定义授权模式 ,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享 IdentityServer4 的授权流程及 refreshtoken 。 系列文章目录( 没看过的先看这几篇文章再来阅读本文章 ): Asp.Net Core IdentityServer4 中的基本概念 Asp.Net Core 中IdentityServer4 授权中心之应用实战 Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式 为了继续保持 IdentityServer4 系列博客分享上下文一致,我这里再把上回 授权中心 拆分后的图贴出来,如图: 图中的 授权中心 就是通过 IdentityServer4 实现的授权服务中心,我下面就直接用 授权中心 代替 IdentityServer4 的授权服务来继续述说,也感谢大家对我的支持,一直阅读我的文章。 二、授权流程 2.1 客户端验证流程图 流程图中,客户端仅仅会到 授权中心 请求一次,并拿到验证公钥返回给 Api资源 拥有端,后面客户端再次尝试请求 Api资源 时候就不会再到 授权中心 去获取验证公钥,会直接用之前获取到的 公钥 进行验证,验证通过则授权通过。 2.2

nginx反向代理signalr

人盡茶涼 提交于 2020-03-23 18:09:58
3 月,跳不动了?>>> asp.net core应用常常要通过nginx来反向代理, 普通的web api配置asp.net core反向代理比较常见, 如果在应用中集成了 signalr , 如何使用nginx来反代呢? nginx配置 我用的nginx的版本: nginx/1.16.1 location /posthub { proxy_pass http://<signalr监听的地址>; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_http_version 1.1; } 上面单独为signalr监听的路径 /posthub 做了配置, 在我看来这是必要的... 关键配置 proxy_set_header Connection upgrade; 注意 要对signalr路由进行单独的配置, 因为signalr需要长连接, 而其他请求未必需要. 来源: oschina 链接: https://my.oschina.net/u/4263893/blog/3209224

笔记:创建Vuejs 的 Login应用

主宰稳场 提交于 2020-03-23 18:08:09
3 月,跳不动了?>>> ref: www.thepolyglotdeveloper.com/2018/04/sim… Sometimes the best examples towards learning a new framework is through a simple user login sample. Login involves many concepts, including forms, data binding, routing, and potentially HTTP to a remote service, all of which are core concepts in any web application. We’re going to see how to implement a simple login form in a web application that uses the Vue.js JavaScript framework. We’re going to have a login screen with some hard coded credential data. When the correct information is entered, the application will navigate to a

如何在 Laravel 中使用 PHP 的装饰器模式

只谈情不闲聊 提交于 2020-03-23 17:56:49
3 月,跳不动了?>>> 原文链接: learnku.com/laravel/t/4… 讨论请前往专业的 Laravel 开发者论坛: learnku.com/Laravel 设计模式对每个开发人员都很重要。它解决了您构建的每个项目中非常常见的问题。 装饰器模式定义: 它可以帮助您在一个对象上添加额外的行为,而又不影响同一类中的其他对象。 维基百科: 装饰器模式是一种设计模式,它允许动态地将行为添加到单个对象,而不会影响同一类中其他对象的行为 问题 假设我们有一个Post模型 class Post extends Model { public function scopePublished( $query ) { return $query -> where ( 'published_at' , '<=' , 'NOW()' ); } } 复制代码 在我们的PostsController中,我们有如下的index方法 class PostsController extends Controller { public function index () { $posts = Post::published()->get(); return $posts ; } } 复制代码 为了缓存帖子并避免每次我们需要列出帖子时都查询数据库,我们可以执行以下操作 class