自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 收藏
  • 关注

原创 WebRTC源码下载及编译(Ubuntu20.04)

编译完成会在out/Default目录下生成很多文件(包括各种库等)

2024-09-23 18:21:46 414

原创 电脑办公之基础操作(持续更新)

有的按键上有两个符号,默认输入下方的符号,如果想要输入上方的符号,需要先按住shift键。方法二: 点击左面的Caps Lock键, 右上角的“A"灯亮,表示是大写字母输入模式。通常有ctrl+空格,ctrl+alt, ctrl+alt+空格等情况。方法一: 按住Shift键的同时,再按字母键,此时输入的就是大写字母。方法一:可以通过鼠标点击电脑右下角的输入法列表, 选择相应的输入法。在打开的文档中,滑动中间的滚轮可以上下翻阅文档。左键有单击、双击、长按拖动三种使用方法。用来打开文件/文档/应用软件等。

2024-09-03 22:39:50 686

原创 SIP协议之匿名呼叫

匿名呼叫是SIP呼叫中的一个特殊业务,原理是构造一个没有个人信息的From头域,其中显示名部分为Anonymous, 这样被叫收到呼入请求时,按照From头域中的显示部分“Anonymous"显显示为Anonymous(匿名)来电。

2024-08-24 10:33:32 235

原创 减少软件使用的复杂度

对软件使用者来说,软件的安装和使用要足够方便,比如输入参数少、一键安装等。避免操作复杂度高导致用户使用的不适,使产品失去竞争力。

2024-06-03 21:25:35 135

原创 持续不断的学习

软件行业技术更新速度快,要想保持竞争力,需要不断的学习,所谓”技多不压身”。软件工程师在工作过程中,不仅要在自己的领域范围内深入学习,还要在整个软件行业链条上,不断的扩展自己的视野和能力,从而不被行业淘汰。

2024-06-03 21:24:29 120

原创 非紧急的难题延期处理

在日常工作中,经常会收到一些待处理的新问题,有些是紧急的,有些是非紧急的。遇到这种情况时,一部分人会停下手上的工作,去处理新问题,造成现有工作思路的中断,而处理完新问题后,已经忘记当时的思路了,又得重新思考之前的工作状态,导致效率降低。比较好的方法是:如果是紧急的问题,记录当前的工作状态,优先处理新问题;如果是非紧急的问题,则不要中断进行中的任务,将新问题放入待处理任务列表,延期处理。

2024-06-03 21:23:21 361

原创 程序员要做好软件测试

众所周知,软件完成开发后,要经过测试人员测试,找出问题,然后由程序员修复后再提交测试验证,直到没有问题。而这个修复测试过程中含有很多沟通、交互环节,耗费大量时间和精力,容易造成产品交付延期。因此,程序员在开发过程中,要做好用例测试,避免软件中出现低级错误,减少问题,从而减少反复提测版本造成的人力时间损耗,保证软件交付时间。

2024-06-03 21:20:30 251 1

原创 将成果加入版本管理

无论是代码、脚本、或是文档,都会根据需求进行不定期的修改,有时需要以前的版本。如果单靠备份机制维护不同版本文件,既占用空间,又容易出错,这时需要使用版本管理工具(如 git)将阶段性的版本管理起来并在提交时添加必要的说明。这样,在后面需要恢复到上一个版本的状态时,就很方便。一般公司也都有相应的代码和文档管理工具或机制,重点要说明的是,对于临时开发的 demo 程序、编写的文档等也要用版本管理起来,方便恢复到以前的版本。

2024-06-03 21:17:34 692

原创 先编码后调试

对于初级程序员来说,大多是写几行代码就编译看看有没有错误, 有错误改好了再编码,反复如此。这样做的缺点是造成了频繁的思路中断,编码效率降低。高级程序员的做法是先编码再编译调试,但这也不是说把所有代码全部写完再编译,重点是要尽量保持编码思路的连续性,从而提高编程效率。

2024-06-03 21:16:33 321

原创 与主流代码风格一致

不同的编程语言有不同的编程风格,软件工程师在编码时,要与主流代码风格保持一致,这样可以提高代码的可读性和可维护性,不同团队成员之间的协作更加顺畅。因此,建议参考大厂的编码风格进行编程。

2024-06-03 21:14:24 173

原创 从开源代码中学习

经典的开源项目都是经过多名顶级软件开发者的设计开发,里边一般都有值得学习的东西,比如架构设计、编程思想,语法技巧等,多分析和学习开源代码能够提高软件设计能力和编程水平。

2024-06-03 21:11:29 168

原创 确认好再开始编码

编码是软件开发的核心,在开始编码前一定要确认好相关事项,以免出现差错。

2024-06-03 21:10:24 195

原创 掌握常用的快捷键

无论在 windows 系统还是 Linux 操作系统中,各个应用软件都有很多快捷键,如打开、保存文件,复制/粘贴等等。相比于使用鼠标进行菜单选择,通过快捷键操作可以更快完成相应的操作,从而提高工作效率。因此,要尽可能掌握更多的快捷键。

2024-06-03 21:09:04 477

原创 提高打字速度

程序员打字速度的高低,往往直接影响着他们的工作效率。如果打字慢或左右手分工不明确,建议花费时间进行键盘指法练习,从而提高编程效率。

2024-06-03 21:07:57 102

原创 为自己积累编程积木

复杂程序代码其实是简单程序代码的组合。不同项目中经常会用到相同的功能函数、API 接口、功能库。为避免重复查询函数用途、参数调用等信息,可以在工作中将常用的程序片段、函数/API 示例、功能库调用框架等整理出来,构建成自己的开发库。在需要的时候,将相应的代码拷贝粘贴使用,避免重复开发代码耗费时间,像搭建积木一样来构建软件来提高整体的开发效率。

2024-05-30 20:37:49 126

原创 工欲善其事,必先利其器

因此,很多程序员都会自已准备顺手的设备,比如机械键盘、鼠标等。

2024-05-30 20:34:11 144

原创 程序与程序产品的区别

程序是指实现某些功能的演示程序,可以是示例程序(如demo)。而程序产品是交付给客户使用的产品,是产品级的程序。demo 程序开发可能 1 小时就能完成,但只能作为内部少数人技术交流使用。如果要达到产品级别,需要完成参数检查、性能优化、单元/系统测试、各种文档说明等等,需要花费更多的工作量。这也是软件工程师估算开发周期要注意的关键点。

2024-05-30 20:30:34 137

原创 软件架构应该由少数人设计

软件架构设计决定了软件的基础框架和主体结构,必须由经验丰富的软件架构师或者高级程序员主导,在一个公司中,通常只有少数人具备这样的能力和责任。因此,要避免过多的人员参与软件设计,从而导致软件架构、逻辑设计的不一致。

2024-05-30 20:25:11 119

原创 人月互换就是个神话

人月”是指项目时间安排的单位,多用于大型项目,一般小的软件开发也用人天作为单位。项目开发中,人和月是不能互换的,人和月互换就是个神话(不可能实现)。比如,需要 1 个人 5 个月完成的项目,5 个人在一个月内一般是完不成的,基于的理由是:有些任务不能拆分,不能并行去执行,需要按顺序实施。另外一个举例:一个女人 9 个月可以孕育一个小孩,但是 9 个女人一个月不能孕育一个小孩,即阐明了任务的不可拆分性和不可并行性。

2024-05-30 20:18:48 146

原创 通过邮件备忘决策

在工作中,经常通过会议或面对面沟通的方式来确定解决问题的方法,一般会得出结论性质的决策,比如人员进度安排、任务分配、截止时间、接口定义、功能定义等等,如果仅是口头上的约定或通知,难免出现遗忘、记错的情况,导致项目组内成员或跨部门成员之间的协作失败、相互推卸责任的情况。不仅影响项目进度,还影响公司内部的氛围。因此,在软件开发或其它工作中,一定要通过邮件备忘决策结果,厘清责任,避免出现扯皮的情况。

2024-05-30 20:15:20 113

原创 学习从 0 构建软件工程

好多程序员能够快速融入到团队已有的项目开发中,但当让他去创建一个新的软件工程时,却无从下手,这是典型的平台依赖型选手,即需要别人创建好软件程后自己才能开始内容开发。这在初、中级程序员中很常见,但要想成为高级程序员,成为独挑项目大梁的大牛,那么就必须要掌握软件构件流程和方法。因此,在日常开发中,要深入了解整个软件工程的组成和架构,以便日后成为架构师或创造出更多优秀的软件。

2024-05-30 20:12:15 126

原创 身体不适时,及时休息

在日常工作中,难名出现身体不适的情况,比如感冒或者前一天晚上没休息好。在这样的情况下,有些人还在继续工作甚至有的晚上还坚持加班。虽然这可能是因为绩效的压力或者公司的要求不得不加班,但还是要以自己的身体为重,在身体不适的情况下尽早下班,回去好好休息。咬牙坚持只会透支自己的免疫力,效率低下同样会浪费公司的时间,也浪费自己的时间;只有休息好了,才能更有效率的工作。

2024-05-30 20:08:47 124

原创 数据结构设计是软件设计的中心环节

数据决定了数据结构,而数据结构设计是整个软件设计的中心环节。数据结构设计的复杂度直接影响了软件的功能和逻辑复杂度,决定了开发和测试的工作量。因此一定要先做好数据分析和数据结构设计。

2024-05-30 20:05:27 78

原创 做好软件开发的时间安排

可以注意到, 编码时间是最少的,设计时间也是编码的 2 倍,测试时间占到了一半时间。这样的安排也间接说明,要留给调试/测试更多的时间,因为程序员代码写的再好,也难免有疏漏和缺陷,需要通过完善的测试来发现隐藏的问题,多次问题修复、测试的迭代流程会耗费很多时间。如果考虑不全,则会造成项目延期。另外,软件设计中的功能和逻辑复杂度直接决定了编码的工作量,因此,花费更多的时间去做好软件设计是事半功倍的。

2024-05-30 20:03:14 967

原创 新人开发新系统,旧人维护旧系统

通常来说旧系统存在一些难以解决的问题,软件架构及逻辑实现可能会有一定的缺陷和复杂度,甚至有些烂系统可以称为”焦油坑“,意思是出现问题难以分析解决,谁来谁陷进去。因此,如果同时存在新系统(可能正在开发中)和旧系统, 建议将新人安排到新系统的开发和维护中,旧系统仍然由旧人维护。

2024-05-29 22:51:38 708

原创 开发第二个系统时,容易陷入过度设计的麻烦

开发第二个系统时,会引入之前开发的设计经验和理念,并且会考虑尽可能解决以前遇到的所有问题,倾向于实现更多、更完备、更强大的功能,同时在软件其它质量属性如可运维、可扩展、可测试等方面进行更多的兼顾。过多的功能设计使系统的复杂性增加,难以开发和维护,产品交付时间会大大延后,最终可能导致产品错过最佳的市场机会。因此,开发新系统时,应该根据实际需求来确定系统的功能和特点,而不是过度设计。要以实际需求为导向,快速交付产品,抢占市场。同时,也需要注意系统的性能和可扩展性,以便使其能够适应未来的需求和变化。

2024-05-29 22:39:45 123

原创 日志不是核心功能,避免过度设计

日志是记录用户操作、系统运行状态的一种手段,完整、准确的日志能够帮助开发和运维人员快速定位和分析问题。但在实际工作过程中,经常将软件问题过多和问题修复过慢归结于日志记录不完善方面,而去大张旗鼓的去设计开发日志记录、备份功能,耗费大量时间精力,最终对真正的软件问题帮助有限。因此,一定要注意,日志不属于软件系统的核心功能,不要花费大量的时间去过度设计,要将更多的时间、精力用于软件本身的开发和优化上。

2024-05-28 22:05:58 242

原创 少画流程图,多用文字表述

在软件开发设计时,一般需要绘制一些流程图、时序图来表明程序的交互逻辑。这些图虽然能够清晰的表述软件的运行逻辑,也方便项目组不同角色成员沟通

2024-05-28 21:53:55 87

原创 项目延期,不要随意加派人手

项目出现延期时,尽可能不要向落后的项目增加人手

2024-05-27 22:27:27 564

原创 SIP调试之SIPP测试工具

  SIPP是针对SIP协议的一个性能测试的命令行工具,可以动态显示测试的统计信息(如呼叫速率、延时、消息统计等)。用户可以通过XML场景配置文件,自定义模拟各种UAC/UAS测试场景的信令交互流程,可以被用来测试IP话机、SIP代理、SIP PBX等SIP设备。官方网站:参考文档:linux平台:注:也可以下载源码编译安装3.2 常用参数说明-v作用:显示版本信息作用:后台模式运行作用:输出SIPP内嵌的默认场景部分参数说明:将场景内容重定向到文件-sf作用:加载指定的场景文件-sn

2024-03-15 19:58:53 2865

原创 VoIP之音视频质量及弱网解决方案

衡量音视频通信质量的指标主要有两个,延迟性和服务质量,即延迟性越低、服务质量越高,则音视频通信的质量就越好。音视频质量主要受网络情况(带宽限制,网络拥塞,网络丢包、抖动等)影响,导致通信质量下降。在实际应用中,针对不同情况有多种优化方案来提高通信质量。

2024-03-08 20:01:40 1319

原创 音视频之V4L2的应用

V4L2是Video for Linux2的简称,是Linux操作系统中支持实时视频采集的设备驱动和一系列API的集合。V4L2驱动会在文件系统中创建/dev/video*设备节点供视频采集操作使用。

2024-03-07 19:19:58 582

原创 VoIP之AVPF(Audio-Visual Profile with Feedback)

在VoIP音视频通话中,接收者可以依赖rtcp机制向发送者报告RTP数据接收的统计情况,以便发送者根据接收情况(丢包数量等)调整传输行为(发送速率等)。由于基本的RTCP统计报告是定期发送的,通过该机制来调整发送端行为会有一定的滞后性,比如视频因丢包解码出现花屏时,急需新的I帧来刷新图像。

2024-02-27 19:59:22 712

原创 VoIP之主备注册服务器机制

在IP话机的实际使用中,不可避免的会出现服务器离线运维、服务宕机、IP话机和服务器连接中断等情况。为了保证电话服务的连续性,在VoIP部署服环境中必须有冗余机制。常见的冗余机制以主备服务器的形式实现。

2024-02-06 15:48:29 781

原创 freeswitch之fs_cli常用指令

fs_cli是FreeSWITCH的一个客户端连接程序,可以通过其连接freeswitch服务,查看运行情况并对其进行控制。

2024-02-05 11:27:54 1606

原创 VoIP之IP直呼

在VoIP应用场景中,有一种功能叫IP直呼,也称为IP直拨。就是两个SIP终端或终端和服务器之间,通过呼叫(Invite)对方IP地址实现音视频通话的功能。与常见的SIP账号呼叫的区别是from/to字段没有账号(user)部分,只有IP地址。

2023-09-14 19:42:57 347

原创 freeswitch之h264视频通话问题

安装freeswitch后,使用账号A给账号B发起视频通话(h264编码)请求,发现B收到的呼叫是音频通话,这是由于freeswitch没有启用h26x模块的原因。

2023-08-31 19:46:27 1083

原创 freeswitch之没有提示音问题

部署freeswitch后,账号A与账号B建立通话,其中一方点击保持后,另一方听不到保持提示音。在拒接通话场景中也没有任何提示音。出现这种现象的原因是没有安装声音文件。

2023-08-29 20:49:51 1097

原创 freeswitch之内线呼叫挂不断问题

内网部署freeswitch, 注册2个账号A和B, A和B建立通话后,无论哪一方挂断,另一方都不能结束通话。通过抓取报文发现,这是由于INVITE和200-INVITE经过freeswitch后,Contact头域的地址被改成了公网地址(该地址是由freeswitch的stun机制获取的),挂断时bye消息发到了公网地址。

2023-08-28 22:24:27 988

原创 freeswitch之账号呼叫10秒延时问题

在安装freeSwitch后,注册两个账号A和B, 用其中一个账号呼叫另一个账号时,被叫10秒左右才能收到来电。出现这种情况的原因是配置文件中有个默认10秒的延时配置,只需要将该配置注释掉并重新加载配置即可。

2023-08-28 21:44:02 720

SIP(VoIP)常用RFC文档.zip

SIP/VoIP领域中常用的RFC文档 rfc3261: SIP(Session Initiation Protocol), 会话初始化协议 文中定义了消息的头域格式及用途, 会话、事务及状态机逻辑,是SIP协议的基础规范。 rfc4566: SDP: Session Description Protocol 作为会话描述协议 ,主要用于媒体(音频和视频)参数的协商,与SIP或RTSP等信令控制协议一起使用 rfc3262: Reliability of Provisional Responses in the Session Initiation Protocol (SIP) 作为SIP扩展协议,定义了临时响应18x(183/180)可靠传输机制 rfc2833: RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals 用于DTMF 数字信号、电话音和电话信号的 RTP 负载格式

2023-04-20

空空如也

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

TA关注的人

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