Other

【工程应用六】 继续聊一聊高效率的模板匹配算法(分水岭助威+蒙版提速)。

总是写很长的复杂的文章,目前发现真的有点无法静心去弄了,感觉写代码的动力要比写文章强大的多,所以,往后的文章还是写的剪短一点吧。  继续聊一聊模板匹配。 最近这方面也出了一些新的资料,说明还是有人关注他的。  我最近一个月的研究成果主要有以下几个方面。  一、顶层金字塔的候选点选择改由分水岭相关算法实现(用时10天)。  顶层的金字塔,我们是全图计算相关得分值的。当计算完所有的顶层金字塔得分后,我们得到了不同角度不同位置的一个全方位的候选点信息,接下来我们的目标就是从这些点中选择合适的候选点。  这里有几个指标可以作为初步筛选的依据:  1、最小的得分值。  2、重叠的区域。  在【工程应用一】 多目标多角度的快速模板匹配算法(基于NCC,效果无限接近Halcon中........) 一文中,我曾分享过如下的代码: Point getNextMinLoc(Mat &result, Point minLoc, int maxValue, int templatW, int templatH) { int startX = minLoc.x - templatW / 3; int startY = minLoc.y - templatH / 3; int endX = minLoc.x + templatW / 3; int endY = minLoc.y + templatH / 3; if (startX < 0 || startY < 0) { startX = 0; startY = 0; } if (endX > result.

PTA编程题(python):计算 11+12+13+...+m

https://www.icourse163.org/learn/ZJU-1206456840 https://pintia.cn/problem-sets/1497398176843997184/problems/1497398251064791043 Python程序设计第二章(MOOC) 20 天 7-1 计算 11+12+13+...+m 分数 30 作者 陈春晖 单位 浙江大学 题目描述 输入一个正整数m(20<=m<=100),计算 11+12+13+...+m 的值。 输入格式: 在一行输入一个正整数m。 输出格式: 在一行中按照格式“sum = S”输出对应的和S. 输入样例: 在这里给出一组输入。例如: 90 输出样例: 在这里给出相应的输出。例如: sum = 4040 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 提交代码 m = int(input()) sum = 0 for i in range(11,m+1): sum += i print(sum =,sum) 执行结果

MYSQL 主从备份相关(别人的经验之谈)

一、binlog 的三种格式对比【statement】  由于 statement 格式下,记录到 binlog 里的是语句原文,因此可能会出现这样一种情况:插入的自增主键 id,在数据不同步时使用相同语句,会导致插入的数据不一致。因此,MySQL 认为这样写是有风险的。 【row】  当 binlog_format 使用 row 格式的时候,binlog 里面记录了真实删除行的主键 id,这样 binlog 传到备库去的时候,就肯定会删除 id=4 的行,不会有主备删除不同行的问题。 【mixed】  因为有些 statement 格式的 binlog 可能会导致主备不一致,所以要使用 row 格式。  但 row 格式的缺点是,很占空间。比如用 delete 语句删掉 10 万行数据,用 statement 的话就是一个 SQL 语句被记录到 binlog 中,占用几十个字节的空间。但如果用 row 格式的 binlog,就要把这 10 万条记录都写到 binlog 中。这样做,不仅会占用更大的空间,同时写 binlog 也要耗费 IO 资源,影响执行速度。  所以,MySQL 就取了个折中方案,也就是有了 mixed 格式的 binlog。mixed 格式的意思是,MySQL 自己会判断这条 SQL 语句是否可能引起主备不一致,如果有可能,就用 row 格式,否则就用 statement 格式。

python使用flask进行SQL中转注入报错

浏览器访问:http://192.168.43.180:18888/?payload=test 报错500 终端报错 [Previous line repeated 474 more times] RecursionError: maximum recursion depth exceeded 解决办法: from gevent import monkey monkey.patch_all(ssl=False)

mysql从节点自动故障转移(mysql8.0)

【1】概念 (1.1)本文说的自动故障转移到底是什么? 从MySQL 8.0.23开始,复制结构中,增加了从节点自动故障转移功能。 这个自动故障转移的概念得说清楚不然有歧义; 假设有 ABC,A为主,B/C 为从节点,那么当A出问题后,新主库变成了B,那么C会自动把主库变成B,这就是我们本文中的自动故障转移;  (1.2)测试  从MySQL 8.0.23开始,复制结构中,增加了从节点自动故障转移功能。测试一下起功能:  用dbdeployer快速安装测试环境,我这边安装的是:dbdeployer1.8.5  -- 安装脚本 dbdeployer deploy replication 8.0.25 --bind-address=0.0.0.0 --base-port=18610 --sandbox-home=/data1/db/mydb --sandbox-binary=/usr/local --native-auth-plugin --db-password=cc.123 --db-user=sa --remote-access=% --post-grants-sql=grant all on *.* to 'sa'@'%' WITH GRANT OPTION --gtid --nodes=4 ; --删除脚本 dbdeployer delete rsandbox_8_0_25 --sandbox-home=/data1/db/mydb --sandbox-binary=/usr/local;  安装1主3从库,基于gtid的主从库。  主库:端口18611;3个从库: 18612,18613,18614  stop slave,配置自动转移:SOURCE_CONNECTION_AUTO_FAILOVER=1 change master to SOURCE_HOST='127.0.0.1', SOURCE_USER='sa', SOURCE_PASSWORD='cc.123', SOURCE_PORT=18611, SOURCE_AUTO_POSITION=1, SOURCE_CONNECTION_AUTO_FAILOVER = 1  再start slave,查看主从同步正常后:

【python学习】python使用的一些小技巧

这篇博客记录一下在实际使用中python语法的一些小细节,因为比较零碎所以就放在一篇博客中来记录 name __name__是系统定义的一个变量,用于标识一个模块的名字,分以下两种情况: 当前模块是主模块(调用其他模块的模块),模块的名字的就是__main__ 当前模块是被import的,则此模块名字是文件名字 python根据__name__变量就可以分清哪一个是主函数 下面用一个例子来说明,在tests.py中import main.py: import main if __name__ == __main__: print(__name__) print(main.__name__) 然后运行结果如下,可以发现和刚刚说明的情况一致:

Centos7修改yum源和安装基本库

CentOS修改yum源地址 修改镜像源 使用的镜像源为清华大学开源软件镜像站,修改镜像源参考链接为:https://mirror.tuna.tsinghua.edu.cn/help/centos/ 1.1 备份并修改原有文件 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 然后编辑 /etc/yum.repos.d/CentOS-Base.repo 文件,在 mirrorlist= 开头行前面加 # 注释掉;并将 baseurl= 开头行取消注释(如果被注释的话),把该行内的域名(例如mirror.centos.org)替换为 mirrors.tuna.tsinghua.edu.cn。 1.2 备份并替换原有文件 备份代码为: cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 替换后的文件内容如下所示,需要注意的是最好把换行符\r\n修改为\n: # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors.

某个java项目占用99%的cup资源排查

第一步:ps aux | sort -k3nr | head -5 查询前五cpu占比的进程   这里发现3032这个进程占比高达98.8% 第二步:top -Hp 3032(进程id)查看进程3032中线程资源占用情况    可以看到27737这个线程占用99.9%,将线程10进制转化为16进制 printf %x\n 27737(线程id)  第三步:将进程内容输出到txt文件中jstack -l 3032 > jstackt.txt打开txt搜索6c59  此时定位到问题出现在 com.sthjnet.gps.task.Task的46行,然后进行问题排查

C++ do{ } while(0)

整理浏览器标签 看到之前收藏的一个 do{ } while(0) 使用的好处,今天再看感觉这样用依然很妙。 使用 do{ } while(0) 主要目的其实是为了利用循环里面可以break ,很优雅的实现跳过一些代码的执行 示例: do{ 语句1; 语句2; if(条件){ 语句3; break; } 语句4; 语句5; }while(0) 语句6;if里面就可以通过break退出循环,从而实现跳过语句4和语句5的执行。

使用RoslynSyntaxTool工具互相转换C#代码与语法树代码

​ 项目地址 MatoApps/RoslynSyntaxTool: 此工具能将C#代码,转换成使用语法工厂构造器(SyntaxFactory)生成等效语法树代码 (github.com) 基础概念 Syntax Api: Roslyn 是微软开源的 .NET 编译平台。编译平台支持 C# 和 Visual Basic 代码编译,并提供丰富的语法分析 API。 语法树(SyntaxTree)是一种由编译器 API 公开的基础数据结构。这些树描述了C#源代码的词法和语法结构。 利用语法分析 API可以将一段C#代码翻译成等效的语法树代码。 关于语法分析请查看官方文档 语法分析 (Roslyn API) 入门 | Microsoft Docs 可以通过Roslyn 入门系列文章 学习Roslyn相关知识 应用场景 需要动态编译的,如在开发微服务中动态生成代理类,项目的插件化改造等 需要动态生成C#代码脚本的,如项目模板生成器,C#脚本生成工具等 需要分析C#使用场景,如代码安全性审查等 ... 介绍 RoslynSyntaxTool利用语法分析 API,提供以下功能: 将指定的C#代码转为等效的语法树代码 将语法树代码还原为C#代码 图形化查看语法树结构 查看语法树节点属性详情 这是独立开发者的一个开源项目, 希望得到您的意见反馈,请将Bugs汇报至我的邮箱  ​编辑​编辑​编辑 感谢 KirillOsenkov的RoslynOuter项目,链接: https://github.com/KirillOsenkov/RoslynQuoter 语法树代码生成器代码借鉴自此项目 更新内容: DateVersionContent V1.0 2021-3-16 初始版本 V2.