自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乐天派

长风破浪会有时,直挂云帆济沧海

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

原创 Ffmpeg分布式视频转码问题记录

本篇聊一聊我们实施分布式转码过程中所碰到的比较难解的问题以及解决方案,希望能够给大家带来一些帮助或者少踩一些坑。

2023-04-22 18:40:07 815

原创 一招教你定位Java CPU占用过高

线上排查问题必备

2023-03-02 23:33:31 180

原创 转码服务serverless探索

转码服务serverless探索之路

2023-03-01 21:53:58 523

原创 任务调度系统-业务线资源隔离

任务调度系统到底在调度什么?

2022-12-11 17:09:25 505

原创 QuantumTunnel:v1.0.0 正式版本发布

经过一段时间运行,代码已经稳定是时候发布正式版本了!v1.0.0 正式版本发布对核心能力的简要说明:支持协议路由和端口路由:QuantumTunnel:端口路由 vs 协议路由基于Netty实现、使用Protobuf编解码,拥有优秀的转发性能支持客户端指定访问白名单,避免被恶意网络攻击使用极其简单,用两行命令即可拉起服务端与客户端免费使用内网穿透服务如果没有公网服务器去启动内网穿透Server服务,不用担心,我给大家搭建了一个免费使用的内网穿透服务供大家学习交流~proxy_serv

2021-11-15 23:42:48 754 1

原创 QuantumTunnel:v0.2.2-beta发布

这里写自定义目录标题v0.2-beta版本运行一段时间后发现有

2021-11-08 09:30:00 214

原创 QuantumTunnel:协议路由 vs 端口路由

内网穿透和核心逻辑是根据流量的路由信息准确地将公网流量路由到指定的机器端口上,从而完成一次流量的内网穿透。这里有一个核心问题,路由信息从哪里获取?常见的有将路由信息跟内网穿透服务器端口进行绑定的,称之为端口路由;另外的还有将路由信息放在应用层协议中,由内网穿透服务解析应用层协议,拿到路由信息,这种方式称之为协议路由。这两种路由方式都有哪些特点呢?下面对它们进行展开讨论。端口路由端口路由,顾名思义,就是将路由信息与端口进行绑定。将这个端口收到的流量统统转发到指定内网的指定服务器的指定端口。这种路由

2021-10-23 17:14:02 275

原创 QuantumTunnel:v0.1-beta发布

经过一段时间的代码优化,QuantumTunnel发布了v0.1-beta版本,满足大部分内网穿透的使用场景。快速开始方式一:直接下载Jar包使用下载Jar包的方式,只需要两行启动命令即可搭建好内网穿透服务。下载Jar包访问v0.1-beta版本页面,下载quantum-tunnel-server.jar和quantum-tunnel-client.jar;执行启动命令启动内网穿透服务端: java -jar quantum-tunnel-server.jar -proxy_server_

2021-10-19 08:46:36 127

原创 QuantumTunnel:Netty实现

接上一篇文章内网穿透服务设计挖的坑,本篇来聊一下内网穿透的实现。为了方便理解,我们先统一定义使用到的名词:UserClient:用户客户端,真实的请求发起方;UserServer:内网穿透-用户服务端,接收用户客户端发起的请求;并将请求转发给代理服务端;ProxyServer:内网穿透-代理服务端,与代理客户端保持一个连接通道用于传输数据;ProxyClient:内网穿透-代理客户端,从通道中接收来自代理服务端的请求数据,并且发起真正的请求。拿到请求结果后再通过该通道写回到代理服务端;Targ

2021-10-17 15:01:30 351

原创 QuantumTunnel:内网穿透服务设计

背景什么是内网穿透摘自百度百科内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。通俗易懂一点就是一个与没有公网IP的机器进行数据交换。这个机器有可能在某个机房,也有可能在家。典型的应用场景公网访问内网中的某个系统服务:出于安全等因素考虑,机房一般是不能公网访问的;要想访问机房中的某个服务,那么就需要用到内网穿透;用于接收公网回调:在开发微信业务时,一般会涉及到服务回调,而开发者的电脑无法被

2021-10-06 16:26:03 303 1

原创 实习、校招面试的一点经验

我把面试分成三个过程(面前、面中、面后),每个过程侧重点不一样,我分开来写;面试前做好准备首先面试前的准备工作是最重要的,这里的准备工作不仅要求把简历写好,还要做到基础扎实;而基础扎实才是最重要的意向岗位的技术基础要扎实相关领域技术知识要有所涉猎简历重点内容要突出面试中放轻松准备好自我介绍跟面试官做“朋友”有所答有所不答面试后谈offer明确自己求职需求赚钱?技术成长?大公司的背书?尽可能多拿几家offer...

2021-08-15 16:33:43 653

原创 Dubbo 2.6.2 获取不到${dubbo.registry.address}

背景公司原来的配置中心是一个闭源的系统,该系统有几个痛点问题:无权限控制、敏感配置不能加密、应用和配置的依赖关系混乱。在这个背景下,运维同学基于k8s的configMap写了一个配置中心,并推动应用配置从闭源的配置中心迁移到自有的configMap。获取dubbo.registry.address配置项因为我负责这次迁移,所以迁移过程中开发同学碰到的问题都会来问我,其中有一个比较有意思的问题是dubbo 获取不到dubbo.registry.address配置项。比如明明在application.p

2021-06-19 19:03:51 3163

原创 AbstractQueuedSynchronizer的奇妙之旅

作为`java.util.concurrent`最核心的工具类,是该包各种多线程工具、容器实现线程安全的基石。

2021-03-05 08:44:02 145

原创 计算机网络(二):传输层

上一篇文章简单介绍了现在的计算机网络模型和每层的作用,对计算机网络有了一个初步的认识。在计算机网络模型的各个层次中,我们最关心的莫过于传输层和网络层了;尤其是传输层,作为应用层的下层,开发同学在工作中也接触的比较多。比如拥有高性能网络通信能力的netty、dubbo等中间件,都涉及了传输层尤其是TCP协议的很多细节和上层的协议优化。作为与开发同学关系最紧密的传输层,掌握其相关的知识是非常必要的。传输层简介传输层位于应用层的下面一层,它提供了主机间的进程(应用)的通信能力;它屏蔽了底层网络路由、数据传

2021-02-27 17:51:16 356

原创 计算机网络(一):网络模型

最近在看谢希仁老师编写的教材《计算机网络》,真心觉得这是一本好书;基本上把计算机各个方面都讲到了:计算机网络发展的背景、不同网络层次的作用、TCP/IP协议等等,很适合作为计算机网络入门的书籍;本文主要想聊一下TCP/IP协议中的网络体系结构。最近通过《计算机网络》这本书又复习了一下计算机网络,尤其是介绍TCP/IP网络体系相关知识点的时候,自己有种醍醐灌顶的感觉,拍了拍自己大腿,感觉好像是这么回事;话不多说,我们来看看TCP/IP网络体系结构是怎么划分的吧。不同于OSI网络体系结构,在TCP/IP

2021-02-25 23:13:55 343

原创 系统日志实践

日志就像救火队,没有问题的时候感知不到它的存在;一旦出了问题没有它是不行的日志困境:为什么需要打印日志其实我们需要问一下自己这个问题:**为什么需要打印日志?**为了系统出问题时快速定位问题?为了监控系统运行情况?我们的目的不一样打出来的日志也是不一样的;如果搞不清楚打印日志的目的,为了打日志而打日志,那么很可能在需要日志的时候发现打的日志根本不能用;下面是碰到的一些典型的日志问题:打印过多的无用日志:当出现问题时无法找到想要的日志、无法定位问题;堆栈信息json化:使得日志阅读成本直线.

2020-12-10 23:42:47 243 1

原创 zipkin(五):zipkin-spring-boot-starter兼容dubbo2.7.6

通过引入zipkin-spring-boot-starter(下文简称zipkin-starter)依赖,小伙伴们可以分分钟让应用集成链路跟踪能力。随着集成链路跟踪的应用数量持续增加,作为中间件依赖的zipkin-starter开始面临的各种框架的兼容性问题。今天就聊一下dubbo高版本(2.7.5&2.7.6,两个版本兼容性问题相似,下文只对2.7.6进行分析)的兼容性问题:因zipkin-starter默认生成的Config覆盖dubbo自身Config,导致配置文件中的dubboConf.

2020-08-30 15:45:05 637

原创 zipkin:自定义链路传播(四)

背景zipkin链路信息传播方式ons、dubbo通用传播工具

2020-07-19 18:53:52 1556

原创 zipkin:实现zipkin-spring-boot-starter(三)

本篇文章主要讨论如何基于Spring容器和springboot starter的能力简化开发者集成链路跟踪的流程

2020-07-18 20:18:09 683

原创 不可忽视的Dubbo线程池

问题描述线上突然出现Dubbo超时调用,时间刚好为Consumer端设置的超时时间。有好几个不同的接口都报超时了第1次调用超时,第2次(或第3次)重试调用非常快(正常水平)Dubbo调用超时的情况集中出现了3次,每次都是过一会自动恢复排查排查日志看到调用超时,首先就拿着traceId去服务提供方查日志。奇怪的是,在服务提供方的业务日志里面,只有正常的调用日志(耗时正常),没有超时调用的日志。从正常的调用日志里面看,一切都是正常的,看不出所以然。给人的感觉就是超时那次请求的调用没有达到

2020-05-31 18:44:37 464

原创 通用状态码设计

背景在企业中,一个对外发布的产品一般会涉及到好几个部门、不同人员开发的系统。每个部门甚至每个人开发的系统的返回码体系可能都是不一样的,比如:A系统把系统返回码都放在SystemAResultCode的枚举类中B系统则把系统返回码都放在SystemBResultCode的枚举类中等等系统间不同的返回码会造成:无法设计通用响应数据结构。在rpc调用场景,这一点很重要;无法互操作。...

2020-04-23 20:31:24 816

原创 zipkin:为阿里云Ons/RocketMQ加上链路跟踪(二)

上一篇文章简单的介绍了如何把zipkin server、brave插件跑起来,这篇文章介绍一下如何把阿里云Ons/RocketMQ添加到链路跟踪里面来背景RocketMQ为阿里巴巴开源的一款消息中间件,阿里云的Ons服务可以看做成商业闭源版RocketMQ。为了叙述方便,下面统称RocketMQ。zipkin官方出品的brave已经包含了很多中间件插件了,比如dubbo、okhttp3、...

2020-03-30 01:03:32 3172 15

原创 zipkin:打造自己的链路跟踪系统(一)

在微服务盛行的时代,一个公司的应用数量动辄成百上千个。应用之间的依赖关系错综复杂,定位问题、排查问题是一件令人头疼的事情。为了解决这个问题,Google的Dapper论文应运而生。Twitter基于该论文打造了自己的链路跟踪系统(也就是本文章的主角):zipkin并将其开源简介Zipkin is a distributed tracing system. It helps gather...

2020-03-28 16:40:58 1554

原创 给MySQL数据库表瘦身

背景:MySQL数据库有一张几千万的数据表要做瘦身,需要删除指定日期前的数据。其中自增主键id和创建时间create_time都有索引解法:解法1:delete from xxx where id < xxx 或者 create_time < xxx。这种方式简单粗暴,进行删除操作时会锁表,从而影响其他的正常SQL,大数据量时不可行;解法2:从解法1得到启示,既然SQL一次性...

2020-02-11 20:54:51 835

原创 对2b、2c账号体系的思考

2b:to business,对商业(机构);2c:to consumer,对消费者(个人)2b的产品:主要针对机构、企业的产品;2c的产品:主要针对消费者、个人的产品假设你想推出一款针对记者,提高他们工作效率的产品,那么在设计账号体系时需要好好思考这个问题:这款产品它是2b还是2c的不要小看这个问题,这个问题的答案会决定这个产品的账号体系的结构,以及账号体系后续的可扩展性。有这么严...

2019-10-13 22:50:00 1107

原创 OAuth2的四种模式

现在的互联网流量入口基本上被几大巨头(BAT、TMD)所把持,对于新上线的应用获取用户比较快捷的方式就是通过OAuth2协议接入它们的账号系统。降低用户注册&登录成本,是大部分新上线应用的选择。比如前段时间吵得沸沸扬扬的抖音滥用腾讯系(微信、QQ)用户信息(头像、昵称)事件,就是因为抖音上线时通过OAuth2接入了腾讯系的账号体系,后面未经腾讯同意就将用户信息给多闪使用。本文将介绍OAu...

2019-10-13 15:30:17 3581 1

原创 SpringBoot整合Redis缓存

1. 引入缓存依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.1.5.RELEASE<...

2019-09-29 10:14:20 896

原创 从单例模式到HappensBefore

目录双重检测锁的演变过程利用HappensBefore分析并发问题无volatile的双重检测锁双重检测锁的演变过程synchronized修饰方法的单例模式双重检测锁的最初形态是通过在方法声明的部分加上synchronized进行同步,保证同一时间调用方法的线程只有一个,从而保证new Singlton()的线程安全:public class Singleton { ...

2019-04-24 09:11:12 191

原创 《非暴力沟通》

昨天花了三个小时左右把马歇尔·卢森堡著的《非暴力沟通》一书读完了。不得不说这本书让我意识到如何有愉快的与人沟通并最终解决问题是多么重要且讲究技巧的一件事!在现实社会中,当自己的提议或者请求被别人拒绝以后,我们往往会感到恼怒并与对方拉开距离且倾向于拒绝对方的提议或者请求;当然,倘若对方也是这种心理,那么整个事情将会朝着恶性循环的方向发展。比如这样的一件事:工作一整天的妈妈回到家,看见昨天的垃...

2019-04-06 15:59:48 1483

原创 LeetCode - 274. H指数

题目给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)”示例:输入: citations = [3,0,6...

2019-04-05 16:38:55 241

原创 LeetCode - 2. 两数相加

题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&g...

2019-04-05 09:25:41 204

原创 一行脚本快速统计Java项目代码行数

脚本find . -name *.java -exec wc -l {} \; | awk '{s+=$1}END{print s}'分析整个脚本分为三部分:查找当前目录下所有以java结尾的文件通过wc 统计单个的java文件行数通过awk命令进行求和得到总的文件行数ps:如果想统计其语言的项目,只需要把*.java后缀替换成*.go、*.js即可参考资料一行she...

2019-03-14 19:38:41 863

原创 第一个shell脚本

这是一个检测ip变化后,重启docker的脚本脚本#! /bin/bashdocker_restart='./docker_restart.sh'ipFile='./pre.ip'currentIp=$(curl ip.sb -s)echo "currentIp: "$currentIpif [ -z "$currentIp" ];then exit 0fiif [...

2019-03-12 09:36:57 145

原创 利用TP-Link TL-SG2005进行网络抓包

最近遇到需要分析某个网络设备的网络请求的需求,而这个设备可以认为是一个黑盒:无法从内部分析这个设备的网络请求,只有从外部的网络连接中想办法。于是乎,搞到了一个TL-SG2005网管交换机去解决这个问题,就是这个东西:这个交换机既可以当做标准的交换机去使用,也可以用作端口监控。而现在我就要使用它的端口监控功能,它可以让任意的端口收发的数据包都复制一份到指定端口,然后在使用WireShark这...

2019-01-14 23:39:24 14725 1

原创 FFmpeg碎片知识

命令保存m3u8视频为mp4ffmpeg -i 'http://xxx.com/a.m3u8' -vcodec copy -acodec copy -absf aac_adtstoasc output.mp4m3u8转推rtmp切割视频

2018-12-06 11:14:50 230

原创 Spring碎片知识

application.propertisehttps://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

2018-12-03 17:26:46 279

原创 RESTful api:post 与 put的区别

无论是post还是put,两者都可以创建和更新资源。创建:post不需要指定被创建资源的id,而put需要指定更新:两者都要指定被更新资源的idPOST:&gt; modify and update a resourcePOST /questions/&lt;existing_question&gt; HTTP/1.1&gt; create a resource:POST /...

2018-11-15 10:06:32 2564

原创 2018.06.26

今天是值得记录的日子,想写点什么今天参加了学校和学院的毕业典礼,拿到了踏入社会的通行证-毕业证。这意味着即将离开大学这个温和的环境,踏入所有事情都要自己扛的社会。心中有不舍、有难过、有胆怯、但更多的是激动!今天还有一件事,就是跟大一的学弟学妹们分享了自己的大学成长经历。 在准备分享之前我总结了大学四年的各个阶段成长关键字:大一是学习大二是实验室大三是求职大四是实习...

2018-06-27 10:35:55 351

原创 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

问题前两天一个学弟在群里面问一个问题:请问一下用阿里云服务器发送https请求为什么会失败,是需要有些其他什么配置吗?同样的代码本地可以访问https接口,服务器不行,而且服务器可以访问http接口。用的HttpsURLConnection觉得挺有意思,就叫他把请求的URL给一下,然后我在机器上用curl命令测试了一把: 发现报了与ssl有关的错误,我推测可能与https证书...

2018-05-23 11:37:02 5275

原创 ffmpeg: hls 转流 rtmp

最近遇到一个需求,需要将hls协议的直播流转换成rtmp协议的直播流; 在网上找了很长时间,没有找到相应的技术文章, 最后leader给了一个终极命令搞定:ffmpeg -i http://test.com/index.m3u8 -vcodec libx264 -vb 800k -acodec libfaac -ab 64k -f flv rtmp://test.com/appNam...

2018-04-27 21:33:43 2206 3

空空如也

空空如也

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

TA关注的人

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