从头开始学Shark II

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

从头开始学Shark II –

启动引擎和登陆

(宏云翻译,Cygnet开源工作流组, 2005-4-15 )

原文地址:http://shark.objectweb.org/doc/sfs/sharkfromscratch2.html

在这篇文档中,我简单描述实例代码的创建。和以前一样,我不打算涉及和本文不直接相关的所有主题。首先,你必须了解如何去编写、编译和执行Java程序。另外,你需要有一个Shark的运行版,并且能够使用Shark提供的管理程序。

和以前一样,我已经安装了以下程序:

  1. MySQL –我使用 4.0.16 -nt

  2. MySQL Connector – 我使用mysql-connector-java- 3.0.11 -stable-bin.jar

  3. Ant 1.6.x – 不是必需的,但是我提供了一个build file....

  4. Java – 我使用Sun j2sdk version 1.4.2 _04

  5. CVS, Winzip, 等其他需要的软件。

在执行以下命令后,我的Shark build安装在C:/Shark目录下

        make -install

我使用的策略是重复构造一些类(class)来示范如何在Shark中广泛使用。接口是Main method之外的一个命令行。这样做的目的是让新用户可以很容易地开始,并舒适地为Shark进行编码。

文件

你可以阅读这些文件,并且点击指向源码的链接,它是通过Java2html Java2Html ( www.java2html.com )产生的。另外,我已经提供了源码和Ant Build文件。可以在这里找到它们here.

开始使用Shark

开始使用Shark如下所示一样简单:

         Shark.configure(new Properties("Shark.conf")); 

 

也就是说,首先要配置Shark (见Shark from Scratch(从头开始学习Shark))。那么,你需要确保所有的Jar文件都是可用的。我们这里构建的代码并不在Shark目录下。

能够启动Shark的最小jar文件集合是(根据我的配置):

  • C:/Shark/lib/sharkkernel-standard.jar

  • C:/Shark/lib/sharkclientapi.jar

  • C:/Shark/lib/sharkcommonapi.jar

  • C:/Shark/lib/sharkinternalapi.jar

  • C:/Shark/lib/sharkxpdl-standard.jar

  • C:/Shark/lib/sharkinstancepersistence-dods.jar

  • C:/Shark/lib/dods-runtime.jar

  • C:/Shark/lib/util.jar

  • C:/Shark/lib/sharkutilities-dods.jar

  • C:/Shark/lib/mysql-connector-java- 3.0.11 -stable-bin.jar

  • C:/Shark/lib/sharkrepositorypersistence-dods.jar

  • C:/Shark/lib/sharkscripting-standard.jar

  • C:/Shark/lib/sharkutilities-map.jar

  • C:/Shark/lib/sharkutilities-misc.jar

  • C:/Shark/lib/xercesImpl.jar

  • C:/Shark/lib/xml-apis.jar

构建实例

因为代码量很小, 所以我把它列到这里,让大家可以深入了解。当然,同时我提供了所有的源代码和一个脚本文件,见here. 这个例子在first 包中可以找到。

运行"ant -p"来看一下目标达成情况。如果你不是使用c:/Shark作为你的安装目录, 你必须在你的构建脚本文件中改变shark.dir的属性值。我们运行的类叫 Simple。

在运行之前,让我们来看看代码:

package first;
         
import org.enhydra.shark.Shark;

 

import java.util.Properties;
import java.io.FileInputStream;

 

/**
 * Does nothing more than start the Shark engine.
 */
public class Simple
{
   public static void main(String[] args)
   {
      try
      {
         Properties props = new Properties();
         props.load(new FileInputStream("C://Shark//Shark.conf"));

 

         System.out.println("Enginename from Shark.conf is : " + props.getProperty("enginename"));

 

         // Make SURE every instance of shark that connects to the same database uses a different
         // enginename.
         props.setProperty("enginename", "rross");

 

         Shark.configure(props);

 

      }
      catch (Exception e)
      {
         // It's not like I am going to revive the thing if it crashes...
         e.printStackTrace();
      }
   }
}

代码相当简单,它实现装载properties文件,提供一个不同的引擎名称并把属性对象传递给Shark。

启动你的引擎

要运行它,只要在Dos命令中输入"ant runFirst"即可。当执行命令后,要看一下随后的输出

C:/dev/SharkFromScratch>ant runFirst
Buildfile: build.xml

 

runFirst:
     [java] Enginename from Shark.conf is : Shark
     [java] SharkEngineManager -> Shark engine is being initialized ...
     [java] File dodsConf.xml not exists on path: 'dodsconf' using default insted
     [java] Shark -> Initializing of shark engine has finished
     [java] Shark -> Initializing lasted 5 [s]
     [java] Shark -> firstEngine ready and waiting ...

 

BUILD SUCCESSFUL
Total time: 6 seconds

除了一个异常之外,其他都很正常。这个异常是“File dodsConf.xml not exists on path: 'dodsconf' using default insted"。忽略语法和拼写错误,就是说,不能找到dodsConf.xml的备份。如果我在Shark目录下做一个快速搜索,我能看到dodsConf.xml    确实存在。发生的问题是Shark.conf文件有一个缺省的相对路径,当你在包含build文件的目录(我这里是C:/dev/SharkfromScratch)下运行时,Shark能够找到所有的配置文件和其他信息。

修补配置文件

不是编辑硬盘上的Shark.conf文件,而是编辑在启动时传递给Shark引擎的各种属性。这使得我能够更好地控制什么会参与进来,使得我能够在应用(如runsa.bat)中继续使用“官方的(official)”Shark.conf文件,而不用经常改动它。

在交付给Shark之前,我会装载属性文件并预先考虑属性中所有相关文件名称的Shark安装目录。

在second.Simple中, 你能够看到上述情况。它并不是不可思议的,我已经硬编码了Shark的安装路径,它确实是完成了工作。

运行它,你会得到以下的输出(或者非常相似)

C:/dev/SharkFromScratch>ant runSecond
Buildfile: build.xml

 

runSecond:
     [java] Fixing up Shark config
     [java] SharkEngineManager -> Shark engine is being initialized ...
     [java] Shark -> Initializing of shark engine has finished
     [java] Shark -> Initializing lasted 5 [s]
     [java] Shark -> secondEngine ready and waiting ...

 

BUILD SUCCESSFUL
Total time: 6 seconds

正如你看到一样,Shark不再因为找不到dodsConf.xml文件而备受抱怨。在这一点上,我们正确启动了Shark。

深入钻研Shark

既然我们能够启动Shark,让我们来看一下我们能够得到什么。Third包是我们第一次尝试构建一个程序。Workflow类提供一个称作init的方法,这个方法包含了到目前为止我们已经做的工作。

登录

下一步, 我们进行登录。实际上,我们要做的是获得一个SharkConnection对象,我们称作它的connect method. 这一代码片段来自login方法。

SharkConnection conn = Shark.getInstance().getSharkConnection();

 

try
{
   conn.connect(userName, password, props.getProperty("enginename"), null);
}

连接命令的第四个参数是’scope’,但是上次检查中我发现它没有和任何东西相连。在提供的build.xml文件中,使用"runThird",我们应改可以看到下面的结果。

C:/dev/SharkFromScratch>ant runThird
Buildfile: build.xml

 

runThird:
     [java] Fixing up Shark config
     [java] SharkEngineManager -> Shark engine is being initialized ...
     [java] Shark -> Initializing of shark engine has finished
     [java] Shark -> Initializing lasted 5 [s]
     [java] Shark -> thirdEngine ready and waiting ...

 

BUILD SUCCESSFUL
Total time: 6 seconds

你们可能注意到在登录的时候,系统没有提供新的信息。这很好,因为连接不是空的,且没有异常抛出,因此我们继续进行。

在调用recreateDB之后,这个新的数据库实际上还没有任何用户,注意到这一点是很重要的。如果你还没有这样做,你可以运行Shark Swing应用程序(我这里是C:/Shark/runsa.bat),并且使用用户名”admin”和密码"enhydra"登录。这样就会创建”admin”用户。实际上,如果你用未知的用户名登录Swing应用程序,它就会按照你提供的用户名和密码来创建一个新的用户

Classpaths

在提供的build.xml文件中,所有的目标具有相同的class path,但是正如你看到的那样,我前面已经进行了评议,以便你可以在任何点上,都能够判断需要什么文件。对于一个特定的安装来说,并不是Shark产生的所有文件都是必需的,因此,这会帮助你稍微整理一下你的class path.

 

ODS 与模态分析 模态分析不是通过现有的 FRF 来“推测”或“估计”其他模态参数,而是通过测量和分析 FRF 来。 阅读详情

相关推荐

麒麟系统下PaddleOCR的离线部署实战:从环境搭建到模型优化

本文详细介绍了在国产麒麟操作系统上离线部署百度PaddleOCR的完整实战流程。从系统环境准备、Conda虚拟环境搭建,到PaddlePaddle框架和PaddleOCR的离线安装,再到预训练模型的本地部署与优化技巧,提供了全面的文字识别解决方案。重点解决了离线环境下依赖包管理、模型量化加速等核心问题,并附带了批量处理与内存监控的进阶代码,适用于对数据安全有严格要求的政务、金融等场景。

docker7nomad的博客 963

Shark介绍及配置

Shark介绍及配置     翻译人:林勇                 QQ:313340285Email:showsscel@gmail.com   MSN:showsscel@hotmail.comSkype:showsscel    Shark介绍及配置 -- Enhydra Shark  2007年3月16日版本:1.0

4478

qt工程引入opencv库步骤

第一步:新建qt工程 第二步:在工程名.pro文件中添加opencv库的路径                   INCLUDEPATH += /home/liyuanzhe/opencv-2.4.8/include/opencv \ /home/liyuanzhe/opencv-2.4.8/include/opencv2 LIBS += /home/liyuanzhe/open

superyuanzhe的专栏 5723

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 296

YOLO11实战优化:暗光环境检测 | 引入Retinex增强模块与YOLO11联合训练,解决夜间/低照度场景抓拍痛点

本文探讨了暗光环境下目标检测的技术挑战与解决方案。研究发现,传统CNN模型在低照度条件下性能显著下降,主要由于光子数减少导致信噪比降低、目标特征被噪声淹没。针对这一问题,文章提出将可微分光照增强模块嵌入YOLO检测器的技术路线,重点分析了Retinexformer+YOLO11联合方案的优势。 文章对比了YOLO系列模型在暗光场景的表现,指出YOLO11凭借其C3k2模块、无锚检测头和多任务统一骨干网络,在低对比度图像特征提取方面优于前代产品。同时详细介绍了Retinexformer的理论基础和技术创新,包

2601_95807009的博客 207

Coze 打通飞书多维表格,实现数据增删改查操作实战详解

基于Coze 打通飞书多维表实现数据录入系统实战详解

congge 5782

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 326

SPI 总线信号完整性与时序一致性测试

SPI总线测试的核心目标是验证其电气与时序行为是否满足芯片规格要求,确保通信可靠性

硬核科技 330

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 514

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2426

STM32F4 Flash数据的保存和读取。

STM32F4 Flash数据的保存和读取。

张一西的博客 9216

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 351

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9372

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 533

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 418

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

spdlog 同步日志库使用详解

spdlog是一个轻量级 C++ 日志库,支持同步日志、异步日志、多线程日志、日志文件轮转和自定义日志格式。对于嵌入式 Linux 应用开发,我建议先使用。它可以帮我们完成:日志级别过滤。时间戳和线程 ID 输出。日志格式化。终端和文件输出。多线程安全写入。日志文件按大小或时间轮转。我们不需要自己实现互斥锁、文件写入、日志格式化和轮转等底层功能。

zengjiajun2006的博客 1118

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaSE通关手册:数据类型与变量

代码无需额外处理,编译时编译器自动完成转换。

xys_678的博客 209

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 367

IDEA 简介:从零认识 IntelliJ IDEA

IDEA 全称,是由 JetBrains 公司开发的一款主流 Java 集成开发环境(IDE)。它集代码编辑、编译、调试、测试、版本控制、构建管理等功能于一体,被大量 Java 开发者视为日常开发的首选工具。所谓 IDE(Integrated Development Environment,集成开发环境),就是把写代码所需的各类工具整合到同一个界面中。相比只用文本编辑器加命令行编译,IDE 能显著减少重复操作,让开发者把精力集中在业务逻辑上。

ztI10的博客 173

Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

【代码】Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

m0_64476639的博客 339

c++ explicit关键字详解

explicit。

拒绝AI文,努力在AI时代写出感动人心的好文章 151

ubuntu安装hadoop系统

本文详细介绍了基于VMware克隆虚拟机搭建三节点Hadoop分布式集群的全过程:使用同一Ubuntu镜像克隆出master、worker1、worker2三台虚拟机,依次配置主机名、固定IP(如192.168.82.10/11/12)、SSH服务及免密登录,确保节点间网络互通。随后安装Java,下载配置Hadoop并分发至各节点,最终初始化启动集群,验证其存储与计算功能,实现高效的大数据环境部署。

qq_43592674的博客 350

TRingBuffer两端都能增删(快递站版)

TRingBuffer 是一个支持两端增删、下标访问且容量动态增长的环形双端队列。它通过无符号索引的永不归零设计,利用减法自动模运算实现空满判断与元素计数,避免了传统环形缓冲浪费格子的问题。内部以票号(索引)标记首尾,扩容时重排元素为连续存储,保证 O(1) 操作与高缓存效率。虽不线程安全,但其高效性使其成为游戏开发中事件队列、命令缓冲等场景的理想选择。

u013768914的博客 301

Mac上装了最新版本的Android Studio,但是没找到jdk的设置选项也没找到jbr的目录

新版Android Studio(2025.3.1+)因三项变更导致常见问题:一、JDK设置移至“DaemonJVM criteria”,新项目默认自动探测或下载JDK;二、JBR目录改名为带版本号的jbr-21等,需进入.app/Contents/查看,或通过About窗口确认运行时;三、命令行缺adb因platform-tools未加入PATH,需在SDK Manager中勾选并配置~/.zshrc中的ANDROID_HOME及PATH。重装或清理残留可解决缺失问题,切勿手动设JAVA_HOME或安装冲

Programming is a highly artistic endeavor 381

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 494

运动控制功能安全实践深度解析 | 安全功能篇(上)

安全功能不只是急停。SLS 限上限、SSR 守区间、SSM 管人员准入,三者约束对象不同,混用等于没设防。本文拆解限速类安全功能的判定逻辑、编码器与无传感器两条采集路径,以及汽车、玻璃、物流、烘焙、机器人等场景的落地差异。

MotroEngineer的博客 251
上一篇: OBE用户指南(中文版)
macrocloud
博客等级 码龄22年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值