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

python: generator IDAL and DAL using sql server 2019

其它数据库也是一样的思维方式

create IDAL

# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : 2024/11/18 21:10
# User      : geovindu
# Product   : PyCharm
# Project   : pyGenerator
# File      : SqlServerGenerator/createInterface.py
# explain   : 学习
import os
import re
import sys
import io
import datetime
from common.fileHelper import FileHelper
from common.strHelper import StrHelper
from bll.tableNameAndKey import TableNameAndKeyBll
from bll.tableForegin import TableForeginBll
from bll.tableModel import TableModelBllclass CreateInterface(object):""""""def __init__(self):self.__modelpath = os.path.join(os.getcwd() + "/test/interface/")self.__file = FileHelper()self.__blltablekey = TableNameAndKeyBll()self.__database = "sql server 2019"self.__name = "CreateInterface"passdef __del__(self):""":return:"""print(f"{self.__name} ERASE MEMORY")def addpackagefile(self):"""生成包配置文件:return:"""now = datetime.datetime.now()bll = TableNameAndKeyBll()sb = []sbt = f"""
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : {now.strftime('%Y-%m-%d %H:%M:%S')}
# database  :{self.__database}
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : interface/__init__.py
# explain   : 学习"""sb.append(sbt)for li in bll.selectSql():sbp=f"""
from interface.{StrHelper.firstLower(li.TableName)} import I{li.TableName}
"""sb.append(sbp)if not os.path.exists(self.__modelpath):os.makedirs(self.__modelpath)filepath = self.__modelpath + '__init__.py'content = ''.join(sb)ok = self.__file.createModelFile(filepath, content)def add(self):"""生成实体:return:"""# fileHelper=FileHelper()now = datetime.datetime.now()bll = TableNameAndKeyBll()for li in bll.selectSql():sb = []sbt = f"""
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : {now.strftime('%Y-%m-%d %H:%M:%S')}
# database  :{self.__database}
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : interface/{li.TableName}.py
# explain   : 学习
from __future__ import annotations
from abc import ABC, abstractmethod
import os
import sys
from model.{StrHelper.firstLower(li.TableName)} import {li.TableName}Infoclass I{li.TableName}(ABC):\"""{li.TableDescription}                   \"""
"""sb.append(sbt)tbll = TableModelBll()sinhead = f"""@classmethoddef __subclasshook__(cls, subclass):return (hasattr(subclass, 'load_data_source') andcallable(subclass.load_data_source) andhasattr(subclass, 'extract_text') andcallable(subclass.extract_text) orNotImplemented) @abstractmethoddef selectSql(cls) -> list:\""":return:\"""pass@abstractmethoddef selectSqlCount(cls) -> list:\"""查询数据 总数:return:\"""pass@abstractmethoddef selectSqlOrder(cls, order: str) -> list:\""":param order::return:\"""pass@abstractmethoddef selectSort(cls,field:str,isOrder:bool)->list:\""":param field:param order:  desc/asc:return:\"""pass@abstractmethoddef selectIdSql(cls, {StrHelper.firstLower(li.FieldName)}: str):\""":param {li.FieldName}::return:\"""pass@abstractmethoddef selectProc(cls):\""":return:\"""pass@abstractmethoddef selectIdProc(cls, {StrHelper.firstLower(li.FieldName)}):\""":param {li.FieldName}::return:\"""pass@abstractmethoddef addSql(cls, info: {li.TableName}Info):\""":param info::return:\"""pass@abstractmethoddef addProc(cls, info: {li.TableName}Info):\""":param info::return:\"""pass@abstractmethoddef addOutProc(cls, info: {li.TableName}Info):\""":param info::return:\"""pass@abstractmethoddef editSql(cls, info: {li.TableName}Info):\""":param info::return:\"""pass@abstractmethoddef editProc(cls, info: {li.TableName}Info):\""":param info::return:\"""pass@abstractmethoddef delSql(cls, {StrHelper.firstLower(li.FieldName)}):\""":param {li.FieldName}::return:\"""pass@abstractmethoddef delProc(cls, {StrHelper.firstLower(li.FieldName)}):\""":param {li.FieldName}::return:\"""pass              """sb.append(sinhead)if not os.path.exists(self.__modelpath):os.makedirs(self.__modelpath)filepath = self.__modelpath + StrHelper.firstLower(li.TableName) + '.py'content = ''.join(sb)ok = self.__file.createModelFile(filepath, content)

create DAL 

# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : 2024/11/18 21:10
# User      : geovindu
# Product   : PyCharm
# Project   : pyGenerator
# File      : SqlServerGenerator/createDal.py
# explain   : 学习
import os
import re
import sys
import io
import datetime
from common.fileHelper import FileHelper
from common.strHelper import StrHelper
from bll.tableNameAndKey import TableNameAndKeyBll
from bll.tableForegin import TableForeginBll
from bll.tableModel import TableModelBllclass CreateDal(object):""""""def __init__(self):self.__modelpath = os.path.join(os.getcwd() + "/test/dal/")self.__file = FileHelper()self.__blltablekey = TableNameAndKeyBll()self.__bllTableModel = TableModelBll()self.__database = "sql server 2019"self.__name = "CreateDal"passdef __del__(self):""":return:"""print(f"{self.__name} ERASE MEMORY")def getColumn(self,tableName:str) -> str:"""column=("SchoolId","SchoolName","SchoolTelNo"):return:"""tables = self.__bllTableModel.selectSql(tableName)columns = []columnstr = '('if len(tables) > 0:for obj in tables:columns.append("\""+obj.FieldName+"\"")columnstr =columnstr + ','.join(columns)return columnstr+')'def getVales(self,tableName:str) -> str:"""egs:vales=[info.SchoolId,info.SchoolName,info.SchoolTelNo]:return:"""vales = []valesstr = '['tables = self.__bllTableModel.selectSql(tableName)if len(tables)>0:for obj in tables:vales.append('info.'+obj.FieldName)valesstr = valesstr+','.join(vales)return valesstr + ']'def getArgs(self,tableName:str) -> str:"""egs:args = [info.SchoolId,info.SchoolName,info.SchoolTelNo] #修改的args ={{"schoolId":f"{{info.schoolId}}","SchoolName":f"{{info.SchoolName}}","SchoolTelNo":f"{{info.SchoolTelNo}}"}}:return:"""args = []argsstr = '['tables = self.__bllTableModel.selectSql(tableName)if len(tables)>0:for obj in tables:args.append('info.'+obj.FieldName)argsstr =argsstr+ ','.join(args)return argsstr+']'def getArgs(self,tableName:str) -> str:"""egs:args = [info.SchoolId,info.SchoolName,info.SchoolTelNo] #修改的:return:"""args = []argsstr = '['tables = self.__bllTableModel.selectSql(tableName)if len(tables)>0:for obj in tables:args.append('info.'+obj.FieldName)argsstr = argsstr+','.join(args)return argsstr+']'def getArgsVariable(self,tableName:str) -> str:"""egs:args ={"schoolId":f"{{info.schoolId}}","SchoolName":f"{{info.SchoolName}}","SchoolTelNo":f"{{info.SchoolTelNo}}"}}:return:"""args = []argsstr = '{'tables = self.__bllTableModel.selectSql(tableName)if len(tables)>0:for obj in tables:args.append("\""+obj.FieldName+"\":f\"{info."+obj.FieldName+"}\"")argsstr =argsstr+ ','.join(args)return argsstr+'}'def getArgsOut(self,tableName:str, primekey:str) -> str:"""egs:args = [info.SchoolName, info.SchoolTelNo,outid]   #添加返回值:return:"""args = []argsstr = '['tables = self.__bllTableModel.selectSql(tableName)if len(tables)>0:for obj in tables:if str(obj.FieldName).lower() != primekey.lower():args.append('info.'+obj.FieldName)argsstr = argsstr+','.join(args)return argsstr+',out'+primekey+']'def addpackagefile(self):"""生成包配置文件:return:"""now = datetime.datetime.now()bll = TableNameAndKeyBll()sb = []sbt = f"""
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : {now.strftime('%Y-%m-%d %H:%M:%S')}
# database  :{self.__database}
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : dal/__init__.py
# explain   : 学习"""sb.append(sbt)for li in bll.selectSql():sbp=f"""
from dal.{StrHelper.firstLower(li.TableName)} import {li.TableName}Dal
"""sb.append(sbp)if not os.path.exists(self.__modelpath):os.makedirs(self.__modelpath)filepath = self.__modelpath + '__init__.py'content = ''.join(sb)ok = self.__file.createModelFile(filepath, content)def add(self):"""生成实体:return:"""# fileHelper=FileHelper()now = datetime.datetime.now()bll = TableNameAndKeyBll()for li in bll.selectSql():sb = []sbt = f"""
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : {now.strftime('%Y-%m-%d %H:%M:%S')}
# database  :{self.__database}
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : dal/{li.TableName}.py
# explain   : 学习
from __future__ import annotations
from abc import ABC, abstractmethod
import os
import sys
from model.{StrHelper.firstLower(li.TableName)} import {li.TableName}Info
from DBUtility.MsSQLHelper import MsSqlHelper
from interface.{StrHelper.firstLower(li.TableName)} import I{li.TableName}class {li.TableName}Dal(I{li.TableName}):\"""{li.TableDescription}                   \"""
"""sb.append(sbt)sinhead = f"""myms = MsSqlHelper()def __init__(self):\"""构造函数,方法:param strserver::param struser::param strpwd::param strdatabase:\"""self._strserver = ""self._struser = ""self._strpwd = ""self._strdatabase =""def selectSql(cls)->list:\"""查询数据 self._strserver, self._struser, self._strpwd, self._strdatabase:return:\"""row=cls.myms.execute("select * from {li.TableName};")#cls.myms.close()return rowdef selectSqlCount(cls)->list:\"""查询数据 总数:return:\"""row=cls.myms.execute("select count(*) as total from {li.TableName};")#cls.myms.close()return row[0]def selectSqlOrder(cls,order:str)->list:\""":param order:  SchoolId desc/asc:return:\"""students=[]strsql=f"select * from {li.TableName} order by {{order}};"row=cls.myms.execute(f"select * from {li.TableName} order by {{order}};")return rowdef selectSort(cls,field:str,isOrder:bool)->list:\""":param field {li.FieldName}:param order:  desc/asc:return:\"""order='desc'if isOrder==True:order='desc'else:order='asc'strsql=f"select * from {li.TableName} order by {{field}} {{order}};"row=cls.myms.execute(f"select * from {li.TableName} order by {{field}} {{order}};")#cls.myms.close()return rowdef selectIdSql(cls,{li.FieldName}:str)->list:\""":param {li.FieldName}: 主键ID:return:\"""row=cls.myms.execute(f"select * from {li.TableName} where SchoolId='{{SchoolId}}';")  #考虑数据类型#cls.myms.close()return rowdef selectProc(cls)->list:\"""存储过程:return:\"""args = ()row = cls.myms.executeCallProc("procSelect{li.TableName}All",args)return rowdef selectIdProc(cls,{li.FieldName}:str)->list:\"""存储过程:param {li.FieldName}: 主键ID:return:\"""args = ({li.FieldName},)row = cls.myms.executeCallProc('procSelect{li.TableName}', args)return rowdef addSql(cls,info:{li.TableName}Info)->int:\"""添加,要考虑添加返回ID值:param info:实体类:return:\"""column={self.getColumn(li.TableName)}vales={self.getVales(li.TableName)}return cls.myms.insertByColumnaAndValues("{li.TableName}",column,vales)def addProc(cls,info:{li.TableName}Info)->int:\"""添加,要考虑添加返回ID值:param info:实体类:return:\"""args={self.getArgs(li.TableName)}return cls.myms.insertCallProc("procInsert{li.TableName}",args)def addOutProc(cls,info:{li.TableName}Info) -> int:\"""添加,要考虑添加返回ID值:param info:实体类:return: 返回增加的ID\"""id = 0try:outid =('int',) #输出,元组类型print(info)args = {self.getArgsOut(li.TableName,li.FieldName)}print(args)result=cls.myms.insertOutCallProc("procInsert{li.TableName}Output", args)print(result)id = resultexcept Exception as ex:print(ex)return iddef editSql(cls,info:{li.TableName}Info)->int:\""":param info:实体类:return:\"""args = {self.getArgsVariable(li.TableName)}where = f"{li.FieldName}={{info.{li.FieldName}}}" ##print(args,where)return cls.myms.updateByKeyValues("{li.TableName}",where,args)def editProc(cls, info: {li.TableName}Info)->int:\""":param info: 实体类:return:\"""args = {self.getArgs(li.TableName)}return cls.myms.updateProc("procUpdate{li.TableName}",args)def delSql(cls,{li.FieldName}:str)->int:\"""sql语句删除:param {li.FieldName}: 主键ID:return:\"""where={{f"{li.FieldName}":{li.FieldName}}}return cls.myms.deleteByKeyValues("{li.TableName}",where)def delProc(cls, {li.FieldName}:str)->int:\"""删除 存储过程 删除多个ID,后面增加:param {li.FieldName}: 主键ID:return:\"""args ={li.FieldName}k=cls.myms.deleteProc("procDuDelete{li.TableName}", args)return k           
"""sb.append(sinhead)if not os.path.exists(self.__modelpath):os.makedirs(self.__modelpath)filepath = self.__modelpath + StrHelper.firstLower(li.TableName) + '.py'content = ''.join(sb)ok = self.__file.createModelFile(filepath, content)

生成的代码:

# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : 2024-11-19 21:12:32
# database  :sql server 2019
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : interface/School.py
# explain   : 学习
from __future__ import annotations
from abc import ABC, abstractmethod
import os
import sys
from model.school import SchoolInfoclass ISchool(ABC):"""学校表                   """@classmethoddef __subclasshook__(cls, subclass):return (hasattr(subclass, 'load_data_source') andcallable(subclass.load_data_source) andhasattr(subclass, 'extract_text') andcallable(subclass.extract_text) orNotImplemented) @abstractmethoddef selectSql(cls) -> list:""":return:"""pass@abstractmethoddef selectSqlCount(cls) -> list:"""查询数据 总数:return:"""pass@abstractmethoddef selectSqlOrder(cls, order: str) -> list:""":param order::return:"""pass@abstractmethoddef selectSort(cls,field:str,isOrder:bool)->list:""":param field:param order:  desc/asc:return:"""pass@abstractmethoddef selectIdSql(cls, schoolId: str):""":param SchoolId::return:"""pass@abstractmethoddef selectProc(cls):""":return:"""pass@abstractmethoddef selectIdProc(cls, schoolId):""":param SchoolId::return:"""pass@abstractmethoddef addSql(cls, info: SchoolInfo):""":param info::return:"""pass@abstractmethoddef addProc(cls, info: SchoolInfo):""":param info::return:"""pass@abstractmethoddef addOutProc(cls, info: SchoolInfo):""":param info::return:"""pass@abstractmethoddef editSql(cls, info: SchoolInfo):""":param info::return:"""pass@abstractmethoddef editProc(cls, info: SchoolInfo):""":param info::return:"""pass@abstractmethoddef delSql(cls, schoolId):""":param SchoolId::return:"""pass@abstractmethoddef delProc(cls, schoolId):""":param SchoolId::return:"""pass              

# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : 2024-11-19 21:12:32
# database  :sql server 2019
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : dal/School.py
# explain   : 学习
from __future__ import annotations
from abc import ABC, abstractmethod
import os
import sys
from model.school import SchoolInfo
from DBUtility.MsSQLHelper import MsSqlHelper
from interface.school import ISchoolclass SchoolDal(ISchool):"""学校表                   """myms = MsSqlHelper()def __init__(self):"""构造函数,方法:param strserver::param struser::param strpwd::param strdatabase:"""self._strserver = ""self._struser = ""self._strpwd = ""self._strdatabase =""def selectSql(cls)->list:"""查询数据 self._strserver, self._struser, self._strpwd, self._strdatabase:return:"""row=cls.myms.execute("select * from School;")#cls.myms.close()return rowdef selectSqlCount(cls)->list:"""查询数据 总数:return:"""row=cls.myms.execute("select count(*) as total from School;")#cls.myms.close()return row[0]def selectSqlOrder(cls,order:str)->list:""":param order:  SchoolId desc/asc:return:"""students=[]strsql=f"select * from School order by {order};"row=cls.myms.execute(f"select * from School order by {order};")return rowdef selectSort(cls,field:str,isOrder:bool)->list:""":param field SchoolId:param order:  desc/asc:return:"""order='desc'if isOrder==True:order='desc'else:order='asc'strsql=f"select * from School order by {field} {order};"row=cls.myms.execute(f"select * from School order by {field} {order};")#cls.myms.close()return rowdef selectIdSql(cls,SchoolId:str)->list:""":param SchoolId: 主键ID:return:"""row=cls.myms.execute(f"select * from School where SchoolId='{SchoolId}';")  #考虑数据类型#cls.myms.close()return rowdef selectProc(cls)->list:"""存储过程:return:"""args = ()row = cls.myms.executeCallProc("procSelectSchoolAll",args)return rowdef selectIdProc(cls,SchoolId:str)->list:"""存储过程:param SchoolId: 主键ID:return:"""args = (SchoolId,)row = cls.myms.executeCallProc('procSelectSchool', args)return rowdef addSql(cls,info:SchoolInfo)->int:"""添加,要考虑添加返回ID值:param info:实体类:return:"""column=("SchoolId","SchoolName","SchoolTelNo")vales=[info.SchoolId,info.SchoolName,info.SchoolTelNo]return cls.myms.insertByColumnaAndValues("School",column,vales)def addProc(cls,info:SchoolInfo)->int:"""添加,要考虑添加返回ID值:param info:实体类:return:"""args=[info.SchoolId,info.SchoolName,info.SchoolTelNo]return cls.myms.insertCallProc("procInsertSchool",args)def addOutProc(cls,info:SchoolInfo) -> int:"""添加,要考虑添加返回ID值:param info:实体类:return: 返回增加的ID"""id = 0try:outid =('int',) #输出,元组类型print(info)args = [info.SchoolName,info.SchoolTelNo,outSchoolId]print(args)result=cls.myms.insertOutCallProc("procInsertSchoolOutput", args)print(result)id = resultexcept Exception as ex:print(ex)return iddef editSql(cls,info:SchoolInfo)->int:""":param info:实体类:return:"""args = {"SchoolId":f"{info.SchoolId}","SchoolName":f"{info.SchoolName}","SchoolTelNo":f"{info.SchoolTelNo}"}where = f"SchoolId={info.SchoolId}" ##print(args,where)return cls.myms.updateByKeyValues("School",where,args)def editProc(cls, info: SchoolInfo)->int:""":param info: 实体类:return:"""args = [info.SchoolId,info.SchoolName,info.SchoolTelNo]return cls.myms.updateProc("procUpdateSchool",args)def delSql(cls,SchoolId:str)->int:"""sql语句删除:param SchoolId: 主键ID:return:"""where={f"SchoolId":SchoolId}return cls.myms.deleteByKeyValues("School",where)def delProc(cls, SchoolId:str)->int:"""删除 存储过程 删除多个ID,后面增加:param SchoolId: 主键ID:return:"""args =SchoolIdk=cls.myms.deleteProc("procDuDeleteSchool", args)return k           

拼就是一个粗放的项目

相关文章:

python: generator IDAL and DAL using sql server 2019

其它数据库也是一样的思维方式 create IDAL # encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : P…...

命令执行简单

前言:小迪安全2022第一节反弹shell,小迪用的是两台都是云服务器,没有服务器可以在自己的主机上搭建也是可以的,主机上搭两个网站 思路:生成一个木马文件,下载到本机,然后利用本机上传到目标主机…...

【一句话经验】亚马逊云EC2 ubuntu24.04.1开启ROOT登录Permission denied (publickey)

按照常规的方法SSH登录会一直报错: Permission denied (publickey) 因为亚马逊云的默认配置不是在/etc/ssh/sshd_config,而是在引入的文件里了,所以在instance控制台输入这行命令来解除登录限制: sudo sed -i s/^PasswordAuthe…...

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…...

【Linux】深入理解GCC/G++编译流程及库文件管理

目录 1.背景知识 2.gcc/g如何完成编译 (1) 预处理(进行宏替换) (2) 编译(生成汇编) (3) 汇编(生成机器可识别代码) (4) 链接(生成可执行文件或库文件) (5) 总结 (6) 函数库 …...

【Unity基础】对比Unity中两种粒子系统

在Unity中,Particle System和Visual Effect Graph (VFX) 都是用于创建粒子效果的工具,但它们的设计目标、使用场景和功能特点有所不同。以下是详细对比: 1. Particle System 特点 传统粒子系统,Unity自带的模块化粒子特效工具。…...

琐碎笔记——pytest实现前置、后置、参数化、跳过用例执行以及重试

pytest的fixture中文介绍可参考(不过文档稍微有点老): https://www.osgeo.cn/pytest/fixture.html#what-fixtures-are pytest各个作用域的fixture scope “function” 可作用于每个用例 fixture使用的声明放在类定义前面,类中的…...

C# 深层副本与浅层副本 深拷贝与浅拷贝

C# 深层副本与浅层副本 数据复制是编程中的重要任务。 对象是 OOP 中的复合数据类型。 对象中的成员字段可以按值或按引用存储。 可以以两种方式执行复制。 浅表副本将所有值和引用复制到新实例中。 引用所指向的数据不会被复制; 仅指针被复制。 新的引用指向原始…...

CH06_Lambda表达式

第6章:Lambda表达式 本章目标 为什么要学习C#编程语言 了解C#相关常识 C#开发工具Visual Studio安装 掌握C#程序的开发步骤 掌握C#的注释 掌握C#的常用转义符 本章内容 lambda表达式演变史 C# 匿名函数的演变历史可以追溯到 C# 语言的不同版本,…...

大模型本地部署实践:Ollama+Open-WebUI(MacOS)

目录 什么是Ollama Ollama安装 对话界面可视化?Open-WebUI! 安装Open-WebUI 什么是Ollama Ollama是一个为简化大语言模型本地部署与交互的开源框架。它提供了用户友好的接口,帮助开发者和模型爱好者在没有依赖外部API的基础上高效地运行、…...

JavaScript——DOM编程、JS的对象和JSON

一、DOM编程 DOM(Document Object Model)编程:就是使用document对象的API,完成对网页HTML文档进行动态修改,以实现网页数据,和样式动态变化效果的编程。 (一)DOM获取元素的多种方法 1.查找元素的函数 getElementById("id值…...

SIMCom芯讯通A7680C在线升级:FTP升级成功;http升级腾讯云对象储存的文件失败;http升级私有服务器的文件成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...

OSRM docker环境启动

命令一把梭 wget https://download.geofabrik.de/asia/china-latest.osm.pbf docker pull osrm/osrm-backend docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/china-latest.osm.pbf docker run -t -v "${PWD}:/data&q…...

Vue3 动态获取 assets 文件夹图片

我真服了Vue3 这个老六了,一个简单图片src 赋值搞得那么复杂. //item.type 是我遍历类型的类型参数 <img alt"吐槽大会" :src"getAssetUrl(item.type)" /> 基于 Vue2 的Webpack 处理,还不错,可以用/ 这种绝对路径,可以接受,虽然多了个require很不爽…...

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…...

代码随想录算法训练营第五十一天|Day51 图论

岛屿数量 深搜 https://www.programmercarl.com/kamacoder/0099.%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E9%87%8F%E6%B7%B1%E6%90%9C.html 思路 #include <stdio.h> #define MAX_SIZE 50 int grid[MAX_SIZE][MAX_SIZE]; int visited[MAX_SIZE][MAX_SIZE]; int N, M; …...

uniapp 自定义加载组件,全屏加载,局部加载 (微信小程序)

效果图 全屏加载 页面加载使用 局部加载 列表加载里面使用 使用gif html <template><view><view class"" v-if"typeFullScreen"><view class"loading" v-if"show"><view class""><i…...

STM32完全学习——系统时钟设置

一、时钟框图的解读 首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟&#xff0c;由于内部HSI存在较大的误差&#xff0c;因此我们在系统完成上电初始化&#xff0c;之后需要将STM32的时钟切换到外部HSE作为系统时钟&#xff0c;那么我…...

Github 2024-11-16Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Go项目1Python项目1Lapce:用 Rust 编写的极快且强大的代码编辑器 创建周期:2181 天开发语言:Rust协议类型:Apache License 2.0St…...

CH03_反射

第3章&#xff1a;反射 本章目标 掌握反射的原理 熟悉反射的基本运用 本章内容 反射是什么 C# 编译运行过程 首先我们在VS点击编译的时候&#xff0c;就会将C#源代码编译成程序集 程序集以可执行文件 (.exe) 或动态链接库文件 (.dll) 的形式实现 程序集中包含有Microsoft …...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...