• 如何设计一个安全的对外接口?

    比如我们规定我们的一个接口一分钟只能访问10次的话。固定窗口计数器算法滑动窗口计数器算法算的上是固定窗口计数器算法的升级版。滑动窗口计数器算法相比于固定窗口计数器算法的优化在于:它把时间以一定比例分片比如一分钟分为6个区间,每个区间为10s。滑动窗口计数器算法漏桶算法我们可以把发请求的动作比作成注水到桶中,我们处理请求的过程可以比喻为漏桶漏水。
  • 项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口

    所需依赖包这里用的是SpringBoot配置项目,本文讲解的重点是后端接口,所以只需要导入一个spring-boot-starter-web包就可以了:<!--web依赖包,web应用必备--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>本文还用了swagger来生成API文档,lombok来简化类,不过这两者不是必须的,可用可不用。我们来改进一下,使用Spring Validator和Hibernate Validator这两套Validator来进行方便的参数校验!这两套Validator依赖包已经包含在前面所说的web依赖包里了,所以可以直接使用。Validator + BindResult进行校验Validator可以非常方便的制定校验规则,并自动帮你完成校验。
  • API 接口四连问!就问你,怕不怕!

    一般情况下接口最好使用https协议,如果使用http协议,Token机制只是一种减少被黑的可能性,其实只能防君子不能防小人。一般token、timestamp和sign 三个参数会在接口中会同时作为参数传递,每个参数都有各自的用途。DoSDoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。Ping of Death:根据TCP/IP的规范,一个包的长度最大为65536字节。当同一个请求第二次访问时会先检测redis是否存在该sign,如果存在则证明重复提交了,接口就不再继续调用了。
  • Go:从 context 源码领悟接口的设计

    想深入学习这些用法,阅读源码是最好的方式.Context的源码非常推荐阅读,从中可以领悟出go语言接口设计的精髓。对外暴露Context接口 Context源码中只对外显露出一个Context接口typeContextinterface{Deadline()Done()<-chanstruct{}Err()errorValueinterface{}}对于Context的实现源码里有一个最基本的实现,就是私有的emptyCtx,他也就是我们经常使用的context.Background()底层的实现,他是一个int类型,实现了Context接口的所有方法,但都是没有做任何处理,都是返回的默认空值。emptyCtx是整个Context的灵魂,为什么这么说,因为你对context的所有的操作都是基于他去做的再次封装。Context可以被cancel掉需要考虑几个问题:如何处理父或子Context的cancel。cancel后Context是否也应该删除掉。
  • RPC的超时设置,一不小心就是线上事故

    内容将分成以下4个部分:从一次RPC接口超时引发的线上事故说起超时的实现原理是什么?第2步:业务网关通过日志发现:调用推荐服务的RPC接口出现了大面积超时,错误信息如下:第3步:推荐服务通过日志发现:dubbo的线程池耗尽,错误信息如下:通过以上3步,基本就定位到了问题出现在推荐服务,后来进一步调查得出:是因为推荐服务依赖的redis集群不可用导致了超时,进而导致线程池耗尽。只有了解了RPC框架的超时实现原理,才能更好地去设置它。dubbo支持非常细粒度的超时设置,包括:方法级别、接口级别和全局。
  • 常用设计模式系列之——享元模式

    今天阿粉要跟大家分享的是结构型模式之享元模式,既然享元模式是属于结构性模式中的一种,那自然是用来组织代码,调整相应的代码结构来达到效果的,下面我们一起来看一下吧。享元模式首先常规操作,我们先看一下什么是享元模式,维基百科解释:享元模式是一种软件设计模式。另外线程池以及很多用到缓冲池的地方都采用了享元模式,比如 Integer 类中默认缓存了-128 -127 之间的整数,等等场景。
  • 还在为系统迁移烦恼?掌握这些“基本法”解锁更多可能

    读接口迁移1、索引存量/增量数据构建完成后,可以开启读接口切换方案三:完全不依赖精卫数据存量迁移/增量同步1、dts 任务读取存量离线表,接口方式迁移存量数据2、增量同步依赖接口层双写说明:精卫方案一般适用于新老系统存储都使用mysql的场景,当存储方案不一致时,只能通过写dts迁移任务的方式完成存量数据迁移,由于是走接口层写入数据,所以metaq方式构建的索引可以同步完成重建。
  • 怎么用Python实现接口测试?搞不清楚这几点又是白费功夫 !

    今天以天气API接口为例,使用python语言实现用例编写、封装及报告生成功能。点击阅读怎样用Postman做接口自动化测试?点击阅读有没有一个通用的接口自动化测试流程?可以从零开始学的那种!大佬认真起来真可怕!点击阅读接口自动化测试必备框架知识,摸着良心讲,你学会了几样?戳“阅读原文”一起来充电吧!
  • 让Spring在你面前裸奔(一)

    开篇一说到Spring Ioc,我们很多小伙伴很本能的想到了在开发时候,我们在一个类上加上诸如@Component之类的注解,然后再在另外一个同样加着注解的类中用@Autowired之类的注解去引用就好了。但是这背后的,Spring为我们做了什么呢?然后我们一起来看看Resource类及其实现类的结构图:我们可以看出来,根据资源类型的不同,Spring为我们提供了不同的实现。在Spring中,这个加载Resource的接口是ResourceLoader,还是按照惯例,贴一下它的源码:image这个接口的代码非常简单,只有两个方法,其中最重要的当然是getResource这个方法,其实现类往往是通过这个方法定位到具体的资源实例。
  • 用SpringBoot 手把手教你写出优雅的后端接口

    所需依赖包这里用的是SpringBoot配置项目,本文讲解的重点是后端接口,所以只需要导入一个spring-boot-starter-web包就可以了:<!--web依赖包,web应用必备--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>本文还用了swagger来生成API文档,lombok来简化类,不过这两者不是必须的,可用可不用。业务层校验首先我们来看一下最常见的做法,就是在业务层进行参数校验:publicStringaddUser{if{return"对象或者对象字段不能为空";}if{return"不能输入空字符串";}if{return"账号长度必须是6-11个字符";}if{return"密码长度必须是6-16个字符";}if(!我们来改进一下,使用Spring Validator和Hibernate Validator这两套Validator来进行方便的参数校验!Validator + BindResult进行校验Validator可以非常方便的制定校验规则,并自动帮你完成校验。
  • 流量回放框架jvm-sandbox-repeater的实践

    二.jvm-sandbox-repeater简介jvm-sandbox-repeater是阿里在19年7月份的时候开源的流量录制回放工具,代码提供了录制回放的能力,以及一个简单的repeater-console的demo示例。录制回放主要原理如下:录制:如图,当repeater启动对service A的录制后,有请求到service A,sandbox感知到请求后通知repeater。回放结束,repeater会将回放信息和结果序列化后通知repeater-console进行处理和保存。5)repeat接口支持diff,diff结果也存入es。启动repeater开始录制,约占用80M的内存。五.坑和注意点由于jvm-sandbox-repeater刚开源不久,使用时一些坑或者注意点需要了解下。
  • 俺咋能看懂公司前端项目?

    在校学了三年的后端开发,没想到刚步入公司干起了前端工作,华丽的转变让我有点猝不及防,谁让我辣么优秀!很有幸进入公司就参与了项目的开发,项目的前端是采用的Vue和Element框架,我刚拿到公司封装之后的Vue的脚手架翻了翻,瞬间感觉对不起老大,我不配当你小弟,请原谅我猜不透你的心思。如果有一种将接口信息植入到前端项目里,调用的时候它还能提示你调哪个方法,参数还能一目了然的方式,那就美滋滋了。关于作者:卜壮,普元前端开发工程师,负责Mobile 8.0项目管理平台前端部分。熟悉ReactNative,目前正在学习Vue,大前端技术探求者。
  • 编程是一种思想,而不是敲代码

    编程是一个先思考再编码的过程,思考是优于编码技能的,在思考过程中我们会考虑代码的可重用性、可靠性、更容易被他人理解,这时就会使用到设计模式让代码编写工程化,这篇文章整理了设计模式的六大原则。继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些契约,但是如果子类对这些方法任意修改,就会对整个继承体系造成破坏,而里氏替换原则就是表达了这一层含义。
  • 拥抱 TS:细数选择 TS 的 N 种理由

    正巧被路过的老板听见,第二天微软决定以该程序员为首,成立一个紧急小组开发一门新语言TypeScript,需求是提升大型 JS 项目的可靠性和可维护性。TS 从 2010 年开始研发后一直作为微软的内部项目使用,直到 2012 年,发布了第一个公开版本后,受到前端程序员的激烈推崇点赞,纷纷学习使用。我们可以将 TypeScript 看作是 JavaScript 之上的一个外壳,拥有类型的 JavaScript ;TS = Type + Javascript。TS 的核心原则之一是对值所具有的结构进行类型检查。在 TS 里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。
  • Java Lambda表达式的使用

    下面这个例子里的λ表达式没有参数,也没有返回值:() -> { System.out.println("Hello Lambda!"); }如果只有一个参数且可以被Java推断出类型,那么参数列表的括号也可以省略:c-> { returnc.size(); }2. λ表达式的类型(它是Object吗?λ表达式的类型,叫做“目标类型(target. 但将λ表达式引入Java的动机并不仅仅为此。
  • API 越来越多,没个接口管理工具哪行?试试这款吧!

    我的微信号:toutiaoio007,欢迎加我好友,拉你入群~今天头条菌要推荐的这款接口管理工具:高效、易用、功能强大!YApi 是高效、易用、功能强大的 API 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。添加头条菌微信号「toutiaoio007」可申请额外优惠哦~头条菌加入的社交圈子,来吧!
  • BUF大事件丨雷电3接口曝无法修复安全漏洞;世界最大在线沙盒遭黑客攻击

    本周BUF大事件还是为大家带来了新鲜有趣的安全新闻,雷电3接口曝出无法修复的安全漏洞,数百万设备受影响;GitHub 500GB数据窃贼再出手,出售10家企业7320万条用户记录;工信部发布通报称,当当等16款APP侵害用户权益;世界最大在线沙盒《Roblox》遭黑客攻击。世界最大在线沙盒《Roblox》遭黑客攻击作为当前世界最大的大型多人在线游戏平台,《Roblox》一直受到玩家们的喜爱。目前,《Roblox》平台已将此事交给专门的黑客悬赏平台调查,希望能够得到一个好的结果。
  • 快看看你的电脑有没有这个漏洞!黑客5分钟即可破解,无法软件修复!

    并且在向Intel提交后得到了确认。并且Intel表示,该漏洞无法通过软件更新修复,只能靠以后重新设计该接口的硬件才能解决。然后他只用了2分钟就重写了雷电控制器的固件,绕过密码禁用了安全性设置。经过一番操作后,就能通过插入雷电设备改写操作系统,即使是全盘加密的电脑也不在话下。整个过程大约只需要5分钟。但是,只有将雷电接口的安全性设置为允许受信任设备的默认设置时,这种无需物理侵入的Thunderspy攻击才有效。
  • c#: 协变和逆变深度解析

    环境:window 10.netcore 3.1vs2019 16.5.1一、为什么要有协变?但是,从我们程序员角度来说,这样肯定不方便,那么有没有解决办法呢?逆变和协变是相对的,具体来说:逆变的目的是:让List<Apple> test = new List<Fruit>();这类代码成立!好吧,这就是逆变:一个可以让你用ITest<Apple>去指向Test<Fruit>()的存在!这里还是再说一下逆变的规则:必须使用接口进行指向,不能使用类:这一点和协变是一样的。
公告

《从零开始开发BBS》课程上线啦,快来跟着我一步步搭建属于你的BBS吧。

课程地址:https://www.shiyanlou.com/courses/1436
9折优惠邀请码: ZHwfIjb1

该课程会带领大家一步步的了解并熟悉Go语言开发,如果你是一个Go语言初学者,或者正准备学习Go语言,那么这个课程非常适合你。如果你熟练掌握了本课程中的知识点,相信你就已经入门Go语言开发,并能胜任日常的开发工作了。