`
文章列表
平台无关性     Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现。不仅使用Java编译器可以把Java代码编译成存储字节码的Class文件,使用JRuby等其他语言的编译器也可以把程序代码编译成Class文件,虚拟机并不关心Class的来源是什么语言,只要它符合一定的结构,就可以在Java中运行。Java语言中的各种变量、关键字和运算符的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更强大,这便为其他语言实现一些有别于Java的语言特性提供了基础,而且这也正是在 ...
设计模式的六大原则 1、开闭原则(Open Close Principle):对扩展开放对修改关闭 2、里氏代换原则(Liskov Substitution Principle):父类出现的地方,子类也可出现 3、依赖倒转原则(Dependence Inversion Principle):依赖抽象而不依赖具体 4、接口隔离原则(Interface Segregation Principle):多个隔离的接口,比使用单个接口要好 5、迪米特法则(最少知道原则)(Demeter Principle):最少知道原则。一个实体应当尽量少的与其他实体之间发生相互作用 6、合成复用原则(C ...
package cn.smallbug.thread; /** * 资源定义 * * @timestamp Feb 13, 2016 11:55:10 PM * @author smallbug */ class Resource { private String name; private int age = 0; private boolean flag = false; public synchronized void setShow(String name) { while (flag) try { this. ...
    今天使用java代码调用mongodb数据库,用maven引入了最新版的mongodb驱动,在网上找了demo结果发现将demo贴到eclipse上之后好多过期方法。所以猜想mongodb驱动版本肯定有很大的更新。     果不其然,mongodb的确有了最新版3.x。而网上几乎所有的demo都基于2.x版本。下面是在github上找的一些资料,再结合官方文档总结的3.x版本的CRUD操作。       以下演示源码地址:https://github.com/smallbug-vip/repo   首先在pom.xml中配置引入jar包: <dependency&g ...
安装 下载地址:https://www.mongodb.org/downloads#production  选择要下载的版本下载。   在/opt目录下创建mongodb文件夹     mkdir /opt/mongodb 在mongodb我文件下分别创建data,logs目录     cd /opt/mongodb     mkdir data     mkdir logs 添加mongodb用户,用户组     groupadd mongodb     useradd mongodb -g mongodb 修改mongodb文件夹所有者     chown -R ...
一共有四种MBean:     标准MBean(Standard MBeans)设计和实现是最简单的,这类MBean使用自己的方法名作为管理接口。     动态MBean(Dynamic MBeans)必须实现一个指定的接口,由于动态MBeans在运行期间暴露它们的管理接口,因此更为灵活。     开放MBean(Open MBeans)属于动态MBeans,这类MBean依靠基础数据类型来实现通用管理,并为友情用户进行自我声明。     模型MBean(Model MBeans)同样也是动态MBeans,这类MBeans是完全可配置的,在运行期间进行自我声明;它们为资源动态工具提供一个 ...
    在tomcat中起到生命周期的核心接口是Lifecycle看一下这个接口的方法签名:     这个接口定义了所有组件可能处于的所有状态、增加获取删除监听器操作、组件初始化,开启,停止,注销操作和获取当前状态操作。     ...
一、server.xml详解 <?xml version="1.0" encoding="UTF-8"?> <!-- Server即Catalina servlet组件,它是server.xml的最外层元素 --> <!-- 常用属性:--> <!-- Address:Tomcat监听shutdown命令的地址,默认为localhost --> <!-- className:指定实现org.apache.catalina.Server接口的类,默认值为org.ap ...
在开始这篇blog之前应该先了解几个概念: 临界区:     临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待(例如:bounded waiting 等待法),有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用,例如:semaphore。只能被单一线程访问的设备,例如:打印机。 互斥量:     互斥量是一个可以处于两态之一的变量:解锁和加锁。这样,只需要一个二进制位表示它,不过实际上,常常使用一个整型量,0表示解锁,而其他所有的值则表 ...
项目源代码及相关jar包:https://github.com/smallbug-vip/repo/tree/master/code/web/back 一、搭建SpringMVC环境     因为现在主要讨论ajax异步上传图片到图片服务器,所以配置SpringMVC环境就简略介绍一下了,更具体步骤可以Google或者直接从链接下载源码。如果不做修改直接运行源码时需要注意,该源码已经链接数据库了,所以在配置文件中需要修改jdbc.properties修改数据库链接参数。否则无法启动。 配置web.xml <?xml version="1.0" encoding ...
如果不做特殊处理,springmvc是无法直接将前端输入的日期字符串转化为java.util.Date类型的。下面是两种配置springmvc可以将前端输入的日期字符串转化为java.util.Date类型的方式。 一、当前类有效 package cn.smallbug.core.web; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.beans.propertyeditors.CustomDa ...
之前测试代码: @Test public void testAddOld() { ApplicationContext appContext = new ClassPathXmlApplicationContext("application.xml"); appContext.getBean("testTbService"); TestTb testTb = new TestTb(); testTb.setName("小虫"); testTb.setBirthday(new Date()); ...
一、引言     Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域。其中有的区域是线程共享的有的区域是线程私有的,如下图所示。(更详细说明请看:http://smallbug-vip.iteye.com/blog/2274277)现在要讨论的java虚拟机字节码执行引擎就是执行在虚拟机栈中(本地方法暂不考虑),它是线程私有的。 二、运行时栈帧结构 现在放大虚拟机栈结构: 局部变量表     1)变量值的存储空间,由方法参数和方法内部定义的局部变量组成,其容量用Slot1作为最小单位。在编译期间,就在方法的Code属性的max_locals数 ...
类加载机制     Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(using)、和卸载(Unloading)七个阶段。其中验证、准备和解析三个部分统称为连接(Linking),这七个阶段的发生顺序如下图所示:     如上图所示,加载 ...
一、按代实现垃圾回收 先看一下整体结构:       新生代(Young generation): 绝大多数最新被创建的对象会被分配到这里,由于大部分对象在创建后会很快变得不可到达,所以很多对象被创建在新生代,然后消失。对象从这个 ...
Global site tag (gtag.js) - Google Analytics