3.2 控制器之Deployment

文章目录

  • 1、Deployment的创建
  • 2、deployment管理应用升级
  • 3、deployment管理应用回滚
  • 4、滚动失败,deployment自动回滚

Deployment是一种高阶控制器资源,在部署时,Deployment创建并管理ReplicaSet,由ReplicaSet创建管理pod。目的方便应用升级时,Deployment便于通过ReplicaSet管理一组pod进行应用升级。

1、Deployment的创建

3.2 控制器之Deployment_第1张图片
与pod、replicaset一样,deployment在k8s中也是一种资源,可以通过yaml的声明方式声明一套deployment的定义,然后通过kubectl create创建出deployment。下面以demo_deployment.yaml为例

apiVersion: apps/v1beta1  		#版本
kind: Deployment   				#资源类型
metadata: 						#deployment的元数据
  name: mydeployment  			#Deployment的资源名字
spec:   						#Deployment描述信息
  minReadySeconds: 10   		#pod创建延迟至少10s然后才ready状态
  replicas: 3  					#创建pod的副本数
  template:    					#pod的模板信息
    metadata:   				#pod的元数据
      labels:  					#定义pod标签
        app: mynginx-pod   		#pod的标签
    spec:     					#pod中容器描述信息
      containers:  				#定义容器
      - name: mynginx  			#容器的名字
        image: mynginx:v0.2   	#容器中镜像
        ports:  				#定义容器暴露的端口
        - containerPort: 80

根据yaml创建deployment

[root@k8s-master01 deployment_work]# ls
demo_deployment.yaml
#创建deployment
[root@k8s-master01 deployment_work]# kubectl create -f demo_deployment.yaml --record
deployment.apps/mydeployment created

#查询deployment
[root@k8s-master01 deployment_work]# kubectl get deployment
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
mydeployment   3/3     3            3           10s

#查询replicaset
[root@k8s-master01 deployment_work]# kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
mydeployment-7fd7865495   3         3         3       17s

#查询pod
[root@k8s-master01 deployment_work]# kubectl get pod
NAME                            READY   STATUS    RESTARTS   AGE
mydeployment-7fd7865495-57jnx   1/1     Running   0          29s
mydeployment-7fd7865495-8vfdl   1/1     Running   0          29s
mydeployment-7fd7865495-c7j7c   1/1     Running   0          29s

由此可见,deployment显示创建了一个名字为mydeployment-7fd7865495的replicaset,由replicaset创建了3个pod。–record能显示变更历史原因,方便查看每个版本变更的原因。

2、deployment管理应用升级

3.2 控制器之Deployment_第2张图片
当应用需要升级时,只需要修改deployment中的pod模板就可以控制pod中应用从旧版本升级到新版本中。deployment升级时,通过新建一个ReplicaSet,然后通过ReplicaSet重建新版本应用的pod,然后删除旧版本的pod,但是管理旧版本pod的ReplicaSet保留着,以防后续回滚用 deployment在升级pod应用过程 中采用两种升级策略:

  • Recreate : 删除旧版本的pod后才会创建新版本的pod,会导致应用出现短暂的停机状态,如果应用不支持多版本,可以选择该策略。
  • RollingUpdate : 删除旧版本的pod时,同时创建新版本的pod,应用平滑的升级,使应用在升级过程中也保持可用,但需要支持应用多版本,否则会导致数据错乱。Deployment的默认升级策略。
    下面通过示例演示滚动升级,首先通过deployment部署mynginx:v0.2版本的应用,然后滚动升级成mynginx:v0.3版本,首先查看v0.2版本应用
#查看部署的pod
[root@k8s-master01 deployment_work]# kubectl get pod -o wide
NAME                            READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment-6c5cf4c646-8knrf   1/1     Running   0          4m49s   10.244.2.75   k8s-node02              
mydeployment-6c5cf4c646-jp84k   1/1     Running   0          4m49s   10.244.1.73   k8s-node01              
mydeployment-6c5cf4c646-mwt2d   1/1     Running   0          4m49s   10.244.2.76   k8s-node02              

#访问pod中的应用,输出当前版本为2
[root@k8s-master01 deployment_work]# curl 10.244.2.75
hello lzj, this is version 2

下面升级镜像

kubectl set image deployment mydeployment mynginx=mynginx:v0.3

监控pod滚动更新状态如下:

[root@k8s-master01 deployment_work]# kubectl get pod -w
NAME                            READY   STATUS    RESTARTS   AGE
mydeployment-6c5cf4c646-8knrf   1/1     Running   0          18m
mydeployment-6c5cf4c646-jp84k   1/1     Running   0          18m
mydeployment-6c5cf4c646-mwt2d   1/1     Running   0          18m
mydeployment-797fcb456f-6x9xm   1/1     Running   0          16s
mydeployment-6c5cf4c646-8knrf   1/1     Terminating   0          18m
mydeployment-797fcb456f-dd26l   0/1     Pending       0          0s
mydeployment-797fcb456f-dd26l   0/1     Pending       0          0s
mydeployment-797fcb456f-dd26l   0/1     ContainerCreating   0          0s
mydeployment-6c5cf4c646-8knrf   0/1     Terminating         0          18m
mydeployment-797fcb456f-dd26l   1/1     Running             0          1s
mydeployment-6c5cf4c646-8knrf   0/1     Terminating         0          18m
mydeployment-6c5cf4c646-8knrf   0/1     Terminating         0          18m
mydeployment-6c5cf4c646-mwt2d   1/1     Terminating         0          18m
mydeployment-797fcb456f-kl2m4   0/1     Pending             0          0s
mydeployment-797fcb456f-kl2m4   0/1     Pending             0          0s
mydeployment-797fcb456f-kl2m4   0/1     ContainerCreating   0          0s
mydeployment-6c5cf4c646-mwt2d   0/1     Terminating         0          18m
mydeployment-797fcb456f-kl2m4   1/1     Running             0          2s
mydeployment-6c5cf4c646-mwt2d   0/1     Terminating         0          18m
mydeployment-6c5cf4c646-mwt2d   0/1     Terminating         0          18m
mydeployment-6c5cf4c646-jp84k   1/1     Terminating         0          18m
mydeployment-6c5cf4c646-jp84k   0/1     Terminating         0          18m
mydeployment-6c5cf4c646-jp84k   0/1     Terminating         0          19m
mydeployment-6c5cf4c646-jp84k   0/1     Terminating         0          19m

[root@k8s-master01 deployment_work]# kubectl get pod -o wide
NAME                            READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment-797fcb456f-6x9xm   1/1     Running   0          5m14s   10.244.1.74   k8s-node01              
mydeployment-797fcb456f-dd26l   1/1     Running   0          4m52s   10.244.2.77   k8s-node02              
mydeployment-797fcb456f-kl2m4   1/1     Running   0          4m31s   10.244.1.75   k8s-node01              

#请求pod,发现pod返回内容当前版本为3
[root@k8s-master01 deployment_work]# curl 10.244.1.74
hello lzj, this is version 3

发现pod是先创建一个v0.3版本的pod,然后停止一个v0.2版本的pod,直至滚动结束。从更新的状态中可以看出,deployment滚动更新时,是通过创建了另外一个ReplicaSet,然后通过ReplicaSet创建了3个v0.3版本的pod。最后把原来的ReplicaSet下的3个v0.2版本的pod删除掉。

注意:如果修改了deployment中的pod模板,会立即触发滚动更新,如果没修改pod模板,只是修改了deployment的一些属性,不会触发滚动更新的。

3、deployment管理应用回滚

当deployment部署应用升级后,如果发现当前版本有bug,需要回滚到上一版本,则可以通过deployment的rollout undo进行回滚。回滚的原理就是根据旧版本的ReplicaSet重新建旧版本的Pod应用,然后删除新版本的pod。如下所示,当前应用镜像版本为mynginx:v0.3,需要回滚到上一应用版本

[root@k8s-master01 dockerfile_work]# kubectl get pod -o wide
NAME                            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment-797fcb456f-2xj82   1/1     Running   0          82s   10.244.1.80   k8s-node01              
mydeployment-797fcb456f-8kczn   1/1     Running   0          60s   10.244.2.81   k8s-node02              
mydeployment-797fcb456f-c7z25   1/1     Running   0          39s   10.244.1.81   k8s-node01              

#访问pod中的当前应用,输出内容为v0.3版本的应用
[root@k8s-master01 dockerfile_work]# curl 10.244.1.80
hello lzj, this is version 3

#回滚到上一版本应用
[root@k8s-master01 dockerfile_work]# kubectl rollout undo deployment mydeployment
deployment.extensions/mydeployment rolled back

[root@k8s-master01 dockerfile_work]# kubectl get pod -o wide
NAME                            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment-6c5cf4c646-4nbfv   1/1     Running   0          77s   10.244.1.82   k8s-node01              
mydeployment-6c5cf4c646-5nj5j   1/1     Running   0          55s   10.244.2.83   k8s-node02              
mydeployment-6c5cf4c646-88sjf   1/1     Running   0          99s   10.244.2.82   k8s-node02              

#回滚结束后,重新访问pod中的应用,发现版本已经回退到v0.2版本
[root@k8s-master01 dockerfile_work]# curl 10.244.1.82
hello lzj, this is version 2

注意:执行上述操作后,应用已经回滚到了v0.2版本,如果按上述步骤再次执行就又会回到v0.3版本,可以通过指定回滚到的版本进行回滚。

#查询deployment的滚动历史,创建deployment时添加了--record,所以下面CHANGE-CAUSE才会有变更步骤的记录原因
[root@k8s-master01 dockerfile_work]# kubectl rollout history deployment mydeployment
deployment.extensions/mydeployment 
REVISION  CHANGE-CAUSE
1         kubectl create --filename=demo_deployment.yaml --record=true
3         kubectl create --filename=demo_deployment.yaml --record=true
4         kubectl create --filename=demo_deployment.yaml --record=true

#其中REVISION代表每次滚动时的版本编号,回滚时可以指定版本编号回滚到指定的版本。下面回滚到最初的应用版本。
[root@k8s-master01 dockerfile_work]# kubectl rollout undo deployment mydeployment --to-revision=1
deployment.extensions/mydeployment rolled back

[root@k8s-master01 dockerfile_work]# kubectl get pod -o wide
NAME                            READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment-7fd7865495-7kdjl   1/1     Running   0          2m37s   10.244.1.83   k8s-node01              
mydeployment-7fd7865495-m77pm   1/1     Running   0          2m15s   10.244.2.84   k8s-node02              
mydeployment-7fd7865495-tr2mm   1/1     Running   0          114s    10.244.1.84   k8s-node01              

#回滚到最初的版本后,访问pod中的应用,发现输出了最初的NGINX内容
[root@k8s-master01 dockerfile_work]# curl 10.244.1.83
<!DOCTYPE html>


Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>title>
<style>
    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> 
  <h1>4、滚动失败,deployment自动回滚</h1> 
  <p>在应用版本升级时,如果版本有bug,应控制deployment自动回滚到前一个版本。实现该功能需借助minReadySeconds和探针实现。<br> <strong>minReadySeconds</strong>用来指定没有任何容器crash的Pod并被认为是可用状态的最小秒数。默认是0(Pod在ready后就会被认为是可用状态)。如果minReadySeconds设置10s,可以使用minReadySeconds可以让deployment在第一个pod就绪之后继续等待10s,如pod没有问题,继续升级下一个pod继续等待10s,如此类推。一般设置minReadySeconds时间等于应用启动后可以正常接受流量的长度。在pod中设置就绪探针,如果在minReadySeconds时间内,探针失败了,deployment进行自动回滚。下面通过demo_deployment.yaml实例演示</p> 
  <pre><code class="prism language-powershell">apiVersion: apps<span class="token operator">/</span>v1beta1
kind: Deployment
metadata:
  name: mydeployment
spec:
  minReadySeconds: 10
  replicas: 3
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      name: myreplicaset
      labels:
        app: myreplicaset
    spec:
      containers:
      <span class="token operator">-</span> name: mynginx
        image: mynginx:v0<span class="token punctuation">.</span>3
        ports:
        <span class="token operator">-</span> containerPort: 80
</code></pre> 
  <p>其中可以通过定义deployment的属性maxSurge与maxUnavailable控制滚动升级速率。<br> <strong>maxSurge</strong>:决定了deployment配置的副本数之外,最多允许超出的pod实例数量,比如副本数设置3,maxSurge设置的1,在deployment的滚动升级之间,最多允许存在4个 pod实例数量;<br> maxUnavailable:决定了deployment滚动升级之间,相对于期望副本数量最多有多少个pod实例数量处于不可用状态。比如副本设置为3,maxUnavailable设置为1,滚动升级时最多有2个pod实例处于可用状态。</p> 
  <pre><code class="prism language-powershell"><span class="token comment">#创建mydeployment</span>
<span class="token namespace">[root@k8s-master01 deployment_work]</span><span class="token comment"># kubectl apply -f demo_deployment.yaml --record</span>
deployment<span class="token punctuation">.</span>apps<span class="token operator">/</span>mydeployment created

<span class="token comment">#查询创建出来的pod</span>
<span class="token namespace">[root@k8s-master01 dockerfile_work]</span><span class="token comment"># kubectl get pod -o wide</span>
NAME                            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment<span class="token operator">-</span>768bc94c96<span class="token operator">-</span>gtf9w   1<span class="token operator">/</span>1     Running   0          15s   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>1<span class="token punctuation">.</span>92   k8s<span class="token operator">-</span>node01   <none>           <none>
mydeployment<span class="token operator">-</span>768bc94c96<span class="token operator">-</span>mphqp   1<span class="token operator">/</span>1     Running   0          15s   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>2<span class="token punctuation">.</span>93   k8s<span class="token operator">-</span>node02   <none>           <none>
mydeployment<span class="token operator">-</span>768bc94c96<span class="token operator">-</span>s8npx   1<span class="token operator">/</span>1     Running   0          15s   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>1<span class="token punctuation">.</span>93   k8s<span class="token operator">-</span>node01   <none>           <none>

<span class="token comment">#访问pod中应用,版本为2</span>
<span class="token namespace">[root@k8s-master01 dockerfile_work]</span><span class="token comment"># curl 10.244.1.92</span>
hello lzj<span class="token punctuation">,</span> this is version 2
</code></pre> 
  <p>下面修改yaml中镜像并为pod添加探针</p> 
  <pre><code class="prism language-powershell">apiVersion: apps<span class="token operator">/</span>v1beta1
kind: Deployment
metadata:
  name: mydeployment
spec:
  minReadySeconds: 10
  replicas: 3
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      name: myreplicaset
      labels:
        app: myreplicaset
    spec:
      containers:
      <span class="token operator">-</span> name: mynginx
        image: mynginx:v0<span class="token punctuation">.</span>3   	<span class="token comment">#镜像修改为v0.3版本</span>
        readinessProbe:  		<span class="token comment">#增加就绪探针</span>
          periodSeconds: 1
          httpGet:
            path: <span class="token operator">/</span>test<span class="token punctuation">.</span>html
            port: 8080
        ports:
        <span class="token operator">-</span> containerPort: 80
</code></pre> 
  <p>容器中暴漏的是80端口,而探针探测的时8080端口,探针必定时失败的,下面执行deployment的滚动升级</p> 
  <pre><code class="prism language-powershell"><span class="token comment">#滚动升级mydeployment</span>
<span class="token namespace">[root@k8s-master01 deployment_work]</span><span class="token comment"># kubectl apply -f demo_deployment.yaml --record</span>
deployment<span class="token punctuation">.</span>apps<span class="token operator">/</span>mydeployment configured

<span class="token comment">#查看升级后的pod,发现滚动失败,创建第一个pod时,状态为就绪,因此deployment自动回滚,回到v0.2版本</span>
<span class="token namespace">[root@k8s-master01 dockerfile_work]</span><span class="token comment"># kubectl get pod -o wide</span>
NAME                            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
mydeployment<span class="token operator">-</span>5bcf884b6d<span class="token operator">-</span>4ldjx   0<span class="token operator">/</span>1     Running   0          11m   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>2<span class="token punctuation">.</span>94   k8s<span class="token operator">-</span>node02   <none>           <none>
mydeployment<span class="token operator">-</span>768bc94c96<span class="token operator">-</span>gtf9w   1<span class="token operator">/</span>1     Running   0          13m   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>1<span class="token punctuation">.</span>92   k8s<span class="token operator">-</span>node01   <none>           <none>
mydeployment<span class="token operator">-</span>768bc94c96<span class="token operator">-</span>mphqp   1<span class="token operator">/</span>1     Running   0          13m   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>2<span class="token punctuation">.</span>93   k8s<span class="token operator">-</span>node02   <none>           <none>
mydeployment<span class="token operator">-</span>768bc94c96<span class="token operator">-</span>s8npx   1<span class="token operator">/</span>1     Running   0          13m   10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>1<span class="token punctuation">.</span>93   k8s<span class="token operator">-</span>node01   <none>           <none>

<span class="token comment">#访问pod中应用,发现应用没有升级到v0.3版本,依然是v0.2版本</span>
<span class="token namespace">[root@k8s-master01 dockerfile_work]</span><span class="token comment"># curl 10.244.1.92</span>
hello lzj<span class="token punctuation">,</span> this is version 2
</code></pre> 
  <hr> 
  <p><strong>注意</strong></p> 
  <p><strong>1. kubectl create 与 kubectl apply区别</strong><br> kubectl create只能执行一次,不能重复执行;<br> kubectl apply可以重复执行,是增量的执行,yaml中增加了什么东西,apply执行时只会创建增加的资源。</p> 
  <p><strong>2. deployment相关操作命令</strong></p> 
  <pre><code class="prism language-powershell">kubectl rollout status deployment mydeployment <span class="token comment">#查看deployment部署状态</span>
kubectl <span class="token function">set</span> image deployment mydeployment mynginx=mynginx:v0<span class="token punctuation">.</span>2 <span class="token comment">#版本升级为v0.2</span>
kubectl rollout undo deployment mydeployment <span class="token comment">#回滚到上一级</span>
kubectl rollout undo deployment mydeployment  <span class="token operator">--</span>to<span class="token operator">-</span>revision=2 <span class="token comment">#回滚到指定的步骤</span>
kubectl rollout pause deployment mydeployment <span class="token comment">#暂停升级,可以多次修改deployment后再恢复执行</span>
kubectl rollout resume deployment mydeployment <span class="token comment">#恢复升级</span>
</code></pre> 
  <p><em>参考《kubenetes in Action》</em></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1280664209096458240"></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">你可能感兴趣的:(k8s,deployment,滚动升级,minReadySeconds)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1946501868628799488.htm"
                           title="MDB 4.3 协议文档详细介绍" target="_blank">MDB 4.3 协议文档详细介绍</a>
                        <span class="text-muted"></span>

                        <div>MDB4.3协议文档详细介绍【下载地址】MDB4.3协议文档详细介绍MDB4.3协议是2019年发布的多点总线通信协议,专为售货机与纸币器、硬币器、刷卡器等设备设计。该版本新增了远程售货机功能,支持无现金支付和移动应用操作,极大提升了用户体验。此外,协议还优化了触摸屏处理,避免无效操作,并引入了购物车和优惠券功能,丰富了促销方式。MDB4.3通过技术升级,提升了售货机的操作灵活性和系统稳定性,为自</div>
                    </li>
                    <li><a href="/article/1946489641125343232.htm"
                           title="三年打磨,一次飞跃!KubeSphere 企业版 4.2.0 引爆云原生变革" target="_blank">三年打磨,一次飞跃!KubeSphere 企业版 4.2.0 引爆云原生变革</a>
                        <span class="text-muted"></span>

                        <div>历经三年匠心打造,KubeSphere企业版4.2.0正式发布!今天,我们激动地宣布KubeSphere企业版4.2.0正式发布!这是一个承载着KubeSphere团队近三年心血的重磅版本,标志着KubeSphere在云原生领域的又一次跨越式发展。四大核心升级,全面重塑云原生体验1.全新UI设计,打造极致用户体验五大设计改动,让容器管理更高效KubeSphere企业版4.2.0带来全新的UI设计理</div>
                    </li>
                    <li><a href="/article/1946488003207688192.htm"
                           title="Kubernetes K8S之资源控制器RC、RS、Deployment详解" target="_blank">Kubernetes K8S之资源控制器RC、RS、Deployment详解</a>
                        <span class="text-muted">LightZhang666</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/ci%2Fcd/1.htm">ci/cd</a><a class="tag" taget="_blank" href="/search/devops/1.htm">devops</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a><a class="tag" taget="_blank" href="/search/devops/1.htm">devops</a><a class="tag" taget="_blank" href="/search/ci%2Fcd/1.htm">ci/cd</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>Kubernetes的资源控制器ReplicationController(RC)、ReplicaSet(RS)、Deployment(Deploy)详解与示例主机配置规划服务器名称(hostname)系统版本配置内网IP外网IP(模拟)k8s-masterCentOS7.72C/4G/20G172.16.1.11010.0.0.110k8s-node01CentOS7.72C/4G/20G172</div>
                    </li>
                    <li><a href="/article/1946476658915602432.htm"
                           title="容器化技术:Kubernetes(k8s)、Pod、Docker容器" target="_blank">容器化技术:Kubernetes(k8s)、Pod、Docker容器</a>
                        <span class="text-muted">人工干智能</span>
<a class="tag" taget="_blank" href="/search/Docker%E7%9A%84%E9%AB%98%E7%BA%A7%E7%9F%A5%E8%AF%86/1.htm">Docker的高级知识</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</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>三个相关的容器化技术Kubernetes(k8s)、Pod、Docker容器在容器化技术领域各自扮演着不同的角色,它们之间既存在区别又相互联系。Kubernetes(k8s)定义:Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。功能:提供了强大的工具和功能,如服务发现、负载均衡、自动伸缩、滚动更新等,帮助用户更高效地管理复杂的容器环境。架构:基于控制论和反馈</div>
                    </li>
                    <li><a href="/article/1946468883300937728.htm"
                           title="认知革命" target="_blank">认知革命</a>
                        <span class="text-muted">牧羊少年的时间之旅</span>

                        <div>看完人类简史后产生了一个想法,人类经过几万年的演化从采集时代,农业社会,再到工业革命和最近的科技革命,每一次的演变升级都是对传统认知的一次革新。但是我们现在的科技发展是如此的迅速,但是认知的进步却非常缓慢。克隆人,基因设计,人工智能,生化科技,量子计算等很多领域都是传统文化所无法理解和接受的,但是这些却依然有条不紊在进行中。所以人类目前急需一次认知的革命才能追上科技的脚步,不然一定会造成认知和现实</div>
                    </li>
                    <li><a href="/article/1946465062524874752.htm"
                           title="飞算JavaAI:Java开发者的智能革命,从代码生成到架构重塑" target="_blank">飞算JavaAI:Java开发者的智能革命,从代码生成到架构重塑</a>
                        <span class="text-muted"></span>

                        <div>目录一、Java开发困局:效率与质量的双重挑战二、技术架构解析:三层智能引擎驱动开发革命1.智能语义理解层2.代码智能生成层3.运行时智能优化层三、核心功能矩阵:从需求到部署的全流程覆盖1.智能需求分析2.自动化软件设计3.工程化代码输出4.智能重构引擎四、实战场景解析:从初创项目到老系统改造场景1:初创项目快速验证场景2:老系统迭代升级场景3:高并发系统优化五、开发者价值重构:从代码工人到系统设</div>
                    </li>
                    <li><a href="/article/1946459643396026368.htm"
                           title="2024 前端技术指南:从趋势到实战,构建你的知识地图" target="_blank">2024 前端技术指南:从趋势到实战,构建你的知识地图</a>
                        <span class="text-muted">王旭晨</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>一、2024前端领域的“破局者”与“新势力”2024年的前端圈依然热闹非凡,技术迭代与行业焦虑并存。React19带来的useActionState与服务端渲染升级,Vite6的多线程编译挑战Webpack的地位,Bun和Deno对Node.js发起的性能冲击,都在重塑开发者的选择。而尤雨溪创立VoidZero融资460万美金,更是为开源商业化注入了一剂强心针。尽管“前端已死”的论调此起彼伏,但技</div>
                    </li>
                    <li><a href="/article/1946459643882565632.htm"
                           title="在 Ant Design Vue 中实现滚动页面时保持下拉菜单展开" target="_blank">在 Ant Design Vue 中实现滚动页面时保持下拉菜单展开</a>
                        <span class="text-muted">王旭晨</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>引言在使用AntDesignVue的组件时,默认情况下,当用户滚动页面时,下拉菜单会自动关闭。这在某些场景下可能不够友好,例如在一个长表单中需要频繁切换选项时。本文将介绍如何通过配置和代码优化,实现滚动页面时保持下拉菜单展开的功能,同时不影响其他交互。问题分析为什么滚动页面会关闭下拉菜单?AntDesignVue的下拉组件(如)默认会监听页面的滚动事件。当滚动发生时,组件会认为用户意图离开当前操作</div>
                    </li>
                    <li><a href="/article/1946457370108424192.htm"
                           title="【电脑】鼠标的基础知识" target="_blank">【电脑】鼠标的基础知识</a>
                        <span class="text-muted">Mike_Wuzy</span>
<a class="tag" taget="_blank" href="/search/%E7%94%B5%E8%84%91/1.htm">电脑</a>
                        <div>下面是一些关于鼠标的详细知识:鼠标的基本结构外壳:通常由塑料或金属制成,提供手握的地方。滚轮:位于中央,用于滚动页面。有些高端型号的滚轮可以自定义功能。按键:最常见的是左键、右键和中键(即滚轮)。一些鼠标增加了额外的功能键。传感器:光学或激光传感器,用于捕捉移动信息并转换为数字信号传递给电脑。微处理器:处理传感器传输的数据,并将其转化为计算机可理解的命令。鼠标的类型无线鼠标:使用蓝牙、2.4GHz</div>
                    </li>
                    <li><a href="/article/1946435338717163520.htm"
                           title="007|2班|1月织梦小组精选文章赏析——20180121" target="_blank">007|2班|1月织梦小组精选文章赏析——20180121</a>
                        <span class="text-muted">薛衡</span>

                        <div>作业雨情况:共10位战友(其中1位围观)围观|肖全|小庄稼未点评/迟点评陈清香|007-63徐文晔|007-65本期优秀文章:张冲|007-66|:砍柴挑水先生|对避免思考的反思金句:人们为了逃避真正的思考,愿意做任何事情。精彩点评:这真的是一篇相当不错的反思文章,结构逻辑清晰,内容很具体。我说说自己对于第一性原理的认识,供参考。第一性原理的出现的背景是,正常情况下,一项技术会沿着路径不断升级,比</div>
                    </li>
                    <li><a href="/article/1946421935088922624.htm"
                           title="Docker+Kubernetes落地指南:从单机到集群的平滑迁移" target="_blank">Docker+Kubernetes落地指南:从单机到集群的平滑迁移</a>
                        <span class="text-muted">sg_knight</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a>
                        <div>一、为何必须升级到Kubernetes?1.1单机Docker的瓶颈单机环境痛点:├─资源利用率不均衡(CPU飙高vs内存闲置)├─服务扩容需手动操作├─零宕机更新难以实现└─网络配置复杂(跨主机通信困难)企业级需求:┌───────────┬───────────────┐|场景|Kubernetes方案||───────────|───────────────||滚动更新|Deployment</div>
                    </li>
                    <li><a href="/article/1946406186895077376.htm"
                           title="明年谷歌 Chrome 110 浏览器将停止支持 Win7/8.1,用户需升级微软 Win11/10" target="_blank">明年谷歌 Chrome 110 浏览器将停止支持 Win7/8.1,用户需升级微软 Win11/10</a>
                        <span class="text-muted">涅槃快乐是金</span>

                        <div>自从微软在2020年结束主流支持以来,很多人一直想知道谷歌Chrome浏览器何时会放弃支持Windows7。现在根据谷歌的说法,明年发布的Chrome110将不再支持Windows7,用户需要使用更新的Windows11、Windows10等系统。谷歌表示,在Chrome110发布(目前计划在2023年2月7日达到稳定版)后,谷歌Chrome浏览器将不再支持Windows7和Windows8.1。</div>
                    </li>
                    <li><a href="/article/1946405424156700672.htm"
                           title="婆媳关系处理" target="_blank">婆媳关系处理</a>
                        <span class="text-muted">汉尼ik</span>

                        <div>婆媳关系自古以来就很复杂。随着改革开放以来,女人的地位不断是升高。婆媳之间的矛盾也在随之而升级。那么于男人来说,是个很有挑战性的课题。我也是初次结婚经验不足,为了大家都能够很好的处理婆媳关系。常言道:“家家有本难念的经”,其中一本就叫“婆媳经”。在家庭中,两代人之间的矛盾和冲突,最明显和最常见的,是出现在婆媳关系上,婆媳不合,是使不少人提起就摇头叹息的问题。怎样念好这本“难念的经”,使得婆媳和睦呢</div>
                    </li>
                    <li><a href="/article/1946400746589188096.htm"
                           title="docker重新搭建redis集群" target="_blank">docker重新搭建redis集群</a>
                        <span class="text-muted">Kom19</span>
<a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                        <div>今天遇到个问题,redis全挂了导致我的项目一直在滚动日志连不上redis,所以我重新搭建redis集群来解决这个问题首先把配置文件搞好redis配置文件redis-master的配置文件bind0.0.0.0protected-modenoport6379#requirepassredis##哨兵模式主从切换时使用#masterauthredisredis-slave1的配置文件bind0.0.</div>
                    </li>
                    <li><a href="/article/1946394442629967872.htm"
                           title="第三章【vue】基础(超详细)" target="_blank">第三章【vue】基础(超详细)</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                        <div>eslint安装npminstalleslint-D初始化npxeslint--initvueUse的应用安装npmi@vueuse/corevueuse官方文档(opensnewwindow)获取滚动距离import{useScroll}from"@vueuse/core";const{y}=useScroll(window);监听元素进入视口import{useIntersectionObse</div>
                    </li>
                    <li><a href="/article/1943991135068286976.htm"
                           title="k8s:安装 Helm 私有仓库ChartMuseum、helm-push插件并上传、安装Zookeeper" target="_blank">k8s:安装 Helm 私有仓库ChartMuseum、helm-push插件并上传、安装Zookeeper</a>
                        <span class="text-muted">云游</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/helm/1.htm">helm</a><a class="tag" taget="_blank" href="/search/helm-push/1.htm">helm-push</a>
                        <div>ChartMuseum是Kubernetes生态中用于存储、管理和发布HelmCharts的开源系统,主要用于扩展Helm包管理器的功能核心功能‌集中存储‌:提供中央化仓库存储Charts,支持版本管理和权限控制。‌‌跨集群部署‌:支持多集群环境下共享Charts,简化部署流程。‌‌离线部署‌:适配无网络环境,可将Charts存储在本地或局域网内。‌‌HTTP接口‌:通过HTTP协议提供服务,用户</div>
                    </li>
                    <li><a href="/article/1943975122729758720.htm"
                           title="EMQX 社区版单机和集群部署" target="_blank">EMQX 社区版单机和集群部署</a>
                        <span class="text-muted">pcj_888</span>
<a class="tag" taget="_blank" href="/search/MQTT/1.htm">MQTT</a><a class="tag" taget="_blank" href="/search/MQTT/1.htm">MQTT</a><a class="tag" taget="_blank" href="/search/EMQ/1.htm">EMQ</a>
                        <div>EMQ支持Docker,宿主机,k8s部署;支持单机或集群部署。以下给出EMQX社区版单机和集群部署方法1.Docker单机部署官方推荐最小配置:2核4G下载容器镜像dockerpullemqx/emqx:5.3.2启动容器dockerrun-d--nameemqx\-p1883:1883\-p8083:8083\-p8883:8883\-p8084:8084\-p18083:18083\emqx</div>
                    </li>
                    <li><a href="/article/1943968314044772352.htm"
                           title="Python多版本管理与pip升级全攻略:解决冲突与高效实践" target="_blank">Python多版本管理与pip升级全攻略:解决冲突与高效实践</a>
                        <span class="text-muted">码界奇点</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pip/1.htm">pip</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/python3.11/1.htm">python3.11</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E4%BB%A3%E7%A0%81%E7%AE%A1%E7%90%86/1.htm">源代码管理</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E7%8E%B0%E5%AE%9E/1.htm">虚拟现实</a><a class="tag" taget="_blank" href="/search/%E4%BE%9D%E8%B5%96%E5%80%92%E7%BD%AE%E5%8E%9F%E5%88%99/1.htm">依赖倒置原则</a>
                        <div>引言Python作为最流行的编程语言之一,其版本迭代速度与生态碎片化给开发者带来了巨大挑战。据统计,超过60%的Python开发者需要同时维护基于Python3.6+和Python2.7的项目。本文将系统解决以下核心痛点:如何安全地在同一台机器上管理多个Python版本pip依赖冲突的根治方案符合PEP标准的生产环境最佳实践第一部分:Python多版本管理核心方案1.1系统级多版本共存方案Wind</div>
                    </li>
                    <li><a href="/article/1943961251788943360.htm"
                           title="Kimi Chat 1.5 与 2.0 架构升级对比" target="_blank">Kimi Chat 1.5 与 2.0 架构升级对比</a>
                        <span class="text-muted">charles666666</span>
<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/transformer/1.htm">transformer</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86/1.htm">产品经理</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a>
                        <div>1.5版的MoE架构优化KimiChat1.5采用了优化后的MoE架构,其核心在于“专家网络动态路由”。这一机制类似于快递系统智能选择最优路径,能够根据输入数据的特性动态分配计算资源。这种优化显著提升了模型的计算效率,同时降低了硬件资源的浪费。在实际应用中,这意味着开发者可以在相同的硬件配置下处理更复杂的任务,或者在有限的资源下实现更高的性能。2.0的混合专家系统创新点与1.5版相比,KimiCh</div>
                    </li>
                    <li><a href="/article/1943955203891982336.htm"
                           title="matlab卷积矩阵绝对值,MATLAB矩阵分析和计算" target="_blank">matlab卷积矩阵绝对值,MATLAB矩阵分析和计算</a>
                        <span class="text-muted">weixin_39928736</span>
<a class="tag" taget="_blank" href="/search/matlab%E5%8D%B7%E7%A7%AF%E7%9F%A9%E9%98%B5%E7%BB%9D%E5%AF%B9%E5%80%BC/1.htm">matlab卷积矩阵绝对值</a>
                        <div>MATLAB矩阵分析和计算编辑锁定讨论上传视频本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!《MATLAB矩阵分析和计算》是清华大学出版社出版的一本图书。[1]书名MATLAB矩阵分析和计算作者杜树春出版社清华大学出版社出版时间2019年6月1日定价59元ISBN9787302524816印次1-1印刷日期2019.04.23MATLAB矩阵分析和计算图书内容编辑本书侧重</div>
                    </li>
                    <li><a href="/article/1943948145373278208.htm"
                           title="Topview Avatar 2深度实测:AI数字人带货的新高度,还是又一个营销噱头?" target="_blank">Topview Avatar 2深度实测:AI数字人带货的新高度,还是又一个营销噱头?</a>
                        <span class="text-muted">神码小Z</span>
<a class="tag" taget="_blank" href="/search/AI%E5%B7%A5%E5%85%B7/1.htm">AI工具</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在AI数字人赛道越来越卷的今天,各家产品都在宣传自己的"独门秘技"。最近,TopviewAI推出的Avatar2引起了我的注意——号称突破了产品尺寸限制,实现了"万物皆可带"。作为一个经常需要制作营销视频的内容创作者,我决定亲自上手测试一番,看看这款工具是否真的像宣传的那样强大。TopviewAvatar2是什么?革命性升级还是渐进式改良?TopviewAvatar2是TopviewAI推出的第二</div>
                    </li>
                    <li><a href="/article/1943919279413981184.htm"
                           title="【运维实战】解决 K8s 节点无法拉取 pause:3.6 镜像导致 API Server 启动失败的问题" target="_blank">【运维实战】解决 K8s 节点无法拉取 pause:3.6 镜像导致 API Server 启动失败的问题</a>
                        <span class="text-muted">gs80140</span>
<a class="tag" taget="_blank" href="/search/%E5%90%84%E7%A7%8D%E9%97%AE%E9%A2%98/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/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>目录【运维实战】解决K8s节点无法拉取pause:3.6镜像导致APIServer启动失败的问题问题分析✅解决方案:替代拉取方式导入pause镜像Step1.从私有仓库拉取pause镜像Step2.重新打tag为Kubernetes默认命名Step3.导出镜像为tar包Step4.拷贝镜像到目标节点Step5.在目标节点导入镜像到containerd的k8s.io命名空间Step6.验证镜像是否导</div>
                    </li>
                    <li><a href="/article/1943908690943864832.htm"
                           title="解码服务细节,以专业暗访驱动汽车门店市场突围" target="_blank">解码服务细节,以专业暗访驱动汽车门店市场突围</a>
                        <span class="text-muted">湖南群狼调研</span>
<a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6/1.htm">汽车</a><a class="tag" taget="_blank" href="/search/%E5%B8%82%E5%9C%BA%E8%B0%83%E6%9F%A5/1.htm">市场调查</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%A7%98%E9%A1%BE%E5%AE%A2/1.htm">神秘顾客</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6%E6%9A%97%E8%AE%BF%E8%B0%83%E6%9F%A5/1.htm">汽车暗访调查</a><a class="tag" taget="_blank" href="/search/%E9%97%AE%E5%8D%B7%E8%B0%83%E6%9F%A5%E5%85%AC%E5%8F%B8/1.htm">问卷调查公司</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6%E7%A5%9E%E7%A7%98%E9%A1%BE%E5%AE%A2/1.htm">汽车神秘顾客</a><a class="tag" taget="_blank" href="/search/%E9%95%BF%E6%B2%99%E5%B8%82%E5%9C%BA%E8%B0%83%E7%A0%94/1.htm">长沙市场调研</a>
                        <div>汽车消费市场的竞争,(湖南消费者调查公司)(汽车神秘顾客调查)(长沙市场调查)早已从“产品力”延伸至“服务力”。一次流畅的试驾引导、一句真诚的价格说明、一项贴心的售后承诺,都可能成为客户选择品牌的关键。湖南群狼市场调查深耕行业17年,以专业暗访为笔,为汽车门店绘制服务升级蓝图,让每一份服务细节都经得起市场检验。一、17年行业积淀,铸就服务洞察利器从燃油车主导市场到新能源全面崛起,群狼始终紧跟行业脉</div>
                    </li>
                    <li><a href="/article/1943908692130852864.htm"
                           title="群狼调研:以深度调研赋能餐饮服务升级,筑牢行业竞争力" target="_blank">群狼调研:以深度调研赋能餐饮服务升级,筑牢行业竞争力</a>
                        <span class="text-muted">湖南群狼调研</span>
<a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%A7%98%E9%A1%BE%E5%AE%A2/1.htm">神秘顾客</a><a class="tag" taget="_blank" href="/search/%E6%B9%96%E5%8D%97%E7%BE%A4%E7%8B%BC/1.htm">湖南群狼</a><a class="tag" taget="_blank" href="/search/%E5%B8%82%E5%9C%BA%E8%B0%83%E6%9F%A5/1.htm">市场调查</a><a class="tag" taget="_blank" href="/search/%E6%9A%97%E8%AE%BF/1.htm">暗访</a><a class="tag" taget="_blank" href="/search/%E9%95%BF%E6%B2%99%E7%BE%A4%E7%8B%BC%E8%B0%83%E7%94%A8/1.htm">长沙群狼调用</a><a class="tag" taget="_blank" href="/search/%E6%AD%A6%E6%B1%89%E5%B8%82%E5%9C%BA%E8%B0%83%E6%9F%A5/1.htm">武汉市场调查</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E4%B8%8B%E9%97%A8%E5%BA%97%E6%9A%97%E8%AE%BF%E8%B0%83%E6%9F%A5/1.htm">线下门店暗访调查</a>
                        <div>在餐饮市场竞争日趋激烈的当下,(长沙餐饮神秘顾客调查公司)(湖南消费者调查)(线下门店暗访调查)消费者对用餐体验的需求已从“满足味蕾”升级为“全程优质服务”。服务品质的高低,直接决定了品牌的客户留存率与市场口碑。群狼调研凭借17年深耕餐饮调研领域的专业经验,以系统化的神秘顾客调查为核心,为餐饮企业提供从问题诊断到方案落地的全链条支持,助力企业实现服务升级,夯实行业竞争力。一、餐饮服务升级:从“生存</div>
                    </li>
                    <li><a href="/article/1943908690528628736.htm"
                           title="赋能长沙汽车服务升级,神秘顾客调查筑牢竞争壁垒" target="_blank">赋能长沙汽车服务升级,神秘顾客调查筑牢竞争壁垒</a>
                        <span class="text-muted"></span>

                        <div>在汽车消费日益理性的当下,(长沙市场调研)(汽车行业密采)(湖南汽车神秘顾客)服务体验已成为车企突围市场的核心竞争力。湖南群狼市场调研服务有限公司凭借深耕华中地区的行业积淀,以专业的汽车服务神秘顾客调查服务,为长沙及周边地区的汽车企业精准把脉服务短板,助力其在激烈竞争中筑牢优势。作为立足华中地区的专业调研机构,群狼调研辐射湖南、湖北、江西、河南、安徽等百余个省市乡镇,依托多领域专家团队与国际标准的</div>
                    </li>
                    <li><a href="/article/1943894071063932928.htm"
                           title="设计可靠 LoRaWAN 设备时需要考虑的关键能力" target="_blank">设计可靠 LoRaWAN 设备时需要考虑的关键能力</a>
                        <span class="text-muted">门思科技</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/1.htm">技术分享</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><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/%E7%89%A9%E8%81%94%E7%BD%91/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/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a>
                        <div>引言LoRaWAN已经成为低功耗广域网(LPWAN)中的重要标准,在智慧农业、能源管理、城市基础设施监测等领域得到大规模应用。然而,设计一款真正能够在各种复杂环境中稳定运行、可远程管理、可持续升级的设备,需要从底层架构就进行深度思考,而不仅仅是简单集成一个无线模块。如果缺乏系统性的设计,设备在面对实际部署时会遇到连接不稳、电池过快耗尽、远程控制受限等问题,导致后期维护成本大幅上升。下面,我们将从工</div>
                    </li>
                    <li><a href="/article/1943890036021850112.htm"
                           title="上位机知识篇---常见的文件系统" target="_blank">上位机知识篇---常见的文件系统</a>
                        <span class="text-muted"></span>

                        <div>文件系统是操作系统用于管理和组织存储设备上文件的机制,它决定了文件的存储方式、命名规则、访问权限、数据结构等。以下是常见的文件系统及其应用场景、优势和劣势的详细介绍:一、Windows常用文件系统1.FAT32(FileAllocationTable32)基本特点:采用32位文件分配表,是FAT系列的升级版,支持最大单文件4GB,最大分区容量理论上为8TB(实际常用2TB以内)。应用场景:U盘、存</div>
                    </li>
                    <li><a href="/article/1943885877600120832.htm"
                           title="浏览器的事件循环中的任务队列(消息队列)" target="_blank">浏览器的事件循环中的任务队列(消息队列)</a>
                        <span class="text-muted">小吴在摸渝</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在浏览器的事件循环中,任务队列是有优先级的。这些优先级决定了在一次事件循环中,哪些任务会被优先执行。以下是一些主要的任务队列及其优先级:微任务队列(优先级最高):这个队列用于存放需要最快执行的任务。添加任务到微任务队列的主要方式是使用Promise和MutationObserver1。交互队列(优先级高):这个队列用于存放用户操作后产生的事件处理任务,例如鼠标点击、页面滚动等。延时队列(优先级中)</div>
                    </li>
                    <li><a href="/article/1943881969230213120.htm"
                           title="Xcode 26 现已发布,并支持代码智能 它与基于 Cursor 和 AI Agent 的工作流程相比如何?" target="_blank">Xcode 26 现已发布,并支持代码智能 它与基于 Cursor 和 AI Agent 的工作流程相比如何?</a>
                        <span class="text-muted">知识大胖</span>
<a class="tag" taget="_blank" href="/search/SwiftUI%E6%BA%90%E7%A0%81%E5%A4%A7%E5%85%A8/1.htm">SwiftUI源码大全</a><a class="tag" taget="_blank" href="/search/xcode/1.htm">xcode</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a>
                        <div>简介Xcode26昨天发布了!惊喜的是,它支持macOS15,但要使用新的ChatGPT助手,你需要macOS26Tahoe。所以我把我的M3MaxMacBookPro升级到了Tahoe。我不是说你应该升级,但我这么做是为了测试Xcode的新功能并与大家分享!值得注意的是,这是迄今为止最小的Xcode版本(下载大小)!正如Apple在Xcode新功能会话视频(我建议您观看)中所说的那样,这是一项巨</div>
                    </li>
                    <li><a href="/article/1943879065014431744.htm"
                           title="远程登录docker执行shell报错input is not a terminal问题" target="_blank">远程登录docker执行shell报错input is not a terminal问题</a>
                        <span class="text-muted"></span>

                        <div>背景最近要远程去k8sdocker里面获取信息,于是,写了一个如下的命令,执行完之后,报错了。ssh192.168.100.2sudocrictlexec-itxxx.docker/usr/bin/lscpu--online--extended错误信息如下:time=“2025-07-11T21:00:39+08:00”level=fatalmsg=“execingcommandincontain</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>