自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池ThreadPoolExecutor实现原理

1. ThreadPoolExecutor实现原理ThreadPoolExecutor的构造方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,

2020-07-12 21:30:21 176

原创 ThreadLocal,在多线程下保证数据安全

1. ThreadLocal简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。常用的方式:1.synchronize 加锁方法 2.ThreadLocal方法ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。2.ThreadLocal实现原理Java中的ThreadLocal是用哈希表实现的,

2020-07-11 16:17:33 762

原创 HTTP学习

1.网络基础 TCP/IP计算机与网络设备要相互通信,双方就必须基于相同的方法。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。TCP/IP 的分层管理TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层。应用层决定了向用户提供应用服务时通信的活动。HTTP 协议也处于该层。传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Co

2020-06-15 22:00:09 196

原创 多线程

多线程1. 什么是线程和进程?进程是程序的一次执行过程,是系统运行程序的基本单位,进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。当启动main函数时,就启动了JVM进程。线程:线程与进程相似,但线程是一个比进程更小的执行单位。一个进程执行中可以产生多个线程。在jvm中,同类的线程共享堆空间和方法区,每个线程私有PC寄存器、虚拟机栈、本地方法栈2. 线程与进程的关系,区别及优缺点?关系:在一个进程执行中可以产生多个线程,线程是进程的最小运行单位。区别:各进程之间是独立的,同一

2020-06-14 21:31:06 161

原创 HashMap底层实现原理

HashMap实现原理1.概述HashMap是基于哈希表的Map接口的非同步实现。元素以键值对的形式存放,并且允许null键和null值,因为key值唯一(不能重复),因此,null键只有一个。另外,hashmap不保证元素存储的顺序,是一种无序的,和放入的顺序并不相同(此类不保证映射的顺序,特别是它不保证该顺序恒久不变)。HashMap是线程不安全的。2.继承关系public class HashMap<K,V> extends AbstractMap<K,V> i

2020-06-08 22:27:12 25383 1

原创 深入理解JVM

深入理解JVM jvm:跨语言的平台(一次编译,到处运行) jvm:自动内存管理,自动垃圾回收一.运行时数据区 jvm在执行java程序的过程中,会将管理的内存分为若干个不同的数据区域。即: 1.程序计数器(PC寄存器) 2.虚拟机栈 3.本地方法栈 4.堆空间 5.方法区   其中:    线程私有的:程序计数器,虚拟机栈,本地方法栈    线程共享的:堆,方法区,直接内存1.1 程序计数器(PC寄存器)程序计数器是一块较小的内存空间,可以看作是当前线程所

2020-06-01 15:30:17 377 1

原创 SpringMVC学习(二)

SpringMVC注解开发上面我们已经对 Spring MVC 有了一定的了解,并且通过 XML 配置的方式创建了第一个 Spring MVC 程序,我们来看看基于注解应该怎么完成上述程序的配置:第一步:为 HelloCon 添加注解package com.chen.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springfr

2020-05-11 20:43:39 99

原创 SpringMVC学习(一)

1.SpringMVC1.1 MVC模式Controller:应用程序中用户交互部分(Servlet)Model:应用程序数据逻辑部分(JavaBeans)View:数据显示部分(JSP)优点:职责清晰,较适合于大型项目架构 缺点:分层较多,不适合小型项目开发1.2 什么是SpringMVC?其作用是什么?SpringMVC是一种Web层mvc框架,用于替代servlet,主要用于处理和响应请求,获取表单参数,表单校验等SpringMVC框架的作用就是用来简化

2020-05-11 20:19:58 189

原创 SSM框架整合

springmvc+sping+mybatis1.环境搭建IDEA 2018mysql 8.0.19maven 3.62.创建maven工程,导入所需要的依赖 <!--导入依赖--> <dependencies> <!--Junit--> <dependency> <groupId>junit</groupId> <artif

2020-05-10 09:46:43 126

原创 Spring学习(五)

1. MyBatis-Spring将mybatis的内容和Spring进行整合处理。具体步骤:1.导入依赖 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artif...

2020-05-07 16:22:33 349

转载 Spring学习(四)

1.面向切面编程(AOP)AOP(Aspect Oriented Programming),即面向切面编程,是OOP的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常...

2020-05-07 15:11:57 91

原创 Spring学习(三)

代理模式1.1 静态代理什么是静态代理?如若代理类在程序运行之前就已经存在,那么这种代理方式被称为静态代理。这种情况下的代理类通常都是我们在Java代码中定义的。通常情况下静态代理类和目标类通常都会实现同一个接口或者派生自同一父类  静态代理角色分析抽象角色 : 一般使用接口或者抽象类来实现真实角色 : 被代理的角色(被代理类)代理角色 : 代理真实角色 ; 代理真实角色后 ,...

2020-05-06 21:07:09 70

原创 Spring学习(二)

1.自动装配自动装配是使用spring满足bean依赖的一种方法spring会在应用上下文中为某个bean寻找其依赖的bean。Spring中bean有三种装配机制,分别是: 1.在xml中显式配置; 2.在java中显式配置; 3.隐式的bean发现机制和自动装配。Spring的自动装配需要从两个角度来实现:组件扫描(component scanning):spring会自动...

2020-05-06 11:02:55 98

原创 Spring学习(一)

1.Spring的简介Spring是一个开源的轻量级,具有控制反转(IoC)和面向切面编程(AOP)的Java 开发框架。Java Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。Spring 框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring的优点方便解耦,简化开发Spr...

2020-05-04 21:19:55 193

原创 MyBatis学习(六)

缓存1、什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。2、为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。3、什么样的数据能使用缓存?经常查询并且不经常改变的数据。4、MyBatis缓存...

2020-05-03 17:12:47 99

原创 MyBatis学习(五)

动态sql动态SQL是MyBatis的强大特性之一。如果你使用过JDBC或其它类似的框架,你应该能理解根据不同条件拼接SQL语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态SQL并非一件易事,但借助可用于任何SQL映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。使用...

2020-05-03 16:38:38 106

原创 MyBatis学习(四)

1.多对一查询处理多对一的理解:多个学生对应一个老师对于学生,就是多对一的现象,即从学生这边关联一个老师!实现步骤1.搭建环境:创建数据库use mybatis;CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`)) E...

2020-05-03 16:08:46 120

原创 MyBatis学习(三)

解决字段名和属性不一致第一种方式:起别名如果列名(数据库字段名)和属性名(实体类属性名)不能匹配上,可以在SELECT语句中设置列别名(这是一 个基本的 SQL 特性)来完成匹配。例如<select id="selectUsers" resultType="User"> select user_id as "id", user_nam...

2020-04-30 20:34:10 104

原创 MyBatis学习(二)

MyBatis学习(二)一、配置解析MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:configuration(配置): properties(属性) settings(设置) typeAliases(类型别名) environments(环境配置) environment(环境变量): transactionMana...

2020-04-30 16:23:22 128

原创 MyBatis学习(一)

一:Mybatis的简介MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。二:Mybatis的入门思路:搭建环...

2020-04-30 11:17:29 288

空空如也

空空如也

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

TA关注的人

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