JIT 编译(Just-In-Time Compilation)介绍

2025-4-15 diaba Java

JIT 编译 是 Java 虚拟机(JVM)的一项关键技术,用于在运行时将 Java 字节码(JVM 的中间表示)动态编译为本地机器码。这种编译方式可以在运行时优化代码性能,同时减少解释执行的开销。 背景 Java 是一种编译型和解释型相结合的语言。Java 源代码首先被编译为字节码(.class 文件),然后由 JVM 在运行时解释执行。虽然字节码的可移植性强,但解释执行的性能相对较低。为了提高性能,JVM 引入了 JIT 编译器,它会在运行时将热点代码(频繁执行的代码)编译为本地机器码,从而提高执行效率。 JIT 编译的工作原理 ...

阅读全文>>

标签: jdk性能优化

评论(0) 浏览(359)

LLM-prompt

2025-4-9 diaba LLM

服务端代码: 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_...

阅读全文>>

评论(0) 浏览(204)

LLM-聊天机器人

2025-4-9 diaba 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...

阅读全文>>

评论(0) 浏览(225)

进程、线程、协程

2025-3-28 diaba 多线程

1. 进程(Process) 定义:进程是操作系统分配资源的基本单位,是程序的一次执行实例。每个进程都有独立的内存空间、代码段、数据段等资源。 特点: 独立性:每个进程拥有独立的内存空间,进程之间的数据交换需要通过进程间通信(IPC)机制(如管道、消息队列、共享内存等)。 重量级:创建和销毁进程的开销较大,因为需要分配和回收大量资源。 隔离性:进程之间的隔离性较好,一个进程的崩溃不会影响其他进程。 适用场景:适合资源隔离要求高、任务...

阅读全文>>

评论(0) 浏览(240)

JVM内存管理

2025-3-19 diaba JVM

JVM(Java Virtual Machine)内存管理是Java程序运行的核心机制之一,它主要负责内存的分配、使用和回收。以下是关于JVM内存管理的详细介绍,包括内存区域划分、垃圾回收机制、内存分配策略等关键内容。 1. JVM内存区域划分 JVM内存主要分为以下几个区域: 1.1 程序计数器(Program Counter Register) 作用:记录当前线程所执行的字节码指令的地址。如果正在执行的是本地方法(Native Method),则程序计数器的值为undefined。 特点:线程私有,每个线程都有自己的...

阅读全文>>

标签: jvm

评论(0) 浏览(478)

Jstack 和 Jmap 的使用方法及 JVM 调优工具介绍

2025-3-16 diaba JVM

1. Jstack Jstack 是一个用于生成 Java 线程转储的工具,可以帮助开发者分析线程状态、死锁、性能瓶颈等问题。 常用命令 基本用法: jstack <pid> 这会打印指定进程的所有线程堆栈信息。 显示锁信息: jstack -l <pid> 该命令会显示线程堆栈以及锁的状态,有助于分析线程阻塞或死锁问题。 强制输出: jstack -F <...

阅读全文>>

评论(0) 浏览(523)

Go语言实现单例

2025-3-10 diaba Go

type Example struct{} var doOnce sync.Once var INSTANCE *Example func NewExample() *Example { doOnce.Do(func() { INSTANCE = &Example{} }) return INSTANCE }

阅读全文>>

评论(0) 浏览(405)

常见IO模型

2025-3-3 diaba 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

评论(0) 浏览(490)

RateLimiter代码中写限流

2025-2-22 diaba Java

RateLimiter 是 Guava 工具包中用于控制操作频率的工具,它基于令牌桶算法实现,能够限制代码的执行速率。以下是 RateLimiter 的使用方法和一些高级特性: 基本使用 RateLimiter 通过 RateLimiter.create(double permitsPerSecond) 方法创建,其中 permitsPerSecond 表示每秒允许的令牌数量。例如,创建一个每秒允许 2 个请求的 RateLimiter: RateLimiter rateLimiter = RateLimiter.create(2.0); ...

阅读全文>>

标签: 限流

评论(0) 浏览(461)

代码审查需要关注哪些方面问题?

2025-2-21 diaba 技术

代码审查(Code Review)是软件开发中一个非常重要的环节,它可以帮助发现潜在的缺陷、提升代码质量、促进团队知识共享。以下是代码审查通常关注的几个关键方面: **1. 代码的正确性(Correctness) 功能实现:代码是否正确实现了需求,是否满足功能规格说明。 逻辑错误:是否存在逻辑漏洞,例如条件判断错误、循环逻辑问题等。 边界条件处理:是否正确处理了边界条件和异常情况,例如空指针、空集合、边界值等。 数据处理:数据的读取...

阅读全文>>

标签: 代码审查 CodeReview

评论(0) 浏览(494)

【云】目前市场上主要的云服务厂商及其特点

2025-1-23 diaba 技术

国内云服务厂商 阿里云 特点:国内领先的云服务提供商,提供全面的云计算服务,包括IaaS、PaaS和SaaS。在云原生、大数据和人工智能领域具有较强的技术实力。 市场份额:在2024年上半年IaaS市场中排名第一,市场份额为25.8%。 华为云 特点:依托华为的技术优势,提供安全、可靠的云服务,尤其在企业级应用和混合云解决方案方面表现出色。 市场份额:在2024年上半年IaaS市场中排名第二,市场份额为13.4%。 腾讯云 ...

阅读全文>>

标签:

评论(0) 浏览(878)

Go-数组,切片,map

2022-10-3 diaba Go

一、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基础

评论(0) 浏览(1902)

JVM垃圾回收

2022-4-12 diaba JVM

怎么定义垃圾 引用计数法 循环引用问题(循环依赖问题) 可达性分析法 GC Roots 虚拟机栈(栈帧中的本地变量表)中应用的对象 方法区中类静态引用的对象 方法区中常量引用的对象 本地方发展中JNI引用的对象 怎么回收垃圾 标记-清除算法 步骤 ...

阅读全文>>

评论(0) 浏览(1492)

JUC-Semaphore

2022-3-13 diaba 多线程

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...

阅读全文>>

评论(0) 浏览(1379)

JUC-CyclicBarrier

2022-3-13 diaba 多线程

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...

阅读全文>>

评论(0) 浏览(1525)

JUC-CountDownLatch

2022-3-13 diaba 多线程

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) ...

阅读全文>>

评论(0) 浏览(1517)

java-nio-client聊天室客户端

2022-3-13 diaba IO

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...

阅读全文>>

评论(0) 浏览(1484)

java-nio-server聊天室服务端

2022-3-13 diaba IO

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 ...

阅读全文>>

评论(0) 浏览(1637)

开启三个线程打印ABC-synchronized锁和wait,notifyAll

2022-3-8 diaba 多线程

package com.jiucaiyuan.net.thread; /** * * 题目: * 编写程序,开启三个线程,这三个线程的ID分别是A,B,C,每个线程将自己的ID在屏幕上打印十次, * 要求输出结果必须按照ABC的顺序显示,如:ABCABCACB… * * 非指定线程唤醒。采用synchronized锁和wait,notifyAll配合使用。 * 这个方法有一个缺点,那就是notifyAll是唤醒其它两个线程, * 其它两个竞争获取锁会引起上下文切换,从而引起不必要的开销,因此,建议使用方法一。 * * */ class Pri...

阅读全文>>

评论(0) 浏览(1334)

【推荐】开启三个线程打印ABC-ReentrantLock+Condition

2022-3-8 diaba 多线程

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。 本...

阅读全文>>

评论(0) 浏览(1610)

Powered by emlog 京ICP备15045175号-1 Copyright © 2022