- 博客(100)
- 收藏
- 关注
原创 gdb调试redis。sudo
注意这里不能不加sudo,因为Redis 可能以 root 用户启动,普通用户无法附加到该进程。否则就会出现可能下列情形,后续添加断点后并不生效。7.在redis客户端端中执行语句,set key value。1.先启动redis-server和一个redis-cli。然后通过一系列命令s进入函数调试等等。8.然后程序在断点处停下来,比如先通过。让程序从当前的断点位置继续执行。4.翻找一下redis源码。查看redis相关进程。
2024-11-10 23:47:41
327
原创 安装epic games错误码2738解决(安装ue错误码2738)
这个错误不好找到解决方案,尝试删除注册表以及通过电脑管家下载安装都不生效,仍然会错误2738。直到找到了这个解决方案。2.cd %windir%\syswow64进入该目录。1.cmd然后右键以管理员身份运行,
2024-10-02 00:26:53
946
原创 函数调用,递归的应用
递归指的是在解决问题的过程中,将问题分解为同类的子问题而解决问题的方法。比如是双方回合制对战的游戏进行结算,可以使用一个变量bool类型来完成一回合双方互相战斗并且攻击方同时会作为受攻击方的结算。。如下所示.C#部分示例,结算完成,递归调用前执行v1_v2 =!
2024-06-25 10:13:29
307
原创 c++多种情况不同概率下,在范围内使用随机数
多种情况不同概率下,在范围内使用随机数。比如有5种情况,每种情况的概率不相同,有的概率为25,有的为15.在五种概率情况下,通过生成随机数从五类中抽取一个随机结果。使用random库的函数来生成随机数。
2023-08-23 16:27:31
353
原创 gunicorn常用参数命令
其中–log-level=info为开启日志,通常生产环境为info级别,调试为debug级别。上述启动仍然有明显的问题,就是会占用一个终端会话。其中gunicorn为启动gunicorn服务器。以上命令会在每次启动的时候重写run.log,如果我们想要追加的方式则只需要在将4后面的>参数改为>>。其中,一个 Gunicorn 的主进程, 4 个进程是 Gunicorn 的 worker 进程。如上命令就启动了4个并行进程。这样启动只有一个进程,开启多进程的参数为–workers=打开网站查看运行情况。
2023-05-19 17:04:34
2362
原创 在XXX中找到了XXX的副本,但是当前代码与XXX中内置的版本不同【几种解决方案】
在XXX中找到了XXX的副本,但是当前代码与XXX中内置的版本不同
2023-01-19 15:54:56
3336
1
原创 mysql报错:1264-Out of range value for column ‘字段‘ at row 1
发现程序部分内容写不到数据库,于是来排查是否为数据库的问题。mysql数据库报错:1264-Out of range value for column 'guild_leader_id' at row 1。
2022-10-11 20:38:12
9632
原创 git多人开发,合并开发分支到测试分支(流程规范)
git合并到测试假设我们在dev分支上开发完成,要部署到测试服务器本地操作先在命令行git pull 拉取最新的提交信息(主要是为了拉取master)先新建一个临时分支(基于远程master分支)合并自己开发分支,如果有冲突解决冲突。合并后这个就是自己后面要提交的分支推送临时分支,到自己的远程开发分支删除自己的开发分支将自己的临时分支,重命名为自己的开发的分支git pullgit checkout -b temp origin/mastergit merge dev #
2022-05-24 18:26:09
2792
原创 mysql查询数据不准确与隐式转换
在api中,别人传了一组不正确的id格式,我们发现仍然能查到数据。查的attachment_id的字段等于232183.jpg,发现还能查到232183。经过对比,我们发现数据类型不一致。用了字符串类型去查,可以查到int类型。这是由于做了隐式转换。假设按照232183.jpg去查,查询结果应该为空才对,为什么会将id为232183的数据查询出来呢?那是因为将’232183.jpg’强制转换为int时,只保留了232183,而后面的.jpg被抛弃掉。这也就是我们这个查询结果不准确的原因。关于隐式
2022-05-23 20:13:06
697
原创 Apipost(ubuntu)安装与基础使用
https://www.apipost.cn/download.html首先去如上官网下载,如图选择下载。完成后根据下载的文件名来解压tar zxvf apipost_linuxgz_x64_6.1.2.tar.gz 解压后的文件可能在该目录下,叫linux-unpacked 。然后我们进入该目录,并执行apipost。即可打开工具。命令如下:cd linux-unpacked/./apipost6打开网页找到接口测试一下执行的结果可以在apipost软件看到,以及请求的参数可以在终
2022-05-10 19:59:05
1582
原创 强制卸载奇安信天擎
先直接上教程1…右键奇安信,设置-》防护中心-》自我保护。关闭自我保护模式2.右击软件》到文件所在位置,然后进入EntClient\conf\EntBase.dat。找到EntBase.dat3.打开该EntBase.dat文件。把以上两个值uienable和qtenable 都设置为0,这的意思是关闭密码保护,保存后关闭文件。4.然后就可以直接卸载这个软件了教程结束吐槽一下。这个流氓软件下载容易,卸载还需要密码。关闭密码保护还操作不了,还得先关闭自我保护,然后再去文件关闭密码采能卸载。捆
2022-03-29 20:18:38
79300
24
原创 正则匹配字符中含小数点的数字(不同设备的版本信息)
用一个正则表达式,匹配出如下两类字符串中软件版本信息,huawei=“VRP ® software, Version 5.160 (NE20E V600R008C10SPC300)”maipu = “MP7300 version 8.1.0.30R(integrity), compiled on May 31 2016, 19:30:36”import redef find_version(original):
2022-03-17 20:12:46
748
原创 python代码优化基本方法记录
.使用生成器,可以节省大量内存。拼接字符串时候,不采用+。+内存会先创建一个新字符串,然后将两个旧字符串拼接,再复制到新字符串。采用format,%s,join;。.循环代码优化。减少循环次数,降低时间复杂度、避免过多重复代码的执行。将可直接判断的、循环次数少的,放在前面执行。多使用内置函数。如set,dict。查找元素的复杂度仅为1。.多进程,多线程,协程。.多个if else条件判断,可以把最有可能先发生的条件放到前面写,可以减少判断次数。多采用多重赋值。不使用临时变量。比如:temp.
2022-03-15 15:10:02
1230
原创 反转子串【牛客】
牛客题目CM8 翻转子串简单 通过率:40.37% 时间限制:3秒 空间限制:32M描述给定2个字符串s1和s2,请判断s2是否为s1旋转而成,返回bool值。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:“Hello world”,"worldhello "返回:false“waterbottle”,“erbottlewat”返回:true思路:字符串截取并拼接,如果s1截取并拼接等于s2则属于翻转子串,遍历完s1仍不等于。则不是class R
2022-02-12 21:18:11
337
原创 python,go,rust单线程下for循环性能比较
python,go,rust都是近些年来似乎比较火的语言。本文我们使用一个循环,并统计一下运行时间,来简要对比下其性能。硬件设备:同一台windows10操作系统笔记本。pythonimport timev,sum = 0,0for i in range(10): start_time = time.time() for j in range(10000000): v = j end_time = time.time() result = end_t
2022-01-10 19:23:05
3874
原创 用go写一个计算时间(摸鱼提醒信息)的小工具
几个函数分别实现相应的功能。judgeMorningOrAfternoon 获取现在时间,判断现在是在上午还是下午getDayDiffer 传入开始与结尾时间,计算相差时间flushTime获取当前时间。隔1秒刷新一次fishingReminder 传入春节时间。调用上述一些函数,打印相关信息package mainimport ( "fmt" "os" "strconv" "time")var time_now stringvar time_sat stringvar
2021-11-22 20:43:19
2347
原创 Django ORM的get与filter的区别对比
get和filter都是条件查询语句,类似于sql语句的where。查询xx字段为xx。查询条件不同在于get的查询符合条件的返回模型类的对象符合条件的对象只能为一个,如果符合筛选条件的对象超过了一个或者没有一个都会抛出错误。filter可以查询多个对象。例:模型如下表所示采用filter查询id大于0的对象,查询id=1的对象均可查到正常的数据采用get查询id大于0的对象则无法正常拿到数据(由于返回的对象不是一个),查询id大于1和id=1的则可以正常拿到数据。返回结果不同get返回
2021-11-09 15:33:03
936
原创 Golang指针说明
指针是用来直接操作内存的,因此。指针(pointer)在Go语言中可以被拆分为两个核心概念:类型指针,允许对这个指针类型的数据进行修改,传递数据可以直接使用指针,而无须拷贝数据,类型指针不能进行偏移和运算。切片,由指向起始元素的原始指针、元素数量和容量组成。受益于这样的约束和拆分,Go语言的指针类型变量即拥有指针高效访问的特点,又不会发生指针偏移,从而避免了非法修改关键性数据的问题。同时,垃圾回收也比较容易对不会发生偏移的指针进行检索和回收。切片比原始指针具备更强大的特性,而且更为安全。切片在发
2021-10-23 16:20:35
647
原创 使用Pymysql查询mysql的常见配置信息,将查询的信息放入字典中
如果没有安装pymysql则执行以下命令安装pymysqlpip install PyMySQL安装完成后,先传入参数(安装并启动的mysql主机,用户名,密码,数据库名)进行连接mysql。import pymysqldb = pymysql.connect(host="127.0.0.1", user="root", password="123456", databas
2021-10-19 21:03:59
457
原创 python传入参数中使用split函数,对入参处理的技巧
需求如下,传入参数确认有{“version”: “6.17”, “chart_set”: “utf-8”, “database_role”: “Single”},但不确定前后是否有其它值。然后需要对传入的参数进行处理,结果只能保留该字典。法一:使用split处理。log_content = "cat: -: Bad file descriptor _____{\"version\": \"6.17\", \"chart_set\": \"utf-8\", \"database_role\": \"Sin
2021-09-04 18:21:36
467
原创 运行celery导致redis打开后自动关闭
redis报错:== REDIS BUG REPORT START: Cut & paste starting from here ===Redis version: 5.0.10[16600] 01 Sep 17:38:23.721 # — EXCEPTION_ACCESS_VIOLATION[16600] 01 Sep 17:38:23.722 # — STACK TRACEredis-server.exe!StackTraceInfo(D:\dev\GitHub\redis\src\
2021-09-04 16:54:08
766
原创 celery基本使用与报错解决
Celery是Python开发的分布式任务调度模块。Celery 通过消息机制进行通信,通常使用中间人(Broker)作为客户端和职程(Worker)调节。启动一个任务,客户端向消息队列发送一条消息,然后中间人(Broker)将消息传递给一个职程(Worker),最后由职程(Worker)进行执行中间人(Broker)分配的任务。Celery 可以有多个职程(Worker)和中间人(Broker),用来提高Celery的高可用性以及横向扩展能力。更多简介可参考celery中文手册文档。这里我们重点
2021-07-03 16:24:51
1817
1
原创 Python向hdfs写入文件与hadoop命令向hdfs写入文件
首先需要安装pyhdfs,可用如下命令安装pip install pyhdfs首先我们如果先用hadoop原生命令来操作hdfs(分布式文件系统)上传文件。命令如下hadoop fs -put /home/hadoop1/software/data/two.txt /其中-put上传,本地路径/home/hadoop1/software/data/two.txt,上传在HDFS的路径是 /使用Python来操作hdfs写入文件的代码为from pyhdfs import HdfsClien
2021-06-02 20:43:12
5553
2
原创 django多对多关系表中批量修改另一个字段的数据(一个字段不变)
django内置的批量增加方法为bulk_create,批量更新方法为bulk_update。在一些多对多的模型中我们可以使用批量创建和修改进行快速创建。但是bulk_updated()的缺点在于有时候不好传参数。那么对于调用bulk_update不好传参的数据如何批量更新呢?我们可以拆解,将批量修改可以拆分为删除和批量创建两步。举个例子,我们现在有文章表和标签表是多对多模型。模型层如下所示class Article_Tag(models.Model): article = models.Fo
2021-05-09 18:24:53
1029
3
原创 使用pymysql查询数据使用where字段=““问题
使用pymysql的sql查询语句用到where时不注意可能会出现如下问题,比如pymysql.err.ProgrammingError: (1064, “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘limit 1’ at line 1”)告诉你语法有错误。或者pymysql.e
2021-04-17 23:05:03
1540
1
原创 Python字符串中的子串拼接字符串(给逗号为分隔的每个字符串拼接字符串)
在Python中如何给字符串中的子串拼接字符串呢?思路大致是先把子串切分出来,然后遍历每个子串再进行拼接。下面我们举例一个Python给以逗号为分隔的每个字符串拼接字符串例如给如下两个test_1 = “8080,443,80”test_2=“2021”字符串拼接TCP与_的字符串。def protocol_port(name: str,ports): """ :param name: 要加的内容 :param ports: 被加的内容 :return: 要加的内
2021-04-11 19:29:31
3053
原创 将centos下载软件放到桌面或创建软连接(快捷启动centos图形化界面软件)
使用centos系统图形化界面启动软件有多种方式,最直接的是在下载目录下,运行可执行文件启动。这种方式不仅需要记录下目录,还需要再在终端运行相关命令。 能不能像windows那样在桌面放个图标点击便捷启动呢?大多数软件是可以的。在路径**/usr/share/applications**下可以找到相应图标,然后点击拖放到桌面,如图所示我们将Vsocde拖放到桌面然后点击Trust and Launch(信任与启动),图标就显示出来了,可以通过鼠标启动了。。另一种快捷启动的方
2021-03-30 23:06:46
2671
1
原创 报错ERROR:No matching distribution found for rest_frame_swagger
ERROR:Could not find a version that satisfies the requirement rest_frame_swagger(from versions:none)ERROR:No matching distribution found for rest_frame_swagger从错误意思可以看到找不到rest_frame_swagger这个库的版本。所以就有可能是一种情况,调用库名和安装库名并不相同。而该库名安装名为django-rest-swagger。所以使
2021-03-10 23:01:37
1583
原创 panic: sql: unknown driver “mysql“ (forgotten import?)
连接mysql遇到panic: sql: unknown driver “mysql” (forgotten import?)错误,需要在调用mysql的main函数所在的文件夹下导入如下包执行init函数。_ "github.com/go-sql-driver/mysql"再来说一下为什么要在该包前加入下划线_,因为加入下划线表示只执行该库的 init 函数而不对其它导出对象进行真正地导入。因为 Go 语言的数据库驱动都会在 init 函数中注册自己,所以我们只需要加入下划线导入即可。...
2021-02-17 21:04:22
2328
原创 报错:invalid operation: done < 1 (mismatched types chan int and int)
invalid operation: done < 1 (mismatched types chan int and int)当注意力在括号里面的时候可能会疑惑这个错误,括号里面说 通道里的int和int类型不匹配,int跟uint等其他类型会不匹配怎么会跟int也不匹配呢?那么继续往前看非法操作done<1,是用了不符合语法格式的写法,改过来也很简单,仔细一点。通道发送和接收值都是用<-符号。因此把<改为**<-**即可。...
2021-02-07 23:20:26
3733
原创 使用selenium模块自动打开淘宝并进行搜索
Selenium是一个自动化测试工具,可以驱动浏览器器执行特定的动作,如点击,下拉等。可以用来进行模拟人工操作浏览器进行测试,爬虫等。如果没有安装环境可以先pip install Selenium,同时根据浏览器版本(在帮助或设置可以查看)在[http://chromedriver.storage.googleapis.com/index.html]中可以下载驱动例如下图,浏览器版本安装chromedriver_win32.zip即可。具体浏览器可以参考https://blog.csdn.net/hu
2021-01-29 23:24:54
1192
原创 cannot use &total (type *uint64) as type *int64 in argument to atomic.AddInt64
cannot use &total (type uint64) as type int64 in argument to atomic.AddInt64意思就是无法将total变量(类型为uint64)用作的参数中的类型int64原子AddInt64。改正过来也很简单。将atomic.AddInt64改为atomic.AddUint64。因为total定义时为uint64,而这里将它传给了atomic.AddInt64函数(是int64类型)作为参数,因此出错。下面说一下go语言中int64和u
2021-01-25 20:39:39
2987
1
原创 go切片(常见用法操作与原理)
Golang中切片(slice)非常重要。对比数组,数组是一个由固定长度的特定类型元素组成的序列。而切片是一种简化版的动态数组,由于长度不固定,因此灵活得多。切片的结构定义,即reflect.SliceHeader:type SliceHeader struct{ ptr unsafe.Pointer Len int Cap int}由3部分构成。第一个是指向底层字节数组;第二个是切片的长度(元素的个数);第三个表示切片指向的内存空间和最大容量(对应元素的个数,而不是字节
2021-01-22 23:27:25
1430
原创 和为K的子数组(前缀和 + HashMap解法)python,golang
力扣560. 和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。思路:我我们定义pre[i] 为 [0…i] 里所有数的和,则pre[i] 可以由 pre[i−1] 递推而来,即pre[i]=pre[i−1]+nums[i]那么「[j…i] 这个子数组和为 k,这个条件我们可以转化为pre[i]−pre[j−1]==k简
2021-01-22 00:06:51
463
1
websocket客户端
2024-06-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人