`
cn_arthurs
  • 浏览: 327102 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

JSON已经被广泛誉为浏览器中XML的替代品,它的目标仅仅是成为一种简单、优雅的,用于浏览器与服务器之间交换信息的数据格式;在进行这个简单任务的同时,它将开创自己的下一代万维网.

对象简介

看,这就是一个对象:

var myFirstObject = {};

看起来非常简单,但那些大括号却有记录人类收集的所有信息以及表达计算机科学家能想象到的,最复杂的程序的潜力.事实上,Javascript本身就是存储在那样一个大括号集合中的,,包括它所有的基本类型 -- 字符串,数字,数组,日期,正则表达式,它们都是对象,都是像上面myFirstObject那样开始的.

创建一个新对象


旧的方式是使用"new"关键字创建一个新对象.

var myJSON = new Object();

 

这种方式已经过时,现在流行的方式是通过一对大括号定义一个空对象...

var myJSON = {};

 

对象即数据


在Javascript对象的最底层是一种很灵活且健壮的数据格式,表示为“名/值对”。也就是说,一个对象的属性名--可以看作是依附在对象名上的一个普通变量.并且这个对象保存着上述名字的值.看下面的例子...

var myFirstJSON = { "firstName" : "John",
                    "lastName"  : "Doe",
                    "age"       : 23 };

document.writeln(myFirstJSON.firstName);  // 输出John
document.writeln(myFirstJSON.lastName);   // 输出Doe
document.writeln(myFirstJSON.age);        // 输出23

这个对象有3个属性或者说名/值对.在这个例子中,firstName,lastName,还有age这些名字是字符串类型.而值可以是任何的 javascript对象(请记住javascript中一切介对象,所以这个值可以是字符串,数字,数组,函数,还有其它对象类型) -- 在这个例子中,我们的值是John,Doe,还有23.John与Doe是字符串但age是数字,如你所见,这都不是问题.
这种数据格式称为JSON,JSON是JavaScript Object Notation的缩写.它能如此强大的原因是它的值可以是任何数据类型,你可以保存不同的数组与对象,按你的需要去尽情嵌套.下面是一个稍等复杂点的JSON结构...

var employees = { "accounting" : [   // accounting is an array in employees.
                                    { "firstName" : "John",  // First element
                                      "lastName"  : "Doe",
                                      "age"       : 23 },
                                    
                                    { "firstName" : "Mary",  // Second Element
                                      "lastName"  : "Smith",
                                      "age"       : 32 }
                                  ], // End "accounting" array.                                  
                  "sales"       : [ // Sales is another array in employees.
                                    { "firstName" : "Sally", // First Element
                                      "lastName"  : "Green",
                                      "age"       : 27 },
                                    
                                    { "firstName" : "Jim",   // Second Element
                                      "lastName"  : "Galley",
                                      "age"       : 41 }
                                  ] // End "sales" Array.
                } // End Employees

这里的employees是一个对象.它有两个属性或者说名值对.Accounting是一个拥有两个JSON对象的数组,分别表示了两个雇员的名字与年龄信 息.同样地,sales也是一个拥有两个JSON对象的数组,分别表示了两名工作在销售部门员工的名字与年龄.所有这些数都保存在employees对象 中.访问这些数据有几种不同的方式.

访问JSON中的数据

最常见的访问JSON数据的方式就是通过点标记.这仅仅在对象名字后面跟一个句点与要访问的属性名.如果你的对象中包含另一个对象,那只要再添加上点与对象名就可以了...

var myObject = { 'color' : 'blue',
                 'animal' : {'dog' : 'friendly' }
               };

document.writeln(myObject.animal.dog); // 输出friendly


以上面的"employee"为例,如果我们想访问在"sales"工作的第一个员工信息...

document.writeln(employees.sales[0].firstName + ' ' + employees.sales[0].lastName);


我们也可以访问“accounting”中的第二个员工信息.

document.writeln(employees.accounting[1].firstName + ' ' + employees.accounting[1].lastName);


总 的来说,这个的例子的"employee"就是一个拥有两个数组的对象,每个数组中分别拥有两个附加对象.这种结构的唯一限制就是存储的大小和可用内存. 因为JSON可以保存一切对象,包括深层嵌套的对象,所以它的保存内容无任何限制.如果有足够的内存及储存条件,一个简单的JSON数据结构可以存储并正 确地索引迄今人类产生的所有信息.

像关联数组一样访问对象

 

你也可以把JSON当作一个关联数组一样访问数据.

var myFirstJSON = { "firstName" : "John",
                    "lastName"  : "Doe",
                    "age"       : 23 };

document.writeln(myFirstJSON["firstName"]);  // 输出John
document.writeln(myFirstJSON["lastName"]);   // 输出Doe
document.writeln(myFirstJSON["age"]);        // 输出23

要 注意的是,上面的例子虽然看起来像关联数组,实质上并不是.当你遍历整myFirstObject对象的时候,除了上面三个属性之外,你还会得到分配到这 个对象的其它方法与属性,所以,当你使用上面例子的方式定位JSON数据时,要把它当作是一个对象来看,而不是关联数组.

通过AJAX接收JSON数据


通过AJAX接收JSON数据有三个不同方式.委派,回调与解释.

通过委派得到JSON

 

这个方法没有标准命名约定,不过"委派法"倒是一个挺好的描述名字,因为服务器创建的javascript表达式文件会把JSON分派到一个变量 中.当把服务器的返回文本作为参数传给eval函数时,someVar变量就会装载JSON对象,然后你就可以通过这个变量访问.

var JSONFile = "someVar = { 'color' : 'blue' }";  // example of what is received from the server.服务器返回数据示例
eval(JSONFile); // Execute the javascript code contained in JSONFile.执行JSONFile中的javascript代码.

document.writeln(someVar.color); // 输出'blue' 

 

通过回调得到JSON

 

第二个方法预先定义一个以JSON数据作为参数的函数,然后服务器返回的javascript表达式中调用这个函数.这个方法叫"回调法".这个方式被广泛地应用在处理第三方JSON数据中(例如,从其它域名获取的JSON数据)

function processData(incommingJSON) {
   document.writeln(incommingJSON.color); // 输出'blue'
}

// example of what is received from the server...
var JSONFile = "processData( { 'color' : 'blue' } )";

eval(JSONFile);

 

通过解析获取JSON

 

最后这个方法通过一个解析函数解析原始对象文本取得JSON.这可称为"解析法".这是迄今为止最安全的传输JSON数据的方式,并且这个方式将成为下一版javascript(预计在2008年发布)的一部分.目前,非常不幸地,你在你能控制的范围内使用.

// The following block implements the string.parseJSON method 下面代码块实现了string.parseJSON方法
(function (s) {
  // This prototype has been released into the Public Domain, 2007-03-20
  // Original Authorship: Douglas Crockford
  // Originating Website: http://www.JSON.org
  // Originating URL    : http://www.JSON.org/JSON.js

  // 增强String原型.我们利用这个即时执行的匿名函数避免使用全局变量.
  // m是转义字符表

  var m = {
    '\b': '\\b',
    '\t': '\\t',
    '\n': '\\n',
    '\f': '\\f',
    '\r': '\\r',
    '"' : '\\"',
    '\\': '\\\\'
  };

  s.parseJSON = function (filter) {

    // 解析分三步进行,第一步,我们先用正则表达式过滤非JSON字符.我们会特别关注"()"与"new",因为它们
    // 会触发调用,还有"=",它会导致赋值从而发生变化.为了安全,我们会丢弃所有不期待的字符.

    try {
      if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
        test(this)) {

          // 在第二步,我们使用eval函数把文本编译到一个JavaScript结构中去.在javascript中"{"操作符容易导致语法混淆:它可以是一个代码块的开始或者一个对象直接量.我们在外层包装上括号避免混淆.

          var j = eval('(' + this + ')');

          // 第三步是可选的,我们递归遍历这个新结构,把每个名/值对传递到一个过滤函数,以便做一些转换.

          if (typeof filter === 'function') {

            function walk(k, v) {
              if (v && typeof v === 'object') {
                for (var i in v) {
                  if (v.hasOwnProperty(i)) {
                    v[i] = walk(i, v[i]);
                  }
                }
              }
              return filter(k, v);
            }

            j = walk('', j);
          }
          return j;
        }
      } catch (e) {

      // Fall through if the regexp test fails.

      }
      throw new SyntaxError("parseJSON");
    };
  }
) (String.prototype);
// End public domain parseJSON block

// begin sample code (still public domain tho)
JSONData = '{"color" : "green"}';   // Example of what is received from the server.
testObject=JSONData.parseJSON();   
document.writeln(testObject.color); // Outputs: Green.

正 如你看到的,你需要在解析JSON数据的地方引入上面的原型方法,一旦你引入了,处理JSON数据就变得非常简单,就像上面例子最后所示,只需三行代码. 在上述三个方法中,"解析法"是最安全并且使你的代码暴露最少.你应该在用到JSON的AJAX应用中尽可能使用此方法.

通过AJAX检索JSON数据

下面的例子会使用这篇文章 介绍的AJAX框架,参考: The Ultimate Ajax Object.

当你需要与服务器交互时,从服务器到浏览器,AJAX是个较好的数据传输方式.假若服务器是在你控制范围内,使用这个方法传输是绝对安全的.下面的 例子演示了通过一个简单的AJAX请求与服务通讯,获取一些数据,并传递给一个处理函数.在这里我们将使用回调法,当JSON数据加载完后,它会被一个预 定义的函数processData(JSONData)执行处理.

function processData(JSONData) {
   alert(JSONData.color);
}

var ajaxRequest = new ajaxObject('http://www.somedomain.com/getdata.php');
    ajaxRequest.callback = function (responseText) {
       eval(responseText);
    }
    ajaxRequest.update();
    
// In this example we assume the server sends back the following data file
// (which the ajax routine places in responseText)
//
// processData( { "color" : "green" } )    

 

我们这个例子中的数据文件,实际上是一些javascript代码,当它被传递到eval语句中时会执行processData函数,把实际的JSON数据作为参数传递给这个函数.下一个例子中,我们会使用解析法,请确保你代码的其它地方有parseJSON的原型定义.

function processData(JSONData) {
   alert(JSONData.color);
}

var ajaxRequest = new ajaxObject('http://www.somedomain.com/getdata.php');
    ajaxRequest.callback = function (responseText) {
       JSONData = responseText.parseJSON();
       processData(JSONData);
    }
    ajaxRequest.update();

// In this example we assume the server sends back the following data file
// (which the ajax routine places in responseText)
//
// { "color" : "green" }    

现在,当服务返回JSON文件时,它会被“JSONData = responseText.parseJSON();”这段代码解析并且把结果JSONData传递给处理函数processData.得到的结果与第一个例子一样,不过,由于某些原因,当JSON数据中含有恶意代码或非法数据时,使用第二个方法会更安全,而且便于处理各种问题.

如何发送JSON数据到服务器

由于AJAX把数据当作编码好的字符串发送,这样在发送到服务器前就需要对JSON数据做一些准备工作.非常幸运,Douglas Crockford已经在JSON.org发布了一些非常有用的通用代码,可以把javascript数据类型转换成便于发送到服务器的JSON字符串.

这个库的源代码可能可以通过http://www.JSON.org/JSON.js获取.这些代码的使用是没有任何约束的,你可以复制粘贴到你的工具箱中.

下面这个例子定义了一个JSON对象,然后使用toJSONString()方法把这个对象转换成准备发送到服务器的字符串.

var employees = { "accounting" : [   // accounting is an array in employees.
                                    { "firstName" : "John",  // First element
                                      "lastName"  : "Doe",
                                      "age"       : 23 },
                                    
                                    { "firstName" : "Mary",  // Second Element
                                      "lastName"  : "Smith",
                                      "age"       : 32 }
                                  ], // End "accounting" array.                                  
                  "sales"       : [ // Sales is another array in employees.
                                    { "firstName" : "Sally", // First Element
                                      "lastName"  : "Green",
                                      "age"       : 27 },
                                    
                                    { "firstName" : "Jim", // Second Element
                                      "lastName"  : "Galley",
                                      "age"       : 41 }
                                  ] // End "sales" Array.
                } // End Employees

var toServer = employees.toJSONString();                

document.writeln(toServer);

输出:

//{"accounting":[{"firstName":"John","lastName":"Doe","age":23},{"firstName":"Mary","lastName":"Smith","age":32}],"sales":[{"firstName":"Sally","lastName":"Green","age":27},{"firstName":"Jim","lastName":"Galley","age":41}]}

 

从第三方服务获取JSON

本节将看到啰嗦的忠告.到目前为止,JSON与AJAX相对来说还是安全的,因为交互的服务与获取的数据都在你的控制范围内.但对于第三方服务来说,这一切都改变了.
在IE7与Firefox2中,使用第三方的JSON数据将会使你的网页面临恶意攻击及重大的安全风险.当你请求第三方的数据时,你就相当于失去了页面的控制权,而第三方可以为所欲为地从页面搜刮数据并把敏感信息回发,然后再安装个监听器等待敏感数据.
可以确定的是,请求外部的JSON你唯一得到的就是一堆有用的数据.然而,如果页面上包含表单元素,请求安全/加密链接,或者包含其它任何个人隐私数据的,绝不能在此页面上使用第三方的JSON调用.
当你尝试使用第三方的JSON数据去美化,充实你创建的页面时,你想象一下现在世界上最坏的人正在和你一起看着这个页面.如果其他人可以使相关信息显示在这个页面上让你觉得不舒服,那就不要使用第三方JSON调用.
除了RSS/XML之外,不少服务开始提供JSON这种数据格式.特别是Yahoo,是实施JSON的先驱.JSON最酷的地方就是页面可以直接请求并处 理它的数据,不同于XML,得先向服务器请求再传递给浏览器.但非常不幸,现在还没有JSON的RSS/FEED标准,虽然很多服务都模拟了JSON结构 的RSS XML.

下面的例子中,我们会使用本站的JSON feed,非常简单的XML到JSON一对一转换.这个FEED甚至与生成XML版本的是同一个程序,只是url传递的参与去决定选择哪种格式.下面是本站FEED的链接:

http://www.hunlock.com/feed.php?format=JSON&callback=JSONFeed

 

所有第三方JSON要求使用回调方法的地方,当JSON数据文件被加载完成后都会调用一个特别函数,并把JSON数据作为这个函数的第一个参数.很 多服务都有一个默认的调用函数,而一些服务能让你自己指定这个调用函数的名字.我的JSON feed默认会调用 JSONFeed(),但你可以通过URL去改变这个函数名. 假如你改变读取的URL如下:

http://www.hunlock.com/feed.php?format=JSON&callback=processJSON

现在,当Feed被加载完成后,它会调用"processJSON"函数,并把JSON数据作为首个参数传递进去.这个对你需要处理多个JSON请求的时候尤为重要.

所有第三方JSON请求都通过<script>标签加载,就像平时我们引入外部的javascript文件一样.有点不同的是我们要手 工创建script标签并手工加到页面中去.这是一个相当简单的处理,而且代码也简单易懂.下面这个小函数接受一个链接并加载之.

function loadJSON(url) {
  var headID = document.getElementsByTagName("head")[0];         
  var newScript = document.createElement('script');
      newScript.type = 'text/javascript';
      newScript.src = url;
  headID.appendChild(newScript);
}

这个函数先取得页面上首个<head>元素,然后创建一个新的script元素,设置脚本类型,并把传递进来的url设置为src属性,最后把这个script元素添加到<head>元素中,一旦添加完成,这个脚本就会马止被加载并执行.

下面这个小程序会获取本站的JSON feed然后显示新闻条目.

function loadJSON(url) {
  var headID = document.getElementsByTagName("head")[0];         
  var newScript = document.createElement('script');
      newScript.type = 'text/javascript';
      newScript.src = url;
  headID.appendChild(newScript);
}

function processJSON(feed){
  document.writeln(feed.title+'<BR>');
  for(i=0; i<feed.channel.items.length; i++) {
     document.write("<a href='"+feed.channel.items[i].link+"'>");
     document.writeln(feed.channel.items[i].title+"</a><BR>");
  }
}


loadJSON('http://www.hunlock.com/feed.php?format=JSON&callback=processJSON');

这段代码创建了一个加载第三方javascripts的函数(loadJSON)和一个处理返回数据的函数(processJSON).最后一行调用了 loadJSON函数并把链接传递给它.当脚本完成加载后,它就会自动执行调用processJSON函数(因为我们已经在回调中指定了这个函数名),然 后processJSON将循环文件中所有新闻项把文章标题作为可点击的链接显示出来.

Yahoo管道

 

绝大部分的网站仍旧使用XML进行聚合内容,这意味着你需要一个服务去对这些数据做些处理.Yahoo管道可以为你把任务RSS/XML feed转换成JSON格式.转换很简单,你只要把你需使用的RSS feed链接添加到下面这行的末尾...

http://pipes.yahoo.com/pipes/9oyONQzA2xGOkM4FqGIyXQ/run?&_render=JSON&_callback=piper&feed=

这就是一个yahoo管道,可以接受RSS/XML feed并转换成JSON格式.使用这个小工具你的页面可以直接处理网络上任何XML/RSS数据而不需要服务器端程序.

修改上面的例子,读取dzone的RSS feed:

function loadJSON(url) {
  var yahooPipe = 'http://pipes.yahoo.com/pipes/9oyONQzA2xGOkM4FqGIyXQ/run?&_render=JSON&_callback=processJSON&feed=';
  var headID = document.getElementsByTagName("head")[0];         
  var newScript = document.createElement('script');
      newScript.type = 'text/javascript';
      newScript.src = yahooPipe+url;
  headID.appendChild(newScript);
}

function processJSON(feed){
  document.writeln(feed.value.title+'<BR>');
  for(i=0; i<feed.value.items.length; i++) {
     document.write("<a href='"+feed.value.items[i].link+"'>");
     document.writeln(feed.value.items[i].title+"</a><BR>");
  }
}


loadJSON('http://feeds.dzone.com/dzone/frontpage');

想了解更多如何使用yahoo管道的信息,可以访问这个文章:Yahoo Pipes--RSS without Server Side Scripts.

JSON的安全

 

很多让人歇斯底里的JSON安全问题会带来非常怪异的事情.例如这样一幕:假如能诱骗一个用户去访问这样一个页面,这个页面会启动第三方的脚本对安 全站点发起JSON请求并嗅探收集敏感信息.这种攻击企图欺骗服务器认为用户只是在它的站点里请求JSON数据.假如被攻击的服务器只是以回调或委派的方 式提供JSON服务--服务器只是返回需被解析的原生JSON数据文件,那这样的攻击是无效的,因为<script>标签不能触发解析,只有 AJAX可以解析返回文本,并且AJAX不跨域使用.

这就是本文(和许多安全专家)推荐你对敏感JSON数据使用必需经过解析的原生JSON文件的原因.

当然,不厌其烦地再次提醒你,如果你的页面无论何时都包含敏感信息的话,你最好不要去使用<script>标签加载第三方JSON数据.

这是一份非常好的JSON安全漏洞概述文档: JavaScript Hijacking.pdf

还有概述了巧妙地通过原型攻击AJAX安全漏洞的文档: Subverting Ajax.pdf

JSON最佳实践

根据上述的安全报告,Douglas Crockford (Yahoo公司的javascript高级设计师)写了一篇blog,里面提供了非常简单而优雅的方法避免最常见的JSON安全问题.这些方法总结如下:

  • 浏览器永远都是不可信任的
  • 保持数据简洁(不要在JSON数据中嵌入函数)
  • 避免使用第三方JSON
  • 所有JSON数据请求服务器端验证(保证它们都属于你的站点)
  • 对敏感信息使用SSL(浏览器加密)

JSON的未来

现在JSON正处于起步阶段,然而它的前景是非常广阔的.PHP已经在第5个版本支持JSON.而XML在RSS的统治地位也面临分裂.

到2008年,大多数浏览器将能解析JSON并且能把任何变量转换成JSON.还有一个即将实现的标准就是允许浏览器安全地请求一个当前域名之外的JSON 文件.当这些技术都被实现时,我们将进入一个Web3.0的世界,到时我们可以请求任何地方公开的任何JSON数据并且自由控制,而不必使用任何代理服务器.

XML在被引入的时候引起轰动,但JSON,当它被浏览器完全支持的时候,将会引发网络新风潮,届时,新基于浏览器支持JSON的应用风行,如果你还没为那一天作为准备,你将会在下次变革中失去领先地位.


转载自:
http://www.yeeyan.com/articles/view/mouse4x/16540

分享到:
评论

相关推荐

    java项目,课程设计-ssm病人跟踪治疗信息管理系统

    病人跟踪治疗信息管理系统采用B/S模式,促进了病人跟踪治疗信息管理系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段,管理效率极低,随着病人的不断增多,传统基于手工管理模式已经无法满足当前病人需求,随着信息化时代的到来,使得病人跟踪治疗信息管理系统的开发成了必然。 本网站系统使用动态网页开发SSM框架,Java作为系统的开发语言,MySQL作为后台数据库。设计开发了具有管理员;首页、个人中心、病人管理、病例采集管理、预约管理、医生管理、上传核酸检测报告管理、上传行动轨迹管理、分类管理、病人治疗状况管理、留言板管理、系统管理,病人;首页、个人中心、病例采集管理、预约管理、医生管理、上传核酸检测报告管理、上传行动轨迹管理、病人治疗状况管理,前台首页;首页、医生、医疗资讯、留言反馈、个人中心、后台管理、在线咨询等功能的病人跟踪治疗信息管理系统。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

    liunx project 5

    liunx project 5

    PostgreSQL DBA实战视频教程(完整10门课程合集)

    分享课程——PostgreSQL DBA实战视频教程(完整10门课程合集)

    计算机科学基础期末考试试题

    计算机科学基础期末考试试题

    c语言实验设备管理系统

    练习与巩固《C语言程序设计》理论知识,通过实践检验和提高实际能力,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写调试应用程序和进行其它相关设计的技能。

    提高图像在低光照条件下的清晰度和可见性,使用CNN的图像重建网络,来实现亮度调节,可用于小白学习

    1. 数据集资源 公开低光照数据集:用于模型训练的低光照图像数据集,这些数据集包含了多种低光照条件下的图像,并附有增强后的高质量图像。 合成数据:在不足数据的情况下,可以通过对高亮度图像进行暗化处理生成低光图像对,以增强数据量。 自建数据集:对于特定场景,如安防、医疗等,可以拍摄或收集特定条件下的低光照图像来创建数据集,满足特定应用需求。 2. 硬件资源 GPU:大规模模型训练需要高性能计算,以支持大规模图像处理和神经网络训练。 数据存储:由于图像数据较大,需要大容量的存储设备如HDD或SSD来存储数据集及中间结果。 3. 深度学习框架及工具 PyTorch:支持构建和训练神经网络模型,尤其适合卷积神经网络(CNN)和生成对抗网络(GAN)的实现。 CUDA和cuDNN:为GPU加速库,在模型训练时可显著提升运行效率。

    双哥微服务.md

    双哥微服务

    fb000f5e-12c5-a46b-102a-f08bdfa015f1.json

    fb000f5e-12c5-a46b-102a-f08bdfa015f1.json

    C#ASP.NET跑腿服务网站源码数据库 Access源码类型 WebForm

    ASP.NET跑腿服务网站源码 开发环境 :Asp.net + VS2010 + C# + ACCESS 网站介绍: 适合人群:跑腿服务行业公司,服务资讯公司或者其他行业企业、 做服务行业建站的技术人员、技术人员学习参考都行。 技术特点:非常清爽大气的网站,界面华丽,工整,采用全div布局, 含flash图片切换功能,强大的后台信息管理功能。 功能介绍: 后台功能:系统参数设置(网站标题,关键字,内容,站长联系方式等)、系统栏目频道设置、新闻管 理、服务项目管理、公司介绍内容管、系统模版管理(可管理前台页面模版内容,具体到头部页面,底 部页面,首页,内容页,新网页等)、系统日志管理、系统管理员管理、频道管理(频道类型、频道内 容、内容发布以及编辑)。 后台地址:网址/admin/login.aspx 账户:admin 密码:admin888

    KCP一个快速可靠的ARQ协议.zip

    c语言

    【小程序毕业设计】基于微信小程序的物流运输(仓储)系统开发与设计源码(完整前后端+mysql+说明文档+LW).zip

    环境说明: 开发语言:Java/php JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea 小程序框架:uniapp/原生小程序 开发工具:HBuilder X/微信开发者

    计算机中 人工智能的七大应用领域

    人工智能(Artificial Intelligence,缩写为AI)是一种通过计算机程序模拟人类智能与行为的技术和理论。它可以用于各种领域,例如:自动驾驶、机器翻译、语音识别、图像识别、医疗诊断等。近年来,人工智能逐渐成为了技术界和商业领域的热门话题。

    ESP32ESP32C2ESP32C3ESP32C6ESP8266的AT应用.zip

    c语言

    基于JAVA实现的离散数学题库管理系统.zip

    基于JAVA实现的离散数学题库管理系统

    【图像压缩】基于matlab GUI低比特率图像压缩(含比特率 压缩包 信噪比)【含Matlab源码 9132期】.mp4

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    (源码)基于C++的MiniSQL数据库系统.zip

    # 基于C++的MiniSQL数据库系统 ## 项目简介 MiniSQL是一个轻量级的关系型数据库管理系统,旨在提供基本的SQL解析和执行功能。该项目参考了CMU15445 BusTub框架,并在其基础上进行了修改和扩展,以兼容原MiniSQL实验指导的要求。MiniSQL支持缓冲池管理、索引管理、记录管理等核心功能,并提供了简单的交互式SQL解析和执行引擎。 ## 项目的主要特性和功能 1. 缓冲池管理实现了一个高效的缓冲池管理器,用于缓存磁盘上的数据页,以提高数据访问速度。 2. 索引管理支持B+树索引,提供高效的插入、删除和查找操作。 3. 记录管理实现了记录的插入、删除、更新和查询功能,支持持久化存储。 4. 元数据管理提供了表和索引的元数据管理功能,支持持久化存储和检索。 5. 并发控制实现了基本的锁管理器,支持事务的并发控制。 6. 查询执行提供了简单的查询执行引擎,支持基本的SQL语句解析和执行。 ## 安装使用步骤

    社会科学研究Top 10,000 Papers数据解析论文名称被引次数下载次数等

    社会科学研究Top 10,000 Papers数据解析被引次数下载次数等 一、数据背景与来源 该数据集来源于SSRN(Social Science Research Network)的社会科学研究Top 10,000 Papers,是根据多种学术影响力指标统计得出的,在其平台上最受关注的前10,000篇学术论文的汇总。这些数据反映了国际研究领域的热点话题和发展趋势,对于国内学者研究者来说,是了解社科领域研究进展的重要窗口。 二、数据内容概览 样本数量:数据集包含10,000条记录,每条记录代表一篇在SSRN平台上具有高影响力的学术论文。 论文范围:涵盖社会科学研究的各个领域,包括但不限于经济学、政治学、社会学、心理学、教育学等。 关键指标: 数据下载次数:反映了论文的受欢迎程度和研究者对其内容的关注度。 引用次数:体现了论文在学术界的认可度和影响力,是评估论文质量的重要指标之一。 Rank Paper Total New Downloads Total # of Downloads Total # of Citations # of Authors

    【北京理工大学-2024研报】中国碳达峰碳中和时间表与路线图研究.pdf

    行业研究报告、行业调查报告、研报

    基于 Java+Mysql 实现的企业人事管理系统【课程设计/毕业设计】(源码+设计报告)

    【作品名称】:基于 Java+Mysql 实现的企业人事管理系统【课程设计/毕业设计】(源码+设计报告) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: [1]管理员可以对员工的基本信息的增删改查,普通员工仅可查看; [2]对公司里所有员工进行分配工号,并进行基本信息的录入; [3]对新聘用的员工,将其信息加入到员工档案记录中; [4]对于解聘的员工,将其信息从员工档案记录中删除。 [5]当员工信息发生变动时,修改员工档案记录中相应的属性。 (三)员工岗位信息管理 [1]对公司里所有员工的职务及岗位信息(岗位职责)进行记录; [2]记录员工调动前后的具体职务,以及调动时间。 (四)考勤管理 [1]对员工上班刷卡的记录进行统一编号;登记员工上班时间(准时、迟到)。 [2]对员工下班刷卡的记录进行统一编号;登记员工下班时间(准时、早 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    (源码)基于Arduino编程的冰箱警报系统.zip

    # 基于Arduino编程的冰箱警报系统 ## 项目简介 这是一个基于Arduino编程的项目,通过连接到冰箱门开关的警报系统来提醒用户冰箱门开启时间过长。用户可以在设定的时间内关闭冰箱门,否则警报会响起。项目使用LCD控制器面板来设置和配置警报延迟时间。 ## 项目的主要特性和功能 1. 警报功能在冰箱门开启后,系统会开始计时,如果用户在设定的时间内未关闭冰箱门,警报会响起。 2. LCD配置面板使用LCD控制器面板设置和配置警报延迟时间。 3. 可配置警报时间用户可以根据需要调整警报延迟时间。 4. 状态显示LCD面板显示冰箱门的状态(开启关闭)。 ## 安装使用步骤 1. 下载并解压项目文件。 2. 准备硬件部件根据提供的物料清单(Bill of Materials)准备所需的硬件部件。 3. 连接硬件部件按照项目文档中的连接表(Connection Table)将硬件部件连接到Arduino主板和LCD控制器面板。

Global site tag (gtag.js) - Google Analytics