java
程序员秋天
10年+后端研发和架构经验,擅长分布式,高性能、高并发架构设计,关注分布式、云原生、数字化、开源等
展开
-
JVM监控工具介绍
jstatd启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。实例:jstatd -J-Djava.security.policy=my.policymy.policy文件需要自己建立,内如如下:grant codebase "file:$JAVA_HOME/lib/tools.jar" { permission jav转载 2014-10-17 16:05:21 · 509 阅读 · 0 评论 -
Java程序性能优化Tip
转载自:Java程序性能优化Tip本博客是阅读这本小书后整理的读书笔记性质博客,增加了几个测试代码,代码可以在此下载:java时空间性能优化测试代码 ,文件StopWatch是一个秒表计时工具类,它的代码在文末。1. 时间优化1.1 标准代码优化a. 将循环不变量的计算移出循环 我写了一个测试例子如下:import util.StopWatch;/转载 2015-02-02 14:30:18 · 416 阅读 · 0 评论 -
学习java的好书及视频推荐
转载来自:点击打开链接要想在java领域成为大牛,除了不断进行项目实战以外,还要不断的进行进修和学习,以下将本人学习java多年使用的好书和一些好的视频推荐给大家,这些书和视频都是本人在网络找了很久,后来又经过实践证明的好书和视频。希望对大家学习java有帮助首先,是书的推荐:1 学习java,java基础,1.0 入门:Head First Java(转载 2015-02-03 12:07:00 · 1205 阅读 · 2 评论 -
Java程序员到架构师的推荐阅读书籍
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。一、Java编程入门类对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解转载 2015-02-03 13:25:05 · 852 阅读 · 0 评论 -
同一台机器部署多台tomcat服务器
今天下午,搭建公司项目的测试环境。要在本地搞两套tomcat应用服务器,分别部署不同的应用程序。通常我们的做法就是修改tomcat安装目录下conf下的server.xml配置文件中的端口号,以便部署不同的应用。不会造成端口冲突。 可就在更改完相应的端口号之后,部署了应用程序。服务可以正常启动,但是我集成在Eclipse中的tomcat确启动不起来了。我想,我把相应的端口原创 2015-04-08 17:57:09 · 929 阅读 · 0 评论 -
浅谈spi机制
看到公司的项目代码中,在META-INF下service中定义了一些文件。文件名都是以全限定类名的方式命名的,而且没每个文件里的内容也是一堆全限定类名的值。搞不懂这些是什么用途,遂百度了一下 看到了一篇介绍java中spi的博客链接,该博客中对于java的spi机制做了一些介绍,博客链接附上:点击打开链接传统的应用中,我们对于一个接口有多个实现类。每一个实现类我们在使用的时候,都是原创 2015-09-10 11:31:10 · 1469 阅读 · 0 评论 -
通过ServiceLoader实现链式处理
ServiceLoader与ClassLoader是Java中2个即相互区别又相互联系的加载器.JVM利用ClassLoader将类载入内存,这是一个类声明周期的第一步(一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况)。详情请参阅:详解Java类的生命周期那ServiceLoader又是什么呢?Serv转载 2015-09-10 12:34:10 · 449 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难转载 2015-09-14 10:06:46 · 360 阅读 · 0 评论 -
JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别
java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制。否则可能导致应用程序宕掉。举例说明含义:-Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸512MB,按需分配。说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.Out转载 2014-10-17 15:29:03 · 593 阅读 · 0 评论 -
走进JVM,浅水也能捉鱼!
当jvm运行起来的时候,它会向系统申请一片内存区(不同的jvm实现可能不同,有些可以使用虚拟内存),将这块内存分出一部分存储许多东西,例如:程序 创建的对象,传递给方法的参数,返回值,局部变量等等,我们将这块内存称之为“运行时数据区”, 运行时数据区可以划分成方法区、堆、java栈、pc寄存器、本地方法栈。 看到上面这幅图,和这些解说你可能大概的明白jvm 体系是个啥样子,但是你或许还不了解运转载 2014-10-17 17:12:41 · 581 阅读 · 0 评论 -
HeadFirst设计模式读书笔记--观察者模式(1)(二)
认识观察者模式我们看看报纸和杂志的订阅是怎么回事:报社的业务就是出版报纸向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸。当你不想再看报纸的时候,取消订阅。他们就不会再送新报纸来。只要报社还在运营,就会一直有人(或单位)向他们订阅报纸或取消订阅报纸。出版者+订阅者=观察者模式如果你了解报纸的订阅是怎么回事,其实就知道观察者模式是怎原创 2012-08-28 13:39:21 · 877 阅读 · 0 评论 -
HeadFirst设计模式读书笔记--观察者模式(2)(二)
设计气象站(案例)实现气象站public interface Subject{ /* *这两个方法都需要观察者作为变量,该观察者是用来注册或被删除的 */ public void registerObserver(Observer o); public void removeObserver(Observer o);原创 2012-09-06 15:52:10 · 526 阅读 · 0 评论 -
HeadFirst设计模式读书笔记--观察者模式(3)(二)
使用java内置的观察者模式java.util包内包含最基本的Oberver接口和Observable类,这和我们的Subject接口与Observer接口很相似。Observer接口与Observable类使用上更方便,因为许多功能都已经事先准备好了。你甚至可以使用推(push)或拉(pull)的方式传送数据。为了更了解java.util.Observer和java.ut原创 2012-09-06 16:27:57 · 496 阅读 · 0 评论 -
HeadFirst设计模式读书笔记--装饰者模式(三)
一、认识装饰者模式1.装饰者和被装饰对象有相同的超类型2.你也可以用一个或多个装饰者包装一个对象3.既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装的)的场合,可以用装饰过的对象代替他4.装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的5.对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用你喜欢的装饰者来装饰对象原创 2012-09-07 11:30:06 · 1022 阅读 · 0 评论 -
JMS学习笔记(一)
由于最近研发项目进展缓慢,故在有限的时间里学习一下JMS,在此做笔记为证。一、JMS的基本概念源引,在developerworks看到的一篇文章,来为JMS下个定义:JMS是什么?Java MessageService规范 1.1 声称: JMS 是一组接口和相关语义,它定义了原创 2013-04-02 10:09:17 · 620 阅读 · 0 评论 -
JMS学习笔记(二)
接下来的一节,我对JMS中的一些接口和一些开发步骤做个记录。方便进行简单的基于JMS的开发。一、JMS中的接口JMS 定义了一组封装各种消息概念的高级接口。而这些接口又因为两个消息域——PTP和 pub/sub——进行了进一步地定义和定制。高级接口包括:ConnectionFactory:一个创建 Connection 的受管理对象。Connection:连接到原创 2013-04-02 10:22:38 · 735 阅读 · 0 评论 -
JMS学习笔记(三)
在这一节中,我着重介绍一下JMS1.1中的公共接口,以及该接口下的重要方法ConnectionFactoryConnectionFactory 是一个可以从JNDI检索的受管理对象,它建立了到提供者的连接。它包含 createConnection() 方法,该方法返回了一个 Connection 对象。ConnectionConnection 封装了一个连接到提原创 2013-04-02 10:32:56 · 621 阅读 · 0 评论 -
关于数据库表字段的数据权限设计
吐槽:刚在同事的帮忙下,把maven工程成功导入到eclipse,期间遇到的最大问题就是安装eclipse插件,花费了其中大部分的时间现在做的研发产品,遇到的一个新的需求是“控制外部系统对于表中字段的访问权限”,其实说白了,就是“对于CRUD操作,操作的字段根据字段权限表来做的”。但是,我觉得真正要做到对于数据库表字段的权限设计,面临一下几个问题:问题一:对于数据库表中的非空字段和原创 2013-05-27 17:04:44 · 4289 阅读 · 1 评论 -
HeadFirst设计模式读书笔记(一)
OO基础主要包括:抽象,封装,多态,继承。引言建议:我们假设你知道OO基础包括了多态的用法,继承就像按契约进行设计、封装是如何运作的。如果你觉得脑袋有一点生锈了,快快拿出你的《Head First Java》复习,然后在把这章读一遍。OO原则主要包括:(1)封装变化,(2)多用组合,少用继承,(3)针对接口编程,不针对实现OO模式策略模式:定义算法族,分别封装起来,让他们之原创 2012-08-28 12:04:27 · 431 阅读 · 0 评论