自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (8)
  • 收藏
  • 关注

原创 restful学习

https://blog.csdn.net/justloveyou_/article/details/74379479MVC至少有以下三点不足: 每次请求必须经过“控制器->模型->视图”这个流程,用户才能看到最终的展现的界面,这个过程似乎有些复杂; 实际上视图是依赖于模型的,换句话说,如果没有模型,视图也无法呈现出最终的效果; 渲染视图的过程是在服务端来...

2018-07-19 14:37:38 125

原创 tomcat端口冲突

没想到用了tomcat这么多年会遇到端口冲突,于是就记录了一下 首先catalina run在命令行启动tomcat 启动失败发现bug netstat -ano | findstr “8080”找到占用8080端口的进程 taskkill /f /t /im xxx.exe 结束进程

2017-12-08 19:43:44 359

原创 Understanding the JVM(十二)虚拟机字节码执行引擎

java虚拟机的执行引擎:输入字节码文件(.class文件),通过解释执行或者编译执行进行字节码解析,输出执行结果。一 . 运行时栈帧结构=======栈帧是虚拟机栈的栈元素,栈帧存储了局部变量表,操作数栈,动态连接,和返回地址等。每一个方法的执行 对应的一个栈帧在虚拟机里面从如栈到出栈的过程。栈帧分配的内存在编译代码的时候已经确定了,不会受程序运行期变量的影响,仅仅取决于具体的虚拟机实现。

2017-11-20 15:14:03 180

原创 Understanding the JVM(十一)虚拟机的类加载器

JVM设计者把类加载阶段中的“通过’类全名’来获取定义此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类与类加载器类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类的加载阶段。对于任意一个类,都需要由它的类加载器和这个类本身一同确定其在就Java虚拟机中的唯一性,每一个类加载器

2017-11-06 16:38:14 182

原创 Understanding the JVM(十)虚拟机类加载的过程

1. 加载在加载阶段(可以参考java.lang.ClassLoader的loadClass()方法),虚拟机需要完成以下3件事情: 1. 通过一个类的全限定名来获取定义此类的二进制字节流(并没有指明要从一个Class文件中获取,可以从其他渠道,譬如:网络、动态生成、数据库,从其他文件生成比如JSP等); 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构; 在内存中生成一个代表这个

2017-11-06 15:33:08 169

原创 Understanding the JVM(九)虚拟机类加载的时机

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。 加载、验证、准备、初始化和卸载这5个阶段的顺序是确

2017-11-06 14:08:25 140

原创 Understanding the JVM(八)垃圾收集器

HotSpot垃圾收集器新生代:Serial收集器它是一种单线程垃圾收集器 1. 使用一个CPU或者一条线程完成垃圾回收 2. 在进行垃圾回收时,必须暂停其他所有工作线程 stop the Word 3. 采取复制算法 4. client模式下默认的新生代收集器。对于限定单个CPU的环境来说,Serial收集器由于没有线程...

2017-10-31 10:47:21 213

原创 Understanding the JVM(七)HotSpot算法实现

枚举根节点可作为GC Roots的节点主要是全局性的引用与执行上下文中,如果要逐个检查引用,必然消耗时间。 另外可达性分析对执行时间的敏感还体现在GC停顿上,因为这项分析工作必须在一个能确保一致性的快照中进行——这里的“一致性”的意思是指整个分析期间整个系统执行系统看起来就行被冻结在某个时间点,不可以出现分析过程中对象引用关系还在不断变化的情况,该点不满足的话分析结果的准确性就无法得到保证...

2017-10-30 14:37:10 180

原创 Understanding the JVM(六)判断哪些内存需要回收

引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1.任何时刻计数器值为0的对象就是不可能再被使用的。 客观的说,引用计数器算法(Reference Counting)的实现简单,判定效率很高,在大部分情况下,都是一个不错的算法。但是,主流的Java 虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是他很难解决u对象之间相互循环引...

2017-10-30 13:03:43 140

原创 Understanding the JVM(五)内存参数调优

java堆 -Xms and -Xmx (or: -XX:InitialHeapSize and -XX:MaxHeapSize) 指定JVM的初始和最大堆内存大小,Xms也可以理解为堆的最小值,两个值相等时java堆的大小确定。 java.lang.OutOfMemoryError:Java heap space 出现内存泄漏或者内存溢出。 通过设置-XX:+HeapDumpOnOutO

2017-10-28 16:04:24 105

原创 Understanding the JVM(四)对象的访问定位

在虚拟机栈中的局部变量表里面存有reference,通过reference数据来操作堆上的具体对象。对象具体的访问方式取决于虚拟机的实现。目前主流的访问方式有句柄和直接指针两种。句柄Java堆中划分出一块内存来作为句柄池,引用中存储对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。简单理解就是指针的指针。 直接指针如果使用直接指针访问,那么Java堆对象的布局中就必须考虑如何

2017-10-28 14:35:54 145

原创 Understanding the JVM(三)对象的内存布局

对象头HotSpot虚拟机的对象头包括两部分信息:运行时数据和类型指针。 运行时数据 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。官方称为“Mark word” 类型指针 即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。并不是所有的虚拟机实现都必须在对象数据上保留类型指针,换句话

2017-10-28 14:19:37 155

原创 Understanding the JVM(二)虚拟机对象的创建

对象创建类加载检查 遇到new指令时,先检查指令参数是否能在常量池中定位到一个类的符号引用: 1.如果能定位到,检查这个符号引用代表的类是否已被加载、解析和初始化过; 2.如果不能定位到,或没有检查到,就先执行相应的类加载过程;为对象分配内存 对象所需内存的大小在类加载完成后便完全确定(JVM可以通过普通Java对象的类元数据信息确定对象大小),为对象分配内存相当于把一块确定大小的内存从

2017-10-28 13:44:08 294

原创 Understanding the JVM(一)运行时数据区域

JVM在执行Java代码时都会把内存分为几个部分,即数据区来使用,这些区域都拥有自己的用途,并随着JVM进程的启动或者用户线程的启动和结束建立和销毁。 程序计数器作用记录当前线程所执行到的字节码的行号。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。意义JVM的多线程是通过线程轮流切换并分配处理器执行时间来实现的,在任何一个确定的时刻,一个处理器或者多核处

2017-10-27 20:15:27 165

原创 thinking in java——持有对象

关于向上转型为通用接口List<Apple> apples = new LinkedList<>();LinkedList中有List中没有的方法,如果要使用这些方法就不能向上转型为更通用的接口。添加一组元素public class AddingGroups { public static void main(String[] args) { Collection<Integer>

2017-09-23 16:40:50 258

原创 thinking in java——内部类

从外部类的非静态方法之外的任意位置(包括静态方法)创建某个内部类的对象,必须具体地指明这个对象的类型:OuterClassName.InnerClassNamepublic class Parcel2 { class Contents { private int i = 11; public int value() { return i; } } class Desti

2017-09-21 16:46:31 156

原创 thinking in java——接口

创建抽象类和抽象方法非常有用,因为它们可以使类的抽象性明确起来,并告诉用户和编译器打算怎样来使用它们。当要实现一个接口时,在接口中被定义的方法必须是public的java SE5的Scanner类的构造器接受一个Readable接口,创建一个实现了Readerable接口的类,可以使用Scanner作用于它。Readerable接口要求使用read()方法。public class Random

2017-09-20 18:54:54 148

原创 thinking in java——多态

多态也叫动态绑定或者后期绑定,运行时绑定,含义是在运行时根据对象的类型进行绑定。多态使我们只需要考虑编写与基类打交道的代码,发送消息给某个基类,具体调用时再通过导出类的方法进行调用,这叫做向上转型。public class Shape { public void draw() {} public void erase() {}} ///:~基类public class Square ex

2017-09-20 15:13:28 160

原创 thinking in java——复用类

复用代码的两种形式:在新的类中使用现有的类的对象 ——组合按照现有的类产生新类组合初始化对象的属性:class Soap { private String s; Soap() { print("Soap()"); s = "Constructed";//2.在构造器中 } public String toString() { return s; }} pu

2017-09-19 23:43:56 305

原创 thinking in java——初始化与清理

一.基本类型的重载如果传入的数据小于方法中声明的数据类型,实际数据类型就会被提升。char类型参数如果找不到接受char参数的方法,就会把char类型提升至int类型。如果实际传入的参数较大,就要进行窄化转换。 (int)x (float)x二.this关键字第一种情况:需要明确指出当前对象的引用 返回当前对象的引用:public class Leaf { int i = 0; Lea

2017-09-18 14:13:13 446

原创 thinking in java——操作符

一. String类支持+和+= +号意味着字符串连接,当String+非String元素时,将非String元素转换为String 二.别名现象class Tank { int level;} public class Assignment { public static void main(String[] args) { Tank t1 = new Tank();

2017-09-17 23:57:08 365

原创 设计模式之备忘录模式

代码实现/** * 源发器类 * @author Administrator * */public class Emp { private String ename; private int age; private double salary; //进行备忘操作,并返回备忘录对象 public EmpMemento memento(){

2017-08-21 17:20:02 164

原创 设计模式之观察者模式

实现代码(推的方式)目标对象public class Subject { protected List<Observer> list = new ArrayList<Observer>(); public void registerObserver(Observer obs){ list.add(obs); } public void removeObse

2017-08-21 16:59:14 566

原创 设计模式之状态模式

实现代码public interface State { void handle();}/** * 空闲状态 * @author Administrator * */public class FreeState implements State { @Override public void handle() { System.out.printl

2017-08-21 16:05:47 123

原创 设计模式之模板方法模式

public abstract class BankTemplateMethod { //具体方法 public void takeNumber(){ System.out.println("取号排队"); } public abstract void transact(); //办理具体的业务 //钩子方法 public void evalua

2017-08-21 13:07:48 133

原创 设计模式之策略模式

不使用策略模式之前:/** * 实现起来比较容易,符合一般开发人员的思路 * 假如,类型特别多,算法比较复杂时,整个条件语句的代码就变得很长,难于维护。 * 如果有新增类型,就需要频繁的修改此处的代码! * 不符合开闭原则! * @author Administrator * */public class TestStrategy { public double getPri

2017-08-21 12:36:29 124

原创 设计模式之解释器模式,访问者模式

解释器模式 访问者模式

2017-08-21 11:53:02 113

原创 设计模式之命令模式

类图代码实现public interface Command { /** * 这个方法是一个返回结果为空的方法。 * 实际项目中,可以根据需求设计多个不同的方法 */ void execute();}class ConcreteCommand implements Command { private Receiver receiver; //

2017-08-21 11:44:48 92

原创 设计模式之中介者模式

mediator结构图实现代码//同事类的接口public interface Department { void selfAction(); //做本部门的事情 void outAction(); //向总经理发出申请}public class Development implements Department { private Mediator m; //持有中

2017-08-21 11:12:50 126

原创 设计模式之迭代器模式

使用场景 实现代码/** * 自定义的迭代器接口 * @author Administrator * */public interface MyIterator { void first(); //将游标指向第一个元素 void next(); //将游标指向下一个元素 boolean hasNext();//判断是否存在下一个元素 boolea

2017-08-21 09:56:48 96

原创 设计模式之责任链模式

实现代码public abstract class Leader { protected String name; protected Leader nextLeader; //责任链上的后继对象 public Leader(String name) { super(); this.name = name; } //设定责任链上

2017-08-20 23:27:35 109

原创 设计模式之享元模式

flyweight设计模式 享元模式的实现 //抽象享元类public interface ChessFlyWeight { void setColor(String c); String getColor(); void display(Coordinate c);}//具体享元类class ConcreteChess implements ChessFlyWei

2017-08-20 22:41:41 146

原创 设计模式之外观模式

迪米特法则: 一个软件实体应当尽可能少的与其他实体发生作用 外观模式也叫做门面模式,实现了迪米特法则,为子系统提供统一的入口,封装子系统的复杂性方便客户端的调用 解析xml的工具类。。。 很多工具类,使用频率最高的设计模式

2017-08-20 12:23:32 112

原创 设计模式之装饰模式

核心动态地为对象增加新的功能 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免继承体系的膨胀(比如车有潜水和人工智能两个子类,人工智能的潜水车如果不使用装饰模式就要再写一个子类,使用装饰模式使用对象的组合实现,更加灵活也避免了写很多子类)UML图 1.component 是真实对象和装饰对象共同的接口,这样装饰对象可以

2017-08-20 12:08:15 122

原创 设计模式之组合模式

组合模式的使用场景:把整体和部分的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象构件和整体(由于实现统一的抽象构件接口cmponent)组合模式的核心:1.抽象构件角色(component) 定义叶子和容器的共同点 2.容器构件角色(composite) 有字节点和容器特点 3.叶子构件角色(leaf) 没有子节点实现代码://componentpublic interfac

2017-08-20 11:28:41 134

原创 代理模式之桥接模式

一 使用场景 二 类图

2017-08-19 20:13:44 413

原创 设计模式之代理模式

一 proxy 二 动态代理public class StarHandler implements InvocationHandler { Star realStar; public StarHandler(Star realStar) { this.realStar = realStar; } public Object invoke(Object

2017-08-19 18:04:48 147

原创 设计模式之适配器模式

一 adapter uml图 二 类适配器public class Adapter extends Adaptee implements Target { @Override public void handleReq() { super.request(); } }三 对象适配器public class Adapter2 implements

2017-08-19 17:31:22 211

原创 设计模式之原型模式

一 prototype二 浅拷贝obj对象的clone方法 继承Cloneable接口(空接口)是规范public class Sheep implements Cloneable,Serializable { //1997,英国的克隆羊,多利! private String sname; private Date birthday; @Override prot

2017-08-19 17:02:03 163

原创 设计模式之建造者模式

构建和装配的解耦 和工厂模式结合,builder从工厂模式拿到产品,在director里面进行组装 一般开发中并不多见

2017-08-19 15:44:29 219

mysql性能优化

包括高性能mysql,mysql性能调优与架构设计两本书,带书签 ,很清晰。

2018-08-06

java后端面试问题

java后端面试问题 包括java多线程 java基础知识 mysql 算法等等 内容全面

2018-07-25

mybatis generator

mybatis generator 可以使用命令行生成dao service mapper三个文件,比较方便,需要按照说明配置

2018-07-19

地区热度计算

定时计算地区热度和关键词的热度 集成到舆情系统的一个子模块

2018-07-19

java设计模式

java设计模式的代码 比较全 单例模式 工厂模式 适配器模式等

2018-06-10

catfish.java

一个有趣的小程序,catfish,可以用来练习Java,简单易懂

2013-11-27

Java入门课程2

是学习Java的教程,简单易懂,比1略有深入,有利于快速学习Java

2013-11-27

Java入门教程

学习Java的课件,可以用来Java入门,简单易懂,而且有利于锻炼英语

2013-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除