摘要: 一文看懂 JVM 内存布局及 GC 原理 注:本文篇幅较长,且需要有一定的java基础,建议各位看官,备好瓜子、饮料、小板凳,摆个让自己舒服的姿势,慢慢细看^_^, 文中素材均来自互联网(末尾有给出参考文章链接)。 一、JVM运行时内存布局 按java 8虚拟机规范的原始表达:(jvm)Run-Time Data Areas, 暂时翻译为" 阅读全文
posted @ 2019-06-11 14:20 菩提树下的杨过 阅读(5692) 评论(5) 推荐(11) 编辑
摘要: java:线上问题排查常用手段 一、jmap找出占用内存较大的实例 先给个示例代码: import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; /** * Created by 菩提树下的杨过 on 阅读全文
posted @ 2017-09-07 11:43 菩提树下的杨过 阅读(3974) 评论(2) 推荐(5) 编辑
摘要: java中如何处理夏令时? 在国际化的项目中,处理时间时经常会遇到夏令时(BST,British Summer Time)问题,发明夏令时(以及冬令时)主要是为了省电。 冷知识:中国历史上也曾经采用过(1986-1991)夏令时,后来因为各种原因,最终取消了这一制度(参见:https://baijiahao.baidu.com 阅读全文
posted @ 2022-11-13 14:57 菩提树下的杨过 阅读(68) 评论(0) 推荐(0) 编辑
摘要: Rust常用并发示例代码 记录几个常用的并发用法: 1、如何让线程只创建1次 先看一段熟悉的java代码: void method1() { new Thread(() -> { while (true) { System.out.println(String.format("thread-id:%s,timestamp:% 阅读全文
posted @ 2022-09-04 16:14 菩提树下的杨过 阅读(138) 评论(0) 推荐(0) 编辑
摘要: tauri学习(7)-事件(event) 接上节继续,今天来研究tauri的事件(event),假设老板提了个需求,希望能实时监控cpu、内存等性能指标,你会怎么做? 思路1: 后端Rust暴露1个command,前端js不停去轮询(参考前文:tauri学习(3)-前端调用Rust代码),即传统的pull模型。 思路2: 后端不停对外喷数据 阅读全文
posted @ 2022-08-28 18:23 菩提树下的杨过 阅读(488) 评论(0) 推荐(0) 编辑
摘要: tauri学习(6)-系统托盘systemTray 接上节继续,研究下系统托盘。 一、tauri.conf.json配置启用系统托盘 二、Rust中添加托盘 运行效果: 但是只有一个托盘图标,点了啥反应都没有。 三、给托盘加菜单 效果: 接下来,给托盘及托盘菜单添加事件响应: use tauri::{ CustomMenuItem, Manager, 阅读全文
posted @ 2022-08-21 18:48 菩提树下的杨过 阅读(293) 评论(0) 推荐(0) 编辑
摘要: tauri学习(5)-Splashscreen启动界面 接上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景: 1、程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑。 2、播放启动广告,手机应用上很常见,进入主程序前,强制让用户看一会儿广告。 在tauri中也有二种实 阅读全文
posted @ 2022-08-21 17:34 菩提树下的杨过 阅读(317) 评论(0) 推荐(0) 编辑
摘要: tauri学习(4)-多窗口 接上节继续,今天研究tauri中的多窗口,要实现多窗口有几种方式: 一、改配置tauri.conf.json 仍然以react项目模式为例,假设我们有2个页面效果: 在浏览器中运行起来长这样: tauri中,如果想开2个窗口,分别对应于这2个页面,可以参考下图配置: (关于windows节点下,具体 阅读全文
posted @ 2022-08-21 12:47 菩提树下的杨过 阅读(638) 评论(0) 推荐(0) 编辑
摘要: tauri学习(3)-前端调用Rust代码 接上节继续,今天研究tauri中,前端如何调用Rust代码。 一、无返回值&无传参 main.rs中加1个hello方法: 然后在main方法中,参考下图暴露hello1: Rust代码准备好之后,前端(假设是react框架)就能调用了: import { invoke } from "@tauri 阅读全文
posted @ 2022-08-20 16:59 菩提树下的杨过 阅读(463) 评论(0) 推荐(1) 编辑
摘要: tauri学习(2)-a链接伪类visited失效问题 A链接的伪类visited在Tauri中不起作用的解决方案 阅读全文
posted @ 2022-08-15 23:28 菩提树下的杨过 阅读(163) 评论(0) 推荐(0) 编辑
摘要: tauri学习(1)-初体验 tauri是一个类似Electron的框架,对于开发者最大的区别是后端语言用的是Rust,而且生成的可执行程序更小 阅读全文
posted @ 2022-08-14 18:39 菩提树下的杨过 阅读(590) 评论(0) 推荐(2) 编辑
摘要: react+rust+webAssembly(wasm)示例 前言:WebAssembly(简称wasm)已经出来有几年了,在一些需要高性能的web应用场景中,wasm技术可以让代码执行效率大大提升。react做为目前大厂主流的前端框架之一,搭配上最近几年一直越来越火的Rust语言,可以很好的结合起来,形成wasm的解决方案。国外有高人给出了一篇详细的英文入门 阅读全文
posted @ 2022-08-14 11:37 菩提树下的杨过 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 背景:最近遇到1个项目,业务方调用了后端1个开销较大的接口,用于页面实时监控一些关键指标,页面是自动定时请求接口刷新数据,随着用户的增加,后端压力比较大,分析发现,很多用户日常使用过程中,并不是一直盯着屏幕看,有时候人离开了(比如下班),或者把监控页切到后台或最小化,干其它事去了,但是页面上的定时请 阅读全文
posted @ 2022-07-25 13:22 菩提树下的杨过 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 面试中关于字符串及常量池的一些考点 字符串及常量池在面试中很容易被问到,前2天在为公司做校招面试时,发现很多同学对相关细节不太清楚,在此梳理一下: 先回顾一下java中字符串的设计,大家都知道jvm中有所谓的"字符串常量池"设计,当String s = "xxx"时,会先检查常量池中有没有,如果没有则加入常量池(缓存起来),下次再遇到 阅读全文
posted @ 2022-05-22 09:10 菩提树下的杨过 阅读(99) 评论(4) 推荐(2) 编辑
摘要: ToStringBuilder如何忽略null和空字符串 日常开发中,经常用org.apache.commons.lang3.builder.ToStringBuilder工具类来记录日志,比如: package com.cnblogs.yjmyzz; import org.apache.commons.lang3.builder.ToStringBuil 阅读全文
posted @ 2022-05-08 07:46 菩提树下的杨过 阅读(135) 评论(0) 推荐(0) 编辑
摘要: Gson如何自定义Calendar序列化/反序列化 直接开干吧,假设有这么一个类: @Data @AllArgsConstructor class BeanSample { public Calendar birthday; @Override public String toString() { if (birthday == null) { re 阅读全文
posted @ 2022-04-20 22:29 菩提树下的杨过 阅读(175) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(5)-快速分析平均值、总和 接上篇继续,记得小时候读书那会儿,还没有双减,每次考试完,大家最关心的就是全班的成绩分布,假如有下面一张成绩表: 老师们通常很快就会算出『平均分、总分』这些关键指标,然后各班之间,就开始攀比: 当然,这些在Excel里用SUM/AVERAGE函数,再结合自动填充很容易实现,pandas里要如何类似统 阅读全文
posted @ 2022-03-20 20:20 菩提树下的杨过 阅读(353) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(4)-数据图表 接上篇继续,做数据分析,各种数据图表是必不可少的,还是以下面这张表为例: 一、单列柱状图 假设要把9月份,A、B这2个分类的Amount提取出来画一个柱状图,可以这么做: import pandas as pd import matplotlib.pyplot as plt df = pd.read 阅读全文
posted @ 2022-03-20 18:44 菩提树下的杨过 阅读(184) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(3)-join/groupby/sort/行列转换 接上篇继续 ,这回看下一些常用的操作: 一、join 联表查询 有数据库开发经验的同学,一定对sql中的join ... on 联表查询不陌生,pandas也有类似操作 假设test.xlsx的sheet1, sheet2中分别有下面的数据(相当于2张表) 现在要以ID做为作为Key,将二张表joi 阅读全文
posted @ 2022-03-19 22:24 菩提树下的杨过 阅读(221) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(2)-excel增删改查基本操作 接上篇继续,本篇演示对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 菩提树下的杨过 阅读(524) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(1)-环境搭建及excel读取 工作中经常会遇到一些excel的数据分析工作,虽然本身excel本身有非常强大的功能,但如果需要将一些数据分析结果集成在自己的项目中,excel就显示有些不方便了(总不能每次在excel里做好图表,再截图贴进来吧),幸好python的生态圈足够强大,有pandas这种利器,能以编程的方式,方便快捷的 阅读全文
posted @ 2022-03-13 16:35 菩提树下的杨过 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 算法练习(20)-平滑加权轮询算法 所有负载均衡的场景几乎都会用到这个算法:假设有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 菩提树下的杨过 阅读(164) 评论(0) 推荐(2) 编辑
摘要: 中学时学习了三角函数,下面这类图象天天看也没啥特别感觉,但是对于数学大咖而言就不一样了: 傅里叶大神看到这些图象后,提出了一个重要思想:任何一个周期性的函数,都可以用一系列三角函数叠加模拟出来,比如: \[ f(x) = sin(x) + \frac{sin(3x)}{3} + \frac{sin( 阅读全文
posted @ 2022-02-05 22:43 菩提树下的杨过 阅读(315) 评论(0) 推荐(0) 编辑
摘要: markdown常用数学公式 常用数学公式markdown示例 阅读全文
posted @ 2022-01-26 22:36 菩提树下的杨过 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 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 菩提树下的杨过 阅读(864) 评论(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 菩提树下的杨过 阅读(535) 评论(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 菩提树下的杨过 阅读(477) 评论(0) 推荐(0) 编辑
摘要: Rust:axum学习笔记(4) 上传文件 接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 1. 文件上传的大小限制 2. 文件上传的类型限制(仅限指定类型:比如图片) 3. 防止伪装mimetype进行攻击(比如:把.js文件改后缀变成.jpg 阅读全文
posted @ 2022-01-23 12:08 菩提树下的杨过 阅读(649) 评论(0) 推荐(0) 编辑
摘要: Rust:axum学习笔记(3) extract&#160; 接上一篇继续,今天学习如何从Request请求中提取想要的内容,用axum里的概念叫Extract。 预备知识:json序列化/反序列化 鉴于现在web开发中,json格式被广泛使用,先熟悉下rust中如何进行json序列化/反序列化。 [dependencies] serde_json = "1" 阅读全文
posted @ 2022-01-01 23:03 菩提树下的杨过 阅读(1039) 评论(0) 推荐(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 菩提树下的杨过 阅读(1175) 评论(0) 推荐(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 菩提树下的杨过 阅读(2014) 评论(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 菩提树下的杨过 阅读(503) 评论(0) 推荐(0) 编辑
摘要: Rust: 如何用bevy写一个贪吃蛇(下) 接上篇继续,贪吃蛇游戏中食物是不能缺少的,先来解决这个问题: 一、随机位置生成食物 use rand::prelude::random; ... struct Food; //随机位置生成食物 fn food_spawner( //<-- mut commands: Commands, materi 阅读全文
posted @ 2021-12-19 11:46 菩提树下的杨过 阅读(259) 评论(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 菩提树下的杨过 阅读(368) 评论(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 菩提树下的杨过 阅读(513) 评论(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 菩提树下的杨过 阅读(335) 评论(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 菩提树下的杨过 阅读(526) 评论(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 菩提树下的杨过 阅读(385) 评论(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 菩提树下的杨过 阅读(542) 评论(0) 推荐(0) 编辑
摘要: Rust中的workspace java项目中用maven管理代码时,如果遇到大型工程,一般会拆分成不同的模块,比如spring-mvc中,通常会按model, view, controller建3个模块,然后根据一定的依赖关系进行引用。这个概念在Rust中是通用的,只不过maven换成了cargo,而模块变成了crate,看下面 阅读全文
posted @ 2021-11-21 21:56 菩提树下的杨过 阅读(384) 评论(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 菩提树下的杨过 阅读(190) 评论(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 菩提树下的杨过 阅读(139) 评论(0) 推荐(0) 编辑