暂时未有相关云产品技术能力~
错误原因在使用git的时候 出现 Incorrect username or password (access token),这个报错主要就是代表本地保存的gitee或者GitHub的账号还有密码错误。而他们这些账号密码都保存到了windows的凭据管理器解决方式首先打开windows的凭据管理器 凭据管理器所在的位置: 控制面板\用户帐户\凭据管理器同样直接搜索也可以进入Windows凭据找到对应的网址然后进入编辑模式修改正确的密码修改完成,可以继续使用Git
1.Git简介git介绍:是一个免费的开源的分布式版本控制系统何为版本控制?版本控制是一种记录内容变化,以便将来查阅指定版本修订情况的系统版本控制最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本的切换注意: Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 快照在信息存储的方式上Git和其他版本控制系统在对信息的存储和认知方式上却有很大差异具体的差异建议看Git的官方文档2.下载并安装Git2.1 安装 Git 2.37.3使用官网下载最新版本(只要相差不大就没问题)官网 https://git-scm.com/2.1.1下载git2.1.2 选择安装的版本选择自己对应的和自己电脑对应的版本,现在一般都是64位的操作系统,选择 64-bit Git for Windows Setup ,64位的操作系统也可以兼容32位的版本官网下载比较慢的可以使用迅雷下载,会快不少 用迅雷下载的过程中可能会出现中断情况,或者出现需要登录用户名的情况,暂停几分钟,继续下载就好了如果嫌麻烦也提供阿里云盘的链接Git-2.37.3-64-bit.exehttps://www.aliyundrive.com/s/djUkN5fHW5e提取码: a9g12.2安装Git2.2.1 下载完成后打开文件开始安装一些协议,不用看 直接下一步2.2.2 选择安装位置根据自己的情况合理选择,注意路径中尽量不要有中文也不要有空格,以免后续出现奇奇怪怪的问题选择完后下一步2.2.3 安装配置选项一般都不用修改,默认就可以另外鼠标右击菜单用起来超级方便,从那个目录右击进入Git Bash路径会自动切换到该目录2.2.4 确认安装安装目录这个目录是 2.2.2 安装位置的子目录,不用修改安装完成后的目录:D:\Git_2_37_3\Git2.2.5 选择编译器为Git选择一个编辑器建议使用默认的编译器Vim,大部分人都用这个编译器,也是上最常用的Linux最常用的编译器选用其他的可能需要安装对应的软件,例如选择Notepad++作为编译器,就需要先安装Notepad++ 在配置环境变量2.2.6 .设置主分支设置在建立git项目的时候主分支的名字第一个是选择默认,主分支 master第二个是自定义,主分支的名字这个建议还是选择默认,因为绝大数人都用master,是否自定义看自己的需求2.2.7 调整path环境变量主要的目的就是选择使用Git位置第一选项‘Use Git from Git Bash only’ 只在GitBash下使用(推荐)因为使用的过程绝大多数都是通过Git Bash进行使用的,不会在其他的终端进行使用git的指令第二个选项,大概的意思就是可以在第三方软件中使用Git 会修改环境变量第三个选项 从命令提示符使用 Git 和可选的 Unix 工具 本身就带有警告
os.path模块os.path中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理os.path 获取当前环境的路径os.pathos.path.abspath(path) 返回路径 path 的绝对路径# 根据相对路径返回绝对路径 print(os.path.abspath('a/c/aaa.txt'))os.path.exists(path) 判断该路径或文件是否存在path:路径返回布尔值,True,False# 检查文件是否存在 print(os.path.exists('a/c')) # 检查aaa.txt文件是否存在 print(os.path.exists('a/c/aaa.txt')) os.path.getatime(path)返回path的最后访问时间,返回的时间为秒(时间戳),可以利用tiem转换成常用的时间格式# 返回文件a最后的访问时间 print(os.path.getatime('a')) t = os.path.getatime('a') # 获取时间戳 tupTime = time.localtime(t) # 将时间戳转换成本地时间 stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime) # 转换成对应的时间格式 print(stadardTime) # 2022-09-18 11:44:28 os.path.getctime(path) 在windos下获取文件的创建时间,在Unix返回的是最后的修改时间# 获取aaa.txt文件的创建时间(windows) t = os.path.getctime('a/c/aaa.txt')os.path.getsize(path) 获取文件的大小# 获取文件aaa.txt的大小 os.path.getsize('a/c/aaa.txt')os.path.split() 将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。返回的部分是一个元组里面由两个元素a = os.path.split('D:/aa/bb') print(type(a)) # <class 'tuple'> print(a) # ('D:/aa', 'bb') 头部和尾部 # 当最后为’/‘时 a = os.path.split('D:/aa/bb/') print(a) # ('D:/aa/bb', '') 尾部为空 # 当路径path中没有路径的时候 a = os.path.split('aa') print(a) # ('', 'aa') # 头部为空 # 当传入的路径为空时 a = os.path.split( '') print(a) # ('', '') # 头部和尾部均为空 os.path.isfile() 判断传入的文件是否存在 返回布尔值# 判断文件是否存在 os.path.isfile('a/c/aaa.txt')os.path.isdir() # 判断文件路径是否存在 返回布尔值# 判断路径a/c是否存在 os.path.isdir('a/c')os.open()模块os.open() 打开文件的一系列操作用法和基本的open函数很类似注解 本函数适用于底层的 I/O。常规用途请使用内置函数 open(),该函数的 read() 和 write() 方法(及其他方法)会返回 文件对象。要将文件描述符包装在文件对象中,请使用 fdopen()。os.open(file, flags[, mode]) ''' file 文件名 flags 模式 mode 可选参数, mode 设置其权限状态 ''' flags – 该参数可以是以下选项,多个使用 “|” 隔开:os.O_RDONLY: 以只读的方式打开os.O_WRONLY: 以只写的方式打开os.O_RDWR : 以读写的方式打开os.O_NONBLOCK: 打开时不阻塞os.O_APPEND: 以追加的方式打开os.O_CREAT: 创建并打开一个新文件os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)os.O_EXCL: 如果指定的文件存在,返回错误os.O_SHLOCK: 自动获取共享锁os.O_EXLOCK: 自动获取独立锁os.O_DIRECT: 消除或减少缓存效果os.O_FSYNC : 同步写入os.O_NOFOLLOW: 不追踪软链接在写入文件时不能直接写入字符串否则会报错TypeError: a bytes-like object is required, not 'str'# 打开文件 fd = os.open("foo.txt", os.O_RDWR|os.O_CREAT ) # 模式可以并存中间用 | 隔开 # 写入字符串 a = b"This is test" os.write(fd,a) # 关闭文件 os.close(fd) print("关闭文件成功!!") 最后的补充最后如果忘记了os的用法可以使用内置的 dir() 和 help() 函数来查看函数的用法dir() 返回一个列表包括 os模块的所有函数名print(dir(os))help() 返回所有os模块的所有内容print(help(os))这样的结果看着确实有点不太人性化使用help函数查看具体的函数使用方法print(help(os.getcwd)) print(help('os.getcwd')) # 使用字符串也可以返回函数的作用
django常见数据库配置错误出现报错代码为1045的这类几乎都是数据库配置出错报错1django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localh报错原因: 配置文件出错解决方式:查看自己 settings.py文件里面DATABASES配置数据库的字段是否出现的拼写错误(using password: NO)这个就是代表配置文件中password拼写错误报错2django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (u报错原因:密码错误解决方式:检查自己的密码是否输入正确报错3出现报错代码为2003的是数据库连接失败,端口错误,地址错误django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '128.0.0.1' (t报错原因:数据库地址写错,导致链接超时报错4django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)") 报错原因:端口号错误解决方式修改配置文件中的端口号报错5django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient? 报错原因:没有配置数据库驱动解决方式:在项目__init__.py文件里面添加import pymysql pymysql.install_as_MySQLdb() 没有安装 pynysql的可以通过pip进行安装pip install pymysql报错6django.db.utils.OperationalError: (1049, "Unknown database 'mydb'")报错原因:需要连接的数据库不存在解决方式:需要先在自己的mysql数据库中创建需要连接的数据库正确的配置DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库的名字', 'USER':'root', # 用户名 'PASSWORD':'root', # 密码 'HOST':'127.0.0.1', # ip 'PORT': '3306', # 端口 } }
远程连接MySQL数据报错 ‘10060 unknown error’的解决方法MySQL:8.0.25Navicat:15第一步:修改数据库中用户的权限进入MySQL自带的数据库 mysql进入数据库use mysqlselect host,user from user;host代表改用户访问的权限位置,localhost代表仅限本机可以连接,因为我们要进行远程连接所以需要修改root对应的host查看user表里面用户个改用户对应的权限将对应的host换成 % 通配符,就是代表任何主机都可以使用root进行远程连接update user set host = "%" where user = 'root';实际中一般不建议直接写通配符,可以做一些限制,根据自己实际的ip地址进行限制update user set host = "192.168.111.%" where user = 'root';刷新权限flush privileges;第二步:开放端口号查看开放的端口号firewall-cmd --list-all设置开放的端口号firewall-cmd --zone=public --add-port=3306/tcp --permanent重启防火墙并查看是否生效firewall-cmd --reload firewall-cmd --list-all第三步测试连接成功连接远程连接数据库一般遇到的问题‘用户不允许远程登录’,‘服务器的端口未开方放’,‘防火墙的问题’可能解决这个问题以后会报一个错误号码 2058,这个就是因为MySQL新的加密方式导致的,我们可以考虑更换加密方式,也可以升级Navicat
试题F 消除游戏st = input() st_list = list(st) # 将字符串装换成列表 st_flag = [0 for _ in range(len(st_list))] for c in range(2**64): # 循环次数 st_flag = [0 for _ in range(len(st_list))] # 生成标志列表 l1 = len(st_list) # 计算字符列表的长度 for i in range(1,len(st_list)-1): if st_list[i]==st_list[i-1] and st_list[i]!= st_list[i+1]: # 条件一 st_flag[i] = 1 st_flag[i+1] = 1 if st_list[i]!=st_list[i-1] and st_list[i]== st_list[i+1]: # 条件二 st_flag[i] = 1 st_flag[i-1] = 1 st_list2 = [] for i in range(len(st_flag)): # 将边缘字符删去 if st_flag[i] == 0: st_list2.append(st_list[i]) st_list = st_list2 l2 = len(st_list) # 删除边缘字符以后的长度,如果长度不变,说明字符里面已经没有边缘字符了,可以跳出循环 if l2 == l1: break st = ''.join(st_list) # 将列表连接成字符串 if len(st) == 0: print('EMPTY') else: print(st) 试题G 全排列的价值利用回溯法求解全排列关于这个算法的详细情况我回来会单独写一篇文章讲解n = int(input()) arr = [i for i in range(1, n + 1)] # arr_s = [] # 存放全排列后的数组 def permutations(arr, position, end): """ 生成所有的全排列情况,将所有的情况存入另一个数组中 :param arr: 数组 :param position: 开始交换的位置 :param end: 结束的位置 :return: """ if position == end: arr_s.append(arr.copy()) # else: for index in range(position, end): arr[index], arr[position] = arr[position], arr[index] permutations(arr, position + 1, end) # arr[index], arr[position] = arr[position], arr[index] permutations(arr, 0, len(arr)) def list_value(lst): """ 判断每一个数组里面的价值 :param lst: 全排列的一种情况 :return: 价值 """ value = 0 for i in range(1, len(lst)): for j in range(i): if lst[i] > lst[j]: value += 1 return value sum_value = 0 for item in arr_s: sum_value += list_value(item) print(sum_value) 使用内置函数求解from itertools import permutations # 内置函数 n = int(input()) arr = [i for i in range(1, n + 1)] arr_s = list(permutations(arr)) def list_value(lst): """ 判断每一个数组里面的价值 :param lst: 全排列的一种情况 :return: 价值 """ value = 0 for i in range(1, len(lst)): for j in range(i): if lst[i] > lst[j]: value += 1 return value sum_value = 0 for item in arr_s: sum_value += list_value(item) print(sum_value) 试题H 技能升级import math n,m = map(int,input().split()) # n代表技能数、m代表总计可以生成多少次技能 a_lst = [] # 存放下次提示攻击力的数值 b_lst = [] # 存放每次加过攻击力需要减少的点数 c_lst = [] # 添加攻击力的次数 for i in range(n): a,b = map(int,input().split()) a_lst.append(a) b_lst.append(b) c = math.ceil(a/b) # 向上取整 c_lst.append(c) s = 0 for i in range(m): max_num = max(a_lst) index = a_lst.index(max_num ) if c_lst[index]>0: s+=max_num a_lst[index] = max_num-b_lst[index] c_lst[index] -= 1 print(s)试题I 最长不下降子序列题意理解其实就是求解间隔k的长度为最长不递减序列求最长的L1和L2n,k = map(int,input().split()) nums = [int(k) for k in input().split()] def funs(lst): """ lst[0:a] 是一个不递减的列表 :param lst: 原列表 :return: lst[0:a]的长度 """ a = 1 for i in range(len(lst) - 1): if lst[i] >= lst[i + 1]: break a += 1 return a # 数组长度 left = 0 # 左边界 max_l = 1 while True: lst1 = nums[left:] l1 = funs(lst1) if l1+left+k>=n: # 第一个列表和加原左边界加间隔长度k 大于列表长度,则必定可以通过修改最后nums[l1+left:]满足题目要求 if n-left> max_l: max_l = n-left break if nums[l1+left] <= nums[l1+left+k]: # 需要保证 第二个列表的第一个元素大于等于第一个序列的最后一个值,中间k个元素可以修改成[nums[l1+left],nums[l1+left+k]]其中的任意值 lst2 = nums[l1+left+k:] # 第二个列表 l2 = funs(nums[l1+k:]) # 从开始位置,到不递减位置的长度 if l2+l1+k > max_l: # l2+l1+k 题目中不下降序列的长度 max_l = l2+l1+k else: if l1+k>max_l: max_l = l1+k left+=1 print(max_l) 最优清零方案n,k = map(int,input().split()) nums = [int(i) for i in input().split()] left = 0 c = 0 while left <= n-k: lst = nums[left:left+k] if 0 in lst: left+=1 continue min_num = min(lst) # 每次选去长度为k且不包含0的列表 for i in range(len(lst)): lst[i] = lst[i] - min_num nums[left:left+k] = lst c+=min_num left += 1 # 剩下不能组成连续k个大于0的整数,所以只能采用方式一进行消除,每次选一个大于0的数减一,次数为剩余数的和 print(c+sum(nums)) 最后说一下我个人感觉获奖的大概情况:省一:1道填空,4道大题省二:1道填空,2道大题+部分试题通过部分省三:1道填空,1道大题这些是根据我和我周围同学的总结出来的,仅供参考,得奖与否还要看当年题目的难易程度既然都看到这里了,点个赞、点个关注再走吧
2023年01月
2022年10月