- 博客(29)
- 收藏
- 关注
原创 学习总结-深入理解JVM-线程安全与锁优化
线程安全线程安全的定义:当多个线程访问一个对象时,如果不考虑这些线程在运行时环境下的调度与执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都能获得正确的结果,那这个对象是线程安全的。1. Java 语言中的线程安全:在这里我们可以不把线程安全当做一个非真即假的二元 排他选项来看待,按照线程安全的“安全程度”由强至弱来排序,我们可以将 Java 语言中各种操作共享的数据分为以下 5 类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。不可变:(1)在 J
2020-09-01 20:59:51 149
原创 学习总结-Maven添加Activitiy pom依赖
https://blog.csdn.net/kenhins/article/details/52413526
2020-09-01 11:42:48 685
原创 学习总结-Activiti工作流基本使用
一、简介Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。二、Activiti数据库支持Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分
2020-08-22 16:54:02 438
原创 学习总结-Maven+SSM整合
一、整合 SSM 框架集1. pom 文件中添加依赖:<properties> <spring.version>4.3.12.RELEASE</spring.version> <jackson.version>2.9.3</jackson.version> <commons-fileupload.version>1.3.3</commons-fileupload.version> <
2020-08-15 17:27:12 214
原创 学习总结-SpringMVC基本使用
一、简介SpringMVC 是一种基于 Java 实现了 MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring MVC也是要简化我们日常Web开发的。二、SpringMVC 的执行流程客户端发送请求到 DispatcherServlet 前端控制器;DispatcherServlet 通过调用 HandlerMapping 处理器映射器查询要具体要执行的 Hand
2020-08-15 14:25:58 163
原创 学习总结-Spring整合MySQL事务、Mybatis框架
一、MySQL事务简单了解一下 MySQL 事务,参考文章:https://blog.csdn.net/ncepu_Chen/article/details/94857481MySQL事务主要用于处理操作量大,复杂度高的数据,事务中可能包含一个或多个SQL语句,这些语句要么不执行,要么全部执行成功。事务必须满足四个条件(ACID):(1)原子性(Atomicity, 或称不可分割性);(2)一致性(Consistency);(3)隔离性(Isolation);(4)持久性(Durab
2020-08-08 17:18:03 285
原创 学习总结-Spring框架基本使用
一、Spring框架搭建与使用1. 官网上下载 jar 包,就是速度有些慢。参考网站:https://www.cnblogs.com/chy18883701161/p/11108542.html2. 导包:只需要导入五个 spring-frameword 中的 jar 包和一个依赖包,分别是spring-aop-5.1.2.RELEASE.jarspring-beans-5.1.2.RELEASE.jarspring-context-5.1.2.RELEASE.jarspring-cor
2020-08-08 15:27:07 290
原创 学习总结-MyBatis逆向工程和分页插件
一、逆向工程MyBatis提供一个便利的插件,可以直接依据数据库的表自动生成相应的实体类、映射文件和接口方法。1. 导包:点击进入GitHub ,下载MyBatis generator 相应的jar包。建议创建一个Java SE项目专门用于逆向工程生成文件,方便设置路径问题,生成好后也可以直接拷贝走。主要需要导入三个jar包,分别是逆向工程的核心包 mybatis-generator-core-1.3.2.jar、数据库连接包 mysql-connector-java-8.0.16.jar、My
2020-08-08 10:21:01 188
原创 学习总结-MyBatis基本使用
MyBatis框架使用一、第一种开发模式使用MyBatis的SqlSession中提供的方法进行简单的增删改查。1. 导包:到官网下载MyBatis的jar包,可以到中文官网上下载,下载完成后,在项目中导入MyBatis的核心jar包以及附属jar包,另外,还需要导入数据库连接的jar包,否则是连接不了数据库的。http://www.mybatis.cn/82.html2. 配置MyBatis主配置文件:配置文件的命名格式一般为mybatis-config.xml;一般放置在src目录下。3
2020-08-01 17:23:48 204
原创 学习总结-hibernate基本使用
hibernate基本步骤一、导包使用hibernate框架的第一步是先导jar包,在hibernate官网上下载文件,导入hibernate框架必须的jar包。另外,如果使用的JDK小于等于8的话,有上述的jar包就够了,但如果使用JDK版本大于8的话,只有hibernate的jar包还不够,在运行程序时会抛出异常java.lang.ClassNotFoundException: javax.xml.bind.JAXBException,所以如果是JDK8以上的版本的话,还需要导入其他的包,参考
2020-08-01 11:31:33 520
原创 学习总结-servlet相关知识与使用
简介Servlet 是一个与平台无关的服务器端插件,它运行于 Servlet 容器中。Servlet 容器负责 Servlet 与客户的通信及调用 Servlet 方法,Servlet 和客户之间的通信采用“请求——响应”模式,即一问一答模式。常使用 Tomcat 作为 Servlet 的服务器端,Tomcat 是一种具有 JSP 环境的 Servlet 容器;Servlet 容器能代替用户管理和调用 Servlet。创建servlet有两种方式创建一个 Servlet:实现 Servlet 接口
2020-07-18 10:15:55 108
原创 学习总结-jQuery基础知识
简介jQuery是JavaScript的类库,将JavaScript封装起来,以更少的代码实现更全面的功能,也可以说是JavaScript升级版。加载jQuery是一种加载的方式执行,与JavaScript中的onload不同,javascript中的加载是在页面加载完成之后加载,而jQuery在页面加载后加载。$(document).ready(function(){ JQuery代码 });$(function(){ JQuery代码 }).jQuery普通选择器:与CSS类似id选
2020-07-04 16:43:52 182 1
原创 学习总结-JavaScript基础知识
简介JavaScript是网景公司开发的基于对象(Object)和事件驱动(Event Driven)并具有安全性能的一种动态脚本语言,是一种可以直接运行于web浏览器脚本语言。组成ECMAScript:JavaScript标准。DOM:文档对象模型。BOM:浏览器对象模型。加载页面载入时,会首先先执行body中的JavaScript;调用时才会执行head中的JavaScript。使用window.onload或在body标签中设置onload事件,会在页面加载完后执行相应的方法。弹
2020-07-04 15:27:37 146
原创 学习总结-CSS常用样式设置
CSS:层叠样式表,通过样式定义如何显示HTML标签,将内容的显示与表现进行了分离,提高了工作的效率。使用CSS设置样式时,首先需要通过选择器获取到标签信息,然后才能对标签设置属性信息。普通选择器id选择器:标签中设置id属性,样式中用“#”代表id选择器。类选择器:标签中设置class属性,样式中用“.”代表类选择器。标签选择器:样式中使用某一标签名代表该标签的选择器。<style type="text/css"> #id1{ font-size: 14px; } .
2020-07-04 11:29:02 294
原创 学习总结-HTML常用标签
head中的常用标签 head属于HTML中的头部,一般用于设置一些头部信息,如meta、title。另外CSS样式、JavaScript和jQuery脚本也可以写在这里。meta:用于设置HTML的元数据。 title:用于设置HTML的标题。<head> <meta charset="utf-8"> <title>hello</title></head> body中的常用标签 body作为HTML的..
2020-07-04 09:59:42 150
原创 学习总结-JDBC连接MySQL数据库,实现增删改查
JDBC连接MySQL数据库导入jar包,根据安装的MySQL版本,选择导入不同版本的jar包,常用的有MySQL5的jar:mysql-connector-java-5.1.7-bin.jar。可以根据自己安装的MySQL版本到中央仓库中下载。加载驱动,一般的方法是Class.forNam(“com.mysql.jdbc.Driver”);这是5版本的连接方式,如果是更高版本的话,可能需要将字符串改成"com.mysql.cj.jdbc.Driver"。获取连接对象,使用静态类DriverMana
2020-06-19 20:08:58 350
原创 学习总结-MySQL数据库的基本操作
MySQL中DDL语言DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。create:建立数据库表格create table user( id int(8) primary key auto_increment, name varchar(20) not null, password varchar(50) default '123
2020-06-19 19:29:51 172
原创 JVM(四):内存模型(JMM)、CAS、synchronized优化
一、内存模型(JMM)原子性:指不可再分的操作,当一个操作可再分的时候会受到多线程的影响,使用 synchronized 可保证不受多线程的影响,使操作具有原子性。内存结构:一个主内存用于存放共享数据;多个工作内存,存放拷贝的共享数据,线程对工作内存的共享数据进行修改,然后再更新到主内存中。可见性:保证在多线程之间,一个线程对 volatile 修饰的变量的修改对另外一个线程可见,单独 v...
2020-02-07 21:08:47 208
原创 JVM(三):GC调优、Javap工具、运行期优化
一、GC调优确定调优目标,选择合适的回收期:(1)低延迟:CMS、G1、ZGC;(2)吞吐量:ParallelGC。调优之前先确定代码问题:数据是否太多、数据表示是否太臃肿、是否存在内存泄露。从新生代调优开始:内存空间越大越好。(1)新生代的大小建议设置为堆内存大小的25%~50%之间;(2)新生代大小的理想内存是能容纳 【并发量*(请求 - 相应)】的数据;(3)幸存区的内存设...
2020-02-07 15:20:00 170
转载 IDEA编辑报错:Extension methods are not supported at language level ‘5‘
今天在一个使用Maven管理的项目中有用到JDK8版本以上的新特性时,例如,在接口中定义默认方法(default)和静态方法(static)、使用 Set.of() 等情况时,报了一个错误:Extension methods are not supported at language level ‘5’这里要求我们要和所使用新特性的版本相同或者更高才行,解决办法参考:本文链接版权声明:本文...
2020-02-07 13:25:16 1446
原创 JVM(二):JVM GC(垃圾回收)
GC(垃圾回收)一、判断回收对象:使用可达性分析算法探索所有存活的对象,看是否能够沿着 GC Root 对象为起点的引用链找到对象,找不到,则可回收。.二、五种引用:(1)强引用:只有所有 GC Root 对象都不通过 “强引用”引用该对象时,才可被回收。一般使用关键字 new 创建的对象都是强引用。(2)软引用(SoftReference):仅有软引用引用该对象时,在垃圾回收后,内存...
2020-02-06 21:49:39 121
原创 JVM(一):JVM内存结构
一、Java内存结构分布图二、分析程序计数器(Program Counter Register):(1)在物理上是一个寄存器;(2)作用:记住下一条 JVM 指令的执行地址;(3)特点:是线程私有的,即每个线程都有自己独立的程序计数器;不会存在内存溢出。Ps:源代码(编译)——> 字节码文件(存放的是JVM指令);JVM指令 ——> 解释器(解释指令)—...
2020-02-06 15:02:37 123
原创 Java常用的函数式接口及流的使用
简介**函数式接口(Functional Interface)**就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。**流(Stream)**是一个来自数据源的元素队列,Stream不会存储元素,而是按需计算。...
2020-02-05 21:01:43 147
原创 Collection集合继承图
继承图Collection作为单列集合的顶层接口,常用方法有1、void clear();//清除2、boolean remove(E);//删除指定元素3、boolean contains(E);//判断元素 E 是否存在4、boolean isEmpty();//判断集合是否为空5、Object[] toArray();//集合元素存储到数组List、Set、Map都是Col...
2020-01-11 17:41:37 602
原创 Java常用集合
继承图一、List接口的两个实现类ArrayList、LinkedList。集合ArrayList:特点:1、有序的集合;2、允许重复的元素;3、有索引,可以使用普通的for循环遍历,因为该集合的底层是一个数组结构。常用方法:1、boolean add(E e);//添加一个元素2、E get(int index);//获取索引编号对应的元素3、E remove(int in...
2020-01-11 17:39:46 86
原创 Lambda基本使用
Lambda基本使用Lambda:函数式编程思想,只注重结果,不注重过程;Lambda表达式的标准格式:格式:(参数列表)->{重写的代码}说明:():接口中抽象方法的参数列表,有参数就写,没有就空着;->:把参数传递给方法体;{}:重写抽象方法的方法体。Lambda省略格式:凡是可根据上下文推导出来的消息都可以省略。可省略部分:(参数列表):参数列表的类型可...
2019-11-25 20:29:18 252
原创 线程池的使用
线程池的使用线程池:是线程的容器,其中的线程可以反复使用。JDK1.5内置了线程池。原理:线程池的线程是保存在一个集合中的,以LinkedList集合为例,当从线程池中取出一个线程时,集合会调用 V removeFirst()方法取出第一个线程;当线程使用完之后会自动返还给线程池,即集合会调用addLast()方法把线程添加会集合中。1、使用Executors工具类的静态方法获取线程池:...
2019-11-25 17:54:12 101
原创 解决线程安全问题的四种方法
解决线程安全问题的四种方法使用同步代码块synchronized:格式:synchronized(锁对象){访问了共享资源的代码}使用同步方法:格式:修饰符 synchronized 返回类型 方法名(参数列表){访问了共享资源的代码}使用静态同步方法:格式:修饰符(static) synchronized 返回类型 方法名(参数列表){访问了共享资源的代码}...
2019-11-24 21:50:44 1216
原创 SpringMVC实现文件上传
步骤:前端代码文件选择框的属性name的值“upload”必须与后端方法的参数名一致。<form action="fileUpload" method="post" enctype="multipart/form-data"> <input type="file" name="upload"/> <input type="submit" value="上...
2019-11-18 13:02:58 92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人