当前位置: 首页 > 编程日记 > 正文

Android中的JSON详细总结

1、JSON(JavaScript Object Notation) 定义:

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。 – Json.org

 

2、JSON的结构:

(1) Name/Value Pairs(无序的:类似所熟知的Keyed list Hash tableDisctionaryAssociative array。在Android平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。

(2) Array(有序的:一组有序的数据列表。

对象

对象是一个无序的Name/Value Pairs集合。{ name:value , name:value , name:value ....  }

例子:{ "name":"小猪","age":20 }

Array

  Array是值(value)的有序集合。value , value , value ...... ]

  值(value)可以是双引号括起来的字符串(string)、数值(number)、truefalse null对象(object)或者数组(array)。这些结构可以嵌套。

  字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 例如:\ + " \ / b f n r t u 进行转义。

例子1: Array里面包含对象(object)

[ {"id":1,"name":"小猪" ,"age”:22} , {"id":2,"name":"小猫","age”:23} ,  .......]

例子2:同样对象(object)中可以包含Array

(1)一个对象包含1个数组,2个子对象

{"root":[{"id":"001","name":"小猪"},{"id":"002","name":"小猫"},{"id":"003","name":"小狗"}],  "total":3,  "success":true }

(2)也可以对象嵌套子对象,子对象再嵌套数组

{"calendar":      {"calendarlist":              [              {"id":"001","name":"小猪"},              {"id":"002","name":"小猫"}              ]      }  }

总之,格式多种多样,可以互相嵌套

--------------------------------------------------------------------------------------------

在Android中包含四个与JSON相关的类和一个Exceptions:

JSONArray

JSONObject

JSONStringer

JSONTokener

JSONException

(1)JSONObject:

这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。

它对外部(External:应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{“JSON”: “Hello, World”},最外被大括号包裹,其中的KeyValue被冒号”:”分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put(“JSON”, “Hello, World!”),在KeyValue之间是以逗号”,”分隔。

Value的类型包括:BooleanJSONArrayJSONObjectNumberString或者默认值JSONObject.NULL object

有两个不同的取值方法:

get(): 在确定数值存在的条件下使用,否则当无法检索到相关Key时,将会抛出一个Exception信息。

opt(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。

(2)JSONArray:

它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,get()opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。

同样这个类的value类型可以包括:BooleanJSONArrayJSONObjectNumberString或者默认值JSONObject.NULL object

(3)JSONStringer:

根据官方的解释,这个类可以帮助快速和便捷的创建JSONtext。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntaxrules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text

根据下边的实例来了解其它相关信息:

Java代码  收藏代码
  1. String myString = new JSONStringer().object()   
  2. .key("name")  
  3. .value("小猪")   
  4. .endObject()  
  5. .toString();  

结果是一组标准格式的JSON text{"name" : "小猪"}

其中的.object().endObject()必须同时使用,是为了按照Object标准给数值添加边界。同样,针对数组也有一组标准的方法来生成边界.array().endArray()

(4)JSONTokener:

这个是系统为JSONObjectJSONArray构造器解析JSON source string的类,它可以从source string中提取数值信息。

JSONException:

JSON.org类抛出的异常信息。

下面引用一个完整的应用实例:

应用JSONObject存储Map类型数值:

Java代码  收藏代码
  1. public static JSONObject getJSON(Map map) {  
  2.     Iterator iter = map.entrySet().iterator();  
  3.     JSONObject holder = new JSONObject();  
  4.     while (iter.hasNext()) {  
  5.         Map.Entry pairs = (Map.Entry) iter.next();  
  6.         String key = (String) pairs.getKey();  
  7.         Map m = (Map) pairs.getValue();  
  8.         JSONObject data = new JSONObject();  
  9.         try {  
  10.             Iterator iter2 = m.entrySet().iterator();  
  11.             while (iter2.hasNext()) {  
  12.                 Map.Entry pairs2 = (Map.Entry) iter2.next();  
  13.                 data.put((String) pairs2.getKey(), (String) pairs2  
  14.                         .getValue());  
  15.             }  
  16.             holder.put(key, data);  
  17.         } catch (JSONException e) {  
  18.             Log.e("Transforming""There was an error packaging JSON", e);  
  19.         }  
  20.     }  
  21.     return holder;  
  22. }  

下面是详细的例子:

Java代码  收藏代码
  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.InputStream;  
  3. import java.net.*;  
  4. import java.util.ArrayList;  
  5. import java.util.HashMap;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8. import org.json.JSONArray;  
  9. import org.json.JSONObject;  
  10. import android.util.Log;  
  11.   
  12. public class JSON {  
  13.   
  14.       
  15.     /** 
  16.      * 获取"数组形式"的JSON数据, 
  17.      * 数据形式:[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}] 
  18.      * @param path  网页路径 
  19.      * @return  返回List 
  20.      * @throws Exception 
  21.      */  
  22.     public static List<Map<String, String>> getJSONArray(String path) throws Exception {  
  23.         String json = null;  
  24.         List<Map<String, String>> list = new ArrayList<Map<String, String>>();  
  25.         Map<String, String> map = null;  
  26.         URL url = new URL(path);  
  27.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.  
  28.         conn.setConnectTimeout(5 * 1000);   // 单位是毫秒,设置超时时间为5秒  
  29.         conn.setRequestMethod("GET");       // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET  
  30.         if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败  
  31.             InputStream is = conn.getInputStream(); // 获取输入流  
  32.             byte[] data = readStream(is);   // 把输入流转换成字符数组  
  33.             json = new String(data);        // 把字符数组转换成字符串  
  34.               
  35.             //数据形式:[{"id":1,"name":"小猪","age":22},{"id":2,"name":"小猫","age":23}]  
  36.             JSONArray jsonArray = new JSONArray(json); //数据直接为一个数组形式,所以可以直接 用android提供的框架JSONArray读取JSON数据,转换成Array  
  37.   
  38.             for (int i = 0; i < jsonArray.length(); i++) {  
  39.                 JSONObject item = jsonArray.getJSONObject(i); //每条记录又由几个Object对象组成  
  40.                 int id = item.getInt("id");     // 获取对象对应的值  
  41.                 String name = item.getString("name");  
  42.   
  43.                 map = new HashMap<String, String>(); // 存放到MAP里面  
  44.                 map.put("id", id + "");  
  45.                 map.put("name", name);  
  46.                 list.add(map);  
  47.             }  
  48.         }  
  49.   
  50.         // ***********测试数据******************  
  51.         for (Map<String, String> list2 : list) {  
  52.             String id = list2.get("id");  
  53.             String name = list2.get("name");  
  54.             Log.i("abc""id:" + id + " | name:" + name);  
  55.         }  
  56.   
  57.         return list;  
  58.     }  
  59.   
  60.     /** 
  61.      * 获取"对象形式"的JSON数据, 
  62.      * 数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]} 
  63.      * @param path  网页路径 
  64.      * @return  返回List 
  65.      * @throws Exception 
  66.      */  
  67.     public static List<Map<String, String>> getJSONObject(String path) throws Exception {  
  68.         List<Map<String, String>> list = new ArrayList<Map<String, String>>();  
  69.         Map<String, String> map = null;  
  70.         URL url = new URL(path);  
  71.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.  
  72.         conn.setConnectTimeout(5 * 1000);   // 单位是毫秒,设置超时时间为5秒  
  73.         conn.setRequestMethod("GET");       // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET  
  74.         if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败  
  75.             InputStream is = conn.getInputStream(); // 获取输入流  
  76.             byte[] data = readStream(is);   // 把输入流转换成字符数组  
  77.             String json = new String(data); // 把字符数组转换成字符串  
  78.               
  79.               
  80.             //数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}  
  81.             JSONObject jsonObject=new JSONObject(json);     //返回的数据形式是一个Object类型,所以可以直接转换成一个Object  
  82.             int total=jsonObject.getInt("total");  
  83.             Boolean success=jsonObject.getBoolean("success");  
  84.             Log.i("abc""total:" + total + " | success:" + success);   //测试数据  
  85.               
  86.             JSONArray jsonArray = jsonObject.getJSONArray("arrayData");//里面有一个数组数据,可以用getJSONArray获取数组  
  87.             for (int i = 0; i < jsonArray.length(); i++) {  
  88.                 JSONObject item = jsonArray.getJSONObject(i); // 得到每个对象  
  89.                 int id = item.getInt("id");     // 获取对象对应的值  
  90.                 String name = item.getString("name");  
  91.   
  92.                 map = new HashMap<String, String>(); // 存放到MAP里面  
  93.                 map.put("id", id + "");  
  94.                 map.put("name", name);  
  95.                 list.add(map);  
  96.             }  
  97.         }  
  98.   
  99.         // ***********测试数据******************  
  100.           
  101.         for (Map<String, String> list2 : list) {  
  102.             String id = list2.get("id");  
  103.             String name = list2.get("name");  
  104.             Log.i("abc""id:" + id + " | name:" + name);  
  105.         }  
  106.   
  107.         return list;  
  108.     }  
  109.       
  110.       
  111.     /** 
  112.      * 获取类型复杂的JSON数据 
  113.      *数据形式: 
  114.         {"name":"小猪", 
  115.          "age":23, 
  116.          "content":{"questionsTotal":2, 
  117.                     "questions": [ { "question": "what's your name?", "answer": "小猪"},{"question": "what's your age", "answer": "23"}] 
  118.                    } 
  119.         } 
  120.      * @param path  网页路径 
  121.      * @return  返回List 
  122.      * @throws Exception 
  123.      */  
  124.     public static List<Map<String, String>> getJSON(String path) throws Exception {  
  125.         List<Map<String, String>> list = new ArrayList<Map<String, String>>();  
  126.         Map<String, String> map = null;  
  127.         URL url = new URL(path);  
  128.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.  
  129.         conn.setConnectTimeout(5 * 1000);   // 单位是毫秒,设置超时时间为5秒  
  130.         conn.setRequestMethod("GET");       // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET  
  131.         if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败  
  132.             InputStream is = conn.getInputStream(); // 获取输入流  
  133.             byte[] data = readStream(is);   // 把输入流转换成字符数组  
  134.             String json = new String(data); // 把字符数组转换成字符串  
  135.               
  136.               
  137.             /*数据形式: 
  138.                 {"name":"小猪", 
  139.                  "age":23, 
  140.                  "content":{"questionsTotal":2, 
  141.                             "questions": [ { "question": "what's your name?", "answer": "小猪"},{"question": "what's your age", "answer": "23"}] 
  142.                            } 
  143.                 } 
  144.             */    
  145.             JSONObject jsonObject=new JSONObject(json);     //返回的数据形式是一个Object类型,所以可以直接转换成一个Object  
  146.             String name=jsonObject.getString("name");         
  147.             int age=jsonObject.getInt("age");  
  148.             Log.i("abc""name:" + name + " | age:" + age); //测试数据  
  149.               
  150.             JSONObject contentObject=jsonObject.getJSONObject("content");       //获取对象中的对象  
  151.             String questionsTotal=contentObject.getString("questionsTotal");    //获取对象中的一个值  
  152.             Log.i("abc""questionsTotal:" + questionsTotal);   //测试数据  
  153.               
  154.             JSONArray contentArray=contentObject.getJSONArray("questions");     //获取对象中的数组  
  155.             for (int i = 0; i < contentArray.length(); i++) {  
  156.                 JSONObject item = contentArray.getJSONObject(i); // 得到每个对象  
  157.                 String question = item.getString("question");   // 获取对象对应的值  
  158.                 String answer = item.getString("answer");  
  159.   
  160.                 map = new HashMap<String, String>(); // 存放到MAP里面  
  161.                 map.put("question", question);  
  162.                 map.put("answer", answer);  
  163.                 list.add(map);  
  164.             }  
  165.         }  
  166.   
  167.         // ***********测试数据******************  
  168.           
  169.         for (Map<String, String> list2 : list) {  
  170.             String question = list2.get("question");  
  171.             String answer = list2.get("answer");  
  172.             Log.i("abc""question:" + question + " | answer:" + answer);  
  173.         }  
  174.   
  175.         return list;  
  176.     }  
  177.       
  178.       
  179.       
  180.       
  181.     /** 
  182.      * 把输入流转换成字符数组 
  183.      * @param inputStream   输入流 
  184.      * @return  字符数组 
  185.      * @throws Exception 
  186.      */  
  187.     public static byte[] readStream(InputStream inputStream) throws Exception {  
  188.         ByteArrayOutputStream bout = new ByteArrayOutputStream();  
  189.         byte[] buffer = new byte[1024];  
  190.         int len = 0;  
  191.         while ((len = inputStream.read(buffer)) != -1) {  
  192.             bout.write(buffer, 0, len);  
  193.         }  
  194.         bout.close();  
  195.         inputStream.close();  
  196.   
  197.         return bout.toByteArray();  
  198.     }  
  199.   
  200. }  

转载于:https://www.cnblogs.com/fx2008/archive/2013/06/12/3133260.html

相关文章:

新一届最强预训练模型上榜,出于BERT而胜于BERT

作者 | Facebook AI译者 | Lucy编辑 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】预训练方法设计有不同的训练目标&#xff0c;包括语言建模、机器翻译以及遮蔽语言建模等。最近发表的许多论文都使用了微调模型&#xff0c;并预先训练了一些遮蔽语…

Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例

1、 利用VMware在Windows7 64位下安装Ubuntu13.10 32位虚拟机&#xff1b; 2、 从 https://developer.android.com/tools/sdk/ndk/index.html下载android-ndk32-r10-linux-x86.tar.bz2&#xff1b; 3、 将android-ndk32-r10-linux-x86.tar.bz2拷贝到Ubuntu的/home/spring/NE…

Neon Intrinsics各函数介绍

#ifndef __ARM_NEON__ #error You must enable NEON instructions (e.g. -mfloat-abisoftfp -mfpuneon) to use arm_neon.h #endif/*(1)、正常指令&#xff1a;生成大小相同且类型通常与操作数向量相同的结果向量&#xff1b; (2)、长指令&#xff1a;对双字向量操作数执行运算…

ubuntu bind9 配置简单记录

ubuntu bind9 配置简单记录ubuntu版本&#xff1a;Ubuntu 12.04.2bind9安装&#xff1a;apt-get install bind9bind9配置文件目录&#xff1a;/etc/bindbind9主要配置文件&#xff1a;named.conf.local以及对应db配置1&#xff0c;主服务器配置&#xff1a;rootubuntu:/etc/bin…

不止最佳长论文,腾讯AI在ACL上还有这些NLP成果

编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】7 月 31 日晚&#xff0c;自然语言处理领域最大顶会 ACL 2019 公布了今年的八个论文奖项&#xff0c;其中最佳长论文的获奖者被来自中国科学院大学、中国科学院计算技术研究所、腾讯 We…

python中package机制的两种实现方式(转载)

当执行import module时&#xff0c;解释器会根据下面的搜索路径&#xff0c;搜索module1.py文件。 1) 当前工作目录 2) PYTHONPATH中的目录 3) Python安装目录 (/usr/local/lib/python) 事实上&#xff0c;模块搜索是在保存在sys.path这个全局变量中的目录列表中进行搜索。 sys…

Magento如何使用和设置CookieSession

2019独角兽企业重金招聘Python工程师标准>>> 给大家介绍两个Magento的核心对象&#xff0d;Mage_Core_Model_Cookie & Mage_Core_Model_Session 首先介绍Mage_Core_Model_Cookie&#xff0c;这个对象主要是用来设置Cookie的&#xff0c;里面主要下列方法&#x…

AI+DevOps正当时

随着业务复杂化和人员的增加&#xff0c;开发人员和运维人员逐渐演化成两个独立的部门&#xff0c;他们工作地点分离&#xff0c;工具链不同&#xff0c;业务目标也有差异&#xff0c;这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边&#xff0c;…

clientdataset 用法

影响ClientDataSet处理速度的一个因素TClientDataSet是Delphi开发数据库时一个非常好的控件。有很强大的功能。我常常用ClientDataSet做MemoryDataSet来使用。还可以将ClientDataSet的数据保存为XML&#xff0c;这样就可以做简单的本地数据库使用。还有很多功能就不多说了。在使…

用vs2010编译vigra静态库及简单使用举例

1、 从 http://ukoethe.github.io/vigra/ 下载最新源代码vigra-1.10.0-src-with-docu.tar.gz&#xff0c;并加压缩到D:\soft\vigra&#xff0c;生成vigra-1.10.0文件夹&#xff1b; 2、 从http://www.cmake.org/cmake/resources/software.html下载CMake并安装&#xff1b; …

39个超实用jQuery实例应用特效

2019独角兽企业重金招聘Python工程师标准>>> 1.Contextual Slideout&#xff1a;上下文滑动特效 2.Revealing Photo Slider&#xff1a;图片幻灯片特效 3.Fancy Box&#xff1a;魔幻盒 4.Scrollable&#xff1a;滚动特效 5.Flip&#xff1a;翻转特效,实现4个方向…

Android.mk和Application.mk文件语法规范说明及举例

以下英文内容摘自&#xff1a;http://www.kandroid.org/ndk/docs/OVERVIEW.html The Android NDK is a set of tools that allows Android application developers to embed native machine code compiled from C and/or C source files into their application packages.NDK d…

ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API

本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API。 新建项目&#xff0c;选择"ASP.NET MVC 4 Web应用程序"。 选择"基本"项目模版。 在Controllers文件夹下添加一个名称为"TestController"的空API控制器。 在引用文件夹中多了以下…

滴滴自动驾驶部门成立独立公司,CTO张博兼任新公司CEO

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;8 月 5 日&#xff0c;滴滴出行官方微信公众号发文&#xff0c;宣布旗下自动驾驶部门升级为独立公司。目前&#xff0c;新成立公司的名称还未曝光&#xff0c;但据官方介绍将专注于自动驾驶…

在ASP.NET MVC下实现树形导航菜单

在需要处理很多分类以及导航的时候&#xff0c;树形导航菜单就比较适合。例如在汽车之家上&#xff1a; 页面主要分两部分&#xff0c;左边是导航菜单&#xff0c;右边显示对应的内容。现在&#xff0c;我们就在ASP.NET MVC 4 下临摹一个&#xff0c;如下&#xff1a; 实现的效…

mongodb学习笔记6--杂项与补充

2019独角兽企业重金招聘Python工程师标准>>> 1。适用场景&#xff1a;持久化缓存层&#xff0c;高效的时效性&#xff0c;用于对象和Json数据的存储&#xff0c;高伸缩性的场景&#xff0c;大尺寸&#xff0c;低价值的数据存储。 不适用&#xff1a;高度事务性的场景…

GraphSAGE:我寻思GCN也没我厉害!

作者 | 郭必扬来源 | SimpleAI&#xff08;ID:SimpleAI_1&#xff09;众所周知&#xff0c;2017年ICLR出产的GCN现在是多么地热门&#xff0c;仿佛自己就是图神经网络的名片。然而&#xff0c;在GCN的风头中&#xff0c;很多人忽略了GCN本身的巨大局限——Transductive Learnin…

CxImage的编译及简单使用举例

1、 从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码&#xff1b; 2、 解压缩后&#xff0c;以管理员身份打开CxImageFull_vc10.sln工程&#xff0c;在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为Use Multi-ByteC…

如何使用好android的可访问性服务(Accessibility Services)

原文&#xff1a;http://android.eoe.cn/topic/android_sdk * 主题* Manifest声明和权限 可访问性服务声明 可访问性服务配置 AccessibilityService方法 获得事件细节 示例代码 主要的类*AccessibilityService AccessibilityServiceInfo AccessibilityEvent AccessibilityReco…

自动驾驶人的福音!Lyft公开Level 5部署平台Flexo细节

作者 | Mathias Gug等&#xff0c;Lyft Level 5 软件工程师译者 | Lucy编辑 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;经过一年半的 bootstrapping&#xff08;一种再抽样统计方法&#xff09;&#xff0c;Lyft 让 Level 5 实现区分非常…

Cygwin的安装及在Android jni中的简单使用举例

Cygwin是一个在windows平台上运行的类UNIX模拟环境&#xff0c;是cygnussolutions公司开发的自由软件。Cygwin是许多自由软件的集合&#xff0c;Cygwin的主要目的是通过重新编译&#xff0c;将POSIX系统上的软件移植到Windows上。Cygwin包括了一套库&#xff0c;该库在win32系统…

university, school, college, department, institute的区别

这些个词没有太大区别&#xff0c;有时候有些词是可以通用的&#xff0c;而有些用法则是随着地域时间的不同而变迁。一般说来&#xff0c;college译作“学院”&#xff0c;它是university &#xff08;综合性大学&#xff09;的一个组成部分&#xff0c;例如&#xff0c;一所综…

XML简介及举例

可扩展标记语言(eXtensibleMarkup Language&#xff0c;简称XML)&#xff0c;是一种标记语言。标记指计算机所能理解的信息符号&#xff0c;通过此种标记&#xff0c;计算机之间可以处理包含各种信息的文章等。如何定义这些标记&#xff0c;既可以选择国际通用的标记语言&#…

关于事务的传播特性和隔离级别的问题

REQUIRED&#xff1a;业务方法需要在一个事务中运行。如果方法运行时&#xff0c;已经处在一个事务中&#xff0c;那么加入到该事务&#xff0c;否则为自己创建一个新的事务。 NOT_SUPPORTED&#xff1a;声明方法不需要事务。如果方法没有关联到一个事务&#xff0c;容器不会为…

[Big Data - Kafka] kafka学习笔记:知识点整理

一、为什么需要消息系统 1.解耦&#xff1a; 允许你独立的扩展或修改两边的处理过程&#xff0c;只要确保它们遵守同样的接口约束。 2.冗余&#xff1a;消息队列把数据进行持久化直到它们已经被完全处理&#xff0c;通过这一方式规避了数据丢失风险。许多消息队列所采用的&q…

自然语言处理十问!独家福利

最近&#xff0c;NLP 圈简直不要太热闹&#xff01;预训练模型频频刷新榜单&#xff0c;让一众研究者、开发者“痛并快乐着”。自 2018 年 10 月&#xff0c;Google 提出 BERT 以来&#xff0c;NLP 领域预训练模型的发展仿佛坐上了火箭&#xff0c;完全控制不住。BERT 出世前&a…

BERT的成功是否依赖于虚假相关的统计线索?

作者 | 李理来源 | 个人博客导读&#xff1a;本文介绍论文Probing Neural Network Comprehension of Natural Language Arguments&#xff0c;讨论BERT在ACRT任务下的成绩是否依赖虚假的统计线索&#xff0c;同时分享一些个人对目前机器学习尤其是自然语言理解的看法。目录论文…

【电子基础】模拟电路问答

模拟电路基础知识问答整理 mystery 1、温度对半导体材料的导电性能有什么影响? 答&#xff1a;温度对半导体的导电性能有很大影响。当温度升高时&#xff0c;半导体材料内的自由电子和空穴数量迅速增加&#xff0c;半导体的导电性能将迅速提高。 2、什么是本征半导体和杂质半导…

XML解析简介及Xerces-C++简单使用举例

XML是由World WideWeb联盟(W3C)定义的元语言。它已经成为一种通用的数据交换格式&#xff0c;它的平台无关性&#xff0c;语言无关性&#xff0c;系统无关性&#xff0c;给数据集成与交互带来了极大的方便。XML在不同的语言里解析方式都是一样的&#xff0c;只不过实现的语法不…

[干货]Kaggle热门 | 用一个框架解决所有机器学习难题

新智元推荐 来源&#xff1a;LinkedIn 作者&#xff1a;Abhishek Thakur 译者&#xff1a;弗格森 【新智元导读】本文是数据科学家Abhishek Thakur发表的Kaggle热门文章。作者总结了自己参加100多场机器学习竞赛的经验&#xff0c;主要从模型框架方面阐述了机器学习过程中可能会…