以下是我遇到的三种线程模型。基于以下 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)内核线程实际上是由操作系统调度程序而不是用户线程调度的吗?
在此示例中,注释类型(@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?
有了这个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.
所以, …
下面的代码
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(为空)?

在下面的代码中,
<!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) 假设我们有这样的理解,
用于类型明确的方法定义
X,GO编译器隐式定义了相同的方法类型*X和反之亦然,如果我声明,Run Code Online (Sandbox Code Playgroud)func (c Cat) foo(){ //do stuff_ }并声明,
Run Code Online (Sandbox Code Playgroud)func (c *Cat) foo(){ // do stuff_ }然后GO编译器给出错误,
Run Code Online (Sandbox Code Playgroud)Compile error: method re-declared这表明,指针方法是隐式定义的,反之亦然
在下面的代码中,
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) 在一个容器中,
可以创建匿名卷
使用语法( 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 /build 在 Dockerfile
不一样
volumes:
- /build
Run Code Online (Sandbox Code Playgroud)
在docker-compose.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运行命令的注释?
已安装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)
如何解决这个错误?
回答没有帮助
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) java ×3
annotations ×2
java-8 ×2
aiohttp ×1
amazon-iam ×1
amazon-s3 ×1
arrays ×1
aws-cli ×1
c ×1
css ×1
docker ×1
dockerfile ×1
github ×1
go ×1
html ×1
interface ×1
javascript ×1
kernel ×1
linux-kernel ×1
methods ×1
python ×1
python-3.x ×1
types ×1