暂无个人介绍
java.lang.NoClassDefFoundError 一般发生在 A依赖B, B不存在或者不是期望的版本.
例如, A类在加载的时候,执行了一段静态代码块, 使用了 B类的method1方法,但是method1方法在真正加载的B类中是不存在的.
或者, import 的类是不存在的.
11
11
auto box/unbox 是jdk5推出的新特性.简化代码的操作的,在基础数据类型和包装类之间的转换.
java 中 基础数据类型严格意义上说是一种特殊的对象,而我们平时操作的是普通的对象.
当你使用的方法,添加或获取的是一个普通的对象时候(包装类)就会自动装箱.反之就是拆箱,在算数符运算的时候也会发生.
这个特性虽然带来了一些便利,但是使用不恰当会有很大的性能损失,或者出现空指针异常(unbox).
所以我们在开发的时候,一定要考虑到能使用基础数据类型就使用基础数据类型.例如使用int[]而不是List.
11
是否发布了多个服务在不同的应用.日志中发现失败信息是找不到verificationUser这个方法,检查下是不是发布不完全.
所有的对象应该通过Spring 来控制其生命周期,依赖和注入.
scala 不是 scale.
用java的话,最好建议用java8函数编程.会节省很多代码
Controller 本身是单例, 是否线程安全还得看你怎么用. 任何情况下,线程安全问题都是看你怎么处理共享对象,而不是看你是不是单例还是原型对象
项目打印出gc日志,dump文件.
-Xloggc:xxx.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/xxx
有了这些东西,事后才好复盘.
11
后端代码要求 consumes="application/json" ,前端应该匹配 Content-Type = 'application/json'
这个是Idea的bug, 参数莫名Debug显示的值不是代码加入的值. 你可以尝试更新下Idea
Hbase get 操作可以指定 rowkey 查询的范围.类似于分页查询.但是rowkey必须按照自顺序设计.
尽量不要使用 rowkey 的模糊查询
如果关联的方式能通过 rowkey 很好的查询出来,性能不会慢.如果有复杂的查询逻辑,类似 scan columns 的操作,肯定会慢,秒级都是问题.
已经回答
1.本地是什么方式写入的,是否是批量写入.
2.本地和Hbase的网络问题,带宽问题,需要检查下.在程序运行的时候查看下输出流量.
简单的业务场景下Hbase查询会更快.
但是如果业务中有大量的模糊查询,es更能胜任.
没有什么数据库能解决所有的业务场景,根据实际业务来选择数据库存储.
已经回答
Hbase 适用于数据业务较大,使用场景单一的业务,即能 通过 rowkey 容易的查询数据.当然现在也有很多二级索引的方案,基本都是基于协处理器实现的,会有一定的延迟.
MongoDB 是 NoSql 中最像Mysql的数据库,本身支持集群扩展.还可以当内存缓存数据库使用.
已经回答
Spark 运行算子的原理是这样的.
首先,会把自己开发的算子(就是java类或者scala类所在的jar)分发到分配的节点上去,当client执行一系列操作的时候,其实是相关的算子发送到各个节点去执行,client本地其实不运行,计算运算完成以后,将结果返回给client.
您只需要把您的web项目当成client就可以实现这个功能.sparl 本身也提供api,支持在代码中提交任务.原理就是把本地的算子直接上传到集群,集群在分发到分配的节点上去.
当然这种需求往往是想利用Spark做实时计算,其实有点偏离Spark的初衷, Spark其实还是一个离线任务运行的工具.并不适合提交大量的任务上去运行(并发比较高的场景).
可以
JAVA 的 js 引擎中没有引入浏览器中原生的JSON 库,您可以找一个json库,在java脚本引擎中添加.
已经回到
由于Spark的任务是分布式任务, yarn会将任务分发到各个子节点,您要保证你执行的脚本在所有的节点上都有.
linux 下可以在压缩包前面加入运行脚本.在windows环境下,你可以用文本查看器打开这个jar包,就会发现奥秘.
spring boot 的服务包也是这个原理.
如果可以条件的话,可以利用全文检索(solor或者其他)工具构建二级索引, columns -> rowkey 的映射.在Hbase中添加自定义协处理器,处理这个问题.
这种错误一般是代码里面使用的类少了依赖.
您可以看看 StreamExecutionEnvironment import 的类有哪些是找不到的.
引入即可