- 博客(51)
- 资源 (17)
- 收藏
- 关注
原创 【Java面试题-基础知识04】Java集合连环问
a. Collection 接口:是所有集合类的根接口,它定义了集合类的基本行为,如添加、删除、遍历等操作。d. Map 接口:表示键值对的集合,每个键值对都是唯一的。b、使用 Iterator 接口的 hasNext() 和 next() 方法进行遍历,可以通过 remove() 方法安全地删除集合中的元素。在 Java 中,集合框架(Collection Framework)是一组用于存储和操作对象集合的类和接口的统一架构。返回的列表是一个固定大小的列表,不支持添加或删除操作。有问题,这段代码会抛出。
2024-03-18 07:15:00 291
原创 【Java面试题-基础知识03】Java线程连环问
如果核心线程已经全部被占用,而且任务队列也已满,那么新任务就会创建额外的线程,直到达到最大线程数为止。d. 线程存活时间(Keep Alive Time):当线程池中的线程数量超过核心线程数时,多余的空闲线程在经过一定时间后会被终止并从线程池中移除,以减少资源消耗。继承Thread类:创建一个类并继承Thread类,在该类中重写run()方法,并在其中定义线程执行的任务。支持共享资源:由于不是继承线程类,因此可以将多个线程共享的资源放在实现 Runnable 接口的类中,更容易实现资源共享。
2024-03-17 15:53:44 189
原创 【Java面试题-基础知识02】Java抽象类和接口六连问?
/ 步骤 2:创建具体子类,实现抽象类中的抽象方法。// 步骤 2:创建具体策略类,实现接口中定义的算法。// 钩子方法,子类可以覆盖它以提供特定实现。// 通过重写钩子方法,可以选择不添加调料。// 步骤 1:创建一个接口,定义算法的统一接口。// 步骤 1:创建一个抽象类,定义算法的骨架。// 子类 Dog 继承自抽象类 Animal。// 实现接口 Animal 的类 Dog。// 实现接口 Animal 的类 Cat。// 抽象方法,需要在子类中实现。// 具体方法,被子类继承和复用。
2024-03-17 15:52:40 539
原创 【Java面试题-基础知识01】Java数据类型四连问?
b、包装类型是基于对应的基本数据类型创建的类,是对象,具有属性和方法。a、基本数据类型是原始数据类型,直接存储数据值,不具备对象的属性和方法。a、基本数据类型的操作通常比包装类型更高效,因为它们不涉及对象的创建和销毁,直接操作数据值。b、包装类型的操作可能会产生性能开销,因为涉及对象的创建和销毁,以及额外的内存空间开销。装箱是指将基本数据类型转换为对应的包装类对象,而拆箱则是将包装类对象转换为基本数据类型。b、在需要将数据值作为对象处理,或者需要使用对象的属性和方法时,可以使用包装类型。
2024-03-14 21:37:53 234
原创 kettle从入门到精通 第五十课 ETL之kettle 课程源文件分享
在过去的几个月里,我已经撰写了将近50篇关于 Kettle 的文章,涵盖了各种主题和用例,如数据抽取、数据转换、数据加载、调度任务等等。总的来说,Kettle 系列文章的撰写已经成为我工作的一大重要组成部分,我将继续努力完善内容,分享更多有价值的知识和经验,帮助更多人在数据处理领域取得成功。随着整理工作的进行,我将会对这些文章进行分类整合,并补充更多实用的示例文件,以丰富读者的学习体验。同时,我也将重点关注读者的反馈和需求,根据大家的建议来调整内容,确保文章能够满足不同层次读者的需求。
2024-03-13 21:51:32 428
原创 kettle从入门到精通 第四十九课 ETL之kettle 自定义插件01
这个功能可以用插件替换Kettle内置的步骤。Kettle内部的对象与外部插件没有任何区别,因为他们使用的API都一样的,只是运行时的加载方式不同。从Kettle 4开始,Kettle内部有一个插件注册系统,负责加载各种内部和外部的插件。Kettle的插件架构使得我们可以不用修改Kettle本身代码,通过一些独立的代码就可以扩展Kettle的功能。当Kettle环境初始化以后,插件注册系统首先会加载所有的内部对象,Kettle读取下面的配置文件来加载内部对象,这些配置文件位于Kettle的.jar文件中。
2024-03-13 21:50:33 396
原创 kettle从入门到精通 第四十八课 ETL之kettle webspoon
1、kettle自带的客户端spoon工具是cs架构,多人协同办公起来不是特别方便。webSpoon是一个基于Web的图形化设计工具,用于Pentaho数据集成,具有与Spoon相同的外观和感觉。可以在Web浏览器中设计和执行Kettle转换/作业文件。要使用webSpoon,浏览器直接访问http://localhost:8080/spoon/spoon,具体IP地址和端口号可能会有所不同。注:webSpoon是web端在线编辑kettle文件,开发测试的环境而已,不适用生产环境运行转换或者job文件。
2024-02-28 20:41:18 205
原创 kettle从入门到精通 第四十六课 ETL之kettle mongo input查询
MongoDB(简称Mongo)是一种开源的文档数据库管理系统,它采用了非常灵活的文档模型,可以存储和处理各种类型和结构的数据。MongoDB是一个面向文档的数据库,意味着它的数据存储在称为文档的BSON(二进制JSON)格式中。Read preference(针对集群配置):指定首先读取哪个节点:主节点(primary)、首选主节点(primary preferred)、从节点(secondary)、首选从节点(secondary preferred)或最近节点(nearest)。留空以永远不终止连接。
2024-02-23 22:15:19 656 1
原创 kettle从入门到精通 第四十五课 ETL之 kettle redis
步骤【生成记录】生成一笔测试数据,步骤【Java代码-redis-set】往redis里面写数据,步骤【Java代码-redis-get】从redis读取数据,如下图所示。1、kettle 9.3/9.4 spoon客户端中默认是没有redis步骤的,首先想到在kettle的插件市场进行下载redis步骤。2、可能因为网络原因,直接下载失败了。索性放弃redis原有插件步骤,改为自己通过java代码进行实现,(下面代码中标红的部分为关键代码,其他为模版代码。下面代码中标红的部分为关键代码,其他为模版代码。
2024-02-23 22:13:31 761
原创 kettle从入门到精通 第四十四课 kettle 去重
3、根据name字段进行去重,hashset的去重逻辑是不存在重复数据插入hashset,存在则不插入,所以name为Java小金刚的数据保留了第一条,如下图所示。这只适用于已排序的输入。5、使用步骤【自定义常量数据】生成4条数据,然后通过步骤【排序】根据name进行排序,最后通过步骤【去除重复记录】进行去重。2、下面示例比较简单,使用步骤【自定义常量数据】生成3条数据,然后通过步骤【唯一行(哈希值)】进行去重。4、使用步骤【自定义常量数据】生成4条数据,然后通过步骤【去除重复记录】进行去重。
2024-02-21 10:53:06 190
原创 kettle从入门到精通 第四十三课 kettle 多对1表合并同步
2、下图通过sql 语句的join 进行关联,表输入【读取student&teacher】步骤读取join之后的数据集,表输出【写入student_third】步骤将数据写入表student_third。a、表输入【读取student】步骤读取student数据,然后通过排序步骤【student排序】升序排序,当然这里的排序步骤也可以省略通过表输入中的sql的order by 方式实现。d、表输出【写入student_third】步骤将数据写入表student_third。
2024-02-20 09:29:41 437
原创 kettle从入门到精通 第四十二课 kettle 1对多表拆分同步
2、下图涉及到的步骤比较简单,表输入【读取三方学生信息表】加载源数据,从student_third表中读取数据,javascript代码【根据teachernameMd5计算出teacherSerialno】通过md5计算外键,表输出【写入学生信息表】写入student表,1、在有的业务场景中,会涉及一对多表拆分同步的业务场景,也就是说原表是一张表,将原表字段进行拆分放入目标库中的多张表,如下面的示例将表student_third中的数据。6、步骤【写入学生信息表】实现逻辑比较简单,如下图所示。
2024-02-19 08:41:04 367
原创 kettle从入门到精通 第四十一课 kettle 事务(单个转换文件)
6、 当name=超级无敌Java小金刚,且不开始事务的情况下时,t1写入失败,t2写入成功,因为字段name的长度不符合t1表中name字段长度,字段name的长度不符合t2表中name字段长度。2、通过生成记录步骤生成一条数据,通过复制的方法同时写入t1和t2 两个表,t1写入和t2写入是两个执行sql语句步骤,如下图所示。7、 当name=超级无敌Java小金刚,且开始事务的情况下时,t1写入失败,t2写入失败。8、 当name=Java小金刚,且开始事务的情况下时,t1写入成功,t2写入成功。
2024-02-04 20:20:41 442
原创 kettle从入门到精通 第三十九课 kettle 增量同步(日级)
4、 同步T1表中T-1日数据至T2表的具体实现转换逻辑如下图所示,这里为了方便演示t1和t2表的表结构是一样的,当然可以是不一样的。后续会讲解下表1对N,N对1,N对N的同步案例。2、kettle增量全量同步示例依然基于test数据库,从t1表增量同步数据到t2表,假定每天0点跑批将t1表中的t-1日的数据同步到t2表中,如下图所示。c、删除t2表中T-1日的数据、同步T1表中T-1日数据至T2表是两个转换步骤,每个转换步骤引用自己的具体实现转换文件。b、同步t1表中t-1日数据至t2表。
2024-02-04 20:19:07 292
原创 kettle从入门到精通 第三十八课 kettle 分页全量同步(数据量大)
5、计算offset步骤是javascript 步骤,这里通过一个for循环,将一条数据转换为多条数据,输出offset和currPage,最后通过SKIP_TRANSFORMATION 跳过for外层的进程。c、truncate_test_t2、query_test_t1_totalPage、循环抽数是三个转换步骤,每个转换步骤引用自己的具体实现转换文件。2、kettle分页全量同步示例依然基于test数据库,从t1表全量同步数据到t2表,由于t1表的数据比较大,所以选择分页全量同步策略,如下图所示。
2024-02-02 13:23:24 223
原创 kettle从入门到精通 第三十七课 kettle 全量同步(数据量小)
3、truncate_test_t2的转换逻辑比较简单,每次同步数据之前将目标表t2 表数据清空,当然也可以采用delete 语句,不过delete 语句在大数据量的情况下性能比较差。4、全量同步(表数量小)的具体转换文件如下图,从t1表读取数据,经过一些列的转换映射等操作,写入t2目标表。2、今天给大家分享全量同步的示例,基于test数据库,从t1表全量同步数据到t2表,由于t1表的数据比较小,所以选择全量同步策略,如下图所示。离线数据:对实时性要求不高,可以分钟级、小时级、日级等。
2024-02-02 13:22:10 384
原创 kettle从入门到精通 第三十六课 kettle carte 集群
7、集群模式运行转换文件。通过集群提交时,作业或者转换是通过集群Master提交作业,Master和多个Slave采用动态抢占式(排它锁)机制抢占任务,实施任务的运行操作。5、基于子服务器列表创建kettle集群schemas,选择设置好的子服务器,这里演示采用静态cluster,Dynamic cluster模式支持动态添加子服务器。carte-config-8082.xml 配置文件同carte-config-8081.xml 配置文件类似,这里省略。3、启动从carte服务。
2024-02-02 13:21:13 868
原创 kettle从入门到精通 第三十五课 kettle 变量
kettle.properties文件的位置可以通过设置KETTLE_HOME来指定,如设置KETTLE_HOME 为/opt/kettle/home,则kettle.properties文件的路径为/opt/kettle/home/.kettle/kettle.properties。`${Internal.Entry.Current.Directory.Filename}`:当前作业或转换文件的完整路径和文件名。c、如果解析一个依赖于另一个变量的变量,可以这样使用:${%%inner_var%%}。
2024-02-02 13:20:17 723
原创 kettle从入门到精通 第三十四课 kettle 错误处理
ERR_NAME` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '错误名称',`ERR_NUM` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '错误行',4、把错误信息入库是个不错的选择,方便后续排查问题且可以根据错误信息表进行邮件预警,如下图所示。
2024-01-28 12:22:59 646
原创 kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片
4、若表中的分区字段不是日期类型,也可以通过kettle相关步骤(如javascript)转换为日期类型的字段供表输出使用,也可以达到同样的效果。5、上面提到的表分区仅仅是简单的日期切片,如果想实现更复杂的分片策略,自己利用kettle步骤自定义设计灵活实现即可。1、之前第九章有讲过kettle 表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下。此值用于生成要插入数据的日期表名称。每个月分区数据和每天分区数据是互斥的,只能二选一,分区表需要自行创建哦,参考如下截图。
2024-01-28 12:22:15 456
原创 kettle从入门到精通 第三十二课 mysql 数据连接集群/分区配置
这里分区策略选择Remainder of division,同时选择一个分区路由字段,这里选择age字段,age/分区总数3剩余的商就是数据同步到哪个分区,分区编号从0开始,如下图所示。4、创建数据库分区schemas,在“主对象树”的“数据库分区schemas”上点右键“新建”,在弹出窗口中输入“分区schema名称”,然后点击“导入分区”按钮,如下图所示。3、有两个数据库test1和test2,两个数据库里面都有一个相同的表,名为student,每个表里有一条数据,如下图所示,后面会用到。
2024-01-28 12:21:33 305
原创 kettle从入门到精通 第三十一课 mysql 数据连接连接池配置
通过开启poolPreparedStatements参数,连接池在执行SQL语句时会先进行预编译并缓存起来,下次执行相同的SQL语句时就可以直接使用缓存的预编译语句,而不需要重新进行编译,从而减少了数据库的工作量,提高了数据库操作的执行效率。设置为false时,连接池不会进行自动移除被抛弃的连接。允许访问底层数据库连接可以给开发人员提供更多的灵活性,他们可以直接操作底层数据库连接来执行一些特定的、连接池无法满足的操作,但这也增加了对数据库连接的直接控制,需谨慎操作以避免对连接池的稳定性和性能造成影响。
2024-01-28 12:20:47 686
原创 kettle从入门到精通 第三十课 mysql 数据连接常用配置
当启用 “rewriteBatchedStatements” 选项时,Kettle 在向数据库提交批处理写入时,会尝试重写相应的 SQL 语句,把多条插入操作合并成一条批量插入的语句,以减少通信开销和提升性能。反之,如果将"failOverReadOnly"参数设置为false,那么连接池在发生故障时会将所有的操作都重定向到备用节点或其他可用的数据库服务器上,无论是只读操作还是写入操作。当该参数设置为true时,表示连接的目录将被视为当前目录,而当设置为false时,将不会将连接的目录视为当前目录。
2024-01-28 12:20:10 950
原创 kettle从入门到精通 第二十九课 job 循环 检验字段的值
1、平常我们在用kettle设计job的时候,会用到循环来处理一些业务逻辑,比如循环检测某个表中的数据条数等。这个时候就会用到一个特别重要的步骤:检验字段的值。下图是一个的通过初始化DNOE变量为false,等待3s之后更新DONE变量为true的一个循环demo。2、设置变量步骤,可以从属性文件中读取,也可以自行设置。
2024-01-28 12:19:31 380
原创 kettle从入门到精通 第二十八课 初识kettle-job
方法是写两个批量,一个是每天4点执行,一个是不需要定时,手动通过kitchen工具触发调用carte执行。Start步骤达不到quartz的效果,更多复杂的触发频次需要转换内实现,或者通过其他方式触发转换文件,如shell ,应用程序等。1、前面我们一起学习了,很多转换的知识,转换为批量的开发做铺垫,今天我们一起来学习下kettle job的知识。重复:此选项很重要,如5分钟,5小时,5天等执行一次时,需要勾选此选项。3、步骤之间的连线有三种图标(锁,对勾,叉号),点击可进行切换 ,分别如下图所示。
2024-01-28 11:51:54 288
原创 kettle从入门到精通 第二十七课 邮件发送
1、我们平常在做数据同步的时候,担心转换或者job没有正常运行,需要加上监控机制,这个时候就会用到邮件功能。发送电子邮件的电子邮件地址,以空格分隔的电子邮件地址列表,或者是一个分发列表,以便发送电子邮件的密件副本。发送电子邮件的电子邮件地址,以空格分隔的电子邮件地址列表,或者是一个分发列表,以便发送电子邮件的副本。电子邮件的目标地址。可以是单个地址,以空格分隔的地址列表,或者是一个分发列表的电子邮件别名。如果选中,转换的信息将不会包含在内,只有来自“评论”字段的内容将会被发送到邮件的正文中。
2024-01-28 11:51:17 377
原创 kettle从入门到精通 第二十六课 再谈 kettle Transformation executor
指定一个数字,表示每N行数据执行一次任务,并将这N行数据传递给转换步骤进行处理。这里默认是1,表示一笔一笔的处理,速度非常慢,可以根据自己的要求设置大一点的数,如100,但是如果数据达不到100条,会一直等待直到数据满100条才会进行处理。使用的是Transformation executor步骤,最后Speed 列表示处理速度,很明显440 远远小于上有步骤kafka的处理速度1567,此处就是瓶颈。,但后来测试kettle性能的时候遇到了很大的问题,此步骤的处理性能太慢,导致内存溢出等问题。
2024-01-28 11:50:30 161
原创 kettle从入门到精通 第二十五课 kettle 再谈 kafka-consumer 步骤
前面写过kafka-consumer步骤初步使用教程,参考https://www.cnblogs.com/zjBoy/p/17296564.html,不过在使用此步骤的过程中还是遇到了一些问题,故在此和大家重新学习下kafka-consumer。1、Duration和Number of records参数是两种拉取数据的方式,设置其中一个即可,另外一个设置为0,根据自己情况自行设置。这种方式可以确保即使在处理中断或出现错误时,已经读取的记录都已经提交到目标数据库中,不会出现数据丢失的情况。
2024-01-28 11:49:48 257
原创 kettle从入门到精通 第二十四课 kettle 部署生产常用命令
2、浏览器访问http://127.0.0.1:8080/kettle/stopCarte/,然后输入用户名和密码(cluster:cluster)注意:Authorization 计算方法: "Authorization: Basic base64(username:password)"http://127.0.0.1:8080/kettle/status/,输入用户名和密码,默认cluster/cluster。3、& 可以使carte以后台服务方式运行。三、停止carte服务的几种方式。
2024-01-28 11:49:06 303
原创 kettle从入门到精通 第二十三课 kettle carte 错误(java.lang.OutOfMemoryError: GC overhead limit exceeded,Could not
原因有两点:1)消费者处理数据能力较弱,如表输出步骤。2)消费者没有处理数据,如传递的数据中有字段type=1的数据,这种情况没有处理。设置kettle 启动参数,在spoon.sh或者Spoon.bat中进行设置,自己根据实际情况设置大小。解决方案:提高行集大小KETTLE_TRANS_ROWSET_SIZE=100000 或多线程处理(同上)针对 2)调整处理程序,处理所有情况数据,或者设置默认处理程序。原因:行集设置过大或者kettle 内存设置较小。原因:行集设置过小或者消费者消费能力弱。
2024-01-28 11:48:04 235
原创 kettle从入门到精通 第二十二课 kettle carte web服务中文乱码
安装字体即可,无需重启机器,如果不生效,试着重启下carte服务,参考如下连接安装字体https://blog.csdn.net/weixin_42477023/article/details/129618900。原因:linux 机器缺少字体所致。
2024-01-28 11:47:15 83
原创 kettle从入门到精通 第二十一课 kettle Carte服务器
Kettle可以用JNDI的方式来引用JDBC连接参数,如IP地址、用户认证,这些连接参数最终用来在转换和作业中构造数据库连接对象。Kettle里有一个概念叫共享对象,其类似于转换的步骤、数据库连接定义、集群服务器定义等这些可以一次定义,然后在转换和作业里多次引用的对象。web查看 http://ip:8080/kettle/status/,用户名和密码 cluster/cluster。5)停止Carte服务 http://ip:8080/kettle/stopCarte/6)、carte web控台。
2024-01-28 11:46:34 319
原创 kettle从入门到精通 第十九课 kettle 资源仓库
4)kettle 内置变量${Internal.Entry.Current.Directory} 表示文件的当前路径,其中文件存储方式支持类似${Internal.Entry.Current.Directory}/../b.ktr这种方式,但是数据库。2)数据库db存储,此种方式适合团队协作,可以将文件存储到数据库里面,kettle会自动创建相关表结构。1、kettle 里面的资源仓库的意思就是存放转换(.ktr)或者job(.kjb)文件的地方。1)本地文件存储,此种方式最简单,适用于本地单人开发测试。
2024-01-28 11:45:37 140
原创 kettle从入门到精通 第十八课 kettle Metadata Injection
1、Metadata Injection 类似于java里面的模版,设置通用的模版,通过输入不同的数据,得到不同的结果。2、设置模版,设置模版时,只需要根据自己的需要拉取一些控件,以及设置控件之间的关系,无需设置控制的具体属性,有个前提用到的控件需要支持元数据注入。5、设置模版参数,也就是给模版控件(Concat fields控件)设置数据源,目标字段,待拼接字段等属性。设置哪些属性,根据个人需要。4、设置模版,模版里面有些默认值是可以设置的,如Concat fields控件中的Separator属性。
2024-01-27 11:59:18 374
原创 kettle从入门到精通 第十七课 kettle Transformation executor
4)更多设置参考官网 https://help.hitachivantara.com/Documentation/Pentaho/9.2/Products/Transformation_Executor。2)字段:设置从主流程获取的字段,字段名称需要和主流程传递的字段名称一致,这点和映射步骤是不一样的,映射步骤不要求传递字段一致。1、子转换需要配合使用从结果获取记录和复制记录到结果两个步骤,而子映射需要配合映射输入规范和映射输出规范使用。3、复制记录到结果步骤,无需进行任何设置。1)步骤名称:自定义。
2024-01-27 11:57:59 390
原创 kettle从入门到精通 第十六课 kettle 映射 (子转换)02
1、上节讲的子映射里面只有一个转换(类似一个java类里面只有一个公共方法),本次讲解的有两个,实际上可以有任意多个(一个java类里面有多个公共方法)。1)Available outputs 可以点击加号增加多个输入,本示例有两个输出,分别是映射输出规范和映射输出规范2。4)输出目标步骤名(如果只有一个后继步骤,该项可以为空):选择一个后继步骤。3)输入原步骤名(如果只有一个前驱步骤,该项可以为空):选择一个前驱步骤。4)子转换里的“映射输入接口”步骤名:选择一个映射输入规范。
2024-01-27 11:57:11 179
原创 kettle从入门到精通 第十五课 kettle 映射 (子转换)01
5)更多细节参考官网https://help.hitachivantara.com/Documentation/Pentaho/9.2/Products/Simple_Mapping_(sub-transformation)1、kettle 里面的映射和java代码里面的封装是一个概念,就是将一个可复用的模块单独抽离为公共模块供其他模块引用,用到的步骤或者组件如下。2、构建子映射,子映射需要用到映射输入规范和映射输出规范两个组件,相当于输入和输出参数,如下图所示。4)输出:输出参数设置。
2024-01-27 11:56:23 161
原创 kettle从入门到精通 第十四课 kettle kafka 生产者和消费者
5)Key field:在Kafka中,所有消息都可以进行键控,允许在默认路由方案中根据消息的键将消息分发到分区。2)connection:选择Direct,然后Bootstrap servers:填写kafka地址ip+port格式,kafka集群中间逗号分隔。3)connection:选择Direct,然后Bootstrap servers:填写kafka地址ip+port格式,kafka集群中间逗号分隔。4、kafka consumer 步骤,可以从kafka中读取消息。
2024-01-27 11:55:26 233
原创 kettle从入门到精通 第十二课 kettle java代码过滤记录、利用Janino计算Java表达式
3、利用Janino计算Java表达式,主要作用是根据以后字段进行计算,然后返回新增字段或者覆盖原有字段。1、下图通过简单的示例讲解了根据java代码过滤记录和利用Janino计算Java表达式两个组件。3)接收不匹配的行的步骤(可选):下面条件(java表达式)执行结果为false时流转的步骤。2)接收匹配的行的步骤(可选):下面条件(java表达式)执行结果为true时流转的步骤。4)条件(java表达式):java表达式。2、根据java代码过滤记录。1)步骤名称:自定义。
2024-01-27 11:54:28 183
原创 kettle从入门到精通 第十一课 kettle javascript 解析json数组
要使用这些常量,必须首先在脚本开始时将trans_Status变量设置为CONTINUE_TRANSFORMATION,以便对正在处理的第一行进行变量赋值。本事例用到的数据结构list为:[{"name":"a","age":"11"},{"name":"b","age":"22"}]],[{"name":"c","age":"33"},{"name":"d","age":"44"}]]ABORT_TRANSFORMATION:从输出行集中排除当前行,并且不会处理任何剩余行,但不会生成错误。
2024-01-27 11:53:43 160
CRRedist2005_x86.7z
2019-06-22
c语言做的简单职工管理系统
2012-01-01
asp.net jquery 弹出层 及数据提交
2011-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人