小编ove*_*nge的帖子

数组如何在 Java 内部工作?

发布此查询以基本上了解诸如

  • 对象是类实例或数组;

  • 数组是类的子Object类;

  • 在 Java 中,除了基元之外的所有实例化都是对象。

这是我对在 Java 中使用数组的理解。

考虑到下面的程序,

/* dummy.java */
class C {
    private int i; 
    public C() {
        i = 1;
        System.out.println("Am in constructor");
    }
}
public class dummy {
    public static void main(String[] args) {
        C[] c = new C[2]; // Line 11
        c[0] = new C();
        System.out.println(c);
    }
}
Run Code Online (Sandbox Code Playgroud)

类型的对象class [LC在运行后在运行时创建,

C[] c = new C[2]; //Line 11
Run Code Online (Sandbox Code Playgroud)

在上面的代码中。class [LC是类的直接子Object类。在上面的代码中c运行后,引用变量指向这个对象(如下图红色边界所示)Line 12。引用变量位于堆栈中,类型的对象class …

java arrays runtime object new-operator

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

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

以下是我遇到的三种线程模型。基于以下 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
查看次数

如何实现类似@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
查看次数

如何计算元素的宽度和高度?

我的理解是,

元素的宽度=(左边框宽度+左边距填充宽度+内容宽度+右边距宽度+右边框宽度)

元素的高度=(顶部边框高度+顶部填充高度+内容高度+底部填充高度+底部边框高度)

下面是相同的图表.

在此输入图像描述

元素的宽度=(10 + 10 + 140 + 10 + 10)= 180

元素的高度=(10 + 10 + 150 + 10 + 10)= 190

margin 不包含在元素的大小中.

content&padding仅包含在点击区域中.

以上公式在计算widthheighthtml元素上是否正确?

html css

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

AngularJS - $$ChildScope 与 $$childHead && $$childTail

angular.element($0).scope()$$ChildScope,$$childHead$$childTail作为成员。

在调试时,$$childHead$$childTail显示直接子作用域。

在此处输入图片说明

什么$$ChildScope意味着什么?

angularjs angularjs-scope

5
推荐指数
0
解决办法
3413
查看次数

结构类型不是鸭子类型

正如 TypeScript手册中提到的:

TypeScript 的核心原则之一是类型检查侧重于值的形状。这有时被称为“鸭子类型”或“结构子类型”。在 TypeScript 中,接口扮演着命名这些类型的角色,...


我的理解是,上述核心原则与Duck 类型无关,而是与结构类型有关,因为 TypeScript 是静态类型语言。

正如维基中提到的:它要求类型检查推迟到运行时,并通过动态类型或反射来实现......对象的适用性取决于某些方法和属性(具有适当含义)的存在,而不是对象的实际类型。

如何理解上述TypeScript的核心原理?

javascript type-systems duck-typing structural-typing typescript

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

Dockerfile - 找不到满足 serverlessrepo==0.1.5 要求的版本

以下是 aws sam 的 Dockerfile:

FROM buildpack-deps:stable
ARG PYTHON_VERSION=3.7.4


# Update and allow for apt over HTTPS
RUN apt-get update && \
  apt-get install -y apt-utils
RUN apt-get install -y apt-transport-https

# download and build Python 3.7, install basic Python libraries
# (this predates pipenv so a mixture of dependencies)
ADD requirements.txt /requirements.txt
RUN cd /usr/src && \
  wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \
  tar xzf Python-${PYTHON_VERSION}.tgz && \
  cd Python-${PYTHON_VERSION} && \
  ./configure --enable-optimizations && \
  make altinstall && \
  apt-get …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile aws-sam-cli aws-sam

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

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

在一个容器中,

可以创建匿名卷

使用语法( 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
查看次数

docker compose - 外部属性在网络下意味着什么?

在下面的 docker-compose 文件中:

version: '2'
networks:
  network1:
    name: my-net
    driver: bridge
    external: true
Run Code Online (Sandbox Code Playgroud)

财产意味着什么external

docker docker-compose

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

OIDC 使用 kubernetes API 连接与 kubernetes 集群通信

kind:ClientConfig存储在.kube/configyaml 中,如下所示:

kind: ClientConfig
apiVersion: authentication.gke.io/v2alpha1
spec:
  name: dev-corp
  server: https://10.x.x.x:443
  certificateAuthorityData: ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
  authentication:
  - name: oidc
    oidc:
      clientID: aaaaad3-9aa1-33c8-dd0-ddddd6b5bf5
      clientSecret: ccccccccccccccccc-
      issuerURI: https://login.microsoftonline.com/aaaa92-aab7-bbfa-cccf-ddaaaaaaaa/v2.0
      kubectlRedirectURI: http://localhost:12345/callback
      cloudConsoleRedirectURI: http://console.cloud.google.com/kubernetes/oidc
      scopes: offline_access,profile
      userClaim: upn
      userPrefix: '-'
      groupsClaim: groups
  preferredAuthentication: oidc
Run Code Online (Sandbox Code Playgroud)

对于 kubectl,以上配置用作:

 $ gcloud components install kubectl
 All components are up to date.
 $
 $ kubectl oidc login --login-config ~/.kube/config --cluster dev-crop 
Run Code Online (Sandbox Code Playgroud)

进行身份验证,然后与集群通信(如下所示):

 kubectl get ns
Run Code Online (Sandbox Code Playgroud)

kubectl也是基于 GoLang 的工具,它能够加载配置--login-config然后进行身份验证。

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22+", …
Run Code Online (Sandbox Code Playgroud)

go google-authentication gcloud kubectl google-anthos

5
推荐指数
0
解决办法
439
查看次数