- 博客(44)
- 收藏
- 关注
原创 gc机制--垃圾检测、回收算法
参考:http://m.blog.csdn.net/article/details?id=44278233 垃圾收集器一般必须完成两件事:检测出垃圾;回收垃圾。怎么检测出垃圾?怎么回收垃圾? 检测: 引用计数法:给一个对象添加引用计数器,每当有个地方引用它,计数器就加1;引用失效就减1。 可达性分析算法:以根集对象为起始点进行搜索,如果有对象不可达的话,即是垃圾对象。这里的根集一般包括jav
2017-05-26 17:02:05
719
原创 jvm内存结构
http://developer.51cto.com/art/201303/387175.htmjvm的加载过程 java栈、java堆和方法区 1、寄存器 PC寄存器是一块很小的内存区域,主要作用是记录当前线程所执行的字节码的行号。2、栈 JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、
2017-05-26 14:21:07
319
原创 JVM面试题
JVM面试题 1.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。 3. 该区域是被线程共享的。 4. 方法区里有一个
2017-05-26 14:17:36
444
原创 redis详解-- 面试题
使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过
2017-05-26 14:16:03
518
原创 MyBatis面试题
mybatis可能会问4个方面的问题a.借口绑定b.一对一、一对多关系c.动态SQLd.缓存 以下摘自网络 http://m.blog.csdn.net/article/details?id=508491761.Mybatis比IBatis比较大的几个改进是什么a.有接口绑定,包括注解绑定sql和xml绑定Sql ,b.动态sql由原来的节点配置变成OGNL表达式,c. 在一
2017-05-24 23:33:36
420
原创 Spring MVC入门
参考: http://www.cnblogs.com/linjiqin/archive/2013/11/22/3437664.htmlSpring MVC入门 1.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求
2017-05-24 23:32:28
317
原创 nginx入门
Nginx是一个轻量级的Web服务器/反向代理服务器。它的一个突出优点是反向代理实现负载均衡。 实现原理: nginx作为代理服务器接收HTTP请求 根据各个负载节点的权重,会随机的由一个节点来处理这个请求,然后返回数据到nginx,最后响应http请求。正向代理和反向代理 正向代理就是客户端主动寻找一个服务器代理自己访问想要访问的服务端。比如:我们想访问外国的网站时遇到拦截,我们可以选择代
2017-05-24 23:30:24
302
原创 静态代码执行顺序
构造方法是只有你在new对象的时候才会执行,静态语句块和静态方法在类加载到内存的时候就已经执行了public class ExA { static { System.out.println("父类--静态代码块"); } public ExA() { System.out.println("父类--构造函数");
2017-05-24 23:28:56
291
原创 反射机制功能用法
1、什么是反射机制? 简单说,反射机制值得是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。2、java反射机制提供了什么功能? 在运行时能够判断任意一个对象所属的类 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任一对象的方法、设置属性值 在运行时创建类对象3、哪里用到反射机制? jdbc中有一行代码:Class.f
2017-05-24 23:27:09
274
原创 常用设计模式
常用设计模式有工厂模式、道理模式以及生产者消费者模式单例模式使用静态内部类的方式可以保证线程安全,并且比同步方法的性能好。package com.qqyumidi;public class SingleTon { // 利用静态内部类特性实现外部类的单例 private static class SingleTonBuilder { private static Sin
2017-05-24 23:25:02
308
原创 oracle 全文索引
--模糊查询的两种方式select * from dj_nsrxx where contains(nsrmc,'和谦亨') > 0;select * from dj_nsrxx where nsrmc like '%康仁如快餐店%';--建立分词器BEGINctx_ddl.create_preference ('my_chinese_vgram_lexer', 'chinese_vgram_
2017-05-24 23:23:20
1577
原创 程序七大设计原则
软件设计的七大原则设计模式遵循的一般原则:1.开-闭原则(Open-Closed Principle,OCP) 一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。这是面向对象设计(OOD)的基石,也是最重要的原则。2.里氏代换原则
2017-05-24 23:21:47
415
原创 内部类
内部类内部类从表面看是在一个类的内部又定义了一个类。public class OuterClass { private String name ; public String getName() { return name; } public void setName(String name) { this.name = name;
2017-05-24 23:19:54
271
原创 ssh原理及运行机制
Hibernate 核心:是将表与表之间的操作,映射成对象和对象之间的操作,这样简化了持久层的代码,减轻了程序员的负担 Hibernate原理 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的读取并解析映射信息 3.通过config.buildSessionFactory()
2017-05-24 23:18:25
567
原创 安装linux服务器的环境
http://www.cnblogs.com/a2211009/p/4265225.htmljdk有两种方式,一种是直接安装,两种是使用解压缩包。直接安装 1.添加ppa sudo add-apt-repository ppa:webupd8team/javasudo apt-get update2.安装oracle-java-installer jdk7 sudo apt-get ins
2017-05-24 23:16:10
417
原创 Hadoop2之在centos安装
参考:http://blog.csdn.net/circyo/article/details/46724335主要分为两部分:1、安装jdk;2、安装Hadoop 1、安装jdk ● 网上下载jdk,复制到/usr/java目录,然后解压 ● 在/etc/profile中添加环境变量2、安装Hadoop ● 网上下载Hadoop2.7.0,复制到/usr目录,然后解压,并重命名目
2017-05-24 23:14:57
261
原创 rmi远程方法调用
Java RMI 是远程方法调用机制(Remote Method Invocation)。它能够在某个java虚拟机上调用另一个java虚拟机中对象的方法。用此方法调用的远程对象必须实现远程接口。 现在大名鼎鼎的ejb和web service都是基于RMI实现的。 RMI调用步骤: 1、客户端对象调用客户端辅助对象的方法 2、客户端辅助对象打包调用信息(变量和方法),并将信息通过socket
2017-05-24 23:13:24
309
原创 hibernate状态
hibernate状态 Hibernate有三种状态,瞬时态、持久态和游离态瞬时态 一个对象刚new出来的时候是瞬时态,此时session和数据库中都没有这个对象的记录。持久态 如果一个对象在session和数据库中都存在,则这个对象处于持久态。一般情况下有这几种情况对象会处于持久态:对一个瞬时态的对象进行save操作;使用load和get方法加载数据;对一个游离态的对象进行update或者s
2017-05-24 23:06:20
251
原创 赋值、浅拷贝和深拷贝
直接赋值 先定义了一个变量a,然后将a变量赋值给b。则a、b两个变量都指向内存中同一个对象。public static <T> T[] extendsArray(T[] data){ int newLength = (data.length * 3)/2 + 1; return Arrays.copyOf(data, newLength);}public static void ma
2017-05-24 23:04:57
2021
原创 MySQL的语句执行顺序
MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。下面我们来具体分析一下查询处理的每一个阶段1、FORM: 对FROM的左边的表和右边的表
2017-05-24 23:03:42
316
原创 SQL优化
经常查询的字段建立索引where不要在索引列进行计算操作,不要用not in、不等于的运算符子查询转化为左连接先运行筛选掉更多数据的条件,MySQL中把这种条件放在前面,Oracle把这种条件放在后面尽量不要用select *,只查询自己需要的字段
2017-05-24 23:02:32
214
原创 JDK中常用包及其类和功能详细剖析
JDK所提供的所有标准Java类都存放在Java包中,如java.lang包中包含了运行Java必不可少的系统类。由于系统会自动将java.lang引入,所以不需要在源文件中用import语句来显示地引入这个包。另外,Java跪地过java.util和java.io是必须提供的标准包,在JDK中常用的包有以下几种:java.lang:语言包java.util:实用包java.awt:抽象窗口工
2017-05-24 23:01:17
1008
原创 tomcat配置优化
Tomcat配置优化从几个方面着手:内存、线程内存 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。JAVA_OPTS参数说明 - Xms Java虚拟机初始化时的最小内存; - Xmx java虚拟机可使用的最大内存; - XX: PermSize 内存永久保留区域 - XX
2017-05-24 22:59:36
338
原创 Object方法简介
Object有9个自带的方法,分别是:getClass,hashCode,equals,toString,clone wait,notify,notifAll和 finalizegetClass:获取当前对象所属类hashCode:获取当前对象的hashCode值equals: 判断当前对象是否等于参数对象,默认是和“=”一样,但是String,Date等对其进行了重写toString:返回
2017-05-24 22:58:12
181
原创 RabbitMQ消息队列测试代码
RabbitMQ由ERLANG实现,故需要安装Erlang和RabbitMQ。注意事项:ERLANG需要配环境变量RabbitMQ安装完之后需要:1)启动管理插件;2)启动服务器使用的jar包要和RabbitMQ服务器的版本一致详细教程参考:http://blog.csdn.net/segen_jaa/article/details/43230431
2017-05-22 23:39:58
452
原创 JMS消息队列入门
参考:http://blog.csdn.net/wl_ldy/article/category/1216997基本概念JMS(Java Message Service)即java消息服务。它提供了标准的生产、发送和接收信息的借口,简化了企业开发的流程。它提供了两种方式的消息通信模型:点对点的模型、发布/点阅模型。重要的几个概念:Destination:消息发送的目的地Message:被发送的消
2017-05-22 23:38:43
376
原创 HTTP协议知识点
HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.无连接:无连接
2017-05-22 23:37:53
279
原创 消息队列简介
消息队列中间件是分布式系统中重要的组件,主要解决异步消息、应用耦合、流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。应用场景异步消息 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1、串行的方式,2、
2017-05-22 23:36:35
333
原创 Mybatis详细配置
Mybatis的详细配置,使用的时候可以参考<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>
2017-05-22 23:35:29
236
原创 服务器通用安装配置
jdk 配置环境变量: 1、系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录(本人是 C:\Program Files\Java\jdk1.8.0_25) 2、系统变量→寻找 Path 变量→编辑。在变量值最后输入 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
2017-05-22 23:33:54
554
原创 jooq入门
参考:https://segmentfault.com/a/1190000006748584?utm_source=tuicool&utm_medium=referralJOOQ是啥 JOOQ 是基于Java访问关系型数据库的工具包。JOOQ 既吸取了传统ORM操作数据的简单性和安全性,又保留了原生sql的灵活性,它更像是介于 ORMS和JDBC的中间层。对于喜欢写sql的码农来说,JOOQ可以
2017-05-22 23:31:54
8954
原创 Junit和Spring、SpringBoot测试
Junit与SpringBoot的集成 需要引用maven依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency> 写一个公共父类,把配置写在这
2017-05-22 23:30:27
5199
原创 Kafka和ElasticSearch模型
如上图所示: - 1、服务器的Log和MySQL的Log作为输入,它们会把相应的Log写入到kafka服务集群中 - 2、ElasticSearch作为搜索引擎从kafka获取数据 - 3、控制中心负责从ES读取相应的统计展现给用户,以及写入MySQL作为备份
2017-05-22 23:29:08
496
原创 手机模拟器和Fiddler抓包
做APP后台开发测试时,我们需要一个手机,但是可能用自己的手机比较麻烦。这时我们可使用手机模拟器,这里推荐天天模拟器,请自行百度,安装即可使用。 手机的问题解决了。这时我们又会遇到抓包的问题。这里推荐使用Fiddler抓包工具,请自行百度安装。 剩下的就是配置的问题,需要在手机里配置相应的代理。这时百度经验找的配置教程,按照里面的步骤配置即可。
2017-05-22 23:27:32
738
1
原创 ElasticSearch安装
ElasticSearch安装 来自: http://www.open-open.com/lib/view/open1455955282167.html一、下载,目前最新版本是2.2.0下载地址:https://www.elastic.co/downloads/elasticsearch提供了四个类型的安装包,选择自己需要的,我下载的是tar类型二、安装1、首先要安装jdk,官方建议用1.7及
2017-05-22 23:26:00
406
原创 redis基础知识
本文为菜鸟教程Redis的笔记入门 安装配置Redis。 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。string:最原始的key-value方式hash:key不变,value是一个hashmap格式的数据结构。list:key不变,value是一个数组。它是有序的,提供了类似栈和队
2017-05-22 23:23:38
254
原创 docker入门命令教程
docker安装 参考 http://www.server110.com/docker/201411/11105.htmldocker安装与启动安装docker[root@localhost /]# yum -y install docker-io更改配置文件[root@localhost /]# vi /etc/sysconfig/dockerother-args列更改为:other_arg
2017-05-22 23:22:33
365
原创 docker与虚拟机
Docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。但是它们之间也是有区别的, 比较两图的差异,左图虚拟机的Guest OS层和Hypervisor层在docker中被Docker Engine层所替代。虚拟机的Guest OS即为虚拟机安装的操作系统,它是一个完整操作系统内核;虚拟机的Hypervisor层可以简单理解为一个硬件虚拟化平台,它在Host OS是以内核
2017-05-22 23:20:56
452
原创 linux小窍门
Linux下优雅的让程序后台运行假设在终端上启动运行了一个程序,跑了几天,如果不小心把terminal关了,那么程序就会终止,这是SIGHUP信号的原因,即使通过bg置为后台运行同样会如此,应该让程序成为一个daemon,步骤如下: - Ctrl+z 暂停程序的运行,可以看到程序的作业号,假设为1 - bg %1 置为后台运行 - disown -h %1 使其不受终端关闭的影响
2017-05-22 23:19:46
389
原创 ceph存储系统
1. Ceph概述 Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.” 也即,Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。应该说,这句话确实点出了Ceph的要义,可以作为理解Ceph系统设计思
2017-05-22 23:18:15
518
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人