0%

在使用jenkins的pipeline时,中间需要进行sonar扫描,然后获取扫描结果。根据官方文件推荐的用法是

pipeline {
        agent none
        stages {
          stage("build & SonarQube analysis") {
            agent any
            steps {
              withSonarQubeEnv('My SonarQube Server') {
                sh 'mvn clean package sonar:sonar'
              }
            }
          }
          stage("Quality Gate") {
            steps {
              timeout(time: 1, unit: 'HOURS') {
                waitForQualityGate abortPipeline: true
              }
            }
          }
        }
      }
Read more »

背景

在进行多线程编程的时候,经常会遇到线程安全的问题,例如一个线程在修改一个变量的时候,另外一个线程也在修改这个变量,而根据java的内存模型,每个工作线程都会先把变量从主内存中拉回到自己的内存,在修改了之后再刷新回主内存,所以就会出现数据不一致的问题,例如下面的对count进行累加

Read more »

背景

在现有的技术发展下,多线程变得越来越普遍,在处理一些耗时的任务,或者需要异步处理一些业务的时候,需要我们使用多线程来进行处理。例如在处理用户注册的时候,需要发送验证码,这个时候我们不能等到在主线程进行这个操作,因为发送验证码可能是一个比较耗时的任务,如果在主线程执行的话会进行阻塞,进而会影响到别的请求的工作。这个时候就需要我们先回复当前请求,然后新起一个线程去进行验证码的发送。

线程的生命周期

Read more »

python 线程 进程 协程

刚好今天早上早饭买的是煎饼果子,我就用煎饼果子这个东西来比较一些线程进程跟协程之间的关系

线程

Read more »

python 协程

协程

一般的子程序都是层级调用,比如A调用B,B调用C,C执行完毕返回,B执行完毕返回,最后A执行完毕返回。一个子程序的调用永远都是只有一个入口跟一个出口。调用顺序是明确的

Read more »

Python 进程

因为GIL的限制,一个进程中只能有一个线程获取到资源,因此在有些场景下会显得很鸡肋。一种解决方法就是利用多进程,通过开多个进程就可以绕开GIL的限制。

多进程

Read more »