小编ove*_*nge的帖子

为什么操作系统需要/维护内核态线程?

以下是我遇到的三种线程模型。基于以下 3 种架构,我对新的理解是,除了作为 POSIX.1C 的一部分引入的用户线程之外,还存在称为内核线程的东西

这是1-1模型

在此输入图像描述

这是N-1模型。

在此输入图像描述

这是混合模型。

在此输入图像描述

我已经解决了许多关于内核线程的问题。这看起来是更相关的链接以供澄清。

在进程级别,对于Linux加载器加载的每个用户进程(例如),内核不会分配相应的内核进程来执行用户进程提出的机器指令。用户进程仅在需要内核模块的功能时才请求内核模式执行[如 malloc()/fork()]。用户进程的调度由操作系统调度程序完成并分配CPU核心。

例如,用户进程不需要内核执行模式来执行指令

a=a+2;//a is my local variable in a user level C function

我的问题:

1)那么,内核级线程的目的是什么?为什么操作系统需要为用户级进程的相应用户线程(另外)维护一个内核线程?用户模式程序员是否可以通过编程控制为给定用户进程选择上述三种线程模型中的任何一种?

在我理解第一个问题的答案后,一个相关的补充是,

2)内核线程实际上是由操作系统调度程序而不是用户线程调度的吗?

c multithreading kernel linux-kernel

5
推荐指数
1
解决办法
1994
查看次数

在接口类型上使用注释有什么好处?

在此示例中,注释类型(@interface)下面:

@interface ClassPreamble {
       String author();
       String date();
       int currentRevision() default 1;
       String lastModified() default "N/A";
       String lastModifiedBy() default "N/A";
       // Note use of array
       String[] reviewers();
    }
Run Code Online (Sandbox Code Playgroud)

被编译为interface键入:

interface annotationtype.ClassPreamble extends java.lang.annotation.Annotation{
    public abstract java.lang.String author();
    public abstract java.lang.String date();
    public abstract int currentRevision();
    public abstract java.lang.String lastModified();
    public abstract java.lang.String lastModifiedBy();
    public abstract java.lang.String[] reviewers();
}
Run Code Online (Sandbox Code Playgroud)

因此,注释类型interface在运行时之前被编译为类型.

在java中,在类型上使用注释类型(@interface)有什么好处interface

java types annotations java-8

5
推荐指数
2
解决办法
964
查看次数

如何实现类似@Override java注释的东西?

有了这个jdk代码../java/lang/Override.java,

package java.lang;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)

public @interface Override {
}
Run Code Online (Sandbox Code Playgroud)

只有注释声明,java编译器足够智能检测错误(编译时):

The method toString123() of type Example must override or implement a supertype method

在下面的问题代码中.

package annotationtype;

public class Example {

    @Override public String toString() {
       return "Override the toString() of the superclass";
    }

    @Override public String toString123() {
       return "Override the toString123() of the superclass";
    }

    public static void main(String[] args) {

    }


}
Run Code Online (Sandbox Code Playgroud)

Override刚刚被编译到的注释声明,

interface java.lang.Override extends java.lang.annotation.Annotation{
}
Run Code Online (Sandbox Code Playgroud)

这不过是一个interface.

所以, …

java annotations java-8

5
推荐指数
2
解决办法
1352
查看次数

Java中零长度的数组

下面的代码

public class Example {
    static int[] member;
    public static void main(String[] args) {
        int[] ic = new int[0];
        if (ic == null){
            System.out.println("ic is null");
        }
        System.out.println(ic);  // [I@659e0bfd
        if(member == null){
            System.out.println("member is null");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

很明显,不能在零长度数组中添加元素。

ic指向什么,如果ic不是null

如下图所示,是否ic指向内存位置659e0bfd(为空)?

在此处输入图片说明

java arrays

5
推荐指数
1
解决办法
472
查看次数

forEach回调不会使用getElementsByClassName执行

在下面的代码中,

<!DOCTYPE html>
<html>
    <head>
        <title>Hide odd rows</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <div style="background-color:#8F9779;width:200px;height:30px;">
        </div>
        <hr style="width:200px" align="left">
        <table border="1" >
            <tr class="hide" >
                <td width="40" height="20">row 1</td>
            </tr>
            <tr>
                <td width="40" height="20">row 2</td>
            </tr>
            <tr class="hide">
                <td width="40" height="20">row 3</td>
            </tr>
            <tr>
                <td width="40" height="20">row 4</td>
            </tr>
            <tr class="hide">
                <td width="40" height="20">row 5</td>
            </tr>
        </table><br>
        <button type="button" name="HideRows">Hide Odd Rows</button>
        <script type="text/javascript" src="hideOddRows.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)
/* hideOddRows.js */
document.querySelector('[name=HideRows]').onclick = hideRows;

function hideRows(){
    var elements = document.getElementsByClassName('hide');
    elements.forEach(function(element){
        element.style.visibility …
Run Code Online (Sandbox Code Playgroud)

html javascript css

5
推荐指数
1
解决办法
1185
查看次数

为什么隐式非指针方法不满足接口?

假设我们有这样的理解,

用于类型明确的方法定义X,GO编译器隐式定义了相同的方法类型*X反之亦然,如果我声明,

func (c Cat) foo(){
  //do stuff_
} 
Run Code Online (Sandbox Code Playgroud)

并声明,

func (c *Cat) foo(){
  // do stuff_
}
Run Code Online (Sandbox Code Playgroud)

然后GO编译器给出错误,

Compile error: method re-declared
Run Code Online (Sandbox Code Playgroud)

这表明,指针方法是隐式定义的,反之亦然


在下面的代码中,

package main

type X interface{
  foo();
  bar();
}

type Cat struct{

}

func (c Cat) foo(){
  // do stuff_
}

func (c *Cat) bar(){
  // do stuff_
}

func main() {
  var c Cat
  var p *Cat
  var x X

  x = p // OK; *Cat has explicit …
Run Code Online (Sandbox Code Playgroud)

methods interface go structural-typing

5
推荐指数
1
解决办法
958
查看次数

最佳实践 - 匿名卷与绑定安装

在一个容器中,

可以创建匿名卷

使用语法( VOLUME /build)Dockerfile

或者

下面的语法volumes/build条目

cache:
  build: ../../
  dockerfile: docker/dev/Dockerfile
  volumes:
    - /tmp/cache:/cache
    - /build
  entrypoint: "true"
Run Code Online (Sandbox Code Playgroud)

我的理解是,两种方法(以上)都/build可以在容器进入Exited状态后使卷可用。

卷是匿名的,因为/build指向/var/lib/docker/volumesdocker 主机中的一些随机新位置(在目录中)

我看到匿名卷比命名卷更安全(如/tmp/cache:/cache)。

因为/tmp/cache位置很容易受到攻击,因为这个位置被多个 docker 容器使用的可能性更大。


1)

为什么不鼓励使用匿名卷?

2)

VOLUME /buildDockerfile

不一样

volumes: 
 - /build 
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml文件中?是否有一种情况,我们需要同时提及两者?

docker dockerfile docker-compose

5
推荐指数
2
解决办法
989
查看次数

如何在 GitHub 操作 YML 文件中添加注释?

在下面的语法中:

jobs:
  testing:
    name: some test
    runs-on: [ self-hosted, linux, xyz ]
    steps:
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.15.0
        id: go

      - name: Configure git client
        run: git config --global url."ssh://git@github.com:".insteadOf "https://github.com/"
Run Code Online (Sandbox Code Playgroud)

如何添加run git client to fix some issue运行命令的注释?

github github-actions

5
推荐指数
2
解决办法
5596
查看次数

aiohttp模块-导入错误

已安装aiohttp

pip3 install aiohttp
Run Code Online (Sandbox Code Playgroud)

这里提到的


使用python3.6,

我看到以下错误:

import aiohttp
ModuleNotFoundError: No module named 'aiohttp'
Run Code Online (Sandbox Code Playgroud)

如何解决这个错误?

python python-3.x aiohttp

4
推荐指数
1
解决办法
3626
查看次数

s3 - 调用 HeadObject 操作时发生错误 (403):禁止

回答没有帮助


s3存储桶的资源策略bucket1是:

{
    "Version": "2012-10-17",
    "Statement": [{
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucket1/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket1/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "AES256"
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

IAM 政策是bucket1

   {
        "Action": [
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::bucket1",
            "arn:aws:s3:::bucket1/*"
        ],
        "Effect": …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-iam aws-cli

4
推荐指数
1
解决办法
2万
查看次数