摘要: 一文看懂 JVM 内存布局及 GC 原理 注:本文篇幅较长,且需要有一定的java基础,建议各位看官,备好瓜子、饮料、小板凳,摆个让自己舒服的姿势,慢慢细看^_^, 文中素材均来自互联网(末尾有给出参考文章链接)。 一、JVM运行时内存布局 按java 8虚拟机规范的原始表达:(jvm)Run-Time Data Areas, 暂时翻译为" 阅读全文
posted @ 2019-06-11 14:20 菩提树下的杨过 阅读(5892) 评论(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 菩提树下的杨过 阅读(4122) 评论(2) 推荐(5) 编辑
摘要: babylon.js 学习笔记(9) 接上回继续,做为一个游戏引擎,怎能没有Sprite(精灵)? 下面是基本示例: const createScene = function () { const scene = new BABYLON.Scene(engine); const camera = new BABYLON.ArcRotat 阅读全文
posted @ 2023-06-04 15:39 菩提树下的杨过 阅读(6) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(8) 接上回继续,现在的村庄已经有点象样了,但是远处的背景仍比较单调(如下图),今天来学习如何处理天空背景。 babylon.js中,把整个空间假象成一个巨大的立方体(称为SkyBox),然后依次给立方体的6个面,贴上天空的背景图(如下图) 在代码中只要指定这6张图的rootUrl即可,babylon.j 阅读全文
posted @ 2023-06-04 10:55 菩提树下的杨过 阅读(7) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(7) 前面我们学习了如何画一堆房子(如下图),显然这单调的绿色大地,看上去效果并不好。 babylon.js中,可以用图片模拟出地势高低不同的效果,比如下面这张图片: 颜色越深的地方,表示地势越低(即:盆地),而颜色越浅的地方,地势越高(即:高山),可以参考下面的代码: const createScene 阅读全文
posted @ 2023-05-28 23:00 菩提树下的杨过 阅读(12) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(6) 接上回继续,今天继续捣腾动画,上一节咱们让汽车的轮子动了起来,回顾一下核心代码: //轮子转动 const wheelAnimation = (scene, wheels) => { //定义一个动画,每秒30帧,绕y轴转动 const animWheel = new BABYLON.Animati 阅读全文
posted @ 2023-05-28 15:10 菩提树下的杨过 阅读(22) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(5) 前面我们画的小房子,基本上都是用内置的标准形状组合而成,但并非所有对象都这么简单,今天我们来画一个小汽车,汽车由多个零件组成,控制这些零件的缩放、位置、旋转,如果每个都单独用代码来修改position/roration/scaling,未免太复杂,幸好babylon.js中,对象有所谓的child/ 阅读全文
posted @ 2023-05-21 22:01 菩提树下的杨过 阅读(11) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(4) 按上回继续,上节知道了如何用 『方块+三棱柱+贴图』结合起来,画一个简单的小房子,实际应用中可以把这3个打包在一起,组成1个house对象,这样更方便一些 const buildHouse = () => { const box1 = buildBox(); const roof1 = buildR 阅读全文
posted @ 2023-05-21 16:24 菩提树下的杨过 阅读(11) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(3) 一、理解babylon.js 坐标系 const createScene = function () { const scene = new BABYLON.Scene(engine); const camera = new BABYLON.ArcRotateCamera("camera", -Ma 阅读全文
posted @ 2023-05-20 15:23 菩提树下的杨过 阅读(16) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(2) 如何在网页中嵌入设计好的模型? 接上回继续,我们设计好精美的模型后,最终总要展示给客户,比如利用playground画了1个方块: const createScene = () => { const scene = new BABYLON.Scene(engine); const camera = 阅读全文
posted @ 2023-05-14 22:53 菩提树下的杨过 阅读(21) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(1) 简单来说,babylon.js 是一个能跑在浏览器上的(3D)游戏渲染引擎,而且官方提供了一个友好在线交互学习平台Playground,其开源项目在github上star数截止2023.05.14高达20.6K。下面是官方文档的学习笔记 : 一、hello world 强烈建议新手通过Playgro 阅读全文
posted @ 2023-05-14 15:44 菩提树下的杨过 阅读(36) 评论(0) 推荐(1) 编辑
摘要: java线程池使用小技巧:自定义拒绝策略 自定义java线程池拒绝策略,实现异常情况的监控埋点 阅读全文
posted @ 2023-03-12 16:10 菩提树下的杨过 阅读(369) 评论(0) 推荐(2) 编辑
摘要: java中如何处理夏令时? 在国际化的项目中,处理时间时经常会遇到夏令时(BST,British Summer Time)问题,发明夏令时(以及冬令时)主要是为了省电。 冷知识:中国历史上也曾经采用过(1986-1991)夏令时,后来因为各种原因,最终取消了这一制度(参见:https://baijiahao.baidu.com 阅读全文
posted @ 2022-11-13 14:57 菩提树下的杨过 阅读(959) 评论(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 菩提树下的杨过 阅读(349) 评论(0) 推荐(0) 编辑
摘要: tauri学习(7)-事件(event) 接上节继续,今天来研究tauri的事件(event),假设老板提了个需求,希望能实时监控cpu、内存等性能指标,你会怎么做? 思路1: 后端Rust暴露1个command,前端js不停去轮询(参考前文:tauri学习(3)-前端调用Rust代码),即传统的pull模型。 思路2: 后端不停对外喷数据 阅读全文
posted @ 2022-08-28 18:23 菩提树下的杨过 阅读(1264) 评论(0) 推荐(1) 编辑
摘要: tauri学习(6)-系统托盘systemTray 接上节继续,研究下系统托盘。 一、tauri.conf.json配置启用系统托盘 二、Rust中添加托盘 运行效果: 但是只有一个托盘图标,点了啥反应都没有。 三、给托盘加菜单 效果: 接下来,给托盘及托盘菜单添加事件响应: use tauri::{ CustomMenuItem, Manager, 阅读全文
posted @ 2022-08-21 18:48 菩提树下的杨过 阅读(723) 评论(0) 推荐(0) 编辑
摘要: tauri学习(5)-Splashscreen启动界面 接上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景: 1、程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑。 2、播放启动广告,手机应用上很常见,进入主程序前,强制让用户看一会儿广告。 在tauri中也有二种实 阅读全文
posted @ 2022-08-21 17:34 菩提树下的杨过 阅读(858) 评论(0) 推荐(0) 编辑
摘要: tauri学习(4)-多窗口 接上节继续,今天研究tauri中的多窗口,要实现多窗口有几种方式: 一、改配置tauri.conf.json 仍然以react项目模式为例,假设我们有2个页面效果: 在浏览器中运行起来长这样: tauri中,如果想开2个窗口,分别对应于这2个页面,可以参考下图配置: (关于windows节点下,具体 阅读全文
posted @ 2022-08-21 12:47 菩提树下的杨过 阅读(1552) 评论(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 菩提树下的杨过 阅读(1235) 评论(0) 推荐(1) 编辑
摘要: tauri学习(2)-a链接伪类visited失效问题 A链接的伪类visited在Tauri中不起作用的解决方案 阅读全文
posted @ 2022-08-15 23:28 菩提树下的杨过 阅读(336) 评论(0) 推荐(0) 编辑
摘要: tauri学习(1)-初体验 tauri是一个类似Electron的框架,对于开发者最大的区别是后端语言用的是Rust,而且生成的可执行程序更小 阅读全文
posted @ 2022-08-14 18:39 菩提树下的杨过 阅读(1401) 评论(0) 推荐(2) 编辑
摘要: react+rust+webAssembly(wasm)示例 前言:WebAssembly(简称wasm)已经出来有几年了,在一些需要高性能的web应用场景中,wasm技术可以让代码执行效率大大提升。react做为目前大厂主流的前端框架之一,搭配上最近几年一直越来越火的Rust语言,可以很好的结合起来,形成wasm的解决方案。国外有高人给出了一篇详细的英文入门 阅读全文
posted @ 2022-08-14 11:37 菩提树下的杨过 阅读(1194) 评论(0) 推荐(0) 编辑
摘要: 背景:最近遇到1个项目,业务方调用了后端1个开销较大的接口,用于页面实时监控一些关键指标,页面是自动定时请求接口刷新数据,随着用户的增加,后端压力比较大,分析发现,很多用户日常使用过程中,并不是一直盯着屏幕看,有时候人离开了(比如下班),或者把监控页切到后台或最小化,干其它事去了,但是页面上的定时请 阅读全文
posted @ 2022-07-25 13:22 菩提树下的杨过 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 面试中关于字符串及常量池的一些考点 字符串及常量池在面试中很容易被问到,前2天在为公司做校招面试时,发现很多同学对相关细节不太清楚,在此梳理一下: 先回顾一下java中字符串的设计,大家都知道jvm中有所谓的"字符串常量池"设计,当String s = "xxx"时,会先检查常量池中有没有,如果没有则加入常量池(缓存起来),下次再遇到 阅读全文
posted @ 2022-05-22 09:10 菩提树下的杨过 阅读(125) 评论(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 菩提树下的杨过 阅读(375) 评论(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 菩提树下的杨过 阅读(255) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(5)-快速分析平均值、总和 接上篇继续,记得小时候读书那会儿,还没有双减,每次考试完,大家最关心的就是全班的成绩分布,假如有下面一张成绩表: 老师们通常很快就会算出『平均分、总分』这些关键指标,然后各班之间,就开始攀比: 当然,这些在Excel里用SUM/AVERAGE函数,再结合自动填充很容易实现,pandas里要如何类似统 阅读全文
posted @ 2022-03-20 20:20 菩提树下的杨过 阅读(589) 评论(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 菩提树下的杨过 阅读(238) 评论(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 菩提树下的杨过 阅读(330) 评论(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 菩提树下的杨过 阅读(625) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(1)-环境搭建及excel读取 工作中经常会遇到一些excel的数据分析工作,虽然本身excel本身有非常强大的功能,但如果需要将一些数据分析结果集成在自己的项目中,excel就显示有些不方便了(总不能每次在excel里做好图表,再截图贴进来吧),幸好python的生态圈足够强大,有pandas这种利器,能以编程的方式,方便快捷的 阅读全文
posted @ 2022-03-13 16:35 菩提树下的杨过 阅读(345) 评论(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 菩提树下的杨过 阅读(315) 评论(0) 推荐(2) 编辑
摘要: 中学时学习了三角函数,下面这类图象天天看也没啥特别感觉,但是对于数学大咖而言就不一样了: 傅里叶大神看到这些图象后,提出了一个重要思想:任何一个周期性的函数,都可以用一系列三角函数叠加模拟出来,比如: \[ f(x) = sin(x) + \frac{sin(3x)}{3} + \frac{sin( 阅读全文
posted @ 2022-02-05 22:43 菩提树下的杨过 阅读(420) 评论(0) 推荐(0) 编辑
摘要: markdown常用数学公式 常用数学公式markdown示例 阅读全文
posted @ 2022-01-26 22:36 菩提树下的杨过 阅读(400) 评论(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 菩提树下的杨过 阅读(1377) 评论(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 菩提树下的杨过 阅读(838) 评论(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 菩提树下的杨过 阅读(825) 评论(0) 推荐(0) 编辑
摘要: Rust:axum学习笔记(4) 上传文件 接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 1. 文件上传的大小限制 2. 文件上传的类型限制(仅限指定类型:比如图片) 3. 防止伪装mimetype进行攻击(比如:把.js文件改后缀变成.jpg 阅读全文
posted @ 2022-01-23 12:08 菩提树下的杨过 阅读(1120) 评论(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 菩提树下的杨过 阅读(1593) 评论(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 菩提树下的杨过 阅读(1817) 评论(1) 推荐(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 菩提树下的杨过 阅读(3025) 评论(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 菩提树下的杨过 阅读(651) 评论(0) 推荐(0) 编辑