自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 不可重入锁的设计

可重入锁:如果某个线程试图获取一个已经由他自己持有的锁,这个请求可以成功,那么此时的锁就是可重入锁不可重入锁:不可重入锁和可重入锁相反,就是同一个线程多次请求同一把锁,会出现死锁定义一个不可重入锁:public class Lock{ //当为false时证明资源没有被线程占用 private boolean isLocked = false; public...

2019-08-22 18:18:11 287

原创 JVM内存泄漏

内存泄露:程序在向系统申请分配内存空间后,在使用完毕后未释放。结果导致一直占据该内存单元,我们和程序都无法再使用该内存单元,直到程序结束,这是内存泄露。内存泄露原因分析在JAVA中JVM的栈记录了方法的调用,每个线程拥有一个栈。在线程的运行过程当中,执行到一个新的方法调用,就在栈中增加一个内存单元,即帧(frame)。在frame中,保存有该方法调用的参数、局部变量和返回地址。然而JAVA...

2019-05-27 21:50:00 1285

原创 使用Eclipse Memory Analyer分析内存溢出位置

看下文前可以先了解一下JVM内存溢出的四种情况该段代码在无限循环中创建对象public class OOM { public static void main(String[] args) { List<Object> n = new ArrayList<Object>(); while (true) { n.add(new Object()...

2019-05-27 18:23:20 431

转载 JVM体系结构

原文:https://blog.csdn.net/w1673492580/article/details/81840056JVM简介JVM是Java程序得以运行的平台,也是Java程序可以跨平台的底层支撑,从整体上来看,JVM的主要功能可以分为加载和执行两大块。其中类加载器负责.class文件的寻址与加载,执行引擎负责字节码指令执行及内存的管理等等。下面是JVM一个经典的体系结...

2019-05-26 20:14:36 488

原创 生产者消费者{(wait和notify),阻塞队列 ArrayBlockingQueue}

一:java中,wait和notify这两个方法是一对,wait方法阻塞当前线程,而notify是唤醒被wait方法阻塞的线程。wait( ),notify( ),notifyAll( )都不属于Thread类,而是属于Object基础类,也就是每个对象都有wait( ),notify( ),notifyAll( ) 的功能,因为每个对象都有锁,锁是每个对象的基础,当然操作锁的方法也是最基础了...

2019-05-18 14:37:04 425

原创 AtomicReference和AtomicStampedReference

AtomicReference底层:AtomicReference原子应用类,可以保证你在修改对象引用时的线程安全性,比较时可以按照偏移量进行怎样使用AtomicReference: AtomicReference<String> ar = new AtomicReference<String>(); ar.set("hello"); //CAS操作...

2019-05-10 17:25:40 17871 7

原创 volatile不具有原子性的理解之解读i++疑惑

volatile修饰的变量变化过程:第一:使用volatile关键字会强制将修改的值立即写入主存; 第二:使用volatile关键字的话,当线程2进行修改时,会导致线程1的工作内存中缓存变量的缓存行无效; 第三:由于线程1的工作内存中缓存变量的缓存行无效,所以线程1再次读取变量的值时会去主存读取。可见性和原子性:可见性:对一个volatile变量的读,总是能看到(任意线程)对这个vo...

2019-05-10 16:22:17 2056 2

原创 初识Dubbo之总结

结合以上两个图,我总结的画了下面这个图:

2019-05-08 20:53:59 131

原创 排序树的创建及遍历,是否为平衡二叉树

排序树的创建及遍历public class 树的创建与遍历 { static class Node{ public int value; public Node left = null; public Node right = null; public Node(int value){ this....

2019-05-03 19:11:29 190

原创 数组和链表在堆中的存放

数组和链表在堆中的存放数组的存放与查找链表的存放于查找

2019-05-02 15:09:50 1143 4

原创 输入两个链表,找出他们的第一个公共结点

输入两个链表,找出他们的第一个公共结点解题思路:此处类名我用汉字,主要为了自己练习,为了后期好找到进行回顾。最要用标准的英文类名呦/* 题:输入两个链表,找出他们的第一个公共结点 重点审题:这种题只知道有两个链表,并不知道链表的长度 */public class 链表第一个公共结点 { class Node{ Integer value; ...

2019-05-02 14:01:46 575

原创 JAVA多线程

一:创建线程二:synchronized和Lock三:线程的生命周期及线程具有的五种基本状态四:线程中的一些常用方法五:线程池原理六:手写一个线程池七:线程通信一:JAVA中可以用以下四种方式来创建线程:1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用Callable和Future创建线程4)使用线程池例如用Execu...

2019-04-03 23:23:45 148

原创 建造者模式

建造者模式:建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式经常用在以下两种情况:第一种是当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。第二种是当构造过程必须允许被构造的对象有不同表示时。 一个增加产品的接口:public interface ComputerDao { public void addMa...

2018-11-19 11:15:15 111

原创 工厂方法模式

工厂方法模式:工厂方法模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期拓展的目的。工厂方法模式的意义是定义一个创建产品的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况...

2018-11-19 10:59:17 126

转载 SpringMVC的好处

清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。 强...

2018-10-01 09:00:03 3874

原创 SpringMVC转换器

先来说new SimpleDateFormat("yyyy-MM-dd").parse("2018-10-01");和new SimpleDateFormat("yyyy-MM-dd").format(new Date());的区别new SimpleDateFormat("yyyy-MM-dd").parse("2018-10-01");是将2018-10-01转化成Mon Oct 01 0...

2018-09-30 22:44:20 335

原创 SpringMVC视图解析器

要把一个数据传到页面上刚开始:public void addInput(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List&lt;Channel&gt; channels = channelDao.list(0, In...

2018-09-30 20:55:22 166

原创 SpringMVC框架异常处理器

系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。自定义异常类://自定义异常类 @RequestMapping("/list4") public String list3(Model m){ if(true) throw new RuntimeExcept...

2018-09-28 11:22:48 188

原创 ==与.equals的区别

值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。    ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。    equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。    ==比较的是两个对象的地址,而equals比较的是两个...

2018-09-26 21:01:38 4734 1

原创 重写request,使其可以读取文件

Servlet里面的request只能读取字符串,现在重写,使其也可以读取文件public class MyHttpServletRequest extends HttpServletRequestWrapper { //先创建一个新的集合,这个集合我们要在其中添加普通表单字段和文件类型的表单字段 private Map allParams = null; public MyHttp...

2018-09-18 19:58:29 789

原创 读取jsp网页上上传的文件

读取jsp网页上上传的文件是不能用request.getParameter(arg0);来读取的因为request里面的键值对里的值只能存储String数组,不能存储文件所以接下来就解决这个问题布置网页<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String pa...

2018-09-17 20:17:06 1238 1

转载 JAVA虚拟机(JVM)

1. JVM生命周期启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。 运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。 消亡。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者...

2018-09-15 12:38:40 206

原创 静态块、实例块、构造函数执行顺序

静态块、实例块、构造函数的执行顺序:    1.先执行静态方法块   2.再执行实例方法块   3. 再执行构造函数块同一个类下不管new多少次,该类下的静态块只运行一次(但是一次可以执行多个)不管是new几个类,所有的类都先运行静态方法快,(执行完所有类的静态块后)再运行实例方法快,再运行构造函数public class Kuai {public static void m...

2018-09-14 21:44:22 493

转载 JAVA动态代理

一、概述1. 什么是代理我们大家都知道微商代理,简单地说就是代替厂家卖商品,厂家“委托”代理为其销售商品。关于微商代理,首先我们从他们那里买东西时通常不知道背后的厂家究竟是谁,也就是说,“委托者”对我们来说是不可见的;其次,微商代理主要以朋友圈的人为目标客户,这就相当于为厂家做了一次对客户群体的“过滤”。我们把微商代理和厂家进一步抽象,前者可抽象为代理类,后者可抽象为委托类(被代理类)。通...

2018-09-14 20:37:37 106

原创 Spring框架(三)AOP

 AOP为了解决动态代理的繁琐,而产生的一种方便实现动态代理的简单框架动态代理简单的来说就是将经常要用,重复的代码放到一个代理类里,在其他类里面调用就行,不用再每次重复写。1.将要下载的包放到pom.xml里面&lt;?xml version="1.0"?&gt;&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:...

2018-09-10 19:11:49 151

原创 Spring框架(二)

在myEclipse上运行1.配置好Maven的环境变量2.创建Maven项目,在pom.xml里面编写要下载的包&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m...

2018-09-08 16:35:17 123

原创 Spring框架(一)

Spring致力于提供一种方法管理你的业务对象。Spring是全面的和模块化的。它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。(一)用Spri...

2018-09-07 12:57:45 152

原创 Maven

使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:src/main/java —— 存放项目的.java文件src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件src/test/java —— 存放所有单元测试.java文件,如JUnit测试类src/test/resources —— 测...

2018-09-06 23:05:45 88

原创 MyBatis框架中的select

select中查询一条数据,和查询多条数据查询一条的方法值限于查询一条,但是查询多条的方法既可以查询多条,也可以查询一条。查询一条:Article a = (Article) session.selectOne("aa.bb.cc.findById", 75); 查询一条或多条:如果后面输入多个参数,则将参数放到集合里。Map&lt;String, Integer&gt; m ...

2018-08-20 16:00:13 1312

原创 MyBatis框架

什么是MyBatis?MyBatis是对JDBC的封装,它隐藏了具体的JDBC的API,它把SQL语句放到了配置文件中,它能自动把不同的输入数据映射到SQL语句的动态参数上,它能自动把SQL语句的执行结果映射为JAVA对象…… MyBatis是一个持久化层的框架!1.先导入jar包2.编写排至文件,在类路径下配置文件(SqlMapConfig.xml)基本作用就是配置JDB...

2018-08-20 15:51:47 178

原创 泛型

集合&lt; &gt;里面去定的类型public class B&lt;T,S&gt; { private T num; private S name; public T getNum() { return num; } public void setNum(T num) { this.num = num; } public S getName() { return...

2018-08-19 16:51:01 92

原创 继承Set接口类重载equals方法和hashCode方法

所用Set定义的         当存的数据相同时,(不管地址是否相同)就认为存的是一个数据public void test0() { Set c = new HashSet(); String t1 = "11111"; String t2 = "11111"; String t3 = new String("11111"); c.add(t1); ...

2018-08-19 16:23:37 441

原创 Comparator对List接口对应的集合进行排序

List接口对应的集合本身就是有序的,按输入的顺序输出。但是想要按某一变量的从小到大顺序输出,就得借助于Comparator这个接口。public void test6() {// class A implements Comparable {// // } Comparator t = new Comparator() { @Override public...

2018-08-19 15:45:19 500

原创 反射

反射机制指的是程序在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。反射是:指程序可以访问、检测和修改它本身状态或行为的一种能力得到类import java.lang.reflect.Modifier;public class FanShe { public static void main(String[] args) { try { Class ...

2018-08-18 22:53:21 146

原创 转换器

 Enumeration&lt;String&gt; nume = request.getParameterNames();读出来的全为String类型,所以要变成Date类型就得用时间转换器。1.时间转换器import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;...

2018-08-17 23:13:26 113

原创 Enumeration集合

public class RequestUtil { static { //注册日期时间类型转换器 ConvertUtils.register(new DateConverter(), Date.class); } public static void copyProperties(Object obj,HttpServletRequest request){ try { ...

2018-08-17 21:56:39 406

原创 迭代器

迭代器就是遍历集合里的元素  public static Map&lt;String, Object&gt; mpa = new HashMap&lt;String, Object&gt;(); public PropertyBeanFactory(){ Properties pro = new Properties(); //集合 try { pro.load(this.g...

2018-08-17 21:40:56 115

原创 属性工厂

对我们的系统的配置信息进行统一管理,一般做法是将配置信息配置与一个.properties的文件中,然后在我们系统初始化的时候,系统自动读取.properties配置文件中的key value(键值对),然后对我们系统进行定制的初始化。 用Properties集合加载的时候,我们都需要手工的去读取这个配置文件,往往我们会自己创建一个类来专门读取,并储存这些配置信息。articleDao=e...

2018-08-16 22:40:31 711

原创 Properties集合

Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。Properties...

2018-08-16 21:43:48 630

原创 表格的增删改查

1.查询数据     2.增加数据3.修改数据4.删除数据1.一行删除2.批量删除function delAllArticles(id) { var ids = ""; var idchks = document.getElementsByName("id"); for (var i = 0; i &lt; idchks.length;...

2018-08-15 20:27:40 1230

空空如也

空空如也

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

TA关注的人

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