自定义博客皮肤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的博客

相视一笑,莫逆于心。

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

原创 LL(1)语法分析Java实现

实验内容根据某一文法编写LL(1)分析程序,对输入的句子进行语法分析。 附源码:实验要求输入各个产生式获取first集、follow集构造LL(1)预测分析表输入一个句子根据LL(1)预测分析表对句子进行栈操作,输出分析结果实验过程构造first集(龙书4.4.2节有详细介绍) First(α)定义为可从α推出的串的首符号集合 (α为任意文法符号串...

2018-06-06 19:33:23 16248 23

原创 Mysql组合索引最左前缀原则

简单做个测试,验证并强化记忆。规则MySQL查询时只使用一个索引一个查询可以只使用索引中的一部分,但只能是最左侧部分建了一个(a,b,c)的复合索引,那么相当于建了(a),(a,b),(a,b,c)三个索引结果:只有查询(b)、(c)、(b,c)、(c,b)没有使用索引并不是网上说的(b,a)会使索引失效,mysql优化器会发现执行SQL查询的最佳方案。按字...

2018-09-12 15:24:10 2369 2

原创 深入分析Java类初始化顺序

分析Java类初始化顺序之前,先回顾下类加载的过程和时机类加载的过程加载:通过类名从class文件获取二进制流,生成Class对象(在方法区)连接:包括验证、准备(类变量分配内存、赋初值)、解析(编译期确定静态类型)初始化:初始化类类加载的时机主动引用实例化对象 new访问静态字段(final除外) get/putstatic调用静态方法 invoke...

2018-09-10 00:35:42 225

原创 Tomcat8类加载机制

在了解类加载机制时,发现网上大部分文章还停留在tomcat6,甚至tomcat5。官网当然是最权威的。http://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html概述 在 Java 环境中,类加载器的布局结构是一种父子树的形式。通常,类加载器被请求加载一个特定的类或资源时,它会先把这一请求委托给它的...

2018-08-26 15:39:49 2716 6

原创 select count()效率比较和分析

在数据库查询优化中,看到有人说Count(*)比count(1)快。猜测是与索引和选取的列有关,一试便知。首先,执行时只会使用一个索引。最终结论如下:count(*)和count(1)无任何差别,永远优于count其他字段,无论加不加任何索引加索引显著快于不加索引主键索引快于普通索引没有索引时,与列含不含空值无关加多个索引时,选取的列上如果存在就用自己的索引, 不存...

2018-08-25 22:18:36 20898 5

原创 mysql查询优化

概述explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from ...

2018-08-25 20:49:01 215

原创 Springboot实现令牌桶限流

在对一个秒杀系统进行限流,感觉计数法太过于简单粗暴,便实现一个简单的令牌桶限流令牌桶 大小固定的令牌桶可自行以恒定的速率源源不断地产生令牌。如果令牌不被消耗,或者被消耗的速度小于产生的速度,令牌就会不断地增多,直到把桶填满。后面再产生的令牌就会从桶中溢出。最后桶中可以保存的最大令牌数永远不会超过桶的大小。设计思路实现令牌桶类用HashMap<>存储多个桶,...

2018-08-24 21:43:40 6004 1

转载 MySQL 中事务的实现

MySQL 中事务的实现

2018-08-23 14:13:41 391

原创 spring.resources.cache-period 错误

在springboot 中配置资源缓存过期时间,出错配置如下spring.resources.cache-period错误描述如下:Description:Binding to target [ Bindable@70a3d3b5 type = org.springframework.boot.autoconfigure.web.ResourcePropertie...

2018-08-21 21:13:45 6625 2

原创 Thymeleaf手动渲染

Thymeleaf手动渲染为提高页面访问速度,可缓存html页面,客户端请求从缓存获取,获取不到再手动渲染在spring4下import org.thymeleaf.spring4.context.SpringWebContext;import org.thymeleaf.spring4.view.ThymeleafViewResolver;SpringWebContext ...

2018-08-21 14:58:17 1610 2

原创 Mybatis传递实体对象无法直接获取属性

Mybatis传递实体对象无法直接获取属性mybatis 3.4.6在springboot项目中,mybatis在传递对象参数时,不能直接取其中的属性,需要用 . 来获取而在之前是可以直接访问到的,并不清楚哪里出了问题。在此记录下。...

2018-08-19 13:24:25 9886 3

原创 基于SSM框架之众筹网站项目

众筹平台前几周的实训,组队做了一个众筹平台的Java EE 项目,在此记录下来并总结一些心得。

2018-07-15 09:53:11 10571 38

原创 VSCode错误: 找不到或无法加载主类

问题:使用VSCode调试Java程序,路径正确,代码正确,也不报错,却无法调试成功。根据几个月的使用经验,总结有如下几点原因按常识,这种错误大概率是路径相关错误,故首先检查路径VSCode会给每个java文件指定包名,如果程序里使用错误的包名,会提示错误,并且修改后仍会报错,需删除再新建,这应该是一个bug包名用了下划线Package命名必须全部使用英文小写字母,禁止...

2018-06-19 01:16:30 20941 1

原创 Java内部类之访问权限和编译效率

在文章【集合框架】之深入分析ArrayListhttps://blog.csdn.net/moni_mm/article/details/80722011中,发现一个问题如下:问题1: elementData的注释的意思是,非私有化以简化嵌套类的访问,但嵌套类可以透明地访问外围类的所有成员,如何理解这里的简化? 为什么不声明为private呢?通过查看字节码解决了问题:内部类在访问外部类...

2018-06-18 14:00:47 805 1

原创 【集合框架】之深入分析HashMap

在前面的文章【Java集合框架总结】https://blog.csdn.net/moni_mm/article/details/80065576中对集合框架进行概要分析之后,在此结合JDK源码对HashMap进行深入分析。提出并解决问题如下:问题1:初始容量为什么是16,为什么必须是2的幂?问题2: hash方法为什么是无符号右移16位?问题3: 问题4:问题5:H...

2018-06-18 02:03:47 165

原创 【集合框架】之深入分析ArrayList

在前面的文章【Java集合框架总结】https://blog.csdn.net/moni_mm/article/details/80065576中对集合框架进行概要分析之后,在此结合JDK源码对ArrayList进行深入分析。提出并解决问题如下:问题1:elementData非私有化以简化嵌套类的访问,但嵌套类可以透明地访问外围类的所有成员,如何理解这里的简化?问题2: transie...

2018-06-18 00:12:15 201

原创 SLR(1)语法分析(Java实现)

实现一个SLR(1)语法分析器,近期忙于他事,项目集和语法分析表暂时采用手动输入,有空再填坑,后附源码。SLR是基于LR(0)实现的,故先进行LR(0)分析。Tips: 龙书给的4.36算法伪代码写得过于简略,容易造成误导,本文给出具体算法。代码在https://github.com/monimm/LLandLR先上结果截图 自底向上分析自底向上分析法,又...

2018-06-10 19:09:37 11509 1

原创 浅谈Java特性

学习Java有几个月了,记录下此时的体会与总结。结合Java体系结构、JVM原理和JDK源码,谈谈我对Java的理解及其特性的分析。Java语言特性SUN公司对Java的描述: “Java is a simple,object-oriented, distributed, interpreted, robust, secure, architecture neutra...

2018-06-10 01:55:30 1825

原创 浅谈红黑树

二叉树在链表中,插入、删除速度很快,但查找速度较慢。在数组中,查找速度很快,但插入删除速度很慢。二叉树,本质上,是对链表和数组的一个折中二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。性质性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)性质2:深度为k的二叉树至多有2...

2018-05-02 15:42:08 228

原创 Java同步器

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

2018-04-29 23:23:44 365

原创 Java Synchronized

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

2018-04-27 15:59:02 121

原创 Java内存模型

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

2018-04-27 14:54:20 101

原创 Java阻塞队列

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

2018-04-27 13:49:17 114

原创 Java之ConcurrentHashMap

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

2018-04-27 13:42:30 119

原创 Java线程池

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

2018-04-26 23:32:20 87

原创 Java多线程并发

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

2018-04-26 01:19:10 240

原创 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 133

原创 Java并发之AtomicInteger

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

2018-04-25 17:01:28 801

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

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

2018-04-25 14:52:48 79

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

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

2018-04-25 01:09:39 112

原创 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 82

原创 Java集合框架总结

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

2018-04-24 15:41:09 200

转载 SpringMVC

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

2018-04-18 16:46:11 177

原创 逃逸分析

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

2018-04-18 15:40:44 2204

原创 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 171

原创 Mybatis概述

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

2018-04-18 00:33:18 304

转载 JDBC

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

2018-04-17 19:32:04 101

原创 AOP

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

2018-04-11 17:44:15 128

原创 配置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 577

转载 Hibernate

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

2018-04-06 19:54:20 140

空空如也

空空如也

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

TA关注的人

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