《虚拟现实:接口、应用与设计(原书第2版)》参考文献

  • 更新时间:
  • 4338人关注
  • 点击下载

给大家带来的是《虚拟现实:接口、应用与设计(原书第2版)》参考文献,介绍了关于虚拟现实、接口、应用、设计、参考文献、虚拟现实方面的内容,本书是由机械工业出版社出版,已被881人关注,由热心网友相怡木提供,目前本书在虚拟现实类综合评分为:9.1分。

资源详情相关推荐
《《虚拟现实:接口、应用与设计(原书第2版)》参考文献》封面
  • 出版社:机械工业出版社
  • 作者:[美]威廉姆·R.、谢尔曼(William、R.、Sherman)、阿兰·B.、克雷格(Alan、B.、Craig)、著
  • 大小:28.56 MB
  • 类别:虚拟现实
  • 热度:189
  • 《Unity 2017虚拟现实开发标准教程》随书资源
  • Unity虚拟现实开发实战
  • 《Unreal Engine 虚拟现实开发》配套资源
  • Unity虚拟现实开发圣典
  • 单片机原理:接口及应用-嵌入式系统技术基础 课后答案
  • 配套书籍介绍

    本书将虚拟现实(VR)视为一种媒介,更多聚焦于内容而非技术层面,讨论如何实现虚拟现实以及如何创建成功的虚拟现实应用。书中首先介绍相关术语和背景知识;然后重点讨论界面(接口)技术,包括交互技术、内容选择和表示问题,并新增一章讨论人类用户在虚拟现实体验中扮演的重要角色;之后讨论虚拟现实的总体设计,涉及虚拟现实体验的分类以及我们可以从过去的设计中学到的经验;最后对虚拟现实系统和应用的未来进行展望。本书适合所有对虚拟现实应用及实现感兴趣的读者,包括相关产品设计人员、技术开发人员和市场营销人员等,也适合高等院校相关专业的学生阅读参考。

    目录

    • 译者序
    • 序  言
    • 前  言
    • 作者简介
    • 第一部分 什么是虚拟现实
    • 第1章 虚拟现实概述 3
    • 1.1 定义虚拟现实 4
    • 1.2 虚拟现实体验的5个关键要素 4
    • 1.2.1 关键要素1和2:参与者和创作者 5
    • 1.2.2 关键要素3:虚拟世界 5
    • 1.2.3 关键要素4:沉浸感 6
    • 1.2.4 关键要素5:交互性 8
    • 1.2.5 综合5个关键要素 11
    • 1.2.6 虚拟现实范式 12
    • 1.3 虚拟现实、远程呈现、增强现实和赛博空间 14
    • 1.3.1 人工现实 14
    • 1.3.2 虚拟 15
    • 1.3.3 虚拟世界和虚拟环境 15
    • 1.3.4 赛博空间 16
    • 1.3.5 增强现实 16
    • 1.3.6 远程呈现 18
    • 1.4 虚拟现实的历史:虚拟现实技术从何而来 20
    • 1.5 本章小结 40
    • 第2章 作为媒介的虚拟现实 42
    • 2.1 通过媒介交流 42
    • 2.2 媒介的内容:虚拟世界 43
    • 2.3 沟通:思想的传递 45
    • 2.4 人类传播媒介的共性问题 50
    • 2.4.1 虚拟世界的界面 50
    • 2.4.2 语言 52
    • 2.4.3 作者关系(与创作者关系) 56
    • 2.4.4 虚拟现实有什么特别之处 57
    • 2.5 虚拟现实媒介的研究 57
    • 2.5.1 叙事:无动机与交互 57
    • 2.5.2 形式和流派 61
    • 2.5.3 体验与信息 62
    • 2.5.4 虚拟现实:吸引力媒介之一 65
    • 2.5.5 捕捉虚拟现实体验 66
    • 2.6 本章小结 71
    • 第二部分 虚拟现实系统
    • 第3章 人类参与者 77
    • 3.1 将人与模拟连接起来 78
    • 3.1.1 人机界面 79
    • 3.1.2 可供性 79
    • 3.1.3 虚拟现实中的可供性 81
    • 3.2 人类感知系统 83
    • 3.2.1 感觉:感知的生理方面 84
    • 3.2.2 视觉感知 91
    • 3.2.3 听觉感知 101
    • 3.2.4 触觉感知 105
    • 3.2.5 前庭感知 109
    • 3.2.6 嗅觉感知 111
    • 3.2.7 味觉感知 112
    • 3.2.8 跨感官效应和虚拟现实 112
    • 3.3 临场感和具身化:虚拟世界中的自我感知 114
    • 3.3.1 临场感的概念 114
    • 3.3.2 临场感的决定因素和反应 118
    • 3.3.3 测量临场感 122
    • 3.3.4 具身化 123
    • 3.3.5 增加虚拟世界的“真实性” 127
    • 3.3.6 破坏临场感:让世界变得不那么真实的因素 130
    • 3.4 本章小结 131
    • 第4章 输入:连接参与者与虚拟世界 132
    • 4.1 输入技术 133
    • 4.1.1 主动与被动输入 134
    • 4.1.2 连续与离散输入 134
    • 4.1.3 带宽:信息的数量/类型 136
    • 4.1.4 绝对与相对输入(参考系) 137
    • 4.1.5 物理与虚拟输入 139
    • 4.1.6 输入分类 139
    • 4.1.7 位置跟踪技术 144
    • 4.2 在虚拟现实系统中使用输入 158
    • 4.2.1 跟踪身体位置 158
    • 4.2.2 物理输入设备 164
    • 4.2.3 身体姿势和手势识别 175
    • 4.2.4 语音识别(音频输入) 177
    • 4.3 本章小结 180
    • 第5章 输出:连接虚拟世界与参与者 181
    • 5.1 视觉显示 182
    • 5.1.1 视觉显示的属性 182
    • 5.1.2 视觉显示范式 210
    • 5.1.3 非封闭(透视)头戴式显示器 229
    • 5.1.4 智能手机虚拟现实头戴式显示器 234
    • 5.1.5 头戴式投影显示器 237
    • 5.1.6 手持式虚拟现实 239
    • 5.1.7 视觉显示小结 242
    • 5.2 听觉显示 243
    • 5.2.1 听觉显示的属性 243
    • 5.2.2 听觉显示范式 249
    • 5.3 触觉显示 252
    • 5.3.1 触觉显示的属性 254
    • 5.3.2 触觉显示范式 259
    • 5.3.3 触觉显示器 259
    • 5.3.4 末端执行器显示器 264
    • 5.3.5 机器人形显示器 269
    • 5.3.6 被动触觉显示 272
    • 5.3.7 混合显示器 273
    • 5.3.8 3D硬拷贝 273
    • 5.3.9 触觉显示小结 274
    • 5.4 前庭和其他感官显示 275
    • 5.4.1 前庭显示 276
    • 5.4.2 嗅觉、味觉和其他感官 280
    • 5.5 本章小结 281
    • 第6章 虚拟世界的表示 282
    • 6.1 虚拟世界的表示问题 283
    • 6.1.1 逼真性 286
    • 6.1.2 人类的理解能力 291
    • 6.1.3 选择一个映射 296
    • 6.1.4 定量和定性表示 299
    • 6.1.5 与VR相关的表示问题 303
    • 6.2 VR中的视觉表示 305
    • 6.2.1 如何在VR体验中使用视觉 305
    • 6.2.2 融入现实世界 308
    • 6.3 VR中的听觉表示 309
    • 6.3.1 声音的特性 309
    • 6.3.2 如何在VR体验中使用声音 310
    • 6.4 VR中的触觉表示 314
    • 6.4.1 触觉的特点 314
    • 6.4.2 如何在VR体验中使用触觉 315
    • 6.5 其他感官表示 319
    • 6.5.1 前庭表示 319
    • 6.5.2 嗅觉和味觉表示 320
    • 6.6 表示小结 320
    • 6.7 渲染系统 321
    • 6.8 视觉渲染系统 325
    • 6.8.1 视觉渲染的方法 325
    • 6.8.2 渲染复合视觉场景 330
    • 6.8.3 视觉渲染延迟 340
    • 6.8.4 视觉渲染过程 345
    • 6.9 听觉渲染系统 350
    • 6.9.1 声音渲染方法 351
    • 6.9.2 渲染复合声音 356
    • 6.9.3 声音渲染过程 361
    • 6.10 触觉渲染系统 368
    • 6.10.1 触觉渲染方法 368
    • 6.10.2 使用力显示渲染复杂的触觉场景 375
    • 6.10.3 触觉渲染过程 376
    • 6.11 其他感官的渲染 381
    • 6.11.1 渲染前庭感知 381
    • 6.11.2 渲染嗅觉和味觉 381
    • 6.12 本章小结 382
    • 第7章 与虚拟世界交互 383
    • 7.1 交互设计基础知识 384
    • 7.2 用户界面的隐喻 387
    • 7.3 操作虚拟世界 389
    • 7.3.1 操作方法 389
    • 7.3.2 操作属性 394
    • 7.3.3 选择 408
    • 7.3.4 操作形式 422
    • 7.3.5 操作小结 427
    • 7.4 在虚拟世界中导航 427
    • 7.4.1 寻路 428
    • 7.4.2 旅行 436
    • 7.4.3 导航小结 450
    • 7.5 与他人交互 452
    • 7.5.1 共享体验 453
    • 7.5.2 协作交互 457
    • 7.6 与虚拟现实系统交互(元命令) 465
    • 7.7 本章小结 466
    • 第三部分 应用虚拟现实
    • 第8章 将虚拟世界带入生活 471
    • 8.1 沉浸感 471
    • 8.1.1 物理/感官沉浸感 471
    • 8.1.2 精神沉浸感 472
    • 8.1.3 现实主义在沉浸中的作用 473
    • 8.2 提供环境 480
    • 8.2.1 视角 480
    • 8.2.2 场地 482
    • 8.3 虚拟世界 487
    • 8.3.1 虚拟世界的实体 487
    • 8.3.2 对象建模与虚拟世界布局 490
    • 8.3.3 现实世界作为虚拟世界的一部分 493
    • 8.4 虚拟世界规则:物理学 502
    • 8.4.1 虚拟世界物理学的类型 503
    • 8.4.2 虚拟世界物理学的范围 506
    • 8.4.3 模拟/数学模型 507
    • 8.4.4 对象相互作用 507
    • 8.4.5 虚拟世界的持续性 508
    • 8.4.6 现实世界和虚拟世界的物理不一致 509
    • 8.5 呈现虚拟现实体验的软件 510
    • 8.5.1 虚拟现实软件集成 511
    • 8.5.2 游戏引擎 513
    • 8.5.3 网页传送虚拟现实 514
    • 8.6 体验创建过程 514
    • 8.7 本章小结 516
    • 第9章 体验概念与设计:应用虚拟现实解决问题 518
    • 9.1 虚拟现实能实现你的目标吗 518
    • 9.2 构思新的虚拟现实应用程序 522
    • 9.2.1 从其他媒介改编 522
    • 9.2.2 从现有的虚拟现实体验汲取灵感或改编 526
    • 9.2.3 从头开始创造新的虚拟现实体验 527
    • 9.3 丰富的应用领域 527
    • 9.4 虚拟现实体验范例 537
    • 9.5 设计虚拟现实体验 542
    • 9.5.1 设计要谨慎 542
    • 9.5.2 原型 543
    • 9.5.3 设计要考虑系统 543
    • 9.5.4 设计要考虑场地 544
    • 9.5.5 设计要考虑受众 545
    • 9.5.6 设计要吸引受众 547
    • 9.5.7 考虑社交交互 547
    • 9.5.8 考虑设计权衡 548
    • 9.5.9 设计用户目标 549
    • 9.5.10 设计体验的结束 549
    • 9.5.11 用户测试 552
    • 9.5.12 文档、部署和评估体验 552
    • 9.6 虚拟现实设计的过去与未来 553
    • 9.7 本章小结 554
    • 第10章 虚拟现实:过去,现在,未来 556
    • 10.1 虚拟现实的现状 556
    • 10.1.1 技术萌芽期 557
    • 10.1.2 期望膨胀期 558
    • 10.1.3 幻灭期 558
    • 10.1.4 复苏期 558
    • 10.1.5 成熟期 559
    • 10.2 虚拟现实的成熟 560
    • 10.2.1 实验室中的虚拟现实 560
    • 10.2.2 课堂中的虚拟现实 562
    • 10.2.3 过渡:大众用户的吸引力媒介 563
    • 10.3 虚拟现实的趋势 564
    • 10.3.1 增强现实的应用增加 565
    • 10.3.2 更少的累赘 567
    • 10.3.3 更高的感官保真度 568
    • 10.3.4 软件可用性 569
    • 10.3.5 新驱动/颠覆性技术 570
    • 10.4 对技术的回顾与预测 571
    • 10.4.1 显示技术 572
    • 10.4.2 输入技术 576
    • 10.4.3 软件 579
    • 10.4.4 应用程序软件的未来 582
    • 10.5 本章小结:未来已来 583
    • 参考文献
    精选笔记1:AES加解密在php接口请求过程中的应用示例

    21小时57分钟前回答

    在php请求接口的时候,我们经常需要考虑的一个问题就是数据的安全性,因为数据传输过程中很有可能会被用fillder这样的抓包工具进行截获。一种比较好的解决方案就是在客户端请求发起之前先对要请求的数据进行加密,服务端api接收到请求数据后再对数据进行解密处理,返回结果给客户端的时候也对要返回的数据进行加密,客户端接收到返回数据的时候再解密。因此整个api请求过程中数据的安全性有了一定程度的提高。

    今天结合一个简单的demo给大家分享一下AES加解密技术在php接口请求中的应用。

    首先,准备一个AES加解密的基础类:

    <?php
    
    /**
     * 加密基础类
     */
    
    class Crypt_AES
    {
      protected $_cipher = "rijndael-128";
      protected $_mode = "cbc";
      protected $_key;
      protected $_iv = null;
      protected $_descriptor = null;
    
      /**
       * 是否按照PKCS #7 的标准进行填充
       * 为否默认将填充“\0”补位
       * @var boolean
       */
      protected $_PKCS7 = false;
    
      /**
       * 构造函数,对于密钥key应区分2进制字符串和16进制的。
       * 如需兼容PKCS#7标准,应选项设置开启PKCS7,默认关闭
       * @param string $key 
       * @param mixed $iv   向量值
       * @param array $options
       */
      public function __construct($key = null, $iv = null, $options = null)
      {
        if (null !== $key) {
          $this->setKey($key);
        }
    
        if (null !== $iv) {
          $this->setIv($iv);
        }
    
        if (null !== $options) {
          if (isset($options['chipher'])) {
            $this->setCipher($options['chipher']);
          }
    
          if (isset($options['PKCS7'])) {
            $this->isPKCS7Padding($options['PKCS7']);
          }
    
          if (isset($options['mode'])) {
            $this->setMode($options['mode']);
          }
        }
      }
    
      /**
       * PKCS#7状态查看,传入Boolean值进行设置
       * @param boolean $flag
       * @return boolean
       */
      public function isPKCS7Padding($flag = null)
      {
        if (null === $flag) {
          return $this->_PKCS7;
        }
        $this->_PKCS7 = (bool) $flag;
      }
    
      /**
       * 开启加密算法
       * @param string $algorithm_directory locate the encryption 
       * @param string $mode_directory
       * @return Crypt_AES
       */
      public function _openMode($algorithm_directory = "" , $mode_directory = "") 
      {
        $this->_descriptor = mcrypt_module_open($this->_cipher, 
                            $algorithm_directory, 
                            $this->_mode,
                            $mode_directory);
        return $this;
      }
    
      public function getDescriptor()
      {
        if (null === $this->_descriptor) {
          $this->_openMode();
        }
        return $this->_descriptor;
      }
    
      protected function _genericInit()
      {
        return mcrypt_generic_init($this->getDescriptor(), $this->getKey(), $this->getIv());
      }
    
      protected function _genericDeinit()
      {
        return mcrypt_generic_deinit($this->getDescriptor());
      }
    
      public function getMode()
      {
        return $this->_mode;
      }
      
      public function setMode($mode)
      {
        $this->_mode = $mode;
        return $this;
      }
    
      public function getCipher()
      {
        return $this->_cipher;
      }
      
      public function setCipher($cipher)
      {
        $this->_cipher = $cipher;
        return $this;
      }  
      /**
       * 获得key
       * @return string
       */
      public function getKey()
      {
        return $this->_key;
      }
      
      /**
       * 设置可以
       * @param string $key
       */
      public function setKey($key)
      {
        $this->_key = $key;
        return $this;
      }  
    
    
      /**
       * 获得加密向量块,如果其为null时将追加当前Descriptor的IV大小长度
       *
       * @return string
       */
      public function getIv()
      {
        if (null === $this->_iv && in_array($this->_mode, array( "cbc", "cfb", "ofb", ))) {
          $size = mcrypt_enc_get_iv_size($this->getDescriptor());
          $this->_iv = str_pad("", 16, "\0");
        }
        return $this->_iv;
      }
    
      /**
       * 获得向量块
       *
       * @param string $iv
       * @return Crypt_AES $this
       */
      public function setIv($iv)
      {
        $this->_iv = $iv;
        return $this;
      }  
    
      /**
       * 加密
       * @param string $str 被加密文本
       * @return string
       */
      public function encrypt($str){
        $td = $this->getDescriptor();
        $this->_genericInit();
        $bin = mcrypt_generic($td, $this->padding($str));
        $this->_genericDeinit();
    
        return $bin;
      }
     
      public function padding($dat)
      {
        if ($this->isPKCS7Padding()) {
          $block = mcrypt_enc_get_block_size($this->getDescriptor());
       
          $len = strlen($dat);
          $padding = $block - ($len % $block);
          $dat .= str_repeat(chr($padding),$padding);      
        }
    
        return $dat;
      }
    
      public function unpadding($str)
      {
        if ($this->isPKCS7Padding()) {
          $pad = ord($str[($len = strlen($str)) - 1]);
          $str = substr($str, 0, strlen($str) - $pad);
        }
        return $str;
      }
    
      /**
       * 解密
       * @param string $str 
       * @return string
       */
      public function decrypt($str){
        $td = $this->getDescriptor();
    
        $this->_genericInit();
        $text = mdecrypt_generic($td, $str);
        $this->_genericDeinit();
    
        return $this->unpadding($text);
      }
      
      /**
       * 16进制转成2进制数据
       * @param string $hexdata 16进制字符串
       * @return string
       */
      public static function hex2bin($hexdata) 
      {
        return pack("H*" , $hexdata);
      }
    
      /**
       * 字符串转十六进制
       * @param string $hexdata 16进制字符串
       * @return string
       */
      public static function strToHex($string)
      {
        $hex='';
        for($i=0;$i<strlen($string);$i++)
          $hex.=dechex(ord($string[$i]));
        $hex=strtoupper($hex);
        return $hex;
      }
    
      /**
       * 十六进制转字符串
       * @param string $hexdata 16进制字符串
       * @return string
       */
      function hexToStr($hex)
      {
        $string='';
        for($i=0;$i<strlen($hex)-1;$i+=2)
          $string.=chr(hexdec($hex[$i].$hex[$i+1]));
        return $string;
      }
    }
    
    

    客户端请求部分:

    <?php 
    
    include 'AES.php';
    
    $md5Key = 'ThisIsAMd5Key';               // 对应服务端:$md5key = 'ThisIsAMd5Key';
    $aesKey = Crypt_AES::strToHex('1qa2ws4rf3edzxcv');   // 对应服务端:$aesKey = '3171613277733472663365647A786376';
    $aesKey = Crypt_AES::hex2bin($aesKey);
    $aesIV = Crypt_AES::strToHex('dfg452ws');       // 对应服务端:$aesIV = '6466673435327773';
    $aes = new Crypt_AES($aesKey,$aesIV,array('PKCS7'=>true, 'mode'=>'cbc'));
    
    // var_dump($aes);
    
    $data['name'] = 'idoubi';
    $data['sex']= 'male';
    $data['age'] = 23;
    $data['signature'] = '白天我是一个程序员,晚上我就是一个有梦想的演员。';
    
    $content = base64_encode($aes->encrypt(json_encode($data)));
    $content = urlencode($content);
    $sign = md5($content.$md5Key);
    
    $url = 'http://localhost/aesdemo/api.php';
    $params = "version=1.0&sign=$sign&content=$content";
    
    // 请求接口
    post($url, $params);
    
    /**
     * 接口请求函数
     */
    function post($url, $params) {
      $curlPost= $params;
      $ch = curl_init();   //初始化curl
      curl_setopt($ch, CURLOPT_URL, $url);  //提交到指定网页
      curl_setopt($ch, CURLOPT_HEADER, 0);  //设置header
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //要求结果为字符串且输出到屏幕上
      curl_setopt($ch, CURLOPT_POST, 1);  //post提交方式
      curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
      $result = curl_exec($ch);//运行curl
      curl_close($ch);
      var_dump(json_decode($result, true));
    }
    
    

    接口处理逻辑:

    <?php 
    
    
    include 'AES.php';
    
    $data = $_POST; // 接口请求得到的数据
    $content = $data['content'];
    $sign = $data['sign'];
    
    $aesKey = '3171613277733472663365647A786376';
    $aesIV = '6466673435327773';
    $md5key = 'ThisIsAMd5Key';
    
    // 校验数据
    if(strcasecmp(md5(urlencode($content).$md5key),$sign) == 0) {
      // 数据校验成功
      $key = Crypt_AES::hex2bin($aesKey);
      $aes = new Crypt_AES($key, $aesIV, array('PKCS7'=>true, 'mode'=>'cbc'));
    
      $decrypt = $aes->decrypt(base64_decode($content));
      if (!$decrypt) {   // 解密失败
        echo json_encode('can not decrypt the data');
      } else {
        echo json_encode($decrypt);   // 解密成功
      }
    } else{
      echo json_encode('data is not integrity');    // 数据校验失败
    }
    
    

    上述接口请求过程中定义了三个加解密需要用到的参数:$aesKey、$aesIV、$md5key,在实际应用过程中,只要与客户端用户约定好这三个参数,客户端程序员利用这几个参数对要请求的数据进行加密后再请求接口,服务端程序员在接收到数据后利用同样的加解密参数对数据进行解密,整个api请求过程中的数据就很安全了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

    相关声明:

    《虚拟现实:接口、应用与设计(原书第2版)》参考文献 下载资源由用户 空博超 于 2021-12-03 10:41:56 分享至网盘,版权归机械工业出版社所有。仅供想学习虚拟现实的网友交流使用,专题参考:虚拟现实,

    虚拟现实相关资源

    • 微型计算机硬件技术及应用基础(下)接口与应用

      微型计算机硬件技术及应用基础下接口与应用 作者:邹逢兴编著 国防科技大学 出版时间:1997.10

      大小:4.1MB微型计算机

      立即下载
    • 微型计算机接口技术及应用 课后答案

      微型计算机接口技术及应用

      《微型计算机接口技术及应用》以IBM-PC微机及兼容机为主要对象,系统深入地阐述了微型计算机接口技术与总线技术的原理及应用。其主要内容包括I/O端口地址译码技术、定时/计数技术、DMA技术、中断技术、存储器接口、并行接口、人-机交互设备接口、串行接口、A/D与D/A转换器接口,系统资源软接口和总线技术及新型接口标准。《微型计算机接口技术及应用》内容全面,实例丰富,既有常用典型外设接口,也有新型外设接口;既有I/O设备的硬接口,也

      大小:10.9 MB微型计算机

      立即下载
    • 微型计算机接口技术及应用

      微型计算机接口技术及应用 作者:刘乐善,叶济忠,胡盛斌编著 华中理工大学 出版时间:1993

      大小:5.46MB微型计算机

      立即下载
    • 微型计算机接口技术及应用 课后答案

      微型计算机接口技术及应用

      《普通高等教育十一五□□□规划教材:微型计算机接口技术及应用》以微机接口为对象,深入地阐述了现代微机接口技术的原理及应用。全书共13章,前10章为接口技术的基本内容,集中介绍与分析了用户设备接口的共性技术,分别详细讨论了各种传统常用接口的电路设计及控制程序编写。后3章是接口技术新发展的内容,对PCI总线接口(桥)和WDM设备驱动程序的设计进行了深入具体讨论。 《普通高等教育十一五□□□规划教材:微型计算机接口技术及

      大小:10.9 MB微机接口

      立即下载
    • 微型计算机接口技术原理及应用

      微型计算机接口技术原理及应用

      大小:6.22MB微型计算机

      立即下载
    • 微型计算机接口卡的原理及应用(OEM技术)

      微型计算机接口卡的原理及应用OEM技术 作者:熊前兴,顾德义编著 出版时间:1992.1

      大小:4.18MB微型计算机

      立即下载

    虚拟现实配套笔记

    17小时28分钟前回答

    Java带default方法接口的应用示例

    本文实例讲述了Java带default方法接口的应用。分享给大家供大家参考,具体如下: 一 带default方法接口的实现 1 代码 interface InterfaceA // 定义一个接口{ public static String INFO = "static final." ; // 全局常量 public void print() ; // 抽象方法 default public void otherprint() // 带方法体的默认方法 { System.out.println("print default1 methods InterfaceA!"); }}class subClass implements InterfaceA //子类InterfaceAB实现接口InterfaceA{ public void print( ) //实现接口中的抽象方法print( ) { System.out.println("print abstract methods InterfaceA!"); System.out.println(INFO); }}public class Interfacedefault{ public static void main(String[ ] args) { subClass subObj = new subClass( ); //实例化子类对象 subObj.print( )……

    18小时49分钟前回答

    AES加解密在php接口请求过程中的应用示例

    在php请求接口的时候,我们经常需要考虑的一个问题就是数据的安全性,因为数据传输过程中很有可能会被用fillder这样的抓包工具进行截获。一种比较好的解决方案就是在客户端请求发起之前先对要请求的数据进行加密,服务端api接收到请求数据后再对数据进行解密处理,返回结果给客户端的时候也对要返回的数据进行加密,客户端接收到返回数据的时候再解密。因此整个api请求过程中数据的安全性有了一定程度的提高。 今天结合一个简单的demo给大家分享一下AES加解密技术在php接口请求中的应用。 首先,准备一个AES加解密的基础类: ?php/** * 加密基础类 */class Crypt_AES{ protected $_cipher = "rijndael-128"; pr……