libsvm python模型秒变API?MLServer这招绝了,不用Flask也能跑
你有没有碰到过这种情形, 就是当你训练好了一个新的模型之后, 有时候你不想费神去编写那个Flask Code也就是web框架, 也不想把模型进行容器化并且在某个环境里运行它, 只是想要借助API马上就能使用这个模型?要是你存在这样的需求, 那必然是会希望去了解的。它属于是一个基于某种情况的推理服务器, 近期推出了有着GA遗传算法的版本, 而这是一款专门为生产环境所设计构造的具备高性能的服务器。使用它, 能够确保, 在本地构建模型, 且这种构建的模型, 与投入生产环境后的模型, 是保持一致状态的。本文以几个图像模型为例向您介绍如何使用 。数据集我们所要运用的数据集是MNIST, 其所包含的是张数为70,000的灰度呈现的、像素为28x28的有关服装的图像, 这些图像覆盖了10个不一样的类别具体像上衣、连衣裙、外套、裤子等等。若您打算令本文里的代码再现, 务必要保证把文件下载下来, 且将其解开压缩, 放置到名为 data 的地方, 鉴于文件个头极度大, 存储库里把它们给省略掉了。1.训练 -learn 模型首先, 我们会运用 -learn 构架去训练一个支持向量机, 简称为 SVM, 的模型。而后, 我们要把模型存放至一个称作 -MNIST 的文件里边。import pandas as pd from sklearn import svm import time import joblib #Load Training Data train pd.read_csv(../../data/fashion-mnist_train.csv, header0) y_train train[label] X_train train.drop([label], axis1) classifier svm.SVC(kernelpoly, degree4, gamma0.1) #Train Model start time.time() classifier.fit(X_train.values, y_train.values) end time.time() exec_time end-start print(fExecution time: {exec_time} seconds) #Save Model joblib.dump(classifier, Fashion-MNIST.joblib)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.须留意, SVM算法并非格外适配大型数据集, 缘由在于其具备二次性质。依据您的硬件状况, 在此示例里的模型将会耗费几分钟时间来进行训练。2.服务于 -learn 模型经循着上面那些步骤, 我们获取到了一个名为MNIST的模型文件, 紧接着, 来瞧瞧怎样借助它去提供服务。首先通过如下命令安装 pip 。尽管额外的运行时组件属于可选范畴, 然而在服务模型之际会更为顺畅, 故而我们也会去安装 -Learn 以及 的扩展。完成pip - -操作后就需要添加如下两个配置文件1.json- 这包含服务器本身的配置。2.model-.json- , 按字面意思理解, 这个文件里面涵盖着将要去运行的模型配置。对于.json文件只定义一个参数就足够了{ debug: true }1.2.3.这一model-.json的文件, 是需要更多信息的, 原因在于它务必要知晓服务之中的模型信息。{ name: fashion-sklearn, implementation: mlserver_sklearn.SKLearnModel, parameters: { uri: ./Fashion_MNIST.joblib, version: v1 } }1.2.3.4.5.6.7.8.name参数给出了唯一识标, 它在多个模型的服务情形之际很有用处, 这一点过后会提及。要去界定以便预建起服务器, 假若存在这种服务器的话。它跟在训练模型所运用的机器学习框架紧密相连。于我们的实例当中运用 -learn去训练模型, 因而会借助 -learn来达成。配置之时得给出模型文件的所在位置以及版本编号。经过之上提及的配置, 便能够运用如下命令来给我们的模型予以服务: start。简单来讲, 当下已然使得模型于本地服务器那儿运行起来了。此刻, 其现已能够接纳诸如 HTTP 以及 gRPC默认端口是 8080 和 8081这般的请求了。3.测试模型模型已然启动, 且在正常运行着, 此刻, 让我们去发送一些请求, 以此来测试它的运行状况。我们会通过如下URL 发送一个 POST 请求:8080/v2/////infer此URL所表达的意思是, 去访问先前训练好的那个-lea模型, 在此处, 仅仅需要把带有-的模型名字予以替换, 与此同时, 还得把之以v1去进行替换才行。下述代码呈现怎样去导入测试数据, 朝着模型服务器发出请求, 接着把结果跟实际标签予以比较。import pandas as pd import requests #Import test data, grab the first row and corresponding label test pd.read_csv(../../data/fashion-mnist_test.csv, header0) y_test test[label][0:1] X_test test.drop([label],axis1)[0:1] #Prediction request parameters inference_request { inputs: [ { name: predict, shape: X_test.shape, datatype: FP64, data: X_test.values.tolist() } ] } endpoint http://localhost:8080/v2/models/fashion-sklearn/versions/v1/infer #Make request and print response response requests.post(endpoint, jsoninference_request) print(response.text) print(y_test.values)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.运行上面的test.py之后会从 得到以下响应model_name: fashion-sklearn, model_version: v1, id: 31c3fa70-2e56-49b1-bcec-294452dbe73c, parameters: null, outputs: [ { name: predict, shape: [ 1 ], datatype: INT64, parameters: null, data: [ 0 ] } ] }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.知道从响应里能够晓得, 生成可了一个请求身份标识, 并且自动添加上了给服务请求所用的模型以及版本的元数据。一旦模型投入进产品生产环节, 收集类似这般的的元数据就变得格外重要起来。它能让我们记录每一个请求, 进而便利地开展审计以及故障排查工作。您或许也留意到, 返回一个数组。尽管于请求里仅发送了一行数据, 然而处理批量请求, 且一并返回。我们甚至能够借助一种称作自适应批处理的技术, 来优化在生产环境中处理多个请求的方式。于上述其中示例里, 亦能够找寻到模型所预测出的结果。.data显示模型已将这个样本标记成了类别0数值0对应着类别t-shirt/top此般情况下此样本的真实的标签0也是如此, 所以能够证实模型得到的是正确的预测。4.训练 模型依循上面所举的例子, 我们知悉了怎样去运用, 从而创建单个模型, 紧接着, 让我们瞧瞧该如何处置, 在不同框架里训练的多个模型。依旧使用 MNIST 数据集但这次将训练模型。import pandas as pd import xgboost as xgb import time #Load Training Data train pd.read_csv(../../data/fashion-mnist_train.csv, header0) y_train train[label] X_train train.drop([label], axis1) dtrain xgb.DMatrix(X_train.values, labely_train.values) #Train Model params { max_depth: 5, eta: 0.3, verbosity: 1, objective: multi:softmax, num_class : 10 } num_round 50 start time.time() bstmodel xgb.train(params, dtrain, num_round, evals[(dtrain, label)], verbose_eval10) end time.time() exec_time end-start print(fExecution time: {exec_time} seconds) #Save Model bstmodel.save_model(Fashion_MNIST.json)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.上边用来训练模型的代码, 跟之前用来训练 -learn 模型的代码相似, 然而这次, 为了让我们的模型兼容 的格式, 把它存成了.json 文件。5.服务多个模型主要的一个优点在于能够支持多模型服务, 这所蕴含的意思是, 不需要针对所部署的每个ML模型去创建或者运行新的服务器, 借助上述构建而成的模型, 会运用这个功能同时为它们供给服务。一旦启动, 它会于目录以及其中任何子目录里搜寻model-.json文件。要是您存在多个model-.json文件, 那它会自动给所有文件赋予服务。留意: 您依旧仅需指明根目录里的那种, 服务器配置文件.json。这是目录结构的细分以供参考. ├── data │ ├── fashion-mnist_test.csv │ └── fashion-mnist_train.csv ├── models │ ├── sklearn │ │ ├── Fashion_MNIST.joblib │ │ ├── model-settings.json │ │ ├── test.py │ │ └── train.py │ └── xgboost │ ├── Fashion_MNIST.json │ ├── model-settings.json │ ├── test.py │ └── train.py ├── README.md ├── settings.json └── test_models.py1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.提请留意着, 存在着两个名为model-.json的文件, 其中一个是应用于-learn模型的, 另一个是应用于另一模型的。现在可以运行 start .它将开始处理两个模型的请求。[mlserver] INFO - Loaded model fashion-sklearn succesfully. [mlserver] INFO - Loaded model fashion-xgboost succesfully.1.2.6.测试多个模型的准确性当前, 有着两个模型, 它们都处于运行的状态, 且运行的平台是特定的那个, 在这里, 我们能够运用测试集中所包含的样本, 以此用来验证每一个模型所具备的准确性。有这样一段代码, 它会向每一个模型送去一个批处理请求, 此请求涵盖完整的测试集, 将预测值跟真实标签予以比较, 在整个测试集上去执行这个操作, 这为我们给出了衡量每个模型准确性的方式, 并且会把最终结果打印出来。import pandas as pd import requests import json #Import the test data and split the data from the labels test pd.read_csv(./data/fashion-mnist_test.csv, header0) y_test test[label] X_test test.drop([label],axis1) #Build the inference request inference_request { inputs: [ { name: predict, shape: X_test.shape, datatype: FP64, data: X_test.values.tolist() } ] } #Send the prediction request to the relevant model, compare responses to training labels and calculate accuracy def infer(model_name, version): endpoint fhttp://localhost:8080/v2/models/{model_name}/versions/{version}/infer response requests.post(endpoint, jsoninference_request) #calculate accuracy correct 0 for i, prediction in enumerate(json.loads(response.text)[outputs][0][data]): if y_test[i] prediction: correct 1 accuracy correct / len(y_test) print(fModel Accuracy for {model_name}: {accuracy}) infer(fashion-xgboost, v1) infer(fashion-sklearn, v1)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.结果表明 模型略微优于 SVM -learn 模型Model Accuracy for fashion-xgboost: 0.8953 Model Accuracy for fashion-sklearn: 0.8641.2.总结望以之上所述, 您已明晰运用服务模型之大体流程。若欲知悉更多讯息, 您得去研读相关文档, 还要查看不同框架之示例。若是用户, 能够运用来在里提供予以模型, 倘若当作用户, 即应明确知晓Core, 它是一个把模型部署到的开源工具, 其在后台运用。WWw.M.nffqi.cN/Article/details/309390.shtmlWWw.M.nffqi.cN/Article/details/194530.shtmlWWw.M.nffqi.cN/Article/details/393874.shtmlWWw.M.nffqi.cN/Article/details/445304.shtmlWWw.M.nffqi.cN/Article/details/987391.shtmlWWw.M.nffqi.cN/Article/details/323542.shtmlWWw.M.nffqi.cN/Article/details/934783.shtmlWWw.M.nffqi.cN/Article/details/148240.shtmlWWw.M.nffqi.cN/Article/details/794720.shtmlWWw.M.nffqi.cN/Article/details/383183.shtmlWWw.M.nffqi.cN/Article/details/669542.shtmlWWw.M.nffqi.cN/Article/details/650828.shtmlWWw.M.nffqi.cN/Article/details/847151.shtmlWWw.M.nffqi.cN/Article/details/108858.shtmlWWw.M.nffqi.cN/Article/details/827150.shtmlWWw.M.nffqi.cN/Article/details/169663.shtmlWWw.M.nffqi.cN/Article/details/534983.shtmlWWw.M.nffqi.cN/Article/details/978123.shtmlWWw.M.nffqi.cN/Article/details/740514.shtmlWWw.M.nffqi.cN/Article/details/034841.shtmlWWw.M.nffqi.cN/Article/details/530888.shtmlWWw.M.nffqi.cN/Article/details/037664.shtmlWWw.M.nffqi.cN/Article/details/304897.shtmlWWw.M.nffqi.cN/Article/details/003532.shtmlWWw.M.nffqi.cN/Article/details/291126.shtmlWWw.M.nffqi.cN/Article/details/703704.shtmlWWw.M.nffqi.cN/Article/details/893196.shtmlWWw.M.nffqi.cN/Article/details/333619.shtmlWWw.M.nffqi.cN/Article/details/712624.shtmlWWw.M.nffqi.cN/Article/details/558887.shtmlWWw.M.nffqi.cN/Article/details/993615.shtmlWWw.M.nffqi.cN/Article/details/464237.shtmlWWw.M.nffqi.cN/Article/details/973204.shtmlWWw.M.nffqi.cN/Article/details/738562.shtmlWWw.M.nffqi.cN/Article/details/222772.shtmlWWw.M.nffqi.cN/Article/details/081270.shtmlWWw.M.nffqi.cN/Article/details/450371.shtmlWWw.M.nffqi.cN/Article/details/693987.shtmlWWw.M.nffqi.cN/Article/details/570090.shtmlWWw.M.nffqi.cN/Article/details/910043.shtmlWWw.M.nffqi.cN/Article/details/416849.shtmlWWw.M.nffqi.cN/Article/details/179283.shtmlWWw.M.nffqi.cN/Article/details/779511.shtmlWWw.M.nffqi.cN/Article/details/867623.shtmlWWw.M.nffqi.cN/Article/details/861047.shtmlWWw.M.nffqi.cN/Article/details/073760.shtmlWWw.M.nffqi.cN/Article/details/322279.shtmlWWw.M.nffqi.cN/Article/details/021371.shtmlWWw.M.nffqi.cN/Article/details/381681.shtmlWWw.M.nffqi.cN/Article/details/293551.shtmlWWw.M.nffqi.cN/Article/details/436024.shtmlWWw.M.nffqi.cN/Article/details/802886.shtmlWWw.M.nffqi.cN/Article/details/640518.shtmlWWw.M.nffqi.cN/Article/details/563479.shtmlWWw.M.nffqi.cN/Article/details/364609.shtmlWWw.M.nffqi.cN/Article/details/436952.shtmlWWw.M.nffqi.cN/Article/details/433020.shtmlWWw.M.nffqi.cN/Article/details/075271.shtmlWWw.M.nffqi.cN/Article/details/039176.shtmlWWw.M.nffqi.cN/Article/details/458304.shtmlWWw.M.nffqi.cN/Article/details/004400.shtmlWWw.M.nffqi.cN/Article/details/873597.shtmlWWw.M.nffqi.cN/Article/details/332401.shtmlWWw.M.nffqi.cN/Article/details/256005.shtmlWWw.M.nffqi.cN/Article/details/633507.shtmlWWw.M.nffqi.cN/Article/details/484234.shtmlWWw.M.nffqi.cN/Article/details/903360.shtmlWWw.M.nffqi.cN/Article/details/450203.shtmlWWw.M.nffqi.cN/Article/details/916639.shtmlWWw.M.nffqi.cN/Article/details/641850.shtmlWWw.M.nffqi.cN/Article/details/303898.shtmlWWw.M.nffqi.cN/Article/details/894479.shtmlWWw.M.nffqi.cN/Article/details/184523.shtmlWWw.M.nffqi.cN/Article/details/662069.shtmlWWw.M.nffqi.cN/Article/details/632003.shtmlWWw.M.nffqi.cN/Article/details/699185.shtmlWWw.M.nffqi.cN/Article/details/330990.shtmlWWw.M.nffqi.cN/Article/details/176144.shtmlWWw.M.nffqi.cN/Article/details/897106.shtmlWWw.M.nffqi.cN/Article/details/853334.shtmlWWw.M.nffqi.cN/Article/details/329565.shtmlWWw.M.nffqi.cN/Article/details/092396.shtmlWWw.M.nffqi.cN/Article/details/956718.shtmlWWw.M.nffqi.cN/Article/details/424671.shtmlWWw.M.nffqi.cN/Article/details/351311.shtmlWWw.M.nffqi.cN/Article/details/658095.shtmlWWw.M.nffqi.cN/Article/details/899843.shtmlWWw.M.nffqi.cN/Article/details/216099.shtmlWWw.M.nffqi.cN/Article/details/052279.shtmlWWw.M.nffqi.cN/Article/details/213053.shtmlWWw.M.nffqi.cN/Article/details/042686.shtmlWWw.M.nffqi.cN/Article/details/713647.shtmlWWw.M.nffqi.cN/Article/details/021862.shtmlWWw.M.nffqi.cN/Article/details/950243.shtmlWWw.M.nffqi.cN/Article/details/708179.shtmlWWw.M.nffqi.cN/Article/details/664937.shtmlWWw.M.nffqi.cN/Article/details/575126.shtmlWWw.M.nffqi.cN/Article/details/194575.shtmlWWw.M.nffqi.cN/Article/details/717661.shtmlWWw.M.nffqi.cN/Article/details/262819.shtmlWWw.M.nffqi.cN/Article/details/084260.shtmlWWw.M.nffqi.cN/Article/details/699610.shtmlWWw.M.nffqi.cN/Article/details/969200.shtmlWWw.M.nffqi.cN/Article/details/533931.shtmlWWw.M.nffqi.cN/Article/details/016782.shtmlWWw.M.nffqi.cN/Article/details/033769.shtmlWWw.M.nffqi.cN/Article/details/824593.shtmlWWw.M.nffqi.cN/Article/details/437022.shtmlWWw.M.nffqi.cN/Article/details/089687.shtmlWWw.M.nffqi.cN/Article/details/577536.shtmlWWw.M.nffqi.cN/Article/details/147542.shtmlWWw.M.nffqi.cN/Article/details/001790.shtmlWWw.M.nffqi.cN/Article/details/991019.shtmlWWw.M.nffqi.cN/Article/details/906831.shtmlWWw.M.nffqi.cN/Article/details/361533.shtmlWWw.M.nffqi.cN/Article/details/368641.shtmlWWw.M.nffqi.cN/Article/details/637943.shtmlWWw.M.nffqi.cN/Article/details/643369.shtmlWWw.M.nffqi.cN/Article/details/119889.shtmlWWw.M.nffqi.cN/Article/details/001788.shtmlWWw.M.nffqi.cN/Article/details/661574.shtmlWWw.M.nffqi.cN/Article/details/491834.shtmlWWw.M.nffqi.cN/Article/details/650884.shtmlWWw.M.nffqi.cN/Article/details/320622.shtmlWWw.M.nffqi.cN/Article/details/069705.shtmlWWw.M.nffqi.cN/Article/details/127104.shtmlWWw.M.nffqi.cN/Article/details/350967.shtmlWWw.M.nffqi.cN/Article/details/143750.shtmlWWw.M.nffqi.cN/Article/details/803294.shtmlWWw.M.nffqi.cN/Article/details/709145.shtmlWWw.M.nffqi.cN/Article/details/454660.shtmlWWw.M.nffqi.cN/Article/details/569047.shtmlWWw.M.nffqi.cN/Article/details/078018.shtmlWWw.M.nffqi.cN/Article/details/234936.shtmlWWw.M.nffqi.cN/Article/details/453469.shtmlWWw.M.nffqi.cN/Article/details/171249.shtmlWWw.M.nffqi.cN/Article/details/883606.shtmlWWw.M.nffqi.cN/Article/details/191825.shtmlWWw.M.nffqi.cN/Article/details/303884.shtmlWWw.M.nffqi.cN/Article/details/809979.shtmlWWw.M.nffqi.cN/Article/details/987173.shtmlWWw.M.nffqi.cN/Article/details/465972.shtmlWWw.M.nffqi.cN/Article/details/859276.shtmlWWw.M.nffqi.cN/Article/details/960483.shtmlWWw.M.nffqi.cN/Article/details/308023.shtmlWWw.M.nffqi.cN/Article/details/555532.shtmlWWw.M.nffqi.cN/Article/details/793549.shtmlWWw.M.nffqi.cN/Article/details/505441.shtmlWWw.M.nffqi.cN/Article/details/899911.shtmlWWw.M.nffqi.cN/Article/details/509961.shtmlWWw.M.nffqi.cN/Article/details/543890.shtmlWWw.M.nffqi.cN/Article/details/342608.shtmlWWw.M.nffqi.cN/Article/details/696814.shtmlWWw.M.nffqi.cN/Article/details/744025.shtmlWWw.M.nffqi.cN/Article/details/134183.shtmlWWw.M.nffqi.cN/Article/details/871265.shtmlWWw.M.nffqi.cN/Article/details/116248.shtmlWWw.M.nffqi.cN/Article/details/680304.shtmlWWw.M.nffqi.cN/Article/details/694683.shtmlWWw.M.nffqi.cN/Article/details/630111.shtmlWWw.M.nffqi.cN/Article/details/644647.shtmlWWw.M.nffqi.cN/Article/details/915597.shtmlWWw.M.nffqi.cN/Article/details/939582.shtmlWWw.M.nffqi.cN/Article/details/583724.shtmlWWw.M.nffqi.cN/Article/details/848589.shtmlWWw.M.nffqi.cN/Article/details/111908.shtmlWWw.M.nffqi.cN/Article/details/254696.shtmlWWw.M.nffqi.cN/Article/details/406288.shtmlWWw.M.nffqi.cN/Article/details/676505.shtmlWWw.M.nffqi.cN/Article/details/000704.shtmlWWw.M.nffqi.cN/Article/details/148191.shtmlWWw.M.nffqi.cN/Article/details/093762.shtmlWWw.M.nffqi.cN/Article/details/539677.shtmlWWw.M.nffqi.cN/Article/details/382812.shtmlWWw.M.nffqi.cN/Article/details/826759.shtmlWWw.M.nffqi.cN/Article/details/899994.shtmlWWw.M.nffqi.cN/Article/details/113803.shtmlWWw.M.nffqi.cN/Article/details/004045.shtmlWWw.M.nffqi.cN/Article/details/432403.shtmlWWw.M.nffqi.cN/Article/details/385086.shtmlWWw.M.nffqi.cN/Article/details/577939.shtmlWWw.M.nffqi.cN/Article/details/965955.shtmlWWw.M.nffqi.cN/Article/details/400467.shtmlWWw.M.nffqi.cN/Article/details/329649.shtmlWWw.M.nffqi.cN/Article/details/124272.shtmlWWw.M.nffqi.cN/Article/details/588470.shtmlWWw.M.nffqi.cN/Article/details/416867.shtmlWWw.M.nffqi.cN/Article/details/741709.shtmlWWw.M.nffqi.cN/Article/details/380772.shtmlWWw.M.nffqi.cN/Article/details/116078.shtmlWWw.M.nffqi.cN/Article/details/851188.shtmlWWw.M.nffqi.cN/Article/details/890929.shtmlWWw.M.nffqi.cN/Article/details/221354.shtmlWWw.M.nffqi.cN/Article/details/869367.shtmlWWw.M.nffqi.cN/Article/details/768705.shtmlWWw.M.nffqi.cN/Article/details/217739.shtmlWWw.M.nffqi.cN/Article/details/261901.shtmlWWw.M.nffqi.cN/Article/details/489023.shtmlWWw.M.nffqi.cN/Article/details/569264.shtmlWWw.M.nffqi.cN/Article/details/781022.shtmlWWw.M.nffqi.cN/Article/details/786003.shtmlWWw.M.nffqi.cN/Article/details/541656.shtmlWWw.M.nffqi.cN/Article/details/484876.shtmlWWw.M.nffqi.cN/Article/details/148176.shtmlWWw.M.nffqi.cN/Article/details/368754.shtmlWWw.M.nffqi.cN/Article/details/290934.shtmlWWw.M.nffqi.cN/Article/details/758377.shtmlWWw.M.nffqi.cN/Article/details/636378.shtmlWWw.M.nffqi.cN/Article/details/228126.shtmlWWw.M.nffqi.cN/Article/details/029295.shtmlWWw.M.nffqi.cN/Article/details/917042.shtmlWWw.M.nffqi.cN/Article/details/082234.shtmlWWw.M.nffqi.cN/Article/details/670944.shtmlWWw.M.nffqi.cN/Article/details/408356.shtmlWWw.M.nffqi.cN/Article/details/037164.shtmlWWw.M.nffqi.cN/Article/details/870182.shtmlWWw.M.nffqi.cN/Article/details/506091.shtmlWWw.M.nffqi.cN/Article/details/631544.shtmlWWw.M.nffqi.cN/Article/details/030380.shtmlWWw.M.nffqi.cN/Article/details/227294.shtmlWWw.M.nffqi.cN/Article/details/337391.shtmlWWw.M.nffqi.cN/Article/details/466303.shtmlWWw.M.nffqi.cN/Article/details/019576.shtmlWWw.M.nffqi.cN/Article/details/751878.shtmlWWw.M.nffqi.cN/Article/details/185173.shtmlWWw.M.nffqi.cN/Article/details/575216.shtmlWWw.M.nffqi.cN/Article/details/697997.shtmlWWw.M.nffqi.cN/Article/details/845995.shtmlWWw.M.nffqi.cN/Article/details/514171.shtmlWWw.M.nffqi.cN/Article/details/199970.shtmlWWw.M.nffqi.cN/Article/details/214742.shtmlWWw.M.nffqi.cN/Article/details/127301.shtmlWWw.M.nffqi.cN/Article/details/055269.shtmlWWw.M.nffqi.cN/Article/details/566826.shtmlWWw.M.nffqi.cN/Article/details/892809.shtmlWWw.M.nffqi.cN/Article/details/558114.shtmlWWw.M.nffqi.cN/Article/details/627651.shtmlWWw.M.nffqi.cN/Article/details/785901.shtmlWWw.M.nffqi.cN/Article/details/504988.shtmlWWw.M.nffqi.cN/Article/details/556071.shtmlWWw.M.nffqi.cN/Article/details/072834.shtmlWWw.M.nffqi.cN/Article/details/192647.shtmlWWw.M.nffqi.cN/Article/details/076529.shtmlWWw.M.nffqi.cN/Article/details/631082.shtmlWWw.M.nffqi.cN/Article/details/852996.shtmlWWw.M.nffqi.cN/Article/details/363032.shtmlWWw.M.nffqi.cN/Article/details/394533.shtmlWWw.M.nffqi.cN/Article/details/735831.shtmlWWw.M.nffqi.cN/Article/details/805350.shtmlWWw.M.nffqi.cN/Article/details/764132.shtmlWWw.M.nffqi.cN/Article/details/473328.shtmlWWw.M.nffqi.cN/Article/details/317231.shtmlWWw.M.nffqi.cN/Article/details/374085.shtmlWWw.M.nffqi.cN/Article/details/740219.shtmlWWw.M.nffqi.cN/Article/details/858368.shtmlWWw.M.nffqi.cN/Article/details/239887.shtmlWWw.M.nffqi.cN/Article/details/470385.shtmlWWw.M.nffqi.cN/Article/details/206640.shtmlWWw.M.nffqi.cN/Article/details/727352.shtmlWWw.M.nffqi.cN/Article/details/954810.shtmlWWw.M.nffqi.cN/Article/details/156222.shtmlWWw.M.nffqi.cN/Article/details/889403.shtmlWWw.M.nffqi.cN/Article/details/717335.shtmlWWw.M.nffqi.cN/Article/details/887965.shtmlWWw.M.nffqi.cN/Article/details/347193.shtmlWWw.M.nffqi.cN/Article/details/014952.shtmlWWw.M.nffqi.cN/Article/details/309596.shtmlWWw.M.nffqi.cN/Article/details/034937.shtmlWWw.M.nffqi.cN/Article/details/186086.shtmlWWw.M.nffqi.cN/Article/details/984511.shtmlWWw.M.nffqi.cN/Article/details/934002.shtmlWWw.M.nffqi.cN/Article/details/319672.shtmlWWw.M.nffqi.cN/Article/details/919389.shtmlWWw.M.nffqi.cN/Article/details/385257.shtmlWWw.M.nffqi.cN/Article/details/830600.shtmlWWw.M.nffqi.cN/Article/details/342782.shtmlWWw.M.nffqi.cN/Article/details/309574.shtmlWWw.M.nffqi.cN/Article/details/610735.shtmlWWw.M.nffqi.cN/Article/details/772079.shtmlWWw.M.nffqi.cN/Article/details/797422.shtmlWWw.M.nffqi.cN/Article/details/284051.shtmlWWw.M.nffqi.cN/Article/details/216848.shtmlWWw.M.nffqi.cN/Article/details/841090.shtmlWWw.M.nffqi.cN/Article/details/605241.shtmlWWw.M.nffqi.cN/Article/details/691085.shtmlWWw.M.nffqi.cN/Article/details/267729.shtmlWWw.M.nffqi.cN/Article/details/401179.shtmlWWw.M.nffqi.cN/Article/details/343631.shtmlWWw.M.nffqi.cN/Article/details/650301.shtmlWWw.M.nffqi.cN/Article/details/468631.shtmlWWw.M.nffqi.cN/Article/details/084102.shtmlWWw.M.nffqi.cN/Article/details/004956.shtmlWWw.M.nffqi.cN/Article/details/662960.shtmlWWw.M.nffqi.cN/Article/details/825352.shtmlWWw.M.nffqi.cN/Article/details/770448.shtmlWWw.M.nffqi.cN/Article/details/264615.shtmlWWw.M.nffqi.cN/Article/details/942844.shtmlWWw.M.nffqi.cN/Article/details/095407.shtmlWWw.M.nffqi.cN/Article/details/748304.shtmlWWw.M.nffqi.cN/Article/details/766215.shtmlWWw.M.nffqi.cN/Article/details/407182.shtmlWWw.M.nffqi.cN/Article/details/021020.shtmlWWw.M.nffqi.cN/Article/details/965566.shtmlWWw.M.nffqi.cN/Article/details/848453.shtmlWWw.M.nffqi.cN/Article/details/282318.shtmlWWw.M.nffqi.cN/Article/details/991282.shtmlWWw.M.nffqi.cN/Article/details/379135.shtmlWWw.M.nffqi.cN/Article/details/311331.shtmlWWw.M.nffqi.cN/Article/details/346459.shtmlWWw.M.nffqi.cN/Article/details/301891.shtmlWWw.M.nffqi.cN/Article/details/140413.shtmlWWw.M.nffqi.cN/Article/details/210680.shtmlWWw.M.nffqi.cN/Article/details/737453.shtmlWWw.M.nffqi.cN/Article/details/110648.shtmlWWw.M.nffqi.cN/Article/details/481586.shtmlWWw.M.nffqi.cN/Article/details/357763.shtmlWWw.M.nffqi.cN/Article/details/219585.shtmlWWw.M.nffqi.cN/Article/details/278044.shtmlWWw.M.nffqi.cN/Article/details/930024.shtmlWWw.M.nffqi.cN/Article/details/074597.shtmlWWw.M.nffqi.cN/Article/details/413842.shtmlWWw.M.nffqi.cN/Article/details/516137.shtmlWWw.M.nffqi.cN/Article/details/400957.shtmlWWw.M.nffqi.cN/Article/details/835304.shtmlWWw.M.nffqi.cN/Article/details/278214.shtmlWWw.M.nffqi.cN/Article/details/516459.shtmlWWw.M.nffqi.cN/Article/details/974848.shtmlWWw.M.nffqi.cN/Article/details/758400.shtmlWWw.M.nffqi.cN/Article/details/670985.shtmlWWw.M.nffqi.cN/Article/details/796937.shtmlWWw.M.nffqi.cN/Article/details/810411.shtmlWWw.M.nffqi.cN/Article/details/078233.shtmlWWw.M.nffqi.cN/Article/details/984930.shtmlWWw.M.nffqi.cN/Article/details/068125.shtmlWWw.M.nffqi.cN/Article/details/911018.shtmlWWw.M.nffqi.cN/Article/details/132901.shtmlWWw.M.nffqi.cN/Article/details/641033.shtmlWWw.M.nffqi.cN/Article/details/606036.shtmlWWw.M.nffqi.cN/Article/details/013112.shtmlWWw.M.nffqi.cN/Article/details/172100.shtmlWWw.M.nffqi.cN/Article/details/187135.shtmlWWw.M.nffqi.cN/Article/details/644057.shtmlWWw.M.nffqi.cN/Article/details/197292.shtmlWWw.M.nffqi.cN/Article/details/995494.shtmlWWw.M.nffqi.cN/Article/details/782093.shtmlWWw.M.nffqi.cN/Article/details/981954.shtmlWWw.M.nffqi.cN/Article/details/315342.shtmlWWw.M.nffqi.cN/Article/details/696285.shtmlWWw.M.nffqi.cN/Article/details/812113.shtmlWWw.M.nffqi.cN/Article/details/694965.shtml

相关新闻

基于热释电红外传感器与Arduino的智能安防报警系统DIY全攻略

基于热释电红外传感器与Arduino的智能安防报警系统DIY全攻略

1. 项目概述:从“被动防御”到“主动预警”的跨越提起家庭或小型场所的安全防护,很多人第一时间想到的是摄像头。但摄像头更多是“事后追溯”的工具,它记录下发生了什么,却无法在入侵发生的瞬间发出即时警报。而红外报警装置&…

2026/9/19 12:30:47 阅读更多 →
基于Arduino与状态机的智能红绿灯系统设计与实现

基于Arduino与状态机的智能红绿灯系统设计与实现

1. 项目概述:从“拍脑袋”到“动手做”的智能路口构想每次在路口等红绿灯,看着空无一人的斑马线和倒计时几十秒的红灯,心里总会冒出个念头:这时间是不是有点浪费?尤其是深夜或者车流稀少的时段,让行人干等那…

2026/9/21 7:28:12 阅读更多 →
基于ESP32-S3与百度智能云打造AI对话毛绒玩具:从硬件选型到系统整合

基于ESP32-S3与百度智能云打造AI对话毛绒玩具:从硬件选型到系统整合

1. 项目概述:当毛绒玩具学会“思考”几年前,我给侄女买过一个会重复几句话的电子玩具熊,新鲜感过去后就被丢在了角落。这让我一直在想,能不能做一个真正能互动、有“灵魂”的玩伴?直到最近,随着像ESP32-S3这…

2026/9/19 16:03:57 阅读更多 →

最新新闻

3招搞定网站标识代码怎么加,避开性能优化大坑

3招搞定网站标识代码怎么加,避开性能优化大坑

3招搞定网站标识代码怎么加,避开性能优化大坑 域名解析配错、服务器环境没选对,90%的新手在搞SEO时都栽在这。你辛辛苦苦写了篇长文,结果用户打开页面转圈加载,搜索引擎爬虫也抓不到核心数据,这锅谁背?别怪算法变了,很多时候是基础代码没埋对,尤其是那些看似不起眼的网站标识代码,一旦加错位置或格式,不仅…

2026/9/21 8:45:18 阅读更多 →
3类高危漏洞:网页制作模板中文源码下载安全自查

3类高危漏洞:网页制作模板中文源码下载安全自查

3类高危漏洞:网页制作模板中文源码下载安全自查 域名服务器搞不懂,是无数运营推广人员接手“网页制作模板中文”项目时的噩梦。你手里拿着一个看起来很漂亮的模板,后台却像个黑盒,更别提那些藏在代码深处的安全隐患。…

2026/9/21 8:30:15 阅读更多 →
汽车之家网页版地址排查指南:3步定位挂马源,附前端布局对比评测

汽车之家网页版地址排查指南:3步定位挂马源,附前端布局对比评测

汽车之家网页版地址排查指南:3步定位挂马源,附前端布局对比评测 网站被黑挂马,后台却一片空白,这种绝望感每个运维和前端都懂。别慌,这通常不是代码逻辑错误,而是服务器环境或静态资源被篡改。今天不聊虚的,直接上干货,用 对比评测 的思路,带你从 汽车之家网页版地址…

2026/9/21 8:14:36 阅读更多 →
企业网站做电脑营销避坑指南:选哪家好别只看价格,看这套设计规范

企业网站做电脑营销避坑指南:选哪家好别只看价格,看这套设计规范

企业网站做电脑营销避坑指南:选哪家好别只看价格,看这套设计规范 改个需求建站公司拖一周,这种憋屈事谁没经历过?很多老板找企业网站做电脑营销,问得最多的一句话就是“哪家好”。其实,网站好不好用,营销转不转化,核心不在你付了多少钱,而在前端代码写得够不够规范,设计逻辑是否支撑你的业务目标。…

2026/9/21 8:00:00 阅读更多 →
做品管圈网站哪家好?3步避开被黑挂马陷阱

做品管圈网站哪家好?3步避开被黑挂马陷阱

做品管圈网站哪家好?3步避开被黑挂马陷阱 网站上线三天,后台突然多了个奇怪的脚本,页面弹出一堆博彩广告,SEO排名一夜清零。如果你正面临这种“网站被黑挂马不知道怎么办”的噩梦,先别慌着删库重装。很多站长在找做品管圈网站哪家好时,只盯着价格和功能,却忽略了最底层的代码安全与架构选型。今天咱们不聊虚的,…

2026/9/21 7:44:43 阅读更多 →
Voyager 資料夾管理指南:為 Gemini 與 AI Studio 的 AI 對話打造真正的「檔案系統」

Voyager 資料夾管理指南:為 Gemini 與 AI Studio 的 AI 對話打造真正的「檔案系統」

AI 应用前端 【免费下载链接】voyager Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;其中的提示词管理器可用…

2026/9/21 7:41:44 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →