wine

wine 卸载wine中已经安装的软件 到程序的目录里面 wine 卸载程序.exe wine,是一款优秀的Linux系统平台下的模拟器软件,用来将Windows系统下的软件在Linux系统下稳定运行,该软件更新频繁,日臻完善,可以运行许多大型Windows系统下的软件。另外英语单词wine是葡萄酒的意思。 刚刚步入Linux,难免要有时利用一下Windows的程序资源,Wine提供了一个用来运行Windows程序的平台。 Wine (Wine Is Not an Emulator)[即Wine不仅仅是一个模拟器]是一个在Linux和UNIX之上的,Windows 3.x 和 Windows APIs的实现.它是一个Windows兼容层,用通俗的话说,就是一个Windows模拟器,这个层既提供了一个用来从Windows源进出到UNIX的开发工具包(Winelib),也提供了一个程序加载器,该加载器允许不用任何修改Windows 3.1/95/NT的二进制文件,就可以运行在Intel Unix及其衍生版本下.Wine可以工作在绝大多数的UNIX版本下,包括Linux, FreeBSD, 和 Solaris. Wine不需要Microsoft Windows, 因为这是一个完全由百分之百的免费代码组成的,可以选择的实现,但是它却可以随意地使用本地系统的DLLs,如果它们是可以被利用的话.Wine的发布是完全公开源代码的,并且是免费发行的。 目前 Wine 仍在发展阶段,但是较新的版本可以运行一些著名软件,甚至是 Photoshop CS3! Wine的官方站点是http://www.winehq.com/,虽然你可以在它的官方站点下载源代码,自己配置编译,不过这个过程可是比较繁琐的!

2012-04-29 · 1 min · 31 words · -

JMS

JMS jms即Java消息服务 (Java Message Service) 应用程序接口是一个Java平台中关于面向消息中间件 (MOM) 的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。JMS (Java Messaging Service) 是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。 JMS是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC(Java Database Connectivity): 这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务 (有时称为消息中介程序或路由器) 从一个 JMS 客户机向另一个 JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成: 报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带: 简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。 Java消息服务是一个在 Java标准化组织 (JCP) 内开发的标准 (代号JSR 914) 。2001年6月25日,Java消息服务发布JMS 1.0.2b,2002年3月18日Java消息服务发布 1.1,统一了消息域。 JMS有以下元素组成。 JMS提供者 连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。 JMS客户 生产或消费基于消息的Java的应用程序或对象。 JMS生产者 创建并发送消息的JMS客户。 JMS消费者 接收消息的JMS客户。 JMS消息 包括可以在JMS客户之间传递的数据的对象 JMS队列 一个容纳那些被发送的等待阅读的消息的区域。队列暗示,这些消息将按照顺序发送。一旦一个消息被阅读,该消息将被从队列中移走。 JMS主题 一种支持发送消息给多个订阅者的机制 JMS模型 Java消息服务应用程序结构支持两种模型: ...

2012-04-29 · 1 min · 206 words · -

rt.jar 源码

rt.jar 源码 http://topic.csdn.net/u/20110125/10/06139927-2e44-4c76-b41c-fa7ea3206dd3.html java全部源代码,src.zip中没有的,在openjdk里的源代码加到eclipse里面.. 本来想问的.现在摸索出来了..可以到 http://download.java.net/openjdk/jdk6/下载源码 或者搜索 openjdk jdk6 ..如果你的jdk是jdk 5 或者jdk 7.那就搜索 openjdk jdk5 或者 openjdk jdk7.. 下载完以后解压缩.. eclipse里面选中 windows -preference-java-installed jres-选中jre6(你的可能是jre5 或者jre7)-edit-选中rt.jar-source attachment-external folders.. 选中解压缩的openjdk目录下的子目录 解压所在目录/jdk/src/share/classes/ ..然后重启eclipse.. 这样子原来添加src.zip所不能看的源代码,比如rt.jar下sun.misc包里的class..现在就可以看源代码了..

2012-04-28 · 1 min · 30 words · -

雅各布天梯

雅各布天梯 圣经中有这样一个故事: 雅各布梦见天使上下天堂的梯子是闪闪发光的,后人便把这梦想中的梯子,称之为雅各布天梯。该展品由变压器、羊角电极等部分组成。由变压器提供数十万伏的高压,在羊角电极间击穿空气,形成弓形电弧,产生磁场,使电弧向上运动,其运动过程类似于爬梯。当电弧被拉长到600mm左右,所施加的电压再不能维持产生电弧所需的条件,电弧就消失,此时羊角电极底部又会产生新的电弧,形成周而复始的电弧爬梯现象。 雅各布天梯则展示了电弧产生和消失的过程。二根呈羊角形的管状电极,一极接高压电,另一个接地。当电压升高到5万伏时,管状电极底部产生电弧,电弧逐级激荡而起,如一簇簇圣火似地向上爬升,犹如圣经中的雅各布天梯。 在2-5万伏高压下,两电极最近处的空气首先被击穿,形成大量的正负等离子体,即产生电弧放电。 空气对流加上电动力的驱使,使电弧向上升,随着电弧被拉长,电弧通过的电阻加大,当电流送给电弧的能量小于由弧道向周围空气散出的热量时,电弧就会自行熄灭。 说明: 在高压下,电极间距最小处的空气还会再次被击穿,发生第二次电弧放电,如此周而复始。

2012-04-25 · 1 min · 8 words · -

python mixin

python mixin 什么是Mixin设计模式 mixin设计模式可以看做是多继承的一种。那么首先,咱们谈谈为什么会出现多继承这种语法。 汽车和飞机他们都同属于交通工具,但飞机可以飞行,汽车无法做到,所以,飞行这个行为不能写到交通工具这个类中,如果每一个交通工具各自实现自己的行驶方法,就违背了代码尽可能重用的原则(如果交通工具种类越来越多,就会造成大量代码冗余)。 所以,我们要表示飞行这个行为,就需要进行多继承。但这样,我们就违背了继承关系必须是is-a原则。 在java中,虽然没有多继承,但我们可以通过interface来实现多继承。 在python中,没有interface这一语法,但它本身是支持多继承的。 在使用多继承的时候,很容易就会设计不当,导致继承链混乱,影响mro查找,所以,在编程的时候我们的原则就是,能使用其他方法代替多继承就尽量不适用多继承。 这个时候Mixin设计模式就应运而生,Mixin直译理解就是混入、补充的意思,它是多继承的一种。在多继承中,查找顺序是按mro继承链中的顺序进行的。 这样一来,我们不需要复杂而庞大的继承链,只要选择组合不同的类的功能,就可以快速构造出所需的子类。 2.Mixin设计模式实例 class Vehicle: pass class PlaneMixin: def fly(self): print(“Flying”) class Airplane(Vehicle, PlaneMixin): pass 可以看到,上述代码中,Airplane类实现了多继承,在继承链上,它继承了Vehicle类和PlaneMixin类,这里我们遵循Mixin设计模式的要求,在后面添加上后缀Mixin增强代码的可读性。 上述代码可以这么理解,Airplane只是一个Vehicle类,而不是Plane类,而Mixin后缀,它告诉其他读者,这个类是作为功能添加到子类中的,并不是作为父类,它的作用等同于Java中的interface。 使用Mixin设计模式的原则 在使用Mixin设计模式实现多重继承的时候要特别注意下列几点原则: 首先,Mixin类必须表示某一种功能,而不是某一个物体,这点跟java中的Runnable和Callable是一样的。 其次,它表示的责任必须单一,如果有多个功能,我们应该去实现多个Mixin类。 接下来,Mixin类不依赖于子类的实现,且属于抽象类,本身不能实例化,也不能继承Mixin以外的类。 最后,子类即使没有继承Mixin类,也必须照常工作,只是部分功能缺少无法使用。 Java的接口,只提供了“规格”的多重继承。Mixin类则同时提供了“规格”和“实现”的多重继承,使用上相比接口会更加简单。 补充 在其他框架或者语言中,也有类似的Mixin功能,如Ruby,Django,Vue, React等等。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/u011544909/article/details/106890774

2012-04-25 · 1 min · 43 words · -

golang JSON

golang JSON read field from json import "github.com/tidwall/gjson" gjson.Get(jsonStr, "foo.bar.status").String() go json string 格式化 var str bytes.Buffer _ = json.Indent(&str, []byte(data), "", " ") fmt.Println("formated: ", str.String()) time.Time 序列化 https://www.cnblogs.com/chenqionghe/p/13409556.html json.Marshal(struct { *User Password bool `json:"password,omitempty"` }{ User: user, }) json.Marshal() // 序列化 + 格式化 resp2, _ := json.MarshalIndent(s, "", " ") json.Unmarshal() struct json tag https://colobu.com/2017/06/21/json-tricks-in-Go/ type Result struct { Count int `json:"count"` Data MyStruct `json:"data,omitempty"` } func main() { out := shellExec(shell) var result Result json.Unmarshal([]byte(out), &result) fmt.Println(result.Count) } gjson https://github.com/tidwall/gjson ...

2012-04-25 · 3 min · 553 words · -

mind map

mind map https://www.processon.com http://naotu.baidu.com/home plantuml xxx

2012-04-25 · 1 min · 6 words · -

msysgit

msysgit Choose the Run Git from the Windows Command Prompt option Choose the Checkout as-is, commit as-is option

2012-04-25 · 1 min · 18 words · -

nexus OSS

nexus OSS # docker docker run \ -d \ --name nexus \ -p 30081:8081 \ -p 30083:8083 \ -v /etc/localtime:/etc/localtime:ro \ -v nexus-data:/nexus-data \ -e INSTALL4J_ADD_VM_PARAMS="-Xms128m -Xmx512m -XX:MaxDirectMemorySize=256m" \ sonatype/nexus3:3.65.0 # podman podman run \ -d \ --name nexus \ -p 30081:8081 \ -p 30083:8083 \ -v /etc/localtime:/etc/localtime:ro \ -v nexus-data:/nexus-data \ -e INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx256m -XX:MaxDirectMemorySize=256m \ sonatype/nexus3:3.39.0 config default username/password=admin/admin123 Blob Stores/Enable Soft Quota: 限制目录大小 download nexus-2.14.0-01-bundle.zip unzip and execute ./bin/nexus start add aliyun repo as proxy repository repository id: aliyun_repo repository name: aliyun_repo provider Maven2 ...

2012-04-24 · 1 min · 173 words · -

libvirt, virsh

libvirt, virsh libvirt virsh: command line utility # archlinux install libvirt sudo pacman -S libvirt virt-install sudo pacman -S iptables-nft dnsmasq dmidecode systemctl status libvirtd sudo systemctl enable libvirtd --now sudo systemctl enable virtlogd --now sudo systemctl enable virtlockd --now sudo usermod -a -G libvirt $(whoami) # ubuntu install libvirt sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager sudo systemctl enable --now libvirtd sudo usermod -aG libvirt $(whoami) # libvirt commands virsh list --all virsh vncdisplay archlinux sudo virsh net-list --all sudo virsh net-start default # test virsh -c qemu:///system virsh pool-list --all virsh pool-define-as pool0 dir - - - - /home/wiloon/workspace/libvirtPool virsh pool-build pool0 virsh pool-start pool0 virsh pool-autostart pool0 virsh help pool virsh help pool-autostart virsh pool-autostart pool0 --disable # remove pool virsh pool-destroy pool0 virsh pool-undefine poolname vim /etc/libvirt/qemu.conf ...

2012-04-24 · 4 min · 779 words · -

Brasero

Brasero Brasero是类Unix系统下的一个自由的光盘刻录程序,作为cdrtools,growisofs以及libburn (可选) 的图形化前端 (使用GTK+) 。 Brasero是Ubuntu和Xubuntu的GNOME桌面下的默认CD/DVD应用程序。 Brasero使用GNU通用公共许可证,是一个自由软件。

2012-04-24 · 1 min · 8 words · -

Moving The Ctrl Key

Moving The Ctrl Key http://emacswiki.org/emacs/MovingTheCtrlKey Microsoft Windows AutoHotkey On Windows you can use the AutoHotkey program which uses “scripts” to remap the keyboard. This method has a couple benefits. One is scripts can be compiled to a stand alone .exe file which can be executed on a machine that doesn’t have AutoHotkey. Another is, the key re-mapping can be set to only apply in emacs; the caps lock key will behave normaly in every other program. (If that’s what you want.) ...

2012-04-23 · 2 min · 214 words · -

git 冲突解决, conflict, <<< === >>>

git 冲突解决, conflict, «< === »> 远程文件覆盖本地文件 git pull 出现冲突后丢弃本地冲突文件修改,采用远程文件覆盖本地文件 git checkout git checkout test/src/main/resources/spring-shiro.xml 方法二 git pull 出现冲突后可以暂存本地修改 git stash ,然后git pull 更新代码,git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,然后可以提交git add . 加入索引库,然后本地提交git commit -m ‘注释’ 最后git push到远程 方法三 1.git pull 更新代码,发现 error: Your local changes to the following files would be overwritten by merge:pom.xml Please commit your changes or stash them before you merge. 这说明你的pom.xml与远程有冲突,你需要先提交本地的修改然后更新。 2.git add pom.xml ...

2012-04-22 · 1 min · 137 words · -

PCMCIA

PCMCIA PCMCIA是英文"PERSONAL COMPUTER MEMORY CARD INTERNATIONAL ASSOCIATION"的缩写,PCMCIA定义了三种不同型式的卡,它PCMCIA (PC机内存卡国际联合会的缩写) 是一个有300多个成员公司的国际标准组织和贸易联合会,该组织成立于1989年,目的是建立一项集成电路国际标准,提高移动计算机的互换性。这种计算机要求强度高,能耗低,尺寸小,而且对这几条性能的要求都很高。由于可移动计算机用户的需求变了,所以PC卡的标准也相应地变了。1991年,PCMCIA定义了原本用于内存卡的68个脚的I/O连接线路标准。同时增加了插槽使用说明。生产商意识到软件需要提高兼容性,因而这项标准也就得到了相应的应用。近年来,PCMCIA意识到高速度的应用需求增加了,如多媒体和高速网方面。因此,制定了CardBus 和 Zoomed Video规范,该规范允许MPEG video 和10 Mbit 的以太网以极高的速度运行。因为速度不断提高,PCMCIA也就一直在补充这项规范,从而提高了兼容性并考虑到了一些其它的可移动机方面的问题,如3.3V操作和电源管理。今天,PCMCIA不仅促进了可移动计算机内PC卡的协同工作能力,而且提高了许多其它产品的协同工作能力,如数字摄像机、有线电视、set-top boxes和汽车。由于需求模块化外围设备的产品种类增加了,因而许多外设的兼容性也就提高了。因此,PCMCIA近来也就更改了自己的使命: “发展模块化外设标准,促进在全世界的应用。” PCMCIA的新任务典型的是小型结构分卡标准。PCMCIA在原有的PC卡标准的基础上增加了PC机小型结构分卡标准,现在PCMCIA已经发布并在维持应用微型卡标准。另外,PCMCIA即将发布智能媒体卡标准,该标准已经为当今最小的模块化外设提供了内存结构解决方案。 PCMCIA定义了三种不同型式的卡,它们的长宽都是85.6×54mm,只是在厚度方面有所不同。Type I是最早的PC卡,厚3.3mm主要用于RAM和ROM;Type II将厚度增至5.5mm适用范围也大大扩展包括了大多数的modem (调制解调器) 和faxmodem (传真调制解调器) ,LAN适配器和其它电气设备;Type III则进一步增大厚度到10.5mm这种PC卡主要用于旋转式的存储设备 (例如硬盘) 。 PCMCIA总线分为两类,一类为16位的PCMCIA,另一类为32位的CardBus。 CardBus 是一种用于笔记本计算机的新的高性能PC卡总线接口标准,就像广泛地应用在台式计算机中的PCI总线一样。该总线标准与原来的PC卡标准相比,具有以下的优势: 第一,32位数据传输和33MHz操作。CardBus快速以太网PC卡的最大吞吐量接近90 Mbps,而16位快速以太网PC卡仅能达到20-30 Mbps。 第二,总线自主。使PC卡可以独立于主CPU,与计算机内存间直接交换数据,这样 CPU 就可以处理其它的任务。 第三,3.3V 供电,低功耗。提高了电池的寿命,降低了计算机内部的热扩散,增强了系统的可靠性。第四,后向兼容16位的PC卡。老式以太网和Modem设备的PC卡仍然可以插在CardBus插槽上使用。 高版本的PCMCIA卡接口一般都可以很好地兼容低版本的卡。也就是说一个Type I插槽只可以插入一张Type I 卡;一个Type II插槽可以插入一张Type II卡或一张Type I的卡;一个TypeIII的插槽则除了可以插入一张Type III卡外还可以插入两张兼容的Type I或Type II卡。

2012-04-22 · 1 min · 50 words · -

非编程天才参与开源项目的14种方式

非编程天才参与开源项目的14种方式 来源: http://blog.jobbole.com/16792/ 如果你想参与到开源项目中去,却又不知道从何入手,这里提供一些参考方法或许能给你提供一些帮助,哪怕你对你目前的技术还缺乏自信都不要紧。 开源软件已经改变了IT,甚至整个世界,正是因为有了你们,乐于奉献在开源事业中。不幸的是,很多人把参与到开源项目中想象成一个难以跨越的障碍一样,因此而退缩。我通常听到人们说他们很想参与到开源项目中来,但是因为以下的3个原因而打消了念头。 1. 我还不足够优秀 2. 我没有足够的是时间 3. 我不知道什么样的项目适合我 寻求机会参与到开源项目中去,你应该知道的三个基本原则: 1. 项目需要各种能力层次的专业人才。 2. 哪怕是微不足道的贡献也比没有好。 3. 从你正在使用的项目作为参与到开源的第一步 我从开源项目中所观察到最要命的想法是那些新人总认为要成为某种类型的天才程序员才能参与到开源中去,其实根本就不是这回事。当然,某些项目中的成员看起来就像摇滚明星,没错,他们确确实实是一个极具天赋的程序员,然而,我们中的绝大部分不是的。我们仅仅是那些只要把任务完成的人。有时我们做的付出的不需太多,有时我们需要花大把的时间,有时它就是编程,而有时它不是。 0. 加入邮件列表: 对于大多数项目,邮件列表仍然是项目开发沟通主要的渠道。在一个规模比较大的项目中通常有很多邮件列表可以选择,例如: PostgreSQL项目就有不少于12个面向用户的邮件列表和6个面向开发者的。我建议你关注最主要的几个面向用户邮件列表以及核心的开发者列表。 1. 关注博客: 博客一般由核心开发者维护,通常博客中包含项在未来版本的一些信息。如何获取这些信息呢?通常一个星级站点有包括来自很多相关项目的新闻或者博客词条,如果有一个星级站点,如: http://plant.gnome.org 或者 http://planet.MySQL.com ,那么你要做的仅仅是用Google搜索"planet <项目名>"。 2. 加入到IRC频道: 许多开源项目都有专门的互联网中继聊天(IRC)频道,用来为开发者和用户讨论开发问题。仔细查找项目站点中IRC频道叫什么。 3. 代码诊断: Bug通常很难报告出来,诊断快速处置bug有助于节省开发人员的时间。如果用户提出报告: "当我操作XX功能时,系统无法工作",你得花些时间解决这些问题。还是不是会重复出现?例如该类问题是否只是发生在某种浏览器不兼容?只在发行版有这样的问题还是其它的原因。 4. 关闭已修复的bug: 通常bug在代码库中修复了,但是在问题追踪系统中还没更新。清理掉这些杂乱的东西虽然耗时,但是对整个项目来说是值得的。 5. 测试beta版或者候选版本: 任何项目设计用于运行在多个平台时就有可能存在各种兼容性问题。当一个beta版或者候选版发布时,项目带头人希望能在不同的人和不同的平台上得到测试反馈结果,你就可以是其中之一。 6. 修复bug: 修复bug通常是贡献者开始接触代码的地方,非常简单,在问题追踪系统中找到感兴趣的bug,把bug修复,如果合适的话为代码的修复撰写文档。 7. 写测试: 绝大多数项目都有测试套件用来测试代码,很难想象测试套件中不能附加更多的测试在其上。使用测试覆盖工具诸如基于c的gcov、基于Perl的Devel::Cover,用来标识源代码没法通过测试套件测试到的范围,然后添加一个套件覆盖它。 8. 理性对待编译警告: 许多基于C项目的构建过程中经常会出现很多古怪的编译警告,这些警告通常不是错误,但是看起来像,太多的警告让编译器听起来就像在发假警报,仔细检查代码是否的确隐藏有bug。 9. 附上注释: 当你在深入研究代码时,你可能发现有疑惑的地方,如果感到疑惑,这对你来是一个机会,比别人也可能碰到同样的问题,给他们贴上注释提交补丁。 10. 创建例子: 一般项目都没有太多入门的例子,不管是web API、普通程序库、或者是GUI应用如Gimp、还是命令行工具,比起长篇的文档,一个恰当的例子能够更清晰更快速解释软件的使用方式。 11. 问题回答: 参与到社区最好的方式是帮助别人。回答问题,尤其是那些初次涉及的,这对于一个项目的成长很关键,即使你回答只是简单地"RTFM"(read the fxxk manual),每个人都要行动起来,项目如果要变得强大起来的话每个人需要动员起来。 12. 写博客: 如果你有博客,写下你使用项目的一些经验,记录你碰到的问题及解决的方法。你可以通过两种方式来提供帮助,一个是记住你身边帮助过你的人,另一个是记录下你将来可能会碰到的问题。 13. 改进网站: 很多程序员在图形设计方面显得非常糟糕,尤其是那些不能从设计部门得到帮助的项目网站。如果你有网页设计方面的技能,不妨改进下网站,网站作为项目的招牌,是值得花时间的。或许项目界面需要彻底改造,抑或仅仅是一个logo,这些是社区缺乏的技能,如果我能提供一些图形设计上的帮助,我会非常喜欢的。 有太多的方式参与到开源项目中,哪怕是我们写一个新产品的特性的历史回顾。每个使用开源项目的人都可以把技术带到社区和帮助开源成为IT产业中重要的一部分。 英文原文: Andy Lester 编译: 伯乐在线 – 刘志军

2012-04-20 · 1 min · 80 words · -

javac, java

javac, java public class Foo{ public static void main(String[] args) { System.out.println("foo"); } } javac Foo.java java Foo https://zhuanlan.zhihu.com/p/36529847

2012-04-17 · 1 min · 19 words · -

java -cp

java cp http://quicker.iteye.com/blog/856722 java -cp .;c:dir1lib.jar Test -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,windows上分号";“分隔,linux上是冒号”:“分隔。不支持通配符,需要列出所有jar包,用一点”.“代表当前路径。 虽然现在都有 eclipse 之类的 IDE 了,但有时候后会手工编译和运行一些程序,很多人包括多年开发经验的人都不知道怎么在命令行参 数运行类。有点杯具…… 使用范例: java -cp ..libhsqldb.jar org.hsqldb.Server -database mydb 或 java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 mydb -cp <class search path of directories and zip/jar files>

2012-04-17 · 1 min · 42 words · -

fd, 文件描述符

fd, 文件描述符 查看系统级文件描述符/FD 限制 cat /proc/sys/fs/file-max sysctl -a | grep fs.file-max 查看 shell 级 fd 数 限制 # 用户 shell 里创建的进程的 fd 数限制 ulimit -a|grep 'open files' ulimit -Hn ulimit -Sn 查看某一运行中进程的 fd 限制 cat /proc/<PID>/limits |grep 'Max open files' 查看系统已经打开的文件数 cat /proc/sys/fs/file-nr 查看某一进程的打开文件数量 lsof -p <PID> | wc -l ls -l /proc/<PID>/fd |wc -l 文件描述符 (File descriptor) 是计算机科学中的一个术语,是一个用于表述指向文件的引用的抽象化概念。 文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。 FD 文件描述符 一、概念 Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。 二、文件描述符、文件、进程间的关系 1.描述: 我们可以通过linux的几个基本的I/O操作函数来理解什么是文件操作符。 fd = open(pathname, flags, mode) // 返回了该文件的fd rlen = read(fd, buf, count) // IO操作均需要传入该文件的fd值 wlen = write(fd, buf, count) status = close(fd) 每当进程用open()函数打开一个文件,内核便会返回该文件的文件操作符(一个非负的整形值),此后所有对该文件的操作,都会以返回的fd文件操作符为参数。【注1】 ...

2012-04-15 · 4 min · 779 words · -

Class 文件内容, 方法区, 常量池

Class 文件内容, 方法区, 常量池 当JVM运行Java程序的时候,它会加载对应的 class文件,并提取class文件中的信息存放在JVM开辟出来的方法区内存中。那么这个 class 文件里面到底有些什么内容呢? 一、class文件内容概述 class文件是由8bits的字节流组成,全部字节构成了15个有意义的项目。这些项目之间没有任何无意义的字节,因此class文件非常紧凑。占据多字节空间的项目按照高位在前的顺序存放。下面我们详细讨论这些项目: magic (魔数) 每个class文件的前4个字节称为魔数,值为 0xCAFEBABE。作用在于轻松的辨别class文件与非class文件。 minor_version、major_version(次、主版本号) 各占2个字节。随着Java技术的发展,class文件的格式会发生变化。版本号的作用在于使得虚拟机能够认识当前加载class的文件格式。从而准确的提取class文件信息。 constant_pool_count 、constance_pool (常量池) 从这里开始的字节组成了常量池 。 存储了诸如符号常量、final常量值、基本数据类型的字面值等内容。JVM会将每一个常量构成一个常量表,每个常量表都有自己的入口地址。而实际上在JVM会将这些常量表存储在方法区中一块连续的内存空间中,因此class文件会根据常量表在常量池中的位置对其进行索引。比如常量池中的第一个常量表的索引值就是1,第二个就是2。有的时候常量表A需要常量表B的内容,则在常量表A中会存储常量表B的索引值x。而 constant_pool_count 就记录了有多少个常量表,或者所有多少个索引值。实际上,常量池中没有索引值为0的常量表,但这缺失的索引值也被记录在constant_pool_count中,因此 constant_pool_count等于常量表的数量加1。关于常量池的具体内容,我们会在下面详细讲述,并用一个例子来显示整个class文件的内容。 access_flags(访问标志) 占用2个字节。用来表明该class文件中定义的是类还是接口,访问修饰符是public还是缺省。类或接口是否是抽象的。类是否是final的。 this_class 占用2个字节。 它是一个对常量池的索引。指向的是常量池中存储类名符号引用的CONSTANT_Class_info常量表(见下面常量池具体结构)。比如this_class=0x0001。则表示指向常量池中的第一个常量表。通常这个表是指向当前class文件所定义的类名。 super_class 占用2个字节 与this_class类似,指向存放当前class文件所定义类的超类名字的索引的CONSTANT_Class_info常量表。 inteface_count、interfaces interface_count 是class文件所定义的类直接实现的接口或父类实现的接口的数量。占2个字节。intefaces包含了对每个接口的 CONSTANT_Class_info常量表的索引。 fields_count、fields fields_count 表明了类中字段的数量 。fields是不同长度的field_info表的序列。这些field_info表中并不包含超类或父接口继承而来的字段。field_info表展示了一个字段的信息,包括字段的名字,描述符和修饰符。如果该字段是final的,那么还会展示其常量值。注意,这些信息有些存放在field_info里面,有些则存放在field_info所指向的常量池中。下面我们阐述一下这个field_info表的格式: access_flags(2byte 访问修饰符) name_index(2byte 存储字段名的常量表在常量池中的索引) description_index(2byte 存储字段的所属类型的常量表在常量池中的索引) attribute_count(2byte 属性表的数量) attribute (属性) 其中attribute是由多个attribute_info组成。而JVM规范定义了字段的三种属性: ConstanceValue、Deprecated和Synthetic。 method_count、methods 与字段类似,method_count表明类中方法的数量和每个方法的常量表的索引。methods表明了不同长度的method_info表的序列。该表格式如下: access_flags(2byte 访问修饰符) name_index(2byte 存储方法名的常量表在常量池中的索引) description_index(2byte 存储方法的返回类型和参数类型的常量表在常量池中的索引) attribute_count(2byte 属性表的数量) attribute (属性) 其中方法的属性JVM规定了四种: Code,Deprecated,Exceptions,Synthetic。 常量池的具体结构 在Java程序中,有很多的东西是永恒的,不会在运行过程中变化。比如一个类的名字,一个类字段的名字/所属类型,一个类方法的名字/返回类型/参数名与所属类型,一个常量,还有在程序中出现的大量的字面值。比如下面小段源码红色显示的东西。 public class ClassTest { ...

2012-04-15 · 7 min · 1372 words · -

JRockit

JRockit Oracle JRockit (原来的 Bea JRockit) 系列产品是一个全面的Java运行时解决方案组合,包括了行业最快的标准Java解决方案。 大量的行业基准测试显示,基本JRockit JVM是世界上最快的JVM。JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒计的JVM响应时间,适合财务前端办公、军事指挥与控制和电信网络的需要。使用JRockit产品,客户已经体验到了显著的性能 提高 (一些超过了70% ) 和硬件成本的减少 (达50%) 。 Oracle JRockit 5.0是专门为在基于英特尔处理器的高性能服务器上运行大规模的关键任务型的服务器端应用而设计,包括支持64位的英特尔至强和英特尔安腾处理器。 最新版本的BEA JRockit 5.0支持多种平台,包括Solaris OS、Red Flag Linux服务器以及基于SPARC的系统,它通过专为改进应用可靠性而设计的BEA JRockit Mission Control套件提供了前所未有的控制能力。JRockit的确定性功能对即将推出的BEA WebLogic实时版本而言至关重要,后者能够提供可预测的实时应用响应。当应用响应时间以毫秒来衡量时,BEA WebLogic实时版本可以满足服务级别协议(SLA)的需求,如垃圾收集停顿时间,并提供可预测的性能。 BEA系统有限公司首席技术官Rob Levy说:“我们专注于持续创新,以帮助我们的客户迅速、高效率地部署企业应用。作为全球速度最快的面向大规模、关键任务型服务器端应用的Java虚拟机(JVM),JRockit令人印象深刻,它已建立起行业标准。” JRockit 5.0拥有一系列创新功能,帮助开发人员在工作效率、可管理性、性能和稳定性方面达到新水平。除了继续支持运行在Intel®处理器平台上的 Windows和Linux外,JRockit还首次可用于基于Solaris OS和SPARC的系统上。此外,BEA还与中科红旗软件公司达成协议,将BEA JRockit与Red Flag Linux服务器捆绑,为中国客户如中国邮政总局提供高性能的J2EE解决方案。今天,通过选择业界最快的Java虚拟机BEA JRockit,企业可在多种硬件平台和混合环境中使用单一的Java虚拟机,因为BEA JRockit为各种生产环境提供了一致的管理体验。 BEA JRockit Mission Control套件提供了可单独使用的性能工具,它为BEA JRockit的最新版本提供了补充。这个套件由几个独特的性能管理工具组成,可以监控、管理、分析及排除Java应用中的内存泄漏问题,而不会带来通常与这类工具有关的性能消耗问题,也不需要重启服务器来启动故障排除进程。BEA JRockit Mission Control套件包括三个工具,为开发人员和系统管理员提供了前所未有的实时可见性和控制能力。这些功能可以帮助开发人员通过改变使用模式和业务环境, 来调整应用性能、确保系统质量。这些新工具包括: ·BEA JRockit管理控制台。该工具捕获并展现有关垃圾收集停顿、内存利用和CPU使用的实时数据,以及来自Java虚拟机内部MBean服务器里面的JMX MBean信息。这项功能为开发人员和系统管理员控制网络内多个Java虚拟机实例提供了实时可见性和控制能力。 ·BEA JRockit运行时分析器(JRA)。JRA就像是一个随需应变的"飞行记录器",可以详细记录有Java虚拟机及应用运行的详细数据,帮助开发人员查看和分析应用在生产环境中的状况。 ·BEA JRockit内存泄漏检测器。这是一种实时分析工具,用于发现和查找导致内存泄漏的原因。 BEA JRockit为WebLogic Real Time(WebLogic实时版本)产品提供坚实基础 BEA WebLogic实时版本旨在提供可预测的应用响应速率,以确保对时间敏感的交易能顺利进行,不会发生出乎意料的延迟。借助轻便的Spring框架,开发 人员能够得到混合开发环境的所有好处,同时维持原先无法企及的可预测执行时间。有了BEA JRockit及其独特的确定性垃圾收集器(仅作为即将推出的BEA WebLogic实时版本的一部分发布),就能够把Java技术应用于原本只有采用C语言编程才能实现的高性能应用领域。 BEA系统有限公司Java运行时产品部总经理Guy Churchward说:“在金融服务行业,成本中心并不仅仅是业务部门的一部分,它本身就是一种业务。WebLogic实时版本的目标就是要提高性能, 使业务部门的决策者能够确信:WebLogic实时版本可以满足他们在关键任务型应用响应方面的需求。”

2012-04-15 · 1 min · 70 words · -