用Java复刻《天天酷跑》!零基础游戏开发实战(附避坑指南)

ChatTTS本地语音克隆:4GB显存离线部署实战指南 语音克隆是将文本转化为特定人声的关键技术,其核心在于音色表征与端到端声学建模。传统方案依赖云端API和大模型,存在隐私泄露、网络延迟与授权风险;而本地部署语音克隆通过轻量扩散模型与统计量音色编码,在低资源设备上实现可控、可验证的语音生成。ChatTTS采用并行扩散架构与梅尔谱统计条件注入,显著降低显存占用与推理延迟,支持Windows下4GB显存离线运行,兼顾中文韵律适配与小样本鲁棒性。适用于有声读物制作、无障碍交互、企业IVR定制等对数据主权与实时性要求高的场景。 阅读详情

为什么用游戏项目学Java?(真香警告!)

刚学完Java语法就迷茫?if/else、for循环都在作业里见过,但真实项目长什么样完全没概念!!!(是不是你?)与其对着控制台打印三角形发呆,不如跟我用2天时间做个横版跑酷游戏!这可不是玩具项目,你将真实接触到:

  1. 面向对象:游戏角色/障碍物都用类实现
  2. 多线程:画面刷新与逻辑处理分离
  3. 集合框架:管理不断生成的障碍物
  4. 异常处理:别让程序轻易崩溃(程序员的面子不能丢啊~)

一、搭框架:从空白窗口到游戏场景

1.1 创建游戏窗口(javax.swing真方便!)

JFrame frame = new JFrame("Java版天天酷跑");
frame.setSize(800, 600);  // 不要超过屏幕分辨率(血泪教训!)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

避坑点:一定要在EDT线程操作UI!不然会出现灵异闪烁:

SwingUtilities.invokeLater(() -> frame.setVisible(true));

1.2 画布绘制:主角的第一次亮相

继承JPanel重写paint方法,画出我们的主角:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(Color.BLUE);
    g.fillOval(x, y, 40, 40); // 先画个圆,后面换图片
}

(小技巧)用双缓冲避免闪屏:

// 在构造函数中加入
setDoubleBuffered(true); 

二、搞定游戏循环:让世界动起来🌍

2.1 游戏循环就是"心脏"

new Thread(() -> {
    while (running) {
        update();   // 更新逻辑
        repaint();  // 重绘画面
        try {
            Thread.sleep(30); // 约30帧/秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}).start();

重点:一定要在独立线程运行循环!否则界面会卡成PPT(别问我怎么知道的😭)

2.2 让角色动起来:键盘事件处理

给窗口添加监听器:

frame.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SPACE) {
            jump(); // 跳跃物理逻辑在下一节
        }
    }
});

三、跳跃物理:别做"牛顿的叛徒"📐

3.1 跳跃轨迹模拟

void update() {
    if (isJumping) {
        velocity += gravity; // 速度受重力影响
        y += velocity;
        
        if (y > groundY) { // 落地检测
            y = groundY;
            isJumping = false;
        }
    }
}

(实测参数)让跳跃手感更真实:

double jumpVelocity = -15; // 初始速度
double gravity = 0.5;      // 重力加速度

四、增加难度:随机生成障碍物🎲

4.1 使用ArrayList管理障碍物

List<Obstacle> obstacles = new ArrayList<>();

// 每隔1秒生成新障碍
new Timer(1000, e -> {
    obstacles.add(new Obstacle());
}).start();

4.2 障碍物类设计

class Obstacle {
    int x = 800;         // 从右侧进入
    int type = random.nextInt(3); // 0-2种类型
    boolean passed;     // 是否已被越过
}

五、碰撞检测:精确到像素级💥

5.1 矩形检测法(基础版)

boolean checkCollision() {
    Rectangle playerRect = new Rectangle(x, y, 40, 40);
    
    for (Obstacle obs : obstacles) {
        Rectangle obsRect = new Rectangle(obs.x, 0, 50, 50);
        if (playerRect.intersects(obsRect)) {
            return true;
        }
    }
    return false;
}

5.2 精确到图像透明区域(进阶)

// 获取两个图像的像素数据
BufferedImage img1 = ...;
BufferedImage img2 = ...;

for (int i = 0; i < img1.getWidth(); i++) {
    for (int j = 0; j < img1.getHeight(); j++) {
        int rgb1 = img1.getRGB(i, j);
        int rgb2 = img2.getRGB(x+i, y+j);
        
        // 检查alpha通道是否重叠
        if ((rgb1 & 0xFF000000) != 0 && 
            (rgb2 & 0xFF000000) != 0) {
            return true;
        }
    }
}

六、项目扩展方向(发挥你的创意!)

  • 添加金币收集系统(用接口实现可收集物)
  • 引入不同角色皮肤(学习资源加载)
  • 实现网络排行榜(尝试Socket编程)
  • 增加技能系统(状态模式实战)

遇到的坑比代码还多?(你不是一个人!)

  1. 画面撕裂:忘记双缓冲导致的
  2. 跳跃手感怪异:重力参数调试了2小时
  3. 碰撞检测不准:矩形检测的精度问题
  4. 内存泄漏:障碍物移除不及时(ArrayList要定期清理!)

资源包说明(解压后直接运行)

  • /images :角色、障碍物素材
  • /sounds :跳跃、碰撞音效
  • GameCore.java :核心逻辑类
  • 注意JDK版本要求17+

写完这个项目后突然发现:原来Java还能这么有趣! 那些枯燥的抽象类、接口,在让角色跳起的那一刻突然有了灵魂。如果你在实现过程中卡住,记住:每个error都是升级的机会!遇到问题欢迎在评论区交流~(当然要先自己查文档哦)

Qwen与Llama选型避坑指南:任务-模型-部署铁三角决策法 开源大模型选型本质是工程约束下的技术适配问题。理解Qwen和Llama的核心差异,需从基础概念切入:二者同属Transformer架构的因果语言模型,但训练目标、语料分布与设计哲学迥异——Qwen聚焦中文长文本语义连贯与政企合规,Llama强调英文生态通用性与研究可扩展性。其技术价值不在于参数大小或榜单分数,而在于推理延迟、量化兼容性、许可证自由度等真实部署指标。典型应用场景包括智能客服(低延迟指令遵循)、财报分析(高精度中文理解)、代码生成(代码语料密度)及信创环境落地(Apache 2.0 vs Met 阅读详情

相关推荐

遗传算法工程实践:从原理到稳定收敛的调参指南

遗传算法(GA)是一种经典的无梯度全局优化方法,其核心在于模拟自然进化过程实现解空间搜索。但实际应用中,单纯理解选择、交叉、变异等基本原理远不足以保障收敛性与稳定性——真正决定效果的是参数配置、编码策略、适应度设计等工程细节。本文围绕种群规模设定、自适应变异机制、锦标赛选择压力控制、LHS初始化及多样性监控等关键技术点展开,结合Rastrigin、Schwefel等标准测试函数与物流调度、温控优化等真实场景,揭示‘为什么0.85交叉率比0.9更稳’‘为何精英保留需慎用’等高频痛点背后的量化逻辑。面向需要将G

wangqiaowqo的专栏 509

用Java复刻天天酷跑!零基础也能玩转的练手项目(附完整代码解析)

刚学完Java基础就做游戏?是不是有点天方夜谭?(完全不是!)其实用JavaSE实现2D小游戏,是检验基础语法最好的试金石!面向对象编程思想(OOP)Swing图形界面开发多线程控制集合框架应用事件监听机制更重要的是——做出能跑起来的游戏真的超!级!有!成!就!感!(相信我,第一次看到自己写的角色跳起来时,你会激动得拍桌子)Java高级特性:反射、注解、泛型设计模式:观察者模式(用于游戏事件通知)、状态模式(角色状态管理)游戏框架:libGDX引擎开发更复杂的游戏项目重构。

datadigital的博客 2294

Java Swing学生管理系统:从GUI到分层架构的完整实战指南

Java GUI编程常从Swing框架起步,而学生管理系统作为最经典的练手项目,完整串联了面向对象设计、事件驱动机制与数据持久化等核心原理。这类系统以增删改查为业务主线,通过分层架构(界面层、业务层、数据访问层)实现模块解耦,利用JTable与TableModel完成数据展示,结合JDBC与PreparedStatement保障数据库操作安全,并引入连接池优化资源管理。其技术价值在于帮助初学者补齐从基础语法到工程实践的中间地带,为后续理解Spring Boot等企业级框架奠定认知基础。此类系统广泛用于课程设

weixin_33563728的博客 216

用Java复刻《天天酷跑》!零基础游戏开发实战指南(附源码)

最后说句大实话:这个项目我写了3个版本才勉强能看,过程中至少重构了5次。所以如果你在开发中遇到问题——这太正常了!坚持住,调通BUG的那一刻,你会觉得之前掉的头发都值了!刚学完Java基础的同学(我知道你现在可能连多态都还没完全搞懂),直接上手游戏开发绝对是最好的选择!源码获取方式:关注公众号【码农突围】回复"酷跑源码"(开玩笑的!“写一百个控制台程序,不如亲手开发一个能玩的游戏!” ——来自某位被Java语法折磨疯的初学者。:很多新手会忘记重置跳跃状态,导致出现"无限二段跳"的BUG(别问我怎么知道的)

ps_xiaowang的博客 1009

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 271

arcgis插件 批量出图 按地块批量出图工具(动态文本、动态节点坐标表)

arcgis插件 批量出图 按地块批量出图工具。

坐听风雨 7065

用Java复刻天天酷跑!最适合新手的实战项目(含完整代码解析)

很多新手学Java时总在纠结:“学完语法之后到底能做什么?”(灵魂发问)!!!今天我给大家带来一个超级有趣的项目——用Java基础语法复刻经典手游《天天酷跑》!这个项目不仅能巩固面向对象、多线程等核心知识,还能让你体验真实的开发流程(绝对比写控制台计算器有意思100倍)!先跑通基础版本(1天)添加计分系统(0.5天)实现角色换装功能(1天)开发关卡编辑器(挑战性!记住:编程就像跑步,重要的不是一次能跑多远,而是坚持每天进步一点点!遇到问题别慌,多查文档、多调试(Debug是程序员最好的老师)。

kernelguru的博客 674

基于STM32的家用新风系统智能控制器 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了家用新风系统智能控制器的全功能开发,覆盖多传感器数据采集、双模式控制、PID调速、异常报警、掉电记忆等核心功能,全程采用保姆式无跳步教学,从硬件选型、接线、CubeMX配置、代码开发、调试排坑全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 464

用Java复刻《天天酷跑》!零基础也能搞定的练手项目(附完整代码)

下期预告:《用Java实现植物大战僵尸》!关注公众号【码上起飞】回复"酷跑源码"获取完整工程文件(包含调试好的图片素材)!(敲黑板)很多同学学完Java基础就迷茫了!变量、循环、面向对象都懂,但就是不知道能干啥。(小声bb)别被吓到!,注意nextInt(n)的范围是[0,n)。通过控制生成概率,可以调节游戏难度~的优势——每个游戏元素都是独立对象,通过矩形相交判断碰撞,代码可读性超强!,是Java GUI编程的核心知识点。当跳跃和下落速度设置不当时,会出现蜜汁抖动。(重点来了)这里用到了。

infoflow2的博客 423

在昇腾910B上,用kubeadm快速拉起一个双节点K8s集群(保姆级避坑指南)

本文详细介绍了在昇腾910B服务器上使用kubeadm快速搭建双节点Kubernetes集群的完整流程,包括环境准备、容器运行时配置、kubeadm初始化、节点加入与网络插件部署等关键步骤,特别针对ARM架构和昇腾芯片提供了优化配置和避坑指南。

weixin_29204749的博客 246

专治疑难系列 - 解决打印机凭证冲突问题

一、问题描述 二、解决方法 三、问题已解决

Passerby_Wang的博客 2万+

手把手教你用Java复刻《天天酷跑》!(零基础也能懂的实战教程)

✅ 检查图片路径是否带中文✅ 确认图片是否放入out/production目录✅ 使用绝对路径测试(临时解决方案)

logicpath的博客 452

SQLite性能优化:从WAL模式到内存映射的深度解析

本文深入解析SQLite性能优化策略,重点介绍WAL模式和内存映射技术的应用。通过合理配置WAL日志、同步策略和事务批处理,SQLite的IO吞吐量可提升3-5倍。结合内存映射和缓存优化,性能可进一步提升至默认配置的50倍,适用于高并发读写场景。

weixin_29231027的博客 455

阿里开源Java八股文终极版:从面试题到知识体系的实战指南

在Java后端技术面试中,标准化的八股文提问已经演变为考察候选人基础功底与成长潜力的高效筛选方式。从HashMap的底层存储与红黑树阈值,到JVM内存模型、MySQL索引原理乃至Redis持久化机制,每一个高频考点背后都隐藏着对操作系统、数据结构和并发设计的深层认知。一份结构清晰的开源资料,不仅能帮助开发者快速定位知识盲区,更能通过追问链设计将零散概念串联成完整的技术地图。无论是准备校招还是社招,系统化的复习都能有效提升面试表现的稳定性和深度。本文从实际工程视角出发,围绕这份开源资料,拆解如何从概念理解走向

weixin_30444111的博客 284

Python爬虫实战:公共资源交易平台招标数据采集实战 - 从零构建企业情报系统(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1288

华为OD机试 - 进制转换 - 二进制(Python/JS/C/C++ 2024 B卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题。

学Java,找哪吒 916

天天读书笔记(五)java程序员修炼之道

第四章 现代并发(二) 一 现代并发应用程序的构件  java.util.concurrent包  包含大量编写多线程代码的工具  1 原子类:java.util.concurrent.atomic  其中有几个名字以Atomic打头的类 语义基本和volatile一样 封装在一个API中  包含为操作提供的适当的原子(要么不做,要做就全做)方法。是非常简单的避免再共享数据上出现竞争危害的办法  ...

一条正在翻身咸鱼的博客 473

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

你天天在用的在线JSON格式化工具,究竟是如何实现的?一文讲透,附地址建议收藏

本文详解一款全功能 JSON 在线工具的设计与核心实现,涵盖基于 Web Worker 异步解析、语法错误定位、常见问题自动修复、树形 / 思维导图可视化、多语言代码生成、格式互转、历史记录与快捷键等模块。附带完整 TypeScript 核心源码,同时说明功能落地思路与工程取舍,可用于工具使用参考与二次开发。

weixin_36129444的博客 492

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

config.json 完全解析:tiny_vit_21m_224.dist_in22k 的ImageNet-22k归一化参数与裁剪配置详解

本文逐行讲解 **tiny_vit_21m_224.dist_in22k** 模型的 **config.json** 配置文件,重点解析 **ImageNet-22k 归一化参数**(mean/std)与 **crop_pct 裁剪配置**,帮助新手快速看懂这款 TinyViT 图像分类模型是如何对输入图像做预处理的。 ## 📦 这是一个什么模型? `tiny_vit_21m_224.dis

gitblog_01154的博客 419

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

分享66个JavaGame源码总有一个是你想要的

SAE Java channel game ( WebSocket实现的九宫格游戏 )----eclipse开发。基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务。java语言的斗地主游戏 ,可进行三人联机打牌 (连接同一IP),基于CS模式的 java小游戏斗地主。使用Java开发的一个小的飞机大战游戏---eclipse开发。Java GUI——华容道小游戏---eclipse开发。一个java做的打地鼠的小游戏----eclipse开发。

weixin_47730343的博客 1473

Java后端AI应用开发:DeepSeek+LangChain4j实现RAG与Agent实战

大模型落地企业应用,关键不在模型本身,而在于工程链路。Java开发者凭借成熟的Spring生态与工程化能力,正迎来AI应用开发的最佳窗口。RAG(检索增强生成)通过文档切块、向量化检索,为模型接入企业知识库;Agent则借助工具调用(Tools)与记忆机制,让模型具备多步任务决策能力。LangChain4j作为Java生态的LLM编排框架,提供与LangChain类似的抽象,可无缝整合DeepSeek等模型;Spring AI 2.0则提供官方标准化集成方案。从对话补全到工具调用,从知识库问答到自主Agen

weixin_34401479的博客 297
上一篇: 《Java基础知识大全》从青铜到钻石速通指南(萌新必藏版!!!)
下一篇: 用Java复刻《天天酷跑》!零基础游戏开发实战(附避坑指南)
「已注销」
博客等级 码龄2年 72粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值