target

断言assert用法

感情迁移 提交于 2020-03-21 10:27:38
本文转自:http://blog.jobbole.com/76285/ 这个问题是如何在一些场景下使用断言表达式,通常会有人误用它,所以我决定写一篇文章来说明何时使用断言,什么时候不用。 为那些还不清楚它的人,Python的assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。例如: 1 2 3 4 5 6 py> x = 23 py> assert x > 0 , "x is not zero or negative" py> assert x% 2 == 0 , "x is not an even number" Traceback (most recent call last): File "" , line 1 , in AssertionError: x is not an even number 很多人用assert作为一个很快和容易的方法来在参数错误的时候抛出异常。但这样做是错的,非常错误,有两个原因。首先AssertError不是在测试参数时应该抛出的错误。你不应该像这样写代码: 1 2 if not isinstance(x, int ): raise AssertionError( "not an int" ) 你应该抛出TypeError的错误,assert会抛出错误的异常。 但是,更危险的是

用事件队列解决QT GUI的操作顺序问题

我怕爱的太早我们不能终老 提交于 2020-03-21 09:28:50
原文: https://www.cnblogs.com/Philip-Tell-Truth/p/6295186.html GUI操作顺序问题引发异常 有时候我们使用写GUI程序的时候会遇到这样的问题:比如在程序中,建立了一个列表的GUI。这个列表是随着时间不断更新的,而且操作也会读取这个列表GUI的内容。 如果这个程序是多线程的程序,而且只是除了GUI的线程不操作,只是其他线程操作这个列表GUI,那么这个问题很简单,只用加互斥锁就可以了。但如果GUI线程自己本身也要操作这个列表,那么这个问题就很麻烦了。 我们可以很容易地想到一种场景,比如GUI线程读了列表的一些表项(比如选定),此时线程中的某个方法keep了这些表项的指针,然而此时很不幸别的线程有一个请求需要删除列表中的一些表项,并且这些表项有一些包含在了我们的选定内容里,我们知道几乎所有的语言操作GUI时都要进入GUI线程里面操作,那么我们刚才选定表项的那个方法会被打断,然后进入删除表项方法,在删除了表项以后再次回到选定表项方法时,我们的选定的表项有一些已经被删除了,此时我们再进行操作很有可能不符合我们的要求。 如果你是用一般是用C#,JAVA这种不用自己管理内存的语言,那还好,只是结果可能不对,但是如果是用C++这种需要我们自己管理内存的来写,很有可能我们会操作一个被释放了内存的对象,然后程序崩掉,这样的情况是我们不想看到的。

D3.js 力导向图(气泡+线条+箭头+文字)

瘦欲@ 提交于 2020-03-21 06:02:33
<!DOCTYPE html> <meta charset="utf-8"> <style> .link { fill: none; stroke: #666; stroke-width: 1.5px; } #licensing { fill: green; } .link.licensing { stroke: green; } .link.resolved { stroke-dasharray: 0,2 1; } circle { fill: #ccc; stroke: #333; stroke-width: 1.5px; } text { font: 12px Microsoft YaHei; pointer-events: none; text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff; } .linetext { font-size: 12px Microsoft YaHei; } </style> <body> <script src="http://d3js.org/d3.v3.min.js"></script> <script> // http://blog.thomsonreuters.com/index.php/mobile-patent-suits-graphic-of

echarts3 中 热力图的属性大全

橙三吉。 提交于 2020-03-21 06:00:07
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=8"> <!-- 使用IE8以上的渲染 --> <!-- <meta name="renderer" content="webkit|ie-comp|ie-stand"> --> <!-- 三个参数分别代表极速、兼容、标准模式,适用于360浏览器 --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>监控管理系统</title> <script type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/include/jquery.min.js"> </script> <script type="text/javascript" src="${pageContext

动态代理(JDK实现)

橙三吉。 提交于 2020-03-21 01:42:30
JDK 动态代理,针对 目标对象 的 接口 进行代理 ,动态生成 接口的实现类 !(必须有接口) public class ProxyDemo { //通过方法的返回值得到代理对象 方法参数是要增强的对象 public Object getProxyObject(final Object target) { Object proxyObj = Proxy.newProxyInstance( //调用Proxy类中的静态方法,创建代理对象 target.getClass().getClassLoader(), //参数1:目标对象的类加载器 target.getClass().getInterfaces(), //参数2:目标对象实现的接口 new InvocationHandler() { //匿名内部类的方式,回调方法,增强对象 @Override //在该方法中写逻辑代码,增强方法 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("前置增强"); Object result = method.invoke(target, args); System.out.println("后置增强"); return result; }

kvm虚拟化之kvm虚拟机克隆

两盒软妹~` 提交于 2020-03-20 22:11:30
kvm虚拟机的克隆分为两种情况,本文也就通过以下两种情况进行克隆,克隆虚拟机为OEL5.8X64。 (1) KVM主机本机虚拟机直接克隆。 (2) 通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异机的静态迁移)。 1. 本机虚拟机直接克隆 (1) 查看虚拟机配置文件 [root@node1 ~]# cat /etc/libvirt/qemu/oeltest01.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit oeltest01 or other application using the libvirt API. --> <domain type='kvm'> <name>oeltest01</name> <uuid>8f2bb4a7-c7ed-32aa-3676-9fb05923269d</uuid> <memory unit='KiB'>524288</memory> <currentMemory unit='KiB'>524288</currentMemory> <vcpu

kvm虚拟机克隆

本小妞迷上赌 提交于 2020-03-20 20:51:17
kvm虚拟机的克隆分为两种情况,本文也就通过以下两种情况进行克隆,克隆虚拟机为OEL5.8X64。 本文出自:http://koumm.blog.51cto.com (1) KVM主机本机虚拟机直接克隆。 (2) 通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异机的静态迁移)。 1. 本机虚拟机直接克隆 (1) 查看虚拟机配置文件 [root@node1 ~]# cat /etc/libvirt/qemu/oeltest01.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit oeltest01 or other application using the libvirt API. --> <domain type='kvm'> <name>oeltest01</name> <uuid>8f2bb4a7-c7ed-32aa-3676-9fb05923269d</uuid> <memory unit='KiB'>524288</memory> <currentMemory unit='KiB'

34. Find First and Last Position of Element in Sorted Array

别来无恙 提交于 2020-03-20 12:35:46
https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/ 给定一个有序数组,可能包含有重复元素,问target在数组中的起始位置和结束位置,要求复杂度 \(O(logN)\) ------------------------------------------------------------------ Example 1: Input: nums = [5,7,7,8,8,10], target = 8 Output: [3,4] Example 2: Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1] Example 2: Input: nums = [5,7,7,8,8,10], target = 5 Output: [0,0] class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int lo = 0, hi = nums.size()-1; if (hi==-1) { vector<int> result={-1,-1}; return result; } while(lo < hi

二叉树中和为某一值的路径

笑着哭i 提交于 2020-03-20 12:24:52
题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 题目详解 find(root.left,target,res,new ArrayList<>(path)); find(root.right,target,res,new ArrayList<>(path));    采用new ArrayList<>(path)是保证遍历完左节点后,将path变为之前的状态再去遍历右节点。 完整程序 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) { ArrayList <ArrayList<Integer>> res = new ArrayList<>(); if

percona-xtrabackup实现数据库完全,增量的备份和还原(含一些版本问题与坑)

断了今生、忘了曾经 提交于 2020-03-20 07:24:03
注意:版本变化 xtrabackup版本升级到2.4后,相比之前的2.1有了比较大的变化: innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary程序,另外为了兼容考虑,innobackupex作为 xtrabackup 的软链接,即xtrabacku现在支持非Innodb表备份,并且 Innobackupex 在下一版本中移除,建议通过xtrabackup替换innobackupex 这里mariadb5.5,为centos7默认版本,更高版有很多版本问题很严重 个人测试数据库版本10以上均无法使用xtrabackup 本次使用数据库5.5版本恢复主机10.4版本可行 首先安装xtrabackup yum install percona-xtrabackup 在EPEL源中 >最新版本下载安装: https://www.percona.com/downloads/XtraBackup/LATEST/ >本次实验使用 2.4 版本 下载地址: https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/ yum install /root/percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm #用yum解决依赖性 使用方法 :备份 备份