今天学的时候随手测了一下Hystrix的queue的异步执行,发现执行queue之后,还没有打印run方法中的内容,程序就结束了: import com.netflix.hystrix.HystrixCommand; import com.netflix.hystrix.HystrixCommandGroupKey; import com.netflix.hystrix.HystrixCommandProperties; import java.text.SimpleDateFormat; im…
1 使用线程的方式,继承thread类,重写run方法 new Thread() { @Override public void run() { System.out.println("我是新的线程"); } }.start(); 重写之后,线程执行的就是我们自己的run方法,而在Thread类中的run方法就不会被执行 这是Thread类的run方法 在这个方法中判断target是否为null,不为null,才执行target的run方法 2  既传入了runnable对象,又继承t…
Queue.qsize() 返回队列的大小 Queue.empty() 如果队列为空,返回True,反之False Queue.full() 如果队列满了,返回True,反之FalseQueue.full 与 maxsize 大小对应 Queue.get([block[, timeout]])获取队列,timeout等待时间 Queue.get_nowait() 相当Queue.get(False)非阻塞 Queue.put(item) 写入队列,timeout等待时间 Queue.put_no…
1 前言 nodejs的回调,有时候真的是让人又爱又恨的,当需要用for循环把数据依次存入数据库,但是如果使用正常的for循环,永远都是最后一次值的记录,根本不符合要求. 解决此方案有几种,例如闭包(这里利用js函数编程的特性,建立一个闭包来保存每次需要的i值),详情参见参考1和Asyn函数,然后函数的forEach方法也是居于它实现的. 注:async主要实现了很多有用的函数,例如: each: 如果想对同一个集合中的所有元素都执行同一个异步操作. map: 对集合中的每一个元素,执行某个异步…
调用subprocess的推荐方法是对于它可以处理的所有使用场景都使用run()函数. run()函数是在Python 3.5中添加的,如果在老版本中使用,需要下载并扩展. 扩展安装方式: $ pip install subprocess.run 使用方式: subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False) 运行args…
void main() { // 匿名方法 var printSomethings = () { print("somethings"); }; printSomethings(); var printNum = (int n) { print(n + 2); }; printNum(10); // 自执行方法 ((int n){ print(n); print("我是自执行方法"); })(666); } 输出结果: somethings 12 666 我是自执行…
一.认识Thread的 start() 和 run() 1.start(): 我们先来看看API中对于该方法的介绍: 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 结果是两个线程并发地运行:当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法). 多次启动一个线程是非法的.特别是当线程已经结束执行后,不能再重新启动. 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码.通过调用Thread类的…
一.认识多线程中的 start() 和 run() 1.start(): 先来看看Java API中对于该方法的介绍: 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 结果是两个线程并发地运行:当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法). 多次启动一个线程是非法的.特别是当线程已经结束执行后,不能再重新启动. 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体中的代码执行完毕而直接继续执行后续的代码.通过调用Thread…
区别一:                在于当程序调用start方法一个新线程将会被创建,并且在run方法中的代码将会在新线程上运行,                然而在你直接调用run方法的时候,程序并不会创建新线程,run方法内部的代码将在当前线程上运行.                大多数情况下调用run方法是一个bug或者变成失误.                因为调用者的初衷是调用start方法去开启一个新的线程,这个错误可以被很多静态代码覆盖工具检测出来,比如与fingbugs…
前言 在java编程中,线程Thread是我们经常使用的类.那么创建一个Thread的本质究竟是什么,本文就此问题作一个探索. 内容主要分为以下几个部分 1.JNI机制的使用 2.Thread创建线程的底层调用分析 3.系统线程的使用 4.Thread中run方法的回调分析 5.实现一个jni的回调 1.JNI机制的基本使用 当我们new出一个Thread的时候,仅仅是创建了一个java层面的线程对象,而只有当Thread的start方法被调用的时候,一个线程才真正开始执行了.所以start方法…
run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为线程是一个独立运行的代码片段,它的问题不能影响到其他线程 如果run()内部抛出一个unchecked异常,这个线程可能会终止运行,这个异常也不能被主线程捕获,也影响不到其他线程的执行,比如下面的示例: package testpack; import java.io.IOException; pu…
(一)项目框架分析 妈妈要去做饭,发现没有酱油,让儿子去买酱油,然后回来做饭. 根据面向对象的思想,有两个对象,妈妈和儿子 主要有两个方法: (一)没有线程控制(即儿子没有买酱油回来妈妈就做好饭了)+(没有调用jion方法) (二)有线程控制(妈妈进程和儿子进程又先后影响)+(调用jion方法) 项目的结构图: (二)没有进程控制mintak Son.java主要是模拟儿子的行动,儿子买酱油的行动(与有进程控制的源程序相同) 代码如下: public class Son implements R…
调用start()方法和直接调用run()方法的区别 新建一个线程,只需要使用new关键字创建一个线程对象,并且调用start()方法即可. Thread thread = new Thread(); thread.start(); start()方法会新建一个线程,并且让这个线程执行run()方法. 看下面: Thread thread = new Thread(); thread.run(); 这样也能正常执行.但是,却不能新建一个线程,而是在当前线程中调用run()方法,只是作为一个普通的…
Spring Boot自动配置部分重点介绍了相关注解,关于main中调用的run方法并没有阐述过.run方法的作用是什么呢?只有注解没有main里的run方法Spring Boot工程就好比身体个方面机能都比较好除了大脑不工作的植物人:run方法指挥各项注解有序的工作. 下面分析Spring Boot中的run方法如何指挥工作: 1.SpringApplication() 构造方法 2.run方法详解 下面以Eureka服务启动为例,详述run方法每个关键动作都发挥了什么作用.调试Eureka服…
在使用web自动化测试中,用例失败则自动截图的网上也有,但实际能落地的却没看到,现总结在在实际应用中失败截图的几种方法: 一.使用unittest框架截图方法:   1.在tearDown中写入截图的功能,如下: import sysclass SeleniumTest(unittest2.TestCase): ... def tearDown(self): if sys.exc_info()[0]: test_method_name = self._testMethodName self.dr…
什么是callback?  回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应.这个解释看上去很复杂,于是找到了知乎上一个更好的解释  你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在…
在做 Largest Number 这道题之前,我对 sort 方法的用法是非常自信的.我很清楚不传比较因子的排序会根据元素字典序(字符串的UNICODE码位点)来排,如果要根据大小排序,需要传入一个比较函数. 先来看这道题,给你一个数组,让你把数组元素拼接起来,求能拼得的最大的数.如果只有两个数字 a 和 b,如何拼?很明显比较 ab 和 ba 两个数的大小,所以这道题首先需要对数组做一次排序.刷刷写下如下代码: nums.sort(function(a, b) { return (b + '…
我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了. 这里面深藏了一个坑! 看以下代码: $bA = true; $bB = false; $b1 = $bA and $bB; $b2 = $bA && $bB; var_dump($b1); // $b1 = true var_dump($b2); // $b2 = false $bA = false; $bB = true; $b3 = $bA or $bB; $b4 = $bA ||…
       今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                                                             使用ffmpeg做视频编码过程中,首先要新建数据帧,并为数据帧分配对应内存,以便于保存图像数据,为数据帧分配内存须要用到av_image_alloc()这个函数,该函数将依据传入的图像宽.高.图像格式.数据对齐基数等…
原本是打算今天分享一下最近学习接口自动化的心得体会,然而在我写模板的时候,却被一个坑拦我大半天,心得体会不得不 延期再分享了.在我无数次调试无数次看log,终于发现并解决这个问题了.下面记录一下踩的坑: 首先我有这么一个简单至极的excel用例,请看下图:   其他列暂且忽略,我们发现param列的元素在python中是字典格式的,对吧?然后我就一波操作,从excel中取到了这个字典,然后通过request.get方法,传到参数里面,but???发现返回值500?什么鬼啊?我不信,不用这个获取到…
我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也是我开发的,因此我将域名a加到了该服务的HTTP响应结构的头文件里,这样就允许了域名a上的JavaScript代码用AJAX访问域名b的服务. 域名b上的服务是一个Servlet,允许域名a跨域访问的代码就一行: protected void doGet(HttpServletRequest req…
这里记录编译过程中的一个坑!!! 编译过程中出现了下面的报错 external/doclava/src/com/google/doclava/ClassInfo.java:20: error: package com.sun.javadoc does not exist 大概出现了140多个错误,网上查到的解决办法是 bad: export PATH=/home/rev/BIN/jdk-6u34/jdk1.6.0_34/bin/:$PATH Good: export PATH=/home/rev…
版权声明:本文为sam的原创文章,转载请添加出处:http://blog.csdn.net/samed https://blog.csdn.net/samed/article/details/50555663 首先,findall有两种用法: findall(string[, pos[, endpos]]) re.findall(pattern, string[, flags]) 这里讲的是第二种,里面有一个坑. 直接上一段代码看看坑在哪里: 看到差异了吗? 这里findall如果使用了分组,则…
记状态管理库Akita中的一个坑 Akita是什么 Akita是一种基于RxJS的状态管理模式,它采用Flux中的多个数据存储和Redux中的不可变更新的思想,以及流数据的概念,来创建可观察的数据存储模型. 无论是Angular.React.Vue.Web组件,还是普通的旧式JS,秋田都可以完成繁重的工作,并作为维护干净.无样板.可伸缩的应用程序的有用工具. Akita基于面向对象的设计原则,而不是函数式编程,因此具有OOP经验的开发人员应该感到很熟悉.它您的团队提供了一个不可偏离的固定模式.…
说一个极有可能在工作中遇到的问题——foreach的引用 foreach $arr = range(1,3); //[1,2,3] foreach($arr as &$val) { } foreach($arr as $val) { } print_r($arr); 上面这段代码输出什么呢,神奇的竟然是下面这样,这个我在工作中遇到过一次,当时弄了半天没弄出个所以然,只是找到了解决办法,这个问题解决办法有两个: Array ( [0] => 1 [1] => 2 [2] => 2…
使用GridView的时候遇到了一个坑,一个增加一个选择按钮~貌似在某些情况下会出现一个是否允许选择的属性,貌似会默认为fals,然后就返回不了指定ID!坑,巨坑!但是今天居然找不到这个属性了,难道是我的一场梦?…
在使用modal时发现,代码:<button class="btn btn-danger" data-toggle="modal" data-target="#myModal">删除</button>,button按钮点击没有反映,经过与自带的实例对比,发现一个区别,就是type="button"没有加,真是一个坑啊 <button class="btn btn-danger"…
[转]最近用Timer踩了一个坑,分享一下避免别人继续踩 最近做一个小项目,项目中有一个定时服务,需要向对方定时发送数据,时间间隔是1.5s,然后就想到了用C#的Timer类,我们知道Timer 确实非常好用,因为里面有非常人性化的start和stop功能,在Timer里面还有一个Interval,就是用来设置时间间隔,然后时间间隔到了就会触 发Elapsed事件,我们只需要把callback函数注册到这个事件就可以了,如果Interval到了就会触发Elapsed,貌似一切看起来很顺其自然,但…
html5 有一个video标签,这个是被大家所熟知的事情.按照w3c的规范,我认真的写出如下代码: <video preload="auto" controls="true" width="100%" height="100%"> <source src="t.mp4" type="video/mp4"> your browser does not suppor…
最近一直被C#调用Haskell时的“尝试读取或写入受保护的内存”问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected memory,C#调用haskell时的“尝试读取或写入受保护的内存”问题),而且困在其中,越陷超深,无法自拔,差点弃用C#解决我们面临的问题. 问题是这样的,只要在Haskell代码中对字符串进行操作,在C#调用时就会引发异常: An unhandled exception of type 'System.Acce…