当前位置: 首页 > 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 …...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

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

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

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...