- 博客(31)
- 收藏
- 关注
原创 AQS源码阅读
前言AbstractQueuedSynchronizer(AQS)类其实就是一个普通的工具类,用来控制资源并发访问的工具类,它只关心资源可以被谁获取被谁拥有,以及如何处置无法获取资源的对象,至于是如何获取和释放,则由子类来实现。在java.util.concurrent包中有很多类都实现了AQS,常用的有ReentrantLock、ReentrantReadWriteLock、CountDown...
2019-04-13 10:57:56
226
原创 jdk1.8 ConcurrentHashMap源码阅读
put方法如果没初始化则先初始化数组如果数组对应位置上为null,则表示当前参数是数组该位置上的第一个节点,直接调用cas进行插入如果数组对应位置上的节点hash值为MOVED,则表示正在进行扩容操作,调用helpTransfer方法帮助一起扩容以上都不是则加锁进行节点的增加/更新操作如果头节点的hash值 >= 0,则表示是链表,循环遍历链表进行增加或删除操作,并累加binC...
2019-04-04 17:20:52
198
原创 webpack+vue.js+elementUI试做后台管理页面
前言由于上次搭好了SSM后端框架,就想着顺便把以前那个博客网站的后台管理系统给做了,系统的后端环境是有了,前端页面用什么开发呢?之前简单的看了vue.js,所以就决定用vue.js做前端页面,然后搜了一些vue.js配套的ui,找到了elementUI。而在看vue.js的时候看到上面说了npm安装,于是就想起了这个,就想知道这是什么,于是各种Google,差不多了解了现在的前端开发是什么样的了。感
2017-07-11 13:00:59
20787
3
原创 SSM框架整合(IntellIj IDEA+Maven+Spring+SpringMVC+MyBatis)之Spring Framework
1.配置SpringMVC1.1编写Spring配置文件applicationContext.xml<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springfra
2017-07-06 21:00:24
1926
原创 SSM框架整合(IntellIj IDEA+Maven+Spring+SpringMVC+MyBatis)之MyBatis
我认为框架整合不熟练的话按照MyBatis->SpringMVC->Spring顺序整合比较好,先配置MyBatis是因为不需要额外的配置服务器,进行单元测试比较容易。Spring是用来进行整合的,所以等其它框架配置好之后进行整合不会显得很乱。IntelliJ IDEA搭建Maven项目新建完项目之后就是下面这样一个空项目 按规范搭建一个项目结构,src下面分为main和test,main放正式代
2017-07-06 16:33:12
2609
原创 Git命令整理
(fileName)=文件名,(branchName)=分支名,(tagName)=标签名,(commitId)=提交记录id 命令 作用 git init 用git命令进入你要作为仓库的文件夹,然后输入这个命令初始化为仓库 git add (fileName) 要提交的文件必须在你当前仓库目录下,可以多次添加不同的文件,文件被添加到暂存区 git commit -m “备
2017-07-06 14:39:32
529
原创 线程安全与锁优化
线程安全与锁优化线程安全《Java Concurrency In Practice》的作者Brian Goetz对“线程安全”有一个比较恰当的定义:“当多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的”java语言中的线程安全这里讨论的线程安全,
2017-04-17 22:54:49
2296
1
原创 Java内存模型与线程
Java内存模型Java虚拟机在规范中视图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。主内存与工作内存Java内存模型的主要目标是定义程序中各个变量的访问规则,此处的变量(Variables)包括实例字段、静态字段和构成数组对象的元素,但不包括局部变量和方法参数,因为后者是线程
2017-04-15 21:41:12
1376
1
原创 垃圾收集器
垃圾收集器与内存分配策略概述垃圾收集器(Garbage Collection,GC)需要解决的三个问题:哪些内存需要回收?什么时候回收?如何回收?前面介绍了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈和本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题。而
2017-04-13 21:28:44
2163
1
原创 虚拟机中的方法调用与执行
概述方法调用不是方法执行,唯一的任务就是确定被调用方法的版本(即确定调用哪一个方法),暂时不涉及方法内部的执行过程。解析所有方法调用在Class文件里面都是一个常量池的符号引用,在类加载解析阶段,会将其中的一部分符号引用转化为直接饮用,这种转化的前提是:方法在程序真正运行之前就有一个可确定的调用版本,并且这个方法方法的调用版本在运行期是不可变的。意思就是,调用的方法在程序代码被编译成Class文件的
2017-04-08 16:37:04
1635
原创 虚拟机类加载机制
概述前两篇我们了解了Class文件存储格式和Java虚拟机的内存区域,在Class文件中描述的各种信息最终都需要加载到虚拟机中之后才能运行和使用的,name虚拟机是如何加载这些Class文件的?Class文件中的信息进入到虚拟机之后会发生什么变化?这些都是接下来要讲的东西。类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存位置,它的整个生命周期包括:加载(Loading)、验证(Verifica
2017-04-07 20:58:33
490
原创 Java内存区域与HotSpot虚拟机对象
运行时数据区域程序计数器(Program Counter Register)程序计数器是一块很小的内存空间,可以看做是当前线程所执行的字节码的行号指示器,存储着当前执行的字节码指令,通过改变这里的值来进行指令的调用。 在多线程中每个线程执行的命令都不相同且互不影响,所以程序计数器是线程私有的,这类内存区域“线程私有”的内存。 如果线程正在执行的是一个Java方法,这个计数器存储的是正在执行的虚拟
2017-04-07 15:28:18
589
原创 Java Class文件结构
平台无关性和语言无关性Java在刚刚诞生的时候提出过一个宣传口号:“一次编写,到处运行”,这句话充分表达了软件开发人员对冲破平台界限的渴求。“与平台无关”的理想最终实现在操作系统的应用层上:Sun公司及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行”。 各种不同平台的虚拟机与所有平台都统一使用的程序
2017-04-06 22:31:03
1600
原创 剑指offer 11-20
package com.overridere.twentytothirty;import java.util.ArrayList;import java.util.Stack;public class Solution { /** * 第十一题 * 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 */ public int Number
2017-03-29 10:15:08
358
原创 剑指offer 1-10
package com.overridere.onetoten;import java.util.ArrayList;public class Solution { /** * 第一题 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否
2017-03-26 17:48:35
360
原创 基于S2SH组合框架搭建的博客平台
项目背景因为自学了Java开发和一些框架,虽然大致了解工作流程,但是没有具体实现过还是不行,所以就想着做个东西出来练练手, 刚好在学习java期间一直在CSDN上记录学习过程, 所以就想着做一个小型的博客平台,实现基本的用户登录、文章编写与发布、文章分类归档等功能。项目介绍使用的工具与技术使用MySQL数据库存储数据,Eclipse为开发工具,JDK使用的是1.7版本,Tomcat使用的是8.1
2017-03-23 19:57:48
693
原创 SpringMVC
Spring web mvc 架构架构图流程组件说明第一个SpringMVC工程配置前端控制器SpringMVC配置文件SpringMVC配置文件的加载位置配置处理器映射器配置处理器适配器配置视图解析器后端控制器配置后端控制器开发视图开发注解开发xml配置编写控制器类url模板映射请求数据绑定默认参数类型基本类型POJO对象直接POJO对象属性名命名的P
2017-02-14 11:27:26
504
原创 Spring学习,依赖注入(DI)、控制反转(IoC)和面向切面(AOP)
依赖注入DI和控制反转IoCSpring容器中的依赖注入DI和控制反转IoCxml配置注解配置面向切面AOP面向切面的应用动态代理Spring容器中的面向切面xml配置注解配置Spring整合hibernate和AOP应用之声明式事务依赖注入(DI)和控制反转(IoC)在日常编码中经常遇到在一个类中调用另一个类的多个方法,所以就在一个类中new出需要用到的类,也就是组合模式。比如说
2017-02-13 15:16:54
1903
原创 Hibernate学习
Hibernate与JDBC的对比Hibernate增删改查操作数据库hibernatecfgxml配置文件JavaBean类与映射文件的编写增删改查操作的方法测试hibernatecfgxml中SessionFactory配置的获取编写怎删改查测试方法Hibernate缓存对象的三种状态一级缓存二级缓存查询缓存对象关系xml配置OneToOne一对一OneToMany
2017-01-25 15:53:14
531
原创 Struts2学习之3(文件的上传下载,OGNL表达式,常用标签,表单重复提交)
文件的上传和下载文件的上传上传页面配置信息动作类错误信息配置文件的下载结果类型的使用配置信息动作类Struts中的数据中心与OGNL表达式Stack ContextValue Stack ContentsrootValueStack和ActionContext之间的关系OGNL表达式简介支持对象方法调用如xxxdoSomeSpecial 支持类静态的方法调用和值访问访问O
2017-01-17 22:55:22
1296
原创 Struts2学习之2(请求参数的封装,类型转换,输入验证,自定义拦截器)
封装请求参数动态参数注入请求参数用户输入的方式一动作类作为模型方式二动作类和模型分开方式三动作类和模型分开使用ModelDriven模型驱动静态参数注入自定义类型转换编写类型转换实现类声明定义配置局部类型转换器为某个类的某个属性字段进行验证全局转换器为某个类型进行验证转换失败之后的提示输入验证编程式验证针对所有方法进行验证针对指定的方法进行验证方式一方式二声明式验
2017-01-17 19:24:53
824
原创 Struts2学习之1(Struts2的工作流程,动作类的编写,struts.xml配置文件的编写)
Struts2的开始Struts2的作用搭建Struts2开发环境下载jar包拷贝jar包到项目中去编写配置文件配置控制映射开始一个小例子页面编写配置文件编写动作类编写结果视图编写案例执行过程简析动作类动作类的三种编写方式方式一方式二方式三动作类中动作方法的编写动作类的通配符映射动态方法调用DMIDynamic Method Invocation动作类获取S
2017-01-17 11:40:40
1077
原创 Filter过滤器和Listener监听器简述
Filter过滤器Listener监听器Filter过滤器Filter的简介 对资源的访问进行过滤,相当于小区的保安,进去要检查,出去还要检查。Filter的使用编写一个类,继承并实现javax.servlet.Filter。package com.jyh.filter; import java.io.IOException; import javax.servlet.
2017-01-16 22:43:32
790
原创 JDBC补充:DBUtils和ThreadLocal
DBUtilsThreadLocalDBUtils与ThreadLocal合并运用DBUtils导包 commons-dbutils-xxx.jar包和commons-pool-xxx.jar包,xxx是版本号。使用package com.jyh.dbutil;import java.sql.SQLException;import java.util.Date;import java.
2017-01-16 16:56:23
1201
原创 JDBC学习之二_数据库链接池
数据库链接池数据库链接池的简介数据库链接池是什么数据库链接池的作用数据库链接池的好处模拟数据库链接池需要解决的问题发现的问题解决方法静态代理还是装饰设计模式动态代理设计模式数据库链接池的使用原始的数据库链接池DBCP的使用C3P0的使用工具类利用Web服务器管理数据源JNDIJDBC框架简析元信息的获取自己编写小型框架约定优于编码策略模式数据库链接池数据库链接
2016-12-21 16:29:31
901
原创 JDBC学习之一
JDBC学习1JDBC简介JDBC开发步骤JDBC规范中常用的接口和类DriverManagerConnectionStatementResultSet抽取JDBC的工具类PreparedStatement接口批处理LOBCLOBBLOB的存取事务的入门数据库的事务控制JDBC控制事务事务的特性事务的特性事务隔离性专题JDBC学习1JDBC简介JDBC:Java D
2016-12-20 20:31:15
519
原创 jsp&EL表达式&EL表达式&fn函数库&JSTL标签
JSP技术 (java server page)该技术干嘛的servlet先出现.只有servlet的时候,servlet又要处理逻辑又要负责输出html. 在servlet中输出 html 太痛苦. 推出了jsp技术.专注于显示.jsp的运行机制.jsp (第一次访问jsp的时候)======> .java ======> .class(servlet)
2016-12-20 14:56:02
899
原创 Cookie&Session
CookieCookie干嘛的? 会话(cookie,session)技术的一种. 因为http协议是无状态的,每次都是基于一个请求一个响应.每次请求和响应都跟上次没有关系. 我们需要记录之前对话信息. cookie技术.是属于客户端(浏览器)保存信息的技术.cookie怎么用? 1.添加cookie到浏览器
2016-12-20 13:48:43
505
原创 HttpServletRequest&HttpServletResponse&乱码问题
HTTP请求响应简图请求响应HttpServletRequest简述Request是请求,将需要传给服务器的内容打包成http协议发送给服务器请求首行 请求方式 请求路径 协议/版本号request.getMethod(): 获取请求方式(GET和POST)request.getRequestURI(): 获取请求路径 /项目名称/Servl
2016-12-19 19:38:04
878
原创 servlet
1.servlet的作用处理请求,生成响应.2.创建servlet的方式1>实现servlet接口2>继承javax.servlet.GenericServlet3>继承javax.servlet.http.HttpServlet方式一代码(实现servlet接口):package com.jyh.servlet;import java.io.IOExc
2016-12-09 15:54:47
805
原创 Java自带的XML解析
JAXP (Java API for XML Processing,意为处理XML的Java API)解析XML一般有两种方式:一种是DOM方式:一次性读取XML内容存入内存优点:能进行各种增删改查的操作确定:占用内存大使用:给定需要读取的文件即可读取,读取出来之后再根据自己写的方法进行操作还有一种是SAX方式:顺序读取内容,碰到什么样的标签执行什么样的操作由自己定义
2016-11-27 18:51:50
3254
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人