Day: June 1, 2024

JBang:安装应用程序JBang:安装应用程序

引言 JBang是一款功能强大的工具,它不仅可以管理依赖项,还可以安装和管理应用程序。通过安装应用程序,我们可以轻松地将脚本和应用程序添加到系统的PATH中,从而在任何操作系统上都可以随时随地调用它们。本文将介绍如何使用JBang安装和管理应用程序。 安装应用程序 从版本0.56开始,JBang具备了使用jbang app命令将脚本和应用程序安装到系统的PATH中的功能。这对于在任何操作系统上轻松访问脚本和应用程序非常有用。 要开始使用,请运行jbang app setup命令。在Windows上,这将修改系统范围的PATH,以包含由JBang管理的文件夹。在基于bash/zsh的shell上,它将在你的bashrc或zshrc文件中设置PATH。 一旦设置完成,你就可以使用jbang app install <scriptRef>命令将脚本或应用程序安装到JBang管理的路径中。例如,jbang app install myscript.java将把myscript作为一个可以运行的命令。 你还可以使用别名,例如jbang app install gavsearch@jbangdev。 如果你有两个同名的脚本或应用程序,或者想要使用特定的名称,可以使用--name参数来控制生成的命令,例如jbang app install --name mvnsearch gavsearch@jbangdev。 如果想查看已安装的应用程序列表,可以使用jbang app list命令。如果想卸载脚本或应用程序,可以使用jbang app uninstall [...]

JBang:灵活的文件组织方式JBang:灵活的文件组织方式

引言 在软件开发过程中,良好的文件组织方式对于代码的可读性和可维护性至关重要。文件组织的合理性可以使我们更好地组织代码和资源文件,提高开发效率。本文将介绍一款名为JBang的工具,它提供了灵活的文件组织方式,使我们能够更好地组织和管理项目文件。 JBang的文件组织方式 JBang允许我们使用多个源代码文件,并提供了一种简单的方式来组织这些文件。我们可以将多个源文件放置在同一个源代码目录中,甚至可以在一定程度上使用包进行组织。 以下是一个示例,展示了如何在JBang中使用多个源文件: 在这个示例中,我们有两个源代码文件:Main.java和model/Person.java。Main.java文件包含了应用程序的入口点,而model/Person.java文件定义了一个简单的Person类。我们可以通过在命令行中运行jbang Main.java来执行这个应用程序。 需要注意的是,当多个源文件相互引用时,有些情况下可能会出现问题。例如,如果model.Person引用了util.Generator,则会导致编译错误。此外,由于jbang edit在运行之前必须进行编译,因此它无法识别和处理多个源文件。 使用多个源文件的高级功能 从版本0.46开始,JBang提供了更高级的功能,使多个源文件的管理更加灵活。主要的脚本文件定义了所有的依赖项,而我们可以使用//SOURCES <filename>注释将更多的源文件添加到应用程序中。如果包含的源文件中存在//SOURCES注释,那么这些文件也将被递归地添加进来。对于.jsh脚本文件,包含的源文件将按照它们被发现的顺序进行添加,采用深度优先的方式。 在编译时,列出的文件名将被添加到源文件列表中。 需要注意的是,目前尚不支持使用*.java样式匹配或在这些.java文件中声明//DEPS或其他JBang配置。目前,这些配置只会被主要的脚本或应用程序所识别。根据反馈,未来将放宽这些限制。 添加更多资源文件 如果你想要添加META-INF/application.properties、META-INF/resource.index.html或其他文件到生成的JAR文件中,你可以使用//FILES注释来添加它们。 //FILES的格式为//FILES <mountpoint>[=<sourcefile>]。 以下是一个示例: 在这个示例中,resource.properties文件将被直接复制,而META-INF/resources/index.html文件的内容将来自于index.html文件。 所有的位置都需要相对于脚本所在的位置。 需要注意的是,目前jbang edit和基于HTTP(S)的脚本与//FILES不兼容。 用于命令行插件的无扩展名/非Java文件 你可以使用JBang编写命令行插件,例如kubectl、git等。这些插件希望插件能够以<cmd>-<plugin>的方式命名,例如kubectl-myplugin。 针对这种情况,JBang提供了两种方法来使其工作。第一种推荐的方式是使用jbang app install命令,在中间生成一个脚本来避免问题。例如,jbang app install [...]

JBang:简单依赖管理工具JBang:简单依赖管理工具

引言 在软件开发过程中,我们经常需要使用各种各样的库和框架来构建功能强大的应用程序。然而,手动管理这些依赖项可能会变得非常复杂和耗时。在本文中,我们将介绍一款名为JBang的工具,它可以帮助我们轻松管理项目的依赖项。无论你是一名Java开发人员还是对软件开发感兴趣的新手,JBang都将是你的好帮手。 JBang简介 JBang是一款基于Java的命令行工具,它提供了一种简单且灵活的方式来管理项目的依赖项。使用JBang,我们可以轻松地指定所需的库和框架,并自动下载和安装它们,而无需手动处理复杂的依赖关系。JBang还提供了许多有用的功能,例如脚本执行、构建项目和编辑代码等。 安装和使用JBang JBang的安装非常简单。你只需前往官方网站(JBang官网)下载适用于你的操作系统的安装包,然后按照说明进行安装即可。 安装完成后,你可以在命令行中输入jbang命令验证安装是否成功。如果成功,你将看到JBang的版本信息和可用命令列表。 指定和管理依赖项 在JBang中,我们可以使用两种方式指定和管理依赖项:使用内联注释或使用外部依赖文件。 内联注释方式 使用内联注释的方式非常简单。在你的脚本或代码文件中,你只需在需要引入依赖项的地方添加类似以下的注释: 其中,groupId代表库或框架的组织ID,artifactId代表项目的唯一标识符,version代表所需的版本号。你可以根据需要指定一个或多个依赖项,它们之间用空格分隔。 以下是一个使用内联注释指定依赖项的示例: 在你运行脚本时,JBang将自动解析并下载所需的库和框架,并将其添加到类路径中,使其可供你的脚本使用。 外部依赖文件方式 除了使用内联注释,JBang还支持使用外部依赖文件来管理项目的依赖项。你可以创建一个文本文件(通常命名为dependencies.jsh),并在其中列出所需的依赖项,每个依赖项占一行。以下是一个外部依赖文件的示例: 在你的脚本或代码中,你可以使用以下语法来引用外部依赖文件: JBang将读取外部依赖文件,并自动解析和下载所需的库和框架。 解析和安装依赖项 一旦你在脚本或代码中指定了依赖项,JBang将自动解析并下载所需的库和框架。它会检查本地缓存中是否已经存在这些依赖项,如果不存在,就会从远程存储库中下载并安装它们。 当你第一次运行包含依赖项的脚本时,JBang会显示一个进度条,提示正在解析和下载依赖项。完成后,你就可以开始使用这些库和框架了。 示例说明 让我们通过一个简单的示例来演示JBang的使用。假设我们想编写一个使用log4j库进行日志记录的Java程序。 首先,我们需要在我们的代码中添加对log4j库的依赖。我们可以使用内联注释或外部依赖文件来指定依赖项。以下是在代码中使用内联注释的示例: 或者,使用外部依赖文件的示例: dependencies.jsh: 在你的代码中,你可以使用log4j进行日志记录。以下是一个简单的示例: 在这个示例中,我们首先导入了log4j库的必要类和接口。然后,我们创建了一个名为logger的静态变量,并使用LogManager.getLogger()方法获取日志记录器。最后,我们使用logger记录了不同级别的日志消息。 当我们运行这个程序时,log4j将根据配置的日志级别将日志消息输出到控制台或其他目标。 结论 [...]

JBang使用指南JBang使用指南

简介 JBang是一款强大而灵活的工具,为开发者提供了便捷的方式来编写和运行Java代码。它可以处理包含main方法的单个.java文件,也可以处理.jsh文件(用于jshell)。下面我们将详细介绍JBang的安装和使用方法。 安装 要使用JBang,首先需要安装它。安装过程非常简单,只需按照以下步骤操作: 使用方法 JBang的使用方法非常灵活,你可以通过以下几种方式来执行Java代码: 这将直接执行该Java文件,并输出结果。 JBang将会将该文件传递给jshell进行处理,并输出结果。 JBang会自动加载并执行该.jar文件。 依赖关系 在Java项目中,处理依赖关系是常见的任务。JBang提供了便捷的方式来管理和引入依赖关系。你可以通过在代码文件中添加//DEPS的注释来指定所需的依赖项,JBang会自动下载并加载这些依赖项。例如: 这将下载并加载名为”com.example:library:1.0.0″的依赖项。 Java版本 JBang兼容多个Java版本,你可以根据自己的需要选择合适的Java版本进行编译和运行。如果系统中没有指定的Java版本,JBang会自动下载并使用默认的Java版本。你也可以使用以下命令来指定Java版本: 其中,java_version表示你要使用的Java版本。 文件组织 JBang支持帮助你更好地组织和管理项目文件。你可以将相关的代码文件放在一起,以提高代码的可读性和维护性。例如,你可以将所有与数据库操作相关的文件放在一个名为”database”的文件夹中。 运行和调试 JBang提供了丰富的运行和调试功能,让你可以更轻松地执行和调试Java代码。你可以使用以下命令来运行和调试代码: 编辑 JBang支持代码编辑功能,你可以通过指定编辑器来编辑代码文件,以提高开发效率。你可以使用以下命令来编辑代码: JBang会打开默认编辑器,并加载指定的代码文件供你编辑。 导出和发布 当你的项目完成后,JBang提供了导出和发布的功能。你可以将代码打包成可执行的文件或发布到其他平台上。例如,你可以使用以下命令将代码导出为可执行的Jar文件: JBang会将代码打包成一个可执行的Jar文件,方便你在其他环境中运行。 依赖项 在Java项目中,处理依赖关系是非常常见的任务。JBang提供了便捷的方式来管理和引入依赖项。你可以通过在代码文件中添加//DEPS的注释来指定所需的依赖项,JBang会自动下载并加载这些依赖项。例如: 这样,JBang会自动下载并加载”org.apache.commons:commons-lang3:3.12.0″和”com.google.guava:guava:30.1-jre”这两个依赖项。 Java版本 JBang兼容多个Java版本,你可以根据自己的需要选择合适的Java版本进行编译和运行。如果系统中没有指定的Java版本,JBang会自动下载并使用默认的Java版本。你也可以使用以下命令来指定Java版本: [...]

探索 JBang——Java 开发的全新体验探索 JBang——Java 开发的全新体验

前言 Java 开发者们,无论您是学生、教育者还是专业开发人员,您是否曾经希望有一种更简单、更高效的方式来创建、编辑和运行 Java 程序?今天,我们将带您了解一个令人兴奋的工具——JBang。它不仅简化了 Java 应用的开发过程,还提供了丰富的功能和广泛的支持平台。 什么是 JBang? JBang 是一个旨在让学生、教育者和专业开发人员能够轻松地创建、编辑和运行自包含的源代码 Java 程序的工具。借助 JBang,您可以在几乎任何操作系统上无缝地运行 Java 程序,而且无需复杂的设置过程。 多平台支持 安装与运行 JBang 可以安装并运行在 Windows、Linux、macOS、Docker 以及 GitHub Actions 上。此外,它还可以通过 Maven 和 Gradle 插件使用。这意味着无论您使用什么开发环境,都可以轻松集成 JBang。 [...]

在纯Java文件中推理Llama 2在纯Java文件中推理Llama 2

在现代人工智能领域,推理大型语言模型(LLM)已经成为一个重要的应用场景。GitHub上的项目 mukel/llama2.java 提供了一种使用纯Java代码进行Llama 2推理的简洁实现。本文将详细介绍该项目的背景、构建方法及性能表现。 背景介绍 Llama 2是由Andrej Karpathy开发的一个非常简单的LLM推理实现。该项目的Java版本旨在提供教育价值,并用于在JVM上测试和调整编译器优化,特别是针对Graal编译器的优化。这一Java移植版本最初参考了llama2.scala。 构建与运行 要构建和运行该项目,您需要Java 21+,特别是其中的MemorySegment mmap-ing功能。以下是具体的构建步骤: 生成本地镜像 使用GraalVM可以创建一个独立的本地镜像: 或者使用Profile-Guided Optimizations (PGO): 性能表现 以下是该项目在不同配置下的性能测试结果(基于AMD Ryzen 3950X 64GB,Arch Linux): 单线程测试 模型 每秒处理Token 相对于llama2.c的加速 实现 stories15M.bin 363 [...]

探索 Llama 3 在 Java 中的实际应用探索 Llama 3 在 Java 中的实际应用

引言 在现代人工智能领域,模型推理的效率和方便性是技术人员关注的核心问题。如今,我们将目光投向一个名为 Llama 3 的项目,该项目旨在在 Java 环境中实现 Llama 3 的推理。这一项目不仅是其前身 Llama2.java 的延续,还在多个方面进行了优化和改进。让我们深入了解这个项目的细节及其实现方法。 项目背景 Llama 3 是基于 Andrej Karpathy 的 llama2.c 项目的一个扩展版本。Llama3.java 通过单个 Java 文件实现了 Llama 3 的推理,除了教育价值外,还为在 JVM 上测试和调整编译器优化和功能提供了便利,特别是针对 Graal [...]

谷歌投资20亿美元在马来西亚建设数据中心及云区域谷歌投资20亿美元在马来西亚建设数据中心及云区域

根据马来西亚政府的宣布,美国科技巨头谷歌计划在马来西亚投资20亿美元,建设谷歌在该国的首个数据中心和谷歌云区域,同时推进人工智能领域的发展。这一投资使谷歌成为东南亚地区最新一家注入资金以寻求增长机会的科技巨头[1]。 以下是有关这一投资的详细信息: 此外,谷歌的母公司Alphabet及谷歌的总裁兼首席投资官波拉特表示,这是谷歌在马来西亚运营13年来数额最大的投资计划,也是首次在该国设立数据中心和谷歌云区域[1]。 这项投资计划进一步证明了马来西亚政府的明确规划、国家的经济实力和资源,成功吸引了现有和新的投资者,有助于加速马来西亚的数码转型议程[1]。 Learn more: [...]

autoMate:用AI简化你的数字生活autoMate:用AI简化你的数字生活

引言 在这个数字化飞速发展的时代,我们的生活越来越依赖于各种软件和应用程序。但是,你有没有想过,如果这些软件能够更加智能,能够理解我们的指令并自动完成一些重复性的任务,那将会怎样?这就是autoMate所承诺的——它就像出行中的共享单车一样,只需3分钟,就能将AI的智能植入到任意一个软件中,让你的数字生活变得更加轻松和高效。 autoMate是什么? autoMate是一个开源免费的项目,它允许用户通过简单的配置,将AI的能力集成到他们日常使用的软件中。无论是自动化工作流程,还是简化复杂的任务,autoMate都能提供强大的支持。 如何开始使用autoMate? 如果你是第一次使用autoMate,你只需要进行一些基础的设置。首先,你需要修改配置文件,添加OpenAI的信息。这可以通过在autoMate的左上角点击文件,然后选择components,接着配置OpenAI的相关信息来完成。 autoMate的主要功能 autoMate的核心功能是将AI集成到软件中,但它并不止步于此。以下是autoMate的一些主要功能: 各产品优势对比 autoMate在众多自动化工具中脱颖而出,它的优势在于其开源免费的特性,以及对AI能力的集成。这使得autoMate不仅能够帮助个人用户提高效率,也能够为企业提供强大的自动化解决方案。 开源社区的支持 autoMate完全依赖于开源社区的支持,这意味着它不断地在改进和更新。社区的贡献者们不断地为autoMate添加新功能,修复bug,确保它能够满足用户的需求。 结语 autoMate是一个强大的工具,它能够让你的软件更加智能,让你的工作更加高效。无论你是希望简化日常任务,还是想要探索AI的潜力,autoMate都是一个值得尝试的选择。而且,由于它是开源免费的,你没有任何理由不试试这个能够改变你数字生活的神奇工具。 呼吁行动 如果你对autoMate感兴趣,不妨访问它的GitHub页面,那里有详细的安装指南和使用文档。同时,如果你觉得autoMate对你有帮助,不妨给它点个star,以示对开源项目的支持和鼓励。 [...]

一群中国年轻人的留学之路:机会变窄了?一群中国年轻人的留学之路:机会变窄了?

中国年轻人面临的留学困境 近年来,越来越多的中国年轻人希望出国留学,追求更广阔的学术和职业发展机会。然而,他们发现出国留学的路越来越窄了。无论是申请奖学金还是签证审查,都面临着越来越多的困难。 根据《知识分子》援引的一些个人经历,中国学生在申请奖学金时往往发现,他们感兴趣的领域在美国是最发达、最前沿的,但由于种种原因,申请到这些实验室的机会变得非常有限。很多国家也开始提高留学生的审查门槛,一些大学和研究机构参与其中。 除了奖学金申请的困难,学生还面临着签证审查的问题。有些学生被要求进行安全调查,有的甚至中途被退学。签证审查的时间也越来越长,有的甚至需要等待数年。一些学生在境外留学期间甚至遭遇了盘查和审问,他们的个人隐私和学术资料都受到了审查。 影响学术发展和人生规划 这些限制和审查对中国年轻学者的学术发展和人生规划产生了负面影响。一些学者发现,他们无法在自己感兴趣的领域进行研究,一些合作项目也因为政治原因受阻。年轻学者在面对地缘政治的变化时往往处于不利地位,他们可能未能完成必要的国际学术交流和社会资本积累。 这种局面不仅对留学生产生了影响,也对学术界和科研领域造成了破坏。一些教授和学者因政策变化而受到限制,一些高校面临着来自政府和舆论的压力,导致学术交流受到新的审查。一些高校的部门甚至不得不考虑降低招收学生的标准。 选择的困境和趋势 中国年轻学生在面对这些困境时,不得不重新考虑自己的选择。越来越多的学生选择放弃美国,转向其他国家或选择在国内继续深造。一些学生认为,在国内的顶尖高校能够提供更好的学术机会和资源,而且能与家人更加接近。同时,一些国家如新加坡也成为留学的热门目的地。 然而,这种趋势也引发了一些担忧。一些学者认为,这些限制和审查可能导致学术竞争的不公平,一些领域的学术发展受到了阻碍。年轻学者可能无法获得必要的国际学术交流和社会资本积累,影响了他们的学术发展。 结论 中国年轻人出国留学的机会正在变得越来越窄。越来越多的学生面临奖学金申请的困境,签证审查的挑战,以及学术发展受阻的问题。这对年轻学者的学术规划和人生选择带来了负面影响。 然而,我们也不能忽视这种困境中的机遇。在选择留学的时候,学生们需要更加灵活和机智,寻找适合自己的机会和发展路径。虽然某些国家的机会变少了,但其他一些国家和地区仍然提供了良好的学术环境和机会。同时,在国内的顶尖高校也能够提供丰富的学术资源和发展机会。 无论面对怎样的困境,年轻学者们应该保持积极的心态,并寻找适合自己发展的道路。学术领域的发展和人生规划需要时间和努力,即使面临困难,也要坚持追求自己的梦想。 参考文献: [...]