sub

WinForm 自绘控件实现选中,拖拽,平移,缩放效果

余生长醉 提交于 2020-01-11 17:01:29
参考文章: https://zhuanlan.zhihu.com/p/91880547 代码主体思想按照参考文章里的方法写的,不过参考文章是用Direct2D绘制的,我使用GDI+绘制的. 添加了层叠时选中最高层元素的代码 效果: 鼠标进入 鼠标选中 拖拽及按照层叠顺序绘制 平移 以鼠标位置为中心缩放 控件代码 1 Imports System.Drawing.Drawing2D 2 3 Public Class BOMAttributeList 4 Inherits Control 5 6 Private Shared SizeWidth = 100 7 Private Shared SizeHeight = 100 8 9 Public Property DataSource As List(Of String) 10 Get 11 Return (From item In DrawItems 12 Select item.Name).ToList 13 End Get 14 Set 15 DrawItems.Clear() 16 DrawItems.AddRange(From item In Value 17 Select New RenderingAttribute() With { 18 .Name = item, 19 .Locantion = New Point(

《On Java 8笔记》第十二章:集合

ぃ、小莉子 提交于 2020-01-10 22:22:53
第十二章:集合 泛型和类型安全的集合 基本概念 添加元素组 集合的打印 List 迭代器Iterators ListIterator 链表LinkedList 堆栈Stack 集合Set 映射Map 队列Queue 优先级队列PriorityQueue 集合与迭代器 for-in 和迭代器 适配器方法惯用法 本章小结 文章由On Java8网上翻译版本而来,具体翻译可查看:https://lingcoder.github.io/OnJava8/#/,个人结合Java编程思想第四版进行细小修改 如果一个程序只包含固定数量的对象且对象的生命周期都是已知的,那么这是一个非常简单的程序 通常,程序总是根据运行时才知道的某些条件去创建新的对象。在此之前,无法知道所需对象的数量甚至确切类型。为了解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。因此,不能依靠创建命名的引用来持有每一个对象: MyType aReference ; 因为你从来不会知道实际上会需要多少个这样的引用。 大多数编程语言都提供了某种方法来解决这个基本的问题。Java有多种方式保存对象(应该说是:对象的引用)。例如前面曾经学习过的数组,它是编译器支持的类型。数组是保存一组对象的最有效的方式,如果你想保存一组基本类型数据,也推荐使用这种方式。但是数组具有固定的尺寸,而且在更一般的情况下

Apache Rocketmq 权限控制(七)

萝らか妹 提交于 2020-01-10 14:02:53
权限控制 1.权限控制特性介绍 权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制。用户在使用RocketMQ权限控制时,可以在Client客户端通过 RPCHook注入AccessKey和SecretKey签名;同时,将对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在distribution/conf/plain_acl.yml的配置文件中。Broker端对AccessKey所拥有的权限进行校验,校验不过,抛出异常; ACL客户端可以参考: org.apache.rocketmq.example.simple 包下面的 AclClient 代码。 2. 权限控制的定义与属性值 2.1权限定义 对RocketMQ的Topic资源访问权限控制定义主要如下表所示,分为以下四种 权限 含义 DENY 拒绝 ANY PUB 或者 SUB 权限 PUB 发送权限 SUB 订阅权限 2.2 权限定义的关键属性 字段 取值 含义 globalWhiteRemoteAddresses *;192.168.*.*;192.168.0.1 全局IP白名单 accessKey 字符串 Access Key secretKey 字符串 Secret Key whiteRemoteAddress *;192.168.*.*

多项式A除以B

筅森魡賤 提交于 2020-01-08 09:26:21
这个问题我是在PAT大区赛题里遇见的。题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下: N e[1] c[1] ... e[N] c[N] 其中 N 是该多项式非零项的个数, e[i] 是第 i 个非零项的指数, c[i] 是第 i 个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。 输出格式: 分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为 0 0 0.0 。 但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项 -1/27 ,但因其舍入后为0.0,故不输出 。 输入样例: 4 4 1 2 -3 1 -1 0 -1 3 2 3 1 -2 0 1 输出样例: 3 2 0.3 1 0.2 0 -1.0 1 1 -3.1题目的意思很明确,就是要求 anxn+an-1xn-1+an-2xn-2+。。。+a1x1+a0x0 除以amxm+am-1xm-1+am-2xm-2+。

Django多条件筛选查询

耗尽温柔 提交于 2020-01-07 20:57:51
转自: https://www.jianshu.com/p/a86281df530e Django多条件筛选查询 主模型只存在外键一对多关系 模型设计 # 快捷筛选状态 class Status(models.Model): order_number = models.PositiveIntegerField(unique=True, verbose_name='状态编号') status_tag = models.CharField(max_length=10, verbose_name='状态名称') class Meta: ordering = ['order_number', ] verbose_name = '事件选择' verbose_name_plural = verbose_name def __str__(self): return self.status_tag # 项目分类 class Project(models.Model): project_name = models.CharField(max_length=10, verbose_name='项目名称') class Meta: ordering = ['project_name'] verbose_name = '项目分类' verbose_name_plural = verbose_name

python的一些高阶用法

ぐ巨炮叔叔 提交于 2020-01-07 07:04:51
map的用法 def fn(x): return x*2 L1 = [1,2,3,4,5,6] L2 = list(map(fn,L1)) L2 [2, 4, 6, 8, 10, 12] 通过上面的运行,可以知道map就是把一个数组内所有的元素都执行map加入的方法。 用法如下 map(方法,数组) reduce的用法 先看例子 from functools import reduce def add(x,y): return x + y L1 = [1,2,3,4,5,6] L2 = reduce(add,L1) L2 21 通过上面的例子,直观的来看,我们可以发现reduce和map方法有一些不一样。 map是python自带的函数,而reduce需要引入functools map 返回的是一个map对象,而reduce是返回的一个数字 map函数需要一个参数,而reduce的参数需要两个。 map是对一个集合中的每个元素执行指定的方法。而reduce则是依次对集合的元素调用指定的方法。先把前两个参数执行reduce以后形成的返回之作为第一个参数,再和第三个参数形成返回值,依次执行。 filter函数 filter则是对集合的每个元素执行一次判断,能让filter指定的函数返回真值则返回,否则则不出现在返回集合中。 def fn(x): return x%2 ==0 L1 =

Python爬虫实战(三):爬网易新闻

こ雲淡風輕ζ 提交于 2020-01-05 23:26:33
代码: # _*_ coding:utf-8 _*_ import urllib2 import re #import sys #reload(sys) #sys.setdefaultencoding('utf-8') class Tool: removeImg = re.compile(r'<p class="f_center".*?</p>') removeAddr = re.compile(r'<a.*?>|</a>') replaceLine = re.compile(r'<tr>|<div>|</div>|</p>') replaceTD = re.compile(r'<td>') replacePara = re.compile(r'<p.*?>') replaceBR = re.compile(r'<br<br>|<br>') removeExtraTag = re.compile(r'<.*?>') def replace(self,text): text = re.sub(self.removeImg,"",text) text = re.sub(self.removeAddr,"",text) text = re.sub(self.replaceLine,"\n",text) text = re.sub(self.replaceTD,"\t",text)

tf之 MessageFilter 与 tf::MessageFilter理解与应用

回眸只為那壹抹淺笑 提交于 2020-01-03 03:58:02
Table of Contents 1 MessageFilter 1.1 主要用法之——消息的订阅与回调 1.2 主要用法之——时间同步 1.3 主要用法之——时间顺序的回调 2 tf::MessageFilter 2.1 示例AMCL 2.2 wiki教程 3 tf2_ros::MessageFilter 3.1 wiki教程 4 tf2_ros之使用tf进行坐标变换 Public Member Functions references 1 MessageFilter http://wiki.ros.org/message_filters 消息过滤器message_filters类似一个消息缓存,当消息到达消息过滤器的时候,可能并不会立即输出,而是在稍后的时间点里满足一定条件下输出。 举个例子,比如时间同步器,它接收来自多个源的不同类型的消息,并且仅当它们在具有相同时间戳的每个源上接收到消息时才输出它们,也就是起到了一个消息同步输出的效果。 1.1 主要用法之——消息的订阅与回调 message_filters::Subscriber<std_msgs::UInt32> sub(nh, "my_topic", 1); sub.registerCallback(myCallback); is the equivalent of: ros::Subscriber sub = nh

python小项目——实现简易的计算器

半城伤御伤魂 提交于 2020-01-02 19:58:45
开发一个简单的python计算器 1、实现加减乘除及拓号优先级解析 2、用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 1 #!usr/bin/evn python 2 #coding:cp936 3 #Author:Siwen 4 5 6 print ("Hello world!") 7 8 9 import re 10 11 def handle_special_occactions(plus_minus,multiply_and_dividend): 12 #有时会出现这种情况 , ['-', '-'] ['1 ', ' 2 * ', '14969036.7968254'],2*...后面这段实际是 2*-14969036.7968254,需要特别处理下,太恶心了''' 13 for index,i in enumerate(multiply_and_dividend): 14 i = i.strip() 15 if i.endswith("*") or i.endswith("/

CBS,国产手机出海你必须知道的

时间秒杀一切 提交于 2020-01-01 13:55:57
随着国内智能手机市场的饱和,越来越多的国产品牌,移动互联网手机厂商选择出海淘金,触角已经遍布到港澳台、印度、东南亚、南美、俄罗斯、西班牙各地,相信明后两年西欧和北美两大市场也会被攻陷。而作为海外国家法规必须支持的Cell Broadcast Service(CBS)功能,以及衍生的PWS系统,如北美CMAS、日本印尼等海啸地震频发地区的ETWS,由于国内三大运营商都不支持,厂商毫无经验地出海常常出现以下三大类问题: 1. 设置中无相关UI,导致用户无法开启或关闭有关频道的小区广播。 就在某移动互联网厂商的客户论坛里,Haykey哥亲眼看见有用户漫游到日本,发现亲友的手机会自动播报ETWS消息,而本司手机始终未收到,也无法开启,发的质问帖子; 2. 开启监听的频道不对 ,造成会漏掉一些国家区域强制的小区广播,或者会在一些国家监听不需要的小区广播,造成频繁弹框,影响用户体验,尤其是当用户漫游在俄罗斯、西班牙等非英语国家,当隔三差五就收到一堆乱码文字框,真会不知所然,以为手机中毒了。在下期的真实案例分析里,Haykey哥会带来国内某互联网手机全球化过程中,在俄罗斯遇到的CBS频繁弹框事件; 3. 开启监听的频道正确,但反馈没有接收到CBS小区广播消息; 由于篇幅长度有限,我将分三期阐述。第一期偏重于理论,只讲GSM和UMTS下的CBS和Common的东西