自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

moni_mm的博客

相视一笑,莫逆于心。

  • 博客(27)
  • 收藏
  • 关注

原创 Java同步器

Sync类提供一个阻塞锁和相关同步器(信号量,事件等)框架的实现基于先进先出(FIFO)等待队列Semaphore通过计数器控制对共享资源的访问。eg:创建有信号量计数器为2的信号量class SmpThread extends Thread { public Semaphore smp; public SmpThread(Semaphore smp...

2018-04-29 23:23:44 390

原创 Java Synchronized

SynchronizationSynchronization基于进入和退出管程(Monitor)对象实现,monitor对象存在于每个Java对象的对象头中(存储的指针的指向)显式同步:有明确的 monitorenter 和 monitorexit 指令,即同步代码块隐式同步:ACC_SYNCHRONIZED关键字修饰的方法应用方式1.方法锁修饰实例方法,作...

2018-04-27 15:59:02 138

原创 Java内存模型

Java内存模型(JMM)Java内存模型本身是一种抽象的概念,并不真实存在JMM用来屏蔽硬件和操作系统的内存访问差异它描述的是一组规则或规范 通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。Java内存模型中规定所有变量都存储在主内存 主内存是共享内存区域,主要存储的是Java 实例对象,所有线程创建的实例对象都存放在主内存中线程对变量...

2018-04-27 14:54:20 116

原创 Java阻塞队列

管程管程 (英语:Moniters,也称为监视器) 是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。管程包括:多个彼此可以交互并共用资源的线程多个与资源使用有关的变量一个互斥锁一个用来避免竞态条件的不变量信号量阻塞队列阻塞队列(BlockingQ...

2018-04-27 13:49:17 130

原创 Java之ConcurrentHashMap

ConcurrentHashMap继承自AbstractMap,实现ConcurrentMap接口保证同步table nextTable sizeCtl baseCount等变量均用volatile修饰获取元素用Unsafe类的getObjectVolatile方法设置数组元素用compareAndSwapObject方法用for循环for (Node<K,V...

2018-04-27 13:42:30 140

原创 Java线程池

线程池线程池主要用来解决线程生命周期开销问题和资源不足问题。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数好处:降低资源消耗。提高响应速度。提高线程的可管理性。工作原理我们可以把并发...

2018-04-26 23:32:20 105

原创 Java多线程并发

多线程的优点提高CPU利用率减少响应时间进程切换消耗远大于线程切换多线程的代价设计更复杂上下文切换的开销,程序执行速度变慢增加资源消耗并发编程模型并行工作者模型在并行工作者模型中委派者(Delegator)将传入的作业分配给不同的工作者。每个工作者完成整个任务。工作者们并行运作在不同的线程上,甚至可能在不同的CPU上。缺点...

2018-04-26 01:19:10 268

原创 Java锁

锁LockLock是一个接口ReentrantLock是唯一实现了Lock接口的类public interface Lock {void lock();void lockInterruptibly() throws InterruptedException;boolean tryLock();boolean tryLock(long time, TimeUnit unit)...

2018-04-25 17:57:40 147

原创 Java并发之AtomicInteger

AtomicIntegerAtomicInteger 是一个支持原子操作的 Integer 类, 保证对AtomicInteger类型变量的增加和减少操作是原子性继承自Number,实现Serializable接口源码:private static final Unsafe unsafe = Unsafe.getUnsafe();private static final...

2018-04-25 17:01:28 833

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

观察者模式行为型模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在抽象类里有一个 ArrayList 存放观察者们观察者和被观察者是抽象耦合的主题(Subject):主题是一个接口,规定了具体主题需要实现的方法观察者(Observer):观察者是一个接口,规定了具体观察者用来更新数据的方法。 具体主题(Conc...

2018-04-25 14:52:48 99

原创 【设计模式】之深入分析单例模式

单例模式单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。//单例模式class SingleWork{ private static SingleWork instence = new SingleWork(); //防止被实例化 private SingleWork(){} ////获取唯一可用的...

2018-04-25 01:09:39 128

原创 Java设计模式之工厂模式

简单工厂模式定义一个类负责创建其他类的实例被创建的类实现共同接口interface Work { public void doWork();}class WorkA implements Work { public void doWork() { System.out.println("do work A"); }}class ...

2018-04-24 22:55:35 99

原创 Java集合框架总结

Java 集合框架 Java集合是java提供的工具包,包含了常用的数据结构 Java集合主要可以划分为4个部分:List列表Set集合Map映射工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)集合接口11.Collection 接口List 接口 实现类有LinkedList, ArrayList,...

2018-04-24 15:41:09 215

转载 SpringMVC

概述Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构和用于开发灵活和松散耦合的Web应用程序的组件。 MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。模型(Model)封装了应用程序数据,通常它们将由POJO类组成。视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。控制...

2018-04-18 16:46:11 191

原创 逃逸分析

逃逸分析逃逸分析(Escape Analysis)是目前Java虚拟机中比较前沿的优化技术。逃逸分析的基本行为就是分析对象动态作用域: 当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他地方中,称为方法逃逸。 甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。如果能证明一个对象不会逃逸到方法或线程外,则可能为这...

2018-04-18 15:40:44 2259

原创 GC日志分析

JVM内存heap结构按分代,分young-eden,young-survivor,old 用-Xmn,-Xms,-Xmx来指定non-heap结构 包括metaspace,thread stacks,compiled native code,memory allocated by native code -XX:PermSize或-XX:MetaspceSize,-Xss或-X...

2018-04-18 11:59:41 226

原创 Mybatis概述

MyBatis的功能架构API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西...

2018-04-18 00:33:18 348

转载 JDBC

JDBC架构JDBC API: 提供了应用程序对JDBC的管理连接。JDBC Driver API: 支持JDBC管理到驱动器连接。JDBC API的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库。JDBC驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。JDBC组件Driver...

2018-04-17 19:32:04 119

原创 AOP

1AOP概述AOP:是一种面向切面的编程范式,是一种编程思想,旨在通过分离横切关注点,提高模块化,可以跨越对象关注点。面向切面编程:是指在程序运行期间将某段代码,动态的切入到某个类的指定方法的指定位置的这种编程思想叫做面向切面编程。AOP编程操作的主要对象是切面(aspect),而切面模块化横切关注点。AOP的典型应用即spring的事务机制,日志记录。AspectJ是一种编...

2018-04-11 17:44:15 148

原创 配置SSH框架(最新版)

新入门,配了一天才整合成功,整合问题很多,欢迎一起交流项目在git https://github.com/monimm/SSH1.环境Struts2:2.5.16Spring:5.0.5.RELEASEHibernate:5.2.16.FinalMySQL:5.7.21Tomcat 8.5.292项目结构lib 3步骤1.建立 D...

2018-04-08 14:43:43 589

转载 Hibernate

概述Hibernate 是一个高性能的对象关系型持久化存储和查询的服务. Hibernate 不仅关注于从 Java 类到数据库表的映射,也有 Java 数据类型到 SQL 数据类型的映射,另外也提供了数据查询和检索服务。对象关系映射(ORM)是一个方便在关系数据库和类似于 Java, C# 等面向对象的编程语言中转换数据的技术 当我们工作在一个面向对象的系统中时,存在一个对象...

2018-04-06 19:54:20 172

转载 Struts2

Struts2 架构从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的:操作(Actions)拦截器(Interceptors)值栈(Value Stack)/OGNL结果(Result)/结果类型请求生命周期通过上述图片的描述,我们可以依照下面几点解释在Struts2 ...

2018-04-06 15:01:26 185

转载 Spring

概述Spring 是一个开源的轻量级 Java SE/Java EE开发应用框架 其目的是用于简化企业级应用程序开发Spring 是一个容器通过反转控制( IoC )和依赖注入( DI )来实现高内聚、低耦合的应用整合很多第三方框架提供面向切面编程( AOP )的能力对数据库事务的管理尤其方便优点Spring 容器Spring 容器是非侵入式的(不需...

2018-04-05 01:26:44 374

原创 Java finally执行顺序

FinallyJava 中的 Finally 关键一般与try一起使用,在程序进入 try 块之后,无论程序是因为异常而中止或其它方式返回终止的,finally 块的内容一定会被执行 。直接进行实验如下1.一般情况public static void returnTest(){ try{ System.out.println("I am ...

2018-04-04 23:42:32 743

转载 Java实例化方法

实例化方法使用new操作符调用Class对象的newInstance()方法调用clone()方法,对现有实例的拷贝通过ObjectInputStream的readObject()方法反序列化类Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件之后,可...

2018-04-03 15:17:01 819

转载 Java线程

Java线程Java中线程是指java.lang.Thread类的一个实例或线程的执行。使用java.lang.Thread或java.lang.Runnable接口编写代码定义、实例化、启动新线程。Java中每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行。main()方法运行在一个线程内,称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。线程分为两类...

2018-04-01 17:21:43 98

原创 Java静态非静态总结

Java静态类与非静态类Java程序启动class文件被读取时类被加载,如果有static方法,此时会分配内存。非static方法实例化类时才在内存中分配控件存储。引用存储在堆栈中,实体存储在堆中。静态方法和实例方法静态方法在程序开始时生成内存,可直接调用。速度快,占内存。实例方法在程序运行中生成内存,生成实例,通过实例调用方法。静态方法不能使用this,super关键字...

2018-04-01 16:30:00 161

空空如也

空空如也

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

TA关注的人

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