Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。
但是本文重点不是讲Kettle安装和使用。
而是,如何使用Kettle处理Json文件,因为Kettle本身有一点点BUG,JsonInput不能直接处理Utf-8字符的json内容。
所以,要学会变通一下。本例子使用的Kettle版本为7.1,下载网址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/7.1/pdi-ce-7.1.0.0-12.zip/download
首先,打开Kettle的图形编辑界面。
windows版本的命令为Spoon.bat。
看到这个界面说明你的Kettle环境没有问题。
然后点击菜单 文件->新建->转换
开始一个json文件的处理流程。
然后,从核心对象里面拖一个json Input对象出来。
如果json文件不是UTF-8的而是GBK,这样就可以处理了。但是本宝宝不是这样的。
所以,又变通一下,拖了两个组件。
一个是文件内容加载到内存,一个是文本文件输出。
这两个组件都有编码处理的选择项,这样宝宝就可以处理UTF-8的json文件了。
然后就是用连接线把三个组件串联起来,非常简单。
Json Input组件的一些参数是这样配置,当然JsonPath语法不是本文重点。
文件内容加载到内存的参数配置:
文本文件输出的参数配置:
都配置好了,就可以运行了。
然后,去看输出的结果文件。本例子输出了一个csv文件file2.csv。
内容如下:
f2,f3,f4 "{""总分"":0,""rcAppId"":""a637725d-aabb-41e3-8128-713dd06f0b76"",""结果"":""拒绝"",""备注"":""征信不良记录"",""费率"":""0.009900""}",a637725d-aabb-41e3-8128-713dd06f0b76,征信不良记录
它是可以直接用Excel打开看的表格。
json源文件也贴上来。内容还是蛮复杂的,而且我还删减了部分内容。
{ "errorMessage": "", "errorCode": "", "responseData": { "总分": 0, "rcAppId": "a637725d-aabb-41e3-8128-713dd06f0b76", "结果": "拒绝", "备注": "征信不良记录", "费率": "0.009900" }, "持久化数据": { "lastModifiedTime": "2018-03-30 15:49:06", "bizDate": "2018-03-30", "errorCode": "", "productRcvId": 8, "rawData": { "request": { "app": { "minAmount": "5000.00", "purpose": "经营", "bizDate": "2018-03-30", "accountFourVerification": false, "agreeTime": 1522395949737, "orgId": 3, "isFirst": "false", "appAmount": "5884.00", "creditLine": "5884.00", "rate": "0.009900", "appId": "244d6d3d-2298-46ff-baaa-b252837585d7", "accountNo": "未选择", "isLine": "N", "partyId": "5224f0bc-55cd-4e62-bbec-192990881660", "maxAmount": "150000.00", "loaTime": "20180330154445", "period": 120, "amount": "5884.00", "loanUse": "经营", "productId": "08363214-a832-4f64-bb80-be352d8d0f0f", "externalId": "2", "interestEnumId": 2011001, "thruDate": 1837958400000, "fromDate": 1522339200000, "createBy": "13213571926", "statusId": 200100, "createTime": 1522395838000, "tenantId": "71f28286-f5b3-40e5-ab2f-049b66328b1f" }, "reference": { "enterprise": { "warmPromptMessage": "", "businessLicenseCode": "123456789123456789", "semiannualRevenue": "5282828", "industryInvolved": "", "isShow": true, "creditCode": "", "organizationCode": "", "accountNo": false, "name": "永嘉路", "revenueDocumentId": ["b25ef019-29ed-4e6b-abb1-69667d3793e0"], "businessPlaceType": "自有", "annualRevenue": "", "seq": 4 }, "frequentlyUsedAccount": { "mobilePhone": "13213571926", "accountNo": "6217370090101267356", "fourVerification": false }, "estate": { "area": "36", "isMortgage": false, "purchaseDate": "", "documentExplain": "", "court": "盛世豪城小区", "type": "住宅", "structure": "", "isLift": "电梯", "toward": "", "valuation": "108000", "estateAddress": { "address": "", "province": "内蒙古", "city": "巴彦淖尔", "district": "临河区" }, "isOwner": false, "documentId": ["0ae9d39e-f7ee-44b8-a92e-cdff108401a9"], "floor": "" }, "asset": [], "vehicle": { "isMortgage": false, "purchaseDate": "", "engineNumber": "", "documentExplain": "", "type": "", "plateNumber": "", "isOwner": false, "price": "", "driverLicense": "", "vin": "", "documentId": [], "brand": "", "vehicleLicense": "" } }, "rcAppTypeCode": "2", "tenantId": "71f28286-f5b3-40e5-ab2f-049b66328b1f", "custPerson": { "reservedCity": "巴彦淖尔", "graduateSchool": "", "weechatNo": "", "education": "", "contactInfo": [{ "workingUnit": "", "twoVerification": false, "weechatNo": "", "mobilePhone": "13623895652", "qqNo": "", "name": "江大头", "threeVerification": false, "idNo": "410825198702245568", "email": "", "seq": 1, "relation": "家人", "isFrist": true }, { "workingUnit": "", "twoVerification": false, "weechatNo": "", "mobilePhone": "13623895645", "qqNo": "", "name": "金城武张根硕", "threeVerification": true, "idNo": "15282319821014001X", "email": "", "seq": 2, "relation": "配偶", "isFrist": false }, { "workingUnit": "", "twoVerification": false, "weechatNo": "", "mobilePhone": "13623895654", "qqNo": "", "name": "刘浩", "threeVerification": false, "idNo": "", "email": "", "seq": 3, "relation": "同事", "isFrist": false }, { "workingUnit": "", "twoVerification": false, "weechatNo": "", "mobilePhone": "13623895651", "qqNo": "", "name": "江北", "threeVerification": false, "idNo": "", "email": "", "seq": 4, "relation": "朋友", "isFrist": false }], "gender": "", "ethnicity": "", "warmPromptMessage": "\n\t\t\t\t\t\t\n\t\t\t\t\t
温馨提示:
1.提供公户和密码。
2.社保局
3.社保局423
",
"idNo": "410326199804017527",
"permanentAddress": {
"address": "永嘉路",
"province": "内蒙古",
"city": "巴彦淖尔",
"district": "临河区"
},
"partyId": "5224f0bc-55cd-4e62-bbec-192990881660",
"formerName": "",
"email": "",
"seq": 1,
"identificationId": 1001,
"workingUnit": {
"occupation": "农、林、牧、渔、水利业生产人员",
"incomeProofDocumentId": ["9c4c086b-1bcd-483a-b8a3-fd34e178a48e"],
"unitNature": "国有企业",
"employmentDate": "",
"warmPromptMessage": "",
"companyName": "",
"averageIncome": "83839",
"unitSize": "",
"unitPhone": "",
"title": "中级领导",
"isShow": true,
"workingDate": "2018-03-19",
"afterTaxIncome": "939396",
"companyAddress": {
"address": "永嘉路",
"province": "内蒙古",
"city": "巴彦淖尔",
"district": "临河区"
},
"ptitle": "中级",
"workingEmail": "",
"companyIndustry": ""
},
"reservedFundsId": "134455",
"photoDocumentId": [],
"degree": "",
"health": "",
"isShow": true,
"creditBalance": "63044.00",
"graduateDate": "",
"reservedFunds": {
"password": "34566",
"city": "巴彦淖尔",
"username": "134455"
},
"qqNo": "",
"mobilePhone": "13213571926",
"mateThreeVerification": false,
"name": "常雨霖",
"firstThreeVerification": false,
"householdType": "",
"maritalStatus": "已婚",
"residenceAddress": {
"residenceType": "",
"address": "永嘉路",
"province": "内蒙古",
"telephoneNo": "",
"city": "巴彦淖尔",
"district": "临河"
},
"reservedFundsPassword": "34566",
"riskPreference": "1.00"
}
}
},
"tid": "71f28286-f5b3-40e5-ab2f-049b66328b1f",
"createBy": "net.transino.rce.app.biz.impl.DecisionEngineBizImpl",
"mobilePhone": "13213571926",
"createTime": "2018-03-30 15:49:01",
"durationSecond": 4.310,
"name": "常乐鑫",
"errorStack": ""
},
"isSuccess": true
}
最后是贴一下kettle转化配置文件k3.ktr内容:
k3 Normal /
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD EXECUTING_SERVER N EXECUTING_SERVER EXECUTING_USER N EXECUTING_USER CLIENT N CLIENT ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE METRICS_DATE Y METRICS_DATE METRICS_CODE Y METRICS_CODE METRICS_DESCRIPTION Y METRICS_DESCRIPTION METRICS_SUBJECT Y METRICS_SUBJECT METRICS_TYPE Y METRICS_TYPE METRICS_VALUE Y METRICS_VALUE 0.0 0.0 10000 50 50 N Y 50000 Y N 1000 100 - 2018/03/30 20:06:19.433 - 2018/03/30 20:06:19.433 N 文件内容加载至内存 JSON Input Y JSON Input 文本文件输出 Y JSON Input JsonInput Y 1 none N N N N N N Y Y N N f2 $.responseData String -1 -1 none N f3 $.responseData.rcAppId String -1 -1 none N f4 $.responseData.备注 String -1 -1 none N 0 Y N f1 480 400 Y 文件内容加载至内存 LoadFileInput Y 1 none N N Y N N UTF-8 D:\223.json 否 N f1 content None -1 -1 none N 0 N 192 432 Y 文本文件输出 TextFileOutput Y 1 none , " N N DOS None N Y D:\file2 N N N csv N N N N N N Y N N 0 f2 String none -1 -1 f3 String none -1 -1 f4 String none -1 -1 704 432 Y N
===================================
JSONPath语法
返回数组的最后两个值
List lastTwoName = context.read ("$. result.records[-2:].name" );
你可能感兴趣的:(java)
Java实现SQLite数据库克隆
行云斡
Java实战演练 数据库 java sqlite
Java实现SQLite数据库克隆题目要求过程整理分步实现完整代码改进空间转载请注明出处题目要求Writeaprogram(inJavaandusingJDBC)thatclonesaSQLitedatabaseandproducesatextual“backup”ofthecontents.ThistextualbackupshouldconsistofSQLstatementsthatwill
JAVA学习-类型信息.动态代理
守护者170
java学习 java 学习 开发语言
在Java中,动态代理是一种通过在运行时生成代理对象来拦截对目标对象的访问的技术。Java中的动态代理基于反射机制,利用反射生成代理类来实现对目标对象的代理。一、Java中的动态代理主要有两种方式:基于接口的动态代理和基于类的动态代理。它们的特点如下:1.基于接口的动态代理(JDK动态代理):基于接口的动态代理要求目标对象实现一个或多个接口。JDK动态代理使用'java.lang.reflect.
Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类
有只程序猿
Java黑皮书课后题 java
Java黑皮书课后题第11章:11.2(PersonStudentEmployeeFacultyStaff类)题目缺陷UML图代码Test02_MyDate.java:用于参考的MyDateTest02_Person.java:Person类Test02_Student.java:Student类Test02_Employee.java:Employee类Test02_Faculty.java:F
2020-10-09
weixin_45660257
笔记
java学习集合的目标1.会使用集合存储数据2.会遍历集合,把数据取出来3.掌握每种集合的特性集合框架的学习方法方式1.学习顶层:学习顶层接口,抽象类中共性的方法,所有的子类创建对象使用Collection接口定义的是所有的单列集合中共性的方法所有的单列集合都可以使用共性的方法没有带索引的方法继承:子类共性抽取形成父类(接口)List接口1.有序的集合(存储和取出元素顺序相同)2.允许存储重复的元
android 串口通信代码
weixin_44693887
移动开发 android java 开发语言 android studio
以下是在Android平台上实现串口通信的代码示例。要实现串口通信,需要先创建一个类来处理串口通信。下面是一个名为SerialPortHelper的串口帮助类的示例:importandroid.content.Context;importandroid.os.Handler;importandroid.os.Message;importjava.io.FileDescriptor;importja
Android RXjava实现子线程做耗时操作,比new Thread和handler更香
weixin_44693887
android rxjava
1.首先是在build.gradle里面引用下面两个库implementation‘io.reactivex.rxjava2:rxandroid:2.0.1’implementation‘io.reactivex.rxjava2:rxjava:2.0.7’2.创建CompositeDisposable。CompositeDisposable是一个存放Disposable的集合,它是一个容器Comp
android liveData更新UI数据
weixin_44693887
android
1.创建LiveData的javaBean对象publicclassModelBeanextendsLiveData{privateintflag;privateStringtime;privateStringbatteryStr;privateintbattery;//蓝牙连接状态privateintresourceId;privateBooleanisConnected;privateStri
Java实现日志全链路追踪.精确到一次请求的全部流程
王会举
java log4j
广大程序员在排除线上问题时,会经常遇见各种BUG.处理这些BUG的时候日志就格外的重要.只有完善的日志才能快速有效的定位问题.为了提高BUG处理效率.我决定在日志上面优化.实现每次请求有统一的id.通过id能获取当前接口的全链路流程走向.实现效果如下:一次查询即可找到所有关键信息.不再被多线程日志进行困扰了.1:日志打印框架log4j->logbacklogback是springboot默认自带的
Java EE 8 API.chm下载
007MDT
java-ee
自己在官网下载的文档,然后用绿色版的easychm制作的chm文件,英文版支持索引查找下载链接自己在网上找了好久都是csdn积分下载的对我这种新人属实不友好,所以就自己动手了,如果有帮助到你记得评论支持一下噢
JDK8 升级至 JDK17 打包问题分析
Resean0223
实际项目问题汇总 日常问题解决 java maven jdk
一、概述近日为了满足客户需求将项目的jdk版本由原先的1.8升级至17,整个过程比较顺利,但是在maven打包时出现了报错。报错信息为:(程序包sun.security.util已在模块java.base中声明,但该模块未将它导出到未命名模块)二、问题分析引起该问的原因是因为从jdk9开始使用module模块化引用的结构,包时存在的,只是我们在打包时没有将该模块引入并声明。关于module模块化的
链接阿里云IoT Edge设备接入SDK Java版教程
郑微殉
链接阿里云IoTEdge设备接入SDKJava版教程linkedge-thing-access-sdk-javaLinkIoTEdge提供的设备接入驱动开发SDK(Java版本),帮助用户在LinkIoTEdge上快速开发自定义协议设备接入Java语言驱动。项目地址:https://gitcode.com/gh_mirrors/li/linkedge-thing-access-sdk-java1.
【课程设计】Java EE SSM 试卷管理系统
鱼弦
课程设计 java-ee java
JavaEESSM试卷管理系统简介试卷管理系统是一个用于教育机构、培训中心等单位的在线考试和评估工具。该系统帮助教师管理考试题目、生成试卷,并将试卷导出为Word文档。应用使用场景学校与教育机构:用于日常测验、期中和期末考试。企业培训:用于员工技能测试和评估。在线教育平台:用于提供学生练习题和模拟考试。原理解释架构系统基于JavaEE开发,采用了Spring、SpringMVC和MyBatis(S
AJAX 与 ASP:现代 Web 开发的关键技术
csbysj2020
开发语言
AJAX与ASP:现代Web开发的关键技术引言在当今的Web开发领域,AJAX(AsynchronousJavaScriptandXML)和ASP(ActiveServerPages)是两项至关重要的技术。AJAX允许网页在不重新加载整个页面的情况下,与服务器交换数据和更新部分网页内容。而ASP则是一种服务器端脚本环境,用于动态生成交互性网页。本文将深入探讨AJAX和ASP的技术细节、应用场景以及
Java高级特性 - Java反射
Ssaty.
java 开发语言 java-ee
第1关:了解Class对象本关任务:实现获取Class对象的三种方式packagestep1;/***学员任务文件*/publicclassReflect_stu{publicstaticvoidmain(String[]args){System.out.println<
Java 项目集成 DeepSeek,亮点项目(包成功)
代码星辰阁(公众号同名)
springboot 编程 spring boot deepseek 人工智能 java
获取DeepSeekAPI并搭建简易问答Java应用的完整步骤:“代码星辰阁”公众号有完整代码获取DeepSeekAPIKey访问DeepSeek官网:打开DeepSeek开放平台,点击右上角的“开放平台”。注册或登录账号:新注册账号通常会赠送一定数量的免费tokens。创建APIKey:在左侧菜单中点击APIKeys。点击“创建APIKey”,为APIKey命名(如“test”),然后创建。系统
JAVA EE初阶 - 预备知识(一)
2025年一定要上岸
java-ee
一、管道在计算机编程和操作系统环境中,输入、输出和错误管道是用于在不同进程或程序之间传递数据和信息的重要机制,下面分别对它们进行详细介绍:输入管道(StandardInput,stdin)定义:输入管道是进程获取外部数据的通道。它允许一个进程从其他进程、用户输入设备(如键盘)或文件中接收数据。当一个进程启动时,操作系统通常会为其分配一个标准输入流,进程可以通过读取这个输入流来获取所需的数据。工作原
深入浅出:8种常见排序算法的效率对比与应用场景(JAVA)
技术小泽
排序算法 算法 数据结构 java 后端
5.归并排序归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。算法核心逻辑如下分割数组首先,把数组分成两半,然后分别对这两半继续进行分割,直到每一部分只有一个元素。每次分割都通过计算中间索引mid=(left+right)/2来进行。排序当数组
jQuery.ajax
weixin_48357623
前端 jquery ajax 前端
下面是关于FetchAPI、umi-request、jQuery.ajax和axios的对比表格:FetchAPIumi-requestjQuery.ajaxaxios技术基础基于Promise的现代浏览器API基于fetch的封装,提供统一API和请求层治理原生JavaScript中的XMLHttpRequest封装基于Promise的HTTP客户端,封装XMLHttpRequest使用场景适用
java数据结构 mobi_数据结构:Java语言描述(第2版) pdf epub mobi txt 下载
周佩茹
java数据结构 mobi
数据结构:Java语言描述(第2版)pdfepubmobitxt下载图书介绍☆☆☆☆☆刘小晶,杜选,朱蓉,杜卫锋编下载链接在页面底部发表于2021-02-24类似图书点击查看全场最低价出版社:清华大学出版社ISBN:9787302389446版次:2商品编码:11678255品牌:清华大学包装:平装丛书名:21世纪高等学校规划教材·计算机科学与技术开本:16开出版时间:2015-04-01用纸:胶
数据结构java实验 刘小晶_清华大学出版社-图书详情-《数据结构实例解析与实验指导——Java语言描述》...
季退思
数据结构java实验 刘小晶
本书是《数据结构——Java语言描述》(ISBN:9787302243236,清华大学出版社)的配套教学辅助用书,也是考研的复习用书。本书打破了传统的单一辅导书的编写形式,从整个课程能力培养和课程实践能力培养分析入手,以“重基础,求创新”为目标,针对基本数据结构和两种常用操作进行知识的归纳和提炼,对典型实例进行清晰的剖析,然后通过大量实例对知识进行巩固和应用。实验内容的安排由浅入深,层次分
springboot+vue使用EasyCaptcha实现简单验证码
ueanaIU潇潇子
spring boot vue.js 图形验证码 EasyCaptcha
一、实现效果springboot使用EasyCaptcha实现简单验证码,更多api和用法可以去github上查看EasyCaptcha:Java图形验证码,支持gif、中文、算术等类型,可用于JavaWeb、JavaSE等项目。二、实现步骤1、导入依赖com.github.whvcseeasy-captcha1.6.2org.openjdk.nashornnashorn-core15.4我使用的
✨JMH(Java Microbenchmark Harness)✨
魔镜前的帅比
java 开发语言
JMH(JavaMicrobenchmarkHarness)是一个专门用于编写、运行和分析Java微基准测试的工具。它由OpenJDK团队开发,旨在提供精确的基准测试结果,避免常见的基准测试陷阱,如JVM的优化、即时编译(JIT)等影响。核心知识点基准测试的目的基准测试用于测量代码的性能,通常是在微秒或纳秒级别。它可以帮助开发者识别性能瓶颈,优化代码。JMH的特点精确性:JMH通过多次迭代和预热来
java后端开发面试常问
躲在没风的地方
java面试题 java 面试 spring
面试常问问题1spring相关(1)@Transactional失效的场景@Transactional注解默认只会回滚运行时异常(RuntimeException),如果方法中抛出了其他异常,则事务不会回滚(数据库数据仍然插入成功了)。@Transactional(rollbackFor=Exception.class)如果方法中有trycatch语句,并且抛出的异常的代码被try捕获,那么方法上
Amaze UI web mobile 前端框架
iteye_20240
ui 前端框架 移动开发
目录结构index.html-空白HTML模板;blog.html-博客页面模板(预览);landing.html-LandingPage模板(预览);login.html-登录界面模板(预览);sidebar.html-带边栏的文章模板(预览);在app.css中编写CSS;在app.js中编写JavaScript;移动端首选Zepto,桌面端选jQuery,这应该是大多数开发者的共识。那对于跨
Java中Long类型处理精度丢失问题
原冰洋
java bug
Long类型处理精度丢失问题描述后端给前端传一个long类型的数据,如果数据过大,前端js接收就会精度丢失,如果再传过来给后端,后端接收到的数据也是精度丢失的数据解决方案只需要将后端从传给前端的long类型的数据变成string类型就好了。1.提供对象转换器jacksonObjectMapper,基于jackson进行java对象到json数据的转换2.在webMvcConfig配置类中扩展Spr
后端Long类型19位返回前端丢失精度问题
19940719
JAVA
后端Long类型19位返回前端丢失精度问题问题原因:由于Long类型最大19位而JavaScript最大接收数字为16位,固存在精度丢失问题解决方案1.导入Maven依赖com.fasterxml.jackson.corejackson
【设计模式】【行为型模式】访问者模式(Visitor)
FLZJ_KL
设计模式 设计模式 访问者模式 java
hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD2025本人正在沉淀中…博客更新速度++欢迎点赞、收藏、关注,跟上我的更新节奏当你的天空突然下了大雨,那是我在为你炸乌云文章目录一、入门什么是访问者模式?为什么需要访问者模式?怎么实现访问模式?二、访问者模式在源码中的运用ASM框架(Java字节码操作)三、总结访问者模式的优点访问者模式的缺点访问者模式的适用场景一、
【JavaScript】Day01
boy快快长大
前端 javascript 开发语言 ecmascript
1.介绍1.1JS是什么一种运行在客户端(浏览器)的编程语言,实现人机交互效果。1.2作用网页特效(监听用户的一些行为让网页做出对应的反馈)表单验证(针对表单数据的合法性做出判断)数据交互(获取后台的数据,渲染到前端)服务端编程(node.js)1.3JS的组成ECMAScript:规定了JS基础的语法知识WebAPIs:DOM与BOMDOM:操作文档,比如对页面元素进行移动、大小、添加删除等操作
DeepSeek接入Python,一般电脑也能飞速跑,确实可以封神了!
算法channel
python 开发语言
你好,我是郭震今天这篇教程介绍:DeepSeep最新推理模型R1接入Python编程,在本地电脑从零搭建方法。1这样做有哪些好处?1)大模型在本地搭建,除了能够方便个人知识库管理,详见上一篇介绍,还能提效编程学习,比如Python,Java等,学编程就像学做事的思路和逻辑,挺重要也很有意思。2)DeepSeek最近开源了推理模型R1,开源免费,性能强劲,本文接入的正是DeepSeek的R1;Pyt
华为OD最新机试真题-最小的调整次数-C++-OD统一考试(E卷)
ai因思坦
华为od c++ 算法 华为 开发语言 面试
最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述:有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据。小A依次执行2n个指令往队列中添加数据和移出数据。其
sql统计相同项个数并按名次显示
朱辉辉33
java oracle
现在有如下这样一个表:
A表
ID Name time
------------------------------
0001 aaa 2006-11-18
0002 ccc 2006-11-18
0003 eee 2006-11-18
0004 aaa 2006-11-18
0005 eee 2006-11-18
0004 aaa 2006-11-18
0002 ccc 20
Android+Jquery Mobile学习系列-目录
白糖_
JQuery Mobile
最近在研究学习基于Android的移动应用开发,准备给家里人做一个应用程序用用。向公司手机移动团队咨询了下,觉得使用Android的WebView上手最快,因为WebView等于是一个内置浏览器,可以基于html页面开发,不用去学习Android自带的七七八八的控件。然后加上Jquery mobile的样式渲染和事件等,就能非常方便的做动态应用了。
从现在起,往后一段时间,我打算
如何给线程池命名
daysinsun
线程池
在系统运行后,在线程快照里总是看到线程池的名字为pool-xx,这样导致很不好定位,怎么给线程池一个有意义的名字呢。参照ThreadPoolExecutor类的ThreadFactory,自己实现ThreadFactory接口,重写newThread方法即可。参考代码如下:
public class Named
IE 中"HTML Parsing Error:Unable to modify the parent container element before the
周凡杨
html 解析 error readyState
错误: IE 中"HTML Parsing Error:Unable to modify the parent container element before the child element is closed"
现象: 同事之间几个IE 测试情况下,有的报这个错,有的不报。经查询资料后,可归纳以下原因。
java上传
g21121
java
我们在做web项目中通常会遇到上传文件的情况,用struts等框架的会直接用的自带的标签和组件,今天说的是利用servlet来完成上传。
我们这里利用到commons-fileupload组件,相关jar包可以取apache官网下载:http://commons.apache.org/
下面是servlet的代码:
//定义一个磁盘文件工厂
DiskFileItemFactory fact
SpringMVC配置学习
510888780
spring mvc
spring MVC配置详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。
一、Spring MVC环境搭建:(Spring 2.5.6 + Hi
spring mvc-jfreeChart 柱图(1)
布衣凌宇
jfreechart
第一步:下载jfreeChart包,注意是jfreeChart文件lib目录下的,jcommon-1.0.23.jar和jfreechart-1.0.19.jar两个包即可;
第二步:配置web.xml;
web.xml代码如下
<servlet>
<servlet-name>jfreechart</servlet-nam
我的spring学习笔记13-容器扩展点之PropertyPlaceholderConfigurer
aijuans
Spring3
PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java P
java 线程池使用 Runnable&Callable&Future
antlove
java thread Runnable callable future
1. 创建线程池
ExecutorService executorService = Executors.newCachedThreadPool();
2. 执行一次线程,调用Runnable接口实现
Future<?> future = executorService.submit(new DefaultRunnable());
System.out.prin
XML语法元素结构的总结
百合不是茶
xml 树结构
1.XML介绍1969年 gml (主要目的是要在不同的机器进行通信的数据规范)1985年 sgml standard generralized markup language1993年 html(www网)1998年 xml extensible markup language
改变eclipse编码格式
bijian1013
eclipse 编码格式
1.改变整个工作空间的编码格式
改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式。
Eclipse->window->preferences->General->workspace-
javascript中return的设计缺陷
bijian1013
JavaScript AngularJS
代码1:
<script>
var gisService = (function(window)
{
return
{
name:function ()
{
alert(1);
}
};
})(this);
gisService.name();
&l
【持久化框架MyBatis3八】Spring集成MyBatis3
bit1129
Mybatis3
pom.xml配置
Maven的pom中主要包括:
MyBatis
MyBatis-Spring
Spring
MySQL-Connector-Java
Druid
applicationContext.xml配置
<?xml version="1.0" encoding="UTF-8"?>
&
java web项目启动时自动加载自定义properties文件
bitray
java Web 监听器 相对路径
创建一个类
public class ContextInitListener implements ServletContextListener
使得该类成为一个监听器。用于监听整个容器生命周期的,主要是初始化和销毁的。
类创建后要在web.xml配置文件中增加一个简单的监听器配置,即刚才我们定义的类。
<listener>
<des
用nginx区分文件大小做出不同响应
ronin47
昨晚和前21v的同事聊天,说到我离职后一些技术上的更新。其中有个给某大客户(游戏下载类)的特殊需求设计,因为文件大小差距很大——估计是大版本和补丁的区别——又走的是同一个域名,而squid在响应比较大的文件时,尤其是初次下载的时候,性能比较差,所以拆成两组服务器,squid服务于较小的文件,通过pull方式从peer层获取,nginx服务于较大的文件,通过push方式由peer层分发同步。外部发布
java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大
bylijinnan
java
package com.ljn.base;
import java.util.Arrays;
import java.util.Random;
public class ContinuousPoker {
/**
* Q67 扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
* 2-10为数字本身,A为1,J为1
翟鸿燊老师语录
ccii
翟鸿燊
一、国学应用智慧TAT之亮剑精神A
1. 角色就是人格
就像你一回家的时候,你一进屋里面,你已经是儿子,是姑娘啦,给老爸老妈倒怀水吧,你还觉得你是老总呢?还拿派呢?就像今天一样,你们往这儿一坐,你们之间是什么,同学,是朋友。
还有下属最忌讳的就是领导向他询问情况的时候,什么我不知道,我不清楚,该你知道的你凭什么不知道
[光速与宇宙]进行光速飞行的一些问题
comsci
问题
在人类整体进入宇宙时代,即将开展深空宇宙探索之前,我有几个猜想想告诉大家
仅仅是猜想。。。未经官方证实
1:要在宇宙中进行光速飞行,必须首先获得宇宙中的航行通行证,而这个航行通行证并不是我们平常认为的那种带钢印的证书,是什么呢? 下面我来告诉
oracle undo解析
cwqcwqmax9
oracle
oracle undo解析2012-09-24 09:02:01 我来说两句 作者:虫师收藏 我要投稿
Undo是干嘛用的? &nb
java中各种集合的详细介绍
dashuaifu
java 集合
一,java中各种集合的关系图 Collection 接口的接口 对象的集合 ├ List 子接口 &n
卸载windows服务的方法
dcj3sjt126com
windows service
卸载Windows服务的方法
在Windows中,有一类程序称为服务,在操作系统内核加载完成后就开始加载。这里程序往往运行在操作系统的底层,因此资源占用比较大、执行效率比较高,比较有代表性的就是杀毒软件。但是一旦因为特殊原因不能正确卸载这些程序了,其加载在Windows内的服务就不容易删除了。即便是删除注册表中的相 应项目,虽然不启动了,但是系统中仍然存在此项服务,只是没有加载而已。如果安装其他
Warning: The Copy Bundle Resources build phase contains this target's Info.plist
dcj3sjt126com
ios xcode
http://developer.apple.com/iphone/library/qa/qa2009/qa1649.html
Excerpt:
You are getting this warning because you probably added your Info.plist file to your Copy Bundle
2014之C++学习笔记(一)
Etwo
C++ Etwo Etwo iterator 迭代器
已经有很长一段时间没有写博客了,可能大家已经淡忘了Etwo这个人的存在,这一年多以来,本人从事了AS的相关开发工作,但最近一段时间,AS在天朝的没落,相信有很多码农也都清楚,现在的页游基本上达到饱和,手机上的游戏基本被unity3D与cocos占据,AS基本没有容身之处。so。。。最近我并不打算直接转型
js跨越获取数据问题记录
haifengwuch
jsonp json Ajax
js的跨越问题,普通的ajax无法获取服务器返回的值。
第一种解决方案,通过getson,后台配合方式,实现。
Java后台代码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String ca
蓝色jQuery导航条
ini
JavaScript html jquery Web html5
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/39.htmHTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery鼠标悬停上下滑动导航条 - 柯乐义<
linux部署jdk,tomcat,mysql
kerryg
jdk tomcat linux mysql
1、安装java环境jdk:
一般系统都会默认自带的JDK,但是不太好用,都会卸载了,然后重新安装。
1.1)、卸载:
(rpm -qa :查询已经安装哪些软件包;
rmp -q 软件包:查询指定包是否已
DOMContentLoaded VS onload VS onreadystatechange
mutongwu
jquery js
1. DOMContentLoaded 在页面html、script、style加载完毕即可触发,无需等待所有资源(image/iframe)加载完毕。(IE9+)
2. onload是最早支持的事件,要求所有资源加载完毕触发。
3. onreadystatechange 开始在IE引入,后来其它浏览器也有一定的实现。涉及以下 document , applet, embed, fra
sql批量插入数据
qifeifei
批量插入
hi,
自己在做工程的时候,遇到批量插入数据的数据修复场景。我的思路是在插入前准备一个临时表,临时表的整理就看当时的选择条件了,临时表就是要插入的数据集,最后再批量插入到数据库中。
WITH tempT AS (
SELECT
item_id AS combo_id,
item_id,
now() AS create_date
FROM
a
log4j打印日志文件 如何实现相对路径到 项目工程下
thinkfreer
Web log4j 应用服务器 日志
最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下
需求:
用户登录该网站时,把用户的登录名,ip,时间。统计到一个txt文档里,以方便其他系统调用此txt。项目名
linux下mysql-5.6.23.tar.gz安装与配置
笑我痴狂
mysql linux unix
1.卸载系统默认的mysql
[root@localhost ~]# rpm -qa | grep mysql
mysql-libs-5.1.66-2.el6_3.x86_64
mysql-devel-5.1.66-2.el6_3.x86_64
mysql-5.1.66-2.el6_3.x86_64
[root@localhost ~]# rpm -e mysql-libs-5.1