Gitee

Spring WebFlux (5): WebClient使用

一个人想着一个人 提交于 2020-08-14 15:10:05
可以使用WebFlux的WebClient类很方便的对网络请求进行代理处理操作,我想Spring Cloud Gateway中主要用的就是WebClient进行操作,这里简单介绍一下WebClient的用法,想要深度学习的话,看一下Spring Cloud Gateway源码准没错 一些用法 流数据 首先创建一个server端,用于产生一些网络服务: Employee为员工类 EmployeeFaker为通过javafaker包生成的一些数据 EmployeeController生成一些服务,其中getEmployee为每一秒生成一个Employee对象,因为是流数据使用 APPLICATION_STREAM_JSON_VALUE 进行传输 @Data @Builder @NoArgsConstructor @AllArgsConstructor class Employee { Long id ; String name ; Integer age ; Integer salary ; String phoneNumber ; String address ; } class EmployeeFaker extends Employee { private final Faker f = new Faker ( Locale . CHINA ) ; public

自己动手写SQL执行引擎

北慕城南 提交于 2020-08-14 14:02:26
自己动手写SQL执行引擎 前言 在阅读了大量关于数据库的资料后,笔者情不自禁产生了一个造数据库轮子的想法。来验证一下自己对于数据库底层原理的掌握是否牢靠。在笔者的github中给这个database起名为Freedom。 整体结构 既然造轮子,那当然得从前端的网络协议交互到后端的文件存储全部给撸一遍。下面是Freedom实现的整体结构,里面包含了实现的大致模块: 最终存储结构当然是使用经典的B+树结构。当然在B+树和文件系统block块之间的转换则通过Buffer(Page) Manager来进行。当然了,为了完成事务,还必须要用WAL协议,其通过Log Manager来操作。 Freedom采用的是索引组织表,通过DruidSQL Parse来将sql翻译为对应的索引操作符进而进行对应的语义操作。 MySQL Protocol结构 client/server之间的交互采用的是MySQL协议,这样很容易就可以和mysql client以及jdbc进行交互了。 query packet mysql通过3byte的定长包头去进行分包,进而解决tcp流的读取问题。再通过一个sequenceId来再应用层判断packet是否连续。 result set packet mysql协议部分最复杂的内容是其对于result set的读取,在NIO的方式下加重了复杂性。

Qt音视频开发3-vlc录像存储

ぃ、小莉子 提交于 2020-08-14 13:44:49
一、前言 录像功能是视频监控系统的常用功能,就是将打开的视频流或者视频文件重新保存成MP4文件,当然也可以保存成其他格式,一般默认用MP4比较好,比较标准一些,MP4格式的兼容性最好,基本上没有说那台电脑不能播放MP4文件,所以就保存成这种最常用的视频文件格式就好了。 vlc的录像功能是内置封装好的,在打开文件的前面设置相应的命令参数即可,如果只是要求整个过程保存成一个视频文件,这个很好办,网上方法一大堆,只要调用libvlc_media_add_option函数设置:sout=#duplicate{dst=file{dst=d:/1.mp4},dst=display}即可,最开始用的是:sout=#stream_out_duplicate{dst=display,dst=std{access=file,mux=%1,dst=%2}}参数,后面换成vlc3以后发现不支持了,查阅相关资料后发现要用duplicate,可能vlc3开始不支持stream_out_duplicate只支持duplicate吧。 保存成单个视频文件,这个没有任何问题和难度,但是视频监控领域中经常需要的是定时保存成单个文件,比如30分钟一个视频文件,这样方便检索,而且也不会看起来一个视频文件很大很大,毕竟视频监控是7*24小时运行的,那这个文件不知道多大,vlc要动态保存多个文件,这就需要模拟执行录像

PO模式你会吗?自动化测试PO模式分层如何实现?

对着背影说爱祢 提交于 2020-08-14 13:22:02
一、什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。 2.PO层:元素定位、获得元素对象,页面动作 3.测试用例层:业务逻辑,数据驱动! 三者的关系:PO层继承继承层,测试用例层调用PO层! 二、什么是自动化测试框架 说到自动化框架,我相信很多人应该都听过这个词,但是不知其到底是个什么东西,为什么要用自动化框架。有很多人堆自动化框架都是懵懵懂懂,就跟谈恋爱一样,朦胧美! 一个好的自动化测试框架是可以让不那么懂技术的人也可以写自动化测试脚本的, 一个好的自动化测试框架可以减少自动化测试中脚本管理和维护当中的人力物力和财力。 其实自动化框架的一个最大的意义在于可重用性。因为在框架里,你可以实现很多的通用功能来简化整个脚本的开发过程。并且生成美观的测试报告。 三、非PO模式和PO模式优缺点对比 自动化软件测试交流!!!群:642830685,领取最新软件测试资料大厂面试和Python自动化学习资料!一起学习交流 非PO模式 面向过程的线性脚本POM把页面元素定位和业务操作流程分开。实现松耦合。 复用性差UI元素的改变不需要修改业务逻辑代码

物联网项目开发 start 01

社会主义新天地 提交于 2020-08-14 13:04:48
物联网项目开发 start 01 小威架构 / boot-backend https://gitee.com/zhang.w/boot-backend.git 此项目源码采用前后端分离方式,spring boot开发后端,使用shiro进行权限控制,layui、bootstrap、jquery、html为前端,基于json进行交互,接口完全采用Restful的风格, 实现按钮级权限控制,可以作为开发项目的脚手架,做为基础项目。 1、git maven spring java web jdk idea community https://gitee.com/zhang.w/boot-backend.git sprint boot 2、source db code dependencies database script sql config db password   config email and password 3、pom file pom parent spring boot test spring boot spring boot aop actuator apring boot lombok  plugins   lombok json fastjson starter-web mybatis for db connection shiro mysql ehcache

十多位全球技术专家,为你献上近十个小时的.Net微服务介绍

大城市里の小女人 提交于 2020-08-14 12:30:12
.Net Conf: Focus on Microservices 是 .Net Conf 社区在 2020 年 7 月 30 日举办的线上分享活动。整个活动视频长达近 10 个小时。今天我们来看看都发生了什么。 章节汇总 本次分享由十多位来自全球的资深技术专家在线分享,涵盖了当前 .Net 在微服务领域的利器。包括有以下这些内容: .Net 最新特性与微服务 为何关注微服务(Why You Should Care About Microservices) 保持技术敏锐(Stay Sharp) 使用 Steeltoe 开启 .NET 微服务旅程(A Journey into .NET Microservices with Steeltoe) Orleans 在微软中的应用(Orleans at Microsoft) DARP 助力您的 .NET 微服务(Adding a Little DAPR to Your .NET Microservices) Tye 让您快乐开发微服务(Developing and Deploying Microservices With ‘Tye’) 不仅只有 REST 和 RPC,还有异步事件和消息模式(Beyond REST and RPC:Asynchronous Eventing and Messiging Patterns) 微服务、DDD 和

Spring WebFlux (6): RSocket 服务实现

自闭症网瘾萝莉.ら 提交于 2020-08-14 11:55:25
RSocket官网:https://rsocket.io/ RSocket是一种二进制协议,可用于字节流传输,例如TCP,WebSockets和Aeron。 提供了四中交互模式: request/response (stream of 1) 请求/响应(单响应)大多数请求就是这种模式,仅1个响应的流,是在单个连接上多路复用的异步消息 request/stream (finite stream of many) 可以将其视为“集合”或“列表”响应,但不是将所有数据作为单个响应返回,而是按顺序流回每个元素。 fire-and-forget (no response) 无返回,在不需要响应时非常有用。它不仅可以通过跳过响应来节省网络使用量,而且可以在客户端和服务器处理时间内进行重大的性能优化,因为不需要簿记来等待和关联响应或取消请求。适用于可以有丢失的场景(非关键日子记录) channel (bi-directional streams) 双向消息流,用于源数据更新,断开连接等,可以获取订阅更新后的差额而不是重新获取一遍 它支持会话恢复,以允许跨不同的传输连接恢复长寿命的流。当网络连接频繁断开,切换和重新连接时,这对于移动服务器通信特别有用。 Springboot对RSocket进行了封装 MessagingRSocket ,通过Message进行传递,依赖如下:

cron表达式解析器

删除回忆录丶 提交于 2020-08-14 11:07:10
cron表达式解析器,用于支持定时任务的处理。 cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表。这些子表达式是分开的空白,代表: 1. Seconds 2. Minutes 3. Hours 4. Day-of-Month 5. Month 6. Day-of-Week 7. Year (可选字段) 例 "0 0 12 ? * WED" 在每星期三下午12:00 执行, 个别子表达式可以包含范围, 例如,在前面的例子里("WED")可以替换成 "MON-FRI", "MON, WED, FRI"甚至"MON-WED,SAT". “*” 代表整个时间段. 每一个字段都有一套可以指定有效值,如 Seconds (秒) :可以用数字0-59 表示, Minutes(分) :可以用数字0-59 表示, Hours(时) :可以用数字0-23表示, Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份 Month(月) :可以用0-11 或用字符串 “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示 Day-of-Week(每周):可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and

.Net Core in Docker

ε祈祈猫儿з 提交于 2020-08-14 11:02:02
前面已经介绍过了 .Net Core 程序发布到 Docker 容器 的内容。但是每次通过 SSH 链接到服务器敲命令,运行脚本也是挺麻烦的一件事。程序员是最懒的,能让电脑解决的问题绝不手动解决,如果当我们push一次代码后自动build代码,自动跑单元测试,如果测试通过,自动发布程序,如果失败就发邮件通知管理员,这样的话该多美好。为了达成这个目标于是持续集成(CI)持续交付/部署(CD)就被发明出来了。CICD领域有个大名鼎鼎的工具:Jenkins,但是这次不使用它。如果你使用阿里云的话,阿里云已经提供了类似的功能,可以免去自己搭建Jenkins服务,以及Docker镜像私仓的过程,而且目前它们是免费的。 阿里云Codepipeline服务,是一套类似Jenkins的服务(其实我觉得它的核心引擎就是来自Jenkins)。 阿里云容器镜像服务,是一个镜像仓库,可以是公开的,也可以是私有的。 持续集成CI 持续集成指的是,频繁地(一天多次)将代码集成到主干。 它的好处主要有两个。 (1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 (2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前

博客园主题——atum1.15升级发布啦

前提是你 提交于 2020-08-14 10:59:56
atum主题部署文档 自周三发布的博客园主题1.0版本赢得得广大博友的好评,但同时该主题也存在一些小瑕疵,这个版本主要是根据atum1.0版本以及各博友的建议做了一些升级改动,改动后重新打包发布atum1.1版本。博主在接下来的版本迭代中也会不断加入更多符合博友方便使用的各种新特性。好了,接下是atum1.1主题的部署详情。 介绍 一款由VUE打造的简约型博客主题,兼容各大主流浏览器,响应式设计,PC、平板、手机等均可正常浏览。 特性 响应式设计,兼容手机端浏览器。 提供多种配置信息,方便各类用户进行个人定制化。 部署文档十分详细且部署快捷。 主题整体偏向简约、无太多不必要的特效画面、偏向于阅读型博客。 请求局部HTML刷新,实现全站无刷新式加载。 该版本主要改进 相对于atum1.0需要的blogAcc、blogId等参数的必须配置,该版本采用自动配置特性,即做到了 所有属性无必须配置 ,做到了 按需配置 的特性。 中央面板新增滚动条辅助,改进了能够快速进入页底或页顶的阅读体验。 修改博客文章标题右侧眼睛图标为放大图标,点击可进行全屏沉浸式阅读文章,加强阅读体验。 调整分页显示,修改为分页页数在下,分页内容在上。 调整各处内容过长导致内容溢出或换行问题。 急速部署 前提:已经开通 js 权限,没开通的可以向博客园官方申请开通。 前提:对于随笔发布请不要设置EntryName属性。