摘要: 一文看懂 JVM 内存布局及 GC 原理 注:本文篇幅较长,且需要有一定的java基础,建议各位看官,备好瓜子、饮料、小板凳,摆个让自己舒服的姿势,慢慢细看^_^, 文中素材均来自互联网(末尾有给出参考文章链接)。 一、JVM运行时内存布局 按java 8虚拟机规范的原始表达:(jvm)Run-Time Data Areas, 暂时翻译为" 阅读全文
posted @ 2019-06-11 14:20 菩提树下的杨过 阅读(6142) 评论(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 菩提树下的杨过 阅读(4404) 评论(2) 推荐(5) 编辑
摘要: 如何控制java虚拟线程的并发度? 本文用一个订单提交的示例,描述了如何在使用虚拟线程时,合理控制执行的并发数,防止把下游资源打爆 阅读全文
posted @ 2024-11-18 21:02 菩提树下的杨过 阅读(56) 评论(2) 推荐(1) 编辑
摘要: 1. cookie有2个版本(version 0与version 1),version 0最早是网景公司定的,比较保守,value值不能有特殊字符,比如 冒号之类的,象 GMT+05:30,在version 0下,取出来,就变成GMT+05,冒号后的:30丢了 2. java中目前支持的是 vers 阅读全文
posted @ 2024-05-17 16:56 菩提树下的杨过 阅读(111) 评论(0) 推荐(0) 编辑
摘要: FreeSwitch: esl 调用lua动态传参&日志查看 lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样: -- 主叫 local callernum = argv[1]; -- 被叫 local calleenum = argv[2]; freeswitch.consoleLog(" 阅读全文
posted @ 2024-01-15 09:59 菩提树下的杨过 阅读(334) 评论(2) 推荐(1) 编辑
摘要: FreeSwitch: esl inbound模式下外呼拨号 相信大家可能接到过一些电话,听上去不象是真人打过来的,比如:通知“您的信用卡到期了”,或者“您订的飞机航班取消了,请尽快改签或取消行程”,这种就是所谓的“自动外呼”系统,技术上讲,可以通过 esl inbound模式实现(注:对esl不熟悉的朋友,戳这里) 大概思路: 先把一些要外呼的任务计划,落地 阅读全文
posted @ 2024-01-13 17:17 菩提树下的杨过 阅读(373) 评论(0) 推荐(0) 编辑
摘要: FreeSwitch+lua实现IVR(互动式语音应答) IVR(Interactive Voice Response)交互式语言应答,是呼叫中心的1个经典应用场景,FreeSwitch官方有一个利用lua实现的简单示例,大致原理是利用lua脚本+TTS实现,记录一下:(环境:FreeSwitch 1.10.11 + Windows 10) 步骤1:安装T 阅读全文
posted @ 2024-01-13 15:32 菩提树下的杨过 阅读(352) 评论(0) 推荐(1) 编辑
摘要: FreeSwitch:群振、顺振研究 在呼叫中心系统中,有二类特殊的应用场景,即所谓的“群振”(也叫“共振”或“同振”)以及“顺振”。 群振的业务场景: 当客人电话进线时,希望呼叫中心的所有客服都能响应(即:假设呼叫中心有5个客服在接线,客人来电时,这5个客服的电话一起响),任何1个客服都可以接听(注:该客服接起来后,其它客服的分机就不 阅读全文
posted @ 2024-01-07 16:07 菩提树下的杨过 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 直接看官网文档 : https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format SpecifierDescription %a Abbreviated weekday name ( 阅读全文
posted @ 2023-11-15 13:35 菩提树下的杨过 阅读(1688) 评论(0) 推荐(0) 编辑
摘要: transformer小白入门 transformer库是huggingface发布的1个框架,非常好用,很多外行看起来高大上的问题,用它都可以轻松解决,先来看1个小例子: 一、情感分析 from transformers import pipeline classifier = pipeline('sentiment-analy 阅读全文
posted @ 2023-08-20 16:05 菩提树下的杨过 阅读(832) 评论(0) 推荐(0) 编辑
摘要: 利用text-generation-webui快速搭建chatGLM2/LLAMA2大模型运行环境 text-generation-webui 是一个基于Gradio的LLM Web UI开源项目,可以利用其快速搭建各种文本生成的大模型环境。 一、安装 text-generation-webui的readme其实已写得相当详细了,这里就不再重复,只说1个可能存在的坑: 安装 peft 安装卡住 r 阅读全文
posted @ 2023-08-19 17:51 菩提树下的杨过 阅读(3428) 评论(0) 推荐(0) 编辑
摘要: chatglm.cpp使用手记 目前绝大多数LLM模型都是python实现的,运行速度有限(包括ChatGLM2-6b),幸好有大神将其用C++重写了一遍,让运行速度大大提高。 项目地址:li-plus/chatglm.cpp: C++ implementation of ChatGLM-6B & ChatGLM2-6B (git 阅读全文
posted @ 2023-08-12 23:41 菩提树下的杨过 阅读(6063) 评论(1) 推荐(0) 编辑
摘要: windows WSL2避坑指南 对于不想安装windows/linux双系统的朋友来说,WSL2是不错的选择,但在使用过程中可能会遇到一些问题,以下是本人踩过的坑,记录于此: 一、安装前提 1.1 检测windows版本 windows10 版本必须高于 内部版本 19041 ,检测方法 :Ctrl+R,输入winver查看版本( 阅读全文
posted @ 2023-08-12 11:30 菩提树下的杨过 阅读(23930) 评论(5) 推荐(9) 编辑
摘要: ubuntu上搭建ChatGLM2-6b环境及ptuing微调训练的坑 清华大学的chatGLM2-6B可以说是目前亚洲唯一能打的对中文支持不错的LLM大模型,网上已经有很多介绍如何在本机搭建环境的文章,就不再重复了,这里记录下最近踩的一些坑: 1、为啥要使用ubuntu? chatGLM2-6b项目里有很多.sh文件,在windows下正常运行通常要折腾一番,最后能不 阅读全文
posted @ 2023-07-30 22:42 菩提树下的杨过 阅读(534) 评论(1) 推荐(1) 编辑
摘要: babylon.js 学习笔记(10) 今天来学习下车床(lathe)建型及粒子系统,babylon.js有一个很强大的函数CreateLathe,可以将一段路径经过旋转后,形成1个shape,这么说有点抽象,比如下面这张图: 其中的关键点坐标为: const fountainProfile = [ new BABYLON.Vector3 阅读全文
posted @ 2023-06-17 23:09 菩提树下的杨过 阅读(148) 评论(0) 推荐(0) 编辑
摘要: JDK17与Hbase client的兼容性问题 最近有1个项目升级到JDK17,里面用到了hbase-client(版本:以1.2.0-cdh5.7.1为基础,公司的大数据同学内部做了一些二次开发 ),启动时发现一直连不上集群,直接报错了,上hbase 官网看了下: 别说JDK 17了,连JDK11都支持不完善,难道把JDK版本又降回去?有点不甘 阅读全文
posted @ 2023-06-17 19:13 菩提树下的杨过 阅读(622) 评论(0) 推荐(0) 编辑
摘要: mybatis 3.x 升级时遇到的keyProperty问题小坑 背景: 有1个项目,原来是用的mybatis 3.4.6版本,其中有一些插入mapper是这样写的: Integer insertEntitySelectiveShard(@Param("tableSuffix") String tableSuffix,@Param("entity") XXXEnt 阅读全文
posted @ 2023-06-17 15:59 菩提树下的杨过 阅读(599) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(9) 接上回继续,做为一个游戏引擎,怎能没有Sprite(精灵)? 下面是基本示例: const createScene = function () { const scene = new BABYLON.Scene(engine); const camera = new BABYLON.ArcRotat 阅读全文
posted @ 2023-06-04 15:39 菩提树下的杨过 阅读(183) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(8) 接上回继续,现在的村庄已经有点象样了,但是远处的背景仍比较单调(如下图),今天来学习如何处理天空背景。 babylon.js中,把整个空间假象成一个巨大的立方体(称为SkyBox),然后依次给立方体的6个面,贴上天空的背景图(如下图) 在代码中只要指定这6张图的rootUrl即可,babylon.j 阅读全文
posted @ 2023-06-04 10:55 菩提树下的杨过 阅读(150) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(7) 前面我们学习了如何画一堆房子(如下图),显然这单调的绿色大地,看上去效果并不好。 babylon.js中,可以用图片模拟出地势高低不同的效果,比如下面这张图片: 颜色越深的地方,表示地势越低(即:盆地),而颜色越浅的地方,地势越高(即:高山),可以参考下面的代码: const createScene 阅读全文
posted @ 2023-05-28 23:00 菩提树下的杨过 阅读(150) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(6) 接上回继续,今天继续捣腾动画,上一节咱们让汽车的轮子动了起来,回顾一下核心代码: //轮子转动 const wheelAnimation = (scene, wheels) => { //定义一个动画,每秒30帧,绕y轴转动 const animWheel = new BABYLON.Animati 阅读全文
posted @ 2023-05-28 15:10 菩提树下的杨过 阅读(265) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(5) 前面我们画的小房子,基本上都是用内置的标准形状组合而成,但并非所有对象都这么简单,今天我们来画一个小汽车,汽车由多个零件组成,控制这些零件的缩放、位置、旋转,如果每个都单独用代码来修改position/roration/scaling,未免太复杂,幸好babylon.js中,对象有所谓的child/ 阅读全文
posted @ 2023-05-21 22:01 菩提树下的杨过 阅读(157) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(4) 按上回继续,上节知道了如何用 『方块+三棱柱+贴图』结合起来,画一个简单的小房子,实际应用中可以把这3个打包在一起,组成1个house对象,这样更方便一些 const buildHouse = () => { const box1 = buildBox(); const roof1 = buildR 阅读全文
posted @ 2023-05-21 16:24 菩提树下的杨过 阅读(133) 评论(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 菩提树下的杨过 阅读(291) 评论(0) 推荐(0) 编辑
摘要: babylon.js 学习笔记(2) 如何在网页中嵌入设计好的模型? 接上回继续,我们设计好精美的模型后,最终总要展示给客户,比如利用playground画了1个方块: const createScene = () => { const scene = new BABYLON.Scene(engine); const camera = 阅读全文
posted @ 2023-05-14 22:53 菩提树下的杨过 阅读(199) 评论(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 菩提树下的杨过 阅读(336) 评论(0) 推荐(1) 编辑
摘要: java线程池使用小技巧:自定义拒绝策略 自定义java线程池拒绝策略,实现异常情况的监控埋点 阅读全文
posted @ 2023-03-12 16:10 菩提树下的杨过 阅读(812) 评论(0) 推荐(2) 编辑
摘要: java中如何处理夏令时? 在国际化的项目中,处理时间时经常会遇到夏令时(BST,British Summer Time)问题,发明夏令时(以及冬令时)主要是为了省电。 冷知识:中国历史上也曾经采用过(1986-1991)夏令时,后来因为各种原因,最终取消了这一制度(参见:https://baijiahao.baidu.com 阅读全文
posted @ 2022-11-13 14:57 菩提树下的杨过 阅读(2304) 评论(1) 推荐(1) 编辑
摘要: 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 菩提树下的杨过 阅读(562) 评论(0) 推荐(0) 编辑
摘要: tauri学习(7)-事件(event) 接上节继续,今天来研究tauri的事件(event),假设老板提了个需求,希望能实时监控cpu、内存等性能指标,你会怎么做? 思路1: 后端Rust暴露1个command,前端js不停去轮询(参考前文:tauri学习(3)-前端调用Rust代码),即传统的pull模型。 思路2: 后端不停对外喷数据 阅读全文
posted @ 2022-08-28 18:23 菩提树下的杨过 阅读(2812) 评论(0) 推荐(1) 编辑
摘要: tauri学习(6)-系统托盘systemTray 接上节继续,研究下系统托盘。 一、tauri.conf.json配置启用系统托盘 二、Rust中添加托盘 运行效果: 但是只有一个托盘图标,点了啥反应都没有。 三、给托盘加菜单 效果: 接下来,给托盘及托盘菜单添加事件响应: use tauri::{ CustomMenuItem, Manager, 阅读全文
posted @ 2022-08-21 18:48 菩提树下的杨过 阅读(1882) 评论(0) 推荐(0) 编辑
摘要: tauri学习(5)-Splashscreen启动界面 接上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景: 1、程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑。 2、播放启动广告,手机应用上很常见,进入主程序前,强制让用户看一会儿广告。 在tauri中也有二种实 阅读全文
posted @ 2022-08-21 17:34 菩提树下的杨过 阅读(1773) 评论(0) 推荐(0) 编辑
摘要: tauri学习(4)-多窗口 接上节继续,今天研究tauri中的多窗口,要实现多窗口有几种方式: 一、改配置tauri.conf.json 仍然以react项目模式为例,假设我们有2个页面效果: 在浏览器中运行起来长这样: tauri中,如果想开2个窗口,分别对应于这2个页面,可以参考下图配置: (关于windows节点下,具体 阅读全文
posted @ 2022-08-21 12:47 菩提树下的杨过 阅读(4386) 评论(1) 推荐(0) 编辑
摘要: tauri学习(3)-前端调用Rust代码 接上节继续,今天研究tauri中,前端如何调用Rust代码。 一、无返回值&无传参 main.rs中加1个hello方法: 然后在main方法中,参考下图暴露hello1: Rust代码准备好之后,前端(假设是react框架)就能调用了: import { invoke } from "@tauri 阅读全文
posted @ 2022-08-20 16:59 菩提树下的杨过 阅读(2600) 评论(0) 推荐(1) 编辑
摘要: tauri学习(2)-a链接伪类visited失效问题 A链接的伪类visited在Tauri中不起作用的解决方案 阅读全文
posted @ 2022-08-15 23:28 菩提树下的杨过 阅读(648) 评论(0) 推荐(0) 编辑
摘要: tauri学习(1)-初体验 tauri是一个类似Electron的框架,对于开发者最大的区别是后端语言用的是Rust,而且生成的可执行程序更小 阅读全文
posted @ 2022-08-14 18:39 菩提树下的杨过 阅读(2088) 评论(0) 推荐(2) 编辑
摘要: react+rust+webAssembly(wasm)示例 前言:WebAssembly(简称wasm)已经出来有几年了,在一些需要高性能的web应用场景中,wasm技术可以让代码执行效率大大提升。react做为目前大厂主流的前端框架之一,搭配上最近几年一直越来越火的Rust语言,可以很好的结合起来,形成wasm的解决方案。国外有高人给出了一篇详细的英文入门 阅读全文
posted @ 2022-08-14 11:37 菩提树下的杨过 阅读(2703) 评论(0) 推荐(0) 编辑
摘要: 背景:最近遇到1个项目,业务方调用了后端1个开销较大的接口,用于页面实时监控一些关键指标,页面是自动定时请求接口刷新数据,随着用户的增加,后端压力比较大,分析发现,很多用户日常使用过程中,并不是一直盯着屏幕看,有时候人离开了(比如下班),或者把监控页切到后台或最小化,干其它事去了,但是页面上的定时请 阅读全文
posted @ 2022-07-25 13:22 菩提树下的杨过 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 面试中关于字符串及常量池的一些考点 字符串及常量池在面试中很容易被问到,前2天在为公司做校招面试时,发现很多同学对相关细节不太清楚,在此梳理一下: 先回顾一下java中字符串的设计,大家都知道jvm中有所谓的"字符串常量池"设计,当String s = "xxx"时,会先检查常量池中有没有,如果没有则加入常量池(缓存起来),下次再遇到 阅读全文
posted @ 2022-05-22 09:10 菩提树下的杨过 阅读(166) 评论(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 菩提树下的杨过 阅读(688) 评论(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 菩提树下的杨过 阅读(357) 评论(0) 推荐(0) 编辑
摘要: pandas速成笔记(5)-快速分析平均值、总和 接上篇继续,记得小时候读书那会儿,还没有双减,每次考试完,大家最关心的就是全班的成绩分布,假如有下面一张成绩表: 老师们通常很快就会算出『平均分、总分』这些关键指标,然后各班之间,就开始攀比: 当然,这些在Excel里用SUM/AVERAGE函数,再结合自动填充很容易实现,pandas里要如何类似统 阅读全文
posted @ 2022-03-20 20:20 菩提树下的杨过 阅读(720) 评论(0) 推荐(0) 编辑