Cloud Foundry使用dev_setup部署多节点之排错分析

多节点部署,说白了就和单节点一样,区别就是把一个东西拆开来放到不同节点上去安装而已。


(1)怎么部署多节点,可以先参看这个帖子:http://blog.csdn.net/cherry_sun/article/details/7711913

里面介绍了一个大体流程,对后面的的工作有很多好处。


(2)如果在安装过程中出现问题,可以参考这个博客,虽然问题可能不一样,但是思路基本是一样的:

http://blog.csdn.net/wearenoth/article/details/8035968


(3)安装完成后我又遇到一些比较诡异的问题,这些问题里面有一些我晓得大概为什么,但是更多都不明白是怎么回事,下面是我找到的一些答案:

注:我这个是按照官方给的教程弄的,https://github.com/cloudfoundry/oss-docs/tree/master/vcap/single_and_multi_node_deployments_with_dev_setup

本来部署就不是我工作的重点,但是不弄一次,很多东西又弄不明白,所以只能弄一次了。

注2:由于当时没有写笔记写的乱七八糟,所以看下文的时候会出现很多地方信息不太一致,但是方法还是基本差不多的。


问题0:到底有没有成功

问题描述:我在安装mysql的节点的时候,遇到下面这种情况,首先出现了我们最喜欢看到的Success的信息,但是在开启的时候出现了问题。所以问题就出来了,我到底是装成功了,还是没有装成功?

Deployment Info
***************
* Status: Success
* Config files: /home/vm/cloudfoundry/.deployments/mysql1/config
* Deployment name: mysql1
* Note:
  * If you want to run ruby/vmc please source the profile /home/vm/.cloudfoundry_deployment_profile
  * If you want to run cloudfoundry components by hand please source the profile /home/vm/.cloudfoundry_deployment_local
* Command to run cloudfoundry: /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap_dev -n mysql1 start
vm@vm:~/cloudfoundry/vcap/dev_setup$ ./bin/vcap_dev start
Targeting deployment "mysql1" with cloudfoundry home "/home/vm/cloudfoundry"
Using cloudfoundry config from /home/vm/cloudfoundry/.deployments/mysql1/config
Executing /home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/bin/ruby /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap start mysql_node -c /home/vm/cloudfoundry/.deployments/mysql1/config -v /home/vm/cloudfoundry -l /home/vm/cloudfoundry/.deployments/mysql1/log
/home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- nats/client (LoadError)
	from /home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
	from /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap:13:in `
' vm@vm:~/cloudfoundry/vcap/dev_setup$

这个问题困扰了我很久,在网上也找到类似的问题,然后底下也给出了很多解决办法,我下面给出我找到的绝对比较有可能的几个回答,它们最后指向的矛头都是rvm的问题,而最终的问题都是和ruby版本相关。那答案真的是不是它呢?我们先看看我找到的答案是怎么说的吧:

网上的答案1:

Did you log out of the installation shell and create a new shell? This is needed I believe with the newer version of rvm..

https://github.com/cloudfoundry/vcap/blob/master/README.md

NOTE: The automated setup does not auto-start the system. Once you are done with the setup, exit your current shell, restart a new shell and continue the following steps

网上的答案2:

Correct Michael. The pull request in flight: https://github.com/cloudfoundry/vcap/pull/67

Does a few things:

 

#1 - it installs RVM correctly given some recent changes in the RVM installer. Major issue has to do with the new rvm blindly writing to .bash_profile which on a raw ubunto vm ends up disableing .bashrc. In addition, there was a bug in the original single-line automated installer that had the test for interactive shells backwards which disabled other parts of .bashrc, and finally there was a problem with the expansion of the $rvm_home variable... Net result is that RVM wasn't always working correctly after install

#2 - the automated setup process started vcap for you, but did it in a shell that was properly prepped for rvm. Once the install exits, you are left in the original shell, but that shell did not have rmv installed correctly and as a result is unable to run bin/vcap stop. Simplest solution is to restart the shell. I usually run this process by ssh into the vm so after the install, I just drop the ssh and reconnect in a new shell. this sets up rvm correctly and then cd cloudfoundry/vcap will prep your environment. the pull request no longer starts vcap for you so it feels more natural to run setup, log off and log back in. alternatively you could just source .bash_profile to get your rvm set correctly

#3 - The rake 0.9.0 change causes major issues. Its not a trivial thing to just gem uninstall it due to the fact that it's installed using rvm .default and .global gemsets. The pull request dances around this by removing rake from those global gemsets and then in its place gem install's 0.8.7 into each ruby environment. 

网上的答案3:

Hi Miguel,

  Please open up a new Terminal window/shell, which will source in the modified .bashrc and will

  setup rvm environment.   Then try doing a bin/vcap start.

  We need ruby1.9.2 in the environment, which is set by rvm.

  For example, when I traverse down to vcap directory, I see the following :

$ cd /cloudfoundry/vcap
Using /Users/svaiyapuri/.rvm/gems/ruby-1.9.2-p180
This is ensured by .rvmrc file in that directory, which invokes rvm to use 1.9.2, nats is installed under 1.9.2 gem tree

$ cat .rvmrc
rvm use 1.9.2-p180
 

  Best Regards,

  -senthil
当然这三个方法都没办法解决我的问题了,我搜了rvm是什么,然后费劲心思装上它,结果发现不会用。然后还想办法去修改ruby的版本,但是我后来发现以前部署单节点的时候ruby版本都没出现问题,所以慢慢的我就否定这三个答案了,可谓千辛万苦,但是最后的答案又是什么?我至今才开始学ruby on rails,所以它给的提示信息我只能猜着看了。

Executing /home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/bin/ruby /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap start mysql_node -c /home/vm/cloudfoundry/.deployments/mysql1/config -v /home/vm/cloudfoundry -l /home/vm/cloudfoundry/.deployments/mysql1/log
/home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- nats/client (LoadError)
首先是:我们使用的ruby是
/home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/bin/ruby
那说明肯定不是ruby版本问题了,所以上面的答案基本可以确定是错的了:然后看它的执行的是什么:

 /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap 
我们可以看这个vcap是什么:

#!/usr/bin/env ruby
# Copyright (c) 2009-2011 VMware, Inc.
#
# Usage: bin/vcap_system [start|stop|restart|tail|status] [component ...]
#

require 'yaml'
require 'fileutils'
require 'optparse'

require 'rubygems'
require 'eventmachine'
require 'nats/client'

require File.expand_path(File.join("..", "lib", "vcap_components"), File.dirname(__FILE__))
ruby别的看不懂,这部分还是看的懂的,类似于C地下的包含头文件嘛,然后我想起来这篇博客:http://blog.csdn.net/cherry_sun/article/details/7711913

然后继续往下走:

mysql_node
这个就是启动mysql的意思了,然后继续往下,
 -c /home/vm/cloudfoundry/.deployments/mysql1/config -v /home/vm/cloudfoundry -l /home/vm/cloudfoundry/.deployments/mysql1/log

参数不难猜,但是如果想看的细致一些,我们可以到刚刚的vcap文件底下找答案:

$config_dir ||= ENV['CLOUD_FOUNDRY_CONFIG_PATH']
args = ARGV.dup
opts_parser = OptionParser.new do |opts|
  opts.on('--port PORT')                           { |port| $port = port.to_i }
  opts.on('--configdir CONFIGDIR', '-c CONFIGDIR') { |dir| $config_dir = File.expand_path(dir.to_s) }
  opts.on('--config CONFIGDIR')                    { |dir| $config_dir = File.expand_path(dir.to_s) }
  opts.on('--vcapdir VCAP_DIR', '-v VCAP_DIR')     { |dir| $vcap_home = File.expand_path(dir.to_s) }
  opts.on('--logdir LOG_DIR', '-l LOG_DIR')        { |dir| $log_dir = File.expand_path(dir.to_s) }
  opts.on('--no-color', '--nocolor', '--nc')       { $nocolor = true }
  opts.on('--noprompt', '-n')                      { $noprompt = true }
end

这样一看,基本就懂是什么意思了,-c是读取配置文件,这样我们就知道了mysql配置文件的位置;然后是-v是vcap的目录位置,这个我们都懂,不多说;然后是-l就是日志文件,那这样我们就知道mysql的日志文件在哪里了。虽然我们遇到的问题没有解决,但是我们从这里面已经知道了一些基本的东西,不久以后我们就会用到这些东西,这部分没看。

好了,分析到这我能知道的就是,我就是在执行vcap的时候没有找到这个“nats/client”这个库(?我不知道怎么说,在我眼里就是一个函数库)。

是不是感觉还是一头雾水,我当时就是这样的,就这样这个问题我卡了1天。

好了,我们好好回忆一下以前是不是有类似的问题,在上次单节点部署排错分析的时候我们遇到过一个问题,我们缺少一个头文件,结果编译就不成功。而ruby这种是不需要进行编译的,这两者之间有什么联系呢?我的感觉就是,说白了我没有装好nats这个库,然后现在问题就出来了,这个库应该装在什么地方?去哪里找?网上真的可以找的到么?一系列的问题让我们又陷入困境。

就在这时候,我突然灵光一闪(真的就是灵光一闪,有时候解决问题就是这样),我想起来vcap/services这个目录,我安装的东西在这个底下应该要能够找到。

解决方法:当然,老天保佑,果然是因为service这个目录下是空的导致我启动mysql失败了,因为贪图方便,我直接将整个service目录下的文件全部clone过来了。但是不管白猫黑猫,能抓老鼠就是好猫,这个问题总算解决了:

vm@vm:~/cloudfoundry/vcap/dev_setup/bin$ ./vcap_dev status
Targeting deployment "mysql1" with cloudfoundry home "/home/vm/cloudfoundry"
Using cloudfoundry config from /home/vm/cloudfoundry/.deployments/mysql1/config
Executing /home/vm/cloudfoundry/.deployments/mysql1/deploy/rubies/ruby-1.9.2-p180/bin/ruby /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap status mysql_node -c /home/vm/cloudfoundry/.deployments/mysql1/config -v /home/vm/cloudfoundry -l /home/vm/cloudfoundry/.deployments/mysql1/log
mysql_node                    :	 RUNNING


问题1:VMC无法登陆

问题描述如下:大致情况就是,我可以注册,但是在登陆过程中出现了404错误。

root@arch3:~/cloudfoundry/vcap/dev_setup/bin# vmc target api.vcap.me
Successfully targeted to [http://api.vcap.me]
root@arch3:~/cloudfoundry/vcap/dev_setup/bin# vmc register
Email: [email protected]
Password: ***
Verify Password: ***
Creating New User: OK
Attempting login to [http://api.vcap.me]
Problem with login to 'http://api.vcap.me', 404: entity not found or
inaccessible, try again or register for an account.
解决方法:这个问题我找到的答案就是-将vmc重0.3.21版本降级到0.3.18版本,为什么会这样,我就不明白了。

问题2:部署的应用无法启动:

问题描述如下:这个是从网上copy下来的,当时情况是我执行vmc push hello,然后在Staging Application的时候出现了下面的这个错误。

root@ubuntu:/home/cloudfoundry# vmc start hello

Staging Application: .............Error (JSON 504):504 Gatewa...

root@ubuntu:/home/cloudfoundry#  vmc update hello

Uploading Application:

    Checking for available resources:  ok

   Processing resources:  ok

   Packing application:  ok

   Uploading (706K): ok

Error (JSON 504):<html>

<head><title>504 Gatewa...</code></pre>解决方法:这个东西我在网上没有找到答案,但是如果看过这篇博文的话,应该可以找到一些答案:http://samsungapps.csdn.net/text.html?arcid=2806052 
  <p></p> 
  <p>然后我们返回看我们开始部署的时候是怎么写的配置文件:</p> 
  <p></p> 
  <pre><code class="language-html">---
deployment:
  name: "rest"
jobs:
  install:
    - nats_server
    - cloud_controller:
        builtin_services:
          - redis
          - mongodb
          - mysql
    - router
    - health_manager
    - ccdb
    - redis_node:
        index: "0"
    - redis_gateway
    - mysql_gateway
    - mongodb_node:
        index: "0"
    - mongodb_gateway                        </code></pre>问题就是在于,新的CF已经将stager(打包)这个功能从原有的Cloud Controller中剥离开了。 
  <p></p> 
  <p>所以我们需要做的事情就很简单了,重新装一次rest,只是这次记得将stager给添加上就可以了。</p> 
  <p></p> 
  <pre><code class="language-html">vm@vm:~/test$ vim /home/vm/cloudfoundry/vcap/dev_setup/deployments/sample/multihos
t_mysql/rest.yml 

---
deployment:
  name: "rest"
jobs:
  install:
    - nats_server
    - cloud_controller:
        builtin_services:
          - redis
          - mongodb
          - mysql
    - router
    - stager
    - health_manager
    - ccdb
    - redis_node:
        index: "0"
    - redis_gateway
    - mysql_gateway
    - mongodb_node:
        index: "0"
    - mongodb_gateway</code></pre>然后再试试看 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">vm@vm:~/cloudfoundry/vcap/dev_setup$ vmc start hello
Staging Application 'hello': OK                                                 

</code></pre> 
  <p><br></p> 
  <h1>问题3:dea的日志有问题</h1> 
  <p>问题描述:在查看dea的log(位于$HOME/cloudfoundry/.deployment/dea/log/   目录下)的时候发现下面的提示信息,runtime not support。</p> 
  <p></p> 
  <pre><code class="language-html"> [2012-09-20 22:04:50.898873] dea - pid=12396 tid=d39f fid=99c9  DEBUG -- DEA received discovery message: {"droplet":12,"limits":{"mem":128,"disk":2048,"fds":256},"name":"hello","runtime_info":{"version":"1.8.7","description":"Ruby 1.8.7","executable":"/root/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin/ruby","version_flag":"-e 'puts RUBY_VERSION'","additional_checks":"-e 'puts RUBY_PATCHLEVEL >= 174'","version_output":"1.8.7","environment":{"PATH":"/root/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin:$PATH","BUNDLE_GEMFILE":null},"name":"ruby18"},"runtime":"ruby18","prod":false,"sha":"012b0fc043c9e03a03bf7f3432a0fc9c54d14ba1"}
[2012-09-20 22:04:50.899769] dea - pid=12396 tid=d39f fid=99c9  DEBUG -- Ignoring request, runtime not enabled for 'ruby18'
[2012-09-20 22:04:50.899939] dea - pid=12396 tid=d39f fid=99c9  DEBUG -- Ignoring request, {"version"=>"1.8.7", "description"=>"Ruby 1.8.7", "executable"=>"/root/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin/ruby", "version_flag"=>"-e 'puts RUBY_VERSION'", "additional_checks"=>"-e 'puts RUBY_PATCHLEVEL >= 174'", "version_output"=>"1.8.7", "environment"=>{"PATH"=>"/root/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin:$PATH", "BUNDLE_GEMFILE"=>nil}, "name"=>"ruby18"} runtime not supported.</code></pre>解决方法:回答之前可以先插卡看下自己的runtimes,如下。说实在的,我没弄明白这边的runtime到底是什么玩意,所以这个问题就稀里糊涂的去网上查了。 
  <br> 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">vm@vm:~/cloudfoundry/vcap/dev_setup$ vmc runtimes

+--------------+---------------+-----------+
| Name         | Description   | Version   |
+--------------+---------------+-----------+
| php          | PHP 5         | 5.3       |
| node08       | Node.js       | 0.8.2     |
| node06       | Node.js       | 0.6.8     |
| ruby19       | Ruby 1.9.2    | 1.9.2p180 |
| ruby18       | Ruby 1.8.7    | 1.8.7     |
| java         | Java 6        | 1.6       |
| erlangR14B01 | Erlang R14B01 | R14B01    |
| python2      | Python 2.6.5  | 2.6.5     |
| node         | Node.js       | 0.4.12    |
+--------------+---------------+-----------+</code></pre>在Google Group里面的答案就是:问题就是这个路径名出现问题了。 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">Hi
   I think the problem is because dea didn't find the correct ruby executable path.
 DEBUG -- DEA received discovery message: {"droplet":12,"limits":{"mem":128,"disk":2048,"fds":256},"name":"hello","runtime_info":{"version":"1.8.7","description":"Ruby 1.8.7","executable":"/root/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin/ruby","version_flag":"-e 'puts RUBY_VERSION'","additional_checks":"-e 'puts RUBY_PATCHLEVEL >= 174'","version_output":"1.8.7","environment":{"PATH":"/root/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin:$PATH","BUNDLE_GEMFILE":null},"name":"ruby18"},"runtime":"ruby18","prod":false,"sha":"012b0fc043c9e03a03bf7f3432a0fc9c54d14ba1"}
   the correct path should be /root/cloudfoundry/.deployments/dea/deploy/rubies/ruby-1.8.7-p357/bin/.
   But how can modify this so that DEA can find the path????</code></pre>要怎么解决呢?:就是去修改rest这个节点底下的runtimes.yml文件,找到里面对于这个路径名的设置的地方,然后架构rest修改成dea就可以了。 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">Hi guys:
     It worked.
     I find the configuration.
     /root/cloudfoundry/.deployments/rest/config/runtimes.yml
     the path of executable ruby need change to where your dea's ruby located in. </code></pre> 
  <p></p> 
  <p><br></p> 再看dea的log文件,没问题了 
  <p></p> 
  <pre><code class="language-html">vm@vm:~/cloudfoundry/.deployments/dea$ tail log/dea.log 
[2012-10-15 16:25:36.540653] dea - pid=6504 tid=a226 fid=0c51   INFO -- Using ruby @ /home/vm/cloudfoundry/.deployments/dea/deploy/rubies/ruby-1.9.2-p180/bin/ruby
[2012-10-15 16:25:36.540896] dea - pid=6504 tid=a226 fid=0c51   INFO -- Using network: 192.168.1.101
[2012-10-15 16:25:36.541032] dea - pid=6504 tid=a226 fid=0c51   INFO -- Socket Limit:1024
[2012-10-15 16:25:36.541099] dea - pid=6504 tid=a226 fid=0c51   INFO -- Max Memory set to 4.0G
[2012-10-15 16:25:36.541159] dea - pid=6504 tid=a226 fid=0c51   INFO -- Utilizing 1 cpu cores
[2012-10-15 16:25:36.541212] dea - pid=6504 tid=a226 fid=0c51   INFO -- Allowing multi-tenancy
[2012-10-15 16:25:36.541273] dea - pid=6504 tid=a226 fid=0c51   INFO -- Using directory: /var/vcap.local/dea/
[2012-10-15 16:25:36.542077] dea - pid=6504 tid=a226 fid=0c51   INFO -- Initial usage of droplet fs is: 0%
[2012-10-15 16:25:36.597228] dea - pid=6504 tid=a226 fid=0c51   INFO -- File service started on port: 12345
[2012-10-15 16:25:36.636433] dea - pid=6504 tid=a226 fid=0c51  DEBUG -- Took 0.002520012 to snapshot application state.</code></pre> 
  <br> 
  <br> 
  <h1>问题4:上传的APP的health值为0%</h1> 
  <p>问题描述:解决了3的问题后,我试着铺设一个自己的应用。结果出现下面的这个情况,首先App需要很久才启动起来,让后提示我去查看log文件。这是不是一种正常情况呢?</p> 
  <p></p> 
  <pre><code class="language-html">vm@vm:~$ vmc start hello
Staging Application 'hello': OK                                                 
Starting Application 'hello': ..........................
Application is taking too long to start, check your logs
Starting Application 'hello': OK                   </code></pre> 
  <p></p> 
  <div>
    当然不是,我查看了一下我推送的应用的状态,很容易就看到这个health值为0 
  </div> 
  <p></p> 
  <pre><code class="language-html">vm@vm:~$ vmc apps

+-------------+----+--------+---------------+----------+
| Application | #  | Health | URLS          | Services |
+-------------+----+--------+---------------+----------+
| hello       | 1  | 0%     | hello.vcap.me |          |
+-------------+----+--------+---------------+----------+</code></pre> 
  <p>而之后我也试着使用w3m访问自己的页面,结果也失败了,这说明我们还是没有成功。好吧,接下来让我们考虑一下是什么情况。</p> 
  <p>我首先想到的是这个https://github.com/cloudfoundry/uaa。然后也试着重新弄了一个uaa的节点,但是问题还是没有解决。<br></p> 
  <p>然后我就上网搜,找到如下的一个回答:</p> 
  <p></p> 
  <pre><code class="language-html">Check the dea logfile on your DEA node(s). There is another problem with
the multi-node guide where the "rest" / CC node contains the path
information for the runtimes, but the DEA node has them installed at a
different place.

I filed a bug on that particular issue (not that it's the same one that
you're having, but maybe) here:
https://cloudfoundry.atlassian.net/browse/CF-140.

You can work around it by tweaking
cloudfoundry/.deployments/<name>/config/runtimes.yml on the CC node...
notice the <name> is different on your CC and DEA nodes, if you followed
the multi-node deployment guide exactly, and that's what breaks the
runtimes. You can edit the paths in that file (what I did), or try to
reinstall either the CC or DEA node to use the same "name", so that the
path happens to line up properly.

Good luck! Once it works it really is kinda nice. The multi-node guides are
just *awful* though.</code></pre>意思大概就是去查看dea的log日志。晕,在问题3的时候我们才试着查看过dea的日志信息,当时试着改过一个问题,已经没问题了,现在怎么还会有问题?但是没办法我还是试着查看了一下,结果很惊讶的发现下面的信息: 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">[2012-10-16 12:52:28.863974] dea - pid=6504 tid=a226 fid=0c51  DEBUG -- Ignoring request, {"version"=>"1.8.7", "description"=>"Ruby 1.8.7", "executable"=>"/home/vm/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin/ruby", "version_flag"=>"-e 'puts RUBY_VERSION'", "additional_checks"=>"-e 'puts RUBY_PATCHLEVEL >= 174'", "version_output"=>"1.8.7", "environment"=>{"PATH"=>"/home/vm/cloudfoundry/.deployments/rest/deploy/rubies/ruby-1.8.7-p357/bin:/home/vm/cloudfoundry/.deployments/rest/deploy/nodes/node-0.8.2/bin:$PATH", "BUNDLE_GEMFILE"=>nil}, "name"=>"ruby18"} runtime not supported.
[2012-10-16 12:52:37.610533] dea - pid=6504 tid=a226 fid=0c51  DEBUG -- DEA received router start message: {"id":"e02da355f3b4a439cae9066fce2ec6ef","version":0.98}</code></pre>解决方法:天哪,这不是和问题3中的情况一样么!!!最后解决方法也和问题3一样咯。试着修改后,再重启一下每个节点。 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">vm@vm:~/test$ vmc apps

+-------------+----+---------+---------------+----------+
| Application | #  | Health  | URLS          | Services |
+-------------+----+---------+---------------+----------+
| env         | 1  | RUNNING | env.vcap.me   |          |
| hello       | 1  | RUNNING | hello.vcap.me |          |
+-------------+----+---------+---------------+----------+
</code></pre> 
  <br> OK,现在已经没有问题了。 
  <p></p> 
  <pre><code class="language-html">vm@vm:~$ vmc start hello
Staging Application 'hello': OK                                                 
Starting Application 'hello': ..........................
Application is taking too long to start, check your logs
Starting Application 'hello': OK                   </code></pre> 
  <div> 
   <br> 
  </div> 
  <p><br></p> 
  <h1>问题5:胡乱修改域名的结果</h1> 
  <p>今天遇到的一个问题:我想改改我的域名,然后试着用在安装的时候修改了使用的域名,如下</p> 
  <p></p> 
  <pre><code class="language-html">~/cloudfoundry/vcap/dev_setup/bin/vcap_dev_setup -D test.uestc -c ~/cloudfoundry/vcap/dev_setup/deployments/sample/multihost_mysql/rest.yml</code></pre>结果最后查看日志的时候出现下面的问题: 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">  mysql_gateway --> [2012-10-22 23:32:50.149187] mysql_gateway - pid=32730 tid=be94 fid=33cd  ERROR -- Failed fetching handles, status=302
  mysql_gateway --> [2012-10-22 23:32:50.691135] mysql_gateway - pid=32730 tid=be94 fid=33cd   INFO -- Fetching handles from cloud controller @ http://api.test.uestc/services/v1/offerings/mysql-5.1/handles
  mysql_gateway --> [2012-10-22 23:32:51.772054] mysql_gateway - pid=32730 tid=be94 fid=33cd  ERROR -- Failed fetching handles, status=302
  mysql_gateway --> [2012-10-22 23:32:52.765308] mysql_gateway - pid=32730 tid=be94 fid=33cd   INFO -- Fetching handles from cloud controller @ http://api.test.uestc/services/v1/offerings/mysql-5.1/handles
  mysql_gateway --> [2012-10-22 23:32:53.822947] mysql_gateway - pid=32730 tid=be94 fid=33cd  ERROR -- Failed fetching handles, status=302
  mysql_gateway --> [2012-10-22 23:32:54.827635] mysql_gateway - pid=32730 tid=be94 fid=33cd   INFO -- Fetching handles from cloud controller @ http://api.test.uestc/services/v1/offerings/mysql-5.1/handles
  mysql_gateway --> [2012-10-22 23:32:55.882179] mysql_gateway - pid=32730 tid=be94 fid=33cd  ERROR -- Failed fetching handles, status=302
  mysql_gateway --> [2012-10-22 23:32:56.875083] mysql_gateway - pid=32730 tid=be94 fid=33cd   INFO -- Fetching handles from cloud controller @ http://api.test.uestc/services/v1/offerings/mysql-5.1/handles
  mysql_gateway --> [2012-10-22 23:32:57.960161] mysql_gateway - pid=32730 tid=be94 fid=33cd  ERROR -- Failed fetching handles, status=302
  mysql_gateway --> [2012-10-22 23:32:58.953425] mysql_gateway - pid=32730 tid=be94 fid=33cd   INFO -- Fetching handles from cloud controller @ http://api.test.uestc/services/v1/offerings/mysql-5.1/handles</code></pre>这个我也不知道如何开始说起,大概意思就是这两个gateway在链接到http://api.test.uestc/services/v1/offerings/mysql-5.1/handles的时候出现了问题。 
  <p></p> 
  <p>根据我的想法,这个api.test.uestc应该是指向本机的。所以修改的方法就是去修改/etc/hosts这个文件。其中“192.168.1.166”是我本机的IP地址。</p> 
  <p></p> 
  <pre><code class="language-html">127.0.0.1       localhost
127.0.1.1       vm-virtual-machine
192.168.1.166   api.test.uestc</code></pre>然后重启了一下,然后看看日志,问题解决。 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">vm@vm-virtual-machine:~/cloudfoundry$ tail -f .deployments/rest/log/mongodb_gateway.log 
[2012-10-22 23:43:03.714025] mongodb_gateway - pid=2296 tid=bd74 fid=4b65   INFO -- Successfully registered with cloud controller
[2012-10-22 23:43:23.905633] mongodb_gateway - pid=2296 tid=bd74 fid=4b65  DEBUG -- [MongoaaS-Provisioner] Received node announcement: {"available_capacity":50,"capacity_unit":1,"id":"mongodb_node_0","plan":"free","supported_versions":["1.8","2.0"]}
[2012-10-22 23:43:53.991126] mongodb_gateway - pid=2296 tid=bd74 fid=4b65  DEBUG -- [MongoaaS-Provisioner] Received node announcement: {"available_capacity":50,"capacity_unit":1,"id":"mongodb_node_0","plan":"free","supported_versions":["1.8","2.0"]}
[2012-10-22 23:44:03.721696] mongodb_gateway - pid=2296 tid=bd74 fid=4b65   INFO -- Sending info to cloud controller: http://api.test.uestc/services/v1/offerings</code></pre> 
  <pre><code class="language-html">vm@vm-virtual-machine:~/cloudfoundry$ tail -f .deployments/rest/log/mysql_gateway.log 
[2012-10-22 23:41:47.481952] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Sending info to cloud controller: http://api.test.uestc/services/v1/offerings
[2012-10-22 23:41:47.525692] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Successfully registered with cloud controller
[2012-10-22 23:42:47.540149] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Sending info to cloud controller: http://api.test.uestc/services/v1/offerings
[2012-10-22 23:42:47.573084] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Successfully registered with cloud controller
[2012-10-22 23:43:47.581261] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Sending info to cloud controller: http://api.test.uestc/services/v1/offerings
[2012-10-22 23:43:47.609556] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Successfully registered with cloud controller
[2012-10-22 23:44:47.628153] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Sending info to cloud controller: http://api.test.uestc/services/v1/offerings
[2012-10-22 23:44:47.659385] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Successfully registered with cloud controller
[2012-10-22 23:45:47.680424] mysql_gateway - pid=1848 tid=2705 fid=6bf1   INFO -- Sending info to cloud controller: http://api.test.uestc/services/v1/offerings</code></pre> 
  <p></p> 
  <p><br></p> 注意:在此过程中我发现有个家伙遇到我类似的错误信息,但是他的原因和我的完全不一样: 
  <p>http://support.cloudfoundry.com/entries/20048308-unable-to-get-started-with-cloudfoundry-single-vm-setup-unable-to-reach-api-vcap-me<br><br></p> 
  <p><br></p> 
  <h1>总结</h1> 
  <p>多节点的部署,说难挺难,说简单也算可以,心得如下:</p> 
  <p>(1)最好了解CF的基本架构,我感觉如果了解,很多东西弄起来就会有思路。也会方便很多。下面是我整理的一些东西</p> 
  <p><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Cloud Foundry框架介绍(上):</span>http://qing.weibo.com/2294942122/88ca09aa330004r8.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Cloud Foundry框架介绍(下):</span>http://qing.weibo.com/2294942122/88ca09aa33000975.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Cloud_Controll分析:</span>http://blog.sina.com.cn/s/blog_902f34a901014hw5.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">CloudFoundry DEA运作源码分析:</span>http://blog.csdn.net/cherry_sun/article/details/7696482<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">cloud foundry之router代码解读:</span>http://www.54chen.com/architecture/cloud-foundry-router.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Cloud Foundry vcap_dev start过程分析:</span>http://blog.csdn.net/cherry_sun/article/details/7730008<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">cloudfoundry dev setup 分析以及chef学习:</span>http://blog.csdn.net/cherry_sun/article/details/7711913<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">MongoDB:</span>http://blog.csdn.net/cherry_sun/article/details/7583215<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">MongoDB:</span>http://blog.csdn.net/cherry_sun/article/details/7583761<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">VMC:</span>http://www.54chen.com/architecture/cloud-foundry-vmc.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">cloud_controller:</span>http://www.54chen.com/architecture/cloud-foundry-cloud_controller.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">cloud foundry之warden代码解读-part1:</span>http://www.54chen.com/architecture/cloud-foundry-warden-part1.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Cloud Foundry 深入学习三 CloudController源码分析 :</span>http://blog.sina.com.cn/s/blog_902f34a901014hw5.html<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Cloud Foundry新版router源码分析:</span>http://blog.csdn.net/cherry_sun/article/details/7780472<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">cloud controller 源码分析(包括Ruby on Rails项目结构分析):</span>http://blog.csdn.net/cherry_sun/article/details/7750394<br style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;"><span style="color:rgb(51,51,51);font-family:Arial, sans-serif;font-size:13px;line-height:22px;">Event Machine:</span>http://eventmachine.rubyforge.org/<br></p> 
  <p>(2)学会查找资料,百度是靠不住的,我这次遇到的问题的解决方法都是在CF的社区和google的group里面找到的。</p> 
  <p>(3)学会查看日志,也就是~/cloudfoundry/.deployment/XXX/log底下的信息,有时候答案就在里面了。</p> 
  <p><br></p> 
  <h1>小技巧</h1> 
  <h2>如何提高安装速度</h2> 
  <p>在安装的时候我使用的dev_setup方法,中间去下载源码和数据包会耗去大量的时间,而且还常常因为源的问题失败,但是如果你有一个成功安装的vcap节点的话,可以使用原来的节点来拷贝</p> 
  <p>具体做法如下:比如我有一个已经安装好的vcap节点,用户名为ubuntu,地址为192.168.1.80,我现在的节点就叫vm,地址为192.168.1.100</p> 
  <p>克隆源码:</p> 
  <p>第一步、在$HOME目录下新建一个cloudfoundry目录</p> 
  <p></p> 
  <pre><code class="language-html">$ cd $HOME
$ mkdir cloudfoundry</code></pre>第二步、将ubuntu目录下的源码克隆过来,例如我想克隆vcap的源码,可以这么做 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">$ cd $HOME/cloudfoundry/
$ git clone ubuntu@192.168.1.80:/home/ubuntu/cloudfoundry/vcap</code></pre>此外其他的源码都可以这么来做,速度绝对提升几十倍 
  <p></p> 
  <p>克隆安装包:在安装的时候,都需要下载好几个安装包,这些包都保存在/var/cache/dev_setup目录下,那我们只要将其拷贝过来,那就免去很多很多的时间了</p> 
  <p>第一步:在/var/cache目录下新建一个dev_setup目录</p> 
  <p></p> 
  <pre><code class="language-html">$ cd /var/cache/
$ sudo mkdir dev_setup</code></pre>第二步、将软件包全部拷贝过来, 
  <p></p> 
  <p></p> 
  <pre><code class="language-html">$ cd /var/cache/dev_setup
$ sudo scp ubuntu@192.168.1.80:/var/cache/dev_setup/* .</code></pre> 
  <br> 
  <h2>关于log文件:</h2> 
  <p>我一直习惯使用tail命令查看log文件,可以如下使用:</p> 
  <p></p> 
  <pre><code class="language-html">$ tail -f ~/cloudfoundry/.deployments/uaa/log/uaa.log</code></pre> 
  <p>或者</p> 
  <p></p> 
  <pre><code class="language-html">$ /home/vm/cloudfoundry/vcap/dev_setup/bin/vcap_dev tail | grep ERROR</code></pre> 
  <br> 
  <br> 
  <p><br></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1297821797638545408"></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">你可能感兴趣的:(CloudFoundry)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1829716742126006272.htm"
                           title="Pivotal:15分钟部署你的应用" target="_blank">Pivotal:15分钟部署你的应用</a>
                        <span class="text-muted">我不只是个码农</span>

                        <div>本篇文章介绍的是PaaS平台PivotalCloudFoundry(以下简称PCF)的初步使用,相比于传统的IaaS平台(比如阿里云),PCF可实现快速迭代开发与部署,让您专注于业务开发。还不清楚PaaS与IaaS平台区别的同学,点此传送门。在正文开始前先闲聊一下PCF是什么,什么公司开发的,用来干什么的。PCF是一个平台即服务云平台,基于CloudFoundry做了商业化开发,部署在AWS上作为</div>
                    </li>
                    <li><a href="/article/1756542623327207424.htm"
                           title="Kubernetes实战" target="_blank">Kubernetes实战</a>
                        <span class="text-muted">JavaEdge</span>

                        <div>现今最热门的服务器端技术是容器!可是,如果现在不是2018年而是2013年,你的回答还能这么斩钉截铁么?现在就让我们把时间拨回到五年前去看看吧。相比于如日中天的书AWS和盛极一时的OpenStack,以CloudFoundry为代表的开源PaaS项目,却成为了当时云计算技术中的一股清流。这时,CloudFoundry项目已经基本度过了最艰难的概念普及和用户教育阶段,开启了以开源PaaS为核心构建平</div>
                    </li>
                    <li><a href="/article/1752850084036362240.htm"
                           title="Sleuth链路添加额外传播字段" target="_blank">Sleuth链路添加额外传播字段</a>
                        <span class="text-muted">烂融小菜花</span>

                        <div>SpringCloud官网中关于Sleuth链路添加额外传播字段的描述如下:有时需要传播额外的字段,例如请求ID或备用跟踪上下文。例如,如果你在CloudFoundry环境中,可能希望传递请求ID,如下例所示://whenyouinitializethebuilder,definetheextrafieldyouwanttopropagateTracing.newBuilder().propaga</div>
                    </li>
                    <li><a href="/article/1751771294950506496.htm"
                           title="(11)SpringCloud:docker部署" target="_blank">(11)SpringCloud:docker部署</a>
                        <span class="text-muted">hedgehog1112</span>

                        <div>一、docker简介引擎,为应用创建轻量级、可移植、自给自足容器。本地编译测试通过的容器可批量在生产环境中部署,包括JVM、baremetal、OpenStack集群和其他基础应用平台。Docker通常用于如下场景:web应用自动化打包和发布;自动化测试和持续集成、发布;服务型环境中部署和调整数据库或其他的后台应用;从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的</div>
                    </li>
                    <li><a href="/article/1751755611768373248.htm"
                           title="SAP云平台CloudFoundry环境hdb build成功的日志分析" target="_blank">SAP云平台CloudFoundry环境hdb build成功的日志分析</a>
                        <span class="text-muted">JerryWang_汪子熙</span>

                        <div>7:06:08PM(Executor)The"taskforhdbbuild"processstarted.7:06:08PM(Executor)Startedthe"taskforhdbbuild"provision.7:07:31PM(Provision)Serviceprovisioningformodule:"/db"7:07:31PM(Provision)Createdthe'Produ</div>
                    </li>
                    <li><a href="/article/1750934863478800384.htm"
                           title="[Docker]Docker学习的理解和Mysql的安装" target="_blank">[Docker]Docker学习的理解和Mysql的安装</a>
                        <span class="text-muted">andrew祀_4117</span>

                        <div>Docker是什么Docker可以理解成一个虚拟机Docker是一个轻量级的应用容器框架Docker可以打包、发布、运行任何应用Docker应用场景Web应用的自动化打包和发布自动化测试和持续集成、发布在服务器环境中部署和调整数据库或其他的后台应用从头编译或者扩展现有OpenShift或CloudFoundry平台来搭建自己的Paas环境Docker架构Docker中的镜像Docker的镜像相当于</div>
                    </li>
                    <li><a href="/article/1749583990731325440.htm"
                           title="微服务Spring Cloud架构详解" target="_blank">微服务Spring Cloud架构详解</a>
                        <span class="text-muted">SmartBrain</span>
<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>"SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式,使用SpringCloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及CloudFoundry等托管平台。"Dubbo、SpringCl</div>
                    </li>
                    <li><a href="/article/1745099267007070208.htm"
                           title="部署 Spring Boot 应用中文文档" target="_blank">部署 Spring Boot 应用中文文档</a>
                        <span class="text-muted">逆水行舟x</span>
<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/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%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>本文为官方文档直译版本。原文链接部署SpringBoot应用中文文档引言部署到云CloudFoundry与服务绑定KubernetesKubernetes容器生命周期HerokuOpenShift亚马逊网络服务(AWS)AWSElasticBeanstalk使用Tomcat平台使用JavaSE平台总结CloudCaptain和亚马逊网络服务Azure谷歌云安装SpringBoot应用程序作为sys</div>
                    </li>
                    <li><a href="/article/1744711446643621888.htm"
                           title="Docker学习(一)简介" target="_blank">Docker学习(一)简介</a>
                        <span class="text-muted">万总有点菜</span>

                        <div>Docker是一个开源的应用容器引擎。Docker的应用场景Web应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境。Docker的优点快运行时的性能可以获取极大提升(经典的案例是提升97%)管理操作(启动,停止,开始,重启等等)都是以秒或毫秒为单位的。敏</div>
                    </li>
                    <li><a href="/article/1740888897493155840.htm"
                           title="NAST概述" target="_blank">NAST概述</a>
                        <span class="text-muted">背帆</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/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/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>一、NATS介绍NATS是由CloudFoundry的架构师Derek开发的一个开源的、轻量级、高性能的,支持发布、订阅机制的分布式消息队列系统。它的核心基于EventMachine开发,代码量不多,可以下载下来慢慢研究。不同于Java社区的kafka,nats偏于redis式的消息中间件,不不像Kafka式的可以持久化。NATS原来是使用Ruby编写,可以实现每秒150k消息,后来使用Go语言重</div>
                    </li>
                    <li><a href="/article/1736640716345499648.htm"
                           title="SpringCloud 学习(二) 服务注册与发现Eureka" target="_blank">SpringCloud 学习(二) 服务注册与发现Eureka</a>
                        <span class="text-muted">java猿记</span>

                        <div>SpringCloud简介SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式,使用SpringCloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及CloudFoundry等托管平台。Eur</div>
                    </li>
                    <li><a href="/article/1731417741547614208.htm"
                           title="容器技术发展史,编排与容器的技术演进之路——2" target="_blank">容器技术发展史,编排与容器的技术演进之路——2</a>
                        <span class="text-muted">阿瞒有我良计15</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/perl/1.htm">perl</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>目录:容器技术发展史Jail时代1979年贝尔实验室发明chroot2000年FreeBSD4.0发行FreeBSDJail2001年LinuxVServer发行2004年SolarisContainers发行云时代2006年google推出ProcessContainers2008年LXC推出2011年CloudFoundry推出Warden2013年LMCTFY启动2013年Docker推出到</div>
                    </li>
                    <li><a href="/article/1730248264495738880.htm"
                           title="Spring Cloud Security" target="_blank">Spring Cloud Security</a>
                        <span class="text-muted">咔啡</span>

                        <div>SpringCloudSecurity提供了一组用于构建安全应用程序和服务的原语,最小化。可以从外部(或集中)高度配置的声明式模型适用于通常使用中央契约管理服务的大型合作远程组件系统的实现。在像CloudFoundry这样的服务平台上也很容易使用。基于SpringBoot和Spring安全性OAuth2,我们可以快速创建实现常见模式的系统,如单点登录,令牌中继和令牌交换。注意SpringCloud</div>
                    </li>
                    <li><a href="/article/1724709510032994304.htm"
                           title="【极客时间-系列教程】深入剖析Kubernetes-预习篇 · 小鲸鱼大事记(一):初出茅庐" target="_blank">【极客时间-系列教程】深入剖析Kubernetes-预习篇 · 小鲸鱼大事记(一):初出茅庐</a>
                        <span class="text-muted">Darren_wdq</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/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><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>文章目录初出茅庐背景PaaS容器化初出茅庐背景在容器之前使用最多的是虚拟机,AWS和OpenStack,以CloudFoundry为代表的开源PaaS项目,这些事在云计算中的一股清流,我还在项目中使用了KVM对机器进行虚拟化,这个更是原始的方式,后续要考虑上容器,不然不便于管理和使用。PaaSPaaS项目被大家接纳的一个主要原因,就是它提供了一种名叫“应用托管”的能力。在之前虚拟机和云计算已经是比</div>
                    </li>
                    <li><a href="/article/1714724348012605440.htm"
                           title="容器随笔" target="_blank">容器随笔</a>
                        <span class="text-muted">m0_46840920</span>

                        <div>让我们把时间放到2013年,当时最火的技术是什么呢,是以cloudfoundry为代表的开源pass项目,cloudyfoundy项目已经度过了最艰难的用户概念普及和用户教育阶段,吸引了包括百度,京东,华为,等一大批技术厂商,开始了以来源pass项目为核心构建平台服务能力的变革,基本上pass可是说是入日中天,但是这个时候一个叫docker的开源项目突然冒了出来,docker公司当时还叫dotcl</div>
                    </li>
                    <li><a href="/article/1714398772320088064.htm"
                           title="docker全家桶(基本命令、dockerhub、docker-compose)" target="_blank">docker全家桶(基本命令、dockerhub、docker-compose)</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/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>概念应用场景:Web应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境。作用:Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件Docker包括三个基本概念:镜像(Image):Docker镜像(Image),就相当于是一个root文件系统</div>
                    </li>
                    <li><a href="/article/1712822761866473472.htm"
                           title="微服务实践(一):微服务架构的优势与不足" target="_blank">微服务实践(一):微服务架构的优势与不足</a>
                        <span class="text-muted">云原生之家</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>【编者的话】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。点击这里获取云原生干货这篇文章作者是ChrisRichardson,他是早期基于Java的AmazoniteEC2PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应</div>
                    </li>
                    <li><a href="/article/1712391425469001728.htm"
                           title="02 | 预习篇 · 小鲸鱼大事记(二):崭露头角" target="_blank">02 | 预习篇 · 小鲸鱼大事记(二):崭露头角</a>
                        <span class="text-muted">脆皮鸡大虾</span>

                        <div>你好,我是张磊。我今天分享的主题是:小鲸鱼大事记之崭露头角。在上一篇文章中,我说到,伴随着PaaS概念的逐步普及,以CloudFoundry为代表的经典PaaS项目,开始进入基础设施领域的视野,平台化和PaaS化成了这个生态中的一个最为重要的进化趋势。就在对开源PaaS项目落地的不断尝试中,这个领域的从业者们发现了PaaS中最为棘手也最亟待解决的一个问题:究竟如何给应用打包?遗憾的是,无论是Clo</div>
                    </li>
                    <li><a href="/article/1698012289619275776.htm"
                           title="Spring Cloud Foundry上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873" target="_blank">Spring Cloud Foundry上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873</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/Framework/1.htm">Framework</a><a class="tag" taget="_blank" href="/search/%E6%BC%8F%E6%B4%9E%E8%A7%A3%E5%86%B3/1.htm">漏洞解决</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/%E7%9F%A5%E8%AF%86%E9%9B%86%E9%94%A6/1.htm">知识集锦</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><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>文章目录0.前言1.参考文档2.基础介绍描述如果满足以下任一条件,应用程序就不会有太大风险:受影响的Spring产品和版本3.解决方案3.1.升级版本3.2.替代方案0.前言背景:公司项目扫描到SpringCloudFoundry上使用通配符模式匹配进行的安全绕过漏洞CVE-2023-20873CVE-2023-20873:在CloudFoundry上使用通配符模式匹配进行的安全绕过高风险|202</div>
                    </li>
                    <li><a href="/article/1697798689315172352.htm"
                           title="Docker学习" target="_blank">Docker学习</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/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>Docker的应用场景Web应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境。Docker的优点Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以与管理应</div>
                    </li>
                    <li><a href="/article/1694146054968127488.htm"
                           title="SpringCloud学习笔记(一)_快速入门" target="_blank">SpringCloud学习笔记(一)_快速入门</a>
                        <span class="text-muted">执卷</span>
<a class="tag" taget="_blank" href="/search/SpringCloud/1.htm">SpringCloud</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><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>SpringCloud简介SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式,使用SpringCloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及CloudFoundry等托管平台。官网:</div>
                    </li>
                    <li><a href="/article/1691710752269873152.htm"
                           title="容器技术发展和编排技术演进之路" target="_blank">容器技术发展和编排技术演进之路</a>
                        <span class="text-muted">珠江上上上</span>
<a class="tag" taget="_blank" href="/search/Docker%E4%B8%93%E6%A0%8F/1.htm">Docker专栏</a><a class="tag" taget="_blank" href="/search/perl/1.htm">perl</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/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a>
                        <div>目录Jail时代1979年贝尔实验室发明chroot2000年FreeBSD4.0发行FreeBSDJail2001年LinuxVServer发行2004年SolarisContainers发行云时代2006年google推出ProcessContainers2008年LXC推出2011年CloudFoundry推出Warden2013年LMCTFY启动2013年Docker推出到风靡全球云原生时</div>
                    </li>
                    <li><a href="/article/1690882110396641280.htm"
                           title="Spring Cloud Security" target="_blank">Spring Cloud Security</a>
                        <span class="text-muted">咔啡</span>

                        <div>SpringCloudSecurity提供了一组用于构建安全应用程序和服务的原语,最小化。可以从外部(或集中)高度配置的声明式模型适用于通常使用中央契约管理服务的大型合作远程组件系统的实现。在像CloudFoundry这样的服务平台上也很容易使用。基于SpringBoot和Spring安全性OAuth2,我们可以快速创建实现常见模式的系统,如单点登录,令牌中继和令牌交换。</div>
                    </li>
                    <li><a href="/article/1684996444433494016.htm"
                           title="备注" target="_blank">备注</a>
                        <span class="text-muted">追忆十年</span>

                        <div>参考书籍:《Docker容器与容器云》Problem?为什么容器只能跑一个进程?为何一直在用的某个JVM参数,在容器中就不好使了?为何Kuberneetes不能固定ip地址?容器网络连接不通该如何去Debug?2013年后的技术领域AWS/OpenStack/Pass(CloudFoundry)openvz阿里开源项目(PouchContainer)PaaS2014Docker公司发布swarm项</div>
                    </li>
                    <li><a href="/article/1684372221486772224.htm"
                           title="SpringCloud 学习(一)父工程搭建" target="_blank">SpringCloud 学习(一)父工程搭建</a>
                        <span class="text-muted">java猿记</span>

                        <div>SpringCloud介绍SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式,使用SpringCloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及CloudFoundry等托管平台。Spr</div>
                    </li>
                    <li><a href="/article/1682260446104596480.htm"
                           title="Spring Cloud教程 (一)云原生应用程序" target="_blank">Spring Cloud教程 (一)云原生应用程序</a>
                        <span class="text-muted">嘻嘻哈哈1155</span>

                        <div>SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式,使用SpringCloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及CloudFoundry等托管平台。特性SpringCloud专注于</div>
                    </li>
                    <li><a href="/article/1679394183921610752.htm"
                           title="CNCF宣布containerd毕业" target="_blank">CNCF宣布containerd毕业</a>
                        <span class="text-muted"></span>

                        <div>阿里云、AWS、CloudFoundry、Docker、Google、IBM、RancherLabs以及更多支持促进生态系统最广泛采用的容器运行引擎加利福尼亚州旧金山,2018年2月28日-支持Kubernetes®和Prometheus™等开源技术的CNCF®(云原生计算基金会CloudNativeComputingFoundation®)今天宣布,在Kubernetes、Prometheus、</div>
                    </li>
                    <li><a href="/article/1671719769662906368.htm"
                           title="SAP WebIDE一个和Destination相关的问题 - OData下拉菜单里的Destination从哪里来的" target="_blank">SAP WebIDE一个和Destination相关的问题 - OData下拉菜单里的Destination从哪里来的</a>
                        <span class="text-muted"></span>

                        <div>我今天做开发遇到一个问题:我有trial和正式的SAPCloudPlatform账号各一个:其中trial账号的webIDE连接到productive的CloudFoundry:productive账号的WebIDE也连接到productive的CloudFoundry:我发现在我新建OData服务时,从Serviceurl的下拉菜单里,选择不到我在SAP云平台里创建的Destination.怎么</div>
                    </li>
                    <li><a href="/article/1671594313378783232.htm"
                           title="售前工程师——PaaS" target="_blank">售前工程师——PaaS</a>
                        <span class="text-muted">Healer、bitZ</span>
<a class="tag" taget="_blank" href="/search/%E5%94%AE%E5%89%8D%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">售前工程师</a><a class="tag" taget="_blank" href="/search/paas/1.htm">paas</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>目录Paas的定义基础设施即服务(Laas)平台式即服务(Paas)软件即服务(Saas)paas的分类:APaas的一般特性1:大规模分布系统2:弹性伸缩框架3:运维自动化4:应用部署简单化5:支持多种服务主流Paas平台Docker/Caas容器云平台CloudFoundry平台Paas平台和Saas应用市场的关系Paas的未来发展说起云计算平台,大家可能都知道有laas,paas和saas。</div>
                    </li>
                    <li><a href="/article/1670239921408925696.htm"
                           title="VMware公司成为Linux基金会金牌会员" target="_blank">VMware公司成为Linux基金会金牌会员</a>
                        <span class="text-muted">llawliet0001</span>
<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><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>导读VMware是云基础架构和企业移动性的全球领导者,多年来一直积极参与开源开发。VMware通过Linux基金会项目(如ONAP,CloudNativeComputingFoundation(CNCF),CloudFoundry,OpenvSwitch等)稳步提高其开源参与度。它刚刚成为了金牌会员。VMware的首席开放源代码官DirkHohndel表示,“我们认为开源组件是我们产品的重要组成部</div>
                    </li>
                                <li><a href="/article/4.htm"
                                       title="java的(PO,VO,TO,BO,DAO,POJO)" target="_blank">java的(PO,VO,TO,BO,DAO,POJO)</a>
                                    <span class="text-muted">Cb123456</span>
<a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/TO/1.htm">TO</a><a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a>
                                    <div>转: 
http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html 
  
------------------------------------------------------------------- 
 O/R Mapping 是 Object Relational Mapping(对象关系映</div>
                                </li>
                                <li><a href="/article/131.htm"
                                       title="spring ioc原理(看完后大家可以自己写一个spring)" target="_blank">spring ioc原理(看完后大家可以自己写一个spring)</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>         最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬 的心情和激情通览了一遍。又一次接受了IOC 、DI、AOP等Spring核心概念。 先就IOC和DI谈一点我的看法。IO</div>
                                </li>
                                <li><a href="/article/258.htm"
                                       title="MyEclipse 2014中Customize Persperctive设置无效的解决方法" target="_blank">MyEclipse 2014中Customize Persperctive设置无效的解决方法</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/MyEclipse2014/1.htm">MyEclipse2014</a>
                                    <div>高高兴兴下载个MyEclipse2014,发现工具条上多了个手机开发的按钮,心生不爽就想弄掉他!
结果发现Customize Persperctive失效!!
有说更新下就好了,可是国内Myeclipse访问不了,何谈更新...
so~这里提供了更新后的一下jar包,给大家使用! 
1、将9个jar复制到myeclipse安装目录\plugins中
2、删除和这9个jar同包名但是版本号较</div>
                                </li>
                                <li><a href="/article/385.htm"
                                       title="SpringMvc上传" target="_blank">SpringMvc上传</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>  
@RequestMapping(value = WebUrlConstant.UPLOADFILE)
	@ResponseBody
	public Map<String, Object> uploadFile(HttpServletRequest request,HttpServletResponse httpresponse) {
		try {
			// </div>
                                </li>
                                <li><a href="/article/512.htm"
                                       title="Javascript----HTML DOM 事件" target="_blank">Javascript----HTML DOM 事件</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><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a>
                                    <div>HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。 
 
事件通常与函数结合使用,函数不会在事件发生前被执行! 
 
 
注:DOM: 指明使用的 DOM 属性级别。 
 
1.鼠标事件 
属性               </div>
                                </li>
                                <li><a href="/article/639.htm"
                                       title="动态绑定和删除onclick事件" target="_blank">动态绑定和删除onclick事件</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                    <div>因为对JQUERY和JS的动态绑定事件的不熟悉,今天花了好久的时间才把动态绑定和删除onclick事件搞定!现在分享下我的过程。 
 
     在我的查询页面,我将我的onclick事件绑定到了tr标签上同时传入当前行(this值)参数,这样可以在点击行上的任意地方时可以选中checkbox,但是在我的某一列上也有一个onclick事件是用于下载附件的,当</div>
                                </li>
                                <li><a href="/article/766.htm"
                                       title="HttpClient|HttpClient请求详解" target="_blank">HttpClient|HttpClient请求详解</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8/1.htm">网络应用</a><a class="tag" taget="_blank" href="/search/Security/1.htm">Security</a>
                                    <div>HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需</div>
                                </li>
                                <li><a href="/article/893.htm"
                                       title="递归 逐层统计树形结构数据" target="_blank">递归 逐层统计树形结构数据</a>
                                    <span class="text-muted">darkranger</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                                    <div>将集合递归获取树形结构: 
 
 
/** 
 * 
 * 递归获取数据 
 * @param alist:所有分类 
 * @param subjname:对应统计的项目名称 
 * @param pk:对应项目主键 
 * @param reportList: 最后统计的结果集 
 * @param count:项目级别 
 */ 
 
 public void getReportVO(Arr</div>
                                </li>
                                <li><a href="/article/1020.htm"
                                       title="访问WEB-INF下使用frameset标签页面出错的原因" target="_blank">访问WEB-INF下使用frameset标签页面出错的原因</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/struts2/1.htm">struts2</a>
                                    <div><frameset rows="61,*,24" cols="*" framespacing="0" frameborder="no" border="0">          </div>
                                </li>
                                <li><a href="/article/1147.htm"
                                       title="MAVEN常用命令" target="_blank">MAVEN常用命令</a>
                                    <span class="text-muted">avords</span>

                                    <div>Maven库: 
http://repo2.maven.org/maven2/ 
Maven依赖查询: 
http://mvnrepository.com/ 
Maven常用命令: 1. 创建Maven的普通java项目:    mvn archetype:create    -DgroupId=packageName </div>
                                </li>
                                <li><a href="/article/1274.htm"
                                       title="PHP如果自带一个小型的web服务器就好了" target="_blank">PHP如果自带一个小型的web服务器就好了</a>
                                    <span class="text-muted">houxinyou</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                                    <div>最近单位用PHP做网站,感觉PHP挺好的,不过有一些地方不太习惯,比如,环境搭建。PHP本身就是一个网站后台脚本,但用PHP做程序时还要下载apache,配置起来也不太很方便,虽然有好多配置好的apache+php+mysq的环境,但用起来总是心里不太舒服,因为我要的只是一个开发环境,如果是真实的运行环境,下个apahe也无所谓,但只是一个开发环境,总有一种杀鸡用牛刀的感觉。如果php自己的程序中</div>
                                </li>
                                <li><a href="/article/1401.htm"
                                       title="NoSQL数据库之Redis数据库管理(list类型)" target="_blank">NoSQL数据库之Redis数据库管理(list类型)</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</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/NoSQL/1.htm">NoSQL</a>
                                    <div>3.list类型及操作 
        List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。 
  &nbs</div>
                                </li>
                                <li><a href="/article/1528.htm"
                                       title="谁在用Hadoop?" target="_blank">谁在用Hadoop?</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E5%85%AC%E5%8F%B8/1.htm">公司</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF/1.htm">应用场景</a>
                                    <div>Hadoop技术的应用已经十分广泛了,而我是最近才开始对它有所了解,它在大数据领域的出色表现也让我产生了兴趣。浏览了他的官网,其中有一个页面专门介绍目前世界上有哪些公司在用Hadoop,这些公司涵盖各行各业,不乏一些大公司如alibaba,ebay,amazon,google,facebook,adobe等,主要用于日志分析、数据挖掘、机器学习、构建索引、业务报表等场景,这更加激发了学习它的热情。</div>
                                </li>
                                <li><a href="/article/1655.htm"
                                       title="【Spark七十六】Spark计算结果存到MySQL" target="_blank">【Spark七十六】Spark计算结果存到MySQL</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>package spark.examples.db

import java.sql.{PreparedStatement, Connection, DriverManager}

import com.mysql.jdbc.Driver
import org.apache.spark.{SparkContext, SparkConf}

object SparkMySQLInteg</div>
                                </li>
                                <li><a href="/article/1782.htm"
                                       title="Scala: JVM上的函数编程" target="_blank">Scala: JVM上的函数编程</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a><a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a><a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a>
                                    <div>    说Scala是JVM上的函数编程一点也不为过,Scala把面向对象和函数型编程这两种主流编程范式结合了起来,对于熟悉各种编程范式的人而言Scala并没有带来太多革新的编程思想,scala主要的有点在于Java庞大的package优势,这样也就弥补了JVM平台上函数型编程的缺失,MS家.net上已经有了F#,JVM怎么能不跟上呢? 
    对本人而言</div>
                                </li>
                                <li><a href="/article/1909.htm"
                                       title="jar打成exe" target="_blank">jar打成exe</a>
                                    <span class="text-muted">bro_feng</span>
<a class="tag" taget="_blank" href="/search/java+jar+exe/1.htm">java jar exe</a>
                                    <div>今天要把jar包打成exe,jsmooth和exe4j都用了。 
遇见几个问题。记录一下。 
两个软件都很好使,网上都有图片教程,都挺不错。 
 
首先肯定是要用自己的jre的,不然不能通用,其次别忘了把需要的lib放到classPath中。 
困扰我很久的一个问题是,我自己打包成功后,在一个同事的没有装jdk的电脑上运行,就是不行,报错jvm.dll为无效的windows映像,如截图 
最后发现</div>
                                </li>
                                <li><a href="/article/2036.htm"
                                       title="读《研磨设计模式》-代码笔记-策略模式-Strategy" target="_blank">读《研磨设计模式》-代码笔记-策略模式-Strategy</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 




/*
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化

简单理解:
1、将不同的策略提炼出一个共同接口。这是容易的,因为不同的策略,只是算法不同,需要传递的参数</div>
                                </li>
                                <li><a href="/article/2163.htm"
                                       title="cmd命令值cvfM命令" target="_blank">cmd命令值cvfM命令</a>
                                    <span class="text-muted">chenyu19891124</span>
<a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a>
                                    <div>     cmd命令还真是强大啊。今天发现jar -cvfM aa.rar @aaalist 就这行命令可以根据aaalist取出相应的文件 
  例如: 
     在d:\workspace\prpall\test.java 有这样一个文件,现在想要将这个文件打成一个包。运行如下命令即可比如在d:\wor</div>
                                </li>
                                <li><a href="/article/2290.htm"
                                       title="OpenJWeb(1.8) Java Web应用快速开发平台" target="_blank">OpenJWeb(1.8) Java Web应用快速开发平台</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E5%BA%94%E7%94%A8/1.htm">企业应用</a>
                                    <div>  
  OpenJWeb(1.8) Java Web应用快速开发平台的作者是我们技术联盟的成员,他最近推出了新版本的快速应用开发平台  OpenJWeb(1.8),我帮他做做宣传 
 
  OpenJWeb快速开发平台以快速开发为核心,整合先进的java 开源框架,本着自主开发+应用集成相结合的原则,旨在为政府、企事业单位、软件公司等平台用户提供一个架构透</div>
                                </li>
                                <li><a href="/article/2417.htm"
                                       title="Python 报错:IndentationError: unexpected indent" target="_blank">Python 报错:IndentationError: unexpected indent</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/tab/1.htm">tab</a><a class="tag" taget="_blank" href="/search/%E7%A9%BA%E6%A0%BC/1.htm">空格</a><a class="tag" taget="_blank" href="/search/%E7%BC%A9%E8%BF%9B/1.htm">缩进</a>
                                    <div>    IndentationError: unexpected indent 是缩进的问题,也有可能是tab和空格混用啦 
 
    Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和退出。增加缩进表示语句块的开</div>
                                </li>
                                <li><a href="/article/2544.htm"
                                       title="HttpClient 超时设置" target="_blank">HttpClient 超时设置</a>
                                    <span class="text-muted">dongwei_6688</span>
<a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a>
                                    <div>HttpClient中的超时设置包含两个部分: 
1. 建立连接超时,是指在httpclient客户端和服务器端建立连接过程中允许的最大等待时间 
2. 读取数据超时,是指在建立连接后,等待读取服务器端的响应数据时允许的最大等待时间 
  
在HttpClient 4.x中如下设置: 
  
  
HttpClient httpclient = new DefaultHttpC</div>
                                </li>
                                <li><a href="/article/2671.htm"
                                       title="小鱼与波浪" target="_blank">小鱼与波浪</a>
                                    <span class="text-muted">dcj3sjt126com</span>

                                    <div>一条小鱼游出水面看蓝天,偶然间遇到了波浪。  小鱼便与波浪在海面上游戏,随着波浪上下起伏、汹涌前进。  小鱼在波浪里兴奋得大叫:“你每天都过着这么刺激的生活吗?简直太棒了。”  波浪说:“岂只每天过这样的生活,几乎每一刻都这么刺激!还有更刺激的,要有潮汐变化,或者狂风暴雨,那才是兴奋得心脏都会跳出来。”  小鱼说:“真希望我也能变成一个波浪,每天随着风雨、潮汐流动,不知道有多么好!”  很快,小鱼</div>
                                </li>
                                <li><a href="/article/2798.htm"
                                       title="Error Code: 1175 You are using safe update mode and you tried to update a table" target="_blank">Error Code: 1175 You are using safe update mode and you tried to update a table</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div> 
 快速高效用:SET SQL_SAFE_UPDATES = 0;下面的就不要看了! 
 今日用MySQL Workbench进行数据库的管理更新时,执行一个更新的语句碰到以下错误提示: 
 Error Code: 1175 
 You are using safe update mode and you tried to update a table without a WHERE that </div>
                                </li>
                                <li><a href="/article/2925.htm"
                                       title="枚举类型详细介绍及方法定义" target="_blank">枚举类型详细介绍及方法定义</a>
                                    <span class="text-muted">gaomysion</span>
<a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/javaee/1.htm">javaee</a>
                                    <div>转发 
http://developer.51cto.com/art/201107/275031.htm 
 
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。建议大家可以看看,这两篇文章,《java枚举类型入门》和《C++的中的结构体和枚举》,供大家参考。 
 
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum</div>
                                </li>
                                <li><a href="/article/3052.htm"
                                       title="Merge Sorted Array" target="_blank">Merge Sorted Array</a>
                                    <span class="text-muted">hcx2013</span>
<a class="tag" taget="_blank" href="/search/array/1.htm">array</a>
                                    <div>Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. 
Note:You may assume that nums1 has enough space (size that is</div>
                                </li>
                                <li><a href="/article/3179.htm"
                                       title="Expression Language 3.0新特性" target="_blank">Expression Language 3.0新特性</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/el+3.0/1.htm">el 3.0</a>
                                    <div>Expression Language 3.0表达式语言规范最终版从2013-4-29发布到现在已经非常久的时间了;目前如Tomcat 8、Jetty 9、GlasshFish 4已经支持EL 3.0。新特性包括:如字符串拼接操作符、赋值、分号操作符、对象方法调用、Lambda表达式、静态字段/方法调用、构造器调用、Java8集合操作。目前Glassfish 4/Jetty实现最好,对大多数新特性</div>
                                </li>
                                <li><a href="/article/3306.htm"
                                       title="超越算法来看待个性化推荐" target="_blank">超越算法来看待个性化推荐</a>
                                    <span class="text-muted">liyonghui160com</span>
<a class="tag" taget="_blank" href="/search/%E8%B6%85%E8%B6%8A%E7%AE%97%E6%B3%95%E6%9D%A5%E7%9C%8B%E5%BE%85%E4%B8%AA%E6%80%A7%E5%8C%96%E6%8E%A8%E8%8D%90/1.htm">超越算法来看待个性化推荐</a>
                                    <div>  
       一提到个性化推荐,大家一般会想到协同过滤、文本相似等推荐算法,或是更高阶的模型推荐算法,百度的张栋说过,推荐40%取决于UI、30%取决于数据、20%取决于背景知识,虽然本人不是很认同这种比例,但推荐系统中,推荐算法起的作用起的作用是非常有限的。 
      就像任何</div>
                                </li>
                                <li><a href="/article/3433.htm"
                                       title="写给Javascript初学者的小小建议" target="_blank">写给Javascript初学者的小小建议</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>  一般初学JavaScript的时候最头痛的就是浏览器兼容问题。在Firefox下面好好的代码放到IE就不能显示了,又或者是在IE能正常显示的代码在firefox又报错了。     如果你正初学JavaScript并有着一样的处境的话建议你:初学JavaScript的时候无视DOM和BOM的兼容性,将更多的时间花在 了解语言本身(ECMAScript)。只在特定浏览器编写代码(Chrome/Fi</div>
                                </li>
                                <li><a href="/article/3560.htm"
                                       title="Java 枚举" target="_blank">Java 枚举</a>
                                    <span class="text-muted">ShihLei</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a>
                                    <div>注:文章内容大量借鉴使用网上的资料,可惜没有记录参考地址,只能再传对作者说声抱歉并表示感谢! 
  
一 基础  1)语法 
  
 
      枚举类型只能有私有构造器(这样做可以保证客户代码没有办法新建一个enum的实例) 
      枚举实例必须最先定义 
   2)特性   
 
     &nb</div>
                                </li>
                                <li><a href="/article/3687.htm"
                                       title="Java SE 6 HotSpot虚拟机的垃圾回收机制" target="_blank">Java SE 6 HotSpot虚拟机的垃圾回收机制</a>
                                    <span class="text-muted">uuhorse</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a><a class="tag" taget="_blank" href="/search/GC/1.htm">GC</a><a class="tag" taget="_blank" href="/search/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/1.htm">垃圾回收</a><a class="tag" taget="_blank" href="/search/VM/1.htm">VM</a>
                                    <div>官方资料,关于Java SE 6 HotSpot虚拟机的garbage Collection,非常全,英文。 
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html 
  Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning 
&</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><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>