亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

【倉(cāng)頡語(yǔ)言入門 · 第二篇 第 15 課】

【倉(cāng)頡語(yǔ)言入門 · 第二篇 第 15 課】 【倉(cāng)頡語(yǔ)言入門 · 第二篇 第 15 課】綜合實(shí)戰(zhàn)把 Todo 清單搬上數(shù)據(jù)庫(kù)導(dǎo)航上一課 第 14 課 手寫 DAO 數(shù)據(jù)訪問(wèn)層 → 本課 → 下一課 第 16 課 反射本課內(nèi)容量正文約 380 行全篇約 580 行含導(dǎo)航 / FAQ / 預(yù)告 / 二維碼骨架。單課只聚焦 1 個(gè)知識(shí)點(diǎn)把前 8 課講過(guò)的 SQL 能力建表、CRUD、預(yù)編譯、事務(wù)、DAO串成一個(gè)完整的小項(xiàng)目不引入新語(yǔ)法、新概念、新依賴。本課本身就是綜合實(shí)戰(zhàn)項(xiàng)目照著跑通、輸出和教程對(duì)上、自己改改再跑一遍就是最好的練習(xí)——不再額外設(shè)課后練習(xí)題。代碼下載本課完整項(xiàng)目打包在 lesson15_todo.zip一、從文件到數(shù)據(jù)庫(kù)為什么又來(lái)一次 Todo你可能會(huì)問(wèn)Todo 清單有啥好寫的第一篇第 29 課不就是一個(gè)文件版 Todo 清單嗎那我們回頭看看第 29 課的方案用std.fs讀寫一個(gè) txt 文件每條 Todo 一行業(yè)務(wù)邏輯全堆在main里沒(méi)有分層Todo 本身是struct Todo(title: String, done: Bool)這樣的純數(shù)據(jù)讀寫文件一卡整個(gè)程序就卡現(xiàn)在換一個(gè)版本存到數(shù)據(jù)庫(kù)里。這次我們用數(shù)據(jù)庫(kù)做存儲(chǔ)層其他一切——項(xiàng)目骨架、數(shù)據(jù)模型、業(yè)務(wù)邏輯——全和第 29 課一模一樣。這就是本課要講的核心思想存儲(chǔ)層可以替換業(yè)務(wù)邏輯不必跟著換。文件版、數(shù)據(jù)庫(kù)版、未來(lái) Redis 版——對(duì)用戶想加一條 Todo這件事來(lái)說(shuō)業(yè)務(wù)邏輯永遠(yuǎn)是把這行字寫進(jìn)去 記一個(gè)已完成標(biāo)記。至于寫到哪、怎么寫那是存儲(chǔ)層的事。這種分層在中大型項(xiàng)目里隨處可見(jiàn)電商系統(tǒng)換了個(gè)新數(shù)據(jù)庫(kù)、消息系統(tǒng)換了個(gè)新中間件、緩存換了個(gè)新廠商——上面的業(yè)務(wù)代碼一行不動(dòng)。本課通過(guò)一個(gè)極簡(jiǎn)的 Todo 項(xiàng)目讓你親手走一遍這個(gè)分層。二、表設(shè)計(jì)先建表再開(kāi)干項(xiàng)目涉及兩個(gè)實(shí)體、兩張表用戶user和他的 Todotodo。關(guān)系很簡(jiǎn)單——一個(gè)用戶可以有很多 Todo一對(duì)多。建表 SQL和第 08 課 DDL 章節(jié)講的語(yǔ)法一致CREATETABLEuser(idBIGINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(64)NOTNULLUNIQUE);CREATETABLEtodo(idBIGINTPRIMARYKEYAUTO_INCREMENT,user_idBIGINTNOTNULL,titleVARCHAR(256)NOTNULL,doneTINYINT(1)NOTNULLDEFAULT0);設(shè)計(jì)說(shuō)明user的name上加了UNIQUE約束——不允許兩個(gè)用戶重名todo.done用TINYINT(1)存 0/1False/True和數(shù)據(jù)庫(kù) BOOLEAN 的常見(jiàn)寫法對(duì)齊沒(méi)有加外鍵約束FOREIGN KEY (user_id) REFERENCES user(id)。教學(xué)簡(jiǎn)化我們用應(yīng)用層保證user_id有效DAO 里先查 user 是否存在不搞數(shù)據(jù)庫(kù)級(jí)聯(lián)。初學(xué)者階段能跑通比完美約束重要如果想跟著本課演示的流程走先往表里插兩條種子數(shù)據(jù)INSERTINTOuser(name)VALUES(zhangsan),(lisi);INSERTINTOtodo(user_id,title,done)VALUES(1,學(xué)第 15 課,0),(1,寫教程代碼,1),(2,買牛奶,0);插完后手動(dòng)查一下確認(rèn)mysql SELECT * FROM user; id name 2 lisi 1 zhangsan mysql SELECT * FROM todo; id user_id title done 1 1 學(xué)第 15 課 0 2 1 寫教程代碼 1 3 2 買牛奶 0三、Model 類純數(shù)據(jù)搬運(yùn)工Model 層只做一件事把數(shù)據(jù)庫(kù)里的一行數(shù)據(jù)搬到內(nèi)存里變成一個(gè)可以在程序里自由傳遞的對(duì)象。它不碰數(shù)據(jù)庫(kù)、不做業(yè)務(wù)決策。class User { let id: Int64 let name: String init(id: Int64, name: String) { this.id id this.name name } } class Todo { let id: Int64 let userId: Int64 let title: String var done: Bool init(id: Int64, userId: Int64, title: String, done: Bool) { this.id id this.userId userId this.title title this.done done } }這兩個(gè)類的寫法和第 14 課 Account 類完全一致let表示創(chuàng)建后不變User 的 id、name 創(chuàng)建后不該變Todo 的 id、userId、title 同理var表示可以改Todo 的 done 可以從未完成變完成。Model 層的設(shè)計(jì)原則越薄越好。別在里面寫任何 SQL、任何業(yè)務(wù)判斷保持純粹的數(shù)據(jù)容器。四、兩個(gè) DAO單表操作的套路Data Access ObjectDAO層只負(fù)責(zé)一件事把 SQL 語(yǔ)句翻譯成 DAO 方法。一張表對(duì)應(yīng)一個(gè) DAO 類每個(gè)方法代表一條可被復(fù)用的 SQL。UserDaoclass UserDao { let conn: Connection init(conn: Connection) { this.conn conn } // 按名字查用戶登錄場(chǎng)景常用 func findByName(name: String): ?User { let stmt conn.prepareStatement(SELECT id, name FROM user WHERE name ?) stmt.set(1, name) let rs stmt.query() var result: ?User None if (rs.next()) { result Some(User(rs.getInt64(1), rs.getString(2))) } rs.close() stmt.close() return result } // 新建用戶返回新用戶的 id func insert(name: String): Int64 { let stmt conn.prepareStatement(INSERT INTO user (name) VALUES (?)) stmt.set(1, name) let r stmt.update() stmt.close() return r.lastInsertId } }TodoDaoclass TodoDao { let conn: Connection init(conn: Connection) { this.conn conn } // 按 id 查單條 Todo func findById(id: Int64): ?Todo { let stmt conn.prepareStatement( SELECT id, user_id, title, done FROM todo WHERE id ?) stmt.set(1, id) let rs stmt.query() var result: ?Todo None if (rs.next()) { let rawDone rs.getInt64(4) let doneFlag: Bool rawDone ! 0 result Some(Todo(rs.getInt64(1), rs.getInt64(2), rs.getString(3), doneFlag)) } rs.close() stmt.close() return result } // 列出某用戶的全部 Todo func listByUser(userId: Int64): ArrayTodo { let stmt conn.prepareStatement( SELECT id, user_id, title, done FROM todo WHERE user_id ? ORDER BY id) stmt.set(1, userId) let rs stmt.query() let list ArrayListTodo() while (rs.next()) { let rawDone rs.getInt64(4) let doneFlag: Bool rawDone ! 0 list.add(Todo(rs.getInt64(1), rs.getInt64(2), rs.getString(3), doneFlag)) } rs.close() stmt.close() return list.toArray() } // 給某用戶加一條 Todo返回新 Todo 的 id func insert(userId: Int64, title: String): Int64 { let stmt conn.prepareStatement( INSERT INTO todo (user_id, title, done) VALUES (?, ?, 0)) stmt.set(1, userId) stmt.set(2, title) let r stmt.update() stmt.close() return r.lastInsertId } // 把某條 Todo 標(biāo)記為已完成 / 未完成 func setDone(id: Int64, done: Bool): Int64 { let stmt conn.prepareStatement(UPDATE todo SET done ? WHERE id ?) var flag: Int64 0 if (done) { flag 1 } stmt.set(1, flag) stmt.set(2, id) let rows stmt.update().rowCount stmt.close() return rows } // 刪除某條 Todo func deleteById(id: Int64): Int64 { let stmt conn.prepareStatement(DELETE FROM todo WHERE id ?) stmt.set(1, id) let rows stmt.update().rowCount stmt.close() return rows } // 刪除某用戶的全部 Todo**只在事務(wù)里用** func deleteByUserId(userId: Int64): Int64 { let stmt conn.prepareStatement(DELETE FROM todo WHERE user_id ?) stmt.set(1, userId) let rows stmt.update().rowCount stmt.close() return rows } }DAO 層的三個(gè)套路所有 SQL 走conn.prepareStatement預(yù)編譯絕不用字符串拼接。第 12 課講過(guò)原因防 SQL 注入Connection 是 DAO 的唯一依賴通過(guò)構(gòu)造器注入init(conn: Connection)。Service 層傳給 DAO 的是同一個(gè)連接事務(wù)里所有 DAO 調(diào)用自然共享同一個(gè)事務(wù)狀態(tài)ResultSet 和 Statement 用完立刻 close。不 close 雖然程序不崩但數(shù)據(jù)庫(kù)服務(wù)端會(huì)保持連接數(shù)不釋放跑久了 MySQL 會(huì)滿五、Service 層把 DAO 串成業(yè)務(wù)DAO 只管單表操作但真實(shí)業(yè)務(wù)經(jīng)常跨多張表。比如刪除用戶這件事刪 user 表之前必須先刪光他所有的 todo否則會(huì)出現(xiàn)孤兒 todo。這種跨表編排——事務(wù)——就是 Service 層的職責(zé)。class TodoService { let userDao: UserDao let todoDao: TodoDao let conn: Connection init(conn: Connection) { this.conn conn this.userDao UserDao(conn) this.todoDao TodoDao(conn) } // 創(chuàng)建用戶同名已存在則直接返回不重復(fù)插 func createUser(name: String): User { let found userDao.findByName(name) if (found.isSome()) { return found.getOrThrow() } let id userDao.insert(name) return User(id, name) } // 給用戶加一條 Todo用戶不存在返回 None func addTodo(userName: String, title: String): ?Int64 { let found userDao.findByName(userName) if (found.isNone()) { println(用戶 ${userName} 不存在) return None } let userId found.getOrThrow().id return Some(todoDao.insert(userId, title)) } // 把某條 Todo 標(biāo)為已完成 func completeTodo(todoId: Int64): Bool { let found todoDao.findById(todoId) if (found.isNone()) { println(todo ${todoId} 不存在) return false } return todoDao.setDone(todoId, true) 0 } // 刪除一條 Todo func deleteTodo(todoId: Int64): Bool { let found todoDao.findById(todoId) if (found.isNone()) { println(todo ${todoId} 不存在) return false } return todoDao.deleteById(todoId) 0 } // 列出某用戶全部 Todo func listUserTodos(userName: String): ?(User, ArrayTodo) { let found userDao.findByName(userName) if (found.isNone()) { return None } let u found.getOrThrow() return Some((u, todoDao.listByUser(u.id))) } // 事務(wù)刪用戶 刪光他的 Todo // 兩條 SQL 要么一起成要么一起不算 func deleteUserAndTodos(userName: String): Bool { let found userDao.findByName(userName) if (found.isNone()) { println(用戶 ${userName} 不存在) return false } let u found.getOrThrow() let tx conn.createTransaction() tx.begin() try { // 先刪 todouser 表沒(méi)有其他表依賴它順序不敏感 todoDao.deleteByUserId(u.id) let stmt conn.prepareStatement(DELETE FROM user WHERE id ?) stmt.set(1, u.id) stmt.update() stmt.close() tx.commit() return true } catch (e: SqlException) { tx.rollback() println(刪除用戶回滾${e.message}) return false } } }事務(wù)版deleteUserAndTodos拆解這是第 13 課事務(wù)三件套的標(biāo)準(zhǔn)用法步驟代碼作用領(lǐng)事務(wù)let tx conn.createTransaction()從連接領(lǐng)一個(gè)事務(wù)對(duì)象它只是一層狀態(tài)標(biāo)記沒(méi)開(kāi)新連接開(kāi)始tx.begin()之后這個(gè)連接上執(zhí)行的所有改動(dòng)都進(jìn)草稿區(qū)干活todoDao.deleteByUserIdconn.prepareStatement(DELETE FROM user...)兩條 SQL注意仍然走conn.prepareStatement不是tx.prepareStatement第 13 課實(shí)測(cè)結(jié)論提交tx.commit()草稿全部落庫(kù)事務(wù)結(jié)束異常回滾catch (e: SqlException) { tx.rollback() }草稿全部撕掉事務(wù)結(jié)束小提示先刪 todo 還是先刪 user兩種順序都行——我們沒(méi)加外鍵約束所以不用怕刪了父表再刪子表的問(wèn)題。但真實(shí)生產(chǎn)里加了外鍵約束后必須先刪子表todo。養(yǎng)成先刪依賴方的習(xí)慣不吃虧。六、main一條完整的業(yè)務(wù)流程main 函數(shù)就是一個(gè)舞臺(tái)——它把前面準(zhǔn)備好的一切演員Connection、Service拉上臺(tái)按順序走一遍劇情。同時(shí)還有一個(gè)輔助函數(shù)printUserTodos專門負(fù)責(zé)格式化打印某用戶的 Todo 列表func printUserTodos(svc: TodoService, userName: String): Unit { let found svc.listUserTodos(userName) if (found.isNone()) { println(${userName} 不存在) return } let (user, todos) found.getOrThrow() println(用戶 ${user.name}共 ${todos.size} 條 Todo) for (t in todos) { var mark: String if (t.done) { mark ? } println( [${mark}] #${t.id} ${t.title}) } } main(): Int64 { let driver DriverManager.getDriver(mariadb).getOrThrow() let ds driver.open(mariadb://127.0.0.1:3306, [ (username, root), (password, wangpeng), (database, todo_tutorial) ]) let conn ds.connect() let svc TodoService(conn) println( 1. 列出 zhangsan 當(dāng)前的 Todo ) printUserTodos(svc, zhangsan) println() println( 2. 把 zhangsan 的 #1學(xué)第 15 課標(biāo)為已完成 ) if (svc.completeTodo(1)) { println(#1 已完成) } else { println(#1 不存在) } println() println( 3. 再列 zhangsan 的 Todo#1 應(yīng)該帶 ? ) printUserTodos(svc, zhangsan) println() println( 4. 新建用戶 zhaoliu 并加 3 條 Todo ) let u svc.createUser(zhaoliu) println(創(chuàng)建用戶成功id${u.id}, name${u.name}) svc.addTodo(zhaoliu, 跑步 3 公里) svc.addTodo(zhaoliu, 背單詞 50 個(gè)) svc.addTodo(zhaoliu, 讀一章小說(shuō)) println() println( 5. 列出全部 zhaoliu Todo ) printUserTodos(svc, zhaoliu) println() println( 6. 刪除 lisi 他的全部 Todo事務(wù) ) if (svc.deleteUserAndTodos(lisi)) { println(lisi 連同 Todo 已全部刪除) } else { println(刪除失敗) } if (svc.listUserTodos(lisi).isNone()) { println(確認(rèn)lisi 已不存在) } else { println(警告lisi 還存在) } conn.close() 0 }注意import mariadb.cdbc雖然我們沒(méi)在代碼里顯式調(diào)用它的類但必須 import——這會(huì)觸發(fā)驅(qū)動(dòng)包的自注冊(cè)第 07 課核心機(jī)制讓DriverManager.getDriver(mariadb)能找到 mariadb 驅(qū)動(dòng)。漏寫了getDriver返回 NonegetOrThrow()當(dāng)場(chǎng)崩。七、運(yùn)行輸出cjpm run 逐字比對(duì)跑cjpm run 1. 列出 zhangsan 當(dāng)前的 Todo 用戶 zhangsan共 2 條 Todo [ ] #1 學(xué)第 15 課 [?] #2 寫教程代碼 2. 把 zhangsan 的 #1學(xué)第 15 課標(biāo)為已完成 #1 已完成 3. 再列 zhangsan 的 Todo#1 應(yīng)該帶 ? 用戶 zhangsan共 2 條 Todo [?] #1 學(xué)第 15 課 [?] #2 寫教程代碼 4. 新建用戶 zhaoliu 并加 3 條 Todo 創(chuàng)建用戶成功id3, namezhaoliu 5. 列出全部 zhaoliu Todo 用戶 zhaoliu共 3 條 Todo [ ] #4 跑步 3 公里 [ ] #5 背單詞 50 個(gè) [ ] #6 讀一章小說(shuō) 6. 刪除 lisi 他的全部 Todo事務(wù) lisi 連同 Todo 已全部刪除 確認(rèn)lisi 已不存在 cjpm run finished為什么每次運(yùn)行前要 reset 數(shù)據(jù)庫(kù)因?yàn)?step 4 新建用戶后不會(huì)自動(dòng)刪除step 6 刪了 lisi第二次運(yùn)行時(shí) seed 數(shù)據(jù)zhangsan、lisi、#1 #2 #3 todo已經(jīng)不存在了listUserTodos(zhangsan)會(huì)報(bào)zhangsan 不存在。生產(chǎn)程序不會(huì)每次都重置——這是教學(xué)演示的便利讓你能反復(fù)看同一段輸出。八、常見(jiàn)報(bào)錯(cuò)速覽我實(shí)測(cè)踩的坑1.NoneValueException在DriverManager.getDriver(mariadb).getOrThrow()原因漏寫import mariadb.cdbc。mariadb 驅(qū)動(dòng)包的自注冊(cè)機(jī)制需要 import 才能觸發(fā)不 importDriverManager 里就沒(méi)有 mariadb 這個(gè)驅(qū)動(dòng)getDriver返回 None。解決在文件頂部補(bǔ)上import mariadb.cdbc。2.error: append is not a member of struct ArrayT原因你把Array當(dāng)成了動(dòng)態(tài)數(shù)組用.append()往里加元素。倉(cāng)頡 SDK 1.2.0 的Array是固定長(zhǎng)度數(shù)組沒(méi)有增刪方法。解決用ArrayListTimport std.collection.ArrayList追加用.add()動(dòng)態(tài)集合用完可以.toArray()轉(zhuǎn)回固定長(zhǎng)度數(shù)組。3.error: variable xxx is immutable原因let聲明的變量你又賦了新值。比如let flag 0之后if (done) flag 1——flag 必須用var。解決需要修改的變量一律var不需要改的保持let編譯器會(huì)幫你發(fā)現(xiàn)意外修改。4. 事務(wù)里寫tx.prepareStatement(...)編譯報(bào)錯(cuò)原因Transaction接口沒(méi)有prepareStatement方法。事務(wù)只是一層草稿區(qū)狀態(tài)從begin()到commit()/rollback()之間這個(gè)連接上執(zhí)行的所有改動(dòng)自動(dòng)進(jìn)入草稿區(qū)。解決事務(wù)里執(zhí)行 SQL 仍然走conn.prepareStatement——和事務(wù)外一模一樣的代碼只是因?yàn)閎egin()已經(jīng)把連接標(biāo)記成事務(wù)模式了。第 13 課有實(shí)測(cè)結(jié)論。5.error: generic type should be used with type argumenterror: get is not a member of enum OptionT原因Option 的判斷和解包你可能用了錯(cuò)誤方法。解決判斷有值.isSome()/.isNone()解包取值.getOrThrow()有值返回值沒(méi)值拋異常不能寫found None編譯器認(rèn)為None是泛型占位符不是具體值6.ResultSet用完沒(méi) close 也能跑但跑多了 MySQL 報(bào)錯(cuò)Too many connections原因驅(qū)動(dòng)在ResultSet關(guān)閉前不釋放底層 socket。程序跑完雖然進(jìn)程退出但真實(shí)服務(wù)端的連接數(shù)會(huì)累積。解決每個(gè) Statement → ResultSet 鏈用完立刻 close順序rs.close()→stmt.close()。這是數(shù)據(jù)庫(kù)編程的基本紀(jì)律。九、前 8 課關(guān)鍵 API 串燒綜合速查本課把前 8 課數(shù)據(jù)庫(kù)知識(shí)全部串起來(lái)了下面這張表幫你快速定位場(chǎng)景用法對(duì)應(yīng)課程取驅(qū)動(dòng)DriverManager.getDriver(mariadb).getOrThrow()第 07 課開(kāi)連接driver.open(mariadb://host:port, [...]).connect()第 07 課執(zhí)行 DDLconn.prepareStatement(CREATE TABLE ...).update()第 08 課查詢conn.prepareStatement(sql).query()→while (rs.next()) { rs.getT(n) }第 09 課插入conn.prepareStatement(INSERT ...).update().lastInsertId第 10 課更新 / 刪除conn.prepareStatement(UPDATE ...).update().rowCount第 11 課預(yù)編譯全課貫穿SQL 里寫?執(zhí)行前stmt.set(n, value)第 12 課事務(wù)let tx conn.createTransaction(); tx.begin()→ try/commit catch/rollback第 13 課動(dòng)態(tài)集合ArrayListT().add(x).toArray()第 08 課第一篇Option 解包.isSome()/.isNone().getOrThrow()第 09 課十、FAQQ1Service 層和 DAO 層的邊界在哪為什么不把跨表邏輯也寫在 DAO 里DAO 的設(shè)計(jì)哲學(xué)是**“一張表 一個(gè) DAO”**??鐑蓮埍?、需要事務(wù)的操作放在 DAO 里會(huì)導(dǎo)致一個(gè) DAO 依賴另一個(gè) DAOUserDao里要調(diào)TodoDao.deleteByUserId職責(zé)混亂。Service 層就是 DAO 之上的編排層——它知道有哪些 DAO、該按什么順序調(diào)用、哪里需要事務(wù)、哪里需要異常兜底。一個(gè)簡(jiǎn)單判斷標(biāo)準(zhǔn)方法里只出現(xiàn)SELECT/INSERT/UPDATE/DELETE單表操作 → DAO方法里出現(xiàn)多個(gè) DAO 調(diào)用或需要事務(wù) → Service。Q2和第 29 課文件版 Todo 對(duì)照一下維度第 29 課文件版第 15 課數(shù)據(jù)庫(kù)版存儲(chǔ)介質(zhì)txt 文件每行一條MySQL 兩張表讀取方式整文件讀入內(nèi)存 splitSQL 查詢 ResultSet 遍歷寫入方式file.write(content)覆蓋寫stmt.update()增/改/刪多用戶支持不支持全堆一個(gè)文件天然支持user 表分區(qū)分層全堆 mainModel DAO Service 三層并發(fā)安全進(jìn)程獨(dú)占不會(huì)被兩個(gè)進(jìn)程同時(shí)改靠事務(wù)鎖 連接池真實(shí)生產(chǎn)問(wèn)題你可以看到Model、DAO、Service 三層在兩個(gè)版本里一模一樣只有 DAO 里的怎么存/怎么取變了。這就是本課想傳達(dá)的——業(yè)務(wù)邏輯和存儲(chǔ)技術(shù)解耦。Q3為什么不用ConnectionPool數(shù)據(jù)庫(kù)連接建立一次成本很高TCP 握手 認(rèn)證 默認(rèn) schema 設(shè)置。真實(shí)服務(wù)器應(yīng)該用連接池應(yīng)用啟動(dòng)時(shí)先建 10 條放著用的時(shí)候拿一條用完還回去而不是關(guān)掉。但本課和 mariadb-driver 1.2.0 都沒(méi)內(nèi)置連接池——我們只做一次連接、用完關(guān)掉的最簡(jiǎn)場(chǎng)景。連接池是生產(chǎn)級(jí)優(yōu)化初學(xué)者階段先把單連接能跑通吃透再說(shuō)。Q4如果將來(lái)想換 SQLite改一行 URLsqlite:///path/to/db.sqlite前提是換用 SQLite 驅(qū)動(dòng)。Service 層和 DAO 層一行都不用改——因?yàn)槲覀冇玫亩际菢?biāo)準(zhǔn) SQL std.database.sql標(biāo)準(zhǔn)接口不依賴 mariadb 的特定擴(kuò)展。這就是分層解耦的好處。下一課預(yù)告第 16 課 反射 —— 標(biāo)準(zhǔn)庫(kù)std.reflect能讓程序在運(yùn)行時(shí)看見(jiàn)自己類有哪些字段方法簽名是什么字段叫什么名字反射是 ORM、序列化框架、依賴注入的底層工具也是倉(cāng)頡類型系統(tǒng)的后門。系列說(shuō)明本系列基于 Windows 平臺(tái) CIDE 倉(cāng)頡 SDK1.2.0編寫。本文全部代碼、運(yùn)行輸出與報(bào)錯(cuò)文案均已在 SDK 1.2.0 MySQL 環(huán)境下逐塊編譯運(yùn)行、逐字實(shí)測(cè)如遇 SDK 版本差異導(dǎo)致的細(xì)節(jié)出入以你本地版本為準(zhǔn)歡迎評(píng)論區(qū)交流。 遇到問(wèn)題掃碼聯(lián)系作者跟著課程練習(xí)時(shí)如果在 SDK 安裝、環(huán)境變量配置、編譯報(bào)錯(cuò)或調(diào)試上卡住歡迎掃碼加作者企業(yè)微信直接咨詢請(qǐng)備注倉(cāng)頡課程離線環(huán)境下圖片可能加載不出來(lái)也可以在 CIDE 菜單Help ? 聯(lián)系作者 / Contact中查看同一張二維碼應(yīng)用內(nèi)置兜底圖無(wú)需聯(lián)網(wǎng)。 工具下載本系列全程使用的倉(cāng)頡 IDE ——CIDE免費(fèi)開(kāi)源、社區(qū)版GitCode 倉(cāng)庫(kù) / 安裝包下載https://gitcode.com/wp_upala/cide打開(kāi)頁(yè)面后進(jìn)入發(fā)行版Releases兩種包任選其一安裝版下載CIDE-版本-x64-Setup.exe雙擊安裝適合日常長(zhǎng)期使用免安裝版Portable下載CIDE-版本-x64-Portable.zip解壓到任意目錄即用不寫注冊(cè)表、不留安裝痕跡拷到 U 盤也能在別的電腦直接運(yùn)行包內(nèi)附《使用說(shuō)明.txt》。適合先試用、或在受限電腦上學(xué)習(xí)本系列課程。倉(cāng)頡 SDK 請(qǐng)前往倉(cāng)頡編程語(yǔ)言官網(wǎng)下載https://cangjie-lang.cn
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中文字幕日韩电影人妻| 盗摄女人妻在线| 婷婷10月天青娱乐| 密臀在线视频| 狠狠操狠狠操操| 亚洲综合电影| 操曰本熟女| 欧美综合网A| 91美乳| 日韩成人小视频| 爱爱动态120秒| 综合色图亚洲欧美| 日韩三级在线观看mp4| 亚洲天天影视综合网| 人妻在线大香蕉| 97国产综合欧美| 春色91| 国产操逼视频在线观看| 黄骗免费| 乱精品一区字幕二区| 欧美在线55555| 超碰97国产欧美| 人妻一二三区| 香一区二区三区| 5252色欧美在线男人的天堂| 日韩视频啪啪| 欧美精品,四区。五区| 色综合天天爱去电影网| 91成人在线免费视频| 国产日韩精品一区二区三区| 亚洲日韩黑丝| 黄片色区软件| 黄色一区三区| 国产亲戚伦亲在线| 2026国产精品视频| 亚洲欧美高清| 欧洲熟妇xxXx欧美老妇裸体 | 操操啪| 大香蕉在线视频15| 床戏久久久av一区二区麻豆| 日操粉逼逼| 久久久久国产亚洲一区欧美色图日韩 | 素人播放一区| 精品成人无码| 九九九草| blacked精品一区国产| 欧美色图片色哟哟| 午夜理论片在线观看免费| 日韩不卡av一二三| 日韩午夜国产| 开心五月深爱五月| 97人人爱人人做人人乐| 亚洲怡春院| 欧美aaaaaaa| 偷拍99| 欧美日韩222| 日本一级特级毛片视频| 国产精品久久久久综合| 波多野结衣一级视频| 91free福利| 新怡红院| 国产又黄又粗又猛大片| 另类图片五月天| 熟妇高潮二区三区| 熟女精品va中文字幕| 精品一区二区三区蜜桃| 欧美v亚洲v日韩v最新在线二区| 男插女青青影院| 操逼操逼逼操操逼91 | 亚洲做性| 天天欧美色| 91成人18| 国产一区二区三区,在线观看观看| www.99中文字幕| 国产精品69久久久久孕妇欧美| 国产视频一区二区免费| 婷婷爽人人婷婷爽视频| 人妻酒店出差被中出免费在线播放| 99re9| 亚洲欧洲无码一区夜| 日韩免费看在线黄色片| 91蜜桃传媒精品久久久一区二区| 日本免费中文一区二区三区四区 | 五月大香蕉| 国产高清视频无码在线| 超碰综合97在线| 91九九九馒头| 欧美日韩超碰在线| 长长久久免费视频| 亚洲图片偷拍视频区| 中文久久一区| 六月婷激情福利天堂69| 久久精品国产97欧美精品亚洲 | 无码九九| 男人的天堂.com| 日本道久久综合色色| 2019精品国产无码成人| 国产女大学生AV| 四虎精品一区二区| 99少妇| 2020中文字幕在线| 香蕉免费一区二区三区不读| 97超级欧美| 欧美激情欧美精品| 成人五月天色网| 亚洲天堂女优在线| 人人摸人人干| 欧美精品久久| 亚洲色图美腿丝袜| 区二区亚洲婷| 欧美性,亚州色| 国产精品久久久亚洲一区| 日本天天操| 亚洲91少妇| 国产小炒后入式| 一区 欧美 日韩 麻豆| 精品一区二区三区四区女| 欧美国产有色电影| 久久久久久中文| 国产精品扒开腿做爽爽爽视频| 欧美精品二区视频在线| 十八禁成人网站在线观看| 亚洲午夜福利视频| 淫乱图区 | 国产丝袜高跟美女av免费观看| 欧美精品久久96人妻无码| 丰满人妻-区二区三区免费看| 日韩激情无码影院| 国产丁香精品露脸视频| 久久久91| 一起草精品人妻| 亚洲国产欧美日韩人妻日中文| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 香蕉久久精品| 狠狠热这里都是精品| 国产suv精品一区二区四区999 | 国产精品午夜福利| 无码国产精品久久久久| 秋霞成人做爱| 免费视频一二三区| 精品国产嫩穴视频| A V少妇特黄三级| 日韩成人电影AV| 一及黄久一点| 久久精品熟女亚洲AV麻豆软件| 日本天天干天天搞一区| 国产精品久久久久久久AV大片 | 久久久久久裸体| 亚州熟妇精品| 人人操人人摸超碰| 日韩欧美午夜一区二区| 欧美色院| 女人爽到高潮潮喷18禁网站| 久久精品国产亚洲AV高级北京| 综合熟女| 亚洲欧美天| 国产操伦| 在线 制服丝袜中出 人妻| 97超碰碰碰| 欧美日韩青操| 午夜福利在线视频1000| 天美传媒精品久久视频| 尤物黄色在线观看网站| 亚洲欧美日韩有码| 你懂的在线观看区国产| 日本狠狠干| 中文精品少妇天堂| 丁香五月激情综合| 抽插一区二区视频| 伊人久久婷婷| 女同性恋一区二区三区精品视频| 成人精品无码| 96精品久久久久中文字幕| 久久久久久九九九九| 日韩AV电影网站| 97在线看| 国产免费一区二区在线A片视频| 无码逼| 在线电影亚洲色图| 91xingse| 999亚洲国产视频| 91综合天天看| 天天干天天拍| 99re免费视频精品全部| 天天综合站| 久久激情综合| 精品人妻一二三| 色噜噜人妻丝袜AV资源| 精品在线观看视频在线| 精品国产AV一区天美传媒| 91性情| 狠狠激情综合狠狠操中文字幕| 在线一区| 久久免费老司机精品| 久久綜合很很很| www亚洲免费| 久久高清欧美国产| 熟妇高潮一区二| 手机看片日韩人妻| 女性91网站| 伊人96在线| 日韩情色AV| 欧美日韩国产在线| 国产伦精品一区二区三区在线观| 可能人人看人人摸| 噜噜噜在线视频| 国产一级内射高清视频 | 久久9久9久99久9久9| 中文一区二区| 91殴美大片| 天天干,天天日| 福利社区午夜一区二区| 边做饭边操逼逼| 97在线视频观看免费| 99国产精品免费| 欧美日韩超碰在线| 欧美久热| 天天做日日爱夜夜爽| 91色狼| 黄色大片免费在线| 97精品视频| 国产1024在线播放| AVE乱伦| 欧美色图97| 久久久久熟女| 亚洲国产成人精品无码专区| 日骚逼视频| 久久极品一区二区| 日韩一级二级| 日本天天人人狠狠在线日美女 | 呦呦影院| 国产区91柔拿会所技师| 亚洲欧美国产其他二区| 五月丁香久久| 欧美国产一区二区三区麻豆传媒 | 99re69综合| 逼逼逼逼操操操操操操操操操午夜剧场 | 天天操av懂色| 蜜屁Av| 一区超碰一区| 97无码视频在线播放| 久久精品国产99精品亚洲蜜... | 日本一区视频在线观看| 99精品久久| 神马精品视频| 日韩乱码Av| 久久国产精品视频| 嗯嗯啊啊日韩精品| 熟女六十路| 999久久久久久久久| 亚洲免费精品一区| 亚洲AV乱码专区国产噜噜亚洲| 91色碰| 男人天堂毛片| 上床啊啊啊| 99亚洲国产精品色一区二区三区| 国产成人精品必看| 久久激情综合| 老鸭窝日丰县女人| 欧洲一区二区| 午夜九九九九九九| 欧美高清18A片| 天天综合-91入口| 亚洲色图欧美色图另类图片| 欧美大波激情xxxx| 精品黑人一区二区| 精品久久久九九九孕妇| 熟女AV一区| 久操影视| 97天堂| 2019久久久久久久久福利| 欧美日韩性爱精品| 97超碰天天| 久草草一二三四区久久| 玖草在线视频| 床上啊啊啊一区二区三区| 东北女人被操| 中文字幕在线观| japan日本高清乱xxxx| 婷婷五月天成人网| 麻豆人妻偷人精品无码视频| 91性高朝久久久久久久久| caoni国产亚洲av| 国产欧美伊人| 啊啊嗯嗯好爽| 天天日天天爽| 日本媚薬中文字幕在线| 思思在线免费视频| 伊人亚洲综合| 国产不卡免费在线视频| 操逼精品视频| 成人av在线播放| 日韩精品区二区三区不卡| 亚洲熟女乱色一区二区三区久久久| 深夜视频| 中文字幕国产精品1区| 青久久| 性爱免费视频成人| 久久久专区| 国产精品精品系列在线观看| 天无日色综合| 国产福利精品98视频| 91黑丝少妇| 操b在线观看| 欧美曰韩国产精品| 欧美日韩国产色图在线| 内射夫妻三片| 又黄又爽在线观看视频| 欧美日韩国产成人高清| 久9综合在线| 久久黄黄| 不卡一区二区日本视频| 中文字幕三四五区| 天天拍天| 偷拍欧美激情| 99精品久久| 在线观看免费视频国产| 久久午夜色播影院免费高清| 天天日骚逼熟女| 熟啊v色欧美热| 国产玖玖| 五月丁香影院| 男男H黄动漫啪啪无遮挡网站| 日韩情色AV| 国产精品免费视频人成| 亚洲毛片基地专区| 色哟哟AV| 做爱福利视频一区二区| 日韩成人网址| 国产传媒午夜理伦精品| 正在播放国产精品一区| 国产精品视屏| 日韩激情无码影院| 97视频620| 97资源免费视频| av在线播放国产一区| 天天内射| 北条麻妃99精品青青久久| 精品国产Av无码久久久亚洲| 欧美亚洲高清不卡| 影音综合网| 国产亚洲精品美女久久久久久2021| 精品人妻免费观看| 天堂亚洲精品久久老牛| 97国产精品一区二区传媒公司| 欧美成熟性爱精品| 九九九九AV| 国产和美国毛片| 欧美亚洲日韩人妻在线观看| 中文字幕123| 久久永久无码人妻视频| 亚洲图片第一页| 日本免费二区三区| 韩日自拍| 久久久精品视频欧州站| 午夜精品一区二区三区三上悠亚| 五月婷婷丁香中文字幕| 亚洲性爱电影| 日韩性爱毛片操骚逼| 日韩在线视频1234| 成片免费播放| 久久久久96| 成人精品一区二区91毛片不卡| 欧美精品偷拍| 亚洲色欲一区二区三区| 大香网伊人久久综合| 综合一区中亚洲国产成人综合精品 | 亚洲官网在线| 欧美 日韩 国产传媒| 粉嫩国产精品久久粉嫩| 95人妻爽爽人人做人人澡| 中文熟女五十乱码在线| 女人被男人桶爽视频网站| 日本丝袜人妻内射| 人妻天堂综合网| 欧美日韩青操| 免费观看日本操逼视频| 日本日皮视频逼| 91精品人妻一区二区三区蜜桃臀| 好湿好紧视频| 日韩无码一区二区三区| 国语国产操逼伊人AV网| 婷婷久草一区二区三区| 自拍亚洲综合| 成人午夜高潮av猛片| 蜜乳av首页| 日本免费不卡二区| 东京热天堂网| 中文字幕在线免费观看视频| 国产精品乱码久久久久久久| 97国产人人| 国产人妻天天干精品| 美欧老女人97| 久久久99免费| 1区2区3区中文字幕日韩| 麻豆成人av| 视频黄色国产一级| 狠狠色噜噜狠狠狠狠2018| 在线人成亚洲视频免费观看| 国产吞精a级片激情电影| 男女打扑克高清网站| 亚州九九九精品视频| 男人天堂网站| 日本超碰在线国产一区| 97中文字幕一区| ?亚洲伊人伊成久久人综合网| av 模特一区了| 18禁中文字幕| 日韩中文字幕宗合在线| 日韩欧美俄罗斯A片| 香蕉大久久久| 成人免费不卡在线视频| 国产91美女视频| 久操大香蕉手机视频在线看 | 日韩激情毛片一级久久久| 99自拍视频| 国产午夜福利合集| 婷婷五月天色色| 亚洲有薄码区久久在线一区| 国产 丝袜 欧美中文 另类| 国产精品97超碰| 成人片在线播放| 久久国产精品一区二区| 国产女人高潮视频| 欧美极品美女aaaaaa级黄片| 加勒比综合| 亚洲av强奸乱伦| 伦伦成年午夜免费视频| 国产 亚洲 丝袜 制服| 久久久999日本大片| 97天天日| 日本媚薬中文字幕在线| 日韩乱伦影音先锋| 五十路一区无码| 日韩有码回春沙龙第一页| 色婷婷九月天天综合| 久久內射| 久久这里是精品| 成人熟女视频一区二区三区| 婷婷五月天激情四射| 人妻一区二区三区| 日韩三级在线观看网站| 九色97| 国模无码人体一区二区三| 欧美一二三区四五区| 欧美视频中文字幕区| 美女裸体无遮挡永久免费观看网站| 青青草色插素人| 立川理惠被中出无码| 久久国产精品一级二级三级| 日本操逼视频不卡直接放| 精品无码一区二区人妻久久蜜桃| 色9999日韩国产| 亚洲无码国产精品久久| 好看的91视频| 六月丁香五月婷婷| 日韩欧美tv一区二区在线观看| 9I1性色影院| 91国产丝袜足交精品视频| 欧亚性爱在线视频| 欧美天天综合网| 中文字幕一区二区三区蜜桃视频| 天天内射| 国产热av| 色狠人在线99| 黄色成品网站| 天天爽天天| 先锋精品av色鲁| 欧美综合自拍成人自拍第二十页| 欧美少妇熟女| 打av高清| 国产最新AV| 夜夜爽爽爽| 嗯啊抽插大香蕉网页| 中文字幕第7页| 一区麻豆 高清中文字幕| 99精品免费| 亚欧国产无码精品在线| 亚洲日韩国产欧美综合v| 一区二区三区亚洲| 精品人妻中文字幕4399| 熟妇的味道HD中文字幕| 亚洲色欧美| 乱操乱伦AV| 无码av永久免费专区网站| 乳欲人妻办公室奶水| 约操熟妇| 亚洲丝袜二区| 九九精品美女高溯喷水| 英伦大奶子熟妇吊带| 色欲人妻一区二区在线| 激情另类激情| 午夜男女爽爽大片免费观看| 大香蕉强奸乱伦| 日韩无码成人电影| 吉田爱美AV在线| 日韩欧美成人大香蕉| 91国产美女丝袜足交精品视频| 欧洲精品久久| 97在线免费视频| 粉嫩粉嫩一区性色AV片| 骚逼高潮久久精品| 亚洲天堂另类| 99久在线精品99re8热| 亚洲国产另类在线中文| 激情综合网五月婷婷五月天| 操逼日批| 无码最新| 日韩一卡二卡三卡| 明星性猛交ⅹxxx乱大交| 久久人妻一区二区三区高清| 91在线免费观看处女| 婷婷五月色| 老熟妇一区二区三区…| A片 AV一级在线播放观看免费| 北条麻妃99精品青青久久| 久久中文字幕女同性恋一区| 精品成人无码| 久久久久久久久久久精| 亚洲日韩精品在线播放| 久久久草草精品| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 中文字幕 国产 精品| 伊人久久亚洲中文字幕| 亚洲春色一区二区三区| 四虎影库国产精品免费| 精品69网| 91精品91久久久中77777| 吊色| 日韩不卡a级视频专区| 99热国产精品| 婷婷AV一区二区三区| 天天久久久久久| 婷婷五月天激情网| 亚洲AV操| 狠狠超| 91美腿丝袜在线观看| 久久国产精品m码| 97婷婷色| 亚洲国产欧美一区二区潘金莲| 欲香欲色天天天综合和网| 成人麻豆av电影网站| 欧美激情在线观看视频| 欧美在线啊啊啊| 99热最新| 亚州免费啪啪视频| 欧美青青视频| 免费毛片在线播放| 日韩精品人妻| 欧美日韩美女精品久草一区二区三区 | 国产日韩精品一区二区三区| 国产高清免费不卡av| 国语少妇精| 日本高清视频xxxx| 91宗合网| 女生久久网| 大屁股熟女一区二区三区| 宗合情欲网| 午夜激情成人在线观看| 日韩青久久| 超碰在线974| 五月婷婷综合在线| 黄色区免费观看中文字幕| 青草成人免费视频一com| 午夜AV污污污| 亚洲污一污二| 亚洲色图国产另类| 九一精品牛牛一区二区| 成人短视频在线观看| 亚洲AV麻豆Aⅴ无码电影一| 亚洲中文字幕av | 精品国产乱码| 国产一级高跟丝袜| 99色网| 99热18这里只有精品| 久久久久久中文版| 成人黄页| 加勒比伊人综合| 久久伊人青青草| 一本久道在线综合视频| 天美传媒麻豆一区二区三区国产精| 人人澡人人爽人人精品| 综合激情97| 久久国产对白激情浪潮| 人妻黑丝袜电影| 免费国产| 六月婷婷色综合| 丁香六月啪啪| 国产美女精品| 啪啪自拍九九综合| 国产一区在线观看无码AV| 97人人操人人摸人人爱| 婷婷丁香熟妇综合网| 十八禁成人网站在线观看| 婷婷视频在线免费观看| www.婷婷| 天美传媒在线一区| 国产精品蜜乳AV| 天天做天天爱天天爽AV| 78精品在线| 超碰人人干| 玖玖爱一区在线| 日韩性色b| 熟妇女人妻呻吟久久AV| 欧美天堂第二区| 欧美性夜| 日韩精品一区二区三区色欲| 爱欲AV| 天天综合91入口| 国产中文字幕在线点播| 久久久久成人蜜桃精品| 狠狠爱综合网| 亚洲午夜福利在线影院| 狠狠久久四虎| 97色欧洲| 五月丁香拍拍激情综合三级| 久久9亚洲| 欧美大片一区二区三区| 人人弄人人摸| 美女超碰978| 国语精品av| 一区二区三区视频在线观看免费| 中文字幕AV片| 熟女人妻一区二区三区| 72av视频| 最新加勒比丝袜在线| 人人操人人摸人人骑| 五月丁香综合| 99久久亚洲精品无码毛片潘甜甜| 手机在线人成免费视频| 97bbn| 蜜臀Av一区二区三区| 亚洲高清无码在线桃色| 九月色婷婷| 亚欧美无遮挡| 欧美性爱中文字幕无线码| 亚洲青色欧美| 99热综合| 天天搞在线综合网| AAAA级日本片免费视频| 黄色人人| 美女诱惑爱爱| 91精品无码久久久久久久| 久湿久久| 96精品久久久久中文字幕| 岛国片在线播放| 亚洲国产97在线精品一区| 最好看的中文字幕在线2018| 亚洲 欧美 色图| 99久久无色码| 日韩久久三区| 天天躁日日躁XXXXYY| 人妻嗯啊啊在线播放| 香蕉欧美| 啊啊啊啊,啊啊好多水| 亚洲色欲天天人妻无码系列专区| 99re免费| 日韩精品电影| 91亚洲不卡一区| 亚州国产精品乱| 婷婷色色网| 99久久久无码国产精品性男| 日本精品无码三级网站| 国产精品美女在线一区| 天天干夜夜一操| 五十路三级片| www.久久| 丁香五月婷婷色| 在线观看AV片| 人人爱人人操人人性| 欧亚性爱啪啪| 精久久久91| 中文字幕av久久爽Av| 国产有码一区| 天堂网 主播 亚洲| 人妻少妇无码| 欧美第二页| 2017人人操,人人摸| 无码抄逼网| 极品白嫩福利在线| 亚洲久草AV色图| 中文字幕成人乱码熟女精品国50| 欧美伊人电影| 精品人妻av在线播放| 亚洲色图欧美色图日韩色图| 超碰97起碰| 美欧老女人97| 天堂网亚洲区手机版| 婷婷五月天激情四射| 亚洲一区日韩精品| 欧美性爱在线无码| 久久久久中出| 久久婷婷一区| 国产在线视频二区| 97综合在线观看| 啊啊啊操死我了| 日韩一级久久毛片| 欧美黄片欧美黄片xxx| 天美国产三级传媒| 久久久九| 国产91亚洲精品一区二区三区| 麻豆区99999| 天天大干大香蕉| 欧美成年人性爱视频免费观看| 日韩AV熟女乱伦| 中文字幕女同在线| 不卡av在线中文字幕| 1024亚洲中文字幕久在线看片你懂的| 啊啊啊久久久视频| 国产辣妈在线视频福利| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 国产福利在线视频网站| 人人人人人人少妇| 91免费看中出视频| 精品性爱无码在线播放| 成熟熟女国产精品一区二区| 久草精品国产99| 免费一级特黄特色大片在线观看看| 欧美色图91p| 夜夜爽夜夜操| 欧美激情亚洲情色| 麻豆av一区二区| 亚洲97久久精品亚洲| 青青草毛片| 中文字幕无码不卡啪啪| 日本中文字幕在线电影| 久久久久亚洲Av无码专区老牛影视| 中文久久96| 韩国女主播青草福利视频| 天堂种子在线www网资源| 午夜男女爽爽爽影院视频| 欧美天天干| 亚洲,欧美,综合网| 91日产欧美| 极品少妇99| 91女人的网站| 91oumei| 粉嫩在线一区二区懂色| 无码外流操逼视频| 免费国产视频| 一区二区三区高清| 久久久少妇诱惑精品视频| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 91大学精品激情戏| 在线看免费无码AV天堂的| 操逼片国产| 日韩激情毛片一级久久久| 富女玩鸭子一级毛片| 亚洲熟女av中文字幕| 精品免费囯产一区二区三区| 香蕉国产97| 久久久九| 天天性射网| 久久久内射良家| 久久人妻少妇| 97精品97久久| 色九九综合AV| 一本一首道人妻少妇免费久久| 超碰 av 女人天堂| 嗯嗯啊啊好疼| 欲女人妻性色av| 中文字幕av片| 超碰97人妻自拍| 丝袜足交视频| 秋霞 色色| 久久午夜鲁丝片| 欧美日韩在线小说 | 亚洲丝袜色| 夜夜爽爽爽| 色色无码| 丰满少妇一区二区三区专区| www.一本大99| 日韩无码AB| 亚洲图片视频小说| 亚洲国产97| 岛国色情视频在线观看| 97欧美性爱| 色九月婷婷| 白丝1区2区3区| 伊人久久大香蕉线AV五月天| 东京热不卡视频| 桃色五月天| 99视频自拍区| 亚洲天堂男| 乱伦日本中文自拍| 可以在线观看的黄色网址| 秋霞曰韩R级| 久久草草欧美精品| 91在线丝袜视频| 加勒比伊人影院| 欧美91变态| 92性色国产午夜福利在线661| 国产精品一级毛片不卡视| 91丨九色丨东北熟女| 亚洲一二三精品久久网| 蜜桃狠狠色伊人亚洲综合| 国产日本顶级一区二区三区| 无码久久国产| 女人被添高潮免费视频| 久久极品一区二区| 久久中出在线| 女同性恋久久| 国产成人亚洲精品无码最新在线| 国产女人高潮嗷嗷嗷叫小说| 色婷视频| 性色av一区二区| 久久久久久免费电影| 久九色| 免费在线黄片视频| 国产激情综合| 91超碰碰在线| 中文字幕久久婷婷丁香五月天| 亚洲最新中文字幕免费| 天天色悠悠激情| 91天天美女| 精品国产91av一区二区三区 | 欧美性爱无码一区二区三区| 六月丁香网| 亚洲drav色图| 无码人妻精品一区二区三区99不卡| 亚洲aV性爱| 久久只有精品一区二区三区| 手机在线大香蕉| 亚洲AV无码国产精品久久久久| 欧美熟妇精品黑人巨大一二三区| 国产97视频| 日美免费黄片| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲凸凹超碰成人| 熟妇xxxxx性春色| 黄页18禁| 天天干嫩逼网| 国产精品亚洲免费| 亚洲欧洲无码97久久精品| 日本孕妇一区二区视频操逼免费看 | 伊人网免费视频| 欧美日不卡| 亚洲丝袜在线观看| 欧美特大黄一级片片免费| 久超超碰| 大香蕉一区二区在线观看.| 午夜性| 3PAV乱伦视频| 欧美久久九九| 91被操| 91在线欧色| 国产第11页| 亚欧性爱无码| 国产九区| 美国一区二区三区视频| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 蜜桃久久一区二区| 婷婷五月影院| 青青草久草| 中文字幕在线观看视频www| 国产日本顶级一区二区三区| 久热无码| 日韩少妇无码| 青青国产精品在线| 精品久| 亚洲 91 在线| 日韩激情电影中文字幕| 五月黑AⅤ| 五月丁香六月综合缴清无码| 熟妇艹鸡八| 色天使亚洲综合在线观看| 97资源免费视频| 亚洲色图日韩精品| 东京男人天堂| 亚洲中文字幕97久久精品少妇| 少妇精品久久久八区九区| 九九在线视频| a片自拍直播视频| 综合网久久| 肉嘟嘟www视频在线观看高清| 人妻少妇久久| 激情五月婷婷| 久久久久久久久久va| 欧亚日韩三区| 婷婷亚洲五月***久久| 日韩综合97p| 亚洲情色1区| 国产精品嫩草久久久久| 亚洲日本大香蕉1| 中文字幕高清20页视频| 国产美女在线精品免费看| 人妻啊啊人妻啊| 在线国产福利网址导航| 午夜九九| 亚洲人在线| 性在久久久久久| 久久精品区| 日本在线一二| 久干9操| 91网站18禁| 2017大香蕉国产精品久久| 99热在线观看| 国产日本一区二区三区蜜臀在线观看| 国产精品熟女九九九| 99碰碰| 精品丝袜无码一区二区三APP| 日本不卡中文| 亚州色图狠狠干| 色婷婷九月| 天天干天天舔| 欧美96在线|欧| 91中文精品日韩欧美在线| 婷婷久久大香蕉| 久久久久亚洲熟妇熟女| 67914在线兔费成人视频| 爱干爱射网啊啊啊| 99热婷婷| 日本欧美亚洲高清在线看| 免费国产视频| 一区二区播放| 日韩欧美水蜜桃人妻| 亚洲综合小说另类图欧美视频激情小说色五月天| 亚洲伊人成综合成人网| www男人天堂| 亚洲色图欧美色图制服诱惑| 97资源超碰| 99爱爱| 无码动漫av中文字幕| 亚洲美女高潮喷水视频| 欧美后入视频| 久久9精品视频| 九热视频| 啊视频在线| 免费观看的黄色的网站| 狠狠操,使劲操| 少妇精品久久| 97操综合| 91精品久久久久久久久久| 欲色影视综合吧| 色色99| 超碰91在线| 另类一区| 人妻aa| jizz啪啪| 人人干黄色| 亚洲影院成人| 亚洲一区二区在线观看91| 男人的天堂免费| 97人人爱人人乐| 国产熟女精品区| 超碰69| 天天操女人| 七久久久| 玖玖97综合| 激情第四色| aⅴ日韩成人电影av在线免费看av大全 | 高清无码一区二区三区| av毛片aaaaa免费看| 天天综合网日韩| 亚洲激情视频| 91色图| 欧美中文字幕精品人妻| 国产又粗又大硬免费色网视频| 69一区二区三区| 久久久久久久97| 精品亚洲天堂| 熟女探花啪啪| 国产真乱mangent| 操高情无码| 在线观看国产黄色| 久久丁香五月婷婷| 红杏大香蕉| 久久久久久大| 亚洲自拍欧美国产首页网曝| 综合激情一一91| 中日韩久久久免费看| 日韩成人小视频| 日韩熟女精一区二区三区不卡| 中文字幕在线观| 欧美视频一| 伊人网青青| 老司机老司机午夜影院| 天堂8在线新版官网| 涩五月婷婷| 日本精品88888888| 尤物av网站| 欧美精品,四区。五区| 男人的天堂VA| 大香蕉乱级| 偷窥自拍A片| 久久超碰爱| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 国产成年精品高清在线观看91| 无码 有码 国产18p| 久碰视频| 人妻人人澡人人爽人人| 久久人妻无码毛片A片麻豆| 婷婷人妻激情| 一区二区三区国产在线播放| 国产强奸乱伦xd| 一级免费啪啪片| 九九热免费在线国产视频伊人五月| 亚洲综合九| 少妇蹲下买菜露大唇0| 欧美大波激情xxxx| 黄片不用下载在线观看| 久久大香蕉手机高清| 熟妇国产免费一区| 久久色网| 欧洲色| 啊啊啊啊操死我了| 天天日天天看| 青娱乐亚洲自拍| 综合日本女人伊人| 天堂网亚洲区手机版| 在线有码中文字幕| 伊人久久88国产女| 久久久一区二区| 成人小说另类在线| 日本天天色| 精品视频久久区| 精品日韩人妻精品一二三区| 亚洲熟妇无码一区二区三区| 7月婷婷综合| 2020中文字幕在线| 国产无马视频| 国产女人9999| 久久美女国产| 黑丝制服中文字幕| 久久久久久人妻| 91精片| 涩爱AV在线| 91香蕉国产尤物视频| 国产精品免费久久久久久久久久| 亚洲性爱电影| 天天综合网一91网| 久久久天堂| 国产激情视频在线观看| 中文字幕第二页| 青娱乐黄色录像| 久久久免费的精品| 国产精品乱码久久久、久久| 免费黄色片。| av大香蕉网站| 亚洲美女AV无码| 日韩精品一二三四| 97碰碰色| 女人高潮大叫一级毛片| 麻豆人妻偷人精品无码视频| 无码外流操逼视频| 欧美一区二区三区大综合| 国产高清成人免费视频| 密乳AV免费观看| 无码人妻系列少妇| 欧美顶级黄色大片免费| 色香伊人| 亚洲五码一区二区三区| 性色av一区二区| 芊芊操逼视频无码| 淫乱图区 | 色阁阁AV综合网| 99国产精品视频尤物| 久久精9| 精品国产一区二区三区四区在线看| 日韩一区二区熟女| 人人操人人插 - 百度 - 百度| 欧美精品久久96人妻无码| 国产日韩无码一区二区三区久久区| 久妇网| 五月天我淫我色av| 狠狠干精品一二三四五六2022| 好吊色综合| 自拍二页| 国产精品嫩草影院免费| 97超碰中文字幕| 亚洲综合激情五月久久| 97久操| 在线综合 亚洲 欧美中文字幕 | 婷婷情色五月天| 韩国成人精品久久久免费看| 啊啊啊不要嗯嗯在线观看| 亚欧韩av| 大色综合| 精品一区二区三区蜜桃臀赵总 | 九热久| 欧美综合综合| 婷婷久久久精品| 欧美性天天影视| 五月激情小说| 九九久久国产精品| 国产精品呦一区二区三区| 免费在线观看AV无码网站| 99re6久热只有精品6在线直播| 四虎国产成人精品免费一女五男| 超碰97人人乐| 天天综合官网| 国产三级中文有码在线视频| 亚洲AV成人在线| 99热 按摩 日韩| 欧 美 自 拍 偷 拍| 欧美性爱一区二区三区| 婷婷五月影院| 超碰日韩美妻| 色99999| 国产99999久久精品| 99久久综合网| 日韩激情无码影院| 久久禁| 亚洲情色五月天| 97啪啪| 天天弄天天操| 久久久久久久9999| 韩国女主播青草在线| 五月色网| 日韩中文字幕国产| ?亚洲伊人伊成久久人综合网| 亚洲免费97免费| 淫妻综合网| 日韩无码黄色片| 天天色图| 五月天久久人妻| 夜夜嗨绯色| 凹凸 69堂 在线播放| 日韩精品一区二区三区色欲| 97无码视频在线播放| 精品国产乱码久久久久久久| 粉嫩AV一区夜夜嗨| 夫妻四区五区六区| 超碰av在线| 黄色AAAAAAAAAAA大片| 精品免费视频国产一区| 小电影欧美91| 人人扣人人操| 综合少妇网| 91欧美另类| 2025亚洲男人天堂| 亚洲av在线免费观看| 1769精品一区二区三区| 免费一级性爱久久| 在线视频亚洲无码| 91国精产品| 久久久久78| 精品区9| 99国内精品| 岛国免费视频在线| 精品国产一级久久| 日日操丁香五月天| 97欧美| 日日夜夜精品视频| 一区二区视频在看| 性欧美| 色99久草| 狠狠色五月亚洲91| 国产中午字一暮区| 手机av亚洲丝袜美腿日韩第一页二页| 9.1小视频| 久久五月份| www.色操逼| 综合影视国产无码| 乱伦图一区| 18禁中文字幕| 性开放中文AV高清无码免费看| 少妇啪啪自拍| 一级黄色视频网| 国产人妖视频一区在线观看|