PHP框架 Laravel

???????現在因為公司需求,需要新開一個Laravel框架的項目,毫無疑問,我又被借調過去了,最近老是被借調,有點陰郁,不過反觀來看,這也是好事,又可以復習和鞏固一下自己的知識點,接下來開始講解Laravel框架

1.安裝(我使用的是composer安裝)

安裝命令1:

composer create-project laravel/laravel:^11.0 example-app(框架所在文件夾:安裝時中午不必復制)

安裝命令2:

composer global require laravel/installer
laravel new example-app(框架所在文件夾:安裝時中午不必復制)

2.環境配置(.env文件)

應用名稱

APP_NAME=Laravel


應用運行環境

APP_ENV=local


是否開啟Debug模式

APP_DEBUG=true


數據庫配置

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

3.框架啟動:

cd example-app(框架所在文件夾:安裝時中午不必復制)
php artisan serve




4.常用artisan命令:

1.顯示您的應用配置、驅動程序和環境:php artisan about


2.加密環境文件(作用在.env文件): php artisan env:encrypt


3.解密環境文件(作用在.env文件):php artisan env:decrypt


4.框架啟動:php artisan serve


5.這個命令會生成一個新的應用程序密鑰,并將其自動添加到 .env 文件中:php artisan key:generate


6.創建一個新的控制器:php artisan make:controller


7.創建一個新的 Eloquent 模型:php artisan make:model


8.創建一個新的策略類:php artisan make:policy


9.創建一個新的種子文件:php artisan make:seeder


10.運行數據庫遷移,創建或修改數據庫表以匹配最新的遷移文件:php artisan migrate


11.回滾最后一個數據庫遷移操作:php artisan migrate:rollback


12.重置并重新運行所有數據庫遷移:php artisan migrate:refresh


13.列出應用程序的所有路由:php artisan route:list


14.清除應用程序緩存:php artisan cache:clear


15.創建配置緩存文件以加速應用程序的啟動:php artisan config:cache


16.清除視圖緩存:php artisan view:clear


17.清除優化文件:php artisan optimize:clear


18.啟動一個與應用程序的交互式解釋器:php artisan tinker


19.在本地開發服務器上運行應用程序:php artisan serve


20.生成未定義監聽器的事件:php artisan event:generate


21.為通知表生成一個遷移文件:php artisan notification:table


22.為隊列遷移生成一個遷移文件:php artisan queue:table


23.為會話遷移生成一個遷移文件:php artisan session:table


24.列出所有路由:php artisan route:list -v


25.創建中間件:php artisan make:middleware 中間件名
?

5.框架目錄:

根目錄

--app :應用程序的核心代碼
--bootstrap :引導框架的 app.php 文件
--config :所有配置文件
--database :數據庫遷移、模型工廠和種子文件
--public :包含 index.php 文件,這是所有請求進入您應用程序的入口點,并配置自動加載?
--resources :視圖以及樣式文件和JS文件
--routes :所有路由定義文件
--storage :日志、編譯的 Blade 模板、基于文件的會話、文件緩存以及框架生成的其他文件
--tests :自動化測試
--vendor :Composer 依賴項

App目錄?:大部分代碼文件

--Broadcasting :所有廣播頻道類
--Console :所有自定義 Artisan 命令
--Exceptions :所有自定義異常
--Http :包含控制器、中間件和表單請求
--Jobs :包含應用程序的可隊列化作業
--Listeners :處理事件的類
--Mail :代表電子郵件的類
--Models :所有的 Eloquent 模型類
--Notifications :應用程序發送的所有“事務性”通知
--Policies :應用程序的授權策略類
--Providers :應用程序的所有服務提供者
--Rules :應用程序的自定義驗證規則對象


6.前端模

Blade

語法:
1.通過 {{ }} 渲染 PHP 變量(最常用)
2.通過 {!! !!} 渲染原生 HTML 代碼(用于富文本數據渲染)
3.通過以 @ 作為前綴的 Blade 指令執行一些控制結構和繼承、引入之類的操作
4.關鍵字:(關鍵字開始;關鍵字end結束)
????@if、@else、@elseif
????@unless(和 @if 條件相反的條)
????@isset、@empty
????@switch
????@for、@foreach 和 @while

Vue / React

react有函數式編碼和類編碼,這次講的是的類編碼,后面小編爭取出一個函數式編碼的文章

解決辦法:
1.使用Inertia橋接了Laravel應用程序和Vue或React 前端之間的連接,允許使用Vue或React構建成熟的現代前端框架
引入相關類(版本需要升級到laravel9,php版本需要升級到php8):composer require inertiajs/inertia-php
2.直接引入相關資源(主要的JS文件:這樣寫其實是:穿著Blade的外衣的 Vue / React)

路由:

route::get('/reactest',[TestController::class,'reactst']);

頭部:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /><title>Hello React!</title><script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script><script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script><script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>

頁面代碼(包含異步請求):

@include('head')
<body>
<div id="example"></div>
<script type="text/babel">//請求主方法class UserGist extends React.Component {//構造函數(和后端的構造函數類似)constructor(props) {//super關鍵字實現調用父類,super代替的是父類的構建函數super(props);//控制組件的內部狀態變化this.state = {username: '', lastGistUrl: ''};}//在組件掛載后立即調用(插入 DOM 樹中)componentDidMount() {this.serverRequest = $.get(this.props.source, function (result) {var lastGist = result[0];this.setState({username: lastGist.owner.login,lastGistUrl: lastGist.html_url});}.bind(this));}//當組件即將被卸載/銷毀時,會調用這個方法(和后端的析構函數類似)componentWillUnmount() {this.serverRequest.abort();}//渲染方法render() {return (<div>{this.state.username} 用戶最新的 Gist 共享地址:<a href={this.state.lastGistUrl}>{this.state.lastGistUrl}</a></div>);}}//請求主體ReactDOM.render(//調用主方法(賦值請求地址)<UserGist source="https://api.github.com/users/octocat/gists" />,document.getElementById('example'));
</script>
</body>
</html>


7.路由:

use App\Http\Controllers\TestController;//框架路由測試
Route::get('/test', [TestController::class, 'index']);//控制器方法
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;class TestController extends BaseController
{public function index(){return view('test');}
}
?>//框架路由測試
Route::get('/test', [TestController::class, 'index']);//依賴注入
Route::get('/tests', function (Request $request) {//todo or 模板
});//指定請求方法
Route::match(['get', 'post'], '/', function () {//todo or 模板
});Route::any('/', function () {//todo or 模板
});Route::get('/testrequest', function (Request $request) {//todo or 模板
});//路由重定向
Route::redirect('/page1', '/page2');//單參數綁定
Route::get('/page3/{id}', function (string $id) {return '標記 '.$id;
});//多參數綁定
Route::get('/page4/{id}/{ids}', function (string $id,string $ids) {return '標記 '.$id.';新標記'.$ids;
});//可選參數(設置默認值)
Route::get('/page5/{name?}', function (?string $name = null) {return $name;
});//正則表達式(where 添加正則表達式)
Route::get('/page6/{name}', function (string $name) {// ...
})->where('name', '[A-Za-z]+');//路由重命名
Route::get('/page7', function () {// ...
})->name('page7realname');//路由組+中間件
Route::group(['prefix' => 'admin'],function () {Route::get('/page8', function () {//訪問/admin/page8});Route::get('/page9', function () {//訪問/admin/page9});
});//中間件(前置中間件,后置中間件,全局中間件)
php artisan make:middleware EnsureTokenIsValid//使用中間件Route::get('/page10', function () {//todo or 模板
})->middleware(EnsureTokenIsValid::class);//排除中間件Route::group(['prefix' => 'admin'],function () {Route::get('/page11', function () {//todo or 模板})->withoutMiddleware([EnsureTokenIsValid::class]);
});

8.(MVC)php代碼:

M (Model)

<?phpnamespace App;use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;class Users extends Model
{//表protected $table = 'users';//組件protected $primaryKey = 'id';//主鍵自增是否開啟public $incrementing = true;//主鍵 ID 的數據類型protected $keyType = 'int';//表示模型是否應該被打上時間戳public $timestamps = false;//數據庫鏈接模型protected $connection = 'mysql';//定義方法public function phone(){return $this->hasOne(Users_extend::class);}
}

C (Controller)

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Inertia\Inertia;
use Inertia\Response;class UserController extends Controller
{public function show(string $id): Response{return Inertia::render('Users/Profile', ['id' =>$id]);}
}?>

V (View)

<script setup>
import Layout from '@/Layouts/Authenticated.vue'
import { Head } from '@inertiajs/vue3'
const props = defineProps(['user'])
</script><template><Head title="User Profile" /><Layout><template #header><h2 class="text-xl font-semibold leading-tight text-gray-800">vue測試</h2></template><div class="py-12">標識: {{$id}}</div></Layout>
</template>

寫到這里,相信大家已經了解到了,控制器、視圖大家都已經學會了,后面我們開始進階的用法

數據庫(數據庫配置在.env文件中):

9.數據庫 (原生 + Eloquent)


//訪問路由
Route::get('/datacreate', [TestController::class, 'data_create']);
Route::get('/datafind', [TestController::class, 'data_find']);
Route::get('/datafinds', [TestController::class, 'data_finds']);
Route::get('/datafindspage', [TestController::class, 'data_finds_page']);
Route::get('/datafindshasone', [TestController::class, 'data_finds_hasone']);
Route::get('/dataup', [TestController::class, 'data_up']);
use Illuminate\Support\Facades\DB;
//數據庫連接
'mysql' => ['read' => ['host' => ['192.168.1.1','196.168.1.2',],],'write' => ['host' => ['196.168.1.3',],],'sticky' => true,'database' => env('DB_DATABASE', 'forge'),'username' => env('DB_USERNAME', 'forge'),'password' => env('DB_PASSWORD', ''),'unix_socket' => env('DB_SOCKET', ''),'charset' => env('DB_CHARSET', 'utf8mb4'),'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),'prefix' => '','prefix_indexes' => true,'strict' => true,'engine' => null,'options' => extension_loaded('pdo_mysql') ? array_filter([PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),]) : [],
],
//數據庫Eloquent組件
use Illuminate\Database\Eloquent\Model;//創建model
php artisan make:model Users//model方法
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
class Users extends Model
{//表protected $table = 'users';//組件protected $primaryKey = 'id';//主鍵自增是否開啟public $incrementing = true;//主鍵 ID 的數據類型protected $keyType = 'int';//表示模型是否應該被打上時間戳public $timestamps = false;//數據庫鏈接模型protected $connection = 'mysql';//定義方法public function phone(){return $this->hasOne(Users_extend::class);}
}//創建model
php artisan make:model Users_extend//model方法
namespace App;
use Illuminate\Database\Eloquent\Model;
class Users_extend extends Model
{//表protected $table = 'user_extend';//定義方法public function user(){return $this->belongsTo(Users::class);}
}//方法調用
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
//數據庫
use App\Users;class TestController extends BaseController
{//初始化public function __construct(){$this->student = new Users();}//數據創建public function data_create(){$this->student->username='數據測試';$this->student->sex="女";$this->student->age="30";$this->student->save();$userid = $this->student->id;var_dump($userid);die;}//數據查詢public function data_find(){$result = $this->student->where("id",5)->first();var_dump($result);die;}//數據查詢public function data_finds(){$result = $this->student::all();var_dump($result);die;}//數據分頁public function data_finds_page(){$result = $this->student::paginate(2);var_dump($result);die;}//數據一對一(hasone)public function data_finds_hasone(){$phone = $this->student::find(1)->phone;var_dump($phone);die;}//數據修改public function data_up(){$result = $this->student->where("id","=","5")->update(['username'=>"數據測試編號5"]);var_dump($result);die;}
}

10.關聯關系(相當于聯合查詢)

?一對一

return $this->hasOne();
return $this->belongsTo();


一對多

return $this->hasMany();
return $this->belongsTo();


多對多

return $this->belongsToMany();
return $this->belongsToMany();


11.文件上傳表單


<form id="uploadForm" enctype="multipart/form-data">
? ? <input type="file" name="file" />
? ? <input type="submit" value="上傳" />
</form>

//異步方法
<script>
?? ?$(document).ready(function (e) {
?? ??? ??? ?$('#uploadForm').on('submit', function(e) {
?? ??? ??? ??? ??? ?e.preventDefault(); // 阻止表單默認提交行為
?? ??? ??? ??? ??? ?var formData = new FormData(this); // 創建FormData對象
?? ??
?? ??? ??? ??? ??? ?$.ajax({
?? ??? ??? ??? ??? ??? ??? ?type: 'POST',
?? ??? ??? ??? ??? ??? ??? ?url: '/upload', // 這里是你的上傳處理路徑
?? ??? ??? ??? ??? ??? ??? ?data: formData,
?? ??? ??? ??? ??? ??? ??? ?contentType: false,
?? ??? ??? ??? ??? ??? ??? ?processData: false,
?? ??? ??? ??? ??? ??? ??? ?success: function(response) {
?? ??? ??? ??? ??? ??? ??? ??? ??? ?console.log(response); // 處理成功的回調
?? ??? ??? ??? ??? ??? ??? ?},
?? ??? ??? ??? ??? ??? ??? ?error: function() {
?? ??? ??? ??? ??? ??? ??? ??? ??? ?console.log('上傳失敗'); // 處理錯誤的回調
?? ??? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?});
?? ??? ??? ?});
?? ?});
</script>


普通文件上傳

use Illuminate\Support\Facades\Route;
Route::post('/upload', function () {request()->file('file')->store('files', 'public');return '文件上傳成功!';
});

oss文件上傳

<?php
use App\Http\Controllers\Core\ApiController;
use App\Models\LoginLog;
use Illuminate\Http\Request;
use OSS\OssClient;//定義方法
class FileController extends ApiController
{//上傳主方法public function uploadFile(Request $request){//獲取上傳文件$file = $request->file();//上傳方法調用$ret = $this->_upload($file);//參數返回echo json_encode($ret);exit;}//上傳方法protected function _upload($file){//獲取上傳文件名字$dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);//獲取路徑(配置文件中獲取)$storage_path = config('upload.storage');$webpath_path = config('upload.webpath');//重名民上傳文件$image_path = ?$dir_name . '/' . date("Y-m") . '/';//獲取路徑(配置文件中獲取)$app_url = env('APP_URL') . '/';//判斷上傳文件是否存在if (!$file) {return array('error'=>1,'message'=>"文件上傳失敗,請檢查后重試");}//獲取路徑(配置文件中獲取)$ossConfig = config('oss.' . config('upload.ossflag'));if($ossConfig['bucket_addr']) {$app_url = $ossConfig['bucket_addr'];}//文件上傳$tmpName = $file->getPathName();$fileExtension = $file->getClientOriginalExtension();$filePath = md5_file($tmpName) . '.' . $fileExtension;//判斷文件大小$file_size = $file->getSize();if($file_size > config('upload.maxSize')){return array('error'=>1,'message'=>"文件不可以超過50MB");}//判斷是否符合上傳類型if (!in_array(strtolower($fileExtension),config('upload.allowExts'))){return array('error'=>1,'message'=>"文件類型不支持");}//上傳成功后處理if(config('oss.' . 'oss_open') == 1) {//初始化OSS對象$oss = new OssClient($ossConfig['access_key_id'], $ossConfig['access_key_secret'], $ossConfig['endpoint']);//oss上傳$res = $oss->uploadFile($ossConfig['bucket'],$webpath_path . $image_path . $filePath,$v->getPathName());if ($res){$data['oss'] = 1;$data['attach_url'] = $ossConfig['bucket_addr'] . $webpath_path . $image_path . $filePath;} else {$data['attach_url'] = $app_url . $webpath_path . $image_path . $filePath;$data['oss'] = 0;}$data['time'] = time();} else {$data['oss'] = 0;$data['attach_url'] = $app_url. $webpath_path . $image_path . $filePath;$data['time'] = time();}if(!$data['oss'] || config('oss.' . 'is_delete') != 1){$file->move($storage_path . $image_path, $filePath); ? ?unset($data);}return array('error'=>0,'url'=>$data['attach_url']);}
}


????????講到這里基礎的部分就已經完成了,萬米高樓平地起,先復習到這里,先趕著做項目去了,后面高級一點的廣播、緩存、集合、上下文啥的,后面有機會再出一個學習文章供大家學習

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

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

相關文章

大數據開發面試題【Spark篇】

115、Spark的任務執行流程 driver和executor&#xff0c;結構式一主多從模式&#xff0c; driver&#xff1a;spark的驅動節點&#xff0c;用于執行spark任務中的main方法&#xff0c;負責實際代碼的執行工作&#xff1b;主要負責&#xff1a;將代碼邏輯轉換為任務、在executo…

編譯qt5.15.2(mac/windows)的mysql驅動(附帶編譯好的文件)

文章目錄 0 背景1 編譯過程2 福利 0 背景 因為需要連接到mysql數據庫&#xff0c;所以需要連mysql驅動。 1 編譯過程 1&#xff0c;打開文件/Users/mac/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/sqldrivers.pro&#xff0c;注釋掉QMAKE_USE mysql&#xff1b; 如…

國產【Jetson Xavier NX】——從裸機到深度學習開發環境配置

1、設置系統從固態硬盤啟動 英偉達官方NX出廠是直接將SD卡&#xff08;64/128G&#xff09;燒錄系統作為系統盤使用&#xff0c;國產NX出廠是將系統配置在8G內存中&#xff0c;在后續使用中需配置大量開發包&#xff0c;故將系統設置為從固態硬盤啟動。 參考鏈接 https://blo…

vue3中使用svg圖標

安裝依賴 npm i vite-plugin-svg-icons -D vite.config.ts中添加配置 主要為指定svg圖標存放路徑以及命名方式 import { defineConfig } from vite import vue from vitejs/plugin-vue import { createSvgIconsPlugin } from vite-plugin-svg-icons import path from path;…

總結力學_3

參考: 陳曦<<力學講義>>http://ithatron.phys.tsinghua.edu.cn/downloads/mechanics.pdf 10 非慣性系 10.1 勻加速平動非慣性系 10.2 定軸勻速轉動非慣性系 可以更好刻劃總結力學_2的有心力運動、質點系的運動的工具! 11 線性系統 11.1 線性系統、11.2 受迫…

【深入理解Python中的裝飾器】

文章目錄 前言裝飾器的基本概念帶參數的裝飾器類作為裝飾器結論 前言 裝飾器是Python中一個非常強大且靈活的特性&#xff0c;它允許程序員在不修改原函數代碼的情況下&#xff0c;增加或修改函數的行為。裝飾器本質上是一個接受函數作為參數并返回一個新函數的函數。本文將深…

點擊登錄按鈕先檢測輸入框的規則檢測(vue組合式)

<template><el-form :model"user" :rules"rules" ref"loginForm" label-width"auto" style"max-width: 600px"><el-form-item label"用戶名" prop"name"><el-input v-model"…

【Linux-LCD 驅動】

Linux-LCD 驅動 ■ Framebuffer 簡稱 fb■ LCD 驅動程序編寫■ 1、LCD 屏幕 IO 配置■ 2、LCD 屏幕參數節點信息修改■ 3、LCD 屏幕背光節點信息■ 4、使能 Linux logo 顯示 ■ 設置 LCD 作為終端控制臺■ 1、設置 uboot 中的 bootargs■ 2、修改/etc/inittab 文件 ■ LCD 背光…

ROS的noetic版本

設置 sources.list 執行下面命令&#xff0c;設置從清華源下載 ROS 軟件包。 sudo sh -c echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list設置密鑰 sudo apt-key adv --keyse…

鴻蒙知識點總結

1 Stage模型應用程序包結構 在開發態&#xff0c;一個應用包含一個或者多個Module&#xff0c;可以在DevEco Studio工程中創建一個或者多個Module。Module是HarmonyOS應用/服務的基本功能單元&#xff0c;包含了源代碼、資源文件、第三方庫及應用/服務配置文件&#xff0c;每一…

快速上手 HuggingFace

HuggingFace HuggingFace 是類似于 GitHub 的社區&#xff0c;它主要提供各種的模型的使用&#xff0c;和 github 不同的是&#xff0c;HuggingFace 同時提供了一套框架&#xff0c;進行模型推理&#xff0c;模型訓練、和模型庫文件的管理等等。本文將介紹&#xff0c;如何快速…

【MySQL精通之路】全文搜索(9)-全文解析器-MeCab

主博客&#xff1a; 【MySQL精通之路】全文搜索功能-CSDN博客 目錄 1.介紹 2.安裝MeCab Parser插件 3.創建使用MeCab分析器的FULLTEXT索引 4.MeCab Parser空間處理 5.MeCab分析程序停止字處理 6.MeCab Parser術語搜索 7.MeCab分析程序通配符搜索 8.MeCab語法分析器短語…

echarts學習篇

一、使用echarts 1.引入 Apache ECharts <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <!-- 引入剛剛下載的 ECharts 文件 --> <script src"echarts.js"></script> </head> </html> 2.…

深度神經網絡——什么是自動編碼器?

自動編碼器 自動編碼器&#xff08;Autoencoders&#xff09;是無監督學習領域中一種重要的神經網絡架構&#xff0c;它們主要用于數據壓縮和特征學習。 自動編碼器的定義&#xff1a; 自動編碼器是一種無監督機器學習算法&#xff0c;它通過反向傳播進行訓練&#xff0c;目標…

【夏之以寒-Kafka專欄 02】什么情況下會發生 QueueFullException?

作者名稱&#xff1a;夏之以寒 作者簡介&#xff1a;專注于Java和大數據領域&#xff0c;致力于探索技術的邊界&#xff0c;分享前沿的實踐和洞見 文章專欄&#xff1a;夏之以寒-kafka專欄 專欄介紹&#xff1a;本專欄旨在以淺顯易懂的方式介紹Kafka的基本概念、核心組件和使用…

2023山東ICPC省賽Problem B.建筑公司(拓撲排序)

2023 山東 I C P C 省賽 P r o b l e m B . 建筑公司 \Huge{2023山東ICPC省賽Problem B.建筑公司} 2023山東ICPC省賽ProblemB.建筑公司 文章目錄 題意思路標程 比賽鏈接&#xff1a;Dashboard - The 13th Shandong ICPC Provincial Collegiate Programming Contest - Codeforce…

OWASP top10--SQL注入(三、手工注入)

目錄 access數據庫 手工注入過程&#xff1a; 猜解數據庫表名 猜解數據庫表名里面的字段 猜解字段內容 SQL注入中的高級查詢 mssql數據庫 手工注入過程&#xff1a; sa權限 ?編輯dbowner權限 public權限 mysql數據庫 1、對服務器文件進行讀寫操作(前提條件) 需要知…

文刻創作ai工具官網免費工具

文刻創作ai工具官網免費工具 Docshttps://iimenvrieak.feishu.cn/docx/O0UedptjbonN4UxyEy7cPlZknYc 文刻是一種可以幫助用戶進行創作的AI工具。 它使用自然語言處理和機器學習技術&#xff0c;可以生成文章、故事、詩歌等文本內容。 用戶可以通過輸入一些關鍵詞或指定一定的…

浙江大學數據結構MOOC-課后習題-第七講-圖4 哈利·波特的考試

題目匯總 浙江大學數據結構MOOC-課后習題-拼題A-代碼分享-2024 題目描述 代碼展示 照著教程視頻來的&#xff0c;沒啥好說的捏 #include <cstdlib> #include <iostream>#define MAXSIZE 100 #define IFINITY 65535 typedef int vertex; typedef int weightType;/…

為什么大部分新手做抖音小店賺不到錢?

大家好&#xff0c;我是噴火龍。 今天來給大家聊聊&#xff0c;為什么大部分新手做抖店賺不到錢&#xff1f; 不知道大家想過這個問題沒有&#xff0c;可能有些人把賺不到錢的原因歸結于市場、或者平臺、又或者運營技術以及做店經驗。 但我覺得這些都不是重點&#xff0c;重…