- 博客(83)
- 收藏
- 关注

原创 内网服务器通过另一台能访问公网的服务器实现访问公网, iptables NAT
一、服务器A,能访问外网网卡eth0, 配置内网IPTYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noNAME="eth0"DEVICE="eth0"ONBOOT="yes"IPADDR=172.16.10.52 # 作为内网的网关NET...
2020-03-05 17:06:00
8678
1

原创 服务器使用国密(SM2/SM3/SM4)证书,通过浏览器访问
1. Apache + GmsslApache 本身不支持国密,需要修改代码支持GMTLS下载解压:wget http://archive.apache.org/dist/httpd/httpd-2.4.39.tar.gztar -zxf httpd-2.4.39.tar.gz修改文件:Apache dir\modules\ssl\ssl_engine_init.cSSL_C...
2019-11-28 15:50:30
11673
5

原创 Python中执行MySQL语句, 遇到同时有单引号, 双引号处理方式 !r, repr()
SQL语句:insert_cmd = "INSERT INTO {0} SET {1}".format(db_conn.firmware_info_table, ','.join(['{0}={1!r}'.format(k, str(v)) for (k, v) in info_dict.items()])){0}={1!r} 中, 设置字段的值,一般情况应该是:columnA='{}...
2018-09-09 16:03:42
3094
原创 解压、修改rpm包的内容,再重新打包成rpm
以内核开发包kernel-devel-4.19.91-007.ali4000.alios7.x86_64.rpm为例。
2024-06-25 14:57:57
928
2
原创 systemd在程序被kill -9时的动作
执行 kill -9 abc,然后立即再执行ps -ef | grep abc,发现此时多了一个父进程为1的进程,正在执行abc service中定义的ExecStop命令,而这个命令正是资源回收动作的执行者。推测这是systemd的杰作,所以在redhat6上用service管理的系统上验证,果然在 kill-9之后没有ExecStop命令执行。今天在测试程序的时候发现,使用kill -9杀死程序之后,程序的资源回收动作依旧被执行了。而且我们的service并没有特殊的配置。
2024-06-23 11:37:05
261
原创 Linux收集内存快照来使用crash分析的方法
kernel-debuginfo-3.10.0-1160.el7.x86_64.rpm和kernel-debuginfo-common-x86_64-3.10.0-1160.el7.x86_64.rpm。对虚拟机打快照,然后在vsphere对应的存储页面能找到server_name.vmem和server_name.vmsn这两个文件,可以直接下载,注意文件会比较大。除了个别情况下进程本身存在问题,自己就会crash,然后生成core之外,还可以使用gcore主动生成的进程文件。
2024-03-08 18:22:17
590
原创 Linux驱动适配内核时,对于不同版本内核中有变化函数的适配方式
Linux的驱动适配,我们都需要在对应适配的内核中去编译一次,基于这个原理,我们可以在编译时,通过测试脚本,来确定使用的函数在当前内核中是否存在,以及是怎么样的形式。
2024-03-08 18:05:51
1531
原创 tar压缩分包,解决git上传对文件的大小限制
将abc.tar.gz分成不大于20M的多个包,再提交到github.比如压缩包abc.tar.gz大于github要求的30M,
2024-02-28 16:55:24
722
原创 解决git pull时error: cannot lock ref 问题
git上pull代码时,经常遇到:error: cannot lock ref ‘refs/remotes/origin/abc/efg’: ‘refs/remotes/origin/abc/efg/1.2.3/support_ubuntu12’ exists;cannot create ‘refs/remotes/origin/abc/efg’执行命令:git update-ref -d refs/remotes/origin/abc/efg/1.2.3/support_ubuntu12。
2024-02-26 09:40:32
1679
原创 使用memove拷贝字符串重叠的部分
比如将字符串char* left = abc/def/ghi,从索引为4的位置开始拷贝,拷贝到left中,拷贝长度为9(即使更长),能够正常完成。本来考虑会出问题的点是:拷贝源也是在本来的字符串left上,加上拷贝的长度,可能会访问到超出left长度(12)的部分。使用memmove将字符串的后面的部分向前拷贝,即使整体长度超过原字符串的长度,也不会出现未定义行为。
2023-12-29 14:58:35
588
1
原创 VMware克隆Linux主机后,新主机ifconfig中的主机名和网卡配置中的不一致,ping报错:network connect unreachable
将网卡配置中和网卡缓存配置中的网卡名和mac地址都修改为与ifconfig中的一致,然后使用命令。,此文件名在不同的CentOS系统中数字可能不一致,比如可能为。目录下的网卡配置文件名为ifcfg-eno16777984,且ifcfg-eno16777984中的网卡名。为00:50:56:AC:C5:11。ifconfig命令显示网卡名为。
2022-10-26 17:43:05
1480
原创 手机丢失之后必须做的事情
当发现手机丢失后:借路人手机给自己的手机打电话,如果已经关机,那么应该是被偷了或者拾到的人不想归还;拨打运营商电话,挂失自己的手机号;如果有备用手机,那么在备用手机登录自己的微信和支付宝;如果没有,则立即拨打电话挂失,支付宝:95188;微信:https://110.qq.com/;iPhone设置手机为丢失模式,设置方法:登录https://www.icloud.com/find,注意只是用查找是不要两步验证的(即不需要手机收验证码),并记录手机最后的定位;拨打110报警,在派出所做笔录,并妥
2022-03-03 14:08:42
709
原创 MySQL连表查询并统计
表A UserIdABC表B DeviceIdUserIdaaAbbAccB目的:查询每个用户拥有的设备数量sql = SELECT L.Id, R.Id AS DeviceId COUNT(R.Id) AS DeviceNumber FROM device_user AS L LEFT JOIN device_device AS R ON L.Id = R.UserId WHERE 1 = 1 GROUP BY Id
2021-11-03 17:22:34
4871
原创 Centos yum源问题完全指南
一、repomd.xml文件问题.repo配置文件中的baseurl指定了在yum install时寻找包及其依赖的地址;时常我们在指定yum install 时会报错找不到repomd.xml文件:Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried这个错误的根本原因是baseurl指定的地址下找不到repomd.xml文件,通过vim查看/etc/yum.repos.d/
2021-09-18 23:01:11
8369
1
原创 apache2/httpd,静态/动态转发问题。
希望实现访问https://127.0.0.1:8443, 能够默认找到/var/www/static_web下的index.htm页面,同时https://127.0.0.1:8443/api/v1/account/能够直接转发到/api/v1/account/如果是以下配置:Listen 8443<VirtualHost *:8443>WSGIDaemonProcess admin processes=2 threads=15 display-name=admin python-
2021-09-18 10:34:58
565
原创 后台进程实现定时任务的原理
timer类,后台运行定义一个方法loop,一个列表timer_task,其中存储定时任务类,包含任务命令,上次执行时间,执行时间间隔等属性;loop一直遍历timer_task,判断现在距上次执行时间是否大于执行时间间隔;特别对于每天定时执行的任务,时间间隔应该计算为 每天定时执行的时刻 距 当天0点 的时间间隔;...
2021-09-15 10:34:12
462
原创 OperationalError: (1054, “Unknown column ‘*_id‘ in ‘on clause‘“), 使用db_colnum指定外键字段名
db_constraint=False 参数在Django使用外键,可以不实际在数据中产生约束。例如:class Group(models.Model): id = models.CharField(max_length=50, null=False, primary_key=True)class Device(models.Model): GroupId = models.ForeignKey(to='Group', on_delete=models.CASCADE, db_constrain
2021-09-10 19:13:03
1192
1
原创 Django count和group by顺序问题,解决被自动加入group by主键的问题
django中的数据库查询Model.objects.values('OSPlatform', 'GroupId').annotate( DeviceStatus=F('Status')).annotate(DeviceCount=Count('*'))如果values放在annotate前面,实际上的SQL会按照’OSPlatform’, 'GroupId’这两个字段group by;如果valus放在annotate后面,实际上的SQL只会有默认的grou
2021-09-08 11:04:46
459
原创 Ubuntu(debian) 程序 dep 打包
Ubuntu(debain)上的dep和Centos的rpm打包方式有相同之处,都是shell定义安装,安装之后,卸载之前,卸载之后的操作都需要定义软件包的包名,版本,维护者等等信息但定义的方式略有不同,rpm包有一个spec文件,通过%build, %install, %post等等来定义对应执行操作dep包需要定义一个DEBAIN文件夹,下面必须有文件control来定义包的信息,通过可执行文件(需设置shebang #!/bin/sh): postinst, prerm, postrm
2021-08-31 11:31:25
1357
原创 在kylin v10上编译安装gcc
编译安装需要的GCC版本,原装GCC5.4,安装GCC4.8.5List item下载gcc4.8.5, 进入目录wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gztar -zxf gcc-4.8.5.tar.gzcd gcc-4.8.5/下载依赖./contrib/download_prerequisites配置安装选项./configure --prefix=/usr/local/gcc --disab
2021-08-29 19:07:12
4881
2
原创 Django数据库update的错误操作
一User.objects.filter(Id=id_).first()user.Email = emailuser.UpdateTime = datetime.datetime.now()user.save()二user = User.objects.filter(Id=id_).first()user.update(Email=email, UpdateTime=datetime.datetime.now())注意这种更新方式并不能成功,需要直接在User后面加...
2021-08-25 11:28:15
970
1
原创 虚拟机硬盘扩容(非LVM)
扩容/根目录,/dev/xvda1通过虚拟机配置增加硬盘大小,如果在aws上,直接增加卷大小。lsblk 查看硬盘大小从50G添加到了1000Gfdisk /dev/xvda进入分区管理,输入选线p 打印出分区表输入选项d 删除原来分区,然后输入选项n再新建分区,起始位置为原来的其实位置2048,结束位置为扩容之后最大的位置,图中为直接选择默认再输入选线p查看分区,并输入w保存通过partprobe /dev/xvda 刷新分区,再查看,/dev/xvda1..
2021-08-20 11:19:05
291
原创 Docker搭建Jenkins环境实践
一、准备Docker1. 安装一键脚本curl -sSL https://get.daocloud.io/docker | sh2. 配置代理service docker start启动docker服务service docker status 查看docker状态,找到其中显示的docker服务配置文件,编辑该文件,在[service]选项下面增加:Environment="HTTP_PROXY=http://ip:8080"Environment="HTTPS_PROXY=http://
2021-08-20 10:49:13
253
原创 django.db.utils.ProgrammingError:(1146, “Table * doesn‘t exist“) 原因及其解决办法
原因一:app中migrations文件夹下每次更改产生的记录文件中,有对某张表的删除,或者字段删除操作,但是这些修改是在别人的环境中产生,而在自己的环境是第一次运行,就会在python manage.py migrate的时候先去运行删除操作,这时候就会报错django.db.utils.ProgrammingError: (1146, "Table '表' doesn't exist")原因二:在urls.py文件中有先调用该表。...
2021-08-18 16:37:10
1617
原创 Windows调用远程Windows server中的程序(installshield)进行installshield打包
build机器:client有installshield的机器: serverclient发送net use 命令到server,server 运行net use 将client的C盘(build 运行目录)映射为自己的m盘,client 运行build脚本,在脚本中需要用到installshield的时候,发送包含client运行目录(被映射到了M盘)的命令,此命令中的C:需要被替换为m:,server收到命令,并运行。实际的效果是,server调用自己机器上的installshield,对
2021-08-12 16:15:58
184
原创 M1芯片Mac,Terminal和Pycharm启动virtualenv的Python2.7环境失败
在Terminal中virtualenv -p=python2.7 envname 创建python2.7的env环境,source activate 启动virtualenv环境之后,输入python启动Python,报错:[1] 28264 killed python2.7在Pycharm中Add Python Interpreter, 选择Base interpreter: /usr/bin/python2.7, 报错:ERROR: The executable Venv/manager/bi
2021-07-29 01:25:47
646
原创 JS遍历Array, 元素为邮箱时的bug
arr = ["123@123.com"]for(let i in arr){ console.log(i); console.log(arr[i]);}此代码在浏览器的console中测试:输出为:0123@123.comS多了一个key: S, 和一个value: 打印不出来的字符串。修改为foreach, 使用正常...
2021-07-28 19:28:15
124
原创 Linux访问Windows的共享目录,pysmb(参数remote_name定义)
方案一net start 此命令只在Windows下面可用方案二sudo mount -t cifs -o username=administrator,password=password //remote_share_server_ip/share_dir ./data这条命令必须使用root权限,对于不能使用root权限的应用无法实现。没有sudo会报错:mount: only root can use "--options" option方案三Python包pysmbdef check
2021-07-26 23:26:15
3209
原创 Chrome提示网页证书不安全,但没有高级、忽略选项的解决办法
解决办法:刷新页面,然后在键盘依次打 thisunsafechrome会直接进入需要访问的页面。
2021-07-15 17:17:44
5539
原创 jQuery UI Tabs 的 select升级改动
原来代码$("#tabs").tabs({ select: function(event, ui) { $("#opertype").val(ui.index); //0: Manual 1: Scheduled 2.Source $("#messageBox").hide(); if(ui.index===0){ saveBtn.buttonBuild({name:"button_name"}); cancelBtn.show(); }el
2021-06-24 11:33:54
308
原创 Python3在doc string中设置参数和返回值的类型,Pycharm
def foo(param): """ Get update module info in AsmsConfig.ini. :type param: rest_framework.status :rtype: list of UpdateItemInfo """ result = [] info = UpdateItemInfo() result.append() return 在pycharm中能够显示foo()方法的返回值为list[UpdateItemIn
2021-06-21 19:39:20
400
原创 解决jQuery $(“#“).attr(“checked“)值为undefined的问题
jQuery版本升级, 大于1.6.1之后,$("#element").attr("checked", true) 能够设置#element的attr有checked,但是设置$("#element").attr("checked", false),再调用$("#element").attr("checked") 的返回值为undifined根据官方文档:jQuery 1.6.1 ReleasedAttribute/Property.attr().prop()accesskey✓
2021-06-04 10:48:54
896
转载 makefile中的@+-符号
【make中命令行前面加上减号】-means ignore the exit status of the command that is executed (normally, a non-zero exit status would stop that part of htat build) 通常情况下,Makefile在执行到某一条命令时,如果返回值不正常,就会退出当前make进程,通常结合 rm mkdir命令使用,(空文件或者文件不存在都会返回错误)就是,忽略当前此行命令执行时候所遇到的错误。
2021-06-01 18:05:01
1370
原创 Python2中while循环条件改变,能够立刻被监测
"""Only can run in unix, because of module python-daemon==2.3.0"""import osimport signalimport sysimport timeimport daemondef get_asms_engine_pid(): if os.path.exists('/root/test_while_dir/test_pid'): with open('/root/test_while_dir/t
2021-05-25 17:30:21
283
原创 Ubuntu编译安装python3.7.10,解决‘_ctypes‘和ssl问题, 建立软链接python3.7和pip3.7
问题1:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available解决:sudo apt install libssl-dev问题2:ModuleNotFoundError: No module named '_ctypes'解决sudo apt-get install libffi-dev安装步骤:./configure --pr
2021-05-19 14:44:16
1978
原创 解决错误Uncaught TypeError: $(...).zIndex is not a function
function.zIndex($(input).zIndex()+1);替换成function.css( "zIndex", $(input).css( "zIndex")+1 );$(event.target).zIndex() 替换成 $(event.target).css("zIndex")
2021-05-11 17:57:01
674
原创 Python中if if else和 if elif else区别
if if else:执行完第一个if还会去判断下一个if是否满足,不满足则会执行else,即当i==’)’, stack pop弹出之后,还会去执行stack.append()stack = []for i in s: if len(stack)==0: stack.append(i) continue if i==')' and stack[-1]=='(': stack.pop() if i=='}' and stack[-1
2021-04-21 13:58:45
2096
1
原创 Django Rest_Framework 添加分页模块
settings.py 文件中的REST_FRAMEWORK = {}配置中,增加'DEFAULT_PAGINATION_CLASS': 'util.custom_pagination.CustomPagination','PAGE_SIZE': 20,View中return 的data只包含数据列表[data], 会自动添加上分页信息,变成:{ "count": 12, "next": "request url", "previous": null, "re
2021-03-25 18:36:48
81
原创 subprocess.Popen获取子程序输出
new_child = subprocess.Popen([self.manage, worker], stderr=subprocess.PIPE)for line in iter(new_child.stderr.readline, ''): logger.debug(line)
2021-03-01 18:39:35
1437
原创 只在git中删除,不删除本地文件
git 不小心提交不需要的文件夹,不删除本地文件,只在git中删除#--cached不会把本地的文件删除git rm -r --cached .vscode git commit -m 'delete .vscode'git push
2021-02-23 16:23:22
1747
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人