Start up the Velocity Template Engine

UE4蓝图动态调整粒子速度:从原理到实战的5分钟核心技能 在实时渲染与游戏开发中,粒子系统是营造氛围、表现动态特效的关键技术组件。其核心原理在于通过程序控制大量微小图元(粒子)的生成、运动与消亡,模拟自然现象或视觉特效。动态参数控制技术允许开发者在运行时实时调整粒子属性,这极大地提升了特效的交互性与表现力,是连接游戏逻辑与视觉反馈的重要桥梁。在UE4引擎中,蓝图可视化脚本与粒子系统的动态参数模块相结合,为开发者提供了高效、直观的控制手段。通过设置向量参数或浮点参数,可以实时驱动粒子速度、大小、颜色等属性的变化,从而实现诸如角色运动关联特效、环境交互响应等丰富的应用 阅读详情

http://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html


Generate Web content with Java-based, open source Velocity

Velocity is an open source templating tool developed by an international volunteer community and hosted by the Apache Software Foundation's Jakarta Project. At the Jakarta Velocity Project Website, where you can download the freely available source code, a thriving and growing community of users is ready to answer questions and offer solutions to common templating problems. Velocity was inspired by the pioneering WebMacro project, a work for which we in the Velocity community are grateful.

In this article, I present a short primer on the Velocity Template Engine and its template language, Velocity Template Language (VTL). I also demonstrate how to use Velocity through several examples.

Hello World, of course

No explanation of a programming-related subject would be complete without a Hello World example. Any application using Velocity requires two parts. The first is the template, which in this example is a file called helloworld.vm:

  Hello $name!  Welcome to Velocity!


The second is a corresponding Java program called HelloWorld.java:

import java.io.StringWriter;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
public class HelloWorld
{
public static void main( String[] args )
throws Exception
{
/* first, get and initialize an engine */
VelocityEngine ve = new VelocityEngine();
ve.init();
/* next, get the Template */
Template t = ve.getTemplate( "helloworld.vm" );
/* create a context and add data */
VelocityContext context = new VelocityContext();
context.put("name", "World");
/* now render the template into a StringWriter */
StringWriter writer = new StringWriter();
t.merge( context, writer );
/* show the World */
System.out.println( writer.toString() );
}
}


Now, when you compile and run this program, you will see the output:

  Hello World!  Welcome to Velocity!


This is a trivial example, but it contains the crucial pieces to give you an idea of what Velocity templating is all about.

Why should I use it?

Designed as an easy-to-use general templating tool, Velocity is useful in any Java application area that requires data formatting and presentation. You should use Velocity for the following reasons:

  • It adapts to many application areas
  • It offers a simple, clear syntax for the template designer
  • It offers a simple programming model for the developer
  • Because templates and code are separate, you can develop and maintain them independently
  • The Velocity engine easily integrates into any Java application environment, especially servlets
  • Velocity enables templates to access any public method of data objects in the context
The last point is important -- it means that you can reuse your existing classes. So, objects you want to use in your templates don't need to be structured in a certain way, like JavaBeans, or implement special I/O or lifecycle modes, such as JSP (JavaServer Pages) taglibs. The only requirement is that methods are public. You will see more of this when we cover the template language in detail. 

One of Velocity's strengths is that it strongly enforces a separation of functional responsibility within the application. It does this by limiting template access to objects that the application code specifically makes available. This means that designers can focus exclusively on the data presentation (the view), and the application programmer can focus on the application control (the controller) and the business logic and data management (the model) in Model-View-Controller (MVC) development. MVC is a well-accepted development pattern that simplifies both development and ongoing maintenance of sophisticated applications.

Where do I use it?

Velocity is successfully used in:

  • Servlet-based Web applications
  • Java and SQL code generation
  • XML processing and transformation
  • Text processing, such as RTF file generation

Velocity is most commonly used as a rendering engine for Java servlet-based Web application development, in place of or in conjunction with JSPs and other rendering technologies. Besides the easy, maintainable template syntax, Velocity is used in Web development because its template language can manipulate and present the data, not create data. This discourages programming within the templates. This is a good thing; it keeps your Java code's business and application logic where they belong.

Velocity is well suited to J2EE (Java 2 Platform, Enterprise Edition) Web development because the platform accommodates output technologies other than JSP. While JSP is included in the J2EE specification, J2EE doesn't require its use.

How does it work?

You use the same general process to create a Velocity-based application as you would any application. Let's consider a more interesting example than the Hello World application above. Suppose you operate a pet store and wish to generate an email blast to announce a sale. First, you must design the email and then develop the template and code based on that design.

Design-time considerations

You need to consider three elements for your design:

  • Which data to include in the email
  • What form the data elements should take (for example, as List, Map, or String)
  • What to call those data elements

For this example, let's suppose you decide on three pets for sale, each with a different advertised price. You decide to use a map to associate each pet name and its price, and then store all three maps in a list. You call this list petList, the pet name name, and the price as price in the map. Now that you have identified the relevant data, its representation, and naming criteria, you can write the code and the template's design.

Write the code and template design

Once you agree on data specifics, Velocity lets you write the code and design the template in parallel. The designer integrates the data into the nondata presentation content (like images, text, and so on) in the template. In this case, we simply write in the email body:

  $petList.size() Pets on Sale!
We are proud to offer these fine pets
at these amazing prices. This month only,
choose from:
#foreach( $pet in $petList )
$pet.name for only $pet.price
#end
Call Today!


As the programmer, you must:

  • Retrieve all data from the data sources -- a database via JDBC (Java Database Connectivity), a file, or just something calculated
  • Put that data into the context using the agreed-upon names
  • Render the template with the context to produce output


You may recall from the Hello World example that I referred to class VelocityContext as the context. Modeled after a java.util.Map, the context is an object that holds data provided by the application or servlet that the template accesses.

For this example, we get all the data from our data sources (in this case, we hardwire it into the code), organize it, and add it to the context:

   /* create our list of maps  */
ArrayList list = new ArrayList();
Map map = new HashMap();
map.put("name", "horse");
map.put("price", "00.00");
list.add( map );

map = new HashMap();
map.put("name", "dog");
map.put("price", "9.99");
list.add( map );
map = new HashMap();
map.put("name", "bear");
map.put("price", ".99");
list.add( map );
/* add that list to a VelocityContext */
VelocityContext context = new VelocityContext();
context.put("petList", list);


It appears we really want to get rid of those bears!

Now, with the data organized and placed in the context and the template ready, we can render the template against the context. Here is the code:

import java.io.StringWriter;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
public class PetStoreEmail
{
public static void main( String[] args )
throws Exception
{
/* first, get and initialize an engine */
VelocityEngine ve = new VelocityEngine();
ve.init();
/* organize our data */
ArrayList list = new ArrayList();
Map map = new HashMap();
map.put("name", "horse");
map.put("price", "00.00");
list.add( map );

map = new HashMap();
map.put("name", "dog");
map.put("price", "9.99");
list.add( map );
map = new HashMap();
map.put("name", "bear");
map.put("price", ".99");
list.add( map );
/* add that list to a VelocityContext */
VelocityContext context = new VelocityContext();
context.put("petList", list);
/* get the Template */
Template t = ve.getTemplate( "petstoreemail.vm" );
/* now render the template into a Writer */
StringWriter writer = new StringWriter();
t.merge( context, writer );
/* use the output in your email body */

sendEmail( writer.toString() );
}
}


This complete program generates your email body. Because Velocity renders templates into a Writer, you can easily manage the output. In this case, the rendered output went into a String via the StringWriter, but it could easily have gone to a file, a browser, or a BLOB (binary large object) in a database. This is one reason why Velocity integrates so easily into Java applications.

The program output (your email body) looks like this:

  3 Pets on Sale!
We are proud to offer these fine pets
at these amazing prices. This month only,
choose from:
horse for only 00.00
dog for only 9.99
bear for only .99
Call Today!


Velocity Template Language

I've shown Velocity templates for two different examples, but in neither case have I explained what the special markup did (although you could probably guess).

The Velocity Template Language (VTL) is a simple syntax providing two parts: references, a formalism for accessing objects in the context; and directives, a set of statements used for control and action. Described as "a language definition with a feature set that fits comfortably on a standard business card" (see Jim Jagielski's "Getting Up to Speed with Velocity") VTL has been intentionally kept simple and small by the community.

References

References in the template access data. They freely mix with the template's non-VTL content. Formally defined, a reference is anything in a template that starts with the '$' character and refers to something in the context. If no corresponding data object exists in the context, the template simply treats the reference as text and renders it as-is into the output stream.

Here is a short template containing a simple reference mixed with non-VTL content:

    Hello $name!  Welcome to Velocity!


Here, the reference is $name. As in the Hello World example, Velocity replaces $name in the template with the toString() return value of what is placed in the context under the key name:

    Hello World!  Welcome to Velocity!


The Velocity reference allows access to any object's public method, and the template's syntax is the same as it would be in Java code. Here are a few examples:

   There are $myBean.getSize() elements.
$myObject.anotherMethod( 1, "more data ")

$foo.getBar().barMethod("hello", $moredata )

Directives

Directives are VTL's other major part. Like references, they freely mix with other non-VTL content in templates. The directives in VTL are:

    #set()
#if()
#else
#elseif()
#end
#foreach()
#include()
#parse()
#macro()


The #set() directive lets you set a reference value within the template. This can replace an existing object in the context or establish a new one. Useful to the designer for presentation logic, #set() allows common mathematical operations on integers (+,-,/,*,%), as well as Boolean evaluations:

    #set( $startrow = 0)
#set( $count = $current + 1 )
#set( $isReady = ( $isOn && $isOpen) )


The #if() #else #elseif() #end set of directives provides the usual if/then/else functionality common in many programming and scripting languages. The #if() and #elseif() take an expression that can use the common logical operators &&, ||, !, ==, >, >=, <, <=, as well as a Boolean value:

    #if( $value > 5 )
bigger
#elseif( $value < 5 )
smaller
#else
just right
#end


The #foreach() looping directive has two arguments: the reference to which each value is assigned, and the value collection to loop over, plus a bit of "syntactical sugar" -- the word in:

    #foreach( $item in $itemList )
My $item.
#end


The collection types #foreach() supports are:

  • Object[]
  • java.util.Collection
  • java.util.Map (iterates over the mapped values)
  • java.util.Iterator
  • java.util.Enumeration

The #include() and #parse() directives are similar -- they both take a template or static resource name as an argument, include that template or resource in-place, and then render it to the output stream. The difference is that #include() includes the specified resource's content without any processing, and #parse() treats the specified resource as a template, processing all directives and references against the current context.

You can use these two directives to dynamically construct output. For example, in Web applications you can set up a skeleton for your pages, such as a set of top-level templates that may employ different navigational layouts or color/design schemes, and then #parse() and/or #include() the dynamic and static content elements at runtime based on user and application state:

    <table> 
<tr><td> #parse( $header ) </td></tr>
<tr><td> #parse( $body ) </td></tr>
<tr><td> #parse( $footer ) </td></tr>





  #macro( select $name $displayname $choicelist )
<SELECT name=$name>
<option value="">$displayname</option>
#foreach( $choice in $choicelist )
<option value=$choice>$choice</option>
#end
</select>
#end


Then, anytime you need an HTML <select> widget, you could simply invoke the Velocimacro as a directive:

  Please choose:  #select( "size" "--SIZE--" $sizelist )


When rendered, Velocity dynamically expands Velocimacro using the arguments passed into the invocation.

Velocimacros have many interesting features, such as recursion ability, support for private local contexts, and even ability to be partitioned into private, template-specific namespaces. For more information, refer to the user and developer documentation available on the Velocity Website.

VTL miscellany

I should mention a few other VTL features. VTL lets you create integers, string literals, Boolean values, arrays of objects, and arrays of sequential integers in the template:

  #set( $myint = 5 )
#set( $mystring = 'Hello There')
#set( $mybool = true )
#set( $objarr = [ "a", $myint, $mystring, false ] )
#set( $intrangearr = [1..10] )


VTL also has an alternative string literal form, using double quotes (") that interpolates reference values (plus directives and Velocimacros):

  #set( $foo = 'bar')
#set( $interp = "The value is '$foo'")


The resulting value of $interp is the string The value is 'bar'.

You can find complete VTL documentation on the Velocity Website.

Same data, different templates

Now that you know about references and directives, let's continue with our Pet Store email example.

Suppose you switch to HTML for your email messages. With Velocity, you can easily do that just by changing the template. Your code can remain the same. Here is a different template that generates HTML from the same data:

  <HTML>
<HEAD>
<TITLE>Pet Store Sale!</TITLE>
</HEAD>
<BODY>
<CENTER>
<B>$petList.size() Pets on Sale!</B>
<BR/>
We are proud to offer these fine pets
at these amazing prices.
<BR/>
This month only, choose from:
#set( $count = 1 )
<TABLE>
#foreach( $pet in $petList )
<TR>
<TD>$count)</TD>
<TD>$pet.name</TD>
<TD>$pet.price</TD>
</TR>
#set( $count = $count + 1 )
#end
</TABLE>
<BR/>
<I>Call Today!</I>
</CENTER>

</BODY>
</HTML>


Using this template, your email body now looks like:

  <HTML>
<HEAD>
<TITLE>Pet Store Sale!</TITLE>
</HEAD>
<BODY>
<CENTER>
<B>3 Pets on Sale!</B>
<BR/>
We are proud to offer these fine pets
at these amazing prices.
<BR/>
This month only, choose from:
<TABLE>
<TR>
<TD>1)</TD>
<TD>horse</TD>
<TD>00</TD>
</TR>
<TR>
<TD>2)</TD>
<TD>dog</TD>
<TD>9.99</TD>
</TR>
<TR>
<TD>3)</TD>
<TD>bear</TD>
<TD>.99</TD>
</TR>
</TABLE>
<BR/>
<I>Call Today!</I>
</CENTER>

</BODY>
</HTML>


This example demonstrates how Velocity lets you separate the presentation from the code and data; we used the same code and data with a different template.

XML template
As one final Pet Store example, let's use the same program to create an XML document detailing our sale. Again, we just change the template:

<?xml version="1.0"?>
<salelist>
#foreach( $pet in $petList )
<pet>
<name>$pet.name</name>
<price>$pet.price</price>
</pet>
#end
</salelist>


Using this template with the same program (maybe writing the output to a file), we get:

<?xml version="1.0"?>
<salelist>
<pet>
<name>horse</name>
<price>00.00</price>
</pet>
<pet>
<name>dog</name>
<price>9.99</price>
</pet>
<pet>
<name>bear</name>
<price>.99</price>
</pet>
</salelist>


Here is a trivial exercise for the reader: Make a template that outputs comma-separated data.

Programming with Velocity and servlets

Finally, let's use Velocity with servlets. The Velocity distribution includes a servlet base class, org.apache.velocity.servlet.VelocityServlet, that handles all Velocity and Servlet API housekeeping, letting you focus on your application. (Well, mostly -- nothing is ever that simple.) At the minimum, you must implement a method in which you put data into a supplied context, and return a template. The following class handles requests and renders templates using Velocity (sans real error-handling):

import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.apache.velocity.servlet.VelocityServlet;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.exception.ParseErrorException;
public class Sample extends VelocityServlet
{
public Template handleRequest( HttpServletRequest request,
HttpServletResponse response, Context context )
{
/* organize our data */
ArrayList list = new ArrayList();
Map map = new HashMap();
map.put("name", "horse");
map.put("price", "00.00");
list.add( map );

map = new HashMap();
map.put("name", "dog");
map.put("price", "9.99");
list.add( map );
map = new HashMap();
map.put("name", "bear");
map.put("price", ".99");
list.add( map );
/* add that list to the context */
context.put("petList", list)
;
/* get the template */
Template template = null;

try
{
template = getTemplate("petstoreemail.vm");
}
catch( Exception e )
{
System.out.println("Error " + e);
}
return template;
Resources



}}


When configured and deployed properly, this would generate the same output as our HTML-generating Pet Store example, which the servlet engine would deliver to the client browser.

For a complete working example, including templates, deployment information, and additional configuration source code, see the servlet examples in the distribution provided by the Velocity Project.

Now it's your turn

Velocity embodies these great traits:

  • It's easy to use, both for designers and programmers
  • It separates your presentation formatting from your code
  • It lets you use your existing classes as they are
  • It's portable and works in any Java application
  • It's free and the source code is available under the Apache Software License, a business-friendly open source license

One of the interesting things about using Velocity is that the simplicity of the templating model encourages you to do things the "right way."

You can verify this claim. By now, you have the knowledge to get started with Velocity, and you should be convinced that the barrier to entry is fairly low. Examples are easy to write and can be either standalone programs or servlets. You can familiarize yourself with Velocity by downloading the distribution from the Jakarta Velocity Project Website. It has both standalone application and servlet examples, covering the basics and many advanced features as well. The documentation is good and a supportive community is there to help you -- feel free to join the mailing lists. You might not have use for Velocity right now, but you'll be surprised how often it solves problems in your everyday programming tasks.

Author Bio

Geir Magnusson Jr. is an independent consultant specializing in software development, system architecture, and real-time data delivery. He is a devoted contributor to the Velocity Project, and serves on the Jakarta Project's Project Management Committee. He is also a member of the Apache Software Foundation.

</table>


The #macro() directive lets the designer create a parameterized bit of VTL code, called a Velocimacro, that can be invoked like a directive. Similar to a subroutine, this feature lets you create reusable pieces of VTL that contain explicit parameters for easier usage, readability, and maintenance. Velocimacro is a rich and powerful tool, and is best illustrated by example.

Velocimacro example
Suppose you want to encapsulate the VTL that designers use to make HTML <select> widgets. You would define a Velocimacro in regular VTL code:

$foo.myMethod( $bar.callThis() )


You may recall from the Pet Store email example that we stored the name and price information in a java.util.Map, and accessed the data using two tokens name and price, which don't exist as methods in the java.util.Map class:

   $pet.name for only $pet.price


This works because Velocity incorporates a JavaBean-like introspection mechanism that lets you express method accesses in references using a property notation. In the Pet Store example template, Velocity's introspection facility finds and invokes the Map's public Object get(String) method with the keys name and price. We could access the same data in a different way by invoking the get(String) method directly in the template:

   $pet.get('name') for only $pet.get('price')


This would produce the same output, and better represents what is actually happening. However, the other way that uses the property notation is easier to read and doesn't tie your template to the data class's specific implementation. For example, you can replace the Map in the List with a class that has public methods getName() and getPrice(), and the original example template containing the following will continue to work:

  $pet.name for only $pet.price


This is one way Velocity lets you decouple the view from your application's model-controller portion. Velocity's support for data access, with references, is a powerful and flexible facility. Your template references are only required to correspond to publicly accessible methods or be accessible through Velocity's property formalism.  
 
Unity艺术展馆漫游开发:从场景搭建到WebGL发布的完整实战指南 在3D交互应用开发中,场景漫游与用户交互是构建沉浸式体验的核心技术。其原理通常涉及摄像机控制、物理碰撞检测、光线追踪与渲染管线协同工作,通过实时计算用户输入与场景反馈,实现自然的探索与操作。这项技术的价值在于能够跨越物理限制,为教育、展示、娱乐等领域提供低成本、可复制的虚拟空间解决方案,广泛应用于虚拟展厅、产品演示和游戏关卡等场景。本文聚焦于Unity引擎下的艺术展馆漫游项目,系统讲解如何利用新输入系统实现流畅的第一人称控制,并通过光照烘焙与WebGL发布优化,解决独立开发中常见的性能与兼容性问题,最终构建 阅读详情

相关推荐

Godot 4 GDExtension深度集成FMOD:打造专业级游戏音频系统

在游戏开发中,音频中间件是处理复杂音频逻辑(如动态混音、事件驱动音效和3D空间音频)的核心组件,其原理在于通过专业的音频引擎接管底层的音频资源管理与实时处理。FMOD作为行业领先的音频中间件,提供了强大的API和工具链,能显著提升游戏的沉浸感和音频表现力,尤其适用于需要精细控制音频优先级、参数实时交互及复杂混音场景的项目。通过Godot 4全新的GDExtension系统,开发者能以C++原生扩展的方式,将FMOD引擎深度集成到Godot工作流中,实现近乎零损耗的性能和直观的节点化操作。这种集成不仅解决了G

weixin_30619101的博客 416

Velocity模板引擎(template engine)学习笔记二

1.<input type="text" name="email" value="$email"/><br /><br /> <input type="text" name="email" value="$!email"/><br /> 解决前者初始化,email值为空,input框显示$email的情况<br /> <input type="text" name="email" value="$!{email}"/><br /> 解决前者初始化后,值仍为空的情况<br /> 2.<br />

coffeeco的专栏 897

K3模型实测:用自然语言实现零代码游戏开发原型

自然语言处理与AI代码生成技术正推动软件开发范式的变革。其核心原理在于将人类意图通过大语言模型解析为结构化指令,进而自动生成可执行代码或配置。这一技术价值在于极大降低了原型验证与功能实现的门槛,使开发者能更聚焦于核心设计与创意。在游戏开发领域,该技术尤其适用于快速构建玩法原型、生成通用游戏逻辑模块等场景。本文以K3模型为例,通过实战演示如何仅用自然语言描述,即可生成包含Agent(智能体)、Skill(技能)和游戏世界模型的完整可运行游戏配置,实现躲避小球等经典玩法的零代码原型开发。

weixin_34006965的博客 535

Unity手游手柄支持与FPS+RPG融合开发实战

在移动游戏领域,触屏操作虽然便捷,但面对快节奏、高精度的第一人称射击(FPS)游戏时,总感觉少了点“灵魂”。当一款融合了硬核末日生存与RPG成长元素的FPS手游宣布原生支持手柄操作时,无疑为追求沉浸式体验的玩家和关注移动游戏技术发展的开发者们点亮了一盏灯。今天,我们就以《太阳天堂的钥匙》v0.9.9版本为例,深入探讨安卓平台上“手柄+手游”这一技术融合的实现方式、背后的开发逻辑,以及作为一名开发者或技术爱好者,如何理解和实践这类功能。 本文将从游戏技术架构的角度切入,分析一款安卓手游如何实现对多种手柄的兼容

weixin_30938149的博客 300

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南06

376: 分布式配置中心+配置加密+密钥管理+自动轮换+审计+回滚+健康检查+灰度+多集群+多租户+配置漂移检测+自动修复+合规+联邦学习+混沌工程+事件驱动+多语言SDK+配置可视化+配置模板+变量替换+配置对比+差异可视化+配置导入导出+配置订阅+WebHook+配置权限管理+RBAC+配置标签+配置搜索+配置依赖图+配置影响分析+配置历史趋势+配置预测+配置自动生成+配置推荐+配置健康评分+配置自愈+配置拓扑+配置热加载。故障恢复时,从上一个完成的checkpoint恢复,未提交的文件被丢弃。

weixin_49199313的博客 265

【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线14 射频计算+招投标围标串标识别

编号类型领域子领域问题(含逐步推理+标准锚定+四类方程式+运算类型标注+数据结构与算法实现)参数列表及数值范围组合数学约束方程式关联知识B286算法邮政业6G射频计算监控在快递包裹分拣中的应用问题:大型分拣中心,通过6G基站射频标签(RFID)和UWB定位实时追踪包裹位置,优化分拣路径。采用匈牙利算法分配包裹到对应滑槽。逐步推理:每个包裹有目的地滑槽,通过UWB获得当前位置,计算到各滑槽的距离,构建成本矩阵,用匈牙利算法求最小总行程。标准锚定:3GPP R19 (Positioning) + YZ/T 01

weixin_49199313的博客 149

生产级机器学习服务五大生死线:可观测性、弹性伸缩与合规审计实战

机器学习模型上线不是终点,而是工程化交付的起点。从‘能跑’到‘敢用’,核心在于构建具备可观测性、弹性伸缩、灰度发布、模型漂移防御和合规审计就绪能力的生产系统。这已超越传统MLOps范畴,进入模型即系统(MiS)新范式——要求数据流、控制流、状态流与事件流深度协同,并以OpenTelemetry、Kong、PostgreSQL+MinIO等轻量但经战场验证的技术栈落地。尤其在金融、电商等高敏场景,特征漂移、GPU显存碎片、签名验签断层、影子流量失效等真实故障频发,倒逼团队将安全合规嵌入架构DNA,让每一次监管

weixin_33845881的博客 358

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 311

基于MediaPipe与Unity的实时3D虚拟试衣系统开发实践

人体姿态估计是计算机视觉领域的基础技术,它通过识别图像或视频中人体关键点的位置来理解人体姿态。其核心原理通常基于深度学习模型,对输入图像进行特征提取与关节点回归。这项技术的价值在于能以非接触方式实时捕捉人体运动,为交互应用提供自然输入。在工程实践中,它广泛应用于虚拟试衣、体感游戏、运动分析等场景。结合实时渲染引擎,可实现高沉浸感的3D交互体验。本文以虚拟试衣为具体案例,详细阐述了如何利用MediaPipe进行轻量级、实时的人体姿态捕捉,并通过Unity引擎实现骨骼驱动与服装物理模拟,构建一套完整的实时3D虚

www.itmmd.com 321

relay_subgraph_partition_one_slide.pptx

relay_subgraph_partition_one_slide.pptx

triton-inference-server-ge-backend

新版本特性 v2.3.0 支持对全局、session、graph 的options进行添加,从而进一步调优模型,相关案例请参考 性能调优方法论。 支持采用分档模式将符合条件模型转化为静态图,提高吞吐性能。 补充如何采用分档模式+锁核+调整精度,进一步提高性能。 在AscendHub下载镜像时需确认好版本,若使用旧版本镜像,需要手工下载源码编译生成新的backend后才能支持新特性。 版本特性 v2.2.0 支持从onnx文件读取模型输入输出信息, config中若无指定input,output,将会自动从文件中读取; 调整动态图在多实例下使用多Session方式,提高并发吞吐(显存占用会增高); 支持动态batch场景小batch动态合并特性,配合多Session,提高吞吐; 补充调优方法论以及cnclip模型的最佳实践; 支持多模型特性,可支持同时拉起多个模型,提高显存利用率; 支持非0轴动态shape场景; 支持TensorFlow的pb文件。

A股分钟行情数据,涵盖股票、ETF、可转债及指数 每条记录包含交易日期、具体时间、证券代码、证券简称、开盘价、最高价、最低价、收盘价、成交量、成交额 数据为日内分钟频率,逐分钟记录价格变动与成交信息

A股分钟行情数据,涵盖股票、ETF、可转债及指数。每条记录包含交易日期、具体时间、证券代码、证券简称、开盘价、最高价、最低价、收盘价、成交量、成交额。数据为日内分钟频率,逐分钟记录价格变动与成交信息,按交易日分割存储,历史分钟K线保留完整。 数据源:CMES金融数据库

2007-2025年36家商业银行绿色信贷余额数据(2025年无缺失)

1、指标覆盖区间为2007年至2025年 2、数据取自各银行年度报告及社会责任报告 3、核心指标为绿色信贷余额 4、涉及银行包括:苏农银行、中国银行、紫金银行、杭州银行、华夏银行、邮储银行、青岛银行、兴业银行、苏州银行、农业银行、宁波银行、上海银行、江阴银行、招商银行、长沙银行、北京银行、无锡银行、民生银行、浙商银行、常熟银行、成都银行、工商银行、郑州银行、光大银行、南京银行、建设银行、浦发银行、贵阳银行、渝农商行、西安银行、交通银行、江苏银行、中信银行、张家港行、平安银行、青农商行

医学信息影像AI临床采纳的责任边界研究:基于场景选点与流程嵌入的分步实施路径

内容概要:本文以“影像人工智能(CAD)的临床采纳与责任边界”为核心议题,指出当前影像AI的发展瓶颈已从技术准确性转向“谁负责、怎么用”的机制与治理问题。通过文献研究与政策文本分析,文章系统梳理了CAD的应用场景与效果、临床采纳障碍及责任边界划分三大问题,揭示出“假阳性导致医生信任下降、责任归属不清、采购与使用脱节”三重瓶颈相互强化的闭环结构,并提出“场景选点&mdash;试用验证&mdash;责任规则先行&mdash;流程嵌入”的分步递进式建设路径,强调需通过机制闭环实现技术真正落地。; 适合人群:从事医疗信息化管理、医学人工智能研究、医院运营管理及相关政策制定的专业人员,以及医学信息学、卫生管理专业的高年级本科生与研究生。; 使用场景及目标:①用于医疗机构评估影像AI引入的可行性与实施路径,避免资源错配;②为政策制定者提供优化考核机制与责任界定的理论依据;③帮助AI厂商理解临床真实需求,提升产品与流程的契合度;④作为学术研究框架,支持对技术采纳与治理机制的深入探讨。; 阅读建议:本文构建了“现状&mdash;机制&mdash;治理”三层分析框架,建议读者结合自身角色聚焦不同章节:管理者重点关注第五章路径设计,研究者关注第三章文献述评与第六章研究展望,实施者关注第四章瓶颈分析与实施保障。阅读时应特别注意概念的操作化定义与证据等级区分,避免将理论推导误作实证结论,并在应用时结合本地实际进行裁剪与验证。

2019-2026年 中国分行业进出口数据 xlsx

数据整理中国各细分行业海关进出口数据,包括中国对各个国家进口、出口数据,中国各个行业进出口数据,各国贸易数据是了解每个国家市场的最基础和重要信息。数据非面板数据,时间、行业分类有缺失。 标 日期 采购商国家/地区 供应商国家/地区 采购商 供应商 采购商地址 供应商地址 通知人 通知人地址 制造商 原产国 目的国 起运港 目的港 HS编码 产品描述 唛头 数量 数量单位 重量 金额($) 单号 集装箱号 品牌

后端开发 Docker4.99.0 AppleSilicon 苹果芯片 Mac 安装包

本资源为 Docker Desktop 4.99.0 苹果芯片(Apple Silicon)专用安装包,原生适配 M 系列 Mac,可快速搭建本地容器开发环境,支持镜像拉取、容器编排、项目打包部署。适合后端开发、运维、全栈开发者,用于本地微服务、测试环境、项目容器化开发。

一个免费的激光打标软件的配套硬件说明

激光打标软件配套硬件说明

milvus-v2.6.25镜像文件

milvus-v2.6.25镜像文件

上一篇: Delphi代码标准文档
下一篇: html中控制select的宽度
yethyeth
博客等级 码龄21年 140粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值