gson

Java 开发者的编程噩梦,为什么你的代码总有 bug??

99封情书 提交于 2020-08-17 02:26:11
文章已经收录在 Github.com/niumoo/JavaNotes ,更有 Java 程序员所需要掌握的核心知识,欢迎Star和指教。 很多 Java 初学者在开始编程时会出现一些问题,这些问题并不是指某个特定领域的问题,也不是指对某个业务不熟悉而导致的问题,而是对基础知识不够熟悉导致的问题。而就是这些问题让我们编写了一些不够健壮的代码。 这篇文章会列举几种编程初学者常常出现的一些问题,我相信这些问题多多少少也曾困扰着现在或曾经的你。如果觉得文章不错,不妨点赞分享,让更多人跳过这些开发中的坑。 随处可见的 Null 值 我见过很多的代码会把 Null 值作为返回值,当你预期是一个字符串时,意外得到了一个 Null 值;当你预期得到一个 List 时,意外又得到了一个 Null 值,如果你不进行处理,那么你还会意外得到 NullPointerException . 就像下面这样。 // 情况1 String userTag = getUserTag ( ) ; if ( userTag . equals ( "admin" ) ) { // NullPointerException // ... } // 情况2 List < String > carList = getCarList ( ) ; for ( String car : carList ) { //

Gson2.8.6版本报错java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)

喜你入骨 提交于 2020-08-15 15:39:02
绪 最近在Scala的项目中尝试使用Gson来做json的数据解析;Scala自带和Jackson使用都太过繁琐; 使用Gson在scala代码如下;唯一的就是需要解析完后需要调用getAsXXX;嵌套对象需要重复执行这个方法;JsonParser在2.8.6里面new方法放弃了。推荐用静态方法;2.8.5里面,还是通过new来实例化JsonParser; val json = JsonParser.parseString(s) val obj = json.getAsJsonObject println(obj.get("@timestamp")) 但是在项目中,碰到一个错误。NoSuchMethodError。不知道如何下手了;本地跑可以,到集群就崩;错误如下: java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)Lcom/google/gson/JsonElement #1077 解决方法 换个低版本的2.8.5;正常不报错了、 val jsonParser = new JsonParser() val jsonObj = jsonParser.parse(line).getAsJsonObject 来源: oschina 链接: https://my

Java大文件分片上传/多线程上传控件

牧云@^-^@ 提交于 2020-08-15 09:23:29
1,项目调研 因为需要研究下断点上传的问题。找了很久终于找到一个比较好的项目。 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面。 https://github.com/freewebsys/java-large-file-uploader-demo 效果: 上传中,显示进度,时间,百分比。 点击【Pause】暂停,点击【Resume】继续。 2,代码分析 原始项目: https://code.google.com/p/java-large-file-uploader/ 这个项目最后更新的时间是 2012 年,项目进行了封装使用最简单的方法实现了http的断点上传。 因为html5 里面有读取文件分割文件的类库,所以才可以支持断点上传,所以这个只能在html5 支持的浏览器上面展示。 同时,在js 和 java 同时使用 cr32 进行文件块的校验,保证数据上传正确。 代码在使用了最新的servlet 3.0 的api,使用了异步执行,监听等方法。 上传类UploadServlet @Component("javaLargeFileUploaderServlet") @WebServlet(name = "javaLargeFileUploaderServlet", urlPatterns = { "

Android接入阿里云短信服务最全解析(包含demo)

删除回忆录丶 提交于 2020-08-15 07:08:39
阿里云短信服务真是太坑了把 ,,,,,, 老铁们 我太难了 昨天接到需求需要将阿里云的短信服务接入到软件中进行登陆验证 我用的是阿里云的javaSDK,因为这里我用的是androidstudio所以我直接选择使用添加jar包的方式来继承(噩梦开始的地方) AndroidStudio添加jar包方式 找到我们的libs目录 将我们下载好的sdk复制到该目录下 然后在我们的gradle app中的Android中添加 sourceSets { main { jniLibs . srcDirs = [ 'libs' ] } } 这样我们的目录下就会显示 说明添加成功 添加依赖 点击ok然后我们的gradle中就会多一句依赖 就说明我们添加成功了 ok依赖添加完成 让我们来一步步实现短信功能 然后就是我们的测试代码块 首先是阿里云提供的代码块: 然后就是我们的代码块 DefaultProfile profile = DefaultProfile . getProfile ( "cn-hangzhou" , "<accessKeyId>" , "<accessSecret>" ) ; final IAcsClient client = new DefaultAcsClient ( profile ) ; //构建请求 final CommonRequest request = new

Java常用开源库

℡╲_俬逩灬. 提交于 2020-08-12 13:34:32
Java的经久不衰,很大程度上得益于Java的生态好。在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类。Java的生态实在太大,这里只能列举一部分。如果你对此感兴趣,不妨去读读他们的源码。 v HTML解析器jsoup 1.1 介绍 jsoup( GitHub地址 、 中文文档 )是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2 示例 Document document = Jsoup.connect("https://www.cnblogs.com/toutou/" ) .userAgent( "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" ) .get(); // System.out.println(document); Elements elements = document.select("div.box.item" ); for (Element element : elements) {

Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java)

北慕城南 提交于 2020-08-12 02:52:38
Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本、deleteTextRange()删除文本、updateTextRangeText()替换文本、updateTextRangeFormat()格式化文本等。本文将从以上方法介绍如何来实现对文本的操作。可参考以下步骤进行准备: 一、导入jar 文件 创建Maven 项目程序,通过 maven 仓库下载导入。 以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下: < repositories > < repository > < id > com.e-iceblue </ id > < name > cloud </ name > < url > http://repo.e-iceblue.cn/repository/maven-public/ </ url > </ repository > </ repositories > < dependencies > < dependency > < groupId > cloud </ groupId > < artifactId > spire.cloud.sdk </ artifactId > < version > 3.5.0

Java常用开源库

大憨熊 提交于 2020-08-12 00:42:19
Java的经久不衰,很大程度上得益于Java的生态好。在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类。Java的生态实在太大,这里只能列举一部分。如果你对此感兴趣,不妨去读读他们的源码。 v HTML解析器jsoup 1.1 介绍 jsoup( GitHub地址 、 中文文档 )是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2 示例 Document document = Jsoup.connect("https://www.cnblogs.com/toutou/" ) .userAgent( "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" ) .get(); // System.out.println(document); Elements elements = document.select("div.box.item" ); for (Element element : elements) {

企业微信通讯录替换-根据员工姓名查找工号

北城余情 提交于 2020-08-11 12:18:33
目前企业微信通讯录最新方式,不能直接在自己的库理存储用户姓名,这样在进行姓名过滤时就需要增加爱额外的工作量, 1、通过姓名获取工号 2、根据工号去数据库查询 3、展示 通讯录查找接口: https://work.weixin.qq.com/api/doc/90001/90143/91844 目前遇到一个坑 1、传输agentid,返回状态码正常,但是userid无数据 2、不传输agentid,提示无效gson,但是却能获取到userid. 原因:从0开始,不是从1,如果写成1的话就会漏掉第一条数据,所以看起来没有数据,不传输agentid能返回属于企业微信的接口调用一个不严谨 来源: oschina 链接: https://my.oschina.net/u/4256940/blog/4288094

超大文件上传和断点续传的源码

可紊 提交于 2020-08-11 05:40:52
1,项目调研 因为需要研究下断点上传的问题。找了很久终于找到一个比较好的项目。 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面。 https://github.com/freewebsys/java-large-file-uploader-demo 效果: 上传中,显示进度,时间,百分比。 点击【Pause】暂停,点击【Resume】继续。 2,代码分析 原始项目: https://code.google.com/p/java-large-file-uploader/ 这个项目最后更新的时间是 2012 年,项目进行了封装使用最简单的方法实现了http的断点上传。 因为html5 里面有读取文件分割文件的类库,所以才可以支持断点上传,所以这个只能在html5 支持的浏览器上面展示。 同时,在js 和 java 同时使用 cr32 进行文件块的校验,保证数据上传正确。 代码在使用了最新的servlet 3.0 的api,使用了异步执行,监听等方法。 上传类UploadServlet @Component("javaLargeFileUploaderServlet") @WebServlet(name = "javaLargeFileUploaderServlet", urlPatterns = { "

Flink异步IO结合Redisson访问Redis

妖精的绣舞 提交于 2020-08-11 04:34:22
发表于 2019-07-15 | 分类于 大数据 | 0 | 本文总阅读量 165次 Flink异步IO源码简析。 使用Redisson框架封装的异步请求API。 对key进行异步累计递增计数和计算业务值并保存在Redis中。 Lua脚本和事务API。 FLINK v2-异步IO的设计与实现 Flink使用异步IO访问外部数据 AsyncRedisJob代码 AsyncFunction  AsyncFunction是一个异步算子接口,本身继承Function和Serializable。  asyncInvoke()方法会对每一个上游任务下发的流数据进行异步操作,操作完了将结果输出到ResultFuture,回调方式是把ResultFuture传入回调API,Future方式是要调用resultFuture.complete才算异步调用完成【回调和Future看外部系统客户端的封装】。  timeout()方法用来处理异步调用超时的问题,有default修饰,有默认实现,可以不做处理,但通常要做进一步处理。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 @PublicEvolving public interface AsyncFunction<IN, OUT> extends