eclipse远程debug启动报错:JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:741]

参考http://1985wanggang.blog.163.com/blog/static/776383320120384555181/http://1985wanggang.blog.163.com/blog/static/776383320120384555181/上面的eclipse远程debug配置方式,发现如果在eclipse中关掉debug进程和远程的应用进程后,不能再启动应用了,报了如下的错:

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:741]

后来才发现任务管理器中有个java.exe的进程,这个进程就是jetty容器进程。手动杀掉这个进程后,才可以重新启动应用和debug功能。

网上有一些解决方法:

1. 设置hosts文件127.0.0.1与localhost的映射

2. 打开防火墙,让javaw.exe可以访问网络

3. 重启eclipse或者重启电脑

以上的几种方法都试过了,都不管用。

还是自己研究,经查,原来是很弱的原因:

关闭这个jetty的进程java.exe不是通过关闭jetty容器来实现的,而是用eclipse debug的客户端来关闭的。

解决方案:

在菜单栏Run–>Debug Configurations–>然后选择你的remote java application–>connect中有一个Allow termination of remote VM的复选框,勾上这个就行了。

然后启动了jetty容器后,再启动debug,此时就可以terminate debug来关闭jetty容器的进程了。(注意:不能直接在启动了jetty容器后,点Terminate来关闭jetty,这样不能关闭jetty,因为它是一个后台运行的java.exe进程在运行jetty容器,只能通过jpda的debug方式来远程关闭jetty容器,或者在任务管理器中干掉java.exe进程)

Linux上搭建SVN服务

我自己尝试了一下在Linux上搭建SVN服务,包括安装svn软件、创建资源库、配置用户名和密码、启动svn服务等,比较顺利。

如果本文中的命令运行不成功,请在命令前面加“sudo ”后再试试。。。。。。

1. 安装subversion软件

apt-get install subversion    或者  yum install subversion

安装后使用svn命令验证:

如果出现:Type ‘svn help’ for usage.  就表明安装成功

2. 创建资源库

首先我cd到目录/data/svn_repository下(这个目录不是固定的,你可以用你自己创建的一个目录),这个目录用来作为资源库的根目录。

创建一个test_java的资源库

svnadmin create /data/svn_repository/test_java

此时cd到test_java下,发现有如下的文件:

drwxr-xr-x 2 root root 4096 2012-05-05 01:50 conf/

drwxr-sr-x 6 root root 4096 2012-05-05 01:50 db/

-r–r–r– 1 root root    2 2012-05-05 01:50 format

drwxr-xr-x 2 root root 4096 2012-05-05 01:50 hooks/

drwxr-xr-x 2 root root 4096 2012-05-05 01:50 locks/

-rw-r–r– 1 root root  229 2012-05-05 01:50 README.txt

我们只需要关注conf目录,里面有三个文件:authz  passwd  svnserve.conf

authz:用于设置用户组、用户和用户组的权限

passwd:给用户设置密码

svnserve.conf:这个资源库的启动svn服务的设置,详见:http://hi.baidu.com/dreamsun2008/blog/item/e00ef2fb46c5d6d8b48f31d0.html

3. 在本地提交文件到资源库

我有一个文件/data/tmp/test.txt文件,现在我要把这个文件夹tmp添加到资源库test_java中:

svn import /data/tmp file:///data/svn_repository/test_java/ -m “This is a test”

(注意import不能对单个文件使用,只能对文件夹使用,-m “This is a test”是注解)

4. 在本地查看资源库

既然提交了,那如何查看资源库的文件呢:

svn list file:///data/svn_repository/test_java/

5. 在本地签出资源库

svn co file:///data/svn_repository/test_java test

签出资源库test_java并取名为test

6. 启动资源库svn服务

svnserve -d -r /data/svn_repository/test_java/ –listen-port 8888

把资源库test_java的svn服务启动,并把服务的端口号设置为8888

(注意:listen-port前面有两个横杠)

svnserve的更多参数请用命令:

svnserve –help

7. 在windows上查看或者签出资源库

方式一:先安装svn客户端,然后使用svn命令:

查看资源库 svn list svn://ip地址:8888/

签出资源库 svn co svn://ip地址:8888/

方式二:使用TortoiseSVN客户端查看

查看资源库:在任意文件夹的空白处右键–>TortoiseSVN–>Repo-browser,然后在地址栏输入:

用tortoisesvn查看资源库
用tortoisesvn查看资源库

svn://ip地址:8888/

签出资源库: 在任意文件夹的空白处右键–>SVN Checkout,然后如下填写:

TortoiseSVN签出资源库
TortoiseSVN签出资源库

(注意:地址中没有资源库的名字test_java是因为之前启动资源库的时候,是直接对资源库启动的,一个资源库对应一个端口号,所以在windows上访问的时候就不需要带上资源库的名字了。)

8. 给资源库添加用户和密码

每个资源库都有用户验证的配置,在/data/svn_repository/test_java/conf下的三个文件:authz、passwd、svnserve.conf

修改group,并添加用户名:

vi authz

编辑如下的地方:

[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

develop = harry,sally

(注意:develop为group的名字,可以随便取。等号后面的是新增加的用户名)

添加用户名的密码:

vi passwd

编辑如下的地方:

[users]

harry = harryssecret

sally = sallyssecret

设置test_java资源库的访问需要验证用户名密码

vi svnserve.conf

编辑如下的地方:

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authzanon-access = none
auth-access = write

杀掉之前启动的svn仓库进程:

ps -ef | grep svnserve

kill -9 对应的进程号pid

再启动test_java的svn服务:

svnserve -d -r /data/svn_repository/test_java/ –listen-port 8888

此时再使用“7.在windows上查看资源库”中的方式二来查看资源库就会弹出对话框,要你输入用户名和密码

Reference

http://www.subversion.org.cn/svnbook/1.4/index.html

http://linux.chinaitlab.com/set/882200.html

http://www.indiangnu.org/tag/webdav/

 

 

Eclipse Indigo中发生Unable to load default SVN client错误

可能大家在安装SVN的时候会出现“Unable to load default SVN client错误”,不要紧张,那是你机器上没有 JAVAHL 这个包, 这个是另外的一个开源组件。

最简单的解决办法:

其他解决方案:

官方参考:http://subclipse.tigris.org/wiki/JavaHL#head-7498d204a5be83e0e97d196ba75fc797d5f0c822

 

windows下Go语言开发环境搭建

Golang是Google的第二门编程语言,但是Golang与simple和Dart不同的是,Golang是一门系统级编程语言,也就是说他和C++、Java是同类型的语言。学习Golang是我自己的爱好和兴趣,我个人对这个语言比较看好,毕竟这个语言是在已经有了C++、Java、Javascript、Python等强大并极其流行的语言下诞生的,他就是为了补偿现有编程语言的不足,提取他们的精髓。就此创造出了一门能适应当代快速开发和迭代、拥抱变化、大数据、多核高并发的场景。该语言的被号称是:互联网时代的C。这就意味着:1.具有互联网web开发所需的特点,即开发高效;2.具有C语言一样的运行速度,即运行高效。相信这两个特点会让你找到归宿了吧。希望Golang能流行起来,让大家见到它的魅力。下面介绍下Go语言开发环境搭建的步骤:

1. 安装

Windows上的安装步骤如下:

  • 下载Go开发环境:http://code.google.com/p/go/downloads/list
  • 如果你下载的是exe或者msi的安装包,就直接安装了,不需要配置环境变量
  • 如果下载的zip,就将其解压;配置环境变量
    • GOROOT = D:Program Files\go
    • GOBIN = %GOROOT%\bin (现在的go1.5已经不需要配置这个环境变量了)
    • GOARCH = 386                   (如果你的系统是32位则是386,如果是64位则是amd64(现在的go1.5已经不需要配置这个环境变量了)
    • GOOS = windows                (如果你的操作系统是windows,如果是linux请写linux)(现在的go1.5已经不需要配置这个环境变量了)
    • path:如果末尾如有没有分号,则添加之,然后再末尾添加%GOROOT%\bin
  • 安装好了后,在cmd中运行go,如果出现go命令的帮助信息,则go开发环境安装正确。

Linux、FreeBSD、OS X上的安装请看http://ioio.name/golang-install.html或者官网的介绍:http://golang.org/doc/install.html

2. 测试(Windows下)

在任何地方创建一个文件:goTest.go

写入如下代码后保存:

在cmd中cd到该文件的路径下,用一下命令进行编译、链接和执行

go run goTest.go

如果输出hello world!表示开发环境安装成功

Go 1的性能也很喜人,比较新的一个对Go 1和Node.js的性能对比测试:http://www.cnblogs.com/QLeelulu/archive/2012/08/12/2635261.html 

3. 开发工具

Golang(Go语言)中的defer的使用和机制

defer在Golang中可以被用来代替c++、java、C#中的try-catch-finally语句。

也可以一定程度上用来避免c、c++中的malloc-free和new-delete的未成对出现的风险。

defer是将需要执行的语句放到函数体的其他步骤执行后再执行,如果一个函数中有多个defer操作,那么这些defer操作会类似于放入栈中一样,先被defer的操作后执行。