Node — 第五天

1. MySQL數據庫

phpstudy 數據庫服務器及圖形化軟件 軟件鏈接
鏈接:https://pan.baidu.com/s/1F8wdoMstHAJkINfDKDejsw
提取碼:xl3k

數據庫對于我們前端同學來說,就是一個了解。

對于不會變化的數據(省、市、縣),我們可以保存到json文件中。

對于經常變化的數據,我們建議保存到數據庫中。

1.1 什么是數據庫

數據庫 (database) 是用來組織、存儲和管理數據的倉庫。 當今世界是一個充滿著數據的互聯網世界,充斥著大量的數據。數據的來源有很多,比如出行記錄、消費記錄、

瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。

為了方便管理互聯網世界中的數據,就有了數據庫管理系統的概念(簡稱:數據庫)。用戶可以對數據庫中的數 據進行新增、查詢、更新、刪除等操作。

  • 增刪改查
    • 新增
    • 刪除
    • 修改
    • 查詢

1.2 常見的數據庫及分類

市面上的數據庫有很多種,最常見的數據庫有如下幾個:

  • MySQL 數據庫(目前使用最廣泛、流行度最高的的開源免費數據庫;)
  • Oracle 數據庫(收費)
  • SQL Server 數據庫(收費)
  • Mongodb 數據庫(Community + Enterprise)

其中,MySQL、Oracle、SQL Server 屬于傳統型數據庫(又叫做:關系型數據庫 或 SQL 數據庫),這三者的 設計理念相同,用法比較類似。

而 Mongodb 屬于新型數據庫(又叫做:非關系型數據庫 或 NoSQL 數據庫),它在一定程度上彌補了傳統型 數據庫的缺陷。

1.3 MySQL簡介

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品

我們常說數據庫,其實只是一個泛指。那么數據庫的結構是怎樣的呢?

  • 數據庫服務器
    • 數據庫(一般來說,一個項目,都會使用一個獨立的數據庫)
      • 數據表(真正存儲數據的地方)
        • 行與列(每一行代表一條數據。列又叫做字段)

在這里插入圖片描述

真正存儲數據的是數據表。數據表和我們見過的Excel表格結構基本相同。

數據表的結構和excel一模一樣。

id(不允許重復)nameagesextel
1王宇2313200008888
2王宇2313300008888
3裴志博2518866669999

2 安裝MySQL

MySQL 服務器軟件 ---- 存儲數據,可以創建數據庫、數據表

MySQL圖形化管理工具 — 可以使用它管理(創建、增刪改查等等)數據庫

2.1 安裝MySQL服務軟件

安裝wampserver

安裝過程,略

2.2 安裝操作MySQL的圖形化工具(Navicat)

圖形化的管理工具,有很多種

  • mysql-workbeach(英文版,沒有中文版)
  • Navicat

前面已經安裝了MySQL軟件。那么我們如何管理或者說使用它呢,對于我們來說,還需要安裝一個管理MySQL的工具,它就是 Navicat

MySQL服務和圖形化工具的關系

在這里插入圖片描述

安裝過程略,但要記住你的安裝目錄。

破解:將補丁中的 “navicat.exe” 復制到你的安裝目錄中,覆蓋原理的文件即可

3 Navicat使用

3.1 連接到MySQL服務器

在這里插入圖片描述

在這里插入圖片描述

3.2 創建數據庫

在這里插入圖片描述
在這里插入圖片描述

3.3 創建數據表

比如創建一個學生信息表:

id(不允許重復)nameagesextel
1王宇2313200008888
2王宇2413300008888
3裴志博2518866669999

對于一張表,最重要的是表頭的設計

對于數據庫中的數據表,最重要的設計也是表頭,只不過在數據庫中把表頭叫做字段

名(表頭)類型長度不是null其他
idint🗝勾選自動遞增
namevarchar10
ageint
sexchar1
  • id – 自動遞增 – √

  • 最后保存,填表名 student

  • 其他補充點

    • 數據庫中的數字類型
      • tinyint -128~127
      • smallint -65535 ~ 65535
      • int -21億 ~ 21億
      • bigint 更大
    • 數據庫中的字符串類型
      • varchar - 變長字符串類型
      • char - 定長字符串類型

3.4 導入導出數據表

  • 導出

    • 在數據表名字上,比如 student 上,右鍵 --> 轉儲SQL文件 --> 結構和數據,選擇保存位置保存即可。
  • 導入

    • 在數據庫名上面 --> 右鍵 --> 運行SQL文件 --> 選擇SQL文件,運行即可完成導入。
    • 導入注意事項,表名不能重復。

SQL語句(重點)

SQL(英文全稱:Structured Query Language)是結構化查詢語言,專門用來訪問和處理數據庫的編程語言。

三個關鍵點

  1. SQL 是一門數據庫編程語言
  2. 使用 SQL 語言編寫出來的代碼,叫做 SQL 語句
  3. SQL 語言只能在關系型數據庫(例如 MySQL、Oracle、SQL Server)中使用。非關系型數據庫(例如 Mongodb) 不支持 SQL 語言

SQL能做什么

  • 從數據庫中查詢數據
  • 向數據庫中插入新的數據
  • 更新數據庫中的數據
  • 從數據庫刪除數據
  • 可以創建新數據庫
  • 可在數據庫中創建新表
  • 可在數據庫中創建存儲過程、視圖
  • etc…

4. 數據查詢

語法格式:

  • SQL語句,不區分大小寫。
-- 基本的查詢語法
SELECT 字段1,字段2,... FROM 表名
select 字段,字段,.... from 表名-- 查詢所有的字段
SELECT * FROM 表名-- 帶條件的查詢
SELECT * FROM 表名 [WHERE 條件] [ORDER BY 排序字段[, 排序字段]] LIMIT [開始位置,]長度.....

4.1 基本查詢

格式: select 字段名1, 字段名2,… from 表名

案例1: 查詢所有英雄的姓名和昵稱

select name,nickname from heroes

案例2: 查詢全部英雄的全部信息

select * from heroes

4.2 帶where子句的查詢

select field1, field2… from 表名 查詢表中的所有數據

where 可以使用條件來篩選查詢出的結果

在這里插入圖片描述

-- 查詢id小于10的英雄
-- select * from heroes where 條件
-- select * from heroes where id<10-- 查詢id小于20的女英雄
-- select * from heroes where id<20 and sex='女'-- 查詢年齡大于等于20小于等于30的英雄
-- select * from heroes where age>=20 and age<=30
-- select * from heroes where age between 20 and 30

4.3 模糊查詢

通配符:

  • %: 代表任意長度(包括0)的任意字符

  • _: 代表1位長度的任意字符

like: 在執行模糊查詢時,必須使用like來作為匹配條件

-- 查詢名字中帶有 “斯” 的英雄
-- select * from heroes where name like '%斯%'-- 查詢名字的最后一個字是 “斯” 的英雄
-- select * from heroes where name like '%斯'-- 查詢名字中帶有 “斯” ,并且要求 “斯”前面只能有一個字的英雄
select * from heroes where name like '_斯%'

4.34 統計查詢

  • max 查詢最大值 select max(age) from heroes
  • Min 查詢最小值 select min(age) from heroes
  • avg 查詢平均值 select avg(age) from heroes
  • sum 查詢總和(查詢所有英雄的年齡之和) select sum(age) from heroes
  • count 查詢總記錄數(查詢共計有多少個英雄) select count(*) cc from heroes
-- 查詢所有英雄中年齡最大的的年齡
-- select max(age) from heroes-- 查詢所有英雄中年齡最小的的年齡
-- select min(age) from heroes-- 查詢所有英雄年齡的平均值
-- select avg(age) from heroes-- 查詢所有英雄的年齡之和
-- select sum(age) from heroes-- 查詢共計有多少個英雄
-- select count(*) from heroes-- 查詢共計有多少英雄,用cc表示
-- select count(*) cc from heroes

4.4 查詢結果排序

order by 可以對查詢結果按某個字段進行升序或者降序排列

  • 升序 asc (默認值)
  • 降序 desc

可進行排序的字段通常是 整型 英文字符串型 日期型 (中文字符串也行,但一般不用)

-- select * from heroes order by 排序字段 asc/desc
-- asc 默認值,可以省略,表示升序
-- desc,表示降序-- 查詢所有的英雄,按年齡升序排序
-- select * from heroes order by age asc
-- select * from heroes order by age-- 查詢所有的英雄,按年齡降序排序
-- select * from heroes order by age desc-- 查詢所有的英雄,先按年齡降序排序;如果年齡相同的,再按id降序排序
-- select * from heroes order by age desc, id desc-- 查詢年齡大于50歲的英雄,并按年齡降序排序
select * from heroes where age>50 order by age desc

注意:如果SQL語句中,有where和order by,where一定要放到order by之前

4.5 限制查詢結果

limit 用來限制查詢結果的起始點和長度

  • 格式: limit start, length
    • start: 起始點。 查詢結果的索引,從0開始。 0代表第一條數據。如果省略start,則默認表示從0
    • length: 長度
-- 查詢所有英雄中前5個英雄
-- select * from heroes limit 起始位置, 長度
-- select * from heroes limit 0, 5
-- select * from heroes limit 5-- 查詢所有英雄中,第6到10個英雄
-- select * from heroes limit 5, 5-- 查詢年齡最大的3個英雄
-- select * from heroes order by age desc limit 3-- 查詢年齡最大的3個女英雄
select * from heroes where sex='女' order by age desc limit 3

注意:where、order by、limit如果一起使用,是有順序的,where在最前面、其次是order by、limit要放到最后。另外三者之間沒有and之類的

4.6 小結

  • 控制查詢的列數
    • select 字段, 字段, … from heroes ---- 選擇查詢指定的列
    • select * from heroes ---- 查詢所有的列
  • 控制查詢的行數
    • where 條件
      • where id>3
      • where id>3 and age<30
      • where id<3 or sex=‘男’
      • where name like ‘%斯%’
    • order by 字段 排序規則
      • order by age asc
      • order by age desc
    • limit 起始位置, 長度
      • limit 0, 3 相當于 limit 3
      • limit 3, 3

select 字段 from 表名 [where 條件] [order by 排序字段 排序規則] [limit 起始位置,長度]

select count(*) as total from 表名 – 查詢總記錄數

5. 添加數據

基本的格式: insert into 表名 …

方式一:指定字段和值,只要字段和值對應即可。和順序無關

insert into heroes (字段, 字段, ...) values (,, ...)
insert into heroes (nickname, age, name) values ('虛空恐懼', 98, '科加斯')

方式二:和順序有關,因為沒指定字段,所以值必須是所有的值,而且順序和表中字段的順序要一致

insert into heroes values (null, '拉克絲', '光輝女郎', '女', 28)

方式三:使用set里設置新數據的值,沒有順序關系

insert into heroes set 字段=, 字段=, ....
insert into heroes set name='李青', nickname='盲僧'

6. 修改數據

格式:

update 表名 set 字段1=值1, 字段2=值2,... where 修改條件

修改表中的哪一條(幾條)數據的 字段1=值1…

不指定修改條件會修改所有的數據

-- 加條件修改
update heroes set age=28, skill='在地上打滾' where id=19
-- 如果不指定條件,則會修改所有的行
update heroes set sex='妖'

7. 刪除數據

格式: delete from 表名 where 刪除條件

注意:不指定條件將刪除所有數據

-- delete from heroes where id=19
-- 不加條件,將刪除所有的數據,危險操作
-- delete from heroes

drop table stu; – 刪除stu表

drop database heroes – 刪除庫,加入反引號可以防止出現問題,否則MySQL可能會將70當做關鍵字或其他意思解釋

小結

  • 添加
    • insert into 表名 set 字段=值, 字段=值, 字段=值, …
  • 更新
    • update 表名 set 字段=值, 字段=值, 字段=值 where 條件
  • 刪除
    • delete from 表名 where 條件

8. node中的mysql模塊

8.1 mysql模塊的作用

mysql模塊是一個第三方模塊,專門用來操作MySQL數據庫。 可以執行增刪改查操作。

# 如果前面沒有安裝過其他模塊,需要先初始化
npm i mysql

curd: 就代表數據庫的增刪改查

c: create 就是添加 (增)

u: update 就是修改 (改)

r: read 就是查詢 (查)

d: delete 就是刪除 (刪)

8.2 mysql模塊的使用步驟

在Node中使用MySQL模塊一共需要5個步驟:

  1. 加載 MySQL 模塊

  2. 創建 MySQL 連接對象

  3. 連接 MySQL 服務器

  4. 執行SQL語句

  5. 關閉鏈接

// 1. 加載mysql模塊
const mysql = require('mysql');
// 2. 創建連接對象(設置連接參數)
const conn = mysql.createConnection({// 屬性:值host: 'localhost',port: 3306,user: 'root',password: '',database: 'yingxiong'
});// 3. 連接到MySQL服務器
conn.connect();// 4. 完成查詢(增刪改查)
/*
conn.query(SQL語句, [SQL中占位符的值], (err, result, fields) => {err: 錯誤信息result: 查詢結果fields: 當前查詢過程中涉及到的字段信息,一般用不著
});
*/// 5. 關閉連接,釋放資源
conn.end();

8.3 基本的增刪改查

基本的查詢

執行查詢類型的SQL語句,查詢結果(result)是一個數組,數組的每個單元是對象,每個對象就是一條記錄,對象的屬性是數據表的字段名


// 1. 加載mysql
const mysql = require('mysql');// 2. 創建連接對象(填寫連接參數)
const conn = mysql.createConnection({host: 'localhost',port: 3306,user: 'root',password: '',database: 'yingxiong',multipleStatements: true // 表示可以一次性執行多條SQL
})// 3. 連接到MySQL服務器
conn.connect();// 4. 完成查詢
// conn.query(SQL語句, 給占位符的值, 回調函數);/// 4.1 基本的查詢
conn.query('select * from heroes limit 2', (err, result) => {if (err) throw err;console.log(result);
});// 5. 關閉連接
conn.end();

執行增刪改語句

要完成增刪改操作,只需要將SQL語句換成增刪改語句即可

對于增刪改語句,返回的result是一個表示SQL執行結果的對象。其主要屬性如下:

  • insertId 添加時有該屬性,表示新增數據的id
  • affectedRows 受影響行數,表示受影響的行數。增刪改的時候都有該屬性
  • changRows 改變的行數,修改操作的時候,會有該屬性

// 1. 加載mysql
const mysql = require('mysql');// 2. 創建連接對象(填寫連接參數)
const conn = mysql.createConnection({host: 'localhost',port: 3306,user: 'root',password: '',database: 'yingxiong',multipleStatements: true // 表示可以一次性執行多條SQL
})// 3. 連接到MySQL服務器
conn.connect();// 4. 完成查詢
// conn.query(SQL語句, 給占位符的值, 回調函數);/// 4.2 增刪改
conn.query('delete from heroes where id = 1', (err, result) => {if (err) throw err;console.log(result);
});// 5. 關閉連接
conn.end();

8.4 占位符模式的增刪改查

什么是占位符

SQL中的“?” 就是占位符。比如

  • select * from heroes where id > ?
  • insert into heroes set ?
  • update heroes set ? where id = ?
  • delete from heroes where id = ?

如何為占位符傳值

當SQL語句中使用了占位符,則query方法需要使用參數2為這些占位符傳遞實際的值。并且不同的 “?” 需要的值格式也不同。具體要符合下面三種要求:

  1. SQL中有 1 個占位符,則query方法的第二個參數設置為一個值

  2. SQL中有 多 個占位符,則query方法的第二個參數設置為數組,數組中的值按順序分別傳遞給每個占位符

  3. SQL中,如果 字段=值,字段=值...使用 “?” 站位了,則需為這個 “?” 傳遞一個對象,形式如下:

    let val = {// 字段: 值name: '壓縮',nickname: '疾風劍豪',// 其他...
    }
    

有占位符的增刪改查

// 例子一:查詢id小于3的英雄
let sql = 'select * from heroes where id < ?';
conn.query(sql, 3, (err, result) => {if (err) throw err;console.log(result);
});
// 例子二:查詢id小于3的女英雄
let sql = 'select * from heroes where id < ? and sex = ?';
conn.query(sql, [3, '女'], (err, result) => {if (err) throw err;console.log(result);
});
// 例子三:SQL中的 "字段=值, 字段=值..."的位置使用了一個占位符,則需為該占位符傳遞一個對象
// 如果SQL語句中有  字段=值, 字段=值, ....  可以使用一個 ? 表示;并且要為這個問號傳遞一個對象
let sql = 'insert into heroes set ?';
let values = {// 字段: 值name: '艾克',nickname: '時間刺客',age: 34
};
conn.query(sql, values, (err, result) => {if (err) throw err;// console.log(result);if (result.affectedRows > 0) {console.log('添加成功,最新添加的id為:' + result.insertId);} else {console.log('添加失敗');}
});
// 例子四:
// SQL中有兩個占位符,所以要傳遞一個數組
// 第1個問號表示 “字段=值, 字段=值...”,所以為這個問號傳遞一個對象
let sql = 'update heroes set ? where id = ?';
let values = {skill: '時光倒流',sex: '男'
}
conn.query(sql, [values, 36], (err, result) => {if (err) {console.log('修改失敗');} else {console.log('修改成功');}
});

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247991.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247991.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247991.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS10 權限訪問崩潰

手機升級了 iOS10 Beta&#xff0c;然后用正在開發的項目 裝了個ipa包&#xff0c;發現點擊有關 權限訪問 直接Crash了&#xff0c;并在控制臺輸出了一些信息&#xff1a; This app has crashed because it attempted to access privacy-sensitive data without a usage descr…

Node — 第六天(前后端分離)及(身份驗證)

綜合應用服務端知識點搭建項目 下載安裝所需的第三方模塊 npm init -y npm i express cors mysql # express 用于搭建服務器 # cors 用于解決跨域 # mysql 用于操作數據庫# 后面用到什么&#xff0c;再下載創建app.js 之前&#xff0c;我們開啟一個服務器&#xff0c;js文件…

繼承上機作業

1、實現如下類之間的繼承關系&#xff0c;并編寫Music類來測試這些類 2、編寫一個Java應用程序&#xff0c;該程序包括3個類&#xff1a;Monkey類、People類和主類E。要求&#xff1a; (1) Monkey類中有個構造方法&#xff1a;Monkey (String s)&#xff0c;并且有個public voi…

ApplePay集成教程

Apple Pay運行環境&#xff1a;iPhone6以上設備&#xff0c;操作系統最低iOS9.0以上&#xff0c;部分信息設置需要iOS9.2以上。目前還不支持企業證書添加。 環境搭建好后可以在模擬器上面運行&#xff0c;xcode7.2.1iPhone6SP9.2系統下&#xff0c;系統會綁定幾種虛擬的銀行卡…

Node — 第七天 (大事件項目接口實現一)

關于JS錯誤處理 node中和mysql中的錯誤處理 node和MySQL提供的方法&#xff0c;已經對錯誤信息進行了封裝&#xff0c;只需要使用 err.message 即可獲取到錯誤信息。 比如&#xff1a; const fs require(fs); // 讀取一個不存在的文件 fs.readFile(abcd.txt, (err, data) …

1.Consul 簡介和環境搭建

1.什么是 Consul Consul 是 service mesh(服務網格)的一個解決方案&#xff0c;它提供了諸如服務發現&#xff0c;配置和隔離等功能的一整套控制平面(control plane)。開發人員可以根據需要單獨使用這些功能點&#xff0c;也可以將他們整合成為一個完整的service mesh。Consul …

Node — 第八天 (大事件項目接口實現二)

如何處理MySQL的錯誤 MySQL的錯誤信息&#xff0c;可以通過err來獲取。這是沒有問題的。 但是&#xff0c;我們加入了Promise&#xff0c;Promise中的錯誤&#xff0c;在外部是獲取不到的&#xff0c;只能使用Promise相關方法來獲取錯誤信息。 解決方法一 使用 JS原生的 tr…

在local模式下的spark程序打包到集群上運行

一、前期準備 前期的環境準備&#xff0c;在Linux系統下要有Hadoop系統&#xff0c;spark偽分布式或者分布式&#xff0c;具體的教程可以查閱我的這兩篇博客&#xff1a; Hadoop2.0偽分布式平臺環境搭建 Spark2.4.0偽分布式環境搭建 然后在spark偽分布式的環境下必須出現如下八…

Effective Objective-C 2.0 初讀小結

1.對于OC中的對象聲明例如NSObject *obj1 [NSObject new];, obj1這個指針變量是分配在棧上的, 他指向的是這一個分配在堆上面的實例對象, 如果進行下面的賦值操作NSObject *obj2 obj1;,那么并沒有新生成一個實例對象, 只是在棧上分配了一個新的指針變量obj2, 而obj2和obj1指向…

APS系統對制造企業到底有多重要?看完這5點你就明白了

第一個問題&#xff1a;需要APS嗎&#xff1f; APS是否重要&#xff0c;不能從其所體現的軟件工具或系統角度來說&#xff0c;而應該從業務角度來說。對于制造工廠和車間的運行而言&#xff0c;計劃是核心的業務。就如同那句俗話說的&#xff0c;沒有規矩不成方圓&#xff0c;領…

Node — 第九天 (大事件項目接口實現三)

文章管理接口 設計數據表 添加文章接口 編寫接口&#xff0c;使用postman模擬提交formdata類型的數據 在article.js 中&#xff0c;加入 /add 路由 postman模擬提交formdata類型的數據 multer處理文件上傳 下載安裝multer 加載模塊 const multer require(multer) 配置上…

Python之爬蟲-段子網

Python之爬蟲-段子網 https://ishuo.cn #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requestsresponse requests.get(https://ishuo.cn) data response.text print(data) r re.findall(<div class"content">(.*?)</div>,data) f…

Node — 第九天 (ES6降級 and 發布屬于自己的[第三方模塊]包)

ES6降級處理 因為 ES 6 有瀏覽器兼容性問題&#xff0c;可以使用一些工具進行降級處理&#xff0c;例如&#xff1a;babel 降級處理 babel 的使用步驟 安裝 Node.js命令行中安裝 babel配置文件 .babelrc運行命令&#xff0c;完成降級 項目初始化 (項目文件夾不能有中文) npm …

Vue — 第一天(極速入門)

基本介紹 vue是什么 目標&#xff1a;了解vue的一些基礎概念。 官方網站&#xff1a; https://cn.vuejs.org/ vue是&#xff1a;漸進式javascript框架。 兩組概念 &#xff08;1&#xff09;框架 庫。只提供一些API給開發者使用。jquery 是一個js庫框架。擁有自己的規則和…

python類和實例化

簡答介紹類和實例python是面向對象的語言&#xff0c;最主要的就是類和實例&#xff0c;類是抽象的模版創建一個類class Studen(object),class 后接類名&#xff0c;定義的類名大些字母開頭&#xff0c;object為類的繼承&#xff0c;沒有合適的繼承類用object類&#xff0c;這是…

pjsip庫分析

http://blog.chinaunix.net/space.php?uid287570&doblog&cuid728411 如果你對SIP/VoIP技術感興趣,哪希望你不要錯過:),如果你對寫出堪稱優美的Code感興趣,那么你也不可錯過:)這期間我想分析一下一個實際的協議棧的設計到實現的相關技術,算是自己的一個學習經歷記錄.最…

Vue — 第二天(v-model和過濾器)

VUE-02-v-model和過濾器 昨日反饋與回顧 代碼倉庫的問題 不要修改你克隆下來的倉庫中任意代碼&#xff0c;否則&#xff0c;下次pull時&#xff0c;可能會報錯&#xff0c;從而得到不到最新的代碼。 如果已經遇到了這個沖突&#xff1a; 解決沖突(git 中解決沖突)把關鍵代碼…

Count

題目鏈接&#xff1a;點這里 題目意思&#xff1a;令f(x)表示<x的正整數中與x互質的數的平均數*2&#xff0c;求sigma(f(i)^k),L<i<R Solution: 首先&#xff0c;我們定義\(S(x)\sum_{gcd(a,x)1}a\)&#xff0c;因為gcd(a,x)1&#xff0c;所以對于任意a&#xff0c;滿…

牛人iOS開發系列--音頻播放、錄音、視頻播放、拍照、視頻錄制

概覽 隨著移動互聯網的發展&#xff0c;如今的手機早已不是打電話、發短信那么簡單了&#xff0c;播放音樂、視頻、錄音、拍照等都是很常用的功能。在iOS中對于多媒體的支持是非常強大的&#xff0c;無論是音視頻播放、錄制&#xff0c;還是對麥克風、攝像頭的操作都提供了多套…

Vue — 第三天(計算屬性和json-server)

計算屬性 使用場景 如果一個結果需要依賴data中的數據&#xff0c;但是需要經過一些邏輯處理&#xff0c;才能得到你想要的數據。此時就可以使用計算屬性。 例如&#xff1a;要對給定的字符串做翻轉處理之后再來顯示。 <div id"app"><!-- 此處邏輯復雜 …