Apache Camel - 18 - JDBC组件

Apache Camel 学习 使用04 Apache Camel - 16 - Jetty组件 jetty组件提供基于HTTP的端点来消费和生成HTTP请求。 也就是说,Jetty组件的行为如同一个简单的Web服务器。 Jetty也可以用作HTTP客户端,这意味着您也可以将其与Camel一起用作生产者。 Jetty是基于流的,这意味着它接收到的输入被作为一个流提交给Camel。 这意味着您将只能读取一次流的内容。 Ap... 阅读详情

JDBC Component JDBC组件

代码Demo 样例,已经上传了,有兴趣的童鞋,可以下载下来跑跑....

Apache Camel JDBC组件 代码Demo 样例

Apache Camel相关代码已经上传GitHub,需要的自取:GitHub - Apache Camel 完整Demo
如果觉得还行,麻烦点个Star

 

The jdbc component enables you to access databases through JDBC, where SQL queries (SELECT) and operations (INSERT, UPDATE, etc) are sent in the message body.

jdbc组件使您能够通过JDBC访问数据库,在消息正文中发送SQL查询(SELECT)和操作(INSERT,UPDATE等)。

This component uses the standard JDBC API, unlike the SQL Component component, which uses spring-jdbc.

与使用spring-jdbc的SQL Component组件不同,此组件使用标准JDBC API。

This component can only be used to define producer endpoints, which means that you cannot use the JDBC component in a from() statement.

此组件只能用于定义生产者端点,这意味着您不能在from()语句中使用JDBC组件。

 

URI format URI格式

jdbc:dataSourceName[?options]

This component only supports producer endpoints.

这个组件只支持生产者端点。

You can append query options to the URI in the following format, ?option=value&option=value&...

您可以按照以下格式将查询选项追加到URI中:?option=value&option=value&...

 

Options 选项

Option

Default Value

Description

readSize

0

The default maximum number of rows that can be read by a polling query. The default value is 0.

轮询查询可以读取的默认最大行数。 默认值是0。

statement.<xxx>

null

Camel 2.1: Sets additional options on the java.sql.Statement that is used behind the scenes to execute the queries. For instance, statement.maxRows=10. For detailed documentation, see the java.sql.Statement javadoc documentation.

在后台使用的java.sql.Statement上设置附加选项来执行查询。 例如,statement.maxRows = 10。 有关详细的文档,请参阅java.sql.Statement javadoc文档。

useJDBC4ColumnNameAndLabelSemantics

true

Camel 2.2: Sets whether to use JDBC 4/3 column label/name semantics. You can use this option to turn it false in case you have issues with your JDBC driver to select data. This only applies when using SQL SELECT using aliases (e.g. SQL SELECT id as identifier, name as given_name from persons).

设置是否使用JDBC 4/3列标签/名称语义。 如果您在使用JDBC驱动程序选择数据时遇到问题,可以使用此选项将其设置为false。 这仅适用于使用SQL SELECT使用别名(例如,SQL SELECT id作为标识符,name作为given from persons)的情况。

resetAutoCommit

true

Camel 2.9: If true, Camel will set the autoCommit on the JDBC connection to be false, commit the change after executing the statement and reset the autoCommit flag of the connection at the end. If the JDBC connection does not support resetting the autoCommit flag, set this to false. 

如果为true,Camel会将JDBC连接上的autoCommit设置为false,执行语句后提交更改并在最后重置连接的autoCommit标志。 如果JDBC连接不支持重置autoCommit标志,请将其设置为false。

When used with XA transactions you most likely need to set it to false so that the transaction manager is in charge of committing this tx.

当与XA事务一起使用时,您很可能需要将其设置为false,以便事务管理器负责提交此tx。

allowNamedParameters

true

Camel 2.12: Whether to allow using named parameters in the queries.

是否允许在查询中使用命名参数。

prepareStatementStrategy

 

Camel 2.12: Allows to plugin to use a custom org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy to control preparation of the query and prepared statement.

允许插件使用自定义的org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy来控制查询和准备语句的准备。

useHeadersAsParameters

false

Camel 2.12: Set this option to true to use the prepareStatementStrategy with named parameters. This allows to define queries with named placeholders, and use headers with the dynamic values for the query placeholders.

将此选项设置为true以使用具有命名参数的prepareStatementStrategy。 这允许使用命名占位符来定义查询,并使用包含查询占位符的动态值的标题。

outputType

SelectList

Camel 2.12.1: outputType='SelectList', for consumer or producer, will output a List of Map. SelectOne will output single Java object in the following way:

输出类型='选择列表',为消费者或生产者,将输出一个地图列表。 SelectOne将以下列方式输出单个Java对象:

a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( * ) FROM PROJECT will return a Long object.

如果查询只有单列,则返回JDBC Column对象。 (如SELECT COUNT(*)FROM PROJECT将返回一个Long对象。

b) If the query has more than one column, then it will return a Map of that result.

如果查询有多个列,那么它将返回该结果的地图。

c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. From Camel 2.14 onwards then SelectList is also supported. 

如果outputClass被设置,那么它将通过调用与列名匹配的所有设置器将查询结果转换成Java bean对象。 它会假设你的类有一个默认的构造函数来创建实例。 从Camel 2.14开始,SelectList也被支持。

d) If the query resulted in more than one rows, it throws an non-unique result exception.

如果查询结果不止一行,则会抛出一个非唯一的结果异常。

Camel 2.14.0: New StreamList output type value that streams the result of the query using an Iterator<Map<String, Object>>, it can be used along with the Splitter EIP.

Camel 2.14.0:使用Iterator <Map <String,Object >>流式传输查询结果的新StreamList输出类型值,它可以与Splitter EIP一起使用。

outputClass

null

Camel 2.12.1: Specify the full package and class name to use as conversion when outputType=SelectOne. From Camel 2.14 onwards then SelectList is also supported.

当outputType = SelectOne时,指定完整的包和类名作为转换。

从Camel2.14开始,SelectList也被支持。

beanRowMapper

 

Camel 2.12.1: To use a custom org.apache.camel.component.jdbc.BeanRowMapper when using outputClass. The default implementation will lower case the row names and skip underscores, and dashes. For example "CUST_ID" is mapped as "custId".

Camel 2.12.1:在使用outputClass时使用自定义的org.apache.camel.component.jdbc.BeanRowMapper。 默认实现将小写行名称并跳过下划线和破折号。 例如“CUST_ID”被映射为“custId”。

useGetBytesForBlob

false

Camel 2.16: To read BLOB columns as bytes instead of string data. This may be needed for certain databases such as Oracle where you must read BLOB columns as bytes.
以字节读取BLOB列而不是字符串数据。 对于某些数据库(如Oracle),您可能需要这样做,您必须将BLOB列作为字节读取。

Result 结果

By default the result is returned in the OUT body as an ArrayList<HashMap<String, Object>>. 

默认情况下,结果作为ArrayList <HashMap <String,Object >>在OUT主体中返回。

The List object contains the list of rows and the Map objects contain each row with the String key as the column name. 

List对象包含行列表,Map对象包含每个以String键作为列名的行。

You can use the option outputType to control the result.

您可以使用选项outputType来控制结果。

Note: This component fetches ResultSetMetaData to be able to return the column name as the key in the Map.

注意:该组件获取ResultSetMetaData以便能够返回列名作为Map中的键。

 

Message Headers 消息头

Header

Description

CamelJdbcRowCount

If the query is a SELECT, query the row count is returned in this OUT header.

如果查询是SELECT,则查询在此OUT标题中返回的行数。

CamelJdbcUpdateCount

If the query is an UPDATE, query the update count is returned in this OUT header.

如果查询是UPDATE,则查询更新计数在此OUT标题中返回。

CamelGeneratedKeysRows

Camel 2.10: Rows that contains the generated keys.

包含生成的键的行。

CamelGeneratedKeysRowCount

Camel 2.10: The number of rows in the header that contains generated keys.

包含生成的键的标题中的行数。

CamelJdbcColumnNames

Camel 2.11.1: The column names from the ResultSet as a java.util.Set type.

ResultSet中的列名称为java.util.Set类型。

CamelJdbcParameters

Camel 2.12: A java.util.Map which has the headers to be used if useHeadersAsParametershas been enabled.
如果启用了useHeadersAsParameters,则具有要使用的标头的java.util.Map。

 

Generated keys 生成的主键

Available as of Camel 2.10 适用于Camel 2.10

If you insert data using SQL INSERT, then the RDBMS may support auto generated keys. 

如果使用SQL INSERT插入数据,则RDBMS可能支持自动生成的密钥。

You can instruct the JDBC producer to return the generated keys in headers.

您可以指示JDBC生产者在头中返回生成的主键。

To do that set the header CamelRetrieveGeneratedKeys=true. 

要做到这一点设置标题CamelRetrieveGeneratedKeys = true。

Then the generated keys will be provided as headers with the keys listed in the table above.

然后生成的主键将作为标题提供给上表中列出的主键。

You can see more details in this unit test.

你可以在这个单元测试中看到更多的细节。

Using generated keys does not work with together with named parameters.

使用生成的主键不能与命名参数一起使用。

 

代码Demo

mysql 数据库 我安装在虚拟机中,数据库里面大约有九十几万数据...

package com.camel.jdbc.server;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.apache.camel.model.ModelCamelContext;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class CamelJDBCServer {

	public static final Logger logger = Logger.getLogger(CamelJDBCServer.class);

	public static void main(String[] args) {

	final String url = "jdbc:mysql://192.168.137.150:3306/test1";

	BasicDataSource basicDataSource = new BasicDataSource();
	basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
	basicDataSource.setUsername("");
	basicDataSource.setPassword("");
	basicDataSource.setUrl(url);
	SimpleRegistry simpleregistry = new SimpleRegistry();
	simpleregistry.put("DataSource", basicDataSource);

	// 日志
	PropertyConfigurator.configure("./conf/log4j.properties");
	PropertyConfigurator.configureAndWatch("./conf/log4j.properties", 1000);

	try {

	ModelCamelContext camelContext = new DefaultCamelContext(simpleregistry);
	camelContext.start();

	camelContext.addRoutes(new RouteBuilder() {

	@Override
	public void configure() throws Exception {
			from("timer://queryAward?period=60s")
			.setBody(constant("select * from award where id > 99990 "))
			.to("jdbc:DataSource?outputType=SelectList").process(new Processor() {

	@Override
	public void process(Exchange exchange) throws Exception {

	System.out.println(exchange.toString());

	String str = exchange.getIn().getBody().toString();
	logger.info("str : " + str);

	Object obj = exchange.getIn().getBody();
	logger.info("obj : " + obj.getClass());
	logger.info("obj : " + obj);

	}
	}).to("log:JDBCRoutesTest?showExchangeId=true");
	}
	});

	// 没有具体业务意义的代码,只是为了保证主线程不退出
	synchronized (CamelJDBCServer.class) {
			CamelJDBCServer.class.wait();
	}

	} catch (Exception e) {
			logger.error(e.getMessage(), e);
	}

	}

}

JDBC组件没法使用 from端点,需要一个触发机制。

比如:定时器、或者http调用触发。

运行结果:

第二个Demo

换一种写法

通过下面这个Demo,脑洞发散一下,如果搭配使用jetty组件,接收外部参数进行查询。

处理类

package com.camel.jdbc.server.process;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.log4j.Logger;

public class CamelJDBCProcesser implements Processor {

        public static final Logger logger = Logger.getLogger(CamelJDBCProcesser.class);

        @Override
        public void process(Exchange exchange) throws Exception {
                String str = exchange.getIn().getBody().toString();
                logger.info("str : " + str);

        Object obj = exchange.getIn().getBody();
        logger.info("obj : " + obj.getClass());
        logger.info("obj : " + obj);
        }

}

route路由

package com.camel.jdbc.server.routes;

import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;

public class CamelJDBCRoute extends RouteBuilder {

        @Override
        public void configure() throws Exception {

        from("timer://queryAward?period=60s").process(new Processor() {

        @Override
        public void process(Exchange exchange) throws Exception {

        Message message = exchange.getOut();
        message.setBody(
                "insert into award(nickname,account,password,message, remark) 
                values ('ooo','vvv','bbb','234567','0000');");
        }
        }).to("jdbc:DataSource").to("log:JDBCRoutesTest?showExchangeId=true");

        }

}

main方法

package com.camel.jdbc.server;

import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.apache.camel.model.ModelCamelContext;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.camel.jdbc.server.routes.CamelJDBCRoute;

public class CamelJDBCServer {

	public static final Logger logger = Logger.getLogger(CamelJDBCServer.class);

	public static void main(String[] args) {

	final String url = "jdbc:mysql://192.168.137.150:3306/test1";

	BasicDataSource basicDataSource = new BasicDataSource();
	basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
	basicDataSource.setUsername("");
	basicDataSource.setPassword("");
	basicDataSource.setUrl(url);
	SimpleRegistry simpleregistry = new SimpleRegistry();
	simpleregistry.put("DataSource", basicDataSource);

	// 日志
	PropertyConfigurator.configure("./conf/log4j.properties");
	PropertyConfigurator.configureAndWatch("./conf/log4j.properties", 1000);

	try {

	ModelCamelContext camelContext = new DefaultCamelContext(simpleregistry);
	camelContext.start();

	camelContext.addRoutes(new CamelJDBCRoute());

	// 没有具体业务意义的代码,只是为了保证主线程不退出
	synchronized (CamelJDBCServer.class) {
			CamelJDBCServer.class.wait();
	}

	} catch (Exception e) {
			logger.error(e.getMessage(), e);
	}

	}

}

运行结果:

OK....

MyBatis流式查询实战:百万数据导出如何避免OOM内存溢出 最近在排查一个线上服务的内存溢出问题时,发现一个典型的“性能陷阱”:一个看似简单的全量数据导出功能,在数据量增长到百万级别后,服务器内存直接被“打满”,导致服务频繁重启。问题的根源,正是开发者在处理大数据量查询时,习惯性地使用了 List<T> 来接收数据库结果集。本文将深入剖析这种做法的风险,并手把手教你使用 MyBatis 的 流式查询(Streaming Query) 来优雅地解决这个问题,让你告别 OOM(OutOfMemoryError)的困扰。 本文适合所有使用 MyBatis 进行 阅读详情

相关推荐

MyBatis核心原理与Spring Boot集成实战:从SQL映射到动态SQL

在Java后端开发中,数据持久化是构建稳定应用的核心基础。从基础的JDBC到全自动ORM框架,技术演进始终围绕如何平衡开发效率与执行控制力。MyBatis作为一款半自动的持久层框架,其核心原理在于将SQL控制权交还开发者,同时通过智能的结果集映射消除JDBC的模板代码。这一设计带来了显著的技术价值:开发者可以编写和优化原生SQL,充分利用数据库特性,并借助动态SQL能力安全、灵活地构建复杂查询条件。在互联网、金融等对数据库性能有严苛要求的应用场景中,这种“SQL-Mapping”模式成为事实标准。本文通过S

weixin_30781433的博客 479

camel jdbc 执行SQL语句

camel jdbc

萌级小菜鸟的博客 2420

db2jcc.jar升级到db2jcc4.jar出现的问题

db2jcc.jar升级到db2jcc4.jar发现getColumnName()的含义发生了变更,从而出现了bug

甘蓝的专栏 892

camel的jdbc组件,个人使用不当,导致不释放连接数

造成问题原因:使用开源camel的jdbc组件,传创建好datasource对象,给camel的job执行,发现camel执行完,数据库连接数仍然不释放,造成连接数猛增。 排查解决方法: 1.camel不会把datasource进行关闭,需要在创建datasource对象,增加这两个参数: datasource.setMaxIdle(0); datasource.setTimeBetweenEvictionRunsMillis(60*1000); 2.额外使用...

hhj724的专栏 709

Spring Boot+MyBatis+MySQL实战:学生信息管理系统开发全流程

Java Web开发中,分层架构与数据库交互是核心基础。通过Spring Boot整合MyBatis操作MySQL,可以快速构建稳定、可维护的业务系统。本文从数据库表设计、连接池配置到Service层事务处理,系统讲解学生信息管理系统中的增删改查、分页搜索与登录拦截等经典功能,并深入剖析SQL注入防护、连接池泄漏等高频工程问题。无论是课程设计还是企业内部工具,掌握这套技术栈都能让你从零搭建一个真正可用的Web应用,同时夯实Java面试中常考的事务、预编译与内嵌容器等底层原理。

weixin_34178244的博客 413

ApacheCamel-JDBC

ApacheCamel-JDBC Apache Camel JDBC组件 代码样例Demo

Camel in Action组件大全:File、JMS、JDBC、Mail、Netty等9大组件配置清单与避坑指南

Camel in Action(第2版)是 Apache Camel 经典著作的官方配套源码项目,其第6章集中演示了 9 大核心组件的实战配置:File、FTP、JMS、JDBC、JPA、Mail、Netty、SEDA、Scheduler/Quartz。本文把书中 10 个示例模块浓缩成一份配置清单 + 避坑指南,新手照着就能快速上手,避免踩书中没细说的常见坑。 ## 📋 9大Camel组件配

gitblog_00340的博客 453

Win11右键菜单显示更多选项设置默认展开方法

在Windows 11操作系统中,用户可能会发现右键点击桌面空白处时,弹出的菜单中仅显示“显示更多选项”,而并非直接展示所有可用的选项。这对于希望快速访问特定功能的用户来说,无疑增加了一些不便。为了优化这一体验,本文将介绍两种简单的方法,帮助用户设置Win11右键菜单,使其默认展开包含的所有选项。通过上述两种方法,用户可以轻松地将Win11右键菜单设置为默认展开所有选项,从而提高工作效率和便捷性。希望这篇文章对你有所帮助!

nntxthml的博客 1万+

终极实战指南:Apache Camel企业集成模式深度解析

在当今微服务架构和分布式系统盛行的时代,企业面临着前所未有的集成挑战——不同系统间的数据孤岛、协议异构、异步通信复杂性等问题层出不穷。Apache Camel作为业界领先的企业集成框架,通过其优雅的DSL和丰富的组件库,为这些棘手问题提供了完美的解决方案。 ## 🎯 核心价值:为什么选择Camel进行企业集成? Apache Camel不是一个简单的库,而是一个完整的集成框架生态系统。它的核

gitblog_00604的博客 408

数字IC时序约束实战:深入解析clock_uncertainty的设置策略与后端影响

本文深入探讨数字IC设计中clock_uncertainty的设置策略及其对后端实现的影响。通过分析时钟不确定度的组成(包括clock_skew、clock_jitter和margin),并结合实际项目经验,详细介绍了在不同设计阶段(综合、布局布线、签核)的动态调整方法。文章还提供了工程化处理参数来源、跨时钟域特殊处理以及优化时序收敛的实用技巧,帮助工程师提升数字IC设计的可靠性和性能。

weixin_29284657的博客 229

Python小波变换实战:用PyCWT分析气候数据(附完整代码)

本文详细介绍了如何使用Python中的PyCWT库进行小波变换分析,特别针对气候数据(如NINO3海温异常数据)的多尺度周期性特征提取。通过完整的代码示例,从数据预处理、小波参数配置到结果可视化,逐步指导读者掌握小波变换在气候研究中的实际应用。

weixin_29088655的博客 282

Cube Core JDBC 数据库驱动深度解析:连接池、数据源配置与版本演进

Cube Core 作为面向 AI、BI 与嵌入式分析的开源语义层,其 `@cubejs-backend/jdbc-driver` 包为无法使用专用原生驱动的数据库(如 MySQL、Athena、Spark SQL、Hive)提供了一条基于标准 JDBC 协议的通用接入通道。本文以该包的 [CHANGELOG.md](https://link.gitcode.com/i/c27ce98b89725

gitblog_00968的博客 743

12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

7805线性三端稳压 DCDC的意思是直流变到直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器,或称之为开关电源或开关调整器。 7805属于常用的线性三端稳压器,输入电压范围不大于35V,输入输出压差2V,最大输出电流1.5A,下图为原理图,其原理简单,使 用方便,深受很多用户的喜爱。但是其不足之处就是效率低,特别是压差越大时其效率越低。比如这里12V转5V的效率为 5V/12V≈41.7%。 如上电路是最经典的7805稳压5V电路,电路中有两个电容,电容的作用如下: ...

a2001444的博客 9万+

MySQL\jdbc\mybatis\Restful

数值类型字符串类型日期时间类型。

m0_47518801的博客 190

2025年人形机器人产业研究

人形机器人是一种模仿人类外形、动作和行为的机器人,旨在替代或辅助人类完成各种任务。其显著特征包括人类外形、动作模仿和智能交互能力。根据形态和功能,人形机器人可分为小型、中型、大型以及服务型、工业型、救援型和娱乐型等类别。发展历程经历了初始阶段、高度集成系统阶段和突破性进展阶段,技术不断进步。关键技术包括执行系统、控制系统和感知与交互系统,涉及机械结构、运动控制、平衡控制、任务执行控制以及感知与交互能力。主要研究方向包括外部仿人化和内部仿生,前者关注外观设计、动作控制和任务执行能力,后者致力于模拟人类核心机制

一名80后IT人的成长记录,记录自己在工作、学习中的点点滴滴,在成长的喜悦与忧心的故事里,铭记反脆弱的勇气。 1571

读懂 SAP Fiori Administration Catalogs:从管理员入口、权限编排到 Spaces 和 Pages 的落地实践

SAP Fiori 管理员目录的核心价值在于为系统配置提供标准化入口,解决权限与展示分离的问题。随着 SAP_UI 7.55 版本更新,SAP_FLP_ADMIN 角色整合了关键管理工具(如 Launchpad Designer、Content Manager),并通过 Business Catalog 和 Space 的协同作用,确保管理员既能访问配置工具,又能直观查看相关功能入口。项目实施中需注意配置层级(系统级/客户端级)的选择,以及多人协作时的数据同步问题,以提升交付效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 196

常见的配置

数据库的连接配置# 数据库配置。

qq_71356343的博客 232

Codex 调试记录获取完全指南:日志查看、工具调用与实战排查教程

本文主要介绍了Codex 调试记录获取完全指南:日志查看、工具调用与实战排查教程,希望能对使用Codex的同学们有所帮助。 文章目录 1. 背景 2. 实战教程

weixin_43178406的博客 6万+

企业财务与薪资管理系统技术解析与实现

企业财务管理系统与薪资管理系统是企业信息化建设中的核心模块,涉及复杂的业务规则与数据处理。基于SpringBoot和Vue的技术栈组合,能够有效实现高并发、高可靠性的企业级应用。系统设计需重点关注事务管理、审计日志和性能优化,确保财务数据的准确性和安全性。薪资计算引擎需要支持多规则组合和地区差异化政策,而财务模块则需满足凭证管理、报表生成等核心需求。通过合理的技术选型和架构设计,可以显著提升企业财务与薪资管理的效率和合规性,解决传统Excel操作带来的效率低下和数据风险问题。

weixin_34301132的博客 394

GhidraMCP:AI驱动的逆向工程革命——让LLM自主操作Ghidra进行自动化分析

(Ghidra Machine Control Protocol)应运而生,它通过将LLM与Ghidra(美国NSA开源逆向工具)结合,实现了AI驱动的自动化逆向工程流程。逆向工程是软件安全、漏洞分析和代码审计的核心环节,但传统方法依赖人工分析,耗时且易出错。未来,随着LLM技术的演进和逆向工程工具的优化,GhidraMCP有望成为安全研究人员和开发者的核心工具,推动逆向工程进入“AI辅助时代”。GhidraMCP通过LLM与Ghidra的深度整合,重新定义了逆向工程的自动化边界。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 2116

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Spring: MyBatis操作数据库1

在创建出来的SpringBoot⼯程中,在src下的test⽬录下,已经⾃动帮我们创建好了测试类 ,我们可以直接使⽤这个测试类来进⾏测试.我们在上⾯查询时发现, 有⼏个字段是没有赋值的, 只有Java对象属性和数据库字段⼀模⼀样时, 才会进⾏赋值,接下来我们多查询⼀些数据。如果使⽤ MySQL 是 5.x 之前的使⽤的是"com.mysql.jdbc.Driver",如果是⼤于 5.x 使⽤的。但是这样的话, 只能查找id=4的数据, 所以SQL语句中的id值不能写成固定数值,需要变为动态的值。

Y20051106的博客 127

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ADF sequence

概述     在Oracle相关应用中,经常使用Sequence作为主键,而在Oracle ADF应用中,应用Sequence自动产生主键也是非常方便的,文本中将介绍两种比较通用的使用方法。 实现 方法一     编写Java代码,即在Entity Object的实现类中重写create()方法,利用Oracle ADF提供的SequenceImpl帮助类实现Sequence值的生成,而在

freedom 399

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring Boot适配openEuler+openGauss:国产化迁移完整实践指南

在国产化替代进程中,后端应用从传统Linux与MySQL组合迁移到openEuler操作系统与openGauss关系型数据库,已成为政务、金融等领域的常态化需求。openEuler作为开源操作系统,与openGauss这一基于PostgreSQL内核增强的数据库共同构建了自主技术底座,而Spring Boot作为主流Java开发框架,其生态与二者间的适配路径值得开发者系统掌握。从技术原理看,openGauss兼容PostgreSQL协议,JDBC驱动与SQL语法存在差异,因此连接配置、自增策略、远程访问认证

weixin_33836874的博客 460

从零搭建生产级AI智能客服系统(二):项目初始化与基础环境搭建

上一章我们介绍了整个项目的背景、技术栈和整体规划。从本章开始,我们将正式进入代码开发阶段。Spring Boot后端项目初始化Vue3前端项目初始化集成豆包API,配置大模型Bean实现第一个最简单的聊天接口前后端联调,验证大模型调用正常所有代码都经过验证,直接复制就能跑通,全程没有任何坑。✅ Spring Boot 2.7.18后端项目初始化✅ 集成MyBatis-Plus和MySQL✅ 配置豆包API,创建三个大模型Bean✅ 实现第一个同步聊天接口。

hy9523的博客 294

JavaWeb知识点

1.Maven中的仓库用来存储什么的?Maven的仓库是用来存储和管理jar包的2.Maven中有哪几类仓库?查找依赖(jar)的顺序是什么样的?本地仓库(1)远程仓库(2)中央仓库(3)

ql200106的博客 304

springboot 整合 mybatis(AOP、@Transactional事务 )

springboot 整合 mybatis(AOP、@Transactional事务 )

pig_ning的博客 597
上一篇: Apache Camel - 17 - Timer组件
下一篇: WebService(9)_Apache CXF_CXFFrame_发布框架
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值