当前位置: 首页 > news >正文

fastadmin 后台商品sku(vue)

先上个效果图

 首先先引入vue

define(['backend'], function (Backend) {require.config({paths: {'vue': '/assets/jeekshopskugoods/libs/vue.min','skuimg': '/assets/jeekshopskugoods/js/skuimg','skugoods': '/assets/jeekshopskugoods/js/skugoods','layui': '/assets/LayuiSpzj/layui/layui',//js省略,如果是vue.min.js,就学vue.min},shim: {//sku商品插件'vue': {exports: 'vue'},'skugoods': {deps: ['css!/assets/jeekshopskugoods/css/skugoods.css',],exports: 'skugoods'},'layui': {deps: ['css!/assets/LayuiSpzj/layui/css/layui.css'],init:function (){return this.layui.config({ base:'/assets/laySku-master/lay-module/'} );}},// 'skuTable': {//     // deps: ['/assets/laySku-master/layui/layui.js'],//     exports: 'skuTable'// },// 'sorTable': {//     deps: ['/assets/laySku-master/layui/layui.js','/assets/laySku-master/lay-module/sorTable.js'],//     exports: 'sorTable'// },}});});

 sku.html

<style>.delete{width: 20px;height: 20px;position: relative;top: -20px;font-size: 18px;color: red;right: 8px;cursor:pointer;}
</style>
<div class="form-group"><label class="control-label col-xs-12 col-sm-2">{:__('SKU库')}:</label><div class="col-xs-12 col-sm-10"><input id="c-skutitle" data-source="skus/skus/index" class="form-control selectpage" data-field="title" name="row[skutitle]" type="text" value="" placeholder="选择sku,会覆盖现在的sku,请慎重"></div>
</div>
<div class="form-group"><div id="app" v-cloak class="col-xs-12 col-sm-12"><input id="c-skutitles" name="row[skutitle]" @change="getskus"  type="hidden" value=""><label class="control-label col-xs-12 col-sm-2">库存/规格</label><div class="input-group"><input type="text" class="form-control" placeholder="输入规格名称" ref="attr-group-name"> <span class="input-group-addon pointer" @click="addRow">添加规格</span></div><!-- 规格项 --><div class="sku-content"><div class="panel panel-default" v-for="(v, i) in attrGroups"><header class="panel-heading text-center"><b>{{v}}</b> <i class="pull-right fa fa-trash pointer text-danger" @click="removeGroup(i)"></i></header><div class="row row-content"><div class="col-md-6 col-sm-6 col-xs-6"><div class="input-group"><input type="text" class="form-control" :ref="`attr-item-name-${i}`"><span class="input-group-addon pointer" @click="addChild(i)">添加</span></div></div><div class="col-md-6 col-sm-6 col-xs-6 tag-content"><span class="tag" v-for="(vv, j) in attrItems[i]">{{vv}} <i class="fa fa-minus-circle pointer text-danger" @click="removeChild(i, j)"></i></span></div></div></div></div><div class="row" v-show="attrGroups.length"><div class="col-md-12"><table class="table table-bordered attr-table"><thead><tr><th v-for="(v, i) in attrGroups">{{v}}</th><th width="80">UPC</th><th width="80">价格</th>
<!--            <th width="80">库存</th>-->
<!--            <th width="80">编码</th>--><th width="180">图片</th>
<!--            <th width="80">状态</th>--></tr></thead><tbody><tr><td :colspan="attrGroups.length" width="80">批量设置</td><td><div class="input-group "><input type="number" ref="batch-market_price" class="form-control no-padding text-center"> <span @click="batchSetAttrs('market_price')" class="input-group-addon pointer">设置</span></div></td><td><div class="input-group "><input type="number" ref="batch-price" class="form-control no-padding text-center"> <span @click="batchSetAttrs('price')" class="input-group-addon pointer">设置</span></div></td><td><!--              <img src="/assets/jeekshopskugoods/img/upload.png" @click="upimage()">--><div @click="upimage()">批量设置</div><!--              <div class="input-group"><input type="number" ref="batch-stock" class="form-control no-padding text-center"> <span @click="batchSetAttrs('stock')" class="input-group-addon pointer">设置</span></div>--></td><!--            <td>--><!--              <div class="input-group"><input type="text" ref="batch-sn" class="form-control"> <span @click="batchSetAttrs('sn')" class="input-group-addon pointer">设置</span></div>--><!--            </td>--></tr><tr v-for="(v, i) in productSkus" :class="v.status!=1?'':'disabled'"><td v-for="(vv, j) in v.attr" width="80">{{vv}}</td><td width="80"><input type="number" name="dsd" class="input-sm form-control attr-market_price" v-model="v.market_price"></td><td width="80"><input type="number" class="input-sm form-control attr-price" v-model="v.price"></td>
<!--            <td width="80">-->
<!--              <input type="number" class="input-sm form-control attr-stock" v-model="v.stock">-->
<!--            </td>-->
<!--            <td width="80">-->
<!--              <input type="text" class="input-sm form-control attr-sn" v-model="v.sn">-->
<!--            </td>--><td width="80"><div class="sku-img" style="width: auto"><div  v-if="v.image.length > 0" style="display: inline"><span v-for="(ita,a) in v.image" :key='a' style="margin-top:10px ;display: inline-block"><img:src="ita"style="":draggable="true"@dragstart="dragCurrentStart($event,i, a)"@dragover="e=>e.preventDefault()"@dragenter="dragTargetEnter($event,i ,a)"@drop="dragEnd"><span class="delete" @click="showFiguredelete(i,a)">×</span></span>
<!--                    <i v-if="v.image.length > 0" class="fa fa-minus-circle text-danger img-trash" @click.stop="delimage(i,a)"></i>--></div><img src="/assets/jeekshopskugoods/img/upload.png" @click="upimagea($event,i)"></div></td>
<!--            <td width="80">-->
<!--              <input type="hidden" class="input-sm form-control attr-status" v-model="v.status">-->
<!--              <i v-if="v.status==1" class="fa fa-toggle-on text-success fa-2x" @click="toggle(i,0)"></i>-->
<!--              <i v-else class="fa fa-toggle-off text-gray fa-2x" @click="toggle(i,1)"></i>-->
<!--            </td>--></tr></tbody></table><div class="hide"><input type="text" name="row[skus]" :value="productSkusStr"><input type="text" name="row[groups]" :value="attrGroupsStr"><input type="text" name="row[items]" :value="attrItemsStr"></div></div></div></div>
</div>

skugoods.js

define(['jquery', 'vue', 'skuimg'], function($, Vue, Skuimg) {'use strict';var jeekshopsku = {_init: function(d) {var f = { 'market_price': '', 'price': '', 'image': [] }; // 默认商品规格的字段this.vueInit(f, d);},vueInit: function(f, d) {var vm = new Vue({el: '#app',data() {return {attrGroups: d.groups,attrItems: d.items,productSkus: d.products,dragCurIndex: null,                       // 当前拖拽图片下标timer: null}},computed: {productSkusStr() {return JSON.stringify(this.productSkus)},attrGroupsStr() {return JSON.stringify(this.attrGroups)},attrItemsStr() {return JSON.stringify(this.attrItems)}},mounted() {Skuimg.init()},methods: {// 开始拖拽当前图片dragCurrentStart(e, index,a) {this.dragCurIndex = a;},// 图片拖拽排序dragTargetEnter(e,index,a) {e.preventDefault();if (this.timer) {clearTimeout(this.timer);}// console.log(this.productSkus[index].image)this.timer = setTimeout(()=>{let tmp = this.productSkus[index].image[a];this.productSkus[index].image.splice(a, 1, this.productSkus[index].image[this.dragCurIndex]);this.productSkus[index].image.splice(this.dragCurIndex, 1, tmp);this.dragCurIndex = index;},100)// console.log(this.productSkus[index].image)},// 拖拽结束清除定时器dragEnd() {clearTimeout(this.timer);},setAttrGroupName(i, e) {this.$set(this.attrGroups, i, e.target.value)},addRow() {var val = this.$refs['attr-group-name'].valueif ($.trim(val) == '') {Toastr.error("不能为空")return}if (val.indexOf(',') > -1) {Toastr.error("不能包含符号‘,’")return}this.attrGroups.push(val)this.attrItems.push([])this.$refs['attr-group-name'].value = ''},addChild(index) {var val = this.$refs['attr-item-name-' + index][0].valueif ($.trim(val) == '') {Toastr.error("不能为空")return}if (val.indexOf(',') > -1) {Toastr.error("不能包含符号‘,’")return}if (!val) return falseconsole.log(this.productSkus)if (this.attrItems[index]) {this.attrItems[index].push(val)} else {this.attrItems.push([val])this.productSkus.push( { 'attr':[val],'market_price': '', 'price': '', 'image': [] });}let oldtproductSkus=this.productSkus;this.$refs['attr-item-name-' + index][0].value = ""this.generateProducts()for (var i = 0; i < this.productSkus.length; i++){if (oldtproductSkus.hasOwnProperty(i) && oldtproductSkus[i].attr.length==1){this.productSkus[i].image=oldtproductSkus[i].imagethis.productSkus[i].market_price=oldtproductSkus[i].market_pricethis.productSkus[i].price=oldtproductSkus[i].price}else {for (var j = 0; j < oldtproductSkus.length; j++) {if (this.isEqual(this.productSkus[i].attr,oldtproductSkus[j].attr)) {this.productSkus[i].image = oldtproductSkus[j].imagethis.productSkus[i].market_price = oldtproductSkus[j].market_pricethis.productSkus[i].price = oldtproductSkus[j].price}}}// console.log(arr[i]);}},isEqual(arr1, arr2) {if (arr1.length !== arr2.length) {return false;}for (let i = 0; i < arr1.length; i++) {if (arr1[i] !== arr2[i]) {return false;}}return true;},upimagea(event,i) {let that = this;Skuimg.open(function(data) {console.log(i)console.log(that.productSkus)that.productSkus[i].image=that.productSkus[i].image.concat(data.url)// that.productSkus[i].image.push()// console.log(that.productSkus)Skuimg.close()})},upimage() {let that = this;Skuimg.open(function(data) {// console.log(i)console.log(that.productSkus)for (var i = 0; i < that.productSkus.length; i++){that.productSkus[i].image=that.productSkus[i].image.concat(data.url)// console.log(arr[i]);}// that.productSkus[0].image.push()// console.log(that.productSkus)Skuimg.close()})},getskus(event){this.inputValue = event.target.value; // 更新数据属性let newsku=JSON.parse(this.inputValue);this.productSkus=newsku.productsthis.attrItems=newsku.itemsthis.attrGroups=newsku.groupsconsole.log(1111)console.log(newsku); // 打印输入框的值},showFiguredelete(i,index){console.log(i)console.log(this.productSkus[i].image)// this.productSkus[i].image=this.productSkus[i].image.concat(data.url)this.productSkus[i].image.splice(index,1)},delimage(i,a) {console.log(a)console.log(this.productSkus[i][0]);// vm.$set(this.productSkus[i], 'image', '')// vm.productSkus[i].image.pop();},// toggle(i, j) {//     vm.$set(vm.productSkus[i], 'status', j)// },removeElement1(arr, index) {arr.splice(index, 1);return arr;},removeChild(i, j) {let oldtproductSkus=this.productSkus;console.log(this.attrItems)this.removeElement1(this.attrItems[i],j)// this.attrItems[i].pop(j)this.generateProducts()for (var i = 0; i < this.productSkus.length; i++){if (oldtproductSkus[i].attr.length==1){this.productSkus[i].image=oldtproductSkus[i].imagethis.productSkus[i].market_price=oldtproductSkus[i].market_pricethis.productSkus[i].price=oldtproductSkus[i].price}else {for (var n = 0; n < oldtproductSkus.length; n++) {if (this.isEqual(this.productSkus[i].attr,oldtproductSkus[n].attr)) {this.productSkus[i].image = oldtproductSkus[n].imagethis.productSkus[i].market_price = oldtproductSkus[n].market_pricethis.productSkus[i].price = oldtproductSkus[n].price}}}// console.log(arr[i]);}},removeGroup(i) {let oldtproductSkus=this.productSkus;this.attrGroups.pop(i)if (this.attrItems[i]){this.attrItems.pop(i)}for (var i = 0; i < this.productSkus.length; i++){if (oldtproductSkus[i].attr.length==1){this.productSkus[i].image=oldtproductSkus[i].imagethis.productSkus[i].market_price=oldtproductSkus[i].market_pricethis.productSkus[i].price=oldtproductSkus[i].price}else {for (var n = 0; n < oldtproductSkus.length; n++) {if (this.isEqual(this.productSkus[i].attr,oldtproductSkus[n].attr)) {this.productSkus[i].image = oldtproductSkus[n].imagethis.productSkus[i].market_price = oldtproductSkus[n].market_pricethis.productSkus[i].price = oldtproductSkus[n].price}}}// console.log(arr[i]);}this.generateProducts()},generateProducts() {this.productSkus = this.descartes(this.attrItems)},descartes(array) {var arr = [].reduce.call(array, function(a, b) {var ret = [];a.forEach(function(a) {b.forEach(function(b) {ret.push(a.concat([b]));});});return ret;}, [[]]);var ret = [];arr.map(function(v, i) {var sku = { "attr": v };Object.assign(sku, f);ret.push(sku)});return ret;},batchSetAttrs(field) {var v = this.$refs['batch-' + field].valuevar v = isNaN(Number(v)) ? v : Number(v);var productSkus = this.productSkusfor (var i = 0; i < productSkus.length; i++) {productSkus[i][field] = v}this.productSkus = productSkus}}})},}return jeekshopsku;
});

skuimg.js

define(['jquery', 'upload', 'form'
], function($, Upload, Form) {'use strict';var skuimg = {html: '<div class="i-modal"><div class="i-content"><p>上传/选择图片</p><button data-upload-success="onSuccess" data-multiple="true" type="button" id="plupload-i-image" class="plupload" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp"><i class="fa fa-upload"></i> 上传</button><button type="button" id="fachoose-i-image" class="fachoose" data-mimetype="image/*" ><i class="fa fa-list"></i>选择</button><span class="close fa fa-close"></span></div></div>',css: "<style>.i-modal {background: rgba(0, 0, 0, 0.3); z-index: 9999; position: fixed;left: 0; top: 0; height: 100%; width: 100%;}.i-content{text-align: center;background: #fff; border-radius: 8px; width: 400px; height: 190px;position: absolute;left: 50%;top: 50%;-webkit-transform: translate(-50%, -50%);transform: translate(-50%, -50%);}.i-content button{width: 100px;height: 100px;color: #606266;border: 1px dashed #999;border-radius: 10px;background: none;margin: 0 5px;}.i-content button:hover{border-color: #409eff}.i-modal .i-content p {margin: 15px 0;}.i-modal .i-content .close{position: absolute;right: 5px; top: 5px; font-size: 20px;}</style>",el: '.i-modal',cb: function() {},open: function(cb) {var _this = thisthis.cb = cbUpload.api.custom['onSuccess'] = _this.cb$(this.el).show()},close: function() {$(this.el).hide()},init: function() {$(document.body).append(this.html)$(document.body).append(this.css)this.bindEvent()this.close()},bindEvent: function() {var _this = thisUpload.api.plupload('.plupload', $(_this.el))$(".fachoose", _this.el).on('click', function() {var multiple = $(this).data("multiple") ? $(this).data("multiple") : false;var mimetype = $(this).data("mimetype") ? $(this).data("mimetype") : '';var admin_id = $(this).data("admin-id") ? $(this).data("admin-id") : '';var user_id = $(this).data("user-id") ? $(this).data("user-id") : '';parent.Fast.api.open("general/attachment/select?element_id=" + $(this).attr("id") + "&multiple=" + multiple + "&mimetype=" + mimetype + "&admin_id=" + admin_id + "&user_id=" + user_id, __('Choose'), {callback: function(data) {console.log(data)// var arr = data.url.split(",");// data.url = arr;_this.cb(data)// console.log(data)}})})$('.close', _this.el).on('click', function() {_this.close()})$('.i-modal', document).on('click', function(e) {_this.close()})$('.i-content', '.i-modal').on('click', function(e) {e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true})}};return skuimg;
});

goods.js

define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'skugoods'], function($, undefined, Backend, Table, Form, Sku) {var Controller = {index: function () {// 初始化表格参数配置Table.api.init({extend: {index_url: 'goods/goods/index' + location.search,add_url: 'goods/goods/add',edit_url: 'goods/goods/edit',del_url: 'goods/goods/del',multi_url: 'goods/goods/multi',import_url: 'goods/goods/import',table: 'goods',}});var table = $("#table");// 初始化表格table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,pk: 'id',sortName: 'id',maintainSelected: true,fixedColumns: true,fixedRightNumber: 1,columns: [[{checkbox: true},{field: 'id', title: __('Id')},{field: 'member_id', title: __('Member_id')},{field: 'title', title: __('Title'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'sku', title: __('Sku'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'upc', title: __('Upc'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},// {field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},{field: 'price', title: __('Price'), operate:'BETWEEN'},{field: 'currency_unit', title: __('Currency_unit'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'url', title: __('Url'), operate: 'LIKE', formatter: Table.api.formatter.url},{field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},// {field: 'image_trans', title: __('Image_trans')},{field: 'button',width: "150px",title: __('转化图片'),table: table,// events: Controller.api.events.trans,buttons: [{name: 'click',title: __('转化图片'),classname: 'btn btn-xs btn-info btn-trans btn-click',icon: 'fa fa-magic',}],formatter: function (value, row, index) {var progress =  "<div class='progress'><div class='progress-bar' role='progressbar' aria-valuenow='50' aria-valuemin='0' aria-valuemax='100' style='width:"+row['image_trans'].toFixed(2)+"%'>"+row['image_trans'].toFixed(2)+"</div></div>"var trans = ''if(row['image_trans']<100) trans =  Table.api.buttonlink(this, this.buttons, value, row, index, 'button')transhtml = "<div class='trans'>" + trans + "</div>"return  transhtml + progress;}},{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}]]});//导出var submitForm = function (ids, layero) {var options = table.bootstrapTable('getOptions');console.log(options);var columns = [];$.each(options.columns[0], function (i, j) {if (j.field && !j.checkbox && j.visible && j.field != 'operate') {columns.push(j.field);}});var search = options.queryParams({});$("input[name=search]", layero).val(options.searchText);$("input[name=ids]", layero).val(ids);$("input[name=filter]", layero).val(search.filter);$("input[name=op]", layero).val(search.op);$("input[name=columns]", layero).val(columns.join(','));$("form", layero).submit();};var submitData = function (ids, layero) {var options = table.bootstrapTable('getOptions');console.log(options);var columns = [];$.each(options.columns[0], function (i, j) {if (j.field && !j.checkbox && j.visible && j.field != 'operate') {columns.push(j.field);}});var search = options.queryParams({});return search;};$(document).on("click", ".btn-export", function () {var ids = Table.api.selectedids(table);var page = table.bootstrapTable('getData');var all = table.bootstrapTable('getOptions').totalRows;console.log(ids, page, all);Layer.confirm("请选择导出的选项<form action='" + Fast.api.fixurl("goods/goods/export") + "' method='post' target='_blank'><input type='hidden' name='ids' value='' /><input type='hidden' name='filter' ><input type='hidden' name='op'><input type='hidden' name='search'><input type='hidden' name='columns'></form>", {title: '导出数据',btn: ["选中项(" + ids.length + "条)", "本页(" + page.length + "条)", "全部(" + all + "条)"],success: function (index,layero) {$(".layui-layer-btn a", layero).addClass("layui-layer-btn0");},yes: function (index, layero) {submitForm(ids.join(","), layero);return false;},btn2: function (index, layero) {var ids = [];$.each(page, function (i, j) {ids.push(j.id);});submitForm(ids.join(","), layero);return false;},btn3: function (index, layero) {submitForm("all", layero);return false;}});parent.Layer.close(index);});// 为表格绑定事件Table.api.bindevent(table);},add: function () {//获取sku库数据var d = { groups: [], items: [], products: [] }$('input[name="row[skutitle]"]').change(function() {// 当单选按钮的值发生变化时,这里的代码会被执行var selectedValue = $(this).val();console.log('选中的值是:', selectedValue);$.ajax({url:'skus/skus/getOne',type: 'GET',dataType: 'json',data: {ids: selectedValue,},success:function(res){console.log(res.data)var inputElement = document.getElementById('c-skutitles');inputElement.value = res.data;// $('#c-skutitles').val();inputElement.dispatchEvent(new Event('change'));}});});Sku._init(d);Controller.api.bindevent();},edit: function (row) {$('input[name="row[skutitle]"]').change(function() {// 当单选按钮的值发生变化时,这里的代码会被执行var selectedValue = $(this).val();console.log('选中的值是:', selectedValue);$.ajax({url:'skus/skus/getOne',type: 'GET',dataType: 'json',data: {ids: selectedValue,},success:function(res){console.log(res.data)var inputElement = document.getElementById('c-skutitles');inputElement.value = res.data;// $('#c-skutitles').val();inputElement.dispatchEvent(new Event('change'));}});});Sku._init(Config.skus);Controller.api.bindevent();},api: {bindevent: function () {Form.api.bindevent($("form[role=form]"));},}};return Controller;
});

项目代码 https://gitee.com/btzhyxjdmg/sku-plugin

相关文章:

fastadmin 后台商品sku(vue)

先上个效果图 首先先引入vue define([backend], function (Backend) {require.config({paths: {vue: /assets/jeekshopskugoods/libs/vue.min,skuimg: /assets/jeekshopskugoods/js/skuimg,skugoods: /assets/jeekshopskugoods/js/skugoods,layui: /assets/LayuiSpzj/layui/la…...

Qt显示一个hello world

一、显示思路 思路一&#xff1a;通过图形化方式&#xff0c;界面上创建出一个控件显示。 思路二&#xff1a;通过编写C代码在界面上创建控件显示。 二、思路一实现 点开 Froms 的 widget.ui&#xff0c;拖拽 label 控件&#xff0c;显示 hello world 即可。 qmake 基于 .…...

LeetCode 热题 100 53. 最大子数组和

LeetCode 热题 100 | 53. 最大子数组和 大家好&#xff0c;今天我们来解决一道经典的算法题——最大子数组和。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求我们找出一个具有最大和的连续子数组&#xff0c;并返回其最大和。下面我将详细讲解解题思路&#xff0c;并…...

需求: 使用 minio 做一个 企业微信对话的下载、存储,利用deepseek进行对话回复

以下是基于企业微信会话存档API和MinIO对象存储实现对话记录下载与存储的完整方案&#xff0c;涵盖技术选型、接口对接、存储配置及安全性设计等核心环节&#xff1a; 一、技术架构设计 系统组成&#xff1a; 数据采集层&#xff1a;通过企业微信API拉取会话存档数据&#xff0…...

vulnhub靶场之【digitalworld.local系列】的bravery靶机

前言 靶机&#xff1a;digitalworld.local-bravery&#xff0c;IP地址为192.168.10.8 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 kali采用VMware虚拟机&#xff0c;靶机采用virtualbox虚拟机&#xff0c;网卡都为桥接模式 这里官方给的有两种方式&#xff0c;…...

JMeter 实战项目脚本录制最佳实践(含 BadBoy 录制方式)

JMeter 实战项目脚本录制最佳实践&#xff08;含 BadBoy 录制方式&#xff09; 一、项目背景 在软件测试过程中&#xff0c;使用 JMeter 进行性能测试和功能测试是常见的操作。本实战项目将详细介绍如何使用 JMeter 自带工具以及 BadBoy 进行脚本录制&#xff0c;并完善脚本以…...

数据库基础五(数据库环境变量配置详细教程)

1、在小皮的设置界面检测3306端口&#xff0c;保障3306端口可用&#xff1b; 2、在小皮的首面界面&#xff0c;启动MySQL&#xff1b; 3、进行环境变量设置&#xff0c;找到MySQL的路径&#xff0c;进行复制&#xff1b; 4、在Windows的搜索栏内&#xff0c;输入“环境变量”&a…...

Matlab 大量接单

分享一个matlab接私活、兼职的平台 1、技术方向满足任一即可 2、技术要求 3、最后 技术方向满足即可 MATLAB&#xff1a;熟练掌握MATLAB编程语言&#xff0c;能够使用MATLAB进行数据处理、机器学习和深度学习等相关工作。 机器学习、深度学习、强化学习、仿真、复现、算法、…...

【算法】链表题型总结

链表题型可分为快慢指针和虚拟头节点两种解题技巧。 快慢指针 使用两个指针&#xff08;快指针和慢指针&#xff09;&#xff0c;以不同的速度遍历链表&#xff0c;解决与链表位置、环检测相关的问题。 反转链表 快慢指针&#xff0c;慢指针一次走一步&#xff0c;快指针一次…...

【C++】对字符串的常用操作

C 中的字符串操作主要通过两种方式实现&#xff1a;使用 C 风格的字符串&#xff08;字符数组&#xff09;和使用 C 标准库中的 std::string 类型。大多数现代 C 程序使用 std::string 进行字符串处理&#xff0c;因为它提供了许多便捷的成员函数来处理字符串操作。以下是常见的…...

人工智能AI在汽车设计领域的应用探索

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…...

Linux mkdir 命令

Linux mkdir&#xff08;英文全拼&#xff1a;make directory&#xff09;命令用于创建目录。 语法 mkdir [-p] dirName 参数说明&#xff1a; -p 确保目录名称存在&#xff0c;不存在的就建一个。 实例 在工作目录下&#xff0c;建立一个名为 runoob 的子目录 : mkdir …...

gin框架学习笔记

初始gin package mainimport "github.com/gin-gonic/gin"type Response struct {Code int json:"code"Msg string json:"msg"Data any json:"data" }func index(c *gin.Context) {c.JSON(200, Response{Code: 0,Msg: "1…...

什么是预训练语言模型下游任务?

问题&#xff1a;Word2Vec模型是预训练模型吗&#xff1f; 由于训练的特性&#xff0c;word2Vec模型一定是与训练模型。给定一个词先使用独热编码然后使用预训练好的Q矩阵得到这个词的词向量。这里指的是词向量本身就是预训练的语言模型。 什么是下游任务&#xff1f; 在自然…...

cursor 弹出在签出前,请清理仓库工作树 窗口

问题出现的背景&#xff1a;是因为我有两台电脑开发&#xff0c;提交后&#xff0c;另一个电脑的代码是旧的&#xff0c;这个时候我想拉取最新的代码&#xff0c;就会出现如下弹窗&#xff0c;因为这个代码暂存区有记录或者工作区有代码的修改&#xff0c;所以有冲突&#xff0…...

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调 环境准备创建Python微调环境准备数据集准备模型文件 模型微调模型预测原始模型预测微调模型预测 使用unsloth&#xff0c;可以方便地对大模型进行微调。以微调DeepSeek-R1-Distill-Llama-8B为…...

Ubuntu20.04安装Redis

目录 切换到root用户 使用 apt install redis 安装redis 修改配置文件 ​编辑 重新启动服务器 使用Redis客户端连接服务器 切换到root用户 如果没有切换到root用户的&#xff0c;切换到root用户。 使用 apt install redis 安装redis 遇到y/n直接y即可。 redis安装好之…...

【Word2Vec】Skip-gram 的直观理解(深入浅出)

01 什么是skip-gram 一句话来说就是&#xff0c;给定中心词&#xff0c;然后预测其周围的词&#xff1a; 02 模型结构 对于skip-gram来说&#xff0c;输入是一个[1 x V]维的ont-hot向量&#xff0c;其中V为词表大小&#xff0c;值为1的那一项就表示我们的中心词。经过一个[V x…...

MQ 笔记

什么是消息队列&#xff1f; 消息队列&#xff08;Message Queue, MQ&#xff09;是一种用于在分布式系统中传递消息的中间件技术。 它允许应用程序通过发送和接收消息进行异步通信。 消息队列的核心思想是解耦生产者和消费者&#xff0c;生产者将消息发送到队列中&#xff…...

leetcode第216题组合总和Ⅲ

原题出于leetcode第216题https://leetcode.cn/problems/combination-sum-iii/description/题目为&#xff1a; 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表…...

【零基础C语言】第四节 数组

【零基础C语言系列】 【零基础C语言】第一节 C语言概述【数制进制码制】-CSDN博客 【零基础C语言】第二节 数据类型、运算符、表达式-CSDN博客 【零基础C语言】第三节 控制结构-CSDN博客 一、一维数组...

20250225-代码笔记03-class CVRPModel AND other class

文章目录 前言一、class CVRPModel(nn.Module):__init__(self, **model_params)函数功能函数代码 二、class CVRPModel(nn.Module):pre_forward(self, reset_state)函数功能函数代码 三、class CVRPModel(nn.Module):forward(self, state)函数功能函数代码 四、def _get_encodi…...

京准电钟快讯:NTP时钟同步服务在智造行业应用

京准电钟快讯&#xff1a;NTP时钟同步服务在智造行业应用 京准电钟快讯&#xff1a;NTP时钟同步服务在智造行业应用 一、NTP技术概述 基本原理 NTP&#xff08;Network Time Protocol&#xff09;是一种用于同步计算机系统时间的网络协议&#xff0c;通过分层时钟源&#xff…...

【Qt】详细介绍如何在Visual Studio Code中编译、运行Qt项目

Visual Studio Code一只用的顺手&#xff0c;写Qt的时候也能用VS Code开发就方便多了。 理论上也不算困难&#xff0c;毕竟Qt项目其实就是CMake&#xff08;QMake的情况这里就暂不考虑了&#xff09;项目&#xff0c;VS Code在编译、运行CMake项目还是比较成熟的。 这里笔者打…...

jsherp importItemExcel接口存在SQL注入

一、漏洞简介 很多人说管伊佳ERP&#xff08;原名&#xff1a;华夏ERP&#xff0c;英文名&#xff1a;jshERP&#xff09;是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能&#xff0c;但后面将会推出ERP的全部功能&#xff0c;有兴趣请帮点一下 二、漏洞影响 …...

Node.js, Bun, Deno 比较概述

以下是 Node.js、Bun 和 Deno 的对比分析 概览 对比维度Node.jsDenoBun首次发布200920202022创始人Ryan DahlRyan Dahl&#xff08;Node.js 原作者&#xff09;Jarred Sumner运行时引擎V8&#xff08;Chrome&#xff09;V8&#xff08;Chrome&#xff09;JavaScriptCore&#…...

大白话跨域问题怎么破,解决方法有啥?

大白话跨域问题怎么破&#xff0c;解决方法有啥&#xff1f; 啥是跨域问题 咱先说说啥是跨域。你可以把每个网站想象成一个独立的小房子&#xff0c;每个房子都有自己的地址&#xff08;也就是域名&#xff09;。正常情况下&#xff0c;一个房子里的东西只能在这个房子里用&a…...

DeepSeek R1满血+火山引擎详细教程

DeepSeek R1满血火山引擎详细教程 一、安装Cherry Studio。 Cherry Studio AI 是一款强大的多模型 AI 助手,支持 iOS、macOS 和 Windows 平台。可以快速切换多个先进的 LLM 模型,提升工作学习效率。下载地址 https://cherry-ai.com/ 认准官网&#xff0c;无强制注册。 这…...

Pytorch中的ebmedding到底怎么理解?

在 PyTorch 中&#xff0c;nn.Embedding 是一个用于处理离散符号映射到连续向量空间的模块。它通常用于自然语言处理&#xff08;NLP&#xff09;任务&#xff08;如词嵌入&#xff09;、处理分类特征&#xff0c;或任何需要将离散索引转换为密集向量的场景。 核心理解 功能&am…...

【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解。

【JAVA面试题】什么是面向对象&#xff1f;谈谈你对面向对象的理解 在 Java 面试中&#xff0c;面向对象 是一个高频考点。它不仅是一种编程思想&#xff0c;更是现代软件开发的核心方法论。本文将从 面向对象的概念、与面向过程的对比、以及 面向对象的三大特性&#xff08;封…...

【C】链式二叉树算法题1 -- 单值二叉树

leetcode链接https://leetcode.cn/problems/univalued-binary-tree/description/ 1 题目描述 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1…...

基于单片机的GPS定位系统设计

1 系统硬件 1.1单片机模块 单片机的种类和型号可以说是有成百上千种&#xff0c;很多大的公司和企业都生产开发自己的单片机芯片&#xff0c;并且广泛应用于各种产品。Intel、 philips、 摩托罗拉、凌阳、宏晶等等种类繁多。大体上可以分为51系列单片机和非51系列单片机。 其…...

[React]Render Props、自定义Hooks和Context API优化详解

关于React中的Render Props、自定义Hooks和Context API优化的详解。我需要根据我搜索到的资料来综合回答这三个部分。首先&#xff0c;我需要分别理解每个概念的定义、用途以及优化方法。 首先看Render Props。根据Render Props是一种通过传递函数作为prop来共享组件间逻辑的技…...

关于大型语言模型的结构修剪

本文介绍了一种名为 **LLM-Pruner** 的方法&#xff0c;用于对大型语言模型&#xff08;LLMs&#xff09;进行结构化剪枝&#xff0c;以减少模型大小和计算需求&#xff0c;同时保留其多任务解决和语言生成能力。LLM-Pruner 通过依赖检测和重要性估计实现高效剪枝&#xff0c;并…...

【语法】C++中string类中的两个问题及解答

贴主在学习string类时遇到过两个困扰我的问题&#xff0c;今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中&#xff0c;调用的是这个string对象的容量(可以存多少个有效字符)&#xff0c;而size()是调用的string对象现在有…...

Linux(centOS) 命令提示符格式修改(PS1)

1. 命令提示符的组成 命令提示符&#xff08;PS1&#xff09;通常由以下部分组成&#xff1a; 部分示例说明[ 和 ][...]提示符的开头和结尾&#xff0c;用于视觉分隔。用户名root 或 tianjiajie当前登录的用户。root 是超级用户&#xff0c;普通用户可能是其他名称。分隔用户…...

QwenVL 2.5-本地安装编译布署全教程

开篇 DeepSeek开源后我国又开源了一个震撼大模型,QwenVL2.5,这是一个多模态的模形,它可以认图、识图、更能作图,还能读懂video。 Qwen2.5-VL 的主要特点如下所示: 感知更丰富的世界:Qwen2.5-VL 不仅擅长识别常见物体,如花、鸟、鱼和昆虫,还能够分析图像中的文本、图表…...

Hutool - JWT:轻松玩转 JSON Web Token

各位开发者朋友们&#xff0c;在现代的前后端分离开发模式里&#xff0c;身份验证和授权可是至关重要的环节。JSON Web Token&#xff08;JWT&#xff09;作为一种轻量级的身份验证和授权机制&#xff0c;在很多项目中都得到了广泛应用。它可以在客户端和服务器之间安全地传输信…...

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析《更新中》

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题D:回文数组试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需…...

【2025年2月28日稳定版】小米路由器4C刷机Immortalwrt 23.05.4系统搭载mentohust 0.3.1插件全记录

小米路由器4C刷机Immortalwrt系统搭载mentohust插件全记录 首先将路由器按住后面的reset&#xff0c;用一个针插进去然后等待5s左右&#xff0c;松开&#xff0c;即可重置路由器。 然后要用物理网线物理连接路由器Lan口和电脑&#xff0c;并将路由器WAN口连接至网口。确保电脑…...

W3C标准和ES规范之一文通

W3C标准和ES规范之一文通 以下是关于W3C标准和ES规范的透彻解析&#xff0c;通过结构化对比和生活化类比帮助理解和记忆&#xff1a; 一、核心概念对比&#xff08;总览&#xff09; 维度W3C标准ES规范&#xff08;ECMAScript&#xff09;定位Web技术的建筑蓝图JavaScript的语…...

Linux:应用层协议

协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢? 无论我们采用什么方案, 只要保证, 一端发送时构造的数据, 在另一端能够正确的进行解析, 就是ok的. 这种…...

深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

# 深度学习五虎将&#xff1a;当CNN遇见Transformer的奇幻漂流 ## 序章&#xff1a;AI江湖的兵器谱排行 2012年&#xff0c;多伦多大学的厨房里&#xff0c;Hinton的学生们用GPU煎了个"AlexNet"荷包蛋&#xff0c;从此开启了深度学习的热兵器时代。如今五大模型各显…...

微服务组件详解——sentinel

1.启动sentinel&#xff1a; 下载jar sentinel-dashboard-1.8.0.jar 使用以下命令直接运行 jar 包&#xff08;JDK 版本必须≥ 1.8&#xff09;&#xff1a; java -Dserver.port9999 -jar D:\sentinel-dashboard-1.8.0.jar 控制台访问地址&#xff1a;http://localhost:9999…...

波导阵列天线 学习笔记11双极化全金属垂直公共馈电平板波导槽阵列天线

摘要&#xff1a; 本communicaition提出了一种双极化全金属垂直公共馈电平板波导槽阵列天线。最初提出了一种公共馈电的单层槽平板波导来实现双极化阵列。此设计消除了传统背腔公共馈电的复杂腔体边缘的必要性&#xff0c;提供了一种更简单的天线结构。在2x2子阵列种发展了宽十…...

swift 开发效率提升工具

安装github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安装swiftformat for xcode brew install swiftformatXcode Swift File代码格式化-SwiftFormat...

3-5 WPS JS宏 工作表的移动与复制学习笔记

************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...

Centos7部署k8s(单master节点安装)

单master节点部署k8s集群(Centos) 一、安装前准备 1、修改主机名 按照资源准备修改即可 # master01 hostnamectl set-hostname master01 ; bash # node1 hostnamectl set-hostname node1 ; bash # node2 hostnamectl set-hostname node2 ; bash2、修改hosts文件 以下命令所…...

Tomcat

1.Tomcat是什么&#xff1f; Tomcat 是一个开源的、轻量级的 Servlet 容器&#xff0c;也被称为 Web 服务器&#xff0c;由 Apache 软件基金会的 Jakarta 项目开发&#xff0c;在 Java Web 开发领域应用广泛。 1&#xff09;Servlet 容器&#xff1a;Servlet 是 Java 语言编写…...

基于SpringBoot+Vue的电影订票及评论网站的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...