Kubernetes中yaml文件Pod模板详解编写yaml文件启动服务

编写Kubernetes中编写yaml文件,Pod模板详解


K8s的yaml文件功能十分强大,对于新手来说,想要快速照掌握且灵活运用就显得有些困难。下文将给出Pod模板常用的一些代码及解释,如何快速运用。

Pod中 yaml 的详解

注意:都是以两个空格为递进,而非tab

apiVersion: v1     #必选,版本号,例如v1
kind: Pod         #必选,资源类型,例如 Pod,Deployment,ReplicaSet,Replication
metadata:         #必选,元数据
  name: string     #必选,Pod名称
  namespace: string  #Pod所属的命名空间,默认为"default"
  labels:           #自定义标签列表
    - name: string                 
spec:  #必选,Pod中容器的详细定义
  containers:  #必选,Pod中容器列表
  - name: string   #必选,容器名称
    image: string  #必选,容器的镜像名称
    imagePullPolicy: [ Always|Never|IfNotPresent ]  #获取镜像的策略 
    command: [string]   #容器的启动命令列表,如不指定,使用打包时使用的启动命令
    args: [string]      #容器的启动命令参数列表
    workingDir: string  #容器的工作目录
    volumeMounts:       #挂载到容器内部的存储卷配置
    - name: string      #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
      mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符
      readOnly: boolean #是否为只读模式
	
	volumes:   #在该pod上定义共享存储卷列表
	- name: string    #共享存储卷名称 (volumes类型有很多种)
    emptyDir: {}       #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
    hostPath: string   #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
      path: string                #Pod所在宿主机的目录,将被用于同期中mount的目录
    secret:          #类型为secret的存储卷,挂载集群与定义的secret对象到容器内部
      scretname: string  
      items:     
      - key: string
        path: string
    configMap:         #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
      name: string
      items:
      - key: string
        path: string
	  
    ports: #需要暴露的端口库号列表
    - name: string        #端口的名称
      containerPort: int  #容器需要监听的端口号
      hostPort: int       #容器所在主机需要监听的端口号,默认与Container相同
      protocol: string    #端口协议,支持TCP和UDP,默认TCP
	  
	  
    env:   #容器运行前需设置的环境变量列表
    - name: string  #环境变量名称
      value: string #环境变量的值
	  
	  
    resources: #资源限制和请求的设置
      limits:  #资源限制的设置
        cpu: string     #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
        memory: string  #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
      requests: #资源请求的设置
        cpu: string    #Cpu请求,容器启动的初始可用数量
        memory: string #内存请求,容器启动的初始可用数量
		
		
    lifecycle: #生命周期钩子
		postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启
		preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止
		
		
    livenessProbe:  #对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器
      exec:         #对Pod容器内检查方式设置为exec方式
        command: [string]  #exec方式需要制定的命令或脚本
	
      initialDelaySeconds    # 容器启动后等待多少秒执行第一次探测
      timeoutSeconds         # 探测超时时间。默认1秒,最小1秒
	  periodSeconds          # 执行探测的频率。默认是10秒,最小1秒
	  failureThreshold       # 连续探测失败多少次才被认定为失败。默认是3。最小值是1
	  successThreshold       # 连续探测成功多少次才被认定为成功。默认是1			
      httpGet:       #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
        path: string
        port: number
        host: string
        scheme: string
        HttpHeaders:
        - name: string
          value: string
		  
		  
      tcpSocket:     #对Pod内个容器健康检查方式设置为tcpSocket方式
         port: number
       initialDelaySeconds: 0       #容器启动完成后首次探测的时间,单位为秒
       timeoutSeconds: 0          #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
       periodSeconds: 0           #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
       successThreshold: 0
       failureThreshold: 0
       securityContext:
         privileged: false
  restartPolicy: [Always | Never | OnFailure]  #Pod的重启策略
  nodeName:  #设置NodeName表示将该Pod调度到指定到名称的node节点上
  nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上
  imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定
  - name: string
  hostNetwork: false   #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络


在编写yaml的时候,可结合帮助,灵活运用,找到所需的那个代码。
k8s查看yaml文件帮助的命令

构建pod,ns,rs,rc等等,只需在后面加上即可出现对应模板

kubectl explain pod/ns/rs/rc/networkpolicy/hpa


以pod为例

以pod为例
[root@master ~]# kubectl explain pod
KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

FIELDS:
   apiVersion   <string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

   kind <string>
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

   metadata     <Object>
     Standard object's metadata. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

   spec <Object>
     Specification of the desired behavior of the pod. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

   status       <Object>
     Most recently observed status of the pod. This data may not be up to date.
     Populated by the system. Read-only. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

逐层往下查看

以pod中的spec为例
它会给出spec下的所有可写的代码,可以 . 为分隔符依此往下查阅

[root@master ~]# kubectl explain pod.spec
KIND:     Pod
VERSION:  v1

RESOURCE: spec 

DESCRIPTION:
     Specification of the desired behavior of the pod. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

     PodSpec is a description of a pod.

FIELDS:
   activeDeadlineSeconds        
     Optional duration in seconds the pod may be active on the node relative to
     StartTime before the system will actively try to mark it failed and kill
     associated containers. Value must be a positive integer.

   affinity     
     If specified, the pod's scheduling constraints

   automountServiceAccountToken 
     AutomountServiceAccountToken indicates whether a service account token
     should be automatically mounted.

   containers   <[]Object> -required-
     List of containers belonging to the pod. Containers cannot currently be
     added or removed. There must be at least one container in a Pod. Cannot be
     updated.

   dnsConfig    
     Specifies the DNS parameters of a pod. Parameters specified here will be
     merged to the generated DNS configuration based on DNSPolicy.

   dnsPolicy    
     Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are
     'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS
     parameters given in DNSConfig will be merged with the policy selected with
     DNSPolicy. To have DNS options set along with hostNetwork, you have to
     specify DNS policy explicitly to 'ClusterFirstWithHostNet'.

   enableServiceLinks   
     EnableServiceLinks indicates whether information about services should be
     injected into pod's environment variables, matching the syntax of Docker
     links. Optional: Defaults to true.

   ephemeralContainers  <[]Object>
     List of ephemeral containers run in this pod. Ephemeral containers may be
     run in an existing pod to perform user-initiated actions such as debugging.
     This list cannot be specified when creating a pod, and it cannot be
     modified by updating the pod spec. In order to add an ephemeral container
     to an existing pod, use the pod's ephemeralcontainers subresource. This
     field is alpha-level and is only honored by servers that enable the
     EphemeralContainers feature.

   hostAliases  <[]Object>
     HostAliases is an optional list of hosts and IPs that will be injected into
     the pod's hosts file if specified. This is only valid for non-hostNetwork
     pods.

   hostIPC      
     Use the host's ipc namespace. Optional: Default to false.

   hostNetwork  
     Host networking requested for this pod. Use the host's network namespace.
     If this option is set, the ports that will be used must be specified.
     Default to false.

   hostPID      
     Use the host's pid namespace. Optional: Default to false.

   hostname     
     Specifies the hostname of the Pod If not specified, the pod's hostname will
     be set to a system-defined value.

   imagePullSecrets     <[]Object>
     ImagePullSecrets is an optional list of references to secrets in the same
     namespace to use for pulling any of the images used by this PodSpec. If
     specified, these secrets will be passed to individual puller
     implementations for them to use. For example, in the case of docker, only
     DockerConfig type secrets are honored. More info:
     https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

   initContainers       <[]Object>
     List of initialization containers belonging to the pod. Init containers are
     executed in order prior to containers being started. If any init container
     fails, the pod is considered to have failed and is handled according to its
     restartPolicy. The name for an init container or normal container must be
     unique among all containers. Init containers may not have Lifecycle
     actions, Readiness probes, Liveness probes, or Startup probes. The
     resourceRequirements of an init container are taken into account during
     scheduling by finding the highest request/limit for each resource type, and
     then using the max of of that value or the sum of the normal containers.
     Limits are applied to init containers in a similar fashion. Init containers
     cannot currently be added or removed. Cannot be updated. More info:
     https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

   nodeName     
     NodeName is a request to schedule this pod onto a specific node. If it is
     non-empty, the scheduler simply schedules this pod onto that node, assuming
     that it fits resource requirements.

   nodeSelector [string]string>
     NodeSelector is a selector which must be true for the pod to fit on a node.
     Selector which must match a node's labels for the pod to be scheduled on
     that node. More info:
     https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

     overhead     
     Overhead represents the resource overhead associated with running a pod for
     a given RuntimeClass. This field will be autopopulated at admission time by
     the RuntimeClass admission controller. If the RuntimeClass admission
     controller is enabled, overhead must not be set in Pod create requests. The
     RuntimeClass admission controller will reject Pod create requests which
     have the overhead already set. If RuntimeClass is configured and selected
     in the PodSpec, Overhead will be set to the value defined in the
     corresponding RuntimeClass, otherwise it will remain unset and treated as
     zero. More info:
     https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This
     field is alpha-level as of Kubernetes v1.16, and is only honored by servers
     that enable the PodOverhead feature.

   preemptionPolicy     
     PreemptionPolicy is the Policy for preempting pods with lower priority. One
     of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.
     This field is alpha-level and is only honored by servers that enable the
     NonPreemptingPriority feature.

   priority     
     The priority value. Various system components use this field to find the
     priority of the pod. When Priority Admission Controller is enabled, it
     prevents users from setting this field. The admission controller populates
     this field from PriorityClassName. The higher the value, the higher the
     priority.

   priorityClassName    
     If specified, indicates the pod's priority. "system-node-critical" and
     "system-cluster-critical" are two special keywords which indicate the
     highest priorities with the former being the highest priority. Any other
     name must be defined by creating a PriorityClass object with that name. If
     not specified, the pod priority will be default or zero if there is no
     default.

   readinessGates       <[]Object>
     If specified, all readiness gates will be evaluated for pod readiness. A
     pod is ready when all its containers are ready AND all conditions specified
     in the readiness gates have status equal to "True" More info:
     https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md

   restartPolicy        
     Restart policy for all containers within the pod. One of Always, OnFailure,
     Never. Default to Always. More info:
     https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

   runtimeClassName     
     RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group,
     which should be used to run this pod. If no RuntimeClass resource matches
     the named class, the pod will not be run. If unset or empty, the "legacy"
     RuntimeClass will be used, which is an implicit class with an empty
     definition that uses the default runtime handler. More info:
     https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a
     beta feature as of Kubernetes v1.14.

   schedulerName        
     If specified, the pod will be dispatched by specified scheduler. If not
     specified, the pod will be dispatched by default scheduler.

   securityContext      
     SecurityContext holds pod-level security attributes and common container
     settings. Optional: Defaults to empty. See type description for default
     values of each field.

   serviceAccount       
     DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
     Deprecated: Use serviceAccountName instead.

   serviceAccountName   
     ServiceAccountName is the name of the ServiceAccount to use to run this
     pod. More info:
     https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

   shareProcessNamespace        
     Share a single process namespace between all of the containers in a pod.
     When this is set containers will be able to view and signal processes from
     other containers in the same pod, and the first process in each container
     will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both
     be set. Optional: Default to false.

   subdomain    
     If specified, the fully qualified Pod hostname will be
     "...svc.". If not
     specified, the pod will not have a domainname at all.

   terminationGracePeriodSeconds        
     Optional duration in seconds the pod needs to terminate gracefully. May be
     decreased in delete request. Value must be non-negative integer. The value
     zero indicates delete immediately. If this value is nil, the default grace
     period will be used instead. The grace period is the duration in seconds
     after the processes running in the pod are sent a termination signal and
     the time when the processes are forcibly halted with a kill signal. Set
     this value longer than the expected cleanup time for your process. Defaults
     to 30 seconds.

   tolerations  <[]Object>
     If specified, the pod's tolerations.

   topologySpreadConstraints    <[]Object>
     TopologySpreadConstraints describes how a group of pods ought to spread
     across topology domains. Scheduler will schedule pods in a way which abides
     by the constraints. This field is only honored by clusters that enable the
     EvenPodsSpread feature. All topologySpreadConstraints are ANDed.

   volumes      <[]Object>
     List of volumes that can be mounted by containers belonging to the pod.
     More info: https://kubernetes.io/docs/concepts/storage/volumes

 
  

例1

yaml中的实战pod案例,先写个简单的

使用该yaml文件创建Pod要求如下:
1.Pod名称:nginx-pod;
2.使用:nginx 镜像;
3.拉取策略为:IfNotPresent;
4.容器名称:mynginx;
5.容器端口:80


其yaml文件如下

[root@master ~]# vim nginx.yaml 
apiVersion: v1				#版本号为v1
kind: Pod					#资源类型为Pod
metadata:					#元数据
  name: nginx-pod			#Pod名称
spec:						#pod容器的详细定义
  containers:				#容器列表
  - name: mynginx			#容器名称
    image: nginx:latest		#容器镜像
    imagePullPolicy: IfNotPresent	#容器镜像拉取策略
    ports:					#需要暴露的端口库号列表
      - containerPort: 80 	#容器需监听的端口号

将其启动,且访问一下,试看是否能够访问到nginx首页

启动编写好的yaml文件
[root@master ~]# kubectl apply -f nginx.yaml 
pod/nginx-pod created

查看pod列表
[root@master ~]# kubectl get pod -o wide
NAME        READY   STATUS    RESTARTS   AGE   IP            NODE   NOMINATED NODE   READINESS GATES
nginx-pod   1/1     Running   0          28s   10.244.1.21   node              

访问pod
[root@master ~]# curl 10.244.1.21:80
<!DOCTYPE html>


Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>title>
<style>
html <span class="token punctuation">{</span> color<span class="token operator">-</span>scheme: light dark<span class="token punctuation">;</span> <span class="token punctuation">}</span>
body <span class="token punctuation">{</span> width: 35em<span class="token punctuation">;</span> margin: 0 auto<span class="token punctuation">;</span>
font<span class="token operator">-</span>family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans<span class="token operator">-</span>serif<span class="token punctuation">;</span> <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br<span class="token operator">/</span>>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
</code></pre> 
  <p>可见是能够启动成功且可以访问到nginx首页</p> 
  <h4>例2</h4> 
  <p>上点难度吧,写个常用一点的实战案例:<br> 1.Pod名称:liveness-exec;<br> 2.命名空间:default;<br> 3.镜像: busybox;容器名称: liveness;<br> 4.容器启动时运行命令 “touch /tmp/healthy; sleep 60; rm -rf /tmp/healthy; sleep 600”,<br> 此命令在容器启动时创建/tmp/healthy 文件,并于60秒之后将其删除;<br> 5.存活性探针运行“test -e /tmp/healthy”命令检查文件的存在性,若文件存在则返回状态码为0,表示成功通过测试;<br> 6.启动后延时5秒开始运行检测;<br> 7.每隔5秒执行一次liveness probe;</p> 
  <p>其yaml的编写如下:</p> 
  <pre><code class="prism language-yaml"><span class="token punctuation">[</span>root@master ~<span class="token punctuation">]</span><span class="token comment"># vim liveness_exec.yaml   </span>
<span class="token key atrule">apiVersion</span><span class="token punctuation">:</span> v1							<span class="token comment">#版本号为v1</span>
<span class="token key atrule">kind</span><span class="token punctuation">:</span> Pod								<span class="token comment">#资源类型为Pod</span>
<span class="token key atrule">metadata</span><span class="token punctuation">:</span>								<span class="token comment">#元数据必写</span>
  <span class="token key atrule">name</span><span class="token punctuation">:</span> liveness<span class="token punctuation">-</span>exec					<span class="token comment">#pod名称为liveness-exec</span>
<span class="token key atrule">spec</span><span class="token punctuation">:</span>									<span class="token comment">#容器的详细定义 必写</span>
  <span class="token key atrule">containers</span><span class="token punctuation">:</span>							<span class="token comment">#容器列表   必写</span>
  <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> liveness						<span class="token comment">#容器名称为 liveness</span>
    <span class="token key atrule">image</span><span class="token punctuation">:</span> busybox<span class="token punctuation">:</span>latest				<span class="token comment">#容器所使用的镜像 busybox</span>
    <span class="token key atrule">args</span><span class="token punctuation">:</span>								<span class="token comment">#容器的启动命令参数列表 必写</span>
      <span class="token punctuation">-</span> /bin/sh							<span class="token comment">#所要执行的命令</span>
      <span class="token punctuation">-</span> <span class="token punctuation">-</span>c
      <span class="token punctuation">-</span> touch /tmp/healthy; sleep 60; rm <span class="token punctuation">-</span>rf /tmp/healthy; sleep 600
    <span class="token key atrule">livenessProbe</span><span class="token punctuation">:</span>						<span class="token comment">#Pod内各容器健康检查的设置</span>
      <span class="token key atrule">exec</span><span class="token punctuation">:</span>								<span class="token comment">#对Pod容器内检查方式设置为exec方式</span>
        <span class="token key atrule">command</span><span class="token punctuation">:</span>						<span class="token comment">#exec方式需要制定的命令或脚本</span>
          <span class="token punctuation">-</span> test
          <span class="token punctuation">-</span> /tmp/healthy
      <span class="token key atrule">initialDelaySeconds</span><span class="token punctuation">:</span> <span class="token number">5</span>			<span class="token comment">#容器启动后等待5秒执行第一次探测</span>
      <span class="token key atrule">periodSeconds</span><span class="token punctuation">:</span> <span class="token number">5</span>					<span class="token comment">#执行探测的频率每5秒执行一次</span>
</code></pre> 
  <pre><code class="prism language-shell"><span class="token punctuation">[</span>root@master ~<span class="token punctuation">]</span><span class="token comment"># kubectl apply -f liveness_exec.yaml </span>
pod/liveness-exec created
<span class="token punctuation">[</span>root@master ~<span class="token punctuation">]</span><span class="token comment"># kubectl get pod -o wide</span>
NAME            READY   STATUS    RESTARTS   AGE   IP            NODE   NOMINATED NODE   READINESS GATES
liveness-exec   <span class="token number">1</span>/1     Running   <span class="token number">0</span>          18s   <span class="token number">10.244</span>.1.23   node   <span class="token operator"><</span>none<span class="token operator">></span>           <span class="token operator"><</span>none<span class="token operator">></span>


当pod创建成功以后
进入pod查看是否命令是否有被执行

<span class="token punctuation">[</span>root@master ~<span class="token punctuation">]</span><span class="token comment"># kubectl exec -it liveness-exec /bin/sh</span>
kubectl <span class="token builtin class-name">exec</span> <span class="token punctuation">[</span>POD<span class="token punctuation">]</span> <span class="token punctuation">[</span>COMMAND<span class="token punctuation">]</span> is DEPRECATED and will be removed <span class="token keyword">in</span> a future version. Use kubectl kubectl <span class="token builtin class-name">exec</span> <span class="token punctuation">[</span>POD<span class="token punctuation">]</span> -- <span class="token punctuation">[</span>COMMAND<span class="token punctuation">]</span> instead.
/ <span class="token comment"># ls /tmp/</span>
healthy
/ <span class="token comment"># </span>
</code></pre> 
  <p>可见 healthy 文件创建成功,可等待60秒,再次查看,会发现这个文件已经被删除了,已达到上述的要求。</p> 
  <h4>再例举一个RS的例子:</h4> 
  <p>使用yaml文件创建ReplicaSet 要求如下:</p> 
  <p>(1)Replicaset名称:nginx;</p> 
  <p>(2)命名空间:default;</p> 
  <p>(3)副本数:3;</p> 
  <p>(4)镜像:nginx。</p> 
  <br> 
  <p>可借用yaml文件的帮助:</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@master ~]</span><span class="token comment"># kubectl explain rs.spec</span>
KIND:     ReplicaSet
VERSION:  apps<span class="token operator">/</span>v1

RESOURCE: spec <Object>

DESCRIPTION:
     Spec defines the specification of the desired behavior of the ReplicaSet<span class="token punctuation">.</span>
     More info:
     https:<span class="token operator">/</span><span class="token operator">/</span>git<span class="token punctuation">.</span>k8s<span class="token punctuation">.</span>io<span class="token operator">/</span>community<span class="token operator">/</span>contributors<span class="token operator">/</span>devel<span class="token operator">/</span>sig<span class="token operator">-</span>architecture<span class="token operator">/</span>api<span class="token operator">-</span>conventions<span class="token punctuation">.</span>md<span class="token comment">#spec-and-status</span>

     ReplicaSetSpec is the specification of a ReplicaSet<span class="token punctuation">.</span>

FIELDS:
   minReadySeconds      <integer>
     Minimum number of seconds <span class="token keyword">for</span> which a newly created pod should be ready
     without any of its container crashing<span class="token punctuation">,</span> <span class="token keyword">for</span> it to be considered available<span class="token punctuation">.</span>
     Defaults to 0 <span class="token punctuation">(</span>pod will be considered available as soon as it is ready<span class="token punctuation">)</span>

   replicas     <integer>
     Replicas is the number of desired replicas<span class="token punctuation">.</span> This is a pointer to
     distinguish between explicit zero and unspecified<span class="token punctuation">.</span> Defaults to 1<span class="token punctuation">.</span> More
     info:
     https:<span class="token operator">/</span><span class="token operator">/</span>kubernetes<span class="token punctuation">.</span>io<span class="token operator">/</span>docs<span class="token operator">/</span>concepts<span class="token operator">/</span>workloads<span class="token operator">/</span>controllers<span class="token operator">/</span>replicationcontroller<span class="token operator">/</span><span class="token comment">#what-is-a-replicationcontroller</span>

   selector     <Object> <span class="token operator">-</span>required<span class="token operator">-</span>
     Selector is a label query over pods that should match the replica count<span class="token punctuation">.</span>
     Label keys and values that must match in order to be controlled by this
     replica <span class="token function">set</span><span class="token punctuation">.</span> It must match the pod template's labels<span class="token punctuation">.</span> More info:
     https:<span class="token operator">/</span><span class="token operator">/</span>kubernetes<span class="token punctuation">.</span>io<span class="token operator">/</span>docs<span class="token operator">/</span>concepts<span class="token operator">/</span>overview<span class="token operator">/</span>working<span class="token operator">-</span>with<span class="token operator">-</span>objects<span class="token operator">/</span>labels<span class="token operator">/</span><span class="token comment">#label-selectors</span>

   template     <Object>
     Template is the object that describes the pod that will be created <span class="token keyword">if</span>
     insufficient replicas are detected<span class="token punctuation">.</span> More info:
     https:<span class="token operator">/</span><span class="token operator">/</span>kubernetes<span class="token punctuation">.</span>io<span class="token operator">/</span>docs<span class="token operator">/</span>concepts<span class="token operator">/</span>workloads<span class="token operator">/</span>controllers<span class="token operator">/</span>replicationcontroller<span class="token comment">#pod-template</span>
</code></pre> 
  <br> 
  <p>编写rs的yaml文件</p> 
  <pre><code class="prism language-yaml"><span class="token punctuation">[</span>root@master ~<span class="token punctuation">]</span><span class="token comment"># vim replicaset.yaml </span>
<span class="token key atrule">apiVersion</span><span class="token punctuation">:</span> apps/v1
<span class="token key atrule">kind</span><span class="token punctuation">:</span> ReplicaSet
<span class="token key atrule">metadata</span><span class="token punctuation">:</span>
  <span class="token key atrule">name</span><span class="token punctuation">:</span> nginx
<span class="token key atrule">spec</span><span class="token punctuation">:</span>
  <span class="token key atrule">replicas</span><span class="token punctuation">:</span> <span class="token number">3</span>
  <span class="token key atrule">selector</span><span class="token punctuation">:</span>
    <span class="token key atrule">matchLabels</span><span class="token punctuation">:</span>
      <span class="token key atrule">nginx</span><span class="token punctuation">:</span> replicaset
  <span class="token key atrule">template</span><span class="token punctuation">:</span>
    <span class="token key atrule">metadata</span><span class="token punctuation">:</span>
      <span class="token key atrule">labels</span><span class="token punctuation">:</span>
        <span class="token key atrule">nginx</span><span class="token punctuation">:</span> replicaset
    <span class="token key atrule">spec</span><span class="token punctuation">:</span>
      <span class="token key atrule">containers</span><span class="token punctuation">:</span>
      <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> nginx
        <span class="token key atrule">image</span><span class="token punctuation">:</span> nginx<span class="token punctuation">:</span>latest
</code></pre> 
  <p>将其启动</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@master ~]</span><span class="token comment"># kubectl apply -f replicaset.yaml </span>
replicaset<span class="token punctuation">.</span>apps<span class="token operator">/</span>nginx created

<span class="token namespace">[root@master ~]</span><span class="token comment"># kubectl get rs</span>
NAME    DESIRED   CURRENT   READY   AGE
nginx   3         3         3       69s


<span class="token namespace">[root@master ~]</span><span class="token comment"># kubectl get pod -o wide</span>
NAME          READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
nginx<span class="token operator">-</span>qjq88   1<span class="token operator">/</span>1     Running   0          38s   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>1<span class="token punctuation">.</span>25   node     <none>           <none>
nginx<span class="token operator">-</span>xkxvz   1<span class="token operator">/</span>1     Running   0          38s   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>1<span class="token punctuation">.</span>24   node     <none>           <none>
nginx<span class="token operator">-</span>z8gwx   1<span class="token operator">/</span>1     Running   0          38s   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>0<span class="token punctuation">.</span>28   master   <none>           <none>
</code></pre> 
  <p>访问任意一个IP,都能返回nginx首页内容<br> [root@master ~]# curl 10.244.0.28</p> Welcome to nginx! 
  <h2>Welcome to nginx!</h2> 
  <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> 
  <p>For online documentation and support please refer to nginx.org.<br> Commercial support is available at nginx.com.</p> 
  <p><em>Thank you for using nginx.</em></p> 
  <br> 
  <p>到此over!!</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1731193562441265152"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(kubernetes,kubernetes,docker,容器)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1940570843578953728.htm"
                           title="Ubuntu/Linux运行安卓全攻略" target="_blank">Ubuntu/Linux运行安卓全攻略</a>
                        <span class="text-muted">海洋月亮</span>
<a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a>
                        <div>Ubuntu中使用scrcpy进行Android投屏,当我们手头没开发板没有屏幕的时候,就可以借助ADB和scrcpy进行投屏,很方便:A.这里展示如何在Ubuntu中使用scrcpy+adb+docker方案运行手机Android系统B.使用的模拟器方案基于redroid,能够非常简单方便地在任何Linux上运行Android模拟器C.测试环境:Ubuntu24.04D.需要用到的工具:scrc</div>
                    </li>
                    <li><a href="/article/1940564915811053568.htm"
                           title="Kubernetes Pod 调度基础" target="_blank">Kubernetes Pod 调度基础</a>
                        <span class="text-muted">眠修</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>目录一、ReplicationController和ReplicaSet1、ReplicationController(复制控制器,RC)(1)编辑ReplicationController文件(2)创建ReplicationController(3)删除一个pod并立即查看pod状态(4)删除ReplicationController2、标签与标签选择器(1)标签(2)标签选择器基于等式的选择器</div>
                    </li>
                    <li><a href="/article/1940553191389196288.htm"
                           title="计算机视觉 OpenCV Android | Mat像素操作(图像像素的读写、均值方差、算术、逻辑等运算、权重叠加、归一化等操作)..." target="_blank">计算机视觉 OpenCV Android | Mat像素操作(图像像素的读写、均值方差、算术、逻辑等运算、权重叠加、归一化等操作)...</a>
                        <span class="text-muted">凌川江雪</span>

                        <div>本文目录1.像素读写2.图像通道与均值方差计算3.算术操作与调整图像的亮度和对比度4.基于权重的图像叠加5.Mat的其他各种像素操作1.像素读写Mat作为图像容器,其数据部分存储了图像的像素数据,我们可以通过相关的API来获取图像数据部分;在获取图像数据的时候,知道Mat的类型与通道数目关重要,根据Mat的类型与通道数目,开辟适当大小的内存空间,然后通过get方法就可以循环实现每个像素点值的读取、</div>
                    </li>
                    <li><a href="/article/1940552686990585856.htm"
                           title="Docker容器中安装 ROS2-Humble 并使用 rviz" target="_blank">Docker容器中安装 ROS2-Humble 并使用 rviz</a>
                        <span class="text-muted">ZPC8210</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>默认电脑已经安装了docker,没安装看这篇文章Docker安装(完整详细版)ROS和docker各种结合看官方文档dockerTutorials在OSRF中拉取想要的ROS版本docker镜像网址为拉取命令在这里dockerpullosrf/ros:humble-desktop-full拉取完后创建容器,但是为了能在docker中能打开窗口,将使用以下参数,只需要修改名字即可,your_name</div>
                    </li>
                    <li><a href="/article/1940547516999200768.htm"
                           title="Python Day53" target="_blank">Python Day53</a>
                        <span class="text-muted">别勉.</span>
<a class="tag" taget="_blank" href="/search/python%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">python机器学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Task:1.对抗生成网络的思想:关注损失从何而来2.生成器、判别器3.nn.sequential容器:适合于按顺序运算的情况,简化前向传播写法4.leakyReLU介绍:避免relu的神经元失活现象1.对抗生成网络的思想:关注损失从何而来这是理解GANs的关键!传统的神经网络训练中,我们通常会直接定义一个损失函数(如均方误差MSE、交叉熵CE),然后通过反向传播来优化这个损失。这个损失的“来源”</div>
                    </li>
                    <li><a href="/article/1940535533528739840.htm"
                           title="Tensorflow 回归模型 FLASK + DOCKER 部署 至 Ubuntu 虚拟机" target="_blank">Tensorflow 回归模型 FLASK + DOCKER 部署 至 Ubuntu 虚拟机</a>
                        <span class="text-muted"></span>

                        <div>准备工作:安装虚拟机,安装ubuntu,安装python3.x、pip和对应版本的tensorflow和其他库文件,安装docker。注意事项:1.windows系统运行的模型文件不能直接运行到虚拟机上,需在虚拟机上重新运行并生成模型文件2.虚拟机网络状态改为桥接Flask代码如下:fromflaskimportFlask,request,jsonifyimportpickleimportnump</div>
                    </li>
                    <li><a href="/article/1940517641093443584.htm"
                           title="如何利用ssh使得pycharm连接服务器的docker容器内部环境" target="_blank">如何利用ssh使得pycharm连接服务器的docker容器内部环境</a>
                        <span class="text-muted">SoulMatter</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a>
                        <div>如题,想要配置服务器的python编译器环境,来查看容器内部环境安装的包的情况。首先,需要确定容器的状态,使用dockerps查看,只有ports那一栏有内容才证明容器暴露了端口出来。如果没有暴露,就需要将容器打包成镜像,然后将镜像再启动一个容器才可以。步骤如下:如何打包镜像:(里面包括了将镜像从A服务器远程传输到B服务器后使用的方法,如果是在本服务器自己使用,那么忽略远程传输的步骤)#创建一个基</div>
                    </li>
                    <li><a href="/article/1940508813979348992.htm"
                           title="【福利】简单记录免费的卡密系统" target="_blank">【福利】简单记录免费的卡密系统</a>
                        <span class="text-muted">小锋学长生活大爆炸</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E4%B9%8B%E6%97%85/1.htm">学习之旅</a><a class="tag" taget="_blank" href="/search/%E5%8D%A1%E5%AF%86/1.htm">卡密</a><a class="tag" taget="_blank" href="/search/%E5%8F%91%E5%8D%A1/1.htm">发卡</a><a class="tag" taget="_blank" href="/search/%E7%8B%AC%E8%A7%92%E5%85%BD/1.htm">独角兽</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E7%AD%BE/1.htm">免签</a>
                        <div>转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]目录环境搭建独角数卡——发卡用V免签——收款用网络验证——验证用独角数卡与V免签的对接说明体验网址环境搭建#宝塔wget-Oinstall.shhttps://download.bt.cn/install/install-ubuntu_6.0.sh&&sudobashinstall.shed8484bec#Dockersudoapti</div>
                    </li>
                    <li><a href="/article/1940501750276485120.htm"
                           title="安全左移(Shift Left Security):软件安全的演进之路" target="_blank">安全左移(Shift Left Security):软件安全的演进之路</a>
                        <span class="text-muted">秋说</span>
<a class="tag" taget="_blank" href="/search/Security/1.htm">Security</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%BB%BA%E8%AE%BE/1.htm">安全建设</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%AE%89%E5%85%A8/1.htm">软件安全</a>
                        <div>文章目录一、背景:传统安全的尴尬处境二、安全左移:让安全成为开发的“第一等公民”三、安全左移的关键实施阶段1.需求阶段:嵌入安全需求建模2.设计阶段:威胁建模与架构审计3.编码阶段:安全编码规范与静态分析4.构建与测试阶段:自动化安全检测5.发布阶段:容器与CI/CD安全审计6.运营阶段:安全监控与持续响应四、实现路径:从理念到落地的三步走Step1:安全理念转型Step2:工具链集成与自动化保障</div>
                    </li>
                    <li><a href="/article/1940500993816981504.htm"
                           title="Android Jetpack架构组件(四)之LiveData" target="_blank">Android Jetpack架构组件(四)之LiveData</a>
                        <span class="text-muted">xiangzhihong8</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%85%A5Android%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91/1.htm">深入Android应用开发</a>
                        <div>一、LiveData简介LiveData是Jetpack架构组件Lifecycle库的一部分,是一个可感知生命周期的可观察容器类(Observable)。与常规的可观察类不同,LiveData具有生命周期感知能力,这意味着它具有感知应用组件(如Activity、Fragment或Service)的生命周期的能力,并且LiveData仅更新处于活跃生命周期状态的应用组件观察者。因此,LiveData</div>
                    </li>
                    <li><a href="/article/1940499732950478848.htm"
                           title="Docker容器升级MySQL" target="_blank">Docker容器升级MySQL</a>
                        <span class="text-muted">Java王小怪</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>目录服务升级密码重置1、找到挂载配置文件2、重启服务3、容器交互4、修改密码5、还原配置文件前言:由于项目需要,我们使用docker-compose启动的MySQL服务,原先版本为5.7.3,在服务扫描过程中,发现此版本的MySQL存在漏洞,遂决定对MySQL版本进行升级。服务升级由于库中数据还存在不少,我们并没有把原先MySQL的容器进行删除重新搞个新的,只是升级版本可以做到无痛割接。由于我的M</div>
                    </li>
                    <li><a href="/article/1940498975270432768.htm"
                           title="Docker端口不受ufw防火墙限制解决方案" target="_blank">Docker端口不受ufw防火墙限制解决方案</a>
                        <span class="text-muted">lswzw</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>Docker端口不受ufw防火墙限制解决方案安装docker“iptables”:false,禁用docker管理iptables规则。default-address-pools限制docker使用的网络。(后面转发须用到)mkdir-p/etc/dockercat>/etc/docker/daemon.json<<EOF{"iptables":false,"log-driver":"json-f</div>
                    </li>
                    <li><a href="/article/1940491028935012352.htm"
                           title="VPS服务器上Windows容器网络IPv6双栈配置指南" target="_blank">VPS服务器上Windows容器网络IPv6双栈配置指南</a>
                        <span class="text-muted">cpsvps_net</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>在云计算技术快速发展的今天,Windows容器结合IPv6双栈网络配置已成为提升VPS服务器效能的关键技术。本文针对运维工程师的实际需求,深入解析如何在虚拟私有服务器环境中,通过Docker平台实现Windows容器的IPv6/IPv4双协议栈部署,涵盖网络适配器设置、Docker引擎配置、防火墙策略优化等核心环节,并特别关注VPS服务商对IPv6的特殊支持要求。VPS服务器上Windows容器网</div>
                    </li>
                    <li><a href="/article/1940484727668535296.htm"
                           title="uniapp+vue写小程序页面,实现一张图片默认放大后,可以在容器内上下左右拖动查看" target="_blank">uniapp+vue写小程序页面,实现一张图片默认放大后,可以在容器内上下左右拖动查看</a>
                        <span class="text-muted"></span>

                        <div>1.组件chargingimageViewerimport{ref,onMounted,computed}from'vue';constprops=defineProps({imageUrl:{type:String,required:true,},});//视图容器尺寸constVIEW_WIDTH=750;//微信小程序设计稿宽度constVIEW_HEIGHT=1800;//缩放限制cons</div>
                    </li>
                    <li><a href="/article/1940480818552041472.htm"
                           title="拦截器和过滤器的区别" target="_blank">拦截器和过滤器的区别</a>
                        <span class="text-muted">MaxBruce</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E4%B8%93%E6%A0%8F/1.htm">工作专栏</a><a class="tag" taget="_blank" href="/search/%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">拦截器</a><a class="tag" taget="_blank" href="/search/%E8%BF%87%E6%BB%A4%E5%99%A8/1.htm">过滤器</a>
                        <div>拦截器和过滤器的区别①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。⑥拦截器可以获取I</div>
                    </li>
                    <li><a href="/article/1940477914004910080.htm"
                           title="【Docker】 容器中Spring boot项目 Graphics2D 画图中文乱码解决方案" target="_blank">【Docker】 容器中Spring boot项目 Graphics2D 画图中文乱码解决方案</a>
                        <span class="text-muted">ladymorgana</span>
<a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%B8%B8%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93/1.htm">日常工作总结</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>@TOC一、容器中Springboot项目Graphics2D画图中文乱码解决方案在Docker容器中运行Java应用使用Graphics2D绘制中文时出现乱码,通常是因为容器缺少中文字体支持。以下是完整的解决方案:1.基础解决方案:安装中文字体方法一:基于Alpine镜像的解决方案FROMopenjdk:8-jdk-alpine#安装中文字体RUNapkadd--updatettf-dejavu</div>
                    </li>
                    <li><a href="/article/1940477915032514560.htm"
                           title="【docker】带字体的 OpenJDK 8 Docker 镜像解决方案" target="_blank">【docker】带字体的 OpenJDK 8 Docker 镜像解决方案</a>
                        <span class="text-muted">ladymorgana</span>
<a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%B8%B8%E5%B7%A5%E4%BD%9C%E6%80%BB%E7%BB%93/1.htm">日常工作总结</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>文章目录带字体的OpenJDK8Docker镜像解决方案1.使用官方带字体变体2.自定义构建带字体镜像基于Debian的带字体OpenJDK8镜像基于Alpine的轻量级带字体镜像3.使用第三方维护的带字体镜像4.验证字体是否正常工作5.企业级解决方案推荐方案带字体的OpenJDK8Docker镜像解决方案如果您需要使用带字体的OpenJDK8镜像(特别是为了支持中文显示),以下是几种解决方案:1</div>
                    </li>
                    <li><a href="/article/1940464280432340992.htm"
                           title="【Docker项目实战】使用Docker部署Caddy+vaultwarden密码管理工具(详细教程)" target="_blank">【Docker项目实战】使用Docker部署Caddy+vaultwarden密码管理工具(详细教程)</a>
                        <span class="text-muted">江湖有缘</span>
<a class="tag" taget="_blank" href="/search/Docker%E9%83%A8%E7%BD%B2%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E5%90%88%E9%9B%86/1.htm">Docker部署项目实战合集</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>【Docker项目实战】使用Docker部署vaultwarden密码管理工具前言一、vaultwarden介绍1.1vaultwarden简介1.2主要特点二、本次实践规划2.1本地环境规划2.2本次实践介绍三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查dockercompose版本四、拉取镜像五、部署vaultwarden服务5.1创建部署目录5.2编辑部署</div>
                    </li>
                    <li><a href="/article/1940462007643860992.htm"
                           title="Caddy非80443端口反向代理+FRP内网穿透-一个服务器安装了frps,占用了80、443端口,怎么继续使用80、443端口建站呢?" target="_blank">Caddy非80443端口反向代理+FRP内网穿透-一个服务器安装了frps,占用了80、443端口,怎么继续使用80、443端口建站呢?</a>
                        <span class="text-muted">木子欢儿</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>问题:一个服务器安装了frps,占用了80、443端口,怎么继续使用80、443端口建站呢?一个解决办法安装Caddy-Dockerdockerrun-d--namecaddy-p8080:80-p8443:443\-v/etc/caddy/Caddyfile:/etc/caddy/Caddyfile\-v/var/www:/usr/share/caddy\caddy配置FRPserverAddr</div>
                    </li>
                    <li><a href="/article/1940409944612335616.htm"
                           title="Kubernetes Pod常见的几种调度方式" target="_blank">Kubernetes Pod常见的几种调度方式</a>
                        <span class="text-muted">Seal^_^</span>
<a class="tag" taget="_blank" href="/search/%E3%80%90%E4%BA%91%E5%8E%9F%E7%94%9F%E3%80%91%E5%AE%B9%E5%99%A8%E5%8C%96%E4%B8%8E%E7%BC%96%E6%8E%92%E6%8A%80%E6%9C%AF/1.htm">【云原生】容器化与编排技术</a><a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/K8s/1.htm">K8s</a><a class="tag" taget="_blank" href="/search/Pod/1.htm">Pod</a><a class="tag" taget="_blank" href="/search/Pod%E7%9A%84%E5%87%A0%E7%A7%8D%E8%B0%83%E5%BA%A6%E6%96%B9%E5%BC%8F/1.htm">Pod的几种调度方式</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>KubernetesPod常见的几种调度方式1、Deployment或ReplicationController(RC)2、NodeSelector(定向调度)3、NodeAffinity(亲和性调度)4、Taints和Tolerations(污点和容忍)TheBegin点点关注,收藏不迷路1、Deployment或ReplicationController(RC)功能:自动部署容器应用的多份副本</div>
                    </li>
                    <li><a href="/article/1940402377358110720.htm"
                           title="Kubernetes Pod调度基础" target="_blank">Kubernetes Pod调度基础</a>
                        <span class="text-muted">别骂我h</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E7%AC%94%E8%AE%B0/1.htm">个人笔记</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>目录一、ReplicationController和ReplicaSet1.ReplicationControllerReplicationController的使用示例2.标签与标签选择器标签标签选择器标签与标签选择器举例3.ReplicaSet定义ReplicaSet实例二、无状态应用管理Deployment1.什么是无状态2.无状态服务特点3.无状态服务的应用场景4.创建Deployment</div>
                    </li>
                    <li><a href="/article/1940383206536704000.htm"
                           title="ASP.NET Core + Vue.js前后端分离黄金法则:从零到部署的深度实战" target="_blank">ASP.NET Core + Vue.js前后端分离黄金法则:从零到部署的深度实战</a>
                        <span class="text-muted">墨夶</span>
<a class="tag" taget="_blank" href="/search/C%23%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/1.htm">C#学习资料</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>——跨域、热更新、容器化部署一网打尽为什么选择前后端分离?在微服务与敏捷开发盛行的今天,前后端分离架构已成为企业级应用的标配。本文将通过12个实战代码示例、跨域问题终极解决方案和Docker部署全流程,手把手教你实现:零配置跨域通信Vue热重载+WebAPI实时调试JWT身份验证与权限控制生产环境优化与容器化部署一、环境准备与项目搭建1.1开发环境配置工具版本要求官网链接.NET8SDK8.0.1</div>
                    </li>
                    <li><a href="/article/1940364262228684800.htm"
                           title="C#.NET Autofac 详解" target="_blank">C#.NET Autofac 详解</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/c%23.net/1.htm">c#.net</a>
                        <div>简介Autofac是一个成熟的、功能丰富的.NET依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注入支持、基于约定的程序集扫描等特性。核心组件ContainerBuilder:用于注册服务的构建器IContainer:服务容器,负责解析依赖ILifetimeScope:生命周期作用域,管理对象生命周期M</div>
                    </li>
                    <li><a href="/article/1940357872714051584.htm"
                           title="spring注解整合" target="_blank">spring注解整合</a>
                        <span class="text-muted">多大的心灵伤害吖</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>使用注解的优势:1.采用纯java代码,不在需要配置繁杂的xml文件2.在配置中也可享受面向对象带来的好处3.类型安全对重构可以提供良好的支持4.减少复杂配置文件的同时亦能享受到springIoC容器提供的功能一、注解详解(配备了完善的释义)------(可采用ctrl+F来进行搜索哦~~~~)@SpringBootApplication:申明让springboot自动给程序进行必要的配置,这个配</div>
                    </li>
                    <li><a href="/article/1940346020235898880.htm"
                           title="Docker:快速搭建 RabbitMQ 集群的技术指南" target="_blank">Docker:快速搭建 RabbitMQ 集群的技术指南</a>
                        <span class="text-muted">拾荒的小海螺</span>
<a class="tag" taget="_blank" href="/search/DevOps/1.htm">DevOps</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>1、简述RabbitMQ是目前最流行的开源消息中间件之一,广泛应用于解耦、异步通信、削峰填谷等场景。本篇博客将带你通过Docker快速搭建RabbitMQ集群,并展示SpringBoot集成的实践案例,助你高效入门RabbitMQ分布式消息系统。样例代码:https://gitee.com/lhdxhl/springboot-example.git2、搭建2.1准备工作首先安装Docker和Doc</div>
                    </li>
                    <li><a href="/article/1940329365795565568.htm"
                           title="Java基础集合框架结构分类图形" target="_blank">Java基础集合框架结构分类图形</a>
                        <span class="text-muted">骑牛小道士</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>集合集合分类分类图Collection分类Collection集合子结构之List合集Collection集合子结构之Set合集Collection集合子结构之Queue合集Map分类集合就是一个放数据的容器,准确的说是放数据对象引用的容器集合分类分类图java中集合分类有两大根接口Collection和Map集合CollectionMapCollection分类Collection集合的架构粗略</div>
                    </li>
                    <li><a href="/article/1940326593159294976.htm"
                           title="Spring Boot + ONNX Runtime模型部署" target="_blank">Spring Boot + ONNX Runtime模型部署</a>
                        <span class="text-muted"></span>

                        <div>文章目录前言一、模型导出二、Java推理引擎选型三、SpringBoot实战3.1核心架构3.2分层架构详细实现1.Controller层-请求入口2.Service层-核心业务流程3.关键组件深度优化四、云原生部署:Docker+Kubernetes总结前言在AI浪潮席卷全球的今天,Java工程师如何守住后端主战场?模型部署正是Java工程师融入AI领域的方向。为什么Java工程师必须掌握模型部</div>
                    </li>
                    <li><a href="/article/1940324576747646976.htm"
                           title="Java基础——集合框架与类" target="_blank">Java基础——集合框架与类</a>
                        <span class="text-muted">风之彼端</span>
<a class="tag" taget="_blank" href="/search/Java%E5%AD%A6%E4%B9%A0/1.htm">Java学习</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>集合概述集合框架(java.util)的由来:容器类(集合类)可以存储多个数据,数组明明可以存储多个数据,为啥还要定义容器类?数组弊端:长度一但固定就不可变很多地方需要操作数组的(增删改查)都需要去编写对应的方法(代码重复了—>封装)每个人定义各自的方法,可能存在别人找不到这种情况,实现也容易存在bug什么是集合框架:容器类确实很好用,集合框架框架是为了提供一些规范和标准,任何实现类都需要包含对外</div>
                    </li>
                    <li><a href="/article/1940300376695697408.htm"
                           title="多容器应用与编排——AI教你学Docker" target="_blank">多容器应用与编排——AI教你学Docker</a>
                        <span class="text-muted">LuckyLay</span>
<a class="tag" taget="_blank" href="/search/AI%E6%95%99%E4%BD%A0%E5%AD%A6Docker/1.htm">AI教你学Docker</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>2.2多容器应用与编排现代应用通常由多个服务(如Web、数据库、缓存等)组成,每个服务运行在独立的容器里。如何高效管理、协调、扩展、升级这些多容器应用,成为容器化实践的核心。容器编排工具(如DockerCompose、Swarm、Kubernetes)正是为此而生。一、Compose:本地/开发环境多容器编排1.概述DockerCompose是用于定义和运行多容器Docker应用的工具。通过doc</div>
                    </li>
                    <li><a href="/article/1940297726411468800.htm"
                           title="Docker进阶命令与参数——AI教你学Docker" target="_blank">Docker进阶命令与参数——AI教你学Docker</a>
                        <span class="text-muted">LuckyLay</span>
<a class="tag" taget="_blank" href="/search/AI%E6%95%99%E4%BD%A0%E5%AD%A6Docker/1.htm">AI教你学Docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>2.1进阶命令与参数Docker在日常运维和开发中,除了常用的run、ps、logs等基础命令,还提供了一些功能强大、实用性很高的进阶命令。这些命令可用于容器信息洞察、变更管理、文件操作与资源动态调整等场景。一、dockerinspect作用深入查看容器、镜像、网络、卷等对象的详细元数据(JSON格式)。包含环境变量、挂载点、网络配置、进程信息、资源限制等丰富信息。用法dockerinspect常</div>
                    </li>
                                <li><a href="/article/116.htm"
                                       title="ViewController添加button按钮解析。(翻译)" target="_blank">ViewController添加button按钮解析。(翻译)</a>
                                    <span class="text-muted">张亚雄</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div><div class="it610-blog-content-contain" style="font-size: 14px"></div>//  ViewController.m 
//  Reservation software 
// 
//  Created by 张亚雄 on 15/6/2. 
</div>
                                </li>
                                <li><a href="/article/243.htm"
                                       title="mongoDB 简单的增删改查" target="_blank">mongoDB 简单的增删改查</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>   在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作 
      在mongo中对于不存在的表当你用db.表名 他会自动统计 
下边用到的user是表明,db代表的是数据库 
 
      添加(insert): 
</div>
                                </li>
                                <li><a href="/article/370.htm"
                                       title="log4j配置" target="_blank">log4j配置</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a>
                                    <div>1) 新建java项目 
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。 
3) 新建一个类com.hand.Log4jTest 
 

package com.hand;

import org.apache.log4j.Logger;


public class </div>
                                </li>
                                <li><a href="/article/497.htm"
                                       title="多点触摸(图片缩放为例)" target="_blank">多点触摸(图片缩放为例)</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%82%B9%E8%A7%A6%E6%91%B8/1.htm">多点触摸</a>
                                    <div>多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下 
 


import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener</div>
                                </li>
                                <li><a href="/article/624.htm"
                                       title="有关浏览器窗口宽度高度几个值的解析" target="_blank">有关浏览器窗口宽度高度几个值的解析</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                                    <div>1 元素的 offsetWidth 包括border padding  content  整体的宽度。 
clientWidth  只包括内容区 padding 不包括border。 
clientLeft =  offsetWidth -clientWidth  即这个元素border的值 
offsetLeft  若无已定位的包裹元素</div>
                                </li>
                                <li><a href="/article/751.htm"
                                       title="数据库产品巡礼:IBM DB2概览" target="_blank">数据库产品巡礼:IBM DB2概览</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/db2/1.htm">db2</a>
                                    <div>IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统 
DB2可应用于以下三个主要的平台: 
  
 
 工作站,DB2可在Linus、Unix、Windo</div>
                                </li>
                                <li><a href="/article/878.htm"
                                       title="java笔记5" target="_blank">java笔记5</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>控制执行流程: 
1,true和false 
   利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。 
2,if-els</div>
                                </li>
                                <li><a href="/article/1005.htm"
                                       title="Web开发常用手册汇总" target="_blank">Web开发常用手册汇总</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
 正如我们学习一门技术,过程大概是这个样子:
 ①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
 ②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的</div>
                                </li>
                                <li><a href="/article/1132.htm"
                                       title="今天帮助人解决的一个sql问题" target="_blank">今天帮助人解决的一个sql问题</a>
                                    <span class="text-muted">asialee</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>            今天有个人问了一个问题,如下: 
type     AD      value           
A  </div>
                                </li>
                                <li><a href="/article/1259.htm"
                                       title="意图对象传递数据" target="_blank">意图对象传递数据</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E6%84%8F%E5%9B%BEIntent/1.htm">意图Intent</a><a class="tag" taget="_blank" href="/search/Bundle%E5%AF%B9%E8%B1%A1%E6%95%B0%E6%8D%AE%E7%9A%84%E4%BC%A0%E9%80%92/1.htm">Bundle对象数据的传递</a>
                                    <div>学习意图将数据传递给目标活动; 初学者需要好好研究的 
   
   1,将下面的代码添加到main.xml中 
   
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/</div>
                                </li>
                                <li><a href="/article/1386.htm"
                                       title="oracle查询锁表解锁语句" target="_blank">oracle查询锁表解锁语句</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/object/1.htm">object</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/kill/1.htm">kill</a>
                                    <div>一.查询锁定的表 
如下语句,都可以查询锁定的表 
语句一: 
select a.sid,
       a.serial#,
       p.spid,
       c.object_name,
       b.session_id,
       b.oracle_username,
       b.os_user_name
  from v$process p, v$s</div>
                                </li>
                                <li><a href="/article/1513.htm"
                                       title="mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]" target="_blank">mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/osx/1.htm">osx</a>
                                    <div>场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。 
 
环境:mac osx 10.10、mysql 5.6 的二进制文件 
 
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录] 
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir; 
下载地址:http://dev.mysql.com/downl</div>
                                </li>
                                <li><a href="/article/1640.htm"
                                       title="分布式系统与框架" target="_blank">分布式系统与框架</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                                    <div>RPC框架 Dubbo 
什么是Dubbo 
  
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:    远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。    集群容错: 提供基于接</div>
                                </li>
                                <li><a href="/article/1767.htm"
                                       title="那些令人蛋痛的专业术语" target="_blank">那些令人蛋痛的专业术语</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/SSO/1.htm">SSO</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a>
                                    <div> 
 spring 
 
【控制反转(IOC)/依赖注入(DI)】: 
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。 
 
 Web 
 
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户</div>
                                </li>
                                <li><a href="/article/1894.htm"
                                       title="《给大忙人看的java8》摘抄" target="_blank">《给大忙人看的java8》摘抄</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/java8/1.htm">java8</a>
                                    <div>函数式接口:只包含一个抽象方法的接口 
lambda表达式:是一段可以传递的代码 
  
  
  
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。 
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。 
  
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使</div>
                                </li>
                                <li><a href="/article/2021.htm"
                                       title="编程之美-计算字符串的相似度" target="_blank">编程之美-计算字符串的相似度</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

public class StringDistance {

	/**
	 * 编程之美 计算字符串的相似度
	 * 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
	 * 1.修改一个字符(如把“a”替换为“b”);
	 * 2.增加一个字符(如把“abdd”变为“aebdd”);
	 * 3.删除一个字符(如把“travelling”变为“trav</div>
                                </li>
                                <li><a href="/article/2148.htm"
                                       title="上传、下载压缩图片" target="_blank">上传、下载压缩图片</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%8B%E8%BD%BD/1.htm">下载</a>
                                    <div>/**
	 * 
	 * @param uploadImage --本地路径(tomacat路径)
	 * @param serverDir   --服务器路径
	 * @param imageType   --文件或图片类型
	 * 此方法可以上传文件或图片.txt,.jpg,.gif等
	 */
	public void upload(String uploadImage,Str</div>
                                </li>
                                <li><a href="/article/2275.htm"
                                       title="bellman-ford(贝尔曼-福特)算法" target="_blank">bellman-ford(贝尔曼-福特)算法</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a>
                                    <div>Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。 
 
与迪科</div>
                                </li>
                                <li><a href="/article/2402.htm"
                                       title="oracle ASM中ASM_POWER_LIMIT参数" target="_blank">oracle ASM中ASM_POWER_LIMIT参数</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/ASM/1.htm">ASM</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/ASM_POWER_LIMIT/1.htm">ASM_POWER_LIMIT</a><a class="tag" taget="_blank" href="/search/%E7%A3%81%E7%9B%98%E5%B9%B3%E8%A1%A1/1.htm">磁盘平衡</a>
                                    <div>ASM_POWER_LIMIT 
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER  SESSION或ALTER  SYSTEM命令进行修改。示例如下: 
 
SQL>ALTER  SESSION  SET   Asm_power_limit=2; 
</div>
                                </li>
                                <li><a href="/article/2529.htm"
                                       title="高级排序:快速排序" target="_blank">高级排序:快速排序</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/1.htm">快速排序</a>
                                    <div>
    public void quickSort(int[] array){
        this.quickSort(array, 0, array.length - 1);
    }
    
    public void quickSort(int[] array,int left,int right){
        if(right - left <= 0</div>
                                </li>
                                <li><a href="/article/2656.htm"
                                       title="C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节" target="_blank">C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a>
                                    <div># include <stdio.h>

int main(void)
{
	/*
	1、一个变量的地址只用第一个字节表示
	2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
	3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
		但是这些字节比较多,所以编号就比较大,
		</div>
                                </li>
                                <li><a href="/article/2783.htm"
                                       title="phpize使用方法" target="_blank">phpize使用方法</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下 
安装(fastcgi模式)的时候,常常有这样一句命令: 
代码如下: 
/usr/local/webserver/php/bin/phpize 
  
一、phpize是干嘛的? 
phpize是什么? 
phpize是用来扩展php扩展模块的,通过phpi</div>
                                </li>
                                <li><a href="/article/2910.htm"
                                       title="Java虚拟机学习 - 对象引用强度" target="_blank">Java虚拟机学习 - 对象引用强度</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a>
                                    <div> 
 本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处! 
 无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。 
 引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea</div>
                                </li>
                                <li><a href="/article/3037.htm"
                                       title=".NET Framework 3.5 Service Pack 1(完整软件包)下载地址" target="_blank">.NET Framework 3.5 Service Pack 1(完整软件包)下载地址</a>
                                    <span class="text-muted">happyqing</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E4%B8%8B%E8%BD%BD/1.htm">下载</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                    <div>  
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)  
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150 
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo</div>
                                </li>
                                <li><a href="/article/3164.htm"
                                       title="JAVA定时器的使用" target="_blank">JAVA定时器的使用</a>
                                    <span class="text-muted">jingjing0907</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 
privatejava.util.Timer timer; 
timer = newTimer(true); 
timer.schedule( 
newjava.util.TimerTask() { public void run() 
</div>
                                </li>
                                <li><a href="/article/3291.htm"
                                       title="Webbench" target="_blank">Webbench</a>
                                    <span class="text-muted">流浪鱼</span>
<a class="tag" taget="_blank" href="/search/webbench/1.htm">webbench</a>
                                    <div>首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html 
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。 
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相</div>
                                </li>
                                <li><a href="/article/3418.htm"
                                       title="第11章 动画效果(中)" target="_blank">第11章 动画效果(中)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3545.htm"
                                       title="windows下制作bat启动脚本." target="_blank">windows下制作bat启动脚本.</a>
                                    <span class="text-muted">sanyecao2314</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a><a class="tag" taget="_blank" href="/search/bat/1.htm">bat</a>
                                    <div>java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart </div>
                                </li>
                                <li><a href="/article/3672.htm"
                                       title="Java进行RSA加解密的例子" target="_blank">Java进行RSA加解密的例子</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。     数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。     对称加密指的是发送者和接收者共用同一个密钥的加解密方法。     非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的</div>
                                </li>
                                <li><a href="/article/3799.htm"
                                       title="Android_ViewStub" target="_blank">Android_ViewStub</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/ViewStub/1.htm">ViewStub</a>
                                    <div>public final class ViewStub extends View 
 
 
 java.lang.Object 
   
   android.view.View 
     
     android.view.ViewStub 
      
    
 
 类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>