上一页 1 2 3 4 5 6 7 ··· 35 下一页
摘要: Rust:axum学习笔记(7) websocket 接上一篇继续,今天来学习下如何用axum实现websocket,代码如下: Cargo.toml添加依赖项 [package] name = "websocket" version = "0.1.0" edition = "2021" # See more keys and their defini 阅读全文
posted @ 2022-01-24 22:25 菩提树下的杨过 阅读(3027) 评论(0) 推荐(0)
摘要: Rust:axum学习笔记(6) SSE(Server Send Event)服务端推送 接上一篇继续,SSE也就是服务端推送技术,自html5推出以来基本上各大浏览器都已支持,axum自然也支持,参考下面的代码: async fn sse_handler( TypedHeader(user_agent): TypedHeader<headers::UserAgent>, ) -> Ss 阅读全文
posted @ 2022-01-23 23:01 菩提树下的杨过 阅读(1784) 评论(0) 推荐(0)
摘要: Rust:axum学习笔记(5) 处理静态资源 接上一篇继续,静态资源比如css/js/jpg等,一般不需要服务端做额外的业务处理,直接透传给浏览器就行,axum可以指定将某个目录指定为静态资源,参考下面的代码: let app = Router::new() .nest( "/static", get_service(ServeDir::new 阅读全文
posted @ 2022-01-23 22:38 菩提树下的杨过 阅读(2247) 评论(0) 推荐(0)
摘要: Rust:axum学习笔记(4) 上传文件 接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 1. 文件上传的大小限制 2. 文件上传的类型限制(仅限指定类型:比如图片) 3. 防止伪装mimetype进行攻击(比如:把.js文件改后缀变成.jpg 阅读全文
posted @ 2022-01-23 12:08 菩提树下的杨过 阅读(2530) 评论(0) 推荐(1)
摘要: Rust:axum学习笔记(3) extract&#160; 接上一篇继续,今天学习如何从Request请求中提取想要的内容,用axum里的概念叫Extract。 预备知识:json序列化/反序列化 鉴于现在web开发中,json格式被广泛使用,先熟悉下rust中如何进行json序列化/反序列化。 [dependencies] serde_json = "1" 阅读全文
posted @ 2022-01-01 23:03 菩提树下的杨过 阅读(3374) 评论(1) 推荐(0)
摘要: Rust:axum学习笔记(2) response 上一篇的hello world里,示例过于简单,仅仅只是返回了一个字符串,实际上axum的response能返回各种格式,包括: plain_texthtmljsonhttp StatusCode...web开发中需要的各种格式,都能返回。talk is cheap ,show me the cod 阅读全文
posted @ 2021-12-26 22:52 菩提树下的杨过 阅读(3348) 评论(2) 推荐(0)
摘要: Rust:axum学习笔记(1) hello world axum是Rust生态的web框架新秀,虽然项目成立不久,但github上的star数已超2.8k,其底层依赖的是高性能的Tokio,Tokio这货就不多说了,借用知乎《深入浅出Rust异步编程之Tokio》上的一张图: Rust中的Tokio几乎是同类框架的性能天花板了,而axum在Tokio基础 阅读全文
posted @ 2021-12-26 21:05 菩提树下的杨过 阅读(5116) 评论(0) 推荐(0)
摘要: Rust: Tcp编程Demo 最基本的Hello World示例: TcpServer端: use std::{net::TcpListener, io::{Read, Write}}; fn main() { //绑定本机3000端口 let listener = TcpListener::bind("127.0.0.1:30 阅读全文
posted @ 2021-12-26 20:14 菩提树下的杨过 阅读(852) 评论(0) 推荐(0)
摘要: Rust: 如何用bevy写一个贪吃蛇(下) 接上篇继续,贪吃蛇游戏中食物是不能缺少的,先来解决这个问题: 一、随机位置生成食物 use rand::prelude::random; ... struct Food; //随机位置生成食物 fn food_spawner( //<-- mut commands: Commands, materi 阅读全文
posted @ 2021-12-19 11:46 菩提树下的杨过 阅读(581) 评论(0) 推荐(0)
摘要: Rust: 如何用bevy写一个贪吃蛇(上) bevy社区有一篇不错的入门教程:Creating a Snake Clone in Rust, with Bevy,详细讲解了贪吃蛇的开发过程,我加了一些个人理解,记录于此: 一、先搭一个"空"架子 1.1 Cargo.toml依赖项 [dependencies] bevy = { version 阅读全文
posted @ 2021-12-18 17:07 菩提树下的杨过 阅读(935) 评论(0) 推荐(0)
摘要: Rust: 如何用bevy画2d图形及使用按键控制移动 bevy自带的画图功能有点弱,得先引入bevy_prototype_lyon, Cargo.toml依赖部分如下: [dependencies] bevy = { version = "0.5.0", features = ["dynamic"] } bevy_prototype_lyon = "0 阅读全文
posted @ 2021-12-14 09:42 菩提树下的杨过 阅读(932) 评论(0) 推荐(0)
摘要: Rust: win10环境如何编译bevy? bevy是一个rust语言的跨平台游戏引擎,但是在windows10环境编译时,遇到问题无数,幸尽数解决,记录于此,供遇到同类问题的朋友参考: 环境:windows 10 + bevy 0.5.0 + rustup nightly版本 一、设置crates国内镜像 crates.io官网国内访问实在 阅读全文
posted @ 2021-12-11 15:01 菩提树下的杨过 阅读(921) 评论(0) 推荐(0)
摘要: Rust中的Result枚举 Result枚举在Rust中是使用频率极高的一个类型,常用于函数的返回值定义,其源码如下: #[derive(Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)] #[must_use = "this `Result` may be an `Err` 阅读全文
posted @ 2021-11-28 15:48 菩提树下的杨过 阅读(1039) 评论(0) 推荐(0)
摘要: Rust中的模式匹配 一、let模式匹配 在其它一些语言中,let x = 5 之类的语句,仅仅只是赋值语句。但是在rust中,可以换个角度理解,认为5这个值匹配到了x变量。如果觉得有些牵强,可以再来一个示例: let (a,b)=(1,3); println!("{},{}",a,b); 上面的示例,表示(1,3)这个 阅读全文
posted @ 2021-11-28 14:20 菩提树下的杨过 阅读(558) 评论(0) 推荐(0)
摘要: Rust中的匿名函数与闭包 一、匿名函数 语法:“|参数名| 语句” 参考下面的这个示例: fn add(a: i32, b: i32) -> i32 { a + b } fn main() { let x = add(1, 2); println!("{}+{}={}", 1, 2, x); //匿名函数 let add = 阅读全文
posted @ 2021-11-21 23:04 菩提树下的杨过 阅读(1279) 评论(0) 推荐(0)
摘要: Rust中的workspace java项目中用maven管理代码时,如果遇到大型工程,一般会拆分成不同的模块,比如spring-mvc中,通常会按model, view, controller建3个模块,然后根据一定的依赖关系进行引用。这个概念在Rust中是通用的,只不过maven换成了cargo,而模块变成了crate,看下面 阅读全文
posted @ 2021-11-21 21:56 菩提树下的杨过 阅读(602) 评论(1) 推荐(1)
摘要: 算法练习(19)-单源最短路径dijkstra算法 如上图,先初始化1个图,每条边上的红色数字为路径权重:(Node,Edge的定义参见算法练习(17)-图的广度优先遍历/深度优先遍历) Graph init() { List<Node> nodes = new ArrayList<>(); List<Edge> edges = new ArrayL 阅读全文
posted @ 2021-11-14 19:24 菩提树下的杨过 阅读(286) 评论(0) 推荐(0)
摘要: Rust中struct的function与method 一个示例就能看明白,关键处皆有注释,大致要点:impl 一个struct时,1.如果方法参数为&self,则为方法 ,可以用"对象实例.方法"来调用2.如果方法参数不是&self,则为函数,只能用"struct名::函数名"来调用 //类似java里的pojo类 struct Pet{ name:S 阅读全文
posted @ 2021-11-09 20:54 菩提树下的杨过 阅读(239) 评论(0) 推荐(0)
摘要: 算法练习(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 菩提树下的杨过 阅读(314) 评论(0) 推荐(0)
摘要: 算法练习(17)-图的广度优先遍历/深度优先遍历 一、图的数据结构及表示法 如上图,由一堆"点"与一堆"边"构成的数据结构 ,就称为图,其中边上可以有方向(称为有向图),也可以无方向(称为无向图)。边上还可以有所谓的权重值。 算法书上,图的表示方法一般有“邻接矩阵”等,这里我们用左程云介绍的一种相对更容易理解的表示法: 图: import java 阅读全文
posted @ 2021-11-07 16:50 菩提树下的杨过 阅读(1725) 评论(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 菩提树下的杨过 阅读(2063) 评论(0) 推荐(1)
摘要: 算法练习(16)-水平翻转一颗二叉树 思路:依旧还是层次遍历, 按层入队, 然后出队时, 交换左右节点 阅读全文
posted @ 2021-11-03 12:07 菩提树下的杨过 阅读(114) 评论(0) 推荐(0)
摘要: 算法练习(15)-设计1个二叉树的序列化与反序列化实现? 思路: 二叉树的各种顺序中,随便挑1种,遍历每个节点, 拼装出1个字符串即可实现序列化。要注意的是, 空节点也需要, 可以找一个特殊符号比如#表示。 反序列化则是相反的过程,解析该字符串即可。 这里用层序遍历来实现一把: 序列化代码: public static String serial(Tree 阅读全文
posted @ 2021-11-02 23:23 菩提树下的杨过 阅读(104) 评论(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 菩提树下的杨过 阅读(131) 评论(0) 推荐(0)
摘要: 算法练习(13)-打印纸条对折的折痕类型(凹痕?凸痕?) 从左神视频上看到一个有趣的题目,据说是微软的算法面试题:一个长纸条,对折后再展开,中间会有一个凹痕,然后同样的方式,再继续对折, 又会多出2条折痕(不过新折痕会有凸有凹),如此反复对折,纸条上就会留下一系列的折痕,见下图: 要求:输入1个数字(n),表示对折的次数, 从上而下, 打印每1条拆痕的类型 阅读全文
posted @ 2021-10-31 12:58 菩提树下的杨过 阅读(317) 评论(0) 推荐(0)
摘要: 算法练习(12)-二叉树的递归套路 如果二叉树的问题,可以分解为 先处理左树, 再处理右侧, 这种就可以用所谓"递归套路"解法 阅读全文
posted @ 2021-10-31 12:37 菩提树下的杨过 阅读(162) 评论(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 菩提树下的杨过 阅读(370) 评论(0) 推荐(0)
摘要: 算法练习(10)-求2个(可能有环的)单链表的相交节点 这个问题可以看做是 算法练习(7)-判断单链表是否有环,以及求环的长度 的升级版 阅读全文
posted @ 2021-10-23 17:05 菩提树下的杨过 阅读(75) 评论(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 菩提树下的杨过 阅读(98) 评论(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 菩提树下的杨过 阅读(8857) 评论(0) 推荐(1)
摘要: 算法练习(8)-判断单链表是否回文链表 在一些文学作品中,大家想必接触过回文诗,比如:“雾窗寒对遥天暮,暮天遥对寒窗雾”或“垂帘画阁画帘垂”,即:正着念反着念完全一样。回文单链表跟这个类似,比如: 0-1-2-1-0或0-1-1-0,很容易发现规律:可以找到一个对称轴,将链表分为前后二段,并且前后对折起来,完全重合。 为了方便,先定义单链 阅读全文
posted @ 2021-10-17 21:23 菩提树下的杨过 阅读(300) 评论(0) 推荐(0)
摘要: 如何解析SIP报文 本文讲述了如何使用开源项目pkts-sip对SIP进行解析,以及如何扩展 阅读全文
posted @ 2021-09-28 10:29 菩提树下的杨过 阅读(2570) 评论(0) 推荐(2)
摘要: SIP REG Digest认证算法分析 本文介绍了freeswitch/opensip话机注册过程中的认证算法 阅读全文
posted @ 2021-09-19 13:50 菩提树下的杨过 阅读(2651) 评论(0) 推荐(0)
摘要: snowflake算法的workerId问题 本文主要探讨了snowflake(雪花算法)使用中,如何合理设置workerId的问题 阅读全文
posted @ 2021-09-19 13:21 菩提树下的杨过 阅读(3188) 评论(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 菩提树下的杨过 阅读(2572) 评论(0) 推荐(1)
摘要: flink 1.11.2 学习笔记(5)-处理消息延时/乱序的三种机制 在实时数据处理的场景中,数据的到达延时或乱序是经常遇到的问题,比如: * 按时间顺序发生的数据1 -> 2,本来应该是1先发送,1先到达,但是在1发送过程中,因为网络延时之类的原因,导致1反而到达晚了,变成2先到达,也就造成所谓的接收乱序; * 发送方本身就延时了,比如:事实上按1 -> 2产生的数 阅读全文
posted @ 2021-09-05 17:28 菩提树下的杨过 阅读(1269) 评论(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 菩提树下的杨过 阅读(1788) 评论(3) 推荐(0)
摘要: FreeSwitch: ESL Inbound内联模式下如何设置单腿变量 outbound外联模式下,可以参考我先前写的文章:freeswitch: ESL中如何自定义事件及自定义事件的监听,使用export导出变量。但是inbound模式下,ESL client并未封装export命令,如果要给某条腿附加一个变量值,可以借助uuid_setvar命令。 一、命令行验证 阅读全文
posted @ 2021-06-26 16:20 菩提树下的杨过 阅读(973) 评论(0) 推荐(0)
摘要: CompletableFuture笔记 CompletableFuture是java8引入的一个很实用的特性,可以视为Future的升级版本,以下几个示例可以说明其主要用法(注:示例来自《java8实战》一书第11章) 一、引子:化同步为异步 为了方便描述,假设"查询电商报价"的场景:有一个商家Shop类,对外提供价格查询的服务getPr 阅读全文
posted @ 2021-06-06 23:08 菩提树下的杨过 阅读(373) 评论(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 菩提树下的杨过 阅读(610) 评论(0) 推荐(2)
上一页 1 2 3 4 5 6 7 ··· 35 下一页