python 电商网站开发/百度资源平台

python 电商网站开发,百度资源平台,网站建设美工的职位要求,网站建设客服与客户的对话先上个效果图 首先先引入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…

先上个效果图

 首先先引入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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++蓝桥杯基础篇(六)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来一起学习蓝桥杯基础篇&#xff08;六&#xff09;&#xff0c;练习相关的数组习题&#xff0c;准备好了吗&#xff1f;咱们开始咯&#xff01; 第1题 数组的左方区域 这道题&#xff0c;实质上是找规律&#xff0c;…

git -学习笔记

目录 基本操作语法 设置用户和邮箱 版本回退 工作区和暂存区 撤销修改 删除与恢复 一工作区删除了&#xff0c;但是暂存区没删除 二工作区误删了&#xff0c;暂存区还有 github-Git 连接 报错解决-push远程仓库被拒绝 远程库 分支 分支冲突 储藏分支 回到当前分…

Windows本地Docker+Open-WebUI部署DeepSeek

最近想在自己的电脑本地部署一下DeepSeek试试&#xff0c;由于不希望污染电脑的Windows环境&#xff0c;所以在wsl中安装了ollama&#xff0c;使用ollama拉取DeepSeek模型。然后在Windows中安装了Docker Desktop&#xff0c;在Docker中部署了Open-WebUI&#xff0c;最后再在Ope…

力扣785. 判断二分图

力扣785. 判断二分图 题目 题目解析及思路 题目要求将所有节点分成两部分&#xff0c;每条边的两个端点都必须在不同集合中 二分图&#xff1a;BFS/DFS/并查集 因为图不一定联通&#xff0c;所以枚举所有点都做bfs(如果没联通的话) 代码 class Solution { public:bool is…

springboot之集成Elasticsearch

目录 二、Elasticsearch 是什么&#xff1f;三、Elasticsearch 安装四、Springboot 集成 Elasticsearch 的方式五、创建项目集成 Elasticsearch 2.创建 Spring Initializr 项目 es &#xff08;3&#xff09;.新建实体类 User&#xff08;4&#xff09;.新建 dao 接口类 UserR…

[Lc滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…

数据集笔记:新加坡 地铁(MRT)和轻轨(LRT)票价

数据连接 data.gov.sg 2024 年 12 月 28 日起生效的新加坡地铁票价 该数据集包含 MRT 和 LRT 票价的信息&#xff0c;包括&#xff1a; 票价类型&#xff08;Fare Type&#xff09;&#xff1a;成人票、学生票、老年人票、残障人士票等。适用时间&#xff08;Applicable Tim…

【前端基础】Day 3 CSS-2

目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…

RabbitMQ操作实战

1.RabbitMQ安装 RabbitMQ Windows 安装、配置、使用 - 小白教程-腾讯云开发者社区-腾讯云下载erlang&#xff1a;http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安装RabbitMQ及延时消息插件rabbitmq_delayed_message_exch…

【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第2章OpenHarmony v3.2-Beta4版本测试

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)

简介: 这个小车的芯片是STM32F103C8T6&#xff0c;其他的芯片也可以照猫画虎,基本配置差不多,要注意的就是,管脚复用,管脚的特殊功能,(这点不用担心,hal库每个管脚的功能都会给你罗列,很方便的.)由于我做的比较简单,只是用到了几个简单外设.主要是由带霍尔编码器电机的车模,电机…

SQL命令详解之操作数据库

操作数据库 SQL是用于管理和操作关系型数据库的标准语言。数据库操作是SQL的核心功能之一&#xff0c;主要用于创建、修改和删除数据库对象&#xff0c;如数据库、表、视图和索引等。以下是SQL中常见的数据库操作命令及其功能简介&#xff1a; 1. 查询数据库 查询所有的数据库…

Go红队开发—编解码工具

文章目录 开启一个项目编解码工具开发Dongle包Base64编解码摩斯密码URL加解密AES加解密 MD5碰撞工具开发 开启一个项目 这作为补充内容&#xff0c;可忽略直接看下面的编解码&#xff1a; 一开始用就按照下面的步骤即可 1.创建一个文件夹&#xff0c;你自己定义名字(建议只用…

Starrocks入门(二)

1、背景&#xff1a;考虑到Starrocks入门这篇文章&#xff0c;安装的是3.0.1版本的SR&#xff0c;参考&#xff1a;Starrocks入门-CSDN博客 但是官网的文档&#xff0c;没有对应3.0.x版本的资料&#xff0c;却有3.2或者3.3或者3.4或者3.1或者2.5版本的资料&#xff0c;不要用较…

SwiftUI之状态管理全解析

文章目录 引言一、`@State`1.1 基本概念1.2 初始化与默认值1.3 注意事项二、`@Binding`2.1 基本概念2.2 初始化与使用2.3 注意事项三、`@ObservedObject`3.1 基本概念3.2 初始化与使用3.3 注意事项四、`@EnvironmentObject`4.1 基本概念4.2 初始化与使用4.3 注意事项五、`@Stat…

Redis 高可用性:如何让你的缓存一直在线,稳定运行?

&#x1f3af; 引言&#xff1a;Redis的高可用性为啥这么重要&#xff1f; 在现代高可用系统中&#xff0c;Redis 是一款不可或缺的分布式缓存与数据库系统。无论是提升访问速度&#xff0c;还是实现数据的高效持久化&#xff0c;Redis 都能轻松搞定。可是&#xff0c;当你把 …

Redis---缓存穿透,雪崩,击穿

文章目录 缓存穿透什么是缓存穿透&#xff1f;缓存穿透情况的处理流程是怎样的&#xff1f;缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩&#xff1f;缓存雪崩的解决办法 缓存击穿什么是缓存击穿&#xff1f;缓存击穿的解决办法 区别对比 在如今的开发中&…

【定昌Linux系统】部署了java程序,设置开启启动

将代码上传到相应的目录&#xff0c;并且配置了一个.sh的启动脚本文件 文件内容&#xff1a; #!/bin/bash# 指定JAR文件的路径&#xff08;如果JAR文件在当前目录&#xff0c;可以直接使用文件名&#xff09; JAR_FILE"/usr/local/java/xs_luruan_client/lib/xs_luruan_…

Minio搭建并在SpringBoot中使用完成用户头像的上传

Minio使用搭建并上传用户头像到服务器操作,学习笔记 Minio介绍 minio官网 MinIO是一个开源的分布式对象存储服务器&#xff0c;支持S3协议并且可以在多节点上实现数据的高可用和容错。它采用Go语言开发&#xff0c;拥有轻量级、高性能、易部署等特点&#xff0c;并且可以自由…

vue3中ref和reactive响应式数据、ref模板引用(组合式和选项式区别)、组件ref的使用

目录 Ⅰ.ref 1.基本用法&#xff1a;ref响应式数据 2.ref模板引用 3.ref在v-for中的模板引用 ​4.ref在组件上使用 ​5.TS中ref数据标注类型 Ⅱ.reactive 1.基本用法&#xff1a;reactive响应式数据 2.TS中reactive标注类型 Ⅲ.ref和reactive的使用场景和区别 Ⅳ.小结…