ArchSummit全球架构师峰会全新主题——「智能进阶·架构重塑」>>> 了解详情
写点什么

打造 DIY 版 Echo:树莓派 + Alexa 语音服务

  • 2019-11-20
  • 本文字数:10515 字

    阅读完需:约 34 分钟

打造DIY版Echo:树莓派+ Alexa 语音服务

关于本文


本文详细阐述了如何在 Java 客户端和 Node.js 服务器上使用和测试 Alexa 语音服务。


本实例需要用 Node.Js 来获取 Login 的授权码。


本指导提供详细的操作指南对于在取得示例授权码、依赖性和在运行 Pi 的过程中相应的硬件部署。对于 Windows, Mac,或者通用的 Linux 指令,可以看这里的向导



开始


所需硬件


1. Raspberry Pi 2 (Model B)在亚马逊上购买升级:当然,Raspberry 3 也是可以的,请点击这里查看详细操作。Pi 的用户-请点击这里来获取帮助。


2. 微型的-USB 电源线 供树莓派来使用(包括在树莓 Pi 中)


3. 微型的 SD 卡– 需要预装NOOBS – Raspberry Pi 8GB Preloaded (NOOBS) Micro SD Card


4. 网线


5. USB 2.0 小型麦克风 – Raspberry Pi 没有自带麦克风,需要外接来与 Alexa 进行交互-在亚马逊上购买


6. 外部扬声器 3.5mm 音频插座/立体声耳机插孔-在亚马逊上购买


7. 一个 USB 鼠标和键盘,以及一个支持 HDMI 的外部显示器 – 如果由于某种原因无法通过 SSH 协议进入到你的树莓派时,我们也推荐你使用 USB 键盘、鼠标和一个便于使用的 HDMI 显示器。稍后可以查看关于“SSH”协议的内容。


8. 无线 WiFi 适配器(可选)在亚马逊上购买


所需技能


1. 基础编程知识


2. 熟悉脚本


0 – 设置树莓派



1. 将装好 NOOBS 的 SD 卡插入树莓派



2. 插入 USB2.0 的迷你麦克风和无线 wifi 适配器(可选)


3. 插入 USB 的键盘和鼠标.


4. 连接显示器




1 – 启动树莓派


1. 连接电源                                                                                                                                                                                               2. 你的树莓派会启动,并显示可以安装的操作系统列表                                                                                                                 3. 选择 Raspbian 并点击 Install



4. Raspbian 将会启动安装流程. 注意:这个过程可能会持续一段时间。                                                                                       5. 按照完毕后,配置菜单 (raspi-config) 将会启动. 这里你可以设置一些基本参数:例如启用摄像头 ,然后选择 Finish



6. 启动后,登录到你的树莓派,默认用户名是 pi,密码是 raspberry


更多信息: raspberrypi.org


2 – 安装应用和依赖包


注意: 你需要安装 Terminal 来安装使用 Alexa Voice Services 所需的组件. Terminal 是默认安装的,你可以从桌面上进入 Terminal。可以点击这里了解更多关于 Terminal 的信息。




2.1 – 在树莓派上打开 SSH


SSH 允许从另一台计算机远程访问的树莓派的命令行(只要它们都在同一网络上)。这样您不需要将您的树莓派连接到外部显示器 。


SSH 默认情况下在树莓派是启用的 。如果你在工作的时候遇到一些有关 SSH 的问题,确保它已经被安装。在使用raspi-config 组件时,确保 SSH 已经安装好。


在 Terminal 中输入以下内容:


sudo raspi-config


然后导航到 SSH,单击回车选择安装 SSH 服务器



2.2 – 使用 SSH 登录到 Raspberry Pi


现在,请 SSH 到您的树莓派。这样做之前必须确保你已经知道你的树莓派的 IP 地址。


键入以下命令到终端:


hostname -I


> 192.168.1.10 //this is an example Raspberry Pi’s IP – it would be different for you


如果你是在 Windows PC 上,按照这的说明SSH Using windows


现在,你知道你的树莓派的 IP 地址,就可以使用 SSH 远程连接到它 。要做到这一点,打开电脑上的终端程序 并键入以下内容:


pi@<YOUR Raspberry Pi IP ADDRESS>


它会提示你输入密码。注:为用户 PI 默认密码为 raspberry


现在你可以远程连接到您的树莓派,并可以且通过 SSH 远程连接你安装所有的工具。


2.3 – 安装 VNC 服务器


VNC 是一个允许远程控制树莓派界面的图片化的桌面分享系统。这会让操作变得很方便由于摆脱了外部的显示器。


sudo apt-get install tightvncserver


打开 VNL 服务器


请键入:tightvncserver 来打开 VNC 服务器


你将会被要求设置一个密码。当你需要远程连接到树莓派时,请执行该操作。


在启动时运行 VNC 服务器


如果你想确保在你重启树莓派之后,VNC 服务器会自动启动,请键入以下脚本:


cd /home/pi


cd .config


注意:确保“.”在文件夹前面。这使文件夹成为一个隐藏的文件夹。


mkdir autostart


cd autostart


通过键入以下命令,创建一个新的配置:


nano tightvnc.desktop


编辑文件中的以下文本:


[Desktop Entry]


Type=Application


Name=TightVNC


Exec=vncserver :1


StartupNotify=false


按住 ctrl-X 后在键入 Y 来保存更改。


这样的话,下一次你重启 VNC 服务器时将会自动刷新。


通过 VNC 服务器连接到树莓派


Mac 系统: 请参阅 https://www.raspberrypi.org/documentation/remote-access/vnc/mac.md


Windows 系统: https://www.raspberrypi.org/documentation/remote-access/vnc/windows.md


Linux 系统: https://www.raspberrypi.org/documentation/remote-access/vnc/linux.md


(如果你喜欢的话)你现在可以不需要连接到显示器,鼠标键盘.随着 SSH 和 VNC 的安装, 外部显示器是可选择的。通过树莓派来感受自由吧。


2.4 – 安装 VLC


通过输入下面命令获取 VLC 媒体播放器:


sudo apt-get install vlc-nox vlc-data


注意:如果你正在运行树莓派或者已经安装了 VLC,你需要执行以下的命令来移除这俩个相冲突的库文件。


sudo apt-get remove –purge vlc-plugin-notify


sudo rm /usr/lib/vlc/plugins/codec/libsdl_image_plugin.so


无法获取错误:在你安装 VLC 时,遇到无法获取的错误时,尝试输入以下代码


sudo apt-get update


sudo apt-get upgrade


sudo apt-get install vlc-nox vlc-data


注意:运行”sudo apt-get upgrade”脚本时可能会花费一段时间,请耐心等待


源: https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=67399


确保 VLC 安装成功


whereis vlc


这条命令会告诉你 VLC 的安装位置.


大多数的项目会存在/usr/bin 中


一般会显示下面的结果


vlc: /usr/bin/vlc /usr/lib/vlc /usr/share/vlc /usr/share/man/man1/vlc.1.gz


设置 VLC 的环境变量


敲入以下命令:


export LD_LIBRARY_PATH=/usr/lib/vlc


export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins


查看环境变量是否生效


echo $LD_LIBRARY_PATH


> /usr/lib/vlc


echo $VLC_PLUGIN_PATH


> /usr/lib/vlc/plugins


2.5 – 下载并安装 Node.js


确认 Node.JS 还没有被安装


node -v


> command not found


然后输入:


sudo apt-get update


sudo apt-get upgrade


设置 apt-get  repo 的源:


curl -sL https://deb.nodesource.com/setup | sudo bash –


安装 Node:


sudo apt-get install nodejs


2.6 – 安装 JDK 环境


你需要安装 Java Development Kit (JDK) version 8 或者更高.


步骤 1: 从Oracle的网站下载 JDK 8.


下载 Linux ARM 32 Soft Float ABI (文件名 jdk-8u77-linux-arm32-vfp-hflt.tar.gz)


注意:虽然苹果和一些智能手机有用 64 位的 ARMv8,但是到现在为止没有树莓的 64-位 ARM 的处理器在 pis 系统上可用


步骤 2: 解压内容 解压缩并安装到 /opt 目录下:


sudo tar zxvf jdk-8u77-linux-arm32-vfp-hflt.tar.gz -C /opt


设置默认 Java 环境到 jdk1.8


sudo update-alternatives –install /usr/bin/javac javac /opt/jdk1.8.0_77/bin/javac 1


sudo update-alternatives –install /usr/bin/java java /opt/jdk1.8.0_77/bin/java 1


sudo update-alternatives –config javac


sudo update-alternatives –config java


注意:如果被要求选择一个可替换,请键入你刚刚安装的相对应的 jdk 版本号-例如-jdk1.8.0_77


通过下面的命令确认版本:


java -version


javac -version


2.7 – 安装 Maven


步骤 1: 下载 Maven


从以下链接下载 apache-maven-3.3.9-bin.tar.gz 文件


https://maven.apache.org/download.cgi


步骤 2:解压内容  解压压缩包的内容到 /opt 目录中


sudo tar zxvf apache-maven-3.3.9-bin.tar.gz -C /opt


步骤 3:告诉你的命令解析器在哪里找到 maven  由于将在系统配置文件中设置这些,因此这对所有用户可用


创建一个新的文件 /etc/profile.d/maven.sh, 然后在里面输入以下内容:


export M2_HOME=/opt/apache-maven-3.3.9


export PATH=M2_HOME/bin


保存这个文件。退出并退回到树莓派中然后内容脚本就会生效,可以输入以下代码来进行测试:


mvn -version


3 – 开始使用 Alexa 的语音服务


3.1 – 注册一个免费的亚马逊开发者帐户


获取免费亚马逊开发者账户



3.2 – 下载对树莓派示例应用程序代码和依赖


下载示例应用程序从 Github repo 上下载 zip 文件。如果要下载这个包,您必须同意Alexa的语音服务协议


3.3 – 复制并解压你的树莓派.zip 文件


1.直接下载你的树莓派的 zip 文件,复制,然后解压您的树莓派的 zip 文件。                                                                                   2.请在您的树莓派记下它的位置。进一步的说明将把这个位置<REFERENCE_IMPLEMENTATION>



3.4 – 注册产品并创建一个安全配置文件


1.登录亚马逊开发者门户网站 – developer.amazon.com                                                                                                                   2.单击应用和服务选项卡 – > Alexa 的 – > Alexa 的语音服务 – >入门



3.在注册产品类型菜单中,选择 Device。



4.填写并保存以下值:


设备类型信息


1.设备型号 ID:my_device


2.显示名称:My Device


3.单击下一步



安全配置文件


1.单击安全配置文件下拉菜单中选择“创建一个新的配置文件



2.常规选项卡


o 安全配置文件名称:Alexa 的语音服务示例应用程序安全配置文件


o 安全配置文件说明:Alexa 的语音服务示例应用程序安全配置文件说明


o 单击下一步



客户端 ID 和客户端密钥会为你生成。



1.现在点击网络设置选项卡


o 确保您刚才创建的下拉菜单中选择安全配置文件,然​​后单击“编辑”按钮。



o 允许的来源:点击“添加另一个”,然后输入 https://本地主机 IP:3000


o 允许返回网址:点击“添加另一个”,然后输入 https://本地主机: 3000 / authresponse


o 单击下一步



设备详细信息


1.图像:以下测试图像保存到电脑上,然后上传:



2.分类:其它                                                                                                                                                                                             3.说明:Alexa 的语音服务的示例应用程序测试                                                                                                                      4.你对商业化的预期时间是多久?:长 4 个多月/ TBD 您的预计时间表                                                                                        5.有多少设备,你打​​算商业化?:0                                                                                                                                                        6.单击下一步



亚马逊音乐


1.启用亚马逊音乐?:否(您可以选择选择是,如果你想与亚马逊的音乐实验中填写必填字段。但是,亚马逊音乐不要求 使用 Alexa 的语音服务。)                                                                                                                                                                       2.单击提交按钮




您现在可以生成自签名的证书。


4 – 生成自签名证书


步骤 1: 安装 SSL


sudo apt-get install openssl


验证安装


whereis openssl


> openssl: /usr/bin/openssl /usr/share/man/man1/openssl.lssl.gz


修改目录到 <REFERENCE_IMPLEMENTATION>/samples/javaclient.


cd <REFERENCE_IMPLEMENTATION>/samples/javaclient – //your sample apps location


步骤 2: 修改 SSL 配置文件: ssl.cnf, 将所有 YOUR_开头的变量值替换为真实值.


Note that countryName must be two characters. If it is not two characters, certificate creation will fail. Here’s what the ssl.cnf file would look like, replacing country, state, locality with your respective info.


请您注意国家名必须是俩个字符。如果不是俩个字符,证书可能会创建失败。单击这里你将会看到 ssl.cnf 是什么样子的,替换你相对应的国家、洲、地区的信息


步骤 3: 将下面文件设置为可执行的属性:


chmod +x generate.sh


步骤 4: 运行脚本,生成证书:


./generate.sh


步骤 5: 过程中你会被提示输入一些信息:


1.提示输入 product ID, 请输入 my_device


2.提示输入 serial number, 请输入 123456


3.提示输入 password, 请输入你希望的密码 ,例如: talktome (也可以留空)


步骤 6: 编辑 Node.js server 的配置文件


文件的位置在:


<REFERENCE_IMPLEMENTATION>/samples/companionService/config.js.


进行下列变更:


  • 设置 sslKey to                                                                                                                 <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/server/node.key

  • 设置 sslCert to                                                                                                              <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/server/node.crt

  • 设置 sslCaCert to                                                                                                 <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/ca/ca.crt


注意: 不要使用 ~ 来代表根目录. 必须使用绝对路径.


因此, 不使用~/documents/samples, 而用/home/pi/documents/samples.


步骤 7:编辑 JAVA 客户端的配置文件


这个配置文件在以下位置:


<REFERENCE_IMPLEMENTATION>/samples/javaclient/config.json.


做出以下配置:


  • 设置 companionApp.sslKeyStore 到                                                          <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/server/jetty.pkcs12

  • 设置 companionApp.sslKeyStorePassphrase 到                                                                                                                      上述第五步中证书生成代码中的密码

  • 设置 companionService.sslClientKeyStore 到                                                              <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/client/client.pkcs12

  • 设置 companionService.sslClientKeyStorePassphrase 到                                                                                                       上述第五步中证书生成代码中的密码

  • 设置 companionService.sslCaCert to 到                                                       <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/ca/ca.crt


5 – 安装依赖包


更改目录到 <REFERENCE_IMPLEMENTATION>/samples/companionService


cd <REFERENCE_IMPLEMENTATION>/samples/companionService


输入下列命令来安装依赖包:


npm instal


6 -安装安全配置文件


1.打开 web 浏览器,并访问以下网址 https://developer.amazon.com/lwa/sp/overview.html



2.在接近页面顶部的位置,在下拉菜单中选择你刚才创建的安全配置然后单击确认



3.进入一个隐私政策地址栏,该地址栏以 http:// 或者 https://开头。在此例子中,你可以进入一个模拟仿真的地址栏例如http://example.com


4.[或者]你也可以上传一个图片。这个图片将被显示在使用者的同意登陆亚马逊网站的页面上。


5.单击保存。



6.然后打开 Alexa Voice Service 示例应用程序安全配置文件,单击显示客户 ID 和客户隐私。这项操作会展示出客户的 ID 和客户的隐私。保存这些值。你将会看到这些图片。




7 – 更新配置文件


通过 VNC 登陆树莓派


步骤 1:更新 config.js。导航到以下的文件然后在一个文本编辑器中打开该文件。


<REFERENCE_IMPLEMENTATION>/samples/companionService/config.js



在该文件中编辑以下几个值 –


  • 客户 ID: 把你在前几个步骤里复制的客户 ID 以字符串的形式粘贴在客户 ID 中。

  • 客户秘密: 把你在前几个步骤里复制的客户机密以字符串的形式粘贴在客户机密中。

  • 产品: 产品的对象包含一个你在开发者门户创建的与产品类别 ID 一致的密钥和一个属于一系列特定的产品标志符的数值。如果你是根据以上的指导操作的,产品序列 ID 是 my device。那个独特的产品序列号可能是任何数字类型的字符串,比如说 123456。以 JSON 产品为例:products:{“my_device”: [“123456”]}



保存文件。


步骤 2:更新 config.json。 导航到以下的文件然后在一个文本编辑器中打开该文件。


<REFERENCE_IMPLEMENTATION>/samples/javaclient/config.json


在文件中编辑以下值:


  • 产品 ID : 以字符串的形式输入 my_device

  • dsn: 输入一个数字型的字符串,这个字符串是你在服务器端的 config.js 页面中用来描述产品对象里的产品标志符数值。例如:123456。

  • provisioning 方法: 输入 companionService。



保存文件。


步骤 3: 准备 pom.xml 文件


到下面的文件同时在文本编辑器中打开该文件。


<REFERENCE_IMPLEMENTATION>/samples/javaclient/pom.xml


增加以下的代码在 pom.xml 文件中< 依赖性 >部分:


<dependency>


<groupId>net.java.dev.jna</groupId>


<artifactId>jna</artifactId>


<version>4.1.0</version>


<scope>compile</scope>


</dependency>



8 – 运行服务器


通过 VNC 登陆树莓派


在你的 windows 终端或者命令提示符中打出以下代码:


cd <REFERENCE_IMPLEMENTATION>/samples/companionService


npm start




你已经成功开启这个服务器,并且运行在端口 3000 上。


9 – 开启客户端


打开一个新的 Window 终端或者选项卡(在 Raspbian 中 输入 SHIFT+CTRL+TAB)


cd <REFERENCE_IMPLEMENTATION>/samples/javaclient



搭建应用平台


在你搭建 app 平台之前,确认项目是正确的同时所有必要的信息都是有效的。你可以通过执行以下的代码来确认:


mvn validate



通过执行以下代码下载依赖性文件并且搭建应用平台:


mvn install


当安装已经完成时,你在终端上可以看到“成功创建”的信息。



执行客户端的应用:


现在可以输入以下的脚本执行客户端的应用:


mvn exec:exec


10 -从亚马逊登陆页面中获得权限


1.当你执行客户端时,window 桌面可能会弹出一个类似于以下文本的讯息:


“通过访问以下网址注册你的设备,然后请跟随指令操作:https://localhost:3000/provision/d340f629bd685deeff28a917 一旦完成了请单击 OK”



从弹出的窗口中复制 URL 地址然后粘贴到 web 浏览器。示例:以下为用来复制和粘贴的 URL 地址


https://localhost:3000/provision/d340f629bd685deeff28a917



注意:由于使用的是自签名证书,你将看到一个关于不安全网页的警告。这是一个意外。在测试的时候可以忽略这个警告,该网页是安全的。


2.将会跳转到亚马逊的登陆页面。输入你的亚马逊证书。



3.将跳转到开发者权限页面,确认许可你的设备可以通过刚才设置的安全配置文件。



单击 Okay


4.你现在将会再次跳转到一个以https://localhost:3000/authresponse开始的后面跟着查询字符串的 URL 地址栏。这个网页的主体部分将说明设备已经准备好



5.回到 Java 应用然后单击 OK 按钮。这个客户端现在已经可以接受 Alexa 请求。



6.单击开始音频按钮然后在开始讲话之前等待音频提示。在你听到音频提示前会花费一到二秒



当你完成语音时,单击停止音频的按钮。



现在开始与 Alexa 交谈


询问天气:单击开始音频的按钮。


你:今天西雅图的天气怎么样? 单击停止音频按钮。


Alexa:现在西雅图的气温报告。


你可以询问 Alexa 一些有意思的问题


在单击了“开始音频”之后,一旦你听见了音频提示,下面是一些问题你可以尝试去和 Alexa 交流


要求歌曲回播: 播放 Bruce Springsteen


常识知识:太阳的质量是多少克?


极客:机器人的三定律是什么?


娱乐: 你可以跳 rap 麽?


设置定时期: 设置一个俩分钟的定时期


设置闹钟: 设置一个早上 7:30 的闹钟


更多的关于音乐回放的功能  “前一首”,“播放/暂停”,和“下一首”按钮在 Java 客户端交互界面上被用来展示音乐按钮事件。你可以使用音乐按钮而不是与 Alexa 讲话来改变播放列表的顺序。比如说,你可以按“播放/暂停”按钮来暂停和重复开始一首在音轨上的音乐。


为了更好的展示“播放/暂停”按钮,你可以说出以下命令: 在 iHeartRadio 上播放 DC101,然后按“播放/暂停”按钮。如果按钮按下,这首音乐会终止。再次按下“播放/停止”按钮重新开始这首音乐。


11 – 常见问题解答


我有一个与 AVS 一起工作的树莓派,但是我不能从 Alexa 中听到音频回应


检查看一下是否你正在看通过终端的响应和是否在你的 Alexa 应用上看到了响应卡。如果是的,你可能需要强制音频通过 local 3.5mm 插孔,而不是 HDMI 输出(这可能发生即使你没有一个 HDMI 显示器插入)。


为了促使音频通过 local 3.5mm 插孔,打开终端,然后输入以下代码:


sudo raspi-config


可以查看一下链接Raspberry Pi Audio Configuration


如何寻找树莓派的 IP 地址?


hostname -I


无法获取错误


在你安装 VLC 时,如果遇到了一些无法获取的错误,试图输入以下代码


sudo apt-get update


sudo apt-get upgrade


sudo apt-get install vlc-nox vlc-data


在 npm 上有一些问题


如果你在安装结点后遇到一些“npm 无法找到”的问题(树莓的老版本结点), 尝试一些以下操作:


sudo apt-get update


sudo apt-get upgrade


sudo apt-get install npm


如果我不能为派找到网络接口怎么办?


可以查看以下 URL 了解如何在派上建立笔记本电脑的 wifi 和网络接口的连接https://www.hackster.io/Anwaarullah/sharing-wifi-with-raspberry-pi-using-a-lan-cable-ae1f44


ssl.cnf 文件是什么样的?


单击这里将会看到 ssl.cnf 文件是什么样子的,并且根据你自己的国家、洲、地区来相应的替换


 “无法连接到配套服务”的错误


这可能是因为以下三种情况的其中一种


1.不良证书– 这可能是下面情况的一个结果


  • 不良的 ssl cnf 文件(可以查看一下常见问题是什么样的)

  • 不正确的 java 版本

  • 在 config.json 文件中可能有错误的密码


2.不正确的产品 ID -确保以下值是一致的-


  • 设备型号的信息-在亚马逊开发人员门户信息上的设备型号ID

  • 在 SSL 证书产生的产品 ID 号(当被generate.sh触发时)

  • 在 config.json 上的产品 ID

  • 在产品上的“密码”和在config.js页面上 “密码”:[“值”]


3.不正确的 DSN- 确保这些值是一致的


  • 在 config.json 页面上的 dsn

  • 在产品上的“值”和在config.js页面上 “密码”:[“值”]


4.配套服务没有运行


作者介绍:



王毅


亚马逊 AWS 中国云解决方案架构师,获得了 AWS 解决方案架构师专业级别的认证。专门负责在国内推广 AWS 云平台技术和各种解决方案。有超过 13 年的 IT 领域咨询和实施经验,专注于云计算领域。在此之前,他是 IBM 全球服务服务部门的资深架构师经理,负责咨询和实施 SOA,企业系统集成,云计算平台等解决方案在中国及亚太地区的推广和服务咨询工作。


TAGS:


Alexa 语音服务


,


Echo


,


人工智能


,


大咖专栏


,


最新发布



View Comments



中国版


德国版


日本版


韩国版


葡萄牙版


俄罗斯版


西班牙版


美国版


[


亚马逊 AWS 官方博客目录


__](https://aws.amazon.com/cn/blogs/china/all/?nc1=b_nrp)


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/raspberry-alexa/


2019-11-20 08:001117

评论 1 条评论

发布
用户头像
格式都乱了
2020-07-05 22:32
回复
没有更多了
发现更多内容

网络模型及性能优化

天天向上

极客大学架构师训练营

第八周总结

睁眼看世界

极客大学架构师训练营

性能优化学习笔记

Yangjing

极客大学架构师训练营

第四周学习总结

Griffenliu

架构师训练营第二期 Week 4 总结

bigxiang

极客大学架构师训练营

一个典型的大型互联网应用系统使用了哪些技术方案和手段

皮蛋

第八周课后练习

饭桶

第八周作业

Geek_ce484f

极客大学架构师训练营

第八周总结

orchid9

第八周作业

orchid9

第四周-作业一

ray-arch

极客大学架构师训练营

架构师训练营第八周总结

xs-geek

极客大学架构师训练营

第八周作业

Geek_ce484f

极客大学架构师训练营

架构一期第八周作业

Airs

架构 2 期 - 第四周作业(1)

浮生一梦

极客大学架构师训练营 第四周作业 2组

一篇文章搞懂 @weakify 和 @strongify

疯清扬

objective-c weak weakify strongify 循环引用

架构师训练营第二期 Week 4 作业

bigxiang

极客大学架构师训练营

还有人不知道JVM调优参数?一次性打包发给你

田维常

JVM jvm调优

架构训练营第四周课后作业

Sandman

极客大学架构师训练营

架构师训练营 1 期第 8 周:性能优化(二)- 作业

piercebn

极客大学架构师训练营

架构师训练营第八周作业

xs-geek

极客大学架构师训练营

关于“区块链+”的所有关键点

CECBC

区块链 监管

典型互联网应用系统使用的技术方案和手段

jorden wang

第八周学习总结

饭桶

并发压力&响应时间&系统吞吐量

Yangjing

极客大学架构师训练营

第八周作业总结

Geek_ce484f

极客大学架构师训练营

架构师训练营 - 第八周作业

一个节点

极客大学架构师训练营

架构师训练营 - 第八周总结

一个节点

极客大学架构师训练营

《JavaScript高级程序设计》.pdf

田维常

Java 电子书

国产大数据系统通过验收,”核高基”基础软件再下一城

陈泽云

人工智能 大数据 知识产权 操作系统

架构师训练营第四周系统架构总结

Sandman

极客大学架构师训练营

打造DIY版Echo:树莓派+ Alexa 语音服务_其他_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章