JIT 编译(Just-In-Time Compilation)介绍
JIT 编译 是 Java 虚拟机(JVM)的一项关键技术,用于在运行时将 Java 字节码(JVM 的中间表示)动态编译为本地机器码。这种编译方式可以在运行时优化代码性能,同时减少解释执行的开销。 背景 Java 是一种编译型和解释型相结合的语言。Java 源代码首先被编译为字节码(.class 文件),然后由 JVM 在运行时解释执行。虽然字节码的可移植性强,但解释执行的性能相对较低。为了提高性能,JVM 引入了 JIT 编译器,它会在运行时将热点代码(频繁执行的代码)编译为本地机器码,从而提高执行效率。 JIT 编译的工作原理 ...标签: jdk性能优化
LLM-prompt
服务端代码: import os from fastapi import FastAPI from langchain_core.messages import SystemMessage, HumanMessage from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langserve import add_...LLM-聊天机器人
import os from langchain_community.chat_message_histories import ChatMessageHistory from langchain_core.messages import HumanMessage from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnableWithMessageHistory from langchain_openai impor...进程、线程、协程
1. 进程(Process) 定义:进程是操作系统分配资源的基本单位,是程序的一次执行实例。每个进程都有独立的内存空间、代码段、数据段等资源。 特点: 独立性:每个进程拥有独立的内存空间,进程之间的数据交换需要通过进程间通信(IPC)机制(如管道、消息队列、共享内存等)。 重量级:创建和销毁进程的开销较大,因为需要分配和回收大量资源。 隔离性:进程之间的隔离性较好,一个进程的崩溃不会影响其他进程。 适用场景:适合资源隔离要求高、任务...JVM内存管理
JVM(Java Virtual Machine)内存管理是Java程序运行的核心机制之一,它主要负责内存的分配、使用和回收。以下是关于JVM内存管理的详细介绍,包括内存区域划分、垃圾回收机制、内存分配策略等关键内容。 1. JVM内存区域划分 JVM内存主要分为以下几个区域: 1.1 程序计数器(Program Counter Register) 作用:记录当前线程所执行的字节码指令的地址。如果正在执行的是本地方法(Native Method),则程序计数器的值为undefined。 特点:线程私有,每个线程都有自己的...标签: jvm
Jstack 和 Jmap 的使用方法及 JVM 调优工具介绍
1. Jstack Jstack 是一个用于生成 Java 线程转储的工具,可以帮助开发者分析线程状态、死锁、性能瓶颈等问题。 常用命令 基本用法: jstack <pid> 这会打印指定进程的所有线程堆栈信息。 显示锁信息: jstack -l <pid> 该命令会显示线程堆栈以及锁的状态,有助于分析线程阻塞或死锁问题。 强制输出: jstack -F <...Go语言实现单例
type Example struct{} var doOnce sync.Once var INSTANCE *Example func NewExample() *Example { doOnce.Do(func() { INSTANCE = &Example{} }) return INSTANCE }常见IO模型
常见的I/O模型主要有五种,分别是同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。以下是对这五种模型的详细介绍: 1. 同步阻塞I/O(Blocking I/O) 工作原理:当用户程序调用read函数读取数据时,如果数据尚未准备好,用户线程会被阻塞,直到数据准备好并被拷贝到用户空间。 优点:实现简单,挂起不占用CPU资源。 缺点:线程资源浪费,效率低下,因为线程在等待数据时不能做其他工作。 2. 同步非阻塞I/O(Non-Blocking I/O) 工作原理:允许用户...标签: IO
RateLimiter代码中写限流
RateLimiter 是 Guava 工具包中用于控制操作频率的工具,它基于令牌桶算法实现,能够限制代码的执行速率。以下是 RateLimiter 的使用方法和一些高级特性: 基本使用 RateLimiter 通过 RateLimiter.create(double permitsPerSecond) 方法创建,其中 permitsPerSecond 表示每秒允许的令牌数量。例如,创建一个每秒允许 2 个请求的 RateLimiter: RateLimiter rateLimiter = RateLimiter.create(2.0); ...标签: 限流
代码审查需要关注哪些方面问题?
代码审查(Code Review)是软件开发中一个非常重要的环节,它可以帮助发现潜在的缺陷、提升代码质量、促进团队知识共享。以下是代码审查通常关注的几个关键方面: **1. 代码的正确性(Correctness) 功能实现:代码是否正确实现了需求,是否满足功能规格说明。 逻辑错误:是否存在逻辑漏洞,例如条件判断错误、循环逻辑问题等。 边界条件处理:是否正确处理了边界条件和异常情况,例如空指针、空集合、边界值等。 数据处理:数据的读取...标签: 代码审查 CodeReview
【云】目前市场上主要的云服务厂商及其特点
国内云服务厂商 阿里云 特点:国内领先的云服务提供商,提供全面的云计算服务,包括IaaS、PaaS和SaaS。在云原生、大数据和人工智能领域具有较强的技术实力。 市场份额:在2024年上半年IaaS市场中排名第一,市场份额为25.8%。 华为云 特点:依托华为的技术优势,提供安全、可靠的云服务,尤其在企业级应用和混合云解决方案方面表现出色。 市场份额:在2024年上半年IaaS市场中排名第二,市场份额为13.4%。 腾讯云 ...标签: 云
Go-数组,切片,map
一、Array(数组) 数组是具有相同数据类型的元素组成的一组长度固定的序列,数组的长度不可变化,数组元素是可修改的。 1.1、声明 数组声明需要指定组成元素的类型以及元素的个数(长度),长度是数组类型的一部分,数组被声明后,数组长度不可修改,数组元素会根据对应类型的零值进行初始化。 var name [4]string var age [3]int fmt.Println(name) // [ ] fmt.Println(name) // [0 0 0] 1.2、字面量 在声明时初始化值 var name [3]str...标签: go基础
JVM垃圾回收
怎么定义垃圾 引用计数法 循环引用问题(循环依赖问题) 可达性分析法 GC Roots 虚拟机栈(栈帧中的本地变量表)中应用的对象 方法区中类静态引用的对象 方法区中常量引用的对象 本地方发展中JNI引用的对象 怎么回收垃圾 标记-清除算法 步骤 ...JUC-Semaphore
package com.jiucaiyuan.net.juc.lock; import java.util.Random; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; /** * 信号灯(许可数量) * 6辆车,3个车位 * @Author jiucaiyuan 2022/3/13 22:57 * @mail services@jiucaiyuan.net */ public class SemaphoreDemo { publ...JUC-CyclicBarrier
package com.jiucaiyuan.net.juc.lock; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; /** * 循环栅栏 * 集齐7龙珠召唤神龙 * * @Author jiucaiyuan 2022/3/13 22:48 * @mail services@jiucaiyuan.net */ public class CyclicBarrierDemo { public sta...JUC-CountDownLatch
package com.jiucaiyuan.net.juc.lock; import java.util.concurrent.CountDownLatch; /** * 演示CountDownLatch * 6个同学陆续离开教室之后,班长才能锁门 * * @Author jiucaiyuan 2022/3/13 22:40 * @mail services@jiucaiyuan.net */ public class CountDownLatchDemo { public static void main(String[] args) ...java-nio-client聊天室客户端
package com.jiucaiyuan.net.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; import java.util.Scanner; /** * @Author jiucaiyuan 2022/3/13 11:04 * @mail services@jiucaiyuan.net */ public class Cl...java-nio-server聊天室服务端
package com.jiucaiyuan.net.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import ...开启三个线程打印ABC-synchronized锁和wait,notifyAll
package com.jiucaiyuan.net.thread; /** * * 题目: * 编写程序,开启三个线程,这三个线程的ID分别是A,B,C,每个线程将自己的ID在屏幕上打印十次, * 要求输出结果必须按照ABC的顺序显示,如:ABCABCACB… * * 非指定线程唤醒。采用synchronized锁和wait,notifyAll配合使用。 * 这个方法有一个缺点,那就是notifyAll是唤醒其它两个线程, * 其它两个竞争获取锁会引起上下文切换,从而引起不必要的开销,因此,建议使用方法一。 * * */ class Pri...【推荐】开启三个线程打印ABC-ReentrantLock+Condition
package com.jiucaiyuan.net.thread; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; /** * <p> * 题目: * 编写程序,开启三个线程,这三个线程的ID分别是A,B,C,每个线程将自己的ID在屏幕上打印十次, * 要求输出结果必须按照ABC的顺序显示,如:ABCABCABC... * * 指定线程唤醒轮循打印,使用ReentrantLock和Condition。 本...日历
个人资料

diaba 寻求合作请留言或联系mail: services@jiucaiyuan.net
链接
最新文章
存档
- 2025年4月(17)
- 2025年3月(25)
- 2025年2月(20)
- 2025年1月(2)
- 2024年10月(1)
- 2024年8月(2)
- 2024年6月(4)
- 2024年5月(1)
- 2023年7月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(11)
- 2022年5月(6)
- 2022年4月(33)
- 2022年3月(26)
- 2021年3月(1)
- 2020年9月(2)
- 2018年8月(1)
- 2018年3月(1)
- 2017年3月(3)
- 2017年2月(6)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(1)
- 2016年9月(3)
- 2016年8月(4)
- 2016年7月(3)
- 2016年6月(4)
- 2016年5月(7)
- 2016年4月(9)
- 2016年3月(4)
- 2016年2月(5)
- 2016年1月(17)
- 2015年12月(15)
- 2015年11月(11)
- 2015年10月(6)
- 2015年9月(11)
- 2015年8月(8)
分类
热门文章
- SpringMVC:Null ModelAndView returned to DispatcherServlet with name 'applicationContext': assuming HandlerAdapter completed request handling
- Mac-删除卸载GlobalProtect
- java.lang.SecurityException: JCE cannot authenticate the provider BC
- MyBatis-Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}
- Idea之支持lombok编译
标签
最新评论
- logisqykyk
Javassist分析、编辑和创建jav... - xxedgtb
Redis—常见参数配置 - 韭菜园 ... - wdgpjxydo
SpringMVC:Null Model... - rllzzwocp
Mysql存储引擎MyISAM和Inno... - dpkgmbfjh
SpringMVC:Null Model... - tzklbzpj
SpringMVC:Null Model... - bqwrhszmo
MyBatis-Improper inl... - 乐谱吧
good非常好 - diaba
@diaba:应该说是“时间的度量依据”... - diaba
如果速度增加接近光速、等于光速、甚至大于...
最新微语
- 在每件事情上花费的东西,就是生命的一部分,而我们花费的这些东西要求立即得到回报,或者在一个长时间以后得到回报。
2025-01-23 15:46
- 诺曼·文森特说:“并不是你认为自己是什么样的人,你就是什么样的人。但是你的思想是什么样,你就是什么样的人。”
2025-01-23 15:44
- 从今天起,做一个幸福的人。喂马,砍柴,(思想)周游世界
2022-03-21 23:31
- 2022.03.02 23:37:59
2022-03-02 23:38
- 几近崩溃后,找到解决方法,总是那么豁然开朗!所以遇到问题要坚持!
2018-07-18 10:49