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

mock.js介绍

mock.js

http://mockjs.com/

1、mock的介绍

*** 生成随机数据,拦截 Ajax 请求。**

通过随机数据,模拟各种场景;不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据;支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等;支持扩展更多数据类型,支持自定义函数和正则。

优点是非常简单方便, 无侵入性, 基本覆盖常用的接口数据类型.

2、mock安装

cnpm install mockjs

3、mock的语法规范

Mock.js 的语法规范包括两部分:

  1. 数据模板定义规范(Data Template Definition,DTD)
  2. 数据占位符定义规范(Data Placeholder Definition,DPD)

3.1 数据模板定义规范 DTD

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:

'name|rule':value

注意:

  • 属性名生成规则 之间用竖线 | 分隔。

  • 生成规则 是可选的。

  • 生成规则

    有 7 种格式:

    1. 'name|min-max': value 随机数量在 min 和max 之间
    2. 'name|count': value 生成count条数据
    3. 'name|min-max.dmin-dmax': value 在** 之间,并且小数点保留 *** 之间位数
    4. 'name|min-max.dcount': value 在** 之间,并且小数点保留 dcount位
    5. 'name|count.dmin-dmax': value 生成count条数据,并且小数点保留 *** 之间位数
    6. 'name|count.dcount': value 生成count条数据,并且小数点保留 dcount位
    7. 'name|+step': value 属性值自动加 step,初始值为 value。
  • *生成规则* 的 含义 需要依赖 *属性值的类型* 才能确定。

  • 属性值 中可以含有 @占位符

  • 属性值 还指定了最终值的初始值和类型。

生成规则和示例:

1. 属性值是字符串 String
  1. 'name|min-max': string

    通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max

  2. 'name|count': string

    通过重复 string 生成一个字符串,重复次数等于 count

2. 属性值是数字 Number
  1. 'name|+1': number

    属性值自动加 1,初始值为 number

  2. 'name|min-max': number

    生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。

  3. 'name|min-max.dmin-dmax': number

    生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmindmax 位。

Mock.mock({'number1|1-100.1-10': 1,'number2|123.1-10': 1,'number3|123.3': 1,'number4|123.10': 1.123
})
// =>
{"number1": 12.92,"number2": 123.51,"number3": 123.777,"number4": 123.1231091814
}
3. 属性值是布尔型 Boolean
  1. 'name|1': boolean

    随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。

  2. 'name|min-max': value

    随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)

4. 属性值是对象 Object
  1. 'name|count': object

    从属性值 object 中随机选取 count 个属性。

  2. 'name|min-max': object

    从属性值 object 中随机选取 minmax 个属性。

5. 属性值是数组 Array
  1. 'name|1': array

    从属性值 array 中随机选取 1 个元素,作为最终值。

  2. 'name|+1': array

    从属性值 array 中顺序选取 1 个元素,作为最终值。

  3. 'name|min-max': array

    通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max

  4. 'name|count': array

    通过重复属性值 array 生成一个新数组,重复次数为 count

6. 属性值是函数 Function
  1. 'name': function

    执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。

7. 属性值是正则表达式 RegExp
  1. 'name': regexp

    根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。

    Mock.mock({'regexp1': /[a-z][A-Z][0-9]/,'regexp2': /\w\W\s\S\d\D/,'regexp3': /\d{5,10}/
    })
    // =>
    {"regexp1": "pJ7","regexp2": "F)\fp1G","regexp3": "561659409"
    }
    

3.2 数据占位符定义规范 DPD

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。

占位符 的格式为:

@占位符
@占位符(参数 [, 参数])

注意:

  1. @ 来标识其后的字符串是 占位符
  2. 占位符 引用的是 Mock.Random 中的方法。
  3. 通过 Mock.Random.extend() 来扩展自定义占位符。
  4. 占位符 也可以引用 数据模板 中的属性。
  5. 占位符 会优先引用 数据模板 中的属性。
  6. 占位符 支持 相对路径绝对路径
Mock.mock({name: {first: '@FIRST',middle: '@FIRST',last: '@LAST',full: '@first @middle @last'}
})
// =>
{"name": {"first": "Charles","middle": "Brenda","last": "Lopez","full": "Charles Brenda Lopez"}
}

4、Mock.mock()

根据数据模板生成模拟数据。

5、Mock.setup()

  • Mock.setup( settings )

配置拦截 Ajax 请求时的行为。支持的配置项有:timeout

6、 Mock.Random()

Mock.Random 是一个工具类,用于生成各种随机数据。

Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数])

6.1 方法

Mock.Random 提供的完整方法(占位符)如下:

TypeMethod
Basicboolean, natural, integer, float, character, string, range, date, time, datetime, now
Imageimage, dataImage
Colorcolor
Textparagraph, sentence, word, title, cparagraph, csentence, cword, ctitle
Namefirst, last, name, cfirst, clast, cname
Weburl, domain, email, ip, tld
Addressarea, region
Helpercapitalize, upper, lower, pick, shuffle
Miscellaneousguid, id

6.2 扩展

Mock.Random 中的方法与数据模板的 @占位符 一一对应,在需要时还可以为 Mock.Random 扩展方法,然后在数据模板中通过 @扩展方法 引用。例如:

Random.extend({constellation: function(date) {var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']return this.pick(constellations)}
})
Random.constellation()
// => "水瓶座"
Mock.mock('@CONSTELLATION')
// => "天蝎座"
Mock.mock({constellation: '@CONSTELLATION'
})
// => 

7、Mock.valid()

  • Mock.valid( template, data )

校验真实数据 data 是否与数据模板 template 匹配。

8、Mock.toJSONShema()

  • Mock.toJSONSchema( template )

把 Mock.js 风格的数据模板 template 转换成 JSON Schema。

const Mock = require('mockjs')const data = Mock.mock({"list|10": [{"id|+1": 100,"age|18-30": 10,"sex|1": ['男', '女'],"name": '@cname()' + '_' + '@string("upper", 5)' + '_' + '@integer(0, 100)',// "avatar": Mock.Random.image('200x100', Mock.mock('@color()').slice(1) , '#FFF', 'png', 'Mock.js')"avatar": "@img('200x200', '@color', '#fff', '@cname')","birthday": "@date()","tel": /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/,"address": "@county(true)","password": /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/// "address": "@province()" + ' ' + "@city()" + ' ' + "@county()"}]
})console.log(data)
{list: [{id: 100,age: 23,sex: '男',name: '丁艳_UYUKU_58',avatar: 'http://dummyimage.com/200x200/79f2f1/fff&text=罗强',birthday: '1996-07-06',tel: '13749534813',address: '江西省 新余市 其它区',password: '4zmixqSXpkhU8Sb2A3U1VXTIBfr6G$Tv1L'},{id: 101,age: 24,sex: '女',name: '范强_AAJEE_83',avatar: 'http://dummyimage.com/200x200/f2ce79/fff&text=袁涛',birthday: '2003-02-10',tel: '+8613196192459',address: '山西省 长治市 襄垣县',password: 'Ivkz2V0UGfrf3I6YSmUA0UkR$T'},{id: 102,age: 22,sex: '女',name: '林敏_EDXHJ_0',avatar: 'http://dummyimage.com/200x200/aa79f2/fff&text=李敏',birthday: '1973-09-01',tel: '14979469682',address: '山西省 晋中市 祁县',password: 'csEDmPy8LjmRQl5WkSJb@hH3J'},{id: 103,age: 21,sex: '女',name: '蔡伟_XHNSH_61',avatar: 'http://dummyimage.com/200x200/79f287/fff&text=郝秀英',birthday: '2018-04-28',tel: '+8614705743384',address: '河南省 三门峡市 陕县',password: 'i03EZ81hgdWXSpu601fXopqneE&S'},{id: 104,age: 26,sex: '男',name: '赵刚_HYYGI_48',avatar: 'http://dummyimage.com/200x200/f2798e/fff&text=范明',birthday: '2014-01-12',tel: '15604455916',address: '河南省 周口市 太康县',password: 'ajTviNNSByC5fOBdcz@umD30'},{id: 105,age: 21,sex: '女',name: '邵杰_BYXHY_89',avatar: 'http://dummyimage.com/200x200/79b1f2/fff&text=曹杰',birthday: '1974-01-29',tel: '13585737481',address: '新疆维吾尔自治区 哈密地区 伊吾县',password: '5MqlAPRTbfN495HMxyn5Pn$KIo'},{id: 106,age: 22,sex: '女',name: '叶磊_FOHRW_4',avatar: 'http://dummyimage.com/200x200/d4f279/fff&text=顾敏',birthday: '1989-02-17',tel: '19845677674',address: '台湾 新北市 金山区',password: 'tnjew7HhJyf42ooCBiEO$fP'},{id: 107,age: 29,sex: '男',name: '潘磊_QLITG_84',avatar: 'http://dummyimage.com/200x200/ec79f2/fff&text=江静',birthday: '2009-01-28',tel: '13212852918',address: '吉林省 通化市 集安市',password: 'H4RQkmT6R00N6ZaZtL5kfsULxNUvYRH@VkDc2'},{id: 108,age: 22,sex: '男',name: '梁勇_WETCJ_29',avatar: 'http://dummyimage.com/200x200/79f2c9/fff&text=方强',birthday: '1976-04-08',tel: '008613397210548',address: '香港特别行政区 香港岛 中西区',password: 'UlUnP2lEYaucLZw8EeOS0L6tXz?dPv'},{id: 109,age: 24,sex: '男',name: '罗霞_JERDL_64',avatar: 'http://dummyimage.com/200x200/f2a579/fff&text=马勇',birthday: '1989-11-06',tel: '+8614|24584454',address: '吉林省 通化市 东昌区',password: 'di2QhGDstUvm9SZCmH5WrmWbMG5Trdw*wgVO'}]
}

9.vue或者react项目中如何使用mock

cnpm i axios mockjs -S

Src/mock/pro.js

import Mock from 'mockjs'
// http://mockjs.com/examples.html
// data | 10 代表随机10条数据
// "proid|+1": 100, 每次随机的proid字段自增1
// @img('200x200', '@color', '#fff', '@cname')", 图片 - 大小,背景,字体颜色,字体内容
// "originprice|1-1000.2": 0 // 随机价格为 1- 1000,保留2位有效数字
const prolist = Mock.mock({"data|10": [{"proid|+1": 100,"proname": '@cparagraph(1, 3)', // 随机1-3句话"proimg": "@img('200x200', '@color', '#fff', '@cname')","originprice|1-1000.2": 0}]
})
const seckilllist = Mock.mock({"data|6": [{"proid|+1": 100,"proname": '@cparagraph(1, 3)', // 随机1-3句话"proimg": "@img('200x200', '@color', '#fff', '@cname')","originprice|1-1000.2": 0}]
})
export {prolist,seckilllist
} 

Src/mock/index.js

import Mock from 'mockjs'
import { prolist, seckilllist } from './pro'Mock.mock('http://121.89.205.189/api/pro/list', prolist)
Mock.mock('http://121.89.205.189/api/pro/seckilllist', seckilllist)

项目入口文件处引入mock

import Vue from 'vue'
import App from './App.vue'
import './mock/index.js'
Vue.config.productionTip = falsenew Vue({render: h => h(App),
}).$mount('#app')

App.vue

<script>
import HelloWorld from './components/HelloWorld.vue'
import axios from 'axios'
export default {name: 'App',components: {HelloWorld},mounted () {axios.get('http://121.89.205.189/api/pro/list').then(res => {console.log(res.data.data)})axios.get('http://121.89.205.189/api/pro/seckilllist').then(res => {console.log(res.data.data)})}
}
</script>

10.使用 json-server模拟数据

Src/mock/ list.json

{"ret": true,"data": {"name": "\u5bab\u4fdd\u9e21\u4e01","img": "http:\/\/s3.cdn.xiangha.com\/videoImg\/201510\/1310\/561c71166b43e.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","code": "78599088","remark": "","all_click": "1442.2\u4e07","favorites": "13.0\u4e07","info": "\u5bab\u4fdd\u9e21\u4e01\u7684\u7279\u8272\u662f\u8fa3\u4e2d\u6709\u751c\u3001\u751c\u4e2d\u6709\u8fa3\uff1b\u9e21\u8089\u7684\u9c9c\u5ae9\u914d\u5408\u82b1\u751f\u7684\u9999\u8106\uff0c\u5165\u53e3\u9165\u9999\u3001\u7ea2\u800c\u4e0d\u8fa3\u3001\u8fa3\u800c\u4e0d\u731b\u3001\u8089\u8d28\u5ae9\u6ed1\u3002","health_str": "\u9e21\u86cb\uff1a\u6da6\u71e5\u3001\u589e\u5f3a\u514d\u75ab\u529b\u3001\u62a4\u773c\u660e\u76ee\n\u59dc\uff1a\u964d\u9006\u6b62\u5455\u3001\u5316\u75f0\u6b62\u54b3\u3001\u6563\u5bd2\u89e3\u8868\n\u6599\u9152\uff1a\u6d3b\u8840\u5316\u7600","tagIds": "405,406,409,412,413,436,104,356,357,358,364,370,374,384,164,22,31,172,29,140,335,171,324,354,391,355,323,105,1,24,14,327","makes": [{"num": "1","info": "\u5c06\u8471\uff0c\u59dc\uff0c\u849c\u5207\u7247\u3002","img": "http:\/\/s1.cdn.jiaonizuocai.com\/caipu\/201510\/2016\/201649122926.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","video": []}, {"num": "2","info": "\u9009\u65b0\u9c9c\u7684\u9e21\u812f\u8089\u5207\u62101cm\u89c1\u65b9\u7684\u5c0f\u5757\uff0c\u52a0\u5165\u80e1\u6912\u7c895\u514b\uff0c\u4e00\u4e2a\u9e21\u86cb\uff0c\u6599\u915210\u514b\uff0c\u6dc0\u7c8920\u514b\uff0c\u6293\u5300\u814c\u523615\u5206\u949f\u5de6\u53f3\u3002","img": "http:\/\/s3.cdn.xiangha.com\/caipu\/201510\/2016\/201649129886.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","video": []}, {"num": "3","info": "\u9505\u5185\u4e0b20\u514b\u8272\u62c9\u6cb9\uff0c\u5927\u706b\u5c06\u6cb9\u70e7\u81f37\u6210\u70ed\uff08\u5373\u6cb9\u9762\u6709\u9752\u70df\u5927\u91cf\u4e0a\u5347\u65f6\u4e3a7\u6210\u70ed\uff09\u653e\u5165\u9e21\u812f\u8089\u4e01\uff0c\u5927\u706b\u7ffb\u7092\uff0c\u5f85\u8089\u8272\u53d1\u767d\uff0c\u8089\u719f\u540e\uff0c\u76db\u51fa\u5907\u7528\u3002","img": "http:\/\/s1.cdn.jiaonizuocai.com\/caipu\/201510\/2016\/201649136562.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","video": []}, {"num": "4","info": "\u9505\u5185\u4e0b15\u514b\u8272\u62c9\u6cb9\uff0c\u5927\u706b\u5c06\u6cb9\u70e7\u81f37\u6210\u70ed\uff08\u5373\u6cb9\u9762\u6709\u9752\u70df\u5927\u91cf\u4e0a\u5347\u65f6\u4e3a7\u6210\u70ed\uff09\u653e\u5165\u5e72\u8fa3\u69128\u514b\uff0c\u8c46\u74e3\u917130\u514b\uff0c\u653e\u5165\u8471\u59dc\u849c\u7247\uff0c\u7206\u51fa\u9999\u5473\uff0c\u7ee7\u7eed\u7ffb\u70922\u5206\u949f\u3002","img": "http:\/\/s1.cdn.jiaonizuocai.com\/caipu\/201510\/2016\/201649143885.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","video": []}, {"num": "5","info": "\u653e\u5165\u6599\u915210\u514b\uff0c\u76d01\u514b\uff0c\u918b5\u514b\uff0c\u767d\u7cd610\u514b\uff0c\u9e21\u7c893\u514b\uff0c\u8001\u62bd10\u514b\uff0c\u751f\u62bd10\u514b\uff0c\u5927\u706b\u7ffb\u7092\u3002\u6b64\u65f6\u653e\u5165\u7092\u597d\u7684\u9e21\u8089\u812f\u4e01\uff0c\u8f6c\u5927\u706b\u7ffb\u7092\u3002","img": "http:\/\/s3.cdn.xiangha.com\/caipu\/201510\/2016\/20164915452.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","video": []}, {"num": "6","info": "\u6700\u540e\u653e\u5165\u6cb9\u70b8\u82b1\u751f\u7c7350\u514b\uff0c\u7ffb\u7092\u5747\u5300\u3002","img": "http:\/\/s1.cdn.jiaonizuocai.com\/caipu\/201510\/2016\/201649157477.jpg\/NjQwX2FiYWNhaXB1MTcxMF9jXzEtM18w","video": []}],"burden": [{"appurl": "","name": "\u9e21\u812f\u8089","content": "250\u514b","type": "1"}, {"appurl": "\u82b1\u751f","name": "\u82b1\u751f\u7c73","content": "50\u514b","type": "1"}, {"appurl": "\u9e21\u86cb","name": "\u9e21\u86cb","content": "1\u4e2a","type": "1"}, {"appurl": "\u5c0f\u8471","name": "\u8471","content": "10\u514b","type": "2"}, {"appurl": "\u59dc","name": "\u59dc","content": "10\u514b","type": "2"}, {"appurl": "\u5927\u849c","name": "\u849c","content": "10\u514b","type": "2"}, {"appurl": "\u5e72\u8fa3\u6912","name": "\u5e72\u8fa3\u6912","content": "8\u514b","type": "2"}, {"appurl": "\u82b1\u6912","name": "\u82b1\u6912","content": "5\u7c92","type": "2"}, {"appurl": "\u8c46\u74e3\u9171","name": "\u8c46\u74e3\u9171","content": "30\u514b","type": "2"}, {"appurl": "","name": "\u76d0","content": "2\u514b","type": "2"}, {"appurl": "","name": "\u751f\u62bd","content": "10\u514b","type": "2"}, {"appurl": "","name": "\u8001\u62bd","content": "10\u514b","type": "2"}, {"appurl": "\u6599\u9152","name": "\u6599\u9152","content": "20\u514b","type": "2"}, {"appurl": "\u6dc0\u7c89","name": "\u6dc0\u7c89","content": "20\u514b","type": "2"}, {"appurl": "","name": "\u9e21\u7c89","content": "3\u514b","type": "2"}, {"appurl": "\u80e1\u6912\u7c89","name": "\u80e1\u6912\u7c89","content": "5\u514b","type": "2"}, {"appurl": "\u767d\u7cd6","name": "\u767d\u7cd6","content": "10\u514b","type": "2"}, {"appurl": "\u918b","name": "\u918b","content": "5\u514b","type": "2"}],"rec": [],"is_collection": 1,"share_img": "http:\/\/s3.cdn.xiangha.com\/videoImg\/201510\/1310\/561c71166b43e.jpg\/MjUwX2FiYWNhaXB1MTcxMF9jXzEtM18w"},"append": [],"res": "2"
}

src/mock/index.js

module.exports = function() {return {list: require('./list.json')}
}
json-server index.js\{^_^}/ hi!Loading index.jsDoneResourceshttp://localhost:3000/listHomehttp://localhost:3000

11.使用在线模拟数据的工具

http://rap2.taobao.org/

https://www.fastmock.site/#/

在这里插入图片描述

相关文章:

mock.js介绍

mock.js http://mockjs.com/ 1、mock的介绍 *** 生成随机数据&#xff0c;拦截 Ajax 请求。** 通过随机数据&#xff0c;模拟各种场景&#xff1b;不需要修改既有代码&#xff0c;就可以拦截 Ajax 请求&#xff0c;返回模拟的响应数据&#xff1b;支持生成随机的文本、数字…...

React开发 - 技术细节汇总一

React简介 React 是一个声明式&#xff0c;高效且灵活的用于构建用户界面的 JavaScript 库。使用 React 可以将一些简短、独立的代码片段组合成复杂的 UI 界面&#xff0c;这些代码片段被称作“组件”。 ui render (data) -> 单向数据流 MVC // model var myapp {}; // …...

【论文复现】分割万物-SAM

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 分割万物-SAM 介绍原理分割任务任务预训练zero-shot transfer相关任务 模型Image EncoderPrompt EncoderMask Eecoder消除歧义高效Loss 和训…...

实现RAGFlow-0.14.1的输入框多行输入和消息框的多行显示

一、Chat页面输入框的修改 1. macOS配置 我使用MacBook Pro&#xff0c;chip 是 Apple M3 Pro&#xff0c;Memory是18GB&#xff0c;macOS是 Sonoma 14.6.1。 2. 修改chat输入框代码 目前RAGFlow前端的chat功能&#xff0c;输入的内容是单行的&#xff0c;不能主动使用Shift…...

Pointnet++改进71:添加LFE模块|高效长距离注意力网络

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入LFE模块,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…...

C++STL容器vector容器大小相关函数

目录 前言 主要参考 vector::size vector::max_size vector::resize vector::capacity vector::empty vector::reserve vector::shrink_to_fit 共勉 前言 本文将讨论STL容器vector中与迭代器相关的函数&#xff0c;模板参数T为int类型。 主要参考 cpluscplus.com 侯…...

阿里云CPU超载解决记录

现象&#xff1a;阿里云CPU使用率超90%连续5分钟告警&#xff0c;项目日志error.log中存在heap/gc/limit等内存耗尽等信息&#xff0c;阿里云慢查询日志每日有查询时间很长的参数一直不变的慢sql&#xff0c;linux服务器使用top命令并按c可以看到cpu过大是哪个命令行造成的 分…...

【工具变量】上市公司企业商业信用融资数据(2003-2022年)

一、测算方式&#xff1a;参考《会计研究》张新民老师的做法 净商业信用NTC(应付账款应付票据预收账款)-(应收账款应收票据预付账款)&#xff0c;用总资产标准化; 应付账款AP应付账款应付票据预收账款&#xff0c;用总资产标准化 一年以上应付账款比例LAP是企业一年以上(包括一…...

2024数字科技生态大会 | 紫光展锐携手中国电信助力数字科技高质量发展

2024年12月3日至5日&#xff0c;中国电信2024数字科技生态大会在广州举行&#xff0c;通过主题峰会、多场分论坛、重要签约及合作发布等环节&#xff0c;与合作伙伴共绘数字科技发展新愿景。紫光展锐作为中国电信的战略合作伙伴受邀参会&#xff0c;全面呈现了技术、产品创新进…...

ES语法(一)概括

一、语法 1、请求方式 Elasticsearch&#xff08;ES&#xff09;使用基于 JSON 的查询 DSL&#xff08;领域特定语言&#xff09;来与数据交互。 一个 ElasticSearch 请求和任何 HTTP 请求一样由若干相同的部件组成&#xff1a; curl -X<VERB> <PROTOCOL>://&l…...

(vue)el-cascader多选级联选择器,值取最后一级的数据

(vue)el-cascader多选级联选择器&#xff0c;取值取最后一级的数据 获取到&#xff1a;[“养殖区”,“鸡棚”,“E5001”] 期望&#xff1a;[“E5001”] 问题: 解决方法 增加change事件方法&#xff0c;处理选中的value值 1.单选 <el-cascaderv-model"tags2":o…...

友思特方案 | 精密制程的光影贴合:半导体制造中的高功率紫外光源

导读 为新能源锂电行业赋能第四站&#xff1a;半导体制造中的高功率紫外光源&#xff01;稳定输出、灵活控制的曝光设备是新能源/半导体行业高端生产中减少误差、提高效率的核心技术&#xff0c;友思特 ALE 系列 UV LED 紫外光源集合6大优势&#xff0c;为精密制造的健康发展提…...

README写作技巧

做一个项目&#xff0c;首先第一眼看上去要美观&#xff0c;这样才有看下去的动力。做项目亦是如此&#xff0c;如果每一步应付做的话&#xff0c;我想动力也不会太大&#xff0c;最终很大概率会放弃或者进度缓慢。 1.README组成 README是对项目的一个说明&#xff0c;它对观看…...

【密码学】分组密码的工作模式

1.电码本模式&#xff08;ECB&#xff09; 优点: 每个数据块独立加密&#xff0c;可并行加密&#xff0c;实现简单。 缺点: 相同明文会产生相同密文&#xff0c;不具备数据完整保护性。 适用于短消息的加密传输 (如一个加密密钥)。 工作流程&#xff1a;用相同的密钥分别对…...

SQL 和 NoSQL 有什么区别?

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;和NoSQL数据库是两种不同类型的数据库管理系统&#xff0c;它们在多个方面存在显著的区别。以下是对SQL和NoSQL主要区别的详细分析&#xff1a; 一、数据存储与模型 SQL数据库 使用关系模型来…...

提升网站流量的关键:AI在SEO关键词优化中的应用

内容概要 在当今数字时代&#xff0c;提升网站流量已成为每个网站管理员的首要任务。而人工智能的技术进步&#xff0c;为搜索引擎优化&#xff08;SEO&#xff09;提供了强有力的支持&#xff0c;尤其是在关键词优化方面。关键词是连接用户需求与网站内容的桥梁&#xff0c;其…...

Harnessing Large Language Models for Training-free Video Anomaly Detection

标题&#xff1a;利用大型语言模型实现无训练的视频异常检测 原文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2024/papers/Zanella_Harnessing_Large_Language_Models_for_Training-free_Video_Anomaly_Detection_CVPR_2024_paper.pdf 源码链接&#xff1a;ht…...

如何通过自学成长为一名后端开发工程师?

大家好&#xff0c;我是袁庭新。最近&#xff0c;有星友向我提出了一个很好的问题&#xff1a;如何通过自学成为一名后端开发工程师&#xff1f; 为了解答这个疑问&#xff0c;我特意制作了一个视频来详细分享我的看法和建议。 戳链接&#xff1a;如何通过自学成长为一名后端开…...

HDR视频技术之六:色调映射

图像显示技术的最终目的就是使得显示的图像效果尽量接近人们在自然界中观察到的对应的场景。 HDR 图像与视频有着更高的亮度、更深的位深、更广的色域&#xff0c;因此它无法在常见的普通显示器上显示。 入门级的显示器与播放设备&#xff08;例如普通人家使用的电视&#xff0…...

(洛谷题目)P11060 【MX-X4-T0】「Jason-1」x!

思路&#xff1a; 理解问题&#xff1a;首先&#xff0c;我们要理解题目的要求&#xff0c;即判断一个非负整数n的阶乘n!是否是n1的倍数。 阶乘的定义&#xff1a;根据阶乘的定义&#xff0c;n!是所有小于等于n的正整数的乘积。特别地&#xff0c;0!被定义为1。 特殊情况处理…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...