摘要:

在国际化的项目中,处理时间时经常会遇到夏令时(BST,British Summer Time)问题,发明夏令时(以及冬令时)主要是为了省电。 冷知识:中国历史上也曾经采用过(1986-1991)夏令时,后来因为各种原因,最终取消了这一制度(参见:https://baijiahao.baidu.com
阅读全文
posted @ 2022-11-13 14:57
菩提树下的杨过
阅读(2891)
推荐(1)
摘要:

记录几个常用的并发用法: 1、如何让线程只创建1次 先看一段熟悉的java代码: void method1() { new Thread(() -> { while (true) { System.out.println(String.format("thread-id:%s,timestamp:%
阅读全文
posted @ 2022-09-04 16:14
菩提树下的杨过
阅读(643)
推荐(0)
摘要:

接上节继续,今天来研究tauri的事件(event),假设老板提了个需求,希望能实时监控cpu、内存等性能指标,你会怎么做? 思路1: 后端Rust暴露1个command,前端js不停去轮询(参考前文:tauri学习(3)-前端调用Rust代码),即传统的pull模型。 思路2: 后端不停对外喷数据
阅读全文
posted @ 2022-08-28 18:23
菩提树下的杨过
阅读(3048)
推荐(1)
摘要:

接上节继续,研究下系统托盘。 一、tauri.conf.json配置启用系统托盘 二、Rust中添加托盘 运行效果: 但是只有一个托盘图标,点了啥反应都没有。 三、给托盘加菜单 效果: 接下来,给托盘及托盘菜单添加事件响应: use tauri::{ CustomMenuItem, Manager,
阅读全文
posted @ 2022-08-21 18:48
菩提树下的杨过
阅读(2563)
推荐(0)
摘要:

接上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景: 1、程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑。 2、播放启动广告,手机应用上很常见,进入主程序前,强制让用户看一会儿广告。 在tauri中也有二种实
阅读全文
posted @ 2022-08-21 17:34
菩提树下的杨过
阅读(1986)
推荐(0)
摘要:

接上节继续,今天研究tauri中的多窗口,要实现多窗口有几种方式: 一、改配置tauri.conf.json 仍然以react项目模式为例,假设我们有2个页面效果: 在浏览器中运行起来长这样: tauri中,如果想开2个窗口,分别对应于这2个页面,可以参考下图配置: (关于windows节点下,具体
阅读全文
posted @ 2022-08-21 12:47
菩提树下的杨过
阅读(5387)
推荐(0)
摘要:

接上节继续,今天研究tauri中,前端如何调用Rust代码。 一、无返回值&无传参 main.rs中加1个hello方法: 然后在main方法中,参考下图暴露hello1: Rust代码准备好之后,前端(假设是react框架)就能调用了: import { invoke } from "@tauri
阅读全文
posted @ 2022-08-20 16:59
菩提树下的杨过
阅读(3140)
推荐(1)
摘要:

A链接的伪类visited在Tauri中不起作用的解决方案
阅读全文
posted @ 2022-08-15 23:28
菩提树下的杨过
阅读(951)
推荐(0)
摘要:

tauri是一个类似Electron的框架,对于开发者最大的区别是后端语言用的是Rust,而且生成的可执行程序更小
阅读全文
posted @ 2022-08-14 18:39
菩提树下的杨过
阅读(2261)
推荐(3)
摘要:

前言:WebAssembly(简称wasm)已经出来有几年了,在一些需要高性能的web应用场景中,wasm技术可以让代码执行效率大大提升。react做为目前大厂主流的前端框架之一,搭配上最近几年一直越来越火的Rust语言,可以很好的结合起来,形成wasm的解决方案。国外有高人给出了一篇详细的英文入门
阅读全文
posted @ 2022-08-14 11:37
菩提树下的杨过
阅读(3491)
推荐(0)
摘要:
背景:最近遇到1个项目,业务方调用了后端1个开销较大的接口,用于页面实时监控一些关键指标,页面是自动定时请求接口刷新数据,随着用户的增加,后端压力比较大,分析发现,很多用户日常使用过程中,并不是一直盯着屏幕看,有时候人离开了(比如下班),或者把监控页切到后台或最小化,干其它事去了,但是页面上的定时请
阅读全文
posted @ 2022-07-25 13:22
菩提树下的杨过
阅读(767)
推荐(0)
摘要:

字符串及常量池在面试中很容易被问到,前2天在为公司做校招面试时,发现很多同学对相关细节不太清楚,在此梳理一下: 先回顾一下java中字符串的设计,大家都知道jvm中有所谓的"字符串常量池"设计,当String s = "xxx"时,会先检查常量池中有没有,如果没有则加入常量池(缓存起来),下次再遇到
阅读全文
posted @ 2022-05-22 09:10
菩提树下的杨过
阅读(203)
推荐(2)
摘要:

日常开发中,经常用org.apache.commons.lang3.builder.ToStringBuilder工具类来记录日志,比如: package com.cnblogs.yjmyzz; import org.apache.commons.lang3.builder.ToStringBuil
阅读全文
posted @ 2022-05-08 07:46
菩提树下的杨过
阅读(982)
推荐(0)
摘要:

直接开干吧,假设有这么一个类: @Data @AllArgsConstructor class BeanSample { public Calendar birthday; @Override public String toString() { if (birthday == null) { re
阅读全文
posted @ 2022-04-20 22:29
菩提树下的杨过
阅读(612)
推荐(0)
摘要:

接上篇继续,记得小时候读书那会儿,还没有双减,每次考试完,大家最关心的就是全班的成绩分布,假如有下面一张成绩表: 老师们通常很快就会算出『平均分、总分』这些关键指标,然后各班之间,就开始攀比: 当然,这些在Excel里用SUM/AVERAGE函数,再结合自动填充很容易实现,pandas里要如何类似统
阅读全文
posted @ 2022-03-20 20:20
菩提树下的杨过
阅读(768)
推荐(0)
摘要:

接上篇继续,做数据分析,各种数据图表是必不可少的,还是以下面这张表为例: 一、单列柱状图 假设要把9月份,A、B这2个分类的Amount提取出来画一个柱状图,可以这么做: import pandas as pd import matplotlib.pyplot as plt df = pd.read
阅读全文
posted @ 2022-03-20 18:44
菩提树下的杨过
阅读(317)
推荐(0)
摘要:

接上篇继续 ,这回看下一些常用的操作: 一、join 联表查询 有数据库开发经验的同学,一定对sql中的join ... on 联表查询不陌生,pandas也有类似操作 假设test.xlsx的sheet1, sheet2中分别有下面的数据(相当于2张表) 现在要以ID做为作为Key,将二张表joi
阅读全文
posted @ 2022-03-19 22:24
菩提树下的杨过
阅读(470)
推荐(0)
摘要:

接上篇继续,本篇演示对excel的基本增删改查操作。 一、读取excel 1.1 常规读取 假设有以下excel文件: 002.xlsx 用pandas可以这样读取: import pandas as pd df = pd.read_excel("data/002.xlsx") print(df.s
阅读全文
posted @ 2022-03-13 22:05
菩提树下的杨过
阅读(854)
推荐(0)
摘要:

工作中经常会遇到一些excel的数据分析工作,虽然本身excel本身有非常强大的功能,但如果需要将一些数据分析结果集成在自己的项目中,excel就显示有些不方便了(总不能每次在excel里做好图表,再截图贴进来吧),幸好python的生态圈足够强大,有pandas这种利器,能以编程的方式,方便快捷的
阅读全文
posted @ 2022-03-13 16:35
菩提树下的杨过
阅读(577)
推荐(0)
摘要:

所有负载均衡的场景几乎都会用到这个算法:假设有2个服务器A、B,其中A的分配权重为80,B的分配权重为20,当有5个请求过来时,A希望分到4次,B希望分到1次。 一个很自然的想法:A-A-A-A-B ,按权重顺序依次分配,同时计数,每分配1次,计数减1,减到0后,再分配『次权重』的服务器。 看上去好
阅读全文
posted @ 2022-02-20 20:33
菩提树下的杨过
阅读(783)
推荐(3)
摘要:
中学时学习了三角函数,下面这类图象天天看也没啥特别感觉,但是对于数学大咖而言就不一样了: 傅里叶大神看到这些图象后,提出了一个重要思想:任何一个周期性的函数,都可以用一系列三角函数叠加模拟出来,比如: \[ f(x) = sin(x) + \frac{sin(3x)}{3} + \frac{sin(
阅读全文
posted @ 2022-02-05 22:43
菩提树下的杨过
阅读(576)
推荐(1)
摘要:

常用数学公式markdown示例
阅读全文
posted @ 2022-01-26 22:36
菩提树下的杨过
阅读(560)
推荐(1)
摘要:

接上一篇继续,今天来学习下如何用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
菩提树下的杨过
阅读(2927)
推荐(0)
摘要:

接上一篇继续,SSE也就是服务端推送技术,自html5推出以来基本上各大浏览器都已支持,axum自然也支持,参考下面的代码: async fn sse_handler( TypedHeader(user_agent): TypedHeader<headers::UserAgent>, ) -> Ss
阅读全文
posted @ 2022-01-23 23:01
菩提树下的杨过
阅读(1745)
推荐(0)
摘要:

接上一篇继续,静态资源比如css/js/jpg等,一般不需要服务端做额外的业务处理,直接透传给浏览器就行,axum可以指定将某个目录指定为静态资源,参考下面的代码: let app = Router::new() .nest( "/static", get_service(ServeDir::new
阅读全文
posted @ 2022-01-23 22:38
菩提树下的杨过
阅读(2183)
推荐(0)
摘要:

接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 1. 文件上传的大小限制 2. 文件上传的类型限制(仅限指定类型:比如图片) 3. 防止伪装mimetype进行攻击(比如:把.js文件改后缀变成.jpg
阅读全文
posted @ 2022-01-23 12:08
菩提树下的杨过
阅读(2478)
推荐(0)
摘要:

接上一篇继续,今天学习如何从Request请求中提取想要的内容,用axum里的概念叫Extract。 预备知识:json序列化/反序列化 鉴于现在web开发中,json格式被广泛使用,先熟悉下rust中如何进行json序列化/反序列化。 [dependencies] serde_json = "1"
阅读全文
posted @ 2022-01-01 23:03
菩提树下的杨过
阅读(3320)
推荐(0)
摘要:

上一篇的hello world里,示例过于简单,仅仅只是返回了一个字符串,实际上axum的response能返回各种格式,包括: plain_texthtmljsonhttp StatusCode...web开发中需要的各种格式,都能返回。talk is cheap ,show me the cod
阅读全文
posted @ 2021-12-26 22:52
菩提树下的杨过
阅读(3316)
推荐(0)
摘要:

axum是Rust生态的web框架新秀,虽然项目成立不久,但github上的star数已超2.8k,其底层依赖的是高性能的Tokio,Tokio这货就不多说了,借用知乎《深入浅出Rust异步编程之Tokio》上的一张图: Rust中的Tokio几乎是同类框架的性能天花板了,而axum在Tokio基础
阅读全文
posted @ 2021-12-26 21:05
菩提树下的杨过
阅读(5078)
推荐(0)
摘要:

最基本的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
菩提树下的杨过
阅读(843)
推荐(0)
摘要:

接上篇继续,贪吃蛇游戏中食物是不能缺少的,先来解决这个问题: 一、随机位置生成食物 use rand::prelude::random; ... struct Food; //随机位置生成食物 fn food_spawner( //<-- mut commands: Commands, materi
阅读全文
posted @ 2021-12-19 11:46
菩提树下的杨过
阅读(559)
推荐(0)
摘要:

bevy社区有一篇不错的入门教程:Creating a Snake Clone in Rust, with Bevy,详细讲解了贪吃蛇的开发过程,我加了一些个人理解,记录于此: 一、先搭一个"空"架子 1.1 Cargo.toml依赖项 [dependencies] bevy = { version
阅读全文
posted @ 2021-12-18 17:07
菩提树下的杨过
阅读(917)
推荐(0)
摘要:

bevy自带的画图功能有点弱,得先引入bevy_prototype_lyon, Cargo.toml依赖部分如下: [dependencies] bevy = { version = "0.5.0", features = ["dynamic"] } bevy_prototype_lyon = "0
阅读全文
posted @ 2021-12-14 09:42
菩提树下的杨过
阅读(895)
推荐(0)
摘要:

bevy是一个rust语言的跨平台游戏引擎,但是在windows10环境编译时,遇到问题无数,幸尽数解决,记录于此,供遇到同类问题的朋友参考: 环境:windows 10 + bevy 0.5.0 + rustup nightly版本 一、设置crates国内镜像 crates.io官网国内访问实在
阅读全文
posted @ 2021-12-11 15:01
菩提树下的杨过
阅读(867)
推荐(0)
摘要:

Result枚举在Rust中是使用频率极高的一个类型,常用于函数的返回值定义,其源码如下: #[derive(Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)] #[must_use = "this `Result` may be an `Err`
阅读全文
posted @ 2021-11-28 15:48
菩提树下的杨过
阅读(995)
推荐(0)
摘要:

一、let模式匹配 在其它一些语言中,let x = 5 之类的语句,仅仅只是赋值语句。但是在rust中,可以换个角度理解,认为5这个值匹配到了x变量。如果觉得有些牵强,可以再来一个示例: let (a,b)=(1,3); println!("{},{}",a,b); 上面的示例,表示(1,3)这个
阅读全文
posted @ 2021-11-28 14:20
菩提树下的杨过
阅读(540)
推荐(0)
摘要:

一、匿名函数 语法:“|参数名| 语句” 参考下面的这个示例: 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
菩提树下的杨过
阅读(1267)
推荐(0)
摘要:

java项目中用maven管理代码时,如果遇到大型工程,一般会拆分成不同的模块,比如spring-mvc中,通常会按model, view, controller建3个模块,然后根据一定的依赖关系进行引用。这个概念在Rust中是通用的,只不过maven换成了cargo,而模块变成了crate,看下面
阅读全文
posted @ 2021-11-21 21:56
菩提树下的杨过
阅读(574)
推荐(1)
摘要:

如上图,先初始化1个图,每条边上的红色数字为路径权重:(Node,Edge的定义参见算法练习(17)-图的广度优先遍历/深度优先遍历) Graph init() { List<Node> nodes = new ArrayList<>(); List<Edge> edges = new ArrayL
阅读全文
posted @ 2021-11-14 19:24
菩提树下的杨过
阅读(276)
推荐(0)
摘要:

一个示例就能看明白,关键处皆有注释,大致要点:impl 一个struct时,1.如果方法参数为&self,则为方法 ,可以用"对象实例.方法"来调用2.如果方法参数不是&self,则为函数,只能用"struct名::函数名"来调用 //类似java里的pojo类 struct Pet{ name:S
阅读全文
posted @ 2021-11-09 20:54
菩提树下的杨过
阅读(222)
推荐(0)