程序员
欧阳丰
欢迎加入我的Java架构预备营:749151405
展开
-
Redis中Srting类型的底层实现-SDS
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点1、什么是SDS?sds是c中的一个数据结构,如下:struct sdshdr{ //buf数组中已使用的字节数,即字符串长度 int len; //buf数组未使用的字节数 int free; //存储字节的数组原创 2020-09-02 21:04:04 · 650 阅读 · 0 评论 -
什么是分布式锁?为什么要用分布式锁?
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁。普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题。如何控制呢?就是设置一个各个线程原创 2020-09-01 20:36:29 · 3073 阅读 · 2 评论 -
SpringBoot 整合 MyCat 实现读写分离
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点MyCat一个彻底开源的,面向企业应用开发的大数据库集群。基于阿里开源的Cobar产品而研发。能满足数据库数据大量存储;提高了查询性能。文章介绍如何实现MyCat连接MySQL实现主从分离,并集成SpringBoot实现读写分离。MySQL配置主从关系说明原创 2020-08-31 16:14:25 · 410 阅读 · 0 评论 -
JSON 字符串是如何被解析的?JsonParser 了解一下
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点版本约定Jackson 版本:2.11.0Spring Framework 版本:5.2.6.RELEASESpring Boot 版本:2.3.0.RELEASE小贴士:截止到本文,本系列前面所有示例都只仅仅导入jackson-core而已,后续原创 2020-08-28 11:19:07 · 345 阅读 · 0 评论 -
神奇的 SQL,为什么 GROUP BY 之后不能直接引用原表中的列,原来是这样!
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点GROUP BY 后 SELECT 列的限制标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、AVG 等)、常量。我们来看个例子我们有 学生班级表(tb原创 2020-08-24 10:59:52 · 197 阅读 · 0 评论 -
四面支付宝:容器+线程池+HashMap+红黑树+算法+分布式架构
蚂蚁花呗一面(一个小时):Java容器有哪些?哪些是同步容器,哪些是并发容器?线程池的工作原理,几个重要参数?给了具体几个参数,分析线程池会怎么做?ArrayList和LinkedList的插入和访问的时间复杂度?HashMap push方法的执行过程?java反射原理, 注解原理?说说一致性 Hash 原理HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头?1.8还采用了红黑树,讲讲红黑..原创 2020-08-21 15:53:26 · 585 阅读 · 1 评论 -
谈谈设计模式:建造者模式在jdk中的体现,它和工厂模式区别?
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点背景建造模式(Builder模式)假如有一个需求:盖房子,盖房子过程是一致的:打桩、砌墙、封顶。但是房子是各式各样的,最后盖出来的房子可能是高楼或别墅。根据直接的思路,不用设计模式思想,我们也许会:写一个 CommonHouse 抽象类,然后里面规定了原创 2020-08-21 14:48:28 · 161 阅读 · 0 评论 -
老板:要是还继续再用Log4j,你就收拾东西回家吧!
之前一段时间,为我们发现的一个SaaS应用程序会间歇性地卡顿、变慢,因为很长时间都没有定位到原因,所以解决的办法就只能是重启。这个现象和之前我们遇到的程序变得卡顿不太一样,因为我们发现**这个应用程序不仅在高流量期间时会变慢,有时在低流量时期也会变慢。**所以这令大家都很奇怪。这类应用程序的变慢,重新启动之后就可以维持一段时间,但是过段时间又有可能会再次出现。故障排除当我们准备排查这个问题的时候,我们在应用程序速度很慢的时候,尝试着捕获了这个应用程序的线程Dump。有很多种方式来捕...原创 2020-08-19 16:00:46 · 327 阅读 · 0 评论 -
666!Alibaba内部传出的面试神技,秋招offer尽收囊中
2019 已经够难的了,2020 开局就遇上了新型冠状病毒,就更难了。相信不少人都有这样的感叹。因为疫情的影响,各家公司的春招事项一再延后,2020年互联网市场全都受到了疫情影响,存在人才发展跟不上市场的需求的现状,相对应的给优秀Java人才开出的薪资待遇随之水涨船高。最近很多小伙伴找我要一些金九银十的面试资料,今天,它来了!下面的资料是以图片展示,篇幅原因只能出示一小部分,需要完整版的超清笔记的,可以帮忙点个赞,快速入手通道:(点这里)下载!,就可以拿到完整版的了!资料也按目录进行编排,每一章原创 2020-08-11 17:33:34 · 137 阅读 · 0 评论 -
强势来袭!Spring进阶思路精髓,打破你对Java框架的一切认知!
Spring简介Spring它是一个框架,轻量级javaEE这个概念,也是由Spring框架衍生出来的Spring 甚至没有太多新东西,它只是提取了javaEE应用中的常用代码,将其抽象成为了框架Spring 创始人 :Rod Johnson,他的专业不是计算机,而是音乐学,但他也是一个计算机博士Spring的框架里充满了各种设计模式,spring框架的用法,源码设计更是一套丰富的java大餐Spring的组成如上是Spring的七个模块,每个模块都是独立存在,模块与模块可以相互组合使用原创 2020-08-03 15:54:23 · 366 阅读 · 0 评论 -
半吊子架构师,一来就想用Kafka取代RabbitMQ?
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差原创 2020-07-23 14:32:25 · 1403 阅读 · 0 评论 -
二面腾讯挂在了堆排序!时隔半年再次挑战“南山必胜客”!
今天,再战了一次腾讯。这次的面试总的来说面的挺开心的,面试官人很好,知道了自己的许多不足。话不多说,先说说面试前的准备吧。前期准备面试前一天,我首先将自己之前写过的博客从线程池开始往后全部都回顾了一遍,重点看了类加载部分。最近真的压力巨大,很多事情堆在一起,公司,学习,面试等等,让我并没有想花太多心思准备(心累~)。面试当天,急急忙忙把堆排序看了一遍(毕竟上一次面试就挂在堆排序了),然后吃了又看了看二叉树,就开始面试了。我重点的内容准备如下:计算机网络:HTTP协议,HTTPS协议,TCP建立原创 2020-07-20 14:15:03 · 280 阅读 · 1 评论 -
SpringCloud微服务详解: Redis 高可用集群
前言一般的小项目,比如几百人左右访问的项目,访问量几万的项目,如果想用缓存,单机实例完全够用。小黄图就是用的阿里云256MB配置的Redis缓存,日几千的访问量是妥妥够用的了。Redis号称可以支撑10w+qps,当然这也给机器配置有一定的关系,如果单实例满足不了需求,想追求更高的性能和稳定性,可以选择主从、哨兵已经更好的解决方案Redis-Cluster 集群。架构集群部署如题,我们这里直接使用 Redis-Cluster 高可用集群。Redis-Cluster集群采用无中心结构,它的特点如下.原创 2020-07-13 15:55:38 · 597 阅读 · 0 评论 -
记一次小事故解决方案:Spring Redis开启事务支持错误用法,导致服务不可用
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点1.事故背景在APP访问服务器接口时需要从redis中获取token进行校验,服务器上线后发现一开始可以正常访问,但只要短时间内请求量增长服务则无法响应2.排查流程(1)使用top指令查看CPU资源占用还远远达不到瓶颈,排查因为CPU资源不足导致服务不可用原创 2020-06-29 15:25:21 · 311 阅读 · 0 评论 -
面试高频:Mysql和Redis数据同步该怎么做?
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点为什么对缓存只删除不更新不更新缓存是防止并发更新导致的数据不一致。所以为了降低数据不一致的概率,不应该更新缓存,而是直接将其删除,然后等待下次发生cache miss时再把数据库中的数据同步到缓存。先更新数据库还是先删除缓存?有两个选择:1. 先删除原创 2020-06-26 20:59:51 · 462 阅读 · 0 评论 -
缓存领域大师之作:Redis精品设计出炉,果断收藏!
很多人受限于公司规模,没有用过Redis!但是面试大中型互联网公司,Redis是个绕不过去的坎。以下这些Redis相关的面试题,你看是不是很眼熟!Redis支持的数据类型?什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?Redis 有哪些架构模式?讲讲各自的特点Redis主从是怎么选取的redis插槽的分配?Redis主节点宕机了怎么办,还有没有同步的数据怎么办?Redis集群的话数据分片怎么分,然后就是如果并发很高,几十万并发,可以做哪些优化?怎么保证redis和db原创 2020-06-24 16:02:03 · 213 阅读 · 0 评论 -
动手造轮子:实现一个简单的 AOP 框架
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点最近实现了一个 AOP 框架 – FluentAspects,API 基本稳定了,写篇文章分享一下这个 AOP 框架的设计。整体设计概览IProxyTypeFactory用来生成代理类型,默认提供了基于 Emit 动态代理的实现,基于接口设计,可以扩展原创 2020-06-22 14:45:42 · 215 阅读 · 0 评论 -
秒杀系统Java设计攻略,一看就明白!
推荐阅读:不服不行!Github即将爆火的《高并发秒杀顶级教程》,先睹为快我总结了72份面试题,累计3170页,斩获了30+互联网公司offer(含BATJM)2020首战告捷,这份Java面试神技Plus版,让我成功拿到了阿里、京东、字节跳动等大厂offer前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀,那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:一:秒原创 2020-06-18 15:54:25 · 385 阅读 · 0 评论 -
ES能为你解决什么问题,又会带来什么问题?
推荐阅读:这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点业务需求痛点业务增长,查询条件越来越多,索引越来越多业务发展初期,数据量不多。查询,写入都很快。随着业务的发展,数据量增大,出现慢查询,开始往表里不断的加索引,保证数据查询效率。但是当数据量继续增大,业务查询越来越复杂。程序员天天想着这个表怎么加索引。索原创 2020-06-14 20:48:32 · 819 阅读 · 0 评论 -
由一次安全扫描引发的思考:如何保障 API 接口的安全性?
推荐阅读:GitHub超高Star!超过40K+的Java面试文档,吃透60%定级阿里P7最全面试题新鲜出炉:70+算法题、近30种大厂面试笔试常考知识点太狠了!谷歌大牛手写的Spring核心面试笔记:IOC+AOP+MVC+事务引言前段时间,公司对运行的系统进行了一次安全扫描,使用的工具是 IBM 公司提供的 AppScan 。这个正所谓不扫不要紧,一扫吓一跳,结果就扫出来这么个问题。我们的一个年老失修的内部系统,在登录的时候,被扫描出来安全隐患,具体学名是啥记不清了,大致原创 2020-06-04 17:19:43 · 297 阅读 · 0 评论 -
从MySQL优化的角度来看:数据库回表与索引
回表的概念先得出结论,根据下面的实验。如果我要获得[‘liu’,‘25’]这条记录。需要什么步骤。1.先通过[‘liu’]记录对应到普通索引index(name),获取到主键id:4.2.再通过clustered index,定位到行记录。也就是上面说的这条[‘liu’,‘25’]记录数据。因此,上述就是说的回表查询,先定位主键值,再定位行记录。多扫了一遍索引树。当然,也就多耗费了CPU,IO,内存等。1.stu_info表案例create table stu_info ( id int原创 2020-05-27 17:27:50 · 247 阅读 · 0 评论 -
使用Hystrix的插件机制,解决在使用线程隔离时,threadlocal的传递问题
背景在我们的项目中,比较广泛地使用了ThreadLocal,比如,在filter层,根据token,取到用户信息后,就会放到一个ThreadLocal变量中;在后续的业务处理中,就会直接从当前线程,来获取该ThreadLocal变量,然后获取到其中的用户信息,非常的方便。但是,hystrix 这个组件一旦引入的话,如果使用线程隔离的方式,我们的业务逻辑就被分成了两部分,如下:public class SimpleHystrixCommand extends HystrixCommand<Stri原创 2020-05-13 20:42:12 · 245 阅读 · 0 评论 -
面向对象的设计原则你不要了解一下么?
之前我们看了单一职责原则和开闭原则,今天我们再来看里式替换原则和依赖倒置原则,千万别小看这些设计原则,他在设计模式中会有很多体现,所以理解好设计原则之后,那么设计模式,也会让你更加的好理解一点。前言在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设...原创 2019-07-13 10:32:17 · 107 阅读 · 0 评论 -
Java AtomicInteger的用法
1java.util.concurrent.atomic 的包里有AtomicBoolean, AtomicInteger,AtomicLong,AtomicLongArray,AtomicReference等原子类的类,主要用于在高并发环境下的高效程序处理,来帮助我们简化同步处理.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键...原创 2019-07-13 14:42:00 · 237 阅读 · 0 评论 -
怎么为cache.xml中的密码加密呢
Apache Geode 提供了一个gfsh工具来生成加密密码.cache.xml文件接受明文密码或者加密密码.在gfsh中用encrypt password 可以生成一个加密密码.下面是一个简单的例子.(my_password是真实的数据源密码).在启动gfsh后,输入如下:gfsh>encrypt password --password=my_passwordAB80B8E1EE...原创 2019-07-13 15:08:28 · 247 阅读 · 0 评论 -
代码要写完整多累来了解一下简写吧
初级篇1、三目运算符下面是一个很好的例子,将一个完整的 if 语句,简写为一行代码。const x = 20;let answer;if (x > 10) { answer = 'greater than 10';} else { answer = 'less than 10';}简写为:const answer = x > 10 ? 'greate...原创 2019-07-13 16:13:42 · 339 阅读 · 0 评论 -
比较简单的spring及AOP实例
一、简单的spring实现(annotation方式)bean类package hello;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class HelloWor...原创 2019-07-13 17:08:34 · 80 阅读 · 0 评论 -
人生有多少个九年,看看腾讯设计师的九年成长
一、人生需要进步今年是2019年,腾讯21周年。我30周岁,刚好在腾讯工作满9年。我从来没有想过自己会在同一家公司工作9年。因为4年足以读完大学,6年能让小孩读完小学,9年漫长得不可思议。2010年,我刚大学毕业,加入腾讯。那一天,学生思维的我,不免以学生的尺度定计划:三年的时间,我应该足够从这一所“社会大学”毕业吧。因此,我追赶时间,以这个截止日为目标,第一年学习高效地完成工作,第二年学...原创 2019-07-10 11:52:19 · 303 阅读 · 0 评论 -
一些Java多线程面试题及回答
Java 线程面试问题在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。用于直接面向...原创 2019-07-15 10:37:50 · 116 阅读 · 0 评论 -
HR面聊得挺好,怎么就没有然后了呢?
不知道各位小伙伴有没有这样的经历:一路过关斩将,走到HR小姐姐这一关。一顿人生理想聊的挺好,然后…就没有然后啦…我连明天上班坐几号线地铁都研究好了,你告诉我没有然后啦?!那么,这其中的问题到底出在哪呢?正常来说HR面都是最后一面了,所以作为通关前的一次考验,其重要性不言而喻。那这一关为了什么呢?另外相信大家多多少少都有过HR面的经历,作为其中重头戏:聊薪资。恐怕各位小伙伴都会很感兴趣吧。钱...原创 2019-07-15 13:16:16 · 740 阅读 · 0 评论 -
java语言的发展简史
java语言的诞生具有一定的戏剧性,它并不是经过精心策划、制作,最后产生的划时代产品,从某个角度耐看,java语言的诞生完全是一种误会。1900年年末,Sun公司预料嵌入式系统将在未来家用电器领域大显身手。于是Sun公司成立了一个由 James Gosing 领导的“Green 计划”,准备为下一代智能家电(如电视机、微波炉、电话)编写一个通用控制系统。该团队最初考虑使用 C++ 语言,但是很...原创 2019-07-15 15:28:40 · 518 阅读 · 0 评论 -
拼多多、饿了么、蚂蚁金服Java面试题大集
自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下:下面为拼多多、饿了么、蚂蚁金服、哈啰出行等公司给我留下较深印象的一些java面试题private修饰的方法可以通过反射访问,那么private的意义是什么Java类初始化顺序对方法区和永久区的理解以及它们之间的关系一个java文件...转载 2019-07-15 15:34:45 · 326 阅读 · 0 评论 -
java微服务Nacos配置管理
介绍Nacos配置管理Nacos 提供了动态配置服务,能让我们可以实时进行服务应用的配置变更,让配置管理变得更加高效和快捷。它基于 key/value 方式存储应用配置和其他元数据信息,为分布式系统中的外部化配置提供服务器端和客户端支持。首先了解下 Nacos 在配置管理模块上的几个重要概念,能帮助我们更好的理解和正确的使用 Nacos 进行配置管理。命名空间(Namespace)用于进行...原创 2019-07-11 11:13:37 · 14940 阅读 · 3 评论 -
java并发编程分析常用的4种Java先程锁
在Java并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,这就是Java锁机制(线程同步)的来源。Java提供了多种多线程锁机制的实现方式,常见的有:synchronizedReentrantLockSemaphoreAtomicInteger等每种机制都有优缺点与各自的适用场景,必须熟练掌握他们的特点才能在Java多线程应用开发时得...原创 2019-07-11 13:15:40 · 171 阅读 · 0 评论 -
Java程序员必备收藏系列:解析 MySQL 索引优化,轻松掌握!
本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开(本文图片可点开放大)。一、MySQL索引基础首先,我们将从索引基础开始介绍一下什么是索引,分析索引的几种类型,并探讨一下如何创建索引以及索引设计的基本原则。此部分用于测试索引创建的user表的结构如下:1.什么是索引?“索引(在MySQL中也叫“键key...原创 2019-07-11 14:42:45 · 113 阅读 · 0 评论 -
教你发布vue+.netCore项目到服务器
最近一直在做项目,发布部署的事情都是同事或者老大做的,无奈什么事都要自己尝试经历后才能记住,所以发布的事情轮到我了,由于是第一次发布部署项目到一个新的服务器环境,难免会遇到各种各样的问题,总结下来,希望可以帮到需要的人。项目框架使用的是vue+.netCore2.2所以发布的时候需要前后端分开发布,遇到的问题是挺多的,不过对自己来说也算是一种经历吧。一..netCore 项目发布1...原创 2019-07-18 15:43:03 · 2998 阅读 · 0 评论 -
JAVA面试题 手写ArrayList的实现,在笔试中过关斩将?
面试官Q1:可以手写一个ArrayList的简单实现吗?我们都知道ArrayList是基于数组实现,如果让你实现JDK源码ArrayList中add()、remove()、get()方法,你知道如何实现吗?这一节,我们不看源码,我们想想如何简单的实现ArrayList几个基本方法?确定数据结构我们知道,ArrayList中无论什么数据都能放,是不是意味着它是一个Object类型,既然是数组,...原创 2019-07-18 16:39:31 · 182 阅读 · 0 评论 -
Java开发IDEA插件推荐
IDEA插件推荐在我的manjarog更新软件的时候,我发现我IDEA所有插件全部消失了。这篇博客主要是用来记录我常用的一些插件。Alibaba Java Coding Guidelines相信看过《阿里巴巴Java开发规范》的同学们,都感觉到一种莫名的爽意了吧,从此告别随意命名。为了让开发者更加方便、快速将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(ID...原创 2019-07-18 16:54:05 · 231 阅读 · 0 评论 -
写业务代码最容易掉的8种坑
1、客户端的使用我们在使用Redis、ElasticSearch、RabbitMQ、Mongodb等中间件或存储的时候肯定都会使用客户端包来和这些系统通讯,我们也会使用Http的一些客户端来发Http请求。在使用这些客户端包的时候,非常容易犯错的一个地方就是Client的使用方式,比如有一个叫做RedisClient的类,是Redis操作的入口。你应该是每次使用new RedisClient.g...原创 2019-07-12 10:59:09 · 328 阅读 · 0 评论 -
WebRTC TURN协议初识及turnserver实践
WebRTC协议栈图一 WebRTC stackTURN的全称为Traversal Using Relays around NAT,是STUN/RFC5389的一个拓展,主要添加了Relay功能。如图一所示,TURN协议是建立在UDP协议之上的一个应用层协议。如果一台主机处于NAT后面,那么在一定条件下(NAT穿透失败)两台主机无法之间进行通讯。在这种条件下,那么使用中继服务提供通讯是有必要的...原创 2019-07-16 16:27:42 · 645 阅读 · 0 评论