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)
✨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个指令往队列中添加数据和移出数据。其
Maven 引入外部依赖
lsx202406
开发语言
Maven引入外部依赖引言Maven是一个强大的项目管理和构建自动化工具,广泛应用于Java项目的开发中。在Maven的项目中,引入外部依赖是构建项目不可或缺的一环。本文将详细介绍如何在Maven中引入外部依赖,包括依赖的类型、配置方式以及常见问题解决。一、依赖的类型在Maven中,依赖可以分为以下几类:Compile依赖:编译依赖,用于项目的编译过程。这类依赖通常包含了项目的编译时需要用到的类库
golang之基础库
丑阳璐
go语言 golang json
从这小节开始,就变得尤为重要,希望小伙伴们打起精神包管理工具(gomodule)使用gomodule来管理0包之间的依赖关系和Java类似,类似于文件夹。当我们需要使用某个包时,导入某个包即可导包时,必须从GOPATH最初的包路径开始//查看环境变量PSD:\gowork\goProiect\Go01Test>goenvsetGO111MODULE=on//模块化setGOARCH=amd64se
高德地图JS API地址解析
天马3798
JavaScript javascript java 数据库
Java内存回收(GC)新贵的抉择,G1与ZGC!
颯沓如流星
java jvm 架构
前言Java的垃圾回收(GarbageCollection,GC)是确保内存管理高效和稳定的关键机制。随着JDK的不断演进,各种垃圾回收器也应运而生,其中G1和ZGC作为两大明星产品,各自拥有独特的特性和适用场景。本文将详细解析G1和ZGC的特性和回收方式。关键概念解析Region在G1和ZGC中,Region是堆内存的一个逻辑分区。G1将堆划分为多个大小相同的Region,用于存放对象。而ZGC
【Java】已解决:java.util.concurrent.ExecutionException
屿小夏
java 开发语言 android
个人简介:某不知名博主,致力于全栈领域的优质博客分享|用最优质的内容带来最舒适的阅读体验!文末获取免费IT学习资料!文末获取更多信息精彩专栏推荐订阅收藏专栏系列直达链接相关介绍书籍分享点我跳转书籍作为获取知识的重要途径,对于IT从业者来说更是不可或缺的资源。不定期更新IT图书,并在评论区抽取随机粉丝,书籍免费包邮到家AI前沿点我跳转探讨人工智能技术领域的最新发展和创新,涵盖机器学习、深度学习、自然
静态类型和动态类型
老赵骑摩托
go语言
静态类型和动态类型定义编程语言按照类型检查可以分为两大类:静态类型(StaticTyping)和动态类型(DynamicTyping)。在现在比较流行的这些语言里,静态类型的代表人物有Java、C/C++、Golang等,动态类型有Python、Ruby等。静态类型语言中,变量具有类型,而且在编译期确定,具有某一类型的变量只能持有相同类型的数据。动态类型语言中,变量没有类型,只有数据有类型,变量可
走进Java:JDK和JRE分别是什么?它们有什么区别?
老鼠只爱大米
java Java面试 Java面试攻略 Java高频面试题 JRE JDK
目录引言一、概述二、JRE(JavaRuntimeEnvironment)三、JDK(JavaDevelopmentKit)四、安装和配置五、区别和联系六、总结引言 Java是一门非常流行的编程语言,被广泛应用于各个领域的软件开发。在Java开发中,JRE和JDK是两个重要的概念,它们有着不同的作用和功能。本篇技术博客将会介绍JRE和JDK的概念、组成部分、安装和配置、以及它们之间的区别和联系。
javascript的成熟分类:“成熟分类”之路
lizi88888
javascript 开发语言 ecmascript
JavaScript是一门广泛应用于Web前端开发的高级编程语言,具有交互性强、界面效果丰富等优点。其在Web开发中的广泛应用越来越受到业界的关注,从最初的“套壳”式编程到现在的成熟分类,JavaScript已经发生了巨大的变化。ES5ES5标准于2009年发布,是JavaScript发展的一个重要里程碑。这个版本添加了一些新的语言特性,例如:严格模式、Object.create()方法、Func
Http connect timed out
不像程序员的程序媛
http 网络 网络协议
客户向云端服务请求时,连接云端域名显示连接超时,为什么呢,偶尔会有。java.net.SocketTimeoutException:connecttimedoutatjava.net.PlainSocketImpl.socketConnect(NativeMethod)atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketI
String的基础知识
GordonH1991
java
前提:androidsdk和jdk版本对照中可以看到从android5.0后就需要使用jdk7以上的版本,这里讨论的默认字符串常量池放置在虚拟机的堆内存中,不再过多讨论永久代(PermanentGeneration,PermGen)的方法区,事实上从java8后,JVM就已经没有永久代了,取而代之的是元空间(MetaSpace)1.String.java的开头注释TheStringclassrep
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
ideal-cs
总结 java ssl https 自签证书验证 ssl验证 https忽略证书验证 https工具类
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证一·HttpsUtil工具类二·SSLUtil工具类一·HttpsUtil工具类packagecom.example.util;importjavax.net.ssl.HttpsURLConnection;importjavax.net.ssl.SSLContext;imp
new的过程发生了什么,手写实现new
零合一
前端基础知识点 原型模式 javascript 开发语言
new的过程当使用new关键字调用函数时,该函数将被用作构造函数。new将执行以下操作:创建空对象:创建一个空的简单JavaScript对象。为方便起见,我们称之为newInstance。绑定原型:如果构造函数的prototype属性是一个对象,则将newInstance的[[Prototype]]指向构造函数的prototype属性,否则newInstance将保持为一个普通对象,其[[Prot
new操作中发生了什么?
木头没有瓜
js
比较直观的感觉,当我们new一个构造函数,得到的实例继承了构造器的构造属性(this.name这些)以及原型上的属性。在《JavaScript模式》这本书中,new的过程说的比较直白,当我们new一个构造器,主要有三步:•创建一个空对象,将它的引用赋给this,继承函数的原型。•通过this将属性和方法添加至这个对象•最后返回this指向的新对象,也就是实例(如果没有手动返回其他的对象)例子,大概
详解 Java 基础的多态机制
红烧白开水。
后端 JAVA 多态 java 开发语言 后端 java基础 多态
一、什么是多态?多态(Polymorphism)是面向对象编程(OOP)的三大核心特性之一,指同一操作作用于不同对象时,可以产生不同的行为。在Java中,多态通过以下两种形式体现:编译时多态:方法重载(Overload),根据参数列表在编译时确定调用哪个方法。运行时多态:方法重写(Override),通过继承和接口实现,在运行时动态绑定具体方法(本文重点)。二、多态的核心实现机制1.三个必要条件继
混合开发框架整理:使用Crosswalk + WebViewJavascriptBridge进行混合开发
hwj3747
Android 混合开发 android html5 javascript jquery html
作者:hwj3747转载请注明Crosswalk介绍目前APP的开发模式大多基于H5+原生壳的开发模式,这时候使用到的WebView的性能就至关重要。我们知道,Android平台上,系统的碎片化比较严重,同Android版本的WebView的H5解析能力也有较大差异,导致相应的HTML5应用一致性难以保证。所以在做混合开发的时候,对Android系统的适配是一个比较麻烦的问题。这个时候,如果能在我
跟我学C++中级篇——C++编码的几点建议
fpcc
C++ c++ 软件工程
一、C++编码C++语言做为一种为大多数人认为难度较大的开发语言,因其灵活多变的风格和技术导致其应用开发不易为开发者掌握。有过较长C++开发经验的程序员可能发现,在C++开发的人员中,鱼龙混杂,各色开发人员都有。它不象Js或Java等高级语言,大家的开发水平在三五年后基本都差不多。C++编码的程序员可能有的十几年如一日的编写着让人头大的代码。二、如何更好的编写C++代码为了方便描述如何更好的编写C
jdbc连接数据库时 java.lang.RuntimeException错误怎么解决
脑袋坏掉了
数据库 java mysql
Exceptioninthread"main"java.lang.RuntimeException:com.mysql.cj.jdbc.exceptions.CommunicationsException:CommunicationslinkfailureThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhas
java进阶篇--Docker 有什么优点?使用时需要注意什么问题?
爱分享的淘金达人
Java源码剖析(30讲) Docker docker使用 docker注意事项
Docker从2013年发展到现在,它的普及率已经可以和最常用的MySQL和Redis并驾齐驱了,从最初偶尔出现在面试中,到现在几乎成为面试中必问的问题之一。如果再不了解Docker相关的知识点,可能就会与自己心仪的职位擦肩而过。所以本课时将会带领你对Docker相关的知识做一个全面的认识。我们本课的问题是,Docker有什么优点?使用时需要注意什么问题?回答:Docker是一个开源(开放源代码)
Go语言函数:比Java更简单优雅的函数设计
后端
Go语言函数:比Java更简单优雅的函数设计前言嘿,各位开发者!今天我们来聊一个有趣的话题:Go语言的函数。如果你是从Java阵营过来的,准备好被惊艳到了!因为Go的函数设计其实就是优雅到极致的艺术品。一、函数定义:告别繁文缛节1.简洁的语法Java:publicstaticintadd(inta,intb){returna+b;}Go:funcadd(a,bint)int{returna+b;}
Java面试题--设计模式
m0_74823892
面试 学习路线 阿里巴巴 java 设计模式 开发语言
答案以及所有23种设计模式详细介绍,请参考:https://blog.csdn.net/doymm2008/article/details/13288067设计模式的分类有哪些?工厂模式:概念:实现方法:普通工厂方法、静态工厂方法使用场景:有哪些问题单例模式:好处:单例模式的实现代码:最简单的,以及优化后的适配器模式:概念核心思想实现代码装饰模式:概念:实现代码:应用场景代理模式:概念:实现代码:
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