• 关于

    C 异常处理是啥

    的搜索结果

回答

非常有价值的问题    1:如果你的action使用了Validator,并且在validate方法中有异常是不会跳转到error500页面的。跳到error500的情况是异常在action或interceptor中发生了。 2:使用Validator时,如果需要在哪个页面出错,仍回到哪个页面的功能早已存在了,只不过需遵守约定,即:view=methodName+view扩展名。 3:页面跳转方面除了上面的约定以外JFinal还可以让开发者在handlerError指定跳转的去处,这样灵活性更高。 4:原表单的信息保持功能也有,如此办理:controller.keepPara();   总的来说,JFinal的Validator已经实现了此贴中需要的所有功能,只不过使用的时候需要来点约定,如果没有约定,就需要手动去调用一下方法,也就一行代码的事。虽然代码增加了一两行,但适应性与灵活性都大大加强了。如果JFinal的Validator仍然不能满足需求的话,自定义一个自全局拦截器实现整个系统的异常管理也非常的方便。    再次感谢提出这么深入的问题,此问题深入到了JFinal的设计层面,是作者在设计时无时不刻都在权衡的问题:) ###### @JFinal  ######一般异常都希望跳到一张其它页面去避免重复发生异常,所以只要把500页面的内容换一下就可以了!而且异常的对象是可以在500页面取到的!######一路向外抛配置一个拦截器统一抓异常显示到一张异常处理的页面上.可以参考OSC的异常处理页面将异常信息发送邮件通知 ###### 500这种程序异常不应该在客户端显示吧,数据的错误交给validator处理正合适。 而且JFinal支持自定义500页面,可以提供人性化的展示,这也是很多网站的做法。 至于业务异常可以在controller里面自己捕获然后setAttr,在页面自己处理显示。 个人感觉JFinal对于框架应该做的事,基本都处理到位了。 个人观点,仅供参考~~ ###### 引用来自“农夫三拳”的答案 一般异常都希望跳到一张其它页面去避免重复发生异常,所以只要把500页面的内容换一下就可以了!而且异常的对象是可以在500页面取到的! 不太合理..... 写了一个篇博客、表单,提交时失败了(无论任何原因),跳转到其他页面。就白打字了,保存、修改的机会都没有了。######回复 @一千年前的人:不太明白主动抛出异常是啥状况呢?个人认为只要是数据上的问题,validator应该都包办了,比如范围,长度,类型等等。######回复 @alvinte:不够的。。我会主动抛出异常的。。######这种场景不是validator就足够处理了么?###### 引用来自“alvinte”的答案 500这种程序异常不应该在客户端显示吧,数据的错误交给validator处理正合适。 而且JFinal支持自定义500页面,可以提供人性化的展示,这也是很多网站的做法。 至于业务异常可以在controller里面自己捕获然后setAttr,在页面自己处理显示。 个人感觉JFinal对于框架应该做的事,基本都处理到位了。 个人观点,仅供参考~~ 是的。所以JFinal需要设计一个异常机制。 因为这个部分完全自己处理的话,会有很多关于异常处理的重复代码。 能统一处理的,尽量统一处理。###### 看了楼主的需求,觉得用Validator还是最合适的 ###### protectedvoidhandleError(Controllercontroller){controller.keepModel(Blog.class);StringactionKey=getActionKey();if(actionKey.equals("/blog/save"))controller.render("add.html");elseif(actionKey.equals("/blog/update"))controller.render("edit.html");} Validator 这部分代码也是冗余的,那个页面出错,就停在哪个页面。######可以用JFinal的约定,就不会有代码冗余。即方法名和模板文件名一致。###### 引用来自“galaxy58”的答案 看了楼主的需求,觉得用Validator还是最合适的 你尝试下,savedb时,字段长度溢出,就会跑到500页面了。或者我主动抛出一个异常...

优选2 2020-06-09 11:18:36 0 浏览量 回答数 0

回答

编程规范先处理异常,后处理正常的######不要对多种情况进行处理, 慎记.######哦######+1, 正常往下处理,异常即时退出返回。######视情况而定###### 怎么写容易阅读就怎么写 ######我 也 这 样 觉 得######具体情况具体分析,代码最少就用哪个######我一般也是这样的习惯了,只是都会带上括号if(xxxx){xxxxx}######这是什么框架 ######自己实现的url路由呀.######没有使用框架######这是什么编辑器?######sublime text3 默认主题######sublime,用的是monokai主题!###### 引用来自“OscerSong”的答案 编程规范先处理异常,后处理正常的 +1 ######+1###### 个人觉得这段代码可以改改。 require $controller_path 这句,如果文件不存在,在这里就不行了。如果文件存在,但是并不能require,还是不行。就是说这句其实已经包含了上面file_exists的验证的,上面那句if多余的。 如果希望用自己的提示方式中断流程,那么可以这样写 include xxx || die(xxxxxx);  //die可以替换为某个log函数或输出函数 ###### 感觉show404这个也有点问题 既然是show404了,404是啥,http 404?控制器和act不存在也是404这语义吗? 而且这个show404抛出的页面是怎样的呢,既然文件和act不存在都用这个页面,那就不是精确的模板(指不是在上面写死“文件找不到”之类提示),而且调用内容是自己传,那就可以做个showErr或者showNotFound

kun坤 2020-06-09 10:54:58 0 浏览量 回答数 0

回答

集群######回复 @无极限 : 看你的描述目测也没多少事务性的东西######回复 @无极限 : 我是说如果可以,做一个Java集群多机并行处理不就行了嘛######数据一开始是存储在集群中的,然后抽取部分缓存在redis中,程序周期性会从redis中拉取,并实例化为具体的对象,######你的实体类是啥?类信息?还是数据?######“实体类”比如用户信息类Person。10w个Person,要暂时缓存在redis中,而且会周期性实例化到内存中######哦,在于你得序列化方式是啥?######有好几种序列化的三方件,性能差异还挺大的###### @乌龟壳   @爱吃窝窝头   比如把“张三-28-硕士-工作地址” 实例化为Person(“张三”,28,“硕士”,“工作地址”)。字符串与实体类直接的高效互转,有没有推荐的方案######protocolbuffer 可以跨语言,性能还可以,如果是纯java 应该有更好的,你可以找找,我记得有篇帖子性能比较的,你可以搜搜######protocolbuffer###### 实体类转换为字符串是什么方式?json?如果是json,改用fastjson试试? 如果字符串与实体类互转实在是耗时太长,建议实体类与实体类进行二进制互转,kryo、protostuff序列化库都不错,而且存储空间占用比字符串更少###### https://www.oschina.net/question/12_91812几种 Java 序列化方案的性能比较###### 现在序列化和反序列化较快的就是  fastjson 该处理的异常都给你处理了,写出来的代码也很简洁######选择一个性能好的序列化框架###### 缓存对象id,后期根据id集合处理后续业务

kun坤 2020-06-06 16:30:47 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

从两个方面来说吧。第一个是编码安全,第二个是网络设备安全。 编码安全,也需要根据情况进行分析,如果非web项目: 如果有数据库,注意字符编码问题,防止XSS攻击,如果是用Mybatis,建议多使用#做参数的获取注意异常的处理,不要把系统信息暴露在外面注意接口权限的校验,永远不要相信用户传入的数据 如果是web项目,除了上面的还应该注意下面的问题: ①需要开启HTTPS②检查pom中依赖的软件没有已知的漏洞,比如fastjson暴露的0day漏洞,apache zooker 1.0.0~3.4.13存在的ACL越权漏洞③启动CSRF保护④注意XSS攻击 网络设备安全,这块儿就是说你部署的服务硬件是安全的,编码再怎么安全,如果服务器不安全,反编译啥都能拿到: 开启防火墙开启白名单,如果有开启黑名单限制访问服务器内核漏洞不容忽视

Joyven 2019-12-02 03:13:59 0 浏览量 回答数 0

问题

在编写Java代码使用RestTemplate 发起post请求的时候初次调用不成功,再次成功

游客t55t7k76cd2w6 2020-04-19 20:50:00 6 浏览量 回答数 1

回答

框架采用Jackson进行对象JSON数据序列化,对于互相指向的对象需要合理设置JsonIgnore注解处理递归循环问题。 ###### @S2JH  哎呀!我好像知道之前为啥总错了,貌似是在 引用CascadeType 时,引用了错误的包,正确的应该是引用javax.persistence.CascadeType###### @S2JH  在涉及外键相关属性进行更新存储时,S2JH 框架处理经常会出错。比如上述的客户与店铺的关系,在翻页时,会进入无限递归,导致页面无法正确显示。还有一种是自身关联的树状数据结构。当设置其父亲节点为空时,在保存时出现异常。 @S2JH  您对这个情况了解吗?有什么解决方案吗?######CascadeType.DETACH你这个属性表示在外键数据更新时把外键关联设为null呀,另外你看看这个关联字段可不可以为null呀,还有就是数据库那边了;反正这一块坑很多呀,玩不好容易把自己玩死,建议不要建立外键约束,表与表之间存个主键就行多做个关联查询罢了######恩 这块坑确实多还深!不用外键估计是不可能的啊

爱吃鱼的程序员 2020-06-05 12:09:54 0 浏览量 回答数 0

回答

你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。###### 引用来自“中山野鬼”的答案 你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。 不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。 ###### 引用来自“ssn6”的答案 引用来自“中山野鬼”的答案 你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。 不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。 哈,随便你说懂不懂,“线程比进程轻,”,我倒想问问,这个“轻”是怎么定义的?系统自定义的(当然不是说你本人),还是针对应用效果定义的?或是开发复杂度定义的? “楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,”为了忙个同步问题,扯出“线程”,结果又扯出“进程”你觉得这样的设计思维没有问题,我就没有办法咯。 哈。工程设计,谁对谁错,需要实际做出来给客户检验,当然也包括不停的维护和改良这个系统的程序员来评判。落到我的个人看法上,会让思维和逻辑变的更复杂的系统,我是不参合讨论的。你说我不懂,那我就不懂吧,而且我真心的说我不懂。因为我根本没必要去懂那些把逻辑搞的更杂而会形成更加混乱局面的东西。包括思维方法,和设计工具以及一堆堆没有价值的概念名词,(有么有价值不是我说的哦。是系统的可延展设计和用户感受说的)哈。 ###### 引用来自“中山野鬼”的答案 引用来自“ssn6”的答案 引用来自“中山野鬼”的答案 你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。 不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。 哈,随便你说懂不懂,“线程比进程轻,”,我倒想问问,这个“轻”是怎么定义的?系统自定义的(当然不是说你本人),还是针对应用效果定义的?或是开发复杂度定义的? “楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,”为了忙个同步问题,扯出“线程”,结果又扯出“进程”你觉得这样的设计思维没有问题,我就没有办法咯。 哈。工程设计,谁对谁错,需要实际做出来给客户检验,当然也包括不停的维护和改良这个系统的程序员来评判。落到我的个人看法上,会让思维和逻辑变的更复杂的系统,我是不参合讨论的。你说我不懂,那我就不懂吧,而且我真心的说我不懂。因为我根本没必要去懂那些把逻辑搞的更杂而会形成更加混乱局面的东西。包括思维方法,和设计工具以及一堆堆没有价值的概念名词,(有么有价值不是我说的哦。是系统的可延展设计和用户感受说的)哈。 你不是忘光了,你是根本没用过多线程,更不知道多线程是什么东西,你不是不懂你是不懂到令人震惊的地步,可是你又喜欢喷,线程为什么比线程轻量要问我干什么,不懂自已去学习,什么是线程能做的进程不能做的自己去搞清楚,互斥体是跨进程的不是说楼主的代码里扯到了跨进程,他也可以当线程互斥体来用,你说你根本就一个外行,你还死要面子,动不动就写万言书装逼你累不? ######楼主的意思应该是在主线程里面开一个新的线程去完成一个任务,但是任务还没有完成主线程就退出了。如果这这样的话,上面的代码可以完成楼主的需求,可是感觉你这样做没有什么意义啊。######就是在主进程中,每次过来一个连接就创建一个线程执行A函数,第一个线程的A函数执行没问题,第二个线程执行的时候程序就退出了,这个咋看啥原因。###### 引用来自“ssn6”的答案 引用来自“中山野鬼”的答案 引用来自“ssn6”的答案 引用来自“中山野鬼”的答案 你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。 不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。 哈,随便你说懂不懂,“线程比进程轻,”,我倒想问问,这个“轻”是怎么定义的?系统自定义的(当然不是说你本人),还是针对应用效果定义的?或是开发复杂度定义的? “楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,”为了忙个同步问题,扯出“线程”,结果又扯出“进程”你觉得这样的设计思维没有问题,我就没有办法咯。 哈。工程设计,谁对谁错,需要实际做出来给客户检验,当然也包括不停的维护和改良这个系统的程序员来评判。落到我的个人看法上,会让思维和逻辑变的更复杂的系统,我是不参合讨论的。你说我不懂,那我就不懂吧,而且我真心的说我不懂。因为我根本没必要去懂那些把逻辑搞的更杂而会形成更加混乱局面的东西。包括思维方法,和设计工具以及一堆堆没有价值的概念名词,(有么有价值不是我说的哦。是系统的可延展设计和用户感受说的)哈。 你不是忘光了,你是根本没用过多线程,更不知道多线程是什么东西,你不是不懂你是不懂到令人震惊的地步,可是你又喜欢喷,线程为什么比线程轻量要问我干什么,不懂自已去学习,什么是线程能做的进程不能做的自己去搞清楚,互斥体是跨进程的不是说楼主的代码里扯到了跨进程,他也可以当线程互斥体来用,你说你根本就一个外行,你还死要面子,动不动就写万言书装逼你累不? 哈。window的线程,10年前就写过。arm的里面的解码算法程序本身也包括三个线程,用于解决arm和dsp处理速度不匹配的问题。你说我不懂线程,我可以去“承认”,你说我没做过线程设计,哈,这个就不行了。我经历的事实是摆在那的,不是你所能否定的。 另外说一句,你仅能肯定而不能否定一个事物,只能证明你并没有完全了解这个事物。等你啥时懂我在说什么了,在和我讨论“线程”的优势吧。 与其我参与楼主的问题,倒不如给楼主额外的建议和思考问题的方法,也即,是否真的要去学习“线程”的设计方法。我建议你,要么直接回复楼主的答案,要么也就设计方法的好坏给楼主建议,与我争懂不懂,哈,很无聊,不和你争,你说什么都是“对的”。 ###### 引用来自“狼来了而已”的答案 楼主的意思应该是在主线程里面开一个新的线程去完成一个任务,但是任务还没有完成主线程就退出了。如果这这样的话,上面的代码可以完成楼主的需求,可是感觉你这样做没有什么意义啊。 加些日志看看,是不是在执行过程中有什么原因或者异常导致程序退出了。

爱吃鱼的程序员 2020-06-05 13:15:23 0 浏览量 回答数 0

回答

看下文件的所有者和权限linux下这个才是最先看的数据库连不上吧keyilianshang. 不能加载loadorg/terracotta/bigmemory下面的propperties,是不是换了一个环境,代码里面获取这个文件时候的代码有问题?没有手动处理过这个文件,感觉这是jar包里的类自己处理的 我有个排错的习惯: 1、找出异常的class 2、找到方法 3、找到行 虽然时间成本比较高,但是非常有效,最终的结果可能会让你跌眼镜。 那里要加载这个<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#E53333;">version.properties<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;">文件了,applicationContext.xml还是web.xml了...匿名类加载不上,我估计有类的版本冲突,<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">java.lang.IllegalStateException通常是一个class被多次打包,然后版本还不一致时会出现。 Thatwasaclassloadersproblemofcourse.Wehadanotherinstanceofehcache-corelibraryindomain/libfolder. 会不会这样呢这是啥啊?你确定把C3P0弄进去了?连接池就是c3p0包冲突? 论<aclass='project'target='_blank'title='创建虚拟化开发环境工具Vagrant'>Vagrant的重要性

爱吃鱼的程序员 2020-06-14 18:59:39 0 浏览量 回答数 0

回答

既然要读注册表,那就用MS的东西做,干嘛要用java,用了java就算了,还要搞成exe,这不是蛋疼么?######我只会java呀 ,这是我自己搞定东西 ,呵呵###### 引用来自“情天大圣”的答案 既然要读注册表,那就用MS的东西做,干嘛要用java,用了java就算了,还要搞成exe,这不是蛋疼么? 他java学的好呗。。 直接运行jar包,功能有么有? exe后是功能不在了,还是没运行成功? ######回复 @nnpengjian : 我在异常处理中把他输出到文件了的,运行的时候没有输出来,后来我在那个类里面也试着输出内容到文件,结果也没有输出,这个类好像就没有运行######回复 @陈海刚 : 肯定是有报错信息的,估计你看不见,可以输出到文件,你想办法把报错内容输出来看一下。######功能不在了######应该有啥dll文件没弄过去吧,就像swt的一样。###### @Andre.Z 恩,谢谢了哈######回复 @陈海刚 : 理论上,安装程序能让你把任意文件放在任意位置,还有,可执行文件所在文件夹也是path里面的一个部分,我以前是直接把可执行文件和dll放一个目录的。######回复 @Andre.Z : 把dll文件放在window/system32下面确实可以实现啊,能不能安装的时候让安装程序放到那个文件夹下?######回复 @陈海刚 : 不客气。######回复 @Andre.Z : 恩,谢谢了哈 那我先试一试######最好在程序里实现一个log记录功能。######项目打包好(脱离eclipse环境), 先写个bat 试试。######回复 @西.瓜 : 我是新手一直在搞android,能给个列子吗?Email:329206444@qq.com 先谢了哈######叫我情何以堪……, 批处理文件(建个文本文件,后缀改成bat, 里面写 java -cp xxx 等命令)######只 用过java,请问这个bat怎么写?###### 又见一码农~ ###### @loki_lan 恩,知道了###### @陈海刚 高见谈不上,经验只有一个,多做多学多想。###### @loki_lan 有何高见 ?传授一下经验噻###### @陈海刚 嗯,多点思考多学就不用做码农了~######呵呵,没办法啊。 先做码农吧。。。######干什么不记录日志啊?哎!最基本的东西都不做!######我是新手不要认为我不可救药了啊,说一下怎么记录日志,是不是把一些出错信息保存到文件里头的意思?######你用exe4j这个工具生成exe,配置过程中就有一步是指定输出异常的文件。运行后查看该文件中log。######谢谢

kun坤 2020-06-06 15:48:28 0 浏览量 回答数 0

问题

移动WLAN帐号被盗,怎么办呢?:报错

kun坤 2020-06-08 11:11:15 2 浏览量 回答数 1

回答

我主攻游戏后端,游戏中Excel数值配置表我都是转换为JavaBean使用的,数值配置表转javabean已有固定框架,不依赖spring系列。如有需要可以看看我的开源项目 kaka######答案还是给你把,excel毕竟是表格,而且是二进制文件吧,不同excel软件厂商的excel文件内部结构不一致,我比较担心的是用wps的excel编辑,到了微软的excel打开,再读取会不会抛出异常问题, 最后还是自己花了几个小时学习反射设置类属性知识,搭建了一个基于toml格式的配置文件的反射Bean配置工具类。######回复 @齿轮1 : 子对象需要配合注解注明转换器,将String转换为对象,比如 一个单元格里面配置多个道具,格式为:1001 #10;1002#5;1003 #8,“#”前面表示道具ID后面为道具数量,JavaBean注解中只要配置转化器将 1001#10 这种转换为子对象就可以,kaka框架中特别适合做数值配置解析,可能不适合你的情况。######子对象转换怎么办?这个若可以的话,那怎么在excel里表示子对象?,把子对象信息写在一个单元格里?###### 可以实现的,使用字节码加载机制,有现成的开源框架帮你,装载配置类###### java没有xml的库吗?.net有现成的###### xStream  xml转Java的bean对象###### 不喜欢xml,那么可以直接使用json。读取json文件,然后用json反序列化为类即可。十行代码就搞定了。######回复 @齿轮1 : 肯定行啊。######回复 @齿轮1 : 注释和运行时,有啥关系?######还有注释######json换行不行###### 引用来自“RippleChan”的评论 不喜欢xml,那么可以直接使用json。读取json文件,然后用json反序列化为类即可。十行代码就搞定了。 @RippleChan    如果Json要真的做配置文件,那得能配置多行字符串属性,还有单行注释和多行注释,key不能写双引号。比如下面这个   { info:" 这是一个换行的字符串 这是一个换行的字符串 " #单行注释 /# 多行注释 #/ asd:"", } 读取这种json格式的有现成框架么?######回复 @RippleChan : 但是无论如何,把文本弄成一行一行的,就变成传统字符串了。。最后拼接起来完事。######另外,json没有双引号,各种非主流。。图个啥。######注释很简单啊,你把每行读取到list<String>中,然后循环,如果以/#开头的话,就直接替换掉。如果是/#开头的话,那么就boolean isComment= true。遇到#/的后,isComment=false就好了。处理完成后,就是通用的json格式了。

kun坤 2020-06-07 13:48:27 0 浏览量 回答数 0

问题

【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?)

剑曼红尘 2020-04-21 10:04:26 105 浏览量 回答数 2

回答

面试官心理分析 其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。 面试题剖析 回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。 首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。 Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset 提交一下,表示“我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的 offset 来继续消费吧”。 但是凡事总有意外,比如我们之前生产经常遇到的,就是你有时候重启系统,看你怎么重启了,如果碰到点着急的,直接 kill 进程了,再重启。这会导致 consumer 有些消息处理了,但是没来得及提交 offset,尴尬了。重启之后,少数消息会再次消费一次。 举个栗子。 有这么个场景。数据 1/2/3 依次进入 kafka,kafka 会给这三条数据每条分配一个 offset,代表这条数据的序号,我们就假设分配的 offset 依次是 152/153/154。消费者从 kafka 去消费的时候,也是按照这个顺序去消费。假如当消费者消费了 offset=153 的这条数据,刚准备去提交 offset 到 zookeeper,此时消费者进程被重启了。那么此时消费过的数据 1/2 的 offset 并没有提交,kafka 也就不知道你已经消费了 offset=153 这条数据。那么重启之后,消费者会找 kafka 说,嘿,哥儿们,你给我接着把上次我消费到的那个地方后面的数据继续给我传递过来。由于之前的 offset 没有提交成功,那么数据 1/2 会再次传过来,如果此时消费者没有去重的话,那么就会导致重复消费。 如果消费者干的事儿是拿一条数据就往数据库里写一条,会导致说,你可能就把数据 1/2 在数据库里插入了 2 次,那么数据就错啦。 其实重复消费不可怕,可怕的是你没考虑到重复消费之后,怎么保证幂等性。 举个例子吧。假设你有个系统,消费一条消息就往数据库里插入一条数据,要是你一个消息重复两次,你不就插入了两条,这数据不就错了?但是你要是消费到第二次的时候,自己判断一下是否已经消费过了,若是就直接扔了,这样不就保留了一条数据,从而保证了数据的正确性。 一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性。 幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。 所以第二个问题来了,怎么保证消息队列消费的幂等性? 其实还是得结合业务来思考,我这里给几个思路: 比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。 比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。 比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似订单 id 之类的东西,然后你这里消费到了之后,先根据这个 id 去比如 Redis 里查一下,之前消费过吗?如果没有消费过,你就处理,然后这个 id 写 Redis。如果消费过了,那你就别处理了,保证别重复处理相同的消息即可。 比如基于数据库的唯一键来保证重复数据不会重复插入多条。因为有唯一键约束了,重复数据插入只会报错,不会导致数据库中出现脏数据。 当然,如何保证 MQ 的消费是幂等性的,需要结合具体的业务来看。

剑曼红尘 2020-04-18 21:46:13 0 浏览量 回答数 0

问题

python问答学堂-《python进阶大全》中你必须掌握的QA

montos 2020-04-16 21:56:30 34 浏览量 回答数 1

回答

类型转换的规则有哪些? 在if语句、逻辑语句、数学运算逻辑、==等情况下都可能出现隐⼠类型转换。 类型转换的原理是什么? 类型转换指的是将⼀种类型转换为另⼀种类型,例如: var b = 2; var a = String(b); console.log(typeof a); //string 当然,类型转换分为显式和隐式,但是不管是隐式转换还是显式转换,都会遵循⼀定的原理,由于JavaScript是⼀⻔动态类型的语⾔,可以随时赋予任意值,但是各种运算符或条件判断中是需要特定类型的,因此JavaScript引擎会在运算时为变量设定类型. 这看起来很美好,JavaScript引擎帮我们搞定了 类型 的问题,但是引擎毕竟不是ASI(超级⼈⼯智能),它的很多动作会跟我们预期相去甚远,我们可以从⼀到⾯试题开始. {}+[] //0 答案是0 是什么原因造成了上述结果呢?那么我们得从ECMA-262中提到的转换规则和抽象操作说起,有兴趣的童鞋可以仔细阅读下这浩如烟海的语⾔规范,如果没这个耐⼼还是往下看. 这是JavaScript种类型转换可以从原始类型转为引⽤类型,同样可以将引⽤类型转为原始类型,转为原始类型的抽象操作为 ToPrimitive ,⽽后续更加细分的操作为: ToNumber ToString ToBoolean 。 为了更深⼊的探究JavaScript引擎是如何处理代码中类型转换问题的,就需要看 ECMA-262详细的规范,从⽽探究其内部原理,我们从这段内部原理示意代码开始. // ECMA-262, section 9.1, page 30. Use null/undefined for no hint, // (1) for number hint, and (2) for string hint. function ToPrimitive(x, hint) { // Fast case check. if (IS_STRING(x)) return x; // Normal behavior. if (!IS_SPEC_OBJECT(x)) return x; if (IS_SYMBOL_WRAPPER(x)) throw MakeTypeError(kSymbolToPrimitive); if (hint == NO_HINT) hint = (IS_DATE(x)) ? STRING_HINT : NUMBER_HINT; return (hint == NUMBER_HINT) ? DefaultNumber(x) : DefaultString(x); } // ECMA-262, section 8.6.2.6, page 28. function DefaultNumber(x) { if (!IS_SYMBOL_WRAPPER(x)) { var valueOf = x.valueOf; if (IS_SPEC_FUNCTION(valueOf)) { var v = %_CallFunction(x, valueOf); if (IsPrimitive(v)) return v; } var toString = x.toString; if (IS_SPEC_FUNCTION(toString)) { var s = %_CallFunction(x, toString); if (IsPrimitive(s)) return s; } } throw MakeTypeError(kCannotConvertToPrimitive); } // ECMA-262, section 8.6.2.6, page 28. function DefaultString(x) { if (!IS_SYMBOL_WRAPPER(x)) { var toString = x.toString; if (IS_SPEC_FUNCTION(toString)) { var s = %_CallFunction(x, toString); if (IsPrimitive(s)) return s; } var valueOf = x.valueOf; if (IS_SPEC_FUNCTION(valueOf)) { var v = %_CallFunction(x, valueOf); if (IsPrimitive(v)) return v; } } throw MakeTypeError(kCannotConvertToPrimitive); } 上⾯代码的逻辑是这样的: 如果变量为字符串,直接返回.如果 !IS_SPEC_OBJECT(x) ,直接返回.如果 IS_SYMBOL_WRAPPER(x) ,则抛出异常.否则会根据传⼊的 hint 来调⽤ DefaultNumber 和 DefaultString ,⽐如如果为 Date 对象,会调DefaultString .DefaultNumber :⾸ 先x.valueOf ,如果为 primitive ,则返回 valueOf 后的值,否则继续调⽤ x.toString,如果为 primitive ,则返回 toString 后的值,否则抛出异常DefaultString :和 DefaultNumber 正好相反,先调⽤ toString ,如果不是 primitive 再调⽤ valueOf . 那讲了实现原理,这个 ToPrimitive 有什么⽤呢?实际很多操作会调⽤ ToPrimitive ,⽐如加、相等或⽐较操。在进⾏加操作时会将左右操作数转换为 primitive ,然后进⾏相加。 下⾯来个实例,({}) + 1(将{}放在括号中是为了内核将其认为⼀个代码块)会输出啥?可能⽇常写代码并不会这样写,不过⽹上出过类似的⾯试题。 加操作只有左右运算符同时为 String或Number 时会执⾏对应的 %_StringAdd或%NumberAdd ,下⾯看下 ({}) + 1 内部会经过哪些步骤: {} 和 1 ⾸先会调⽤ToPrimitive {} 会⾛到 DefaultNumber ,⾸先会调⽤ valueOf ,返回的是 Object {} ,不是primitive类型,从⽽继续⾛到 toString ,返回 [object Object] ,是 String 类型 最后加操作,结果为 [object Object]1 再⽐如有⼈问你 [] + 1 输出啥时,你可能知道应该怎么去计算了,先对 [] 调⽤ ToPrimitive ,返回空字符串,最后结果为"1"。

前端问答 2019-12-19 07:36:28 0 浏览量 回答数 0

问题

如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?【Java问答学堂】22期

剑曼红尘 2020-05-20 19:23:46 0 浏览量 回答数 1

问题

【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?

剑曼红尘 2020-04-18 21:44:26 54 浏览量 回答数 1

问题

Apache Flink常见问题汇总【精品问答】

黄一刀 2020-05-19 17:51:47 11230 浏览量 回答数 2

问题

SSH面试题

琴瑟 2019-12-01 21:46:22 3489 浏览量 回答数 0

回答

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。 如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。 面试题剖析 数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。 RabbitMQ 生产者弄丢了数据 生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之前开启 RabbitMQ 事务 channel.txSelect ,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务 channel.txRollback ,然后重试发送消息;如果收到了消息,那么可以提交事务 channel.txCommit 。 往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 【Java问答学堂】2期 如何保证消息队列的高可用? 【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?) 【Java问答学堂】5期 如何保证消息的顺序性? 【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题? 【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计? 【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? 【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊? 【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少? 【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 【Java问答学堂】13期 redis 和 memcached 有什么区别? 【Java问答学堂】14期 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 【Java问答学堂】15期redis 的过期策略都有哪些?内存淘汰机制都有哪些? 【Java问答学堂】16期如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍 为什么使用消息队列?【Java问答学堂】17期 消息队列有什么优点和缺点?【Java问答学堂】18期 Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?【Java问答学堂】19期 如何保证消息队列的高可用?【Java问答学堂】20期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?【Java问答学堂】21期

剑曼红尘 2020-05-20 19:23:55 0 浏览量 回答数 0

回答

面试官心理分析 其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。 面试题剖析 回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。 首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。 Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset 提交一下,表示“我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的 offset 来继续消费吧”。 但是凡事总有意外,比如我们之前生产经常遇到的,就是你有时候重启系统,看你怎么重启了,如果碰到点着急的,直接 kill 进程了,再重启。这会导致 consumer 有些消息处理了,但是没来得及提交 offset,尴尬了。重启之后,少数消息会再次消费一次。 举个栗子。 有这么个场景。数据 1/2/3 依次进入 kafka,kafka 会给这三条数据每条分配一个 offset,代表这条数据的序号,我们就假设分配的 offset 依次是 152/153/154。消费者从 kafka 去消费的时候,也是按照这个顺序去消费。假如当消费者消费了 offset=153 的这条数据,刚准备去提交 offset 到 zookeeper,此时消费者进程被重启了。那么此时消费过的数据 1/2 的 offset 并没有提交,kafka 也就不知道你已经消费了 offset=153 这条数据。那么重启之后,消费者会找 kafka 说,嘿,哥儿们,你给我接着把上次我消费到的那个地方后面的数据继续给我传递过来。由于之前的 offset 没有提交成功,那么数据 1/2 会再次传过来,如果此时消费者没有去重的话,那么就会导致重复消费。 如果消费者干的事儿是拿一条数据就往数据库里写一条,会导致说,你可能就把数据 1/2 在数据库里插入了 2 次,那么数据就错啦。 其实重复消费不可怕,可怕的是你没考虑到重复消费之后,怎么保证幂等性。 举个例子吧。假设你有个系统,消费一条消息就往数据库里插入一条数据,要是你一个消息重复两次,你不就插入了两条,这数据不就错了?但是你要是消费到第二次的时候,自己判断一下是否已经消费过了,若是就直接扔了,这样不就保留了一条数据,从而保证了数据的正确性。 一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性。 幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。 所以第二个问题来了,怎么保证消息队列消费的幂等性? 其实还是得结合业务来思考,我这里给几个思路: 比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似订单 id 之类的东西,然后你这里消费到了之后,先根据这个 id 去比如 Redis 里查一下,之前消费过吗?如果没有消费过,你就处理,然后这个 id 写 Redis。如果消费过了,那你就别处理了,保证别重复处理相同的消息即可。比如基于数据库的唯一键来保证重复数据不会重复插入多条。因为有唯一键约束了,重复数据插入只会报错,不会导致数据库中出现脏数据。 当然,如何保证 MQ 的消费是幂等性的,需要结合具体的业务来看。 往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 【Java问答学堂】2期 如何保证消息队列的高可用? 【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?) 【Java问答学堂】5期 如何保证消息的顺序性? 【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题? 【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计? 【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? 【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊? 【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少? 【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 【Java问答学堂】13期 redis 和 memcached 有什么区别? 【Java问答学堂】14期 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 【Java问答学堂】15期redis 的过期策略都有哪些?内存淘汰机制都有哪些? 【Java问答学堂】16期如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍 为什么使用消息队列?【Java问答学堂】17期 消息队列有什么优点和缺点?【Java问答学堂】18期 Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?【Java问答学堂】19期 如何保证消息队列的高可用?【Java问答学堂】20期

剑曼红尘 2020-05-19 13:11:25 0 浏览量 回答数 0

问题

阿里云的远程经常断开,无法解决

boerthaaa 2019-12-01 21:59:01 10536 浏览量 回答数 4

问题

如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?【Java问答学堂】21期

剑曼红尘 2020-05-19 13:11:17 0 浏览量 回答数 1

回答

12月17日更新 请问下同时消费多个topic的情况下,在richmap里面可以获取到当前消息所属的topic吗? 各位大佬,你们实时都是怎样重跑数据的? 有木有大神知道Flink能否消费多个kafka集群的数据? 这个问题有人遇到吗? 你们实时读取广业务库到kafka是通过什么读的?kafka connector 的原理是定时去轮询,这样如果表多了,会不会影响业务库的性能?甚至把业务库搞挂? 有没有flink 1.9 连接 hive的例子啊?官网文档试了,没成功 请问各位是怎么解决实时流数据倾斜的? 请问一下,对于有状态的任务,如果任务做代码升级的时候,可否修改BoundedOutOfOrdernessTimestampExtractor的maxOutOfOrderness呢?是否会有影响数据逻辑的地方呢? 老哥们有做过统计从0点开始截止到现在时刻的累计用户数吗? 比如五分钟输出一次,就是7点输出0点到7点的累计用户,7:05输出0点到7:05的累计用户。 但是我这里有多个维度,现在用redis来做的。 想知道有没有更好的姿势? 实时数仓用什么存储介质来存储维表,维表有大有小,大的大概5千万左右。 各位大神有什么建议和经验分享吗? 请教个问题,就是flink的窗口触发必须是有数据才会触发吗?我现在有个这样的需求,就是存在窗口内没有流数据进入,但是窗口结束是要触发去外部系统获取上一个窗口的结果值作为本次窗口的结果值!现在没有流数据进入窗口结束时如何触发? kafkaSource.setStartFromTimestamp(timestamp); 发现kafkasource从指定时间开始消费,有些topic有效,有效topic无效,大佬们有遇到过吗? 各位大佬,flink两个table join的时候,为什么打印不出来数据,已经赋了关联条件了,但是也不报错 各位大佬 请教一下 一个faile的任务 会在这里面存储展示多久啊? 各位大佬,我的程序每五分钟一个窗口做了基础指标的统计,同时还想统计全天的Uv,这个是用State就能实现吗? 大佬们,flink的redis sink是不是只适用redis2.8.5版本? 有CEP 源码中文注释的发出来学习一下吗? 有没有拿flink和tensorflow集成的? 那位大神,给一个java版的flink1.7 读取kafka数据,做实时监控和统计的功能的代码案例。 请问下风控大佬,flink为风控引擎做数据支撑的时候,怎么应对风控规则的不断变化,比如说登录场景需要实时计算近十分钟内登录次数超过20次用户,这个规则可能会变成计算近五分钟内登录次数超过20次的。 想了解一下大家线上Flink作业一般开始的时候都分配多少内存?广播没办法改CEP flink支持多流(大于2流)join吗? 谁能帮忙提供一下flink的多并行度的情况下,怎么保证数据有序 例如map并行度为2 那就可能出现数据乱序的情况啊 请教下现在从哪里可以可以看单任务的运行状况和内存占用情况,flink页面上能看单个任务的内存、cpu 大佬们 flink1.9 停止任务手动保存savepoint的命令是啥? flink 一个流计算多个任务和 还是一个流一个任务好? flink 1.9 on yarn, 自定义个connector里面用了jni, failover以后 就起不来了, 报错重复load so的问题。 我想问一下 这个,怎么解决。 难道flink 里面不能用jni吗。 ide里面调试没有问题,部署到集群就会报错了,可能什么问题? 请教一下对于长时间耗内存很大的任务,大家都是开checkpoint机制,采用rocksdb做状态后端吗? 请问下大佬,flink jdbc读取mysql,tinyin字段类型自动转化为Boolean有没有好的解决方法 Flink 1.9版本的Blink查询优化器,Hive集成,Python API这几个功能好像都是预览版,请问群里有大佬生产环境中使用这些功能了吗? 想做一个监控或数据分析的功能,如果我flink 的datastreaming实现消费Kafka的数据,但是我监控的规则数据会增加或修改,但是不想停这个正在运行的flink程序,要如何传递这个动态变化的规则数据,大神给个思路,是用ConnectedStream这个吗?还是用Broadcast ?还有一个,比如我的规则数据是存放在Mysql表中,用什么事件隔30秒去触发读取mysql规则表呢?谢谢! 想做一个监控或数据分析的功能,如果我flink 的datastreaming实现消费Kafka的数据,但是我监控的规则数据会增加或修改,但是不想停这个正在运行的flink程序,要如何传递这个动态变化的规则数据,大神给个思路,是用ConnectedStream这个吗?还是用Broadcast ?还有一个,比如我的规则数据是存放在Mysql表中,用什么事件隔30秒去触发读取mysql规则表呢?谢谢! 各位大佬,在一个 Job 计算过程中,查询 MySQL 来补全额外数据,是一个好的实践嘛?还是说流处理过程中应该尽量避免查询额外的数据? Flink web UI是jquery写的吗? 12月9日更新 成功做完一次checkpoint后,会覆盖上一次的checkpoint吗? 数据量较大时,flink实时写入hbase能够异步写入吗? flink的异步io,是不是只是适合异步读取,并不适合异步写入呀? 请问一下,flink将结果sink到redis里面会不会对存储的IO造成很大的压力,如何批量的输出结果呢? 大佬们,flink 1.9.0版本里DataStream api,若从kafka里加载完数据以后,从这一个流中获取数据进行两条业务线的操作,是可以的吗? flink 中的rocksdb状态怎么样能可视化的查看有大佬知道吗? 感觉flink 并不怎么适合做hive 中的计算引擎来提升hive 表的查询速度 大佬们,task端rocksdb状态 保存路径默认是在哪里的啊?我想挂载个新磁盘 把状态存到那里去 flink 的state 在窗口滑动到下一个窗口时候 上一个窗口销毁时候 state会自己清除吗? 求助各位大佬,一个sql里面包含有几个大的hop滑动窗口,如15个小时和24个小时,滑动步长为5分钟,这样就会产生很多overlap 数据,导致状态会很快就达到几百g,然后作业内存也很快达到瓶颈就oom了,然后作业就不断重启,很不稳定,请问这个业务场景有什么有效的解决方案么? 使用jdbcsink的时候,如果连接长时间不使用 就会被关掉,有人遇到过吗?使用的是ddl的方式 如何向云邪大佬咨询FLink相关技术问题? 请问各位公司有专门开发自己的实时计算平台的吗? 请问各位公司有专门开发自己的实时计算平台的吗? 有哪位大佬有cdh集成安装flink的文档或者手册? 有哪位大佬有cdh集成安装flink的文档或者手册? 想问下老哥们都是怎么统计一段时间的UV的? 是直接用window然后count嘛? Flink是不是也是这样的? 请问现在如有个实时程序,根据一个mysql的维表来清洗,但是我这个mysql表里面就只有几条信息且可能会变。 我想同一个定时器去读mysql,然后存在对象中,流清洗的时候读取这个数据,这个想法可行吗?我目前在主类里面定义一个对象,然后往里面更新,发现下面的map方法之类的读不到我更新进去的值 有大佬做过flink—sql的血缘分析吗? 12月3日更新 请教一下,为什么我flume已经登录成功了keytab认证的kafka集群,但是就是消费不到数据呢? flink 写入mysql 很长一段时间没有写入,报错怎么解决呢? flink timestamp转换为date类型,有什么函数吗 Run a single Flink job on YARN 我采用这种模式提交任务,出现无法找到 开启 HA 的ResourceManager Failed to connect to server: xxxxx:8032: retries get failed due to exceeded maximum allowed retries number: 0 有大佬遇到过吗 ? 各位大佬,请问有Flink写S3的方案吗? flink 连接hbase 只支持1.4.3版本? onnector: type: hbase version: "1.4.3" 请问 flink1.9能跑在hadoop3集群上吗? 滑动窗口 排序 报错这个是什么原因呢? 这个pravega和kafka有啥区别? flink 开发里数据源配置了RDS,但是在RDS里没有看到创建的表,是为什么呢? Tumbling Window里的数据,是等窗口期内的数据到齐之后一次性处理,还是到了一条就处理一条啊 双流join后再做time window grouping. 但是双流join会丢失时间属性,请问大家如何解决 stream processing with apache flink,这本书的中译版 现在可以买吗? flink on yarn时,jm和tm占用的内存最小是600M,这个可以修改吗? 各位大佬,使用默认的窗口Trigger,在什么情况下会触发两次啊?窗口关闭后,然后还来了这个窗口期内的数据,并且开了allowedLateness么? flink web里可以像storm那样 看每条数据在该算子中的平均耗时吗? 各位大佬,flink任务的并发数调大到160+以后,每隔几十分钟就会出现一次TM节点连接丢失的异常,导致任务重启。并发在100时运行比较稳定,哪位大佬可以提供下排查的思路? 感觉stateful function 是下一个要发力的点,这个现在有应用案例吗? 我有2个子网(a子网,b子网)用vpn联通,vpn几周可能会断一次。a子网有一个kafka集群,b子网运行我自己的flink集群和应用,b子网的flink应用连接到a子网的kafka集群接收消息来处理入库到数仓去。我的问题是,如果vpn断开,flink consumer会异常整个作业退出吗?如果作业退出,我重连vpn后,能从auto checkpoint再把flink应用恢复到出错时flink kafka consumer应该读取的partition/offset位置吗?flink的checkpoint除了保存自己开发的算子里的state,kafkaconsumer里的partition/offset也会保存和恢复吗? flink的反压为什么不加入metrics呢 hdfs是不是和flink共用一个集群? flink消费kafka,可以从指定时间消费的吗?目前提供的接口只是根据offset消费?有人知道怎么处理? flink 的Keyby是不是只是repartition而已?没有将key相同的数据放到一个组合里面 电商大屏 大家推荐用什么来做吗? 我比较倾向用数据库,因为有些数据需要join其他表,flink充当了什么角色,对这个有点迷,比如统计当天订单量,卖了多少钱,各个省的销量,销售金额,各个品类的销售量销售金额 开源1.9的sql中怎么把watermark给用起来,有大神知道吗? 有没有人能有一些flink的教程 代码之类的分享啊 采用了checkpoint,程序停止了之后,什么都不改,直接重启,还是能接着继续运行吗?如果可以的话,savepoint的意义又是什么呢? 有人做过flink 的tpc-ds测试吗,能不能分享一下操作的流程方法 checkpoint是有时间间隔的,也就可以理解为checkpoint是以批量操作的,那如果还没进行ckecnpoint就挂了,下次从最新的一次checkpoint重启,不是重复消费了? kafka是可以批量读取数据,但是flink是一条一条处理的,应该也可以一条一条提交吧。 各位大佬,flink sql目前是不是不支持tumbling window join,有人了解吗? 你们的HDFS是装在taskmanager上还是完全分开的,请问大佬们有遇到这种情况吗? 大佬们flink检查点存hdfs的话怎么自动清理文件啊 一个128M很快磁盘就满了 有谁遇到过这个问题? 请教一下各位,这段代码里面,我想加一个trigger,实现每次有数据进window时候,就输出,而不是等到window结束再输出,应该怎么加? 麻烦问下 flink on yarn 执行 客户端启动时 报上面错,是什么原因造成的 求大佬指点 ERROR org.apache.flink.client.program.rest.RestClusterClient - Error while shutting down cluster java.util.concurrent.ExecutionException: org.apache.flink.runtime.concurrent.FutureUtils$RetryException: Could not complete the operation. Number of retries has been exhausted. 大家怎么能动态的改变 flink WindowFunction 窗口数据时间 flink on yarn之后。yarn的日志目录被写满,大家如配置的? Flink1.9 启动 yarn-session报这个错误 怎么破? yarn 模式下,checkpoint 是存在 JobManager的,提交任务也是提交给 JobManager 的吧? heckpoint机制,会不会把window里面的数据全部放checkpoint里面? Flink On Yarn的模式下,如果通过REST API 停止Job,并触发savepiont呢 jenkins自动化部署flink的job,一般用什么方案?shell脚本还是api的方式? 各位大佬,开启增量checkpoint 情况下,这个state size 是总的checkpoint 大小,还是增量上传的大小? 想用状态表作为子表 外面嵌套窗口 如何实现呢 因为状态表group by之后 ctime会失去时间属性,有哪位大佬知道的? 你们有试过在同样的3台机器上部署两套kafka吗? 大家有没有比较好的sql解析 组件(支持嵌套sql)? richmapfuntion的open/close方法,和处理数据的map方法,是在同一个线程,还是不同线程调用的? flink on yarn 提交 参数 -p 20 -yn 5 -ys 3 ,我不是只启动了5个container么? Flink的乱序问题怎么解决? 我对数据流先进行了keyBy,print的时候是有数据的,一旦进行了timeWindow滑动窗口就没有数据了,请问是什么情况呢? 搭建flinksql平台的时候,怎么处理udf的呀? 怎么查看sentry元数据里哪些角色有哪些权限? 用java api写的kafka consumer能消费到的消息,但是Flink消费不到,这是为啥? 我state大小如果为2G左右 每次checkpoint会不会有压力? link-table中的udaf能用deltaTrigger么? flink1.7.2,场景是一分钟为窗口计算每分钟传感器的最高温度,同时计算当前分钟与上一分钟最高温 001 Flink集群支持kerberos认证吗?也就是说flink客户端需要向Flink集群进行kerberos认证,认证通过之后客户端才能提交作业到Flink集群运行002 Flink支持多租户吗? 如果要对客户端提交作业到flink进行访问控制,你们有类似的这种使用场景吗? flink可以同时读取多个topic的数据吗? Flink能够做实时ETL(oracle端到oracle端或者多端)么? Flink是否适合普通的关系型数据库呢? Flink是否适合普通的关系型数据库呢? 流窗口关联mysql中的维度表大佬们都是怎么做的啊? 怎么保证整个链路的exactly one episode精准一次,从source 到flink到sink? 在SQL的TUMBLE窗口的统计中,如果没数据进来的,如何让他也定期执行,比如进行count计算,让他输出0? new FlinkKafkaConsumer010[String]("PREWARNING",new JSONKeyValueDeserializationSchema(true), kafkaProps).setStartFromGroupOffsets() ) 我这样new 它说要我传个KeyedDeserializationSchema接口进去 flink里面broadcast state想定时reload怎么做?我用kafka里的stream flink独立模式高可用搭建必需要hadoop吗? 有人用增量cleanupIncrementally的方式来清理状态的嘛,感觉性能很差。 flink sink to hbase继承 RichOutputFormat运行就报错 kafka 只有低级 api 才拿得到 offset 吗? 有个问题咨询下大家,我的flinksql中有一些参数是要从mysql中获取的,比如我flink的sql是select * from aa where cc=?,这个问号的参数需要从mysql中获取,我用普通的jdbc进行连接可以获的,但是有一个问题,就是我mysql的数据改了之后必须重启flink程序才能解决这个问题,但这肯定不符合要求,请问大家有什么好的办法吗? flink里怎样实现多表关联制作宽表 flink写es,因为半夜es集群做路由,导致写入容易失败,会引起source的反压,然后导致checkpoint超时任务卡死,请问有没有办法在下游es处理慢的时候暂停上游的导入来缓解反压? flink 写parquet 文件,使用StreamingFileSink streamingFileSink = StreamingFileSink.forBulkFormat( new Path(path), ParquetAvroWriters.forReflectRecord(BuyerviewcarListLog.class)). withBucketAssigner(bucketAssigner).build(); 报错 java.lang.UnsupportedOperationException: Recoverable writers on Hadoop are only supported for HDFS and for Hadoop version 2.7 or newer 1.7.2 NoWindowInnerJoin这个实现,我看实现了CleanupState可更新过期时间删除当前key状态的接口,是不是这个1.7.2版本即使有个流的key一直没有被匹配到他的状态也会被清理掉,就不会存在内存泄漏的问题了? flink1.7.2 想在Table的UDAF中使用State,但是发现UDAF的open函数的FunctionContext中对于RuntimeContext是一个private,无法使用,大佬,如何在Table的UDAF中使用State啊? Flink有什么性能测试工具吗? 项目里用到了了KafkaTableSourceSinkFactory和JDBCTableSourceSinkFactory。maven打包后,META-INF里只会保留第一个 标签的org.apache.flink.table.factories.TableFactory内容。然后执行时就会有找不到合适factory的报错,请问有什么解决办法吗? 为什么这个这段逻辑 debug的时候 是直接跳过的 各位大佬,以天为单位的窗口有没有遇到过在八点钟的时候会生成一条昨天的记录? 想问一下,我要做一个规则引擎,需要动态改变规则,如何在flink里面执行? flink-1.9.1/bin/yarn-session.sh: line 32: construc 我要用sql做一个规则引擎,需要动态改变规则,如何在flink里面执行? 我要用sql做一个规则引擎,需要动态改变规则,如何在flink里面执行? 一般公司的flink job有没有进程进行守护?有专门的工具或者是自己写脚本?这种情况针对flink kafka能不能通过java获取topic的消息所占空间大小? Flink container was removed这个咋解决的。我有时候没有数据的时候也出现这 大家有没有这种场景,数据从binlog消费,这个信息是订单信息,同一个订单id,会有不同状态的变更 问大家个Hive问题,新建的hive外部分区表, 怎么把HDFS数据一次性全部导入hive里 ? flink里面的broadcast state值,会出现broad流的数据还没put进mapstat Flink SQL DDL 创建表时,如何定义字段的类型为proctime? 请问下窗口计算能对历史数据进行处理吗?比如kafka里的写数据没停,窗口计算的应用停掉一段时间再开起 请问下,想统计未退费的订单数量,如果一个订单退费了(发过来一个update流),flink能做到对结果进行-1吗,这样的需求sql支持吗? 使用Flink sql时,对table使用了group by操作。然后将结果转换为流时是不是只能使用的toRetractStream方法不能使用toAppendStream方法。 百亿数据实时去重,有哪位同学实践过吗? 你们的去重容许有误差?因为bloom filter其实只能给出【肯定不存在】和【可能存在】两种结果。对于可能存在这种结果,你们会认为是同一条记录? 我就运行了一个自带的示例,一运行就报错然后web页面就崩了 flink定时加载外部数据有人做过吗? NoSuchMethodError: org.apache.flink.api.java.Utils.resolveFactory(Ljava/lang/ThreadLocal;Ljava/lang/Object;)Ljava/util/Optional 各位知道这个是那个包吗? flink 可以把大量数据写入mysql吗?比如10g flink sql 解析复杂的json可以吗? 在页面上写规则,用flink执行,怎么传递给flink? 使用cep时,如何动态添加规则? 如何基于flink 实现两个很大的数据集的交集 并集 差集? flink的应用场景是?除了实时 各位好,请教一下,滑动窗口,每次滑动都全量输出结果,外部存储系统压力大,是否有办法,只输出变化的key? RichSinkFunction close只有任务结束时候才会去调用,但是数据库连接一直拿着,最后成了数据库连接超时了,大佬们有什么好的建议去处理吗?? 为啥我的自定义函数注册,然后sql中使用不了? 请问一下各位老师,flink flapmap 中的collector.collect经常出现Buffer pool is destroyed可能是什么原因呢? 用asyncIO比直接在map里实现读hbase还慢,在和hbase交互这块儿,每个算子都加了时间统计 请教一下,在yarn上运行,会找不到 org.apache.flink.streaming.util 请问下大佬,flink1.7.2对于sql的支持是不是不怎么好啊 ,跑的数据一大就会报错。 各位大佬,都用什么来监控flink集群? flink 有那种把多条消息聚合成一条的操作吗,比如说每五十条聚合成一条 如何可以让checkpoint 跳过对齐呢? 请问 阿里云实时计算(Blink)支持这4个源数据表吗?DataHub Kafka MQ MaxCompute? 为啥checkpoint时间会越来越长,请问哪位大佬知道是因为啥呢? 请问Flink的最大并行度跟kafka partition数量有关系吗? source的并行度应该最好是跟partition数量一致吧,那剩下的算子并行度呢? Flink有 MLIB库吗,为什么1.9中没有了啊? 请教一下,有没有flink ui的文章呢?在这块内存配置,我给 TM 配置的内存只有 4096 M,但是这里为什么对不上呢?请问哪里可以看 TM 内存使用了多少呢? 请教个问题,fink RichSinkFunction的invoke方法是什么时候被调用的? 请教一下,flink的window的触发条件 watermark 小于 window 的 end_time。这个 watermark 为什么是针对所有数据的呢?没有设计为一个 key 一个 watermark 呢? 就比如说有 key1、key2、key3,有3个 watermark,有 3个 window interval不支持left join那怎么可以实现把窗口内左表的数据也写到下游呢? 各位 1、sink如何只得到最终的结果而不是也输出过程结果 ;2、不同的运算如何不借助外部系统的存储作为另外一个运算的source 请教各位一个问题,flink中设置什么配置可以取消Generic这个泛型,如图报错: 有大佬在吗,线上遇到个问题,但是明明内存还有200多G,然后呢任务cancel不了,台也取消不了程序 flink遇到The assigned slot container_1540803405745_0094_01_000008_1 was removed. 有木有大佬遇到过。在flink on yarn上跑 这个报错是什么意思呢?我使用滑动窗口的时候出现报错 flink 双流union状态过期不清理有遇到的吗? 大家有没有这种场景,数据从binlog消费,这个信息是订单信息,同一个订单id,会有不同状态的变更,如果订单表与商品明细join查询,就会出现n条重复数据,这样数据就不准了,flink 这块有没有比较好的实战经验的。 大佬们、有没有人遇到过使用一分钟的TumblingEventTimeWindows,但是没有按时触发窗口、而是一直等到下一条消息进来之后才会把这个窗口的数据发送出去的? flink 有办法 读取 pytorch的 模型文件吗? 大佬们、有没有人遇到过使用一分钟的TumblingEventTimeWindows,但是没有按时触发窗口、而是一直等到下一条消息进来之后才会把这个窗口的数据发送出去的? flink timestamp转换为date类型,有什么函数吗 flink 写入mysql 很长一段时间没有写入,报错怎么解决呢? flink 有办法 读取 pytorch的 模型文件吗? 有没有大佬知道实时报表怎么做?就是统计的结果要实时更新,热数据。 刚接触flink 1.9 求问flink run脚本中怎么没有相关提交到yarn的命令了 请教一下,flink里怎么实现batch sink的操作而不导致数据丢失

问问小秘 2019-12-02 03:19:17 0 浏览量 回答数 0

回答

 publicstaticfinalStringDBurl="jdbc:mysql(此处少一个冒号)//localhost:3306/mldn"; 看到了,粗心了。谢谢大哥了、 conn=DriverManager.getConnection(DBurl,User,Password);       state=conn.createStatement();               Stringsql="insertintouser(id,name)values(3,3)";       state.executeUpdate(sql);       conn.close(); 这一坨咋不包在trycache finally里。。。。。。。。。。。。     Connectionconn=null;    Statementstate=null; try{   Class.forName(Dri);     conn=DriverManager.getConnection(DBurl,User,Password);    state=conn.createStatement();        Stringsql="insertintouser(id,name)values(3,3)";    state.executeUpdate(sql);  }catch(ClassNotFoundExceptione){   System.out.println("出现错误"+e);   }    finally{     conn.close();   xx.close(); xx.close();   } } } 这样还靠点谱刚才没看见还有个throws····回复 @空清城:也行啊,关键是你获得conn时会出异常,你没处理大哥。我将程序中会出现的异常在主方法抛出不处理不行吗?另外  Dri="org.gjt.mm.mysql.Driver";这是啥????你写错了回复 @softsword:这个写法也是可以的。我咋记得是com.mysql.jdbcDriver这个是没有错的。这个是驱动的一个什么东西的、 问题追加: 一下代码是可以运行的可以有结果;但是本人看不出不同。 麻烦看出来的人讲解一下importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.Statement; publicclassConnectdemo1{  //定义MySQL的数据库驱动程序  publicstaticfinalStringDBDRIVER="org.gjt.mm.mysql.Driver";  //定义MySQL数据库的连接地址  publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/mldn";  //MySQL数据库的连接用户名  publicstaticfinalStringDBUSER="root";  //MySQL数据库的连接密码  publicstaticfinalStringDBPASS="root";  publicstaticvoidmain(Stringargs[])throwsException{ //所有的异常抛出   Connectionconn=null;  //数据库连接   Statementstmt=null;   //数据库操作   Class.forName(DBDRIVER); //加载驱动程序   Stringsql="INSERTINTOuser(id,name)"+    "VALUES(3,3)";   conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);   stmt=conn.createStatement(); //实例化Statement对象   stmt.executeUpdate(sql);  //执行数据库更新操作   stmt.close();     //关闭操作   conn.close();   //数据库关闭  } };   下面是对各种数据库的驱动类名和URL格式的汇总。如表3所示。其中hostip代表ip地址,dbname代表数据库名。 数据库 驱动类名 URL格式 Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostip:1521:dbname Sybase com.sybase.jdbc2.jdbc.SybDriver jdbc:sybase:Tds:hostip:4100/dbname Mysql com.mysql.jdbc.Driver jdbc:mysql://hostip:3306/dbname?useUnicode=true&characterEncoding=GBK SQLServer2000 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver://hostip:1433;DatabaseName=dbname SQLServer2005 com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://hostip:1433;DatabaseName=dbname SQLServer7.0 net.sourceforge.jtds.jdbc.Driver jdbc:jtds:sqlserver://hostip:1433/dbname DB2 com.ibm.db2.jcc.DB2Driver jdbc:db2://hostip:50000/dbname Informix com.informix.jdbc.IfxDriver jdbc:informix-sqli://hostip:port/dbname:informixserver=<dbservername>谢谢了。以后不用愁了。

爱吃鱼的程序员 2020-06-22 18:14:50 0 浏览量 回答数 0

问题

Java技术1000问(3)【精品问答】

问问小秘 2020-06-02 14:27:10 42 浏览量 回答数 1

回答

1.如上面一哥们说的,但是不建议使用 method(@RequestBodyMapmap){map.get("code");} 2.直接将requestcontent转换为JSONObject(配置Converter,springmvc会帮我们做) method(@RequestBodyJSONObjectjsonObj){jsonObj.getString("code");} 自动转不了吧,还是要对象或者map,因为是JSON过来之后是LinkedHashMap回复 @puras:既然选择使用json和服务端交互,那么用JSON对象来接收数据肯定是最好的,不知道你指的复杂情况是什么情况,性能?你说的这种是简单的情况,有时一些复杂的情况,Spring的自动转换也没有办法帮我转换成我想要的东西。比如对象嵌套3层以上的时候。有啥好办法?或是建议使用的办法么?感觉这样略麻烦,不建议用map的原因是什么?如果装配成对象不如直接在@RequestBody的时候直接装配就好了 实现方式: @JsonArg("$.resource")Stringcode 步骤: 1、自定义注解 @Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)public@interfaceJsonArg{publicStringvalue()default"";} 2、实现  HandlerMethodArgumentResolver  : publicclassJsonArgumentResolverimplementsHandlerMethodArgumentResolver{privatestaticfinalStringJSONBODYATTRIBUTE="JSON_REQUEST_BODY";@OverridepublicbooleansupportsParameter(MethodParameterparameter){returnparameter.hasParameterAnnotation(JsonArg.class);}@OverridepublicObjectresolveArgument(MethodParameterparameter,ModelAndViewContainermavContainer,NativeWebRequestwebRequest,WebDataBinderFactorybinderFactory)throwsException{Stringbody=getRequestBody(webRequest);Stringarg=parameter.getParameterAnnotation(JsonArg.class).value();if(StringUtils.isEmpty(arg)){arg=parameter.getParameterName();}Objectval=JsonPath.parse(body).read(arg,parameter.getParameterType());returnval;}privateStringgetRequestBody(NativeWebRequestwebRequest){HttpServletRequestservletRequest=webRequest.getNativeRequest(HttpServletRequest.class);StringjsonBody=(String)webRequest.getAttribute(JSONBODYATTRIBUTE,NativeWebRequest.SCOPE_REQUEST);if(jsonBody==null){try{jsonBody=IOUtils.toString(servletRequest.getInputStream());webRequest.setAttribute(JSONBODYATTRIBUTE,jsonBody,NativeWebRequest.SCOPE_REQUEST);}catch(IOExceptione){thrownewRuntimeException(e);}}returnjsonBody;}} 3、spring-mvc中声明: <mvc:annotation-driven><mvc:argument-resolvers><beans:beanclass="com.redcollar.bl.commons.extension.JsonArgumentResolver"/></mvc:argument-resolvers></mvc:annotation-driven> 回复 @徐建兴:com.jayway.jsonpath.JsonPath和jacksonhttp://stackoverflow.com/questions/12893566/passing-multple-variables-in-requestbody-to-a-spring-mvc-controller-using-ajax真正的大神! @RequestParam(value="code")Stringcode 即可获取到绝逼获取不到这样获取不到吧IOUtils.toString(request.getInputStream()) 测试单元里面code=ddfg这个参数名和后面content(jsonStr)冲突了吧 对,那个是粘贴的时候的错误,已经修改过来了。谢谢指正。 请求包的contentType要设置成multipart/form-data,这样Servlet容器才不会解析请求包体 另外这个东西和Spring的multipart文件上传组件冲突 这样的: @RequestMapping(value="reset_passwd.json",method=RequestMethod.POST)@ResponseBodypublicObjectresetPasswd(@RequestBodyStringrequestJson){Stringmessage=null;Map<String,Object>jsonData=StringUtils.parseJson(requestJson);Stringemployee=(String)jsonData.get("employee");//...}而发起这个请求是: /***使用POST模拟文件上传提交一个json对象,注意这个方法提交的数据为json对象的字符串表示而非标准文件上传请求包**@paramurl*@paramparams*@return*@throwsIOException*/publicstaticStringdoJson(Stringurl,Objectdata)throwsIOException{HttpURLConnectionconnection=(HttpURLConnection)newURL(url).openConnection();connection.setDoOutput(true);connection.setConnectTimeout(Const.DEFAULT_HTTP_CONNECT_TIMEOUT);connection.setReadTimeout(Const.DEFAULT_HTTP_READ_TIMEOUT);connection.setUseCaches(false);connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type","multipart/form-data");BufferedOutputStreamout=null;try{out=newBufferedOutputStream(connection.getOutputStream());out.write(StringUtils.toJson(data).getBytes(Const.DEFAULT_CHARSET));out.flush();}finally{if(out!=null){out.close();out=null;}}//...后面读取结果} 回复 @逝水fox:您好,我现在需要使用这种方法上传json,同时我还要上传文件,上面您说这种方式回合MultipartFile冲突,那请问有什么好的解决方案呢?回复 @Kent_Chen:如果不用mutipart,首先是Tomcat有默认的2M的请求包大小限制,另外如果用application/json,SpringMVC的MessageConverter也会处理(这个并不只对@ResponseBody有效,对@RequestBody仍然是有效的),如果要自己String处理以便在json字符串异常的时候自己能有处理,这个是不方便的我又不上传为什么需要multipart/form-data method(@RequestBodyMapmap){ map.get("code"); }感谢指点,非常有用,看了下JSON被转成了LinkedHashMap只能用Map或者对象接收回复 @Kent_Chen:记得给最佳哈。谢谢,这个是可以的:) 不是method(HttpServletRequestrequest){ request.getParameter("code"); }就好? @Kent_Chen我一直用的getParameter,是可以取到值的,确定是POST方法POST放在REQUESTBODY里的,getParameter是取不到的有兴趣的可以试一下参数过来是串,想直接用肯定还需要转换?要么自带提供的有,要么自己转可以用post 请求把json数据作为值,例如value=jsondata,这个时候用 getParameter可以取到,剩下的你想怎么转就怎么转,还有一种方法,自定义ConversionService

爱吃鱼的程序员 2020-06-15 19:51:03 0 浏览量 回答数 0

问题

请问一下,有谁知道云哪里投诉阿里云。

熊贝贝 2019-12-01 21:23:16 8025 浏览量 回答数 3

回答

  public static final String DBurl = "jdbc:mysql(此处少一个冒号)//localhost:3306/mldn"; ######看到了, 粗心了。谢谢大哥了 、######conn= DriverManager.getConnection(DBurl, User, Password);        state=conn.createStatement();                String sql="insert into user(id,name)values(3,3)";        state.executeUpdate(sql);        conn.close(); 这一坨咋不包在try cache  finally里。。。。。。。。。。。。 ######      Connection conn=null;        Statement state=null; try {     Class.forName(Dri);        conn= DriverManager.getConnection(DBurl, User, Password);        state=conn.createStatement();                String sql="insert into user(id,name)values(3,3)";        state.executeUpdate(sql);    } catch (ClassNotFoundException e) {     System.out.println("出现错误"+e);    }      finally{        conn.close();     xx.close(); xx.close();     } } } 这样还靠点谱 ######刚才没看见还有个throws ····######回复 @空清城 : 也行啊,关键是你获得conn时会出异常,你没处理######大哥。我将程序中会出现的异常在主方法抛出不处理不行吗 ?######另外  Dri = "org.gjt.mm.mysql.Driver";这是啥????你写错了######回复 @softsword : 这个写法也是可以的 。######我咋记得是com.mysql.jdbcDriver######这个是没有错的。 这个是驱动的一个什么东西的、###### 问题追加: 一下代码是可以运行的可以有结果;但是本人看不出不同。 麻烦看出来的人讲解一下 import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.Statement ; public class Connectdemo1{  // 定义MySQL的数据库驱动程序  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;  // 定义MySQL数据库的连接地址  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;  // MySQL数据库的连接用户名  public static final String DBUSER = "root" ;  // MySQL数据库的连接密码  public static final String DBPASS = "root" ;  public static void main(String args[]) throws Exception { // 所有的异常抛出   Connection conn = null ;  // 数据库连接   Statement stmt = null ;   // 数据库操作   Class.forName(DBDRIVER) ; // 加载驱动程序   String sql = "INSERT INTO user(id,name) "+    " VALUES (3,3)" ;   conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;   stmt = conn.createStatement() ; // 实例化Statement对象   stmt.executeUpdate(sql) ;  // 执行数据库更新操作   stmt.close() ;     // 关闭操作   conn.close() ;   // 数据库关闭  } };   ###### 下面是对各种数据库的驱动类名和URL格式的汇总。如表3所示。其中hostip代表ip地址,dbname代表数据库名。 数据库 驱动类名 URL格式 Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostip:1521:dbname Sybase com.sybase.jdbc2.jdbc.SybDriver jdbc:sybase:Tds:hostip:4100/dbname Mysql com.mysql.jdbc.Driver jdbc:mysql://hostip:3306/dbname?useUnicode=true&characterEncoding=GBK SQLServer 2000 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver://hostip:1433;DatabaseName=dbname SQLServer 2005 com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://hostip:1433;DatabaseName=dbname SQLServer 7.0 net.sourceforge.jtds.jdbc.Driver jdbc:jtds:sqlserver://hostip:1433/dbname DB2 com.ibm.db2.jcc.DB2Driver jdbc:db2://hostip:50000/dbname Informix com.informix.jdbc.IfxDriver jdbc:informix-sqli://hostip:port/dbname:informixserver=<dbservername> ######谢谢了。以后不用愁了。

爱吃鱼的程序员 2020-06-04 16:23:05 0 浏览量 回答数 0

问题

为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗?【Java问答学堂】46期

剑曼红尘 2020-06-29 16:39:00 6 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站