Microi吾码|.NET、VUE快速搭建项目,低代码便捷开发教程

news2025/1/15 17:33:45

在这里插入图片描述
在这里插入图片描述

Microi吾码|VUE快速搭建项目,低代码便捷开发教程

  • 一、摘要
  • 二、Microi吾码介绍
    • 2.1 功能介绍
    • 2.2 团队介绍
    • 2.3 上线项目案例
  • 三、VUE中使用Microi吾码
    • 3.1 前期了解
    • 3.2 创建第一个低代码应用
    • 3.3 接口API使用说明
    • 3.4 引擎界面可视化配置,生成API
    • 3.5 最后咱们来看看平台效果
  • 四、VUE中配置引擎详解
    • 4.1 表单引擎
    • 4.2 工作流引擎
    • 4.3 接口引擎
    • 4.4 报表引擎
    • 4.5 模块引擎
  • 五、吾码技术点解析
  • 六、结束语

一、摘要

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

在这里插入图片描述

        Microi吾码低代码平台在这个时候应运而生,开源低代码平台、低代码平台、.net低代码开台、vue低代码平台,大型互联网应用、定制软件开发、智能互联、跨行业通用软件产品,从小到大,皆能互用。目前多版本已上线,开源版、个人版、企业版应用各个层面,操作简单,组件丰富,期待您的加入!!!目前已涉猎网站,小程序,APP,大屏可视化,智能管理系统等各行各业领域平台。可以让你快速建立自己的产品应用,打造属于自己的低代码平台。今天要全过程介绍下这款插件 Microi.Net-界面设计引擎在Vue低代码版本的开发,让你了解吾码,并能实际应用。

在这里插入图片描述

二、Microi吾码介绍

2.1 功能介绍

  • 1.通过“低代码”技术重塑系统开发方式;

  • 2.轻快实现任何重量级系统的复杂定制;

  • 3.万物皆可轻,启动轻代码程序革命;

  • 4.与其它低代码平台对比 Microi.net面向程序员、开发团队,暂不面向C端普通用户,可通过Google V8引擎javascript语法实现各种非常复杂的场景,如互联网、物联网、ERP等。 无任何限制(不限制用户数、表单数、数据量等等);

2.2 团队介绍

  • 1.研发部90%为技术开发人员,分为两个研发团队;

  • 2.Microi.net产品研发组团队;

  • 3.基于Microi.net进行二次定制开发组;

  • 4.提供稳定的更新与售后服务团队;

2.3 上线项目案例

  • 目前已有成功案例开发团队客户50家以上,而客户基于低代码平台研发的系统已应用到数百家企业。
    ①房地产互联网平台(仿贝壳)(大量的前端微服务定制)
    ②大型电器ERP(300+表,100+模块)(大量的后端定制)
    ③多个服装ERP(100+表,1个人1个月完成)(纯低代码平台实现的服装ERP系统)
    ④物联网智能家居(亿级数据量处理)、植物工厂智能硬件控制
    ⑤集团、国企OA系统
    ⑥停车场、潮汐检测、固定资产、CRM 等等平台
    ⑦四所大学实训课程

在这里插入图片描述

三、VUE中使用Microi吾码

3.1 前期了解

接入 Microi.Net-界面设计引擎,设计引擎分为设计器和渲染器两个核心组件:

设计器: 负责快速构建精美的页面,比如首页,动态看板,大屏等,采用极简的设计理念,傻瓜式操作,对开发人员的技术要求大大降低.

渲染器: 负责渲染,以数据驱动页面展示.以往可能这部分工作都是前端或UI来完成的,现在普通的后端开发人员或者运维和销售角色都可以胜任.大大降低了团队研发的成本.

3.2 创建第一个低代码应用

掌握了插件功能后,咱们就开始接入组件Microi.Net-界面设计引擎,具体接入代码如下。

3.2.1 script 引入Microi.Net-界面设计引擎
定义一个全局变量myIframe引入界面引擎

const myIframe = ref(自己的界面引擎地址)

3.2.2 使用iframe框架承载界面设计引擎

    <iframe
      ref="myIframe"
      id="iframe"
      :src="src"
      frameborder="0"
      width="100%"
      height="730px"
      @load="onIframeLoad"
    ></iframe>

3.2.3 模拟数据库数据

const demoObj = {
  Id: 31908,
  Title: '测试标题',
  Number: 'page_31908',
  Desc: '这是一个空的页面模板',
  JsonObj: {} //对象或者字符串
}

3.2.4 监听 iframe 是否加载完成

const onIframeLoad = () => {
  console.log('Iframe 已加载完成')
  loading.value = false
  sendMessageToIframe()
}

3.2.5 监听iframe 内部透传事件

let pageengineEvent = null
pageengineEvent = function (event) {  if (event.data) {    switch (event.data.key) {
        case 'stepsWidget':
        console.log('已接到到来自iframe消息,stepsWidget', event.data.value)        
        break      
        default:       
         break
}
}

3.2.6 下面展示完整 VUE接入代码

<template>
  <div v-loading="loading" class="iframe-container">
    <iframe
      ref="myIframe"
      id="iframe"
      :src="src"
      frameborder="0"
      width="100%"
      height="730px"
      @load="onIframeLoad"
    ></iframe>
  </div>
</template>
 
<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue'
const loading = ref(true)
const src = ref('https://www.nbweixin.cn/autopage/')
 
const myIframe = ref(null)
 
//模拟数据库数据
const demoObj = {
  Id: 31908,
  Title: '测试标题',
  Number: 'page_31908',
  Desc: '这是一个空的页面模板',
  JsonObj: {} //对象或者字符串
}
 
// 监听 iframe 是否加载完成
const onIframeLoad = () => {
  console.log('Iframe 已加载完成')
  loading.value = false
  sendMessageToIframe()
}
 
const sendMessageToIframe = () => {
  // 要发送的数据
  const dataToSend = {
    iframeToken: 'token_test', //自定义token
    iframeFormData: JSON.stringify(demoObj), //页面JSON,新增的话JsonObj留空就行
  }
  // 使用 postMessage 发送数据给 iframe
  myIframe.value.contentWindow.postMessage(dataToSend, '*')
}
 
//监听iframe 内部透传事件
let pageengineEvent = null
pageengineEvent = function (event) {
  if (event.data) {
    switch (event.data.key) {
      //保存页面json
      case 'saveFormJson':
        console.log('已接到到来自iframe消息,saveFormJson', event.data.value)
        let obj = JSON.parse(event.data.value)
        console.log(obj)
        break
      //监听日历选择日期事件
      case 'calendarSelDate':
        console.log('已接到到来自iframe消息,calendarSelDate', event.data.value)
        break
      //监听日历选择日期事件
      case 'calendarSelDate':
        console.log('已接到到来自iframe消息,calendarSelDate', event.data.value)
        break
      //卡片更多跳转
      case 'cartMoreLink':
        console.log(
          '已接到到来自iframe消息,cartMoreLink 监听',
          event.data.value
        )
        break
      //链接组件跳转
      case 'linkWidget':
        console.log('已接到到来自iframe消息,linkWidget', event.data.value)
        break
      //鱼骨图跳转
      case 'fishWidget':
        console.log('已接到到来自iframe消息,fishWidget', event.data.value)
        break
      //步骤跳转
      case 'stepsWidget':
        console.log('已接到到来自iframe消息,stepsWidget', event.data.value)
        break
      default:
        break
    }
  }
}
window.addEventListener('message', pageengineEvent)
onMounted(() => {})
 
onBeforeUnmount(() => {
  window.removeEventListener('message', pageengineEvent)
})
</script>
 
<style lang="scss" scoped></style>

3.3 接口API使用说明

3.3.1 [系统]用户注册
接口地址:/api/SysUser/reg
必传:Account、Pwd、
可选:_SmsCaptchaValue(短信验证码,之所以为可选是因为短信通道可能出错,此时只要图形验证码通过即可注册。而图形验证码通过时会往缓存里存一个[SmsCaptcha:Phone=Allow],因此注册接口无需再次验证图形码)

if(!V8.Param.Account || !V8.Param.Pwd){
  V8.Result = { Code : 0, Msg : 'Account、Pwd必填!' };
  return;
}

//判断是否存在账户,分布式锁Key[sys_user],注册用户、修改用户均采用此key
var sysUserModelResult = V8.FormEngine.GetFormData({
  FormEngineKey : 'Sys_User',
  _Where : [{ Name : 'Account', Value : V8.Param.Account, Type : '=' }]
});

//Code=2:不存在数据。Code=1:存在数据。Code=0:有错误。
if(sysUserModelResult.Code == 1){
  V8.Result = { Code : 0, Msg : '已存在此用户:' + V8.Param.Account};
  return;
}

//-------图形/短信验证码相关验证 START
//注册一定要判断是否获取了短信验证码,若短信验证码通道出现了问题,也会有一个[SmsCaptcha:Phone=Allow的标记(表示图形验证码已通过)],因此这里无需再次判断图形验证码。
//需要在[判断是否存在用户]逻辑之前,防止匿名查询是否存在此帐号。

var smsCode = V8.Cache.Get('SmsCaptcha:' + V8.Param.Account);
if(!smsCode){
  V8.Result = { Code : 0, Msg : '未获取短信验证码!'};
  return;
}
if(smsCode != 'Allow' && smsCode != V8.Param._SmsCaptchaValue){
  V8.Result = { Code : 0, Msg : '短信验证码错误!'};// + `输入${V8.Param._SmsCaptchaValue}实际${smsCode}`
  return;
}

//-------图形/短信验证码相关验证 END

if(sysUserModelResult.Code == 0){
  V8.Result = { Code : 0, Msg : sysUserModelResult.Msg};
  return;
}

var addSysUserModelResult = V8.FormEngine.AddFormData({
  FormEngineKey : 'Sys_User',
  _RowModel : {
    No : '',//自动编号,目前这里必须要传个空值
    Account : V8.Param.Account,//帐号
    Phone : V8.Param.Account,//帐号
    Pwd : V8.EncryptHelper.DESEncode(V8.Param.Pwd),//密码
    Name : V8.Param.Account,//名称
    DeptId : 'e9b46df2-9e02-40bf-8ed2-bc96f8874d33',//组织机构Id:应聘者
    DeptName : '应聘者',//组织机构名称
    DeptCode : '2-',//组织机构代码
    RoleIds : '[{"Id":"313df14f-1dd3-4b70-bc65-6a829db7e9a7","Name":"应聘","Level":1}]',//角色
    Level : 1,//级别
    State : 1,//状态
  }
});

//销毁验证码缓存
if(addSysUserModelResult.Code == 1){
  V8.Cache.Remove('SmsCaptcha:' + V8.Param.Account);
}
V8.Result = addSysUserModelResult;

3.3.2 [系统]接口引擎导出Ecel
接口地址:/apiengine/export-excel

//获取数据源
var dataList = V8.FormEngine.GetTableData('diy_blog_test', {}).Data;
//设置表头数据,数据可来源于【diy_field】表
var header = [{
  Name: 'Biaoti', Label : '标题', Component : 'Text'
},{
  Name: 'ImgUpload57', Label : '公有单图', Component : 'ImgUpload', 
  Config : `{
    ImgUpload:{
      Multiple : 0,  //是否多图
      Limit : 0,  //公有还是私有
    }
  }`
},{
  Name: 'ImgUpload64', Label : '公有多图', Component : 'ImgUpload',
  Config : `{
    ImgUpload:{
      Multiple : 1,  //是否多图
      Limit : 0,  //公有还是私有
    }
  }`
}];
//导出excel
var excelResult = V8.Office.ExportExcel({
  //TableId : '7508d9e6-3cfa-4027-aee1-782b4ecf908b',//博文测试
  OsClient : V8.OsClient,
  ExcelData : dataList,//传入数据源
  ExcelHeader : header,
  //ModuleEngineKey: 'c6468241-f16c-4abb-aa54-bd59fd4b7cc4'
});
if(excelResult.Code != 1){
  V8.Result = excelResult; return;
}
var excelByte = excelResult.Data;
V8.Result = {
  Code : 1,
  Data : {
    FileName : '测试接口引擎导出excel.xls',
    ContentType : 'application/vnd.ms-excel',
    FileByteBase64 : System.Convert.ToBase64String(excelByte)
  }
};

3.3.3 [业务]发送第三方短信
接口地址:/api/sms/send
需要输入正确的图形验证码后才能发送短信验证码,防止短信验证码接口被肉鸡。
第三方短信验证码文档见附件。
必传Phone(手机号)、_CaptchaId(验证码Id)、_CaptchaValue(验证码值)
V8引擎代码中要用到的短信帐号密码均从系统设置中读取,而非超级管理员查看系统设置信息时无法查看到真实的短信帐号密码。

if(!V8.Param.Phone || V8.Param.Phone.length != 11){
  V8.Result = { Code : 0, Msg : '手机号错误!' };
  return;
}
if(!V8.Param._CaptchaId){
  V8.Result = { Code : 0, Msg : '未获取图形验证码!' };
  return;
}
if(!V8.Param._CaptchaValue){
  V8.Result = { Code : 0, Msg : '未填写图形验证码!' };
  return;
}
//暂时通过直接操作Cache判断验证码是否正确
//_CaptchaId格式:DefaultRedis:jsnzk:Captcha:b3b9b9e0-00be-483c-a3da-f3b23699c9e7
var captchaRedisValue = V8.Cache.HashGet(`DefaultRedis:${V8.Param._CaptchaId}`, 'data');
if(captchaRedisValue == null){
  V8.Result = { Code : 0, Msg : '不存在的图形验证码或图形验证码已失效!' };
  return;
}
if(captchaRedisValue != V8.Param._CaptchaValue){
  V8.Result = { Code : 1004, Msg : '图形验证码错误!' };
  return;
}
//生成短信验证码。5分钟内没必要重新生成,直接返回之前的。
var smsCode = V8.Cache.Get('SmsCaptcha:' + V8.Param.Phone);
if(!smsCode){
  smsCode = Math.floor(Math.random() * 10000).toString();//3-4位数字,不要拘泥于死板,3位也可以。
}
var postParam = {
  userid : '956',
  account : V8.SysConfig.SmsAccount,
  password : V8.SysConfig.SmsPwd,
  mobile : V8.Param.Phone,//发信发送的目的号码.多个号码之间用半角逗号隔开 
  content : '【toktik】您好,您的验证码是' + smsCode,//短信的内容,内容需要UTF-8编码
  sendTime : '',//定时发送时间,为空表示立即发送,定时发送格式2010-10-24 09:08:10
  action : 'send',//发送任务命令,设置为固定的:send
  extno : '',//扩展子号,请先询问配置的通道是否支持扩展子号,如果不支持,请填空。子号只能为数字,且最多5位数。
};
var postResult = V8.Http.Post({
  Url : 'http://120.78.188.185:8088/sms.aspx',//'https://api-china.itdos.com/api/sysuser/login',//
  PostParam : postParam,
  TimeOut : 5,
});
var result = {};
//从短信服务端返回的xml信息中获取结果
var returnstatus = postResult.match(new RegExp("<returnstatus>(.*?)</returnstatus>"))[1];
var message = postResult.match(new RegExp("<message>(.*?)</message>"))[1];
result.Code = returnstatus == 'Success' ? 1 : 0;
result.Msg = '发送短信结果:' + message;
//如果发送成功:将验证码缓存起来
if(result.Code == 1){
  V8.Cache.Set('SmsCaptcha:' + V8.Param.Phone, smsCode, '00:05:00');
}else{
  if(message && message.indexOf('余额不足') > -1){
    //如果是短信余额不足,临时允许用户通过图形验证码注册
    result.Code = 1005;
    V8.Cache.Set('SmsCaptcha:' + V8.Param.Phone, 'Allow', '00:05:00');
  }
}
//清除图形验证码缓存
//V8.Cache.HashRemove(`DefaultRedis:${V8.Param._CaptchaId}`);
V8.Result = result;

查看更多接口调用详细文档

3.4 引擎界面可视化配置,生成API

  • 引擎界面可视化配置

    引擎界面可视化配置,生成API,组件内容实时在线可视化拖拽配置,相关属性配置,一键生成;

在这里插入图片描述

  • 一键转JSON

    引擎界面可视化配置,生成API,组件内容实时在线可视化拖拽配置,相关属性配置,一键生成,完成后把JSON复制到项目中,即可使用;

在这里插入图片描述

  • 效果预览

    引擎界面可视化配置,生成API,组件内容实时在线可视化拖拽配置,相关属性配置,一键生成,可以直接预览效果,满意后把JSON复制到项目中,即可使用;

在这里插入图片描述

3.5 最后咱们来看看平台效果

PC端效果

在这里插入图片描述

手机端效果

在这里插入图片描述

四、VUE中配置引擎详解

4.1 表单引擎

    丰富的组件:如下拉树、定制组件(支持表单引擎嵌入定制vue组件/定制vue组件嵌入表单引擎/无限嵌套)等,自由扩展组件;丰富的配置项;灵活的V8引擎事件,分为前端、后端事件;表单/表格模板引擎;一键加载第三方数据库表。

在这里插入图片描述

4.2 工作流引擎

    第一代基于微软WWF、第二代参与ccflow研发、第三代基于微软最新WWF、第四代完全自主研发,由表单引擎、接口引擎驱动。

在这里插入图片描述

4.3 接口引擎

    支持大量常用库,如:V8.Cache、V8.Http、V8.FormEngine等;支持自定义接口地址、支持分布式锁、匿名调用、权限控制、数据库事务等。

在这里插入图片描述

4.4 报表引擎

    本地设计office模板,根据模板进行导出、打印;选择性的将表、数据同步至ES搜索引擎。

在这里插入图片描述

4.5 模块引擎

    支持多表关联、查询列、不显示列、统计列、可搜索列、可排序列、动态V8按钮、复杂where条件、接口地址替换等;支持多种嵌入模式:iframe、微服务、组件、内置界面模板等。

五、吾码技术点解析

在这里插入图片描述

  • 1.跨平台:.Net Core分布式架构,支持华为云、阿里云、腾讯云、亚马逊云、三大运营商云服务器等、本地化部署,提供框架源代码。

  • 2.跨语言:提供Grpc协议源代码,支持Java、Pyhon等语言调用进行二次开发

  • 3.提供前端主框架90%源代码;提供微服务框架100%源代码,支持Vue、ReactJS、AngularJs进行二次开发,私有化npm部署

  • 4.Dos.ORM跨数据库支持(MySql[5.5、5.6、5.7、8.x]、Oracle[11g]、SqlServer[2005+],分库分表、读写分离、多主同步),可扩展更多数据库。

  • 5.多种SAAS模式,支持数据库级别隔离、TenantId租户隔离、独立组织机构数据隔离

  • 6.分布式缓存Redis(哨兵)

  • 7.分布式云存储、MinIO、亚马逊S3等

  • 8.消息队列、高性能MongoDB日志系统

  • 9.集成搜索引擎Solr/ES

  • 10.Nginx、负载均衡、CDN全球加速

  • 11.OAuth2.0、JWT 统一身份认证

  • 12.Docker、K8S、Jenkins、Rancher、CICD

六、结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


------------- 业精于勤,荒于嬉 -------------
 

请添加图片描述

------------- 行成于思,毁于随 -------------

在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌

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

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

相关文章

线程信号量 Linux环境 C语言实现

既可以解决多个同类共享资源的互斥问题&#xff0c;也可以解决简易的同步问题 头文件&#xff1a;#include <semaphore.h> 类型&#xff1a;sem_t 初始化&#xff1a;int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…

解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享20241204

&#x1f6e0;️ 解决 Maven 部署中的 Artifact 覆盖问题&#xff1a;实战经验分享 &#x1f4cc; 引言 在软件开发过程中&#xff0c;持续集成和持续部署&#xff08;CI/CD&#xff09;是提高开发效率和代码质量的关键手段。Hudson 和 Maven 是两种广泛使用的工具&#xff0…

【Linux】文件描述符fd

1.前置预备 文件 内容 属性访问文件之前&#xff0c;都必须先打开他 #include<stdio.h> int main() { FILE* fpfopen("log.txt","w"); if(fpNULL) { perror("fopen"); return 1; } fclose(fp); return 0…

JVM 性能调优 -- JVM 调优常用网站

前言&#xff1a; 上一篇分享了 JDK 自带的常用的 JVM 调优命令和图形化界面工具&#xff0c;本篇我们分享一下常用的第三方辅助 JVM 调优网站。 JVM 系列文章传送门 初识 JVM&#xff08;Java 虚拟机&#xff09; 深入理解 JVM&#xff08;Java 虚拟机&#xff09; 一文搞…

数据结构自测5

第6章 树和二叉树 自测卷解答 一、下面是有关二叉树的叙述&#xff0c;请判断正误&#xff08;每小题1分&#xff0c;共10分&#xff09; &#xff08; √ &#xff09;1. 若二叉树用二叉链表作存贮结构&#xff0c;则在n个结点的二叉树链表中只有n—1个非空指针域。 &#xff…

优傲协作机器人 Remote TCP Toolpath URCap(操作记录)

目录 一、新机设置项 1、设置管理员密码 2、设置安全密码 3、设置负载 二、激活 Remote TCP & Toolpath URCap 1、插入U盘 2、打开激活面板 3、导入许可证 4、查看是否激活成功 5、启用功能 三、使用流程&#xff08;官方&#xff09; 步骤一 步骤二 步骤三 …

【数据库系列】Spring Boot如何配置Flyway的回调函数

Flyway 提供了回调机制&#xff0c;使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口&#xff0c;可以在迁移前后执行操作&#xff0c;如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数&#xff0c;需要创…

正点原子imx6ull配置MQTT客户端上传数据到Ubuntu MQTT服务器

目录 使用QT自带的MQTT模块部署客户端创建一个class专门用于MQTT客户端通讯使用QT在ui界面上生成按钮在Windows上订阅相应主题测试在imx6ull上订阅Windows发布的消息 在上一篇中介绍了在Ubuntu22.04的Docker中部署MQTT服务器&#xff0c;然后在window上测试订阅和发布&#xff…

3D数据大屏实现过程,使用echarts、Next.js

&#x1f4dc; 本文主要内容 数据大屏自适应方案动效 echarts&#xff1a; 3D 立体柱状图动态流光折线图 3D 地球&#xff08;飞线、柱状图&#xff09;无限滚动列表 &#x1f50d; 大屏效果 数据大屏&#xff1a; 点击预览 &#x1f579; 运行条件 next 12.3.4echarts 5.4…

第一部分 网络安全

网络安全是利用各种网络监控和管理技术措施&#xff0c;对网络系统的硬件、软件及系统中的数据源实施保护&#xff0c;使其不会因为一些不利因素遭到破坏&#xff0c;从而保证网络系统连续、安全、可靠的运行。 一、信息泄露与篡改 四种类型&#xff1a;截获信息&#xff0c;…

机器学习--绪论

开启这一系列文章的初衷&#xff0c;是希望搭建一座通向机器学习世界的桥梁&#xff0c;为有志于探索这一领域的读者提供系统性指引和实践经验分享。随着人工智能和大数据技术的迅猛发展&#xff0c;机器学习已成为推动技术创新和社会变革的重要驱动力。从智能推荐系统到自然语…

家庭财务管理系统的设计与实现ssm小程序+论文源码调试讲解

2系统关键技术 2.1 微信小程序 微信小程序&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种全新的连接用户与服务的方式&#xff0c;可以快速访问、快速传播&#xff0c;并具有良好的使用体验。 小程序的主要开发语言是JavaScript&#xff0c;它与普…

MySQL初学之旅(5)详解查询

目录 1.前言 2.正文 2.1聚合查询 2.1.1count() 2.1.2sum() 2.1.3avg() 2.1.4max() 2.1.5min() 2.1.6总结 2.2分组查询 2.2.1group by字句 2.2.2having字句 2.2.3group by与having的关系 2.3联合查询 2.3.1笛卡尔积 2.3.2内连接 2.3.3外连接 2.3.4自连接 2.3…

Java Web 2 JS Vue快速入门

一 JS快速入门 1.什么是JavaScript&#xff1f; 页面交互&#xff1a; 页面交互是指用户与网页之间的互动过程。例如&#xff0c;当用户点击一个按钮&#xff0c;网页会做出相应的反应&#xff0c;如弹出一个对话框、加载新的内容或者改变页面的样式等&#xff1b;当用户在表…

浅谈MySQL路由

华子目录 mysql-router介绍下载mysql-router安装mysql-router实验 mysql-router介绍 mysql-router是一个对应用程序透明的InnoDB Cluster连接路由服务&#xff0c;提供负载均衡、应用连接故障转移和客户端路由利用路由器的连接路由特性&#xff0c;用户可以编写应用程序来连接到…

Python语法基础---正则表达式

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们这个文章所讲述的&#xff0c;也是数据分析的基础文章&#xff0c;正则表达式 首先&#xff0c;我们在开始之前&#xff0c;引出一个问题。也是我们接下来想要解决的问题。…

AMEYA360 | 杭晶电子:晶振在AR/VR中的应用

晶振在AR/VR设备中扮演重要角色&#xff0c;为其核心电子系统提供稳定的时钟信号&#xff0c;确保设备的高性能运行。 以下是晶振在AR/VR应用中的具体作用&#xff1a; 01、图像处理与同步 1、晶振为图形处理单元(GPU)和显示芯片提供精准的时钟信号&#xff0c;支持高速图像渲染…

如何将python项目导出为docker镜像

如何将python项目导出为docker镜像 前提条件步骤 1: 创建并准备 Python 项目步骤 2: 创建 `setup.py`步骤 3: 打包项目步骤 4: 创建 Dockerfile步骤 5: 构建 Docker 镜像步骤 6: 运行 Docker 容器步骤 7: 保存修改并继续开发总结要将修改后的Python代码导出为 .tar.gz 格式,并…

预训练模型与ChatGPT:自然语言处理的革新与前景

目录 一、ChatGPT整体背景认知 &#xff08;一&#xff09;ChatGPT引起关注的原因 &#xff08;二&#xff09;与其他公司的竞争情况 二、NLP学习范式的发展 &#xff08;一&#xff09;规则和机器学习时期 &#xff08;二&#xff09;基于神经网络的监督学习时期 &…

红日靶场vulnstack (五)

前言 好久没打靶机了&#xff0c;今天有空搞了个玩一下&#xff0c;红日5比前面的都简单。 靶机环境 win7&#xff1a;192.168.80.150(外)、192.168.138.136(内) winserver28&#xff08;DC&#xff09;&#xff1a;192.168.138.138 环境搭建就不说了&#xff0c;和之前写…