福禄网络研发团队的博客

让研发更快乐,创价值共分享

  • 博客(67)
  • 收藏
  • 关注

原创 构建一个基于容器的开发环境

前言:GNU/Linux(以下简称Linux)是目前服务器使用广泛的系统,而开发人员使用的操作系统大多数却是Windows。虽然现在主流的语言几乎都支持跨平台的特性,但在开发过程中仍然会因为平台不一致导致一些莫名其妙的问题,最经典的当属CRLF(回车换行符)在Windows和Unix系统间造成的问题。而Windows糟糕的软件管理也一直被开发人员嫌弃,新机器装一个齐全的开发环境往往要重复经历打开...

2021-07-20 11:03:00 461

原创 使用Flyway来管理数据库版本

使用Flyway来管理数据库版本Flyway是什么Flyway是一款数据库迁移(migration)工具。它可以帮助我们在不同环境保持数据库的同步,减少手工操作,避免数据导入的顺序错误,同时也减少了遗漏的机会。flyway可以集成在项目中,可以与Spring 框结合。在项目发版时,自动执行数据库脚本,无需人为执行数据库同步操作。就目前而言,我们部署应用的流程大概是这样的:开发人员将应...

2021-07-13 11:24:00 404

原创 TypeScript 在开发应用中的实践总结

背景以前 hybrid app 的移动端开发模式下,H5 和客户端通信的 js sdk 代码使用 js 编写,sdk 方法的说明使用文档输出。对于开发的使用来说,在 IDE 中不能得到友好的参数类型提示。于是我们维护一个类型定义包进行 sdk 方法的类型定义。但这样对于维护 sdk 的同学来说,维护源码的同时需要同步更新类型定义,更新如果不及时,开发需要通过类型合并临时解决。加上以前的代码 a...

2021-06-23 11:24:00 556

原创 java 8 - java 17 升级指北

2014年发布的java SE 8和2017年发布的java EE 8,至今还是使用最广泛的java版本,大部分java开发者对于java 8之后的升级总是敬而远之,这跟java 9以后的破坏性升级和oracle的商用协议有关,但随着9月java 17的发布,我们有更多理由去升级和在新项目中使用更新的java了。为什么要升级?java 9之后的Java改变了更新策略,java 11是8之后...

2022-01-11 12:18:00 1854

原创 基于Kubernetes实现前后端应用的金丝雀发布

基于Kubernetes实现前后端应用的金丝雀发布公司的研发管理平台实现了Gitlab+Kubernetes的Devops,在ToB和ToC场景中,由于用户量大,且预发布环境和生产环境或多或少存在差异,使得生产环境发布版本的时候还是存在很多不确定性和很大的风险。于是需求方就提出了支持金丝雀发布的需求,金丝雀发布方案有很多,以下为两种常用的方案。1、Deployment滚动更新策略实现金丝雀发...

2021-12-06 09:04:00 298

原创 质量体系建设之路---可视化的MockServer

一、 背景福禄网络作为一家数字权益商品及服务提供商,覆盖了我们衣食住行的各种生活场景的权益内容,对接了如支付宝、京东、银行APP各种渠道,如何能够快速的响应渠道需求,提供稳定的接口服务,这就要求我们电商团队能够做到比渠道快一步的接口测试;同时作为一家集团化的公司,内部的信息化系统对接了众多银行的相关支付业务,涉及到查余额、下流水、支付、对账等日常资金业务,这要求信息化部门能够确保资金支付相关...

2021-12-03 14:36:00 316

原创 超图GIS入门iserver搭建,前端调用iserver加载三维场景demo

目录前言一.GIS介绍,为什么选择它?二.环境安装三.调用三维GIS场景设置地图风格添加地图iServer服务前言前段时间因为对3D制图感兴趣,学习了一下国内制作GIS的公司产品技术,并以一个demo为示例演示从制作一个三维场景地图——>安装iserver服务——>发布制作的地图——>最后通过前端加载地图显示操作等分为几个步骤来逐步讲解。GIS介绍,为什么选择它?...

2021-11-30 13:42:00 3788 1

原创 分布式事务解决方案

目录分布式事务解决方案分布式事务什么是分布式事务分布式产生的原因分布式事务的CAP理论分布式4种常见解决方案2PC提交3PC提交本地消息表(阿里Seata)mq的ack手动补偿事务(rabbitmq)分布式事务解决方案分布式事务什么是分布式事务指一次大的操作由不同的小操作组成的,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。从本质上来说,分布式事...

2021-11-29 17:40:00 263

原创 从零开始,使用Dapr简化微服务

序言现有的微服务模式需要再业务代码中集成大量基础设施模块,比如注册中心,服务发现,服务调用链路追踪,请求熔断,重试限流等等,使得系统过于臃肿重量级。Dapr作为新一代微服务模式,使用sidecar模式,简化了现有微服务系统代码,将基础设施层以sidecar模式分离,使得开发人员更集中于业务逻辑编写。本文以net6和dapr1.5为基础,搭建一个dapr的简单使用示例。1、安装Docker...

2021-11-26 14:34:00 1432

原创 白嫖钉钉机器人-员工服务台

目录白嫖钉钉机器人-员工服务台应用场景官方应用单聊服务群聊服务定时通知自助问答转人工服务NEW员工服务台特殊技巧采用官方api方式推送官方api跳转方式白嫖钉钉机器人-员工服务台前言:钉钉的出现为企业节约了大量人力成本,其中也有很多很好的功能。今天我们就来说说钉钉提供的一个免费机器人-员工服务台应用场景● 官方应用:服务助手已经与钉钉主要官方应用进行能力打通,钉钉官方应用流程提醒无须自行...

2021-11-16 19:11:00 3793

原创 lua入门之环境搭建、第一个demo

前言前段时间因为有些项目功能需要,自己研究了下lua,今天整理下,并以一个demo为示例演示手机上的运行效果分为几个步骤来逐步讲解。1.lua介绍,为什么选择它?2.环境安装3.撸一个简单demo一.lua介绍,为什么选择它?Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。轻量级:...

2021-11-11 13:47:00 719

原创 使用钉钉创建企业内部机器人

目录玩转钉钉机器人创建钉钉机器人:如何创建钉钉机器人如何调用机器人api支持的消息格式text类型markdown类型整体跳转actionCard类型feedCard类型使用钉钉机器人推送消息机器人交互式卡片设计:如何发送交互式卡片配置消息模板修改机器人交互卡片回调地址发送机器人交互消息接受交互卡片回调消息玩转钉钉机器人前言:钉钉的出现为企业节约了大量人力成本,其中也开放了大量的外部api接...

2021-11-09 09:12:00 1462 1

原创 几十行js实现很炫的canvas交互特效

几十行js实现很炫的canvas交互特效废话不多说,先上效果图!本篇文章的示例代码都是抄的一个叫Franks的老外在yutube上的一个教学视频,他还出了很多关于canvas的视频,十分值得学习,而我对canvas也不太熟悉,跟着大神一起敲代码,做个学习笔记,还要说一下,本文示例的页面结构很简单(html只包含一个canvas),后面代码部分就不贴了,毕竟js才是主角。1.画圆首先从画...

2021-11-05 08:58:00 741

原创 Dataworks批量刷数优化方案探讨

Dataworks批量刷数优化方案探讨在数据仓库的日常使用中,经常会有批量补数据,或者逻辑调整后批量重跑数据的场景。批量刷数的实现方式,因调度工具差异而各有不同。Dataworks调度批量刷数局限我们的数据仓库构建在阿里云的dataworks+maxcompute产品上,dataworks的调度工具提供了补数据的功能,可以很方便的补整个任务流的数据,但是该功能有个局限,就是只能指定一个参...

2021-11-04 10:41:00 765

原创 Flink入门-第一篇:Flink基础概念以及竞品对比

Flink入门-第一篇:Flink基础概念以及竞品对比Flink介绍截止2021年10月Flink最新的稳定版本已经发展到1.14.0Flink起源于一个名为Stratosphere的研究项目主要是为了构建下一代大数据分析平台,在2014年成为Apache孵化器项目。2019 年 1 月,阿里巴巴实时计算团队宣布将经过双十一历练和集团内部业务打 磨的 Blink 引擎进行开源并向 Apac...

2021-11-03 12:16:00 1058

原创 前端单元测试

前端单元测试背景一直以来,单元测试并不是前端工程师必须具备的一项技能,在国内的开发环境下,普遍都要求快,因此往往会忽略了项目的代码质量,从而影响了项目的可维护性,可扩展性。随着前端日趋工程化的发展,项目慢慢变得复杂,代码越来越追求高复用性,这更加促使我们提高代码质量,熟悉单元测试就显得愈发重要了,它是保证我们代码高质量运行的一个关键。本文旨在探索单元测试的编写思路,它对项目的影响,以及对...

2021-11-02 09:13:00 548

原创 你知道怎么使用Google两步验证保护账户安全吗?

目录为什么我们需要使用它?对有些人来说,盗取密码比您想象的更简单什么是Google两步验证?多一道安全防线什么是Google Authenticator ?使用Google两步验证的好处实际项目效果演示为什么我们需要使用它?互联网是一个极其危险的地方,有很多不怀好意的人想要访问我们的在线账户。通过使用双因素身份验证,可以为我们的账号提供额外的安全。用户名密码方式的登录变得越来越不安全,你肯定听...

2021-11-01 09:45:00 2003 1

原创 实现支持多公众号的微信公众号扫码登录服务

实现支持多公众号的微信公众号扫码登录服务最近,在公司的通行证项目开发过程中,需求方提出了支持微信公众号扫码登录,并且可以支持多公众号接入的需求。研究了一下微信公众号的开发文档,实现微信公众号扫码登录并不难,但是要支持多公众号接入就得好好斟酌一下了。理清思路,微信公众号扫码登录的实现关键就是appid、openid获取,appid用来识别公众号,openid用来识别用户,能理解这两点需求就应该...

2021-10-26 09:52:00 629

原创 为Kubernetes集群添加用户认证

Kubernetes中的用户K8S中有两种用户(User)——服务账号(ServiceAccount)和普通意义上的用户(User)ServiceAccount是由K8S管理的,而User通常是在外部管理,K8S不存储用户列表——也就是说,添加/编辑/删除用户都是在外部进行,无需与K8S API交互,虽然K8S并不管理用户,但是在K8S接收API请求时,是可以认知到发出请求的用户的,实际上,...

2021-10-25 13:59:00 340

原创 质量体系建设之路---从接口测试开始基建

引言中心内有大量的项目经过多年的迭代建设,无论是从体量、功能、复杂度都达到了一个无法完全依赖人工验证交付的点。我们和很多质量团队一样,随着公司业务迅速的增长,前期质量环节主要依赖人工把控,在质量自动化工程建设上没太多积累,面对如今的业务交付无论是从效率、质量上都逐渐暴露出明显的短板。开发及运维团队已在CI/CD上进行了提效建设,木桶效应逐渐明显,质量团队也希望尽快突破自己的交付瓶颈,并能逐...

2021-10-18 09:23:00 483

原创 深入理解SpringBoot核心机制《spring-boot-starter》

深入理解SpringBoot核心机制《spring-boot-starter》前言:对于这几年java火爆天的springBoot我相信大家都有所使用过,在springBoot的项目中,pom文件引入最多的无非就是各种各样的srping-starter了。什么是 Starter 呢?为什么要使用Starter呢?你可以理解为一个可拔插式的插件(组件)。通过 Starter,能够简化以前繁...

2021-09-13 08:53:00 252

原创 Vue3 Composition API写烦了,试试新语法糖吧—setup script

前言Vue3发布近一年了,相信大家对Vue3的新特性,新语法都很熟悉了。那么在使用Composition API的过程中,有没有觉得整个过程比较繁琐。比如你的模板里用到了大量的state和方法的时候,都需要在setUp()函数里一一return出去。这个过程就比较难受了。setup script 语法糖setup script 是vue3的一个新的语法糖,用起来特别简单。只需要在scrip...

2021-08-25 09:51:00 1381

原创 vue3源码难学,先从petite-vue开始吧

如今这个世道,作为一个有几年工作经验的前端,不学点框架源码都感觉要被抛弃了,react或vue要能吹吹牛吧,最好能造个轮子,听说vue3源码好学点,那么学学vue3,但是学起来还是那么费劲,感觉快放弃了,就在这个时候出现了petite-vue,害,这家伙比vue简单啊,拿它来重拾学习源码的信心岂不更好,能自己写一个petite-vue再学习vue3岂不是事半功倍。说了这么多,今天就开始迈出第一步...

2021-07-30 14:12:00 731

原创 dva的effect那么难用,自己造一个轮子吧

背景对于dva这个开发框架,国内从事react的前端工程师多半不会感到陌生,dva完善的开发体系和简单的api,让其被广泛运用到实际工作中。我所在的公司也是长期使用dva作为基础的开发框架,虽然好用,但是随着前端技术的飞速发展,dva似乎陷入停滞了,从npm官网上看其发版情况看,正式版本2.4.1是三年前发布的,最近一次是2.6.0-beta.22版本,也是半年前发布的,因此 附录【2】文章中...

2021-07-29 16:40:00 501

原创 js实现0ms延时定时器的几种方式

这两天看到一篇介绍《如何实现准时的 setTimeout?》的文章,文章起源于一道面试题:有什么办法让setTimeout准时呀?具体文章内容可查看附录【1】,看完之后,引起了我对setTimeout这个函数的探究兴趣,因此在MDN上重新查阅了相关文档,其中提到【最小延时 >=4ms】的一点,因此使用setTimeout不能实现0ms延时的定时器,如果要实现的话,提供了一个参考链接【2】,...

2021-07-27 09:57:00 348

原创 多元统计之因子分析模型及Python分析示例

1. 简介因子分析是一种研究观测变量变动的共同原因和特殊原因, 从而达到简化变量结构目的的多元统计方法.因子分析模型是主成分分析的推广, 也是利用降维的思想, 将复杂的原始变量归结为少数几个综合因子的一种多变量统计分析方法.1.1 应用寻求变量的基本结构, 简化变量系统.用于分类, 根据因子得分值, 在因子轴所构成的空间中将变量或者样本进行分类 (能够分析样品间差异的原因)....

2021-07-12 09:20:00 3074

原创 极简数据分析法

无处不在的数据在互联网时代的浪潮中,数据驱动业务已成为业界的共识.在数据贫乏的年代,流行的是粗放型经济,大部分的决策用的都是拍脑袋大法.在人工智能早已写进小学课本的今天,使用数据进行精准决策成为主流.用户在网络世界的每个动作,都对应着数据库里的一条甚至多条数据.浏览、点击、搜索、收藏、下单、分享.......这些行为背后,都是成堆的数据.通过分析这些数据,可以刻画用户的偏好、发现产品的缺陷、洞...

2021-07-06 15:54:00 327 2

原创 解决吞吐性能问题时的思路

什么是ThroughputThroughput指的是应用处理任务的速率,它所描述的是应用在单位时间内能够处理多大数量的任务如下,如果应用能够在1s中处理3个task,我们可以说它的throughput是3tps值得注意的是,throughput这个指标所代表的是速率,它并不代表同时性(Concurrency),比如图一中的3tps的应用,我们能说它可以在1s中处理3个task,但是并不意...

2021-07-05 14:26:00 291

原创 mysql left join转inner join

在日常优化过程中,发现一个怪事情,同一个SQL出现两个完全不一样执行计划,left join 连驱动表都可以变成不一样。对于left join,如果where条件里有被关联表过滤,left join有可能被转成inner join ,本案例中shopInfo有ShopCategory = 'LOC'过滤条件; 保证shopInfo的记录非NULL,因此left join在优化过程中可以转为...

2021-06-30 15:49:00 673

原创 容器环境下如何将NuGet包XML文档添加到Swagger

容器环境下将NuGet包XML文档添加到Swagger在.NET Core项目开发过程中,为了实现代码复用,我们将可以重复使用的部分拆分成一个个小的NuGet包。这些NuGet包可以在其他系统中复用,这样我们只需要实现系统特定的代码,其余部分的就可以重用了,包括功能、文档等。使用过程中,功能复用没有遇到任何问题,但是文档复用却遇到了问题。我们使用SwashBuckle生成Swagger定义和S...

2021-05-25 10:52:00 479 1

原创 antd+react项目迁移vite的解决方案

antd+react+webpack往往是以react技术栈为主的前端项目的标准组合,三者都有成熟的生态和稳定的表现,但随着前端圈的技术不断革新,号称下一代构建平台vite2的发布,webpack似乎不那么香了,为什么这么说呢,因为vite太快了。经过一段时间的尝试,决定在项目中把webpack替换成vite试试,遂写成本文分享给大家。Vite是什么作为本文的主角,首先简单介绍一下vite这...

2021-04-19 14:40:00 3096 1

原创 客官,.NETCore无代码侵入的模型验证了解下

背景.NETCore下的模型验证相信绝大部分的.NET开发者或多或少的都用过,微软官方提供的模型验证相关的类位于System.ComponentModel.DataAnnotations命令空间下,在使用的时候只需要给属性添加不同的特性即可实现对应的模型验证。如下所示:public class Movie{ public int Id { get; set; } [Req...

2021-03-09 19:11:00 1103

原创 开源项目葫芦藤:IdentityServer4的实现及其运用

文章目录前言签名证书(Signing Credential)客户端存储(Client Store)资源存储(Resource Store)持久化授权存储(Persisted Grant Store)资源拥有者验证器(Resource Owner Validator)重定向地址验证器(Redirect Uri Validator)扩展授权验证器(Extension Grant Validator)OAuth2.0的实践运用场景基于角色的授权(role-based authorization)客户端授权模式(c

2020-12-23 10:58:05 1993

原创 浏览器眼中的0

0作为一个特殊的符号,经常会跟浏览器打交道,在不同的场景下,0代表的意思不尽相同,因此浏览器眼中的0不一定就是符合人们感官上的认识,那究竟浏览器会怎么对待它呢,今天我们就来探究一下各种场景中0的含义及浏览器的处理方式。1.setTimeoutsetTimeout在js中常用来推迟任务的执行,可以通过第二个参数设置延迟的毫秒数(如果不设置,默认为0),在一些代码中,可以看到delay=0的情况,如下:window.setTimeout(() => { ...... }, 0);了解js的同学应

2020-12-04 10:41:09 604

原创 api-hook,更轻量的接口测试工具

前言在网站的开发过程中,接口联调和测试是至关重要的一环,其直接影响产品的核心价值,而目前也有许多技术方案和工具加持,让我们的开发测试工作更加便捷。接口作为数据传输的重要载体,数据格式和内容具有多样性,从宏观的角度上看,分为成功和失败,这两种状态又可以细分,例如失败对应的状态码有5**/4**,不同的状态码代表的问题是不一样的,都需要一一考虑,成功返回后,所有字段返回结果又是排列组合形式,那么问题就来了,是否能在条件容许的情况下快速覆盖所有的场景呢,从技术的角度上讲,问题不大,但是有时候成本却有点高,那怎么

2020-11-26 10:07:27 1617 10

原创 .NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你

随着2020进入4季度,.NET5正式版也已经与大家见面了。不过,尽管 .NET Core发布已经有四五年的时间,但到目前为止,依旧有很多.NET开发者在坚守者.NET4,原因不尽相同,但最大的问题可能还是不熟悉Linux,更别说在Linux服务器中部署.NET服务了。而 .NET Core在飞速发展的这四五年里,微服务、云原生等概念也在飞速发展。 .NET Core在微服务和云原生的场景下,也已日趋稳定,生态也在逐步完善,相信.NET5正式发布后,对于我们苦逼多年了的.NET开发者绝对是个机遇。所以,

2020-11-16 10:17:39 7941 3

原创 一款基于.NET Core的认证授权解决方案-葫芦藤1.0开源啦

背景18年公司准备在技术上进行转型,而公司技术团队是互相独立的,新技术的推动阻力很大。我们需要找到一个切入点。公司的项目很多,而各个系统之间又不互通,导致每套系统都有一套登录体系,给员工和客户都带来极大的不便。那么从登录切入进去无疑最合适,对于各个团队的的技术改造成本也不大。所以我们团队第一个项目就是搭建一套统一登录认证授权系统,那么葫芦藤项目应运而生。技术方案后端框架:.NET Core3.1(后期会推出 .NET 5版本)前端框架:rect数据库:mysql(可根据实际情况,自由切换)中间件

2020-11-09 14:23:13 2753 11

原创 MySQL大表优化方案

背景阿里云RDS FOR MySQL(MySQL5.7版本)数据库业务表每月新增数据量超过千万,随着数据量持续增加,我们业务出现大表慢查询,在业务高峰期主业务表的慢查询需要几十秒严重影响业务方案概述一、数据库设计及索引优化MySQL数据库本身高度灵活,造成性能不足,严重依赖开发人员的表设计能力以及索引优化能力,在这里给几点优化建议时间类型转化为时间戳格式,用int类型储存,建索引增加查询效率建议字段定义not null,null值很难查询优化且占用额外的索引空间使用TINYINT类型代替枚

2020-11-02 13:51:07 16600 49

原创 Sec-Fetch-*请求头,了解下?

如果你使用76+版本的chrome浏览器,通过开发者面板查看每个网络请求,会发现都有几个Sec-Fetch开头的请求头,例如访问百度首页https://www.baidu.com/的请求:Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1这是用来干嘛的呢,简单来说,就是网络请求的元数据描述,服务端根据这些补充数据进行细粒度的控制响应,换句话说,服务端可以精确判断请求的合法性,

2020-10-27 09:57:58 13937 1

原创 前端开发快速入门

一、了解前端技术栈1. react:前端开发语言(着重学习)React是用于构建用户界面的JavaScript框架,用于构建高效、快速的用户界面。React 中一切都是组件。虚拟dom2. webpack:前端打包工具一个开源的前端打包工具,将你的js、css、img、svg以更优的方式进行解析加载,配置灵活,功能强大3. ant-design:商户侧前端使用的UI组...

2020-10-22 14:01:00 859

空空如也

空空如也

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

TA关注的人

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