上一页 1 2 3 4 5 6 7 ··· 35 下一页
摘要: 算法练习(18)-图的拓扑排序 如上图,假设有一个大型代码工程,里面有5个模块: 模块1依赖模块2 模块2依赖模块3和模块5 模块3依赖模块4和模块5 那么,项目在编译时,应该按怎样的的顺序编译? 这就是所谓的拓扑排序问题 就这个示例而言,显然正确的编译顺序是:5->4->3->2->1 或 4->5->3->2->1 (注:4与 阅读全文
posted @ 2021-11-07 19:07 菩提树下的杨过 阅读(305) 评论(0) 推荐(0)
摘要: 算法练习(17)-图的广度优先遍历/深度优先遍历 一、图的数据结构及表示法 如上图,由一堆"点"与一堆"边"构成的数据结构 ,就称为图,其中边上可以有方向(称为有向图),也可以无方向(称为无向图)。边上还可以有所谓的权重值。 算法书上,图的表示方法一般有“邻接矩阵”等,这里我们用左程云介绍的一种相对更容易理解的表示法: 图: import java 阅读全文
posted @ 2021-11-07 16:50 菩提树下的杨过 阅读(1704) 评论(0) 推荐(0)
摘要: Rust中的代码组织:package/crate/mod 刚接触Rust遇到一堆新概念,特别是package, crate, mod 这些,特别迷糊,记录一下 一、pakcage与crate 当我们用cargo 创建一个新项目时,默认就创建了一个package,参考下面的截图: 这样就生成了一个名为demo_1的package,另外也创建1个所谓的bina 阅读全文
posted @ 2021-11-06 16:41 菩提树下的杨过 阅读(2021) 评论(0) 推荐(1)
摘要: 算法练习(16)-水平翻转一颗二叉树 思路:依旧还是层次遍历, 按层入队, 然后出队时, 交换左右节点 阅读全文
posted @ 2021-11-03 12:07 菩提树下的杨过 阅读(112) 评论(0) 推荐(0)
摘要: 算法练习(15)-设计1个二叉树的序列化与反序列化实现? 思路: 二叉树的各种顺序中,随便挑1种,遍历每个节点, 拼装出1个字符串即可实现序列化。要注意的是, 空节点也需要, 可以找一个特殊符号比如#表示。 反序列化则是相反的过程,解析该字符串即可。 这里用层序遍历来实现一把: 序列化代码: public static String serial(Tree 阅读全文
posted @ 2021-11-02 23:23 菩提树下的杨过 阅读(95) 评论(0) 推荐(0)
摘要: 算法练习(14)-二叉树中2个节点的最近公共祖先? 比如这颗树,给定2个节点: 4、5 ,它们的最近公共祖先节点为2。类似的,如果是3、5,它们的最近公共祖先节点为1。 一种比较容易想到的思路,如果知道每个节点到root的全路径, 比如 3到root节点的全路径为: 3->1 5到root节点的全路径为: 5->2->1 这样,只要遍历对比下全路径, 阅读全文
posted @ 2021-10-31 22:37 菩提树下的杨过 阅读(121) 评论(0) 推荐(0)
摘要: 算法练习(13)-打印纸条对折的折痕类型(凹痕?凸痕?) 从左神视频上看到一个有趣的题目,据说是微软的算法面试题:一个长纸条,对折后再展开,中间会有一个凹痕,然后同样的方式,再继续对折, 又会多出2条折痕(不过新折痕会有凸有凹),如此反复对折,纸条上就会留下一系列的折痕,见下图: 要求:输入1个数字(n),表示对折的次数, 从上而下, 打印每1条拆痕的类型 阅读全文
posted @ 2021-10-31 12:58 菩提树下的杨过 阅读(312) 评论(0) 推荐(0)
摘要: 算法练习(12)-二叉树的递归套路 如果二叉树的问题,可以分解为 先处理左树, 再处理右侧, 这种就可以用所谓"递归套路"解法 阅读全文
posted @ 2021-10-31 12:37 菩提树下的杨过 阅读(143) 评论(0) 推荐(0)
摘要: 算法练习(11)-二叉树的各种遍历 二叉树的节点结构如下: public class TreeNode { public TreeNode left; public TreeNode right; public int val; public TreeNode(int val) { this.val = val; } public T 阅读全文
posted @ 2021-10-27 22:33 菩提树下的杨过 阅读(357) 评论(0) 推荐(0)
摘要: 算法练习(10)-求2个(可能有环的)单链表的相交节点 这个问题可以看做是 算法练习(7)-判断单链表是否有环,以及求环的长度 的升级版 阅读全文
posted @ 2021-10-23 17:05 菩提树下的杨过 阅读(68) 评论(0) 推荐(0)
摘要: 算法练习(9)-复制带随机指针的单链表 所谓带随机指针的链表,结构如下: class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; } } 除next外 阅读全文
posted @ 2021-10-23 16:27 菩提树下的杨过 阅读(93) 评论(0) 推荐(0)
摘要: mac升级后第三方下载程序无法打开cannot be opened because the developer cannot be verified的解决办法 mac升级到11.4后,安全性增强导致很多非appstore下载的第3方软件无法打开,比如:从mysql官网下载精减版,手动解压安装时, 就出现下面这样: 有一些网友,也给出了解决方法,比如终端下输入命令 sudo xattr -d com.apple.quarantine 被拦截的执行文件 但是这 阅读全文
posted @ 2021-10-23 15:48 菩提树下的杨过 阅读(8831) 评论(0) 推荐(1)
摘要: 算法练习(8)-判断单链表是否回文链表 在一些文学作品中,大家想必接触过回文诗,比如:“雾窗寒对遥天暮,暮天遥对寒窗雾”或“垂帘画阁画帘垂”,即:正着念反着念完全一样。回文单链表跟这个类似,比如: 0-1-2-1-0或0-1-1-0,很容易发现规律:可以找到一个对称轴,将链表分为前后二段,并且前后对折起来,完全重合。 为了方便,先定义单链 阅读全文
posted @ 2021-10-17 21:23 菩提树下的杨过 阅读(286) 评论(0) 推荐(0)
摘要: 如何解析SIP报文 本文讲述了如何使用开源项目pkts-sip对SIP进行解析,以及如何扩展 阅读全文
posted @ 2021-09-28 10:29 菩提树下的杨过 阅读(2510) 评论(0) 推荐(2)
摘要: SIP REG Digest认证算法分析 本文介绍了freeswitch/opensip话机注册过程中的认证算法 阅读全文
posted @ 2021-09-19 13:50 菩提树下的杨过 阅读(2509) 评论(0) 推荐(0)
摘要: snowflake算法的workerId问题 本文主要探讨了snowflake(雪花算法)使用中,如何合理设置workerId的问题 阅读全文
posted @ 2021-09-19 13:21 菩提树下的杨过 阅读(3131) 评论(0) 推荐(0)
摘要: mockito测试final类/static方法/自己new的对象 先准备几个类,方便后面讲解: public final class FinalSampleUtils { public static String foo() { return "aaa"; } public static String bar(String a) { return "bar:" + 阅读全文
posted @ 2021-09-12 12:26 菩提树下的杨过 阅读(2526) 评论(0) 推荐(1)
摘要: flink 1.11.2 学习笔记(5)-处理消息延时/乱序的三种机制 在实时数据处理的场景中,数据的到达延时或乱序是经常遇到的问题,比如: * 按时间顺序发生的数据1 -> 2,本来应该是1先发送,1先到达,但是在1发送过程中,因为网络延时之类的原因,导致1反而到达晚了,变成2先到达,也就造成所谓的接收乱序; * 发送方本身就延时了,比如:事实上按1 -> 2产生的数 阅读全文
posted @ 2021-09-05 17:28 菩提树下的杨过 阅读(1251) 评论(0) 推荐(0)
摘要: FreeSwitch:send_dtmf/uuid_send_dtmf发送按键注意事项 很多时候我们打电话到公司前台,会听到类似“欢迎致电XXX,办公电话请直拨分机,咨询XX请按1,咨询YY请按2”这样的语音提示。在一些特定流程中,系统自动发起呼叫打到前台,希望实现自动按键(即:不用人手动按键),FreeSwitch提供了2个基本命令: send_dtmf及uuid_send_dtmf 阅读全文
posted @ 2021-08-29 16:44 菩提树下的杨过 阅读(1746) 评论(3) 推荐(0)
摘要: FreeSwitch: ESL Inbound内联模式下如何设置单腿变量 outbound外联模式下,可以参考我先前写的文章:freeswitch: ESL中如何自定义事件及自定义事件的监听,使用export导出变量。但是inbound模式下,ESL client并未封装export命令,如果要给某条腿附加一个变量值,可以借助uuid_setvar命令。 一、命令行验证 阅读全文
posted @ 2021-06-26 16:20 菩提树下的杨过 阅读(954) 评论(0) 推荐(0)
摘要: CompletableFuture笔记 CompletableFuture是java8引入的一个很实用的特性,可以视为Future的升级版本,以下几个示例可以说明其主要用法(注:示例来自《java8实战》一书第11章) 一、引子:化同步为异步 为了方便描述,假设"查询电商报价"的场景:有一个商家Shop类,对外提供价格查询的服务getPr 阅读全文
posted @ 2021-06-06 23:08 菩提树下的杨过 阅读(359) 评论(0) 推荐(1)
摘要: java中整数常量池(-128~127)上限如何调整? 众所周知:java中Integer有一个常量池范围-128~127 Integer a = 500, b = 500; System.out.println(a == b);//false a = 100; b = 100; System.out.println(a == b);//true 相信也 阅读全文
posted @ 2021-05-30 22:40 菩提树下的杨过 阅读(599) 评论(0) 推荐(2)
摘要: redis过期机制及注意事项 按Redis官网说法:对于设置了过期时间的key,有2种清理机制,原文如下: How Redis expires keys Redis keys are expired in two ways: a passive way, and an active way. A key is passively 阅读全文
posted @ 2021-05-29 11:35 菩提树下的杨过 阅读(639) 评论(0) 推荐(0)
摘要: 一次完整的通话过程SIP报文分析 场景: 主叫方(1004,Yate客户端,端口号:52110) -> 通过FreeSWITCH(端口号:5070)呼叫 -> 被叫方(1000,ZoIPer客户端,端口号:5070) 被叫方经历:振铃->(N秒后)接听->正常通话一段时间后->挂断电话。 注:主叫、被叫、FreeSWITCH均在同1 阅读全文
posted @ 2021-05-23 22:49 菩提树下的杨过 阅读(2599) 评论(1) 推荐(1)
摘要: SIPp测试freeswitch用户注册 默认情况下,拨打内部用户时,freeswitch需要该用户注册了才能对其发起呼叫,否则会提示-ERR USER_NOT_REGISTERED 如果使用wireshark等工具,可以在本机使用voip终端工具注册,抓包观察一下SIP报文。 注:如果mac上首次使用wireshark时,可能会遇到 yo 阅读全文
posted @ 2021-05-23 19:27 菩提树下的杨过 阅读(4058) 评论(0) 推荐(1)
摘要: freeswitch批量添加用户 默认情况下,freeswitch内置了1000-1019这20个用户,如果需要添加更多用户,可以按如下步骤操作: 一、复制用户文件 \FreeSWITCH\conf\directory\default 下有1000.xml ~ 1019.xml 这20个用户的配置文件,以1000.xml为例: 1 阅读全文
posted @ 2021-05-17 14:02 菩提树下的杨过 阅读(1488) 评论(1) 推荐(0)
摘要: sipp学习笔记 sipp是一个针对SIP协议进行测试的免费开源工具,可运行于windows/mac/linux,官方地址:http://sipp.sourceforge.net/。 一、安装 本文只介绍mac上的安装方式,其它平台(windows/linux)的安装,可参考官方文档 (注:感谢黄龙舟做的中文翻译) 阅读全文
posted @ 2021-05-16 17:22 菩提树下的杨过 阅读(5859) 评论(2) 推荐(2)
摘要: 利用jave2进行音频处理 很多朋友都知道,ffmpeg是一个功能强大的多媒体处理工具,可惜它并不是java语言开发,如果需要在java项目中使用时,得自己写很多代码,幸好github上有一个开源项目jave2 把ffmpeg做了封装,很大程度上简化了开发,使用方法如下: 先添加依赖项 <dependency> <groupI 阅读全文
posted @ 2021-05-03 17:30 菩提树下的杨过 阅读(1579) 评论(0) 推荐(0)
摘要: EvalEx示例 项目做久了,难免会发现有些需求总是反复无常,今天想这样,明天想那样,但是逻辑本身又不是很复杂,比如: A、很多系统为了鼓励用户,会出一些奖励政策:连续打卡(或登录)X天,奖虚拟币Y枚。但是这个X,Y的系数,可能会经常调整,有时候甚至还会搞1个上限封顶。 B、系统出现重大故障后,事后复盘,要定故障等级 阅读全文
posted @ 2021-03-28 22:05 菩提树下的杨过 阅读(638) 评论(1) 推荐(0)
摘要: ES异地双活方案 对于单机房而言,只要参考Elastic Search 官方文档,搭建一个集群即可,示意图如下: 原理类似分布式选举那一套,当一个master节点宕机时,剩下2个投票选出1个新老大,整个集群可以继续服务。对于核心系统,只部署单机房总归有点不保险,万一单机房故障就废了(比如:断电断网、或光缆被挖断)。那 阅读全文
posted @ 2021-03-28 21:05 菩提树下的杨过 阅读(4017) 评论(2) 推荐(1)
摘要: 算法练习(7)-判断单链表是否有环,以及求环的长度 如上图,一个单链表,如何判断有没有环? 如果有,如何求环的长度? 如果面试时,遇到这个题目,先喝口水压压惊,回想一下,咱们小时候念小学时,数学老师最喜欢的一类题目: 跑道上,2个运动员,1个速度是3m/s,1个速度是5m/s,同一起点起跑后,多久运动员2会再次遇到运动员1?是不是感觉异曲同工? 这2 阅读全文
posted @ 2021-03-27 16:49 菩提树下的杨过 阅读(207) 评论(0) 推荐(0)
摘要: 算法练习(6)-O(1)时间复杂度判断1个正整数是否为2的幂次方 原数(10进制) 原数(2进制) 原数-1(2进制) 1 1 0 2 10 01 4 100 011 8 1000 0111 16 10000 01111 观察上面的表格,如果1个数是2的幂次方,转换成2进制,必然最高位是1,其它位都是0,同时这个数减1后,所有有效位全是0,利用这个特点,做1次&位 阅读全文
posted @ 2021-03-27 15:52 菩提树下的杨过 阅读(154) 评论(0) 推荐(0)
摘要: 算法练习(5)-计数排序法及优化 日常开发中,会遇到一些特定的排序场景:“待排序的值”范围很明细,比如:基金的星级排名,客服的好评星级排名,一般星级排名也就从1星到5星。这种情况下,有一个经典的“下标计数排序法”,可以用O(n)的时间复杂度完成排序: static void sort1(int[] arr) { if (arr == 阅读全文
posted @ 2021-03-25 20:04 菩提树下的杨过 阅读(232) 评论(0) 推荐(0)
摘要: freeswitch: 如何指定主叫显示号码 一、origiante时指定主叫号码 正常情况下,如果在freeswitch控制台,输入类似下面 命令: originate user/1000 &park 被叫收到振铃提示时,显示的号码类似下面这样 如果希望指定主叫的显示名称及号码,可以加参数: originate {origination_ca 阅读全文
posted @ 2021-03-13 14:03 菩提树下的杨过 阅读(1989) 评论(0) 推荐(0)
摘要: flink 1.11.2 学习笔记(5)-lambda表达式的使用问题 flink的api,提供了流畅的链式编程写法,写起来行云流水,感受一下: SingleOutputStreamOperator<Tuple3<String, Integer, String>> counts = env //设置并行度1,方便观察输出 .setParallelism(1) //添加k 阅读全文
posted @ 2021-03-10 13:22 菩提树下的杨过 阅读(934) 评论(0) 推荐(3)
摘要: freeswitch: ESL中如何自定义事件及自定义事件的监听 虽然freeswitch已经内置了一些标识的事件,比如:CHANNEL_CREATE(发起呼叫时触发),CHANNEL_HANGUP_COMPLETE(电话挂断时触发)...,但是有时候我们想根据业务需求,新增一些自定义的事件,比如:客人进线后,如果分配到了一个空闲的客服,希望触发一个特定的事件。 阅读全文
posted @ 2021-03-01 23:41 菩提树下的杨过 阅读(3413) 评论(2) 推荐(2)
摘要: mysql查看表/索引大小 直接上sql(参考下面的语句,把表名改一改即可) SELECT DATA_LENGTH / (1024 * 1024 * 1024) AS 'DATA_SIZE(GB)', INDEX_LENGTH / (1024 * 1024 * 1024) AS 'INDEX_SIZE(GB)', TABLE_ 阅读全文
posted @ 2021-02-04 09:24 菩提树下的杨过 阅读(789) 评论(0) 推荐(0)
摘要: flink 1.11.2 学习笔记(4)-状态示例 接上节继续,今天学习Flink中状态的使用。数据处理的过程中,对当前数据的处理,有时候要依赖前一条数据的值,这种被称为“有状态”的计算。 举个例子:有这么一个公司,喜欢用内部沟通软件(类似企业微信)来做员工考勤,假设这个软件会定时上报每个员工的在线状态,如果在线(online),认为员工在上班,如果 阅读全文
posted @ 2020-12-20 21:41 菩提树下的杨过 阅读(641) 评论(0) 推荐(0)
摘要: flink 1.11.2 学习笔记(3)-统计窗口window 接上节继续,通常在做数据分析时需要指定时间范围,比如:"每天凌晨1点统计前一天的订单量" 或者 "每个整点统计前24小时的总发货量"。这个统计时间段,就称为统计窗口。Flink中支持多种Window统计,今天介绍二种常见的窗口:TumbingWindow及SlidingWindow。 如上图,最下面 阅读全文
posted @ 2020-12-19 15:19 菩提树下的杨过 阅读(867) 评论(0) 推荐(0)
摘要: 以呼叫中心为例解释如何将有状态设计转换成无状态设计? 在日常开发中,我们经常会到"有状态"服务设计与"无状态"服务设计,何谓“无状态”? 简单来说,比如http请求一个静态网页,访问请求随便转发到服务器集群中的任何一个节点都行,集群在运行过程中,动态扩容或缩容对整体运行影响不大,就算正在访问的请求偶尔断了(比如:服务器意外重启或网络抖动),结合“重试、 阅读全文
posted @ 2020-12-06 21:33 菩提树下的杨过 阅读(967) 评论(0) 推荐(1)
上一页 1 2 3 4 5 6 7 ··· 35 下一页