自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程基础知识

该demo中,实现callable接口,提交给ExecutorService返回的是异步执行的结果,另外,通常也可以利用FutureTask(Callable callable)将callable进行包装然后FutureTask提交给ExecutorsService。

2023-06-28 15:36:57 185

原创 深入Threadlocal原理

Threadlocal实际是通过ThreadlocalMap里的一个数组容器进行存储的,重点也都到里面简单来说他的过程,就是从当前位置开,清除过期数据,对未过期的数据重新进行位置计算,直到遍历到空entry为止启发式清理当添加新元素set()或删除另一个过时元素时,将调用此函数。它执行对数扫描次数作为不扫描(保留过期数据)和与元素数量成比例的扫描次数之间的平衡,使其能够清除过期数据。rehash()set()执行最后当启发式清理完毕后 Entry的数量size>=

2023-05-30 11:07:49 198

原创 HashMap深入理解

同时在进行数据迁移是本来是所有数据用hash&(newCap - 1)来进行寻找table的位置,但在扩容倍数是2的条件下可以使用hash&oldCap 来解决数据迁移,就不需要在重新计算每一个数组中元素的哈希值了。负载因子默认是3/4是因为他在计算时可以优化成容量-容量>>1,而且3/4也比较满足对时间和空间的要求。小提示:实际table数组初始化是在后续扩容的resize方法中。原因是扩容倍数是2方便进行&运算,java中位运算要比乘除快。深入思考hashCode()为什么使用31作为乘数?

2023-05-25 14:06:20 184

原创 JVM直接内存

JVM直接内存

2022-10-14 18:50:56 248

原创 串池StringTable

串池StringTable

2022-10-14 18:50:13 150

原创 jvm内存结构

jvm内存结构

2022-10-13 22:11:23 119

原创 springmvc视图

1.Thymeleafview(文件中已配置) 用的视图技术为Thymeleaf,解析后得到Thymeleafview 在控制器方法中返回的视图名称没有任何前缀时,此时的视图名称会被springmvc中多配置的视图解析器拼接前缀和后缀得到最终路径,再通过转发的形式跳转。 2.转发视图 在在控制器方法中返回的视图名称的前缀为“forward:”时,创建InternalResourceView视图,此时返回的视图名称不会被视图解析器解析,而是直接去掉“”forward:”,然后作为路径以转发的方式实现跳

2022-02-17 23:46:03 333 1

原创 springmvc拦截器实现

拦截器的作用是对处理器进行预处理和后处理。 1.新建一个Moudule,配置好。 2.编写拦截器 public class MyInterceptor implements HandlerInterceptor { //在请求处理的方法之前执行,如果返回true执行下一个拦截器,如果返回false就不执行下一个拦截器 public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse h

2022-02-17 00:00:25 421

原创 springmvc域对象共享数据

1使用ServletAPI向request域对象共享数据 在控制器方法中,使用HttpServlRequest对象的setAttribute(域对象储存的键的名称,键值)方法,在使用thymelea模块后可以在html文件中用 <p th:text="${域对象储存的键的名称}"/> 来实现数据共享。 2.使用ModelAndVIew向request域对象共享数据(一般使用这个方法) 在控制器方法中,写如下代码 //创建ModelAndView对象 ModelAndView ma

2022-02-15 23:53:06 262

原创 @RequestMapping

1.@RequestMapping简单介绍 它可以将请求和处理请求的控制器方法关联起来,建立映射关系。 它可以标识类也可以标识方法。 2.@RequestMapping的属性 (1)value属性 它的属性值是一个字符串数组,表示请求映射能够匹配多个请求地址对应的请求。 如果在注解中只写一个参数则默认为value属性。 (2)method属性 它的属性值是一个RequestMethod类的数组,表示请求映射能够匹配多种请求方式对应的请求。 若不设置该值,get和post都能打开servle

2022-02-14 23:26:11 521

原创 第一个springmvc程序

1.新建web应用 2.加入依赖(例如springmvc框架,servlet依赖) 3.声明springmvc核心对象DispatcherServlet <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servl

2022-02-11 23:48:58 375

原创 Mybatis动态SQL

1.if标签 举例说明: <select id="selectid" resultType="dao.student"> select id,name,email,age from students <if test="id>0">//test是条件,为真时加入if内的语句,假则不加 where id=#{id} </if> </select> 2where标签 在使用它的时候,where标签内会有一个或多个i

2022-02-10 23:54:48 447

原创 封装mybatis的输出结果

一.resultType 举例 dao方法:(Student是一个学生实体类) Student selectid(Integer id); mapper: <select id="selectid" resultType="dao.Student">//封装的实体类的路径 select id,name from students where id=#{id} </select> mybatis在执行时,会先调用Student类的无参构造方法创建

2022-02-09 23:48:11 297

原创 mybatis一些设置参数的方法

一.parameterType 它表示参数的的类型,设置dao接口方法形参的参数类型,一般不用写,方法的参数类型一般可以通过反射获取。 使用例子: <insert id="方法名" parameterType="java类的全限定类型名称或者mybatis定义的别名"> sql语句 </insert> 二.dao接口方法只有一个参数 只要到接口方法的参数类型是简单类型(String和java基本数据类型) <select id="方法名"

2022-02-08 23:53:16 1828

原创 mybatis第一个例子

1.创建需要的student表,属性id,name 2.新建一个maven项目 (1)加入mybatis依赖,mysql驱动,junit,若显示报红则同步一下maven,maven会自动下载 <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <v

2022-02-07 00:04:53 747

原创 spring事务

一.注解方式创建事务 1.配置文件 (1)创建事务管理器 <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> </bean> (2)开启事务注解 <tx:annotation-driven transaction-manager="TransactionManager"></tx:annotati

2022-02-05 23:52:54 676

原创 JdbcTemplate方法介绍

1.实现数据库单个添加,修改,删除 实现方法为 update(String sql,Object...args) 第一个参数:sql语句 第二个参数:设置SQL语句的值(可变参数),可以用数组形式写入,也可用逗号隔开写 返回值是该操作影响的函数 2实现数据库查询 (1)查询返回个数 实现方法为 queryForObject(String sql,Class<T> requiredType) 第一个参数:sql语句 第二个参数:返回类型的class 返回的值是查询的个数

2022-02-04 23:47:56 1300

原创 AOP-JDK动态代理实现

1.创建接口,定义方法 public interface UserDao { public int add(int a,int b); } 2.创建接口的实现类,实现方法 public class userdaoimpl implements UserDao{ @Override public int add(int a, int b) { return a+b; } } 3.使用Proxy类创建接口代理对象 public class

2022-01-30 23:00:46 735

原创 Bean作用域

1.单实例对象 单实例对象是指在通过getBean获取的对象的地址值都是一样的。 在spring中,默认情况下是单实例对象,也可以通过在bean中进行属性设置,scope="singleton", 这时在加载spring配置文件时,会创建 文件配置: <bean id="名字" class="类路径" scope="singleton"></bean> 2多实例对象 单实例对象是指在通过getBean获取的对象的地址值都不同。 可以在bean中进行属性设置 &l

2022-01-28 23:32:30 291

原创 bean注入属性

1.set注入属性(类中有set方法) <bean id="名字" class="类路径"> <property name="属性名" value="属性值"></property> </bean> 2.有参数构造注入属性(类的构造方法带有参数) <bean id="名字" class="类路径"> <constructor-arg name="属性名" value="属性值"></constructor

2022-01-27 23:36:38 542

原创 Spring的IOC容器底层原理和实现方式

一.IOC是什么 控制反转,把对象的创建和调用过程交给spring进行管理。它的目的是降低耦合度。 二.IOC底层原理 原理是xml解析、工厂模式、反射。 一下是实现一个简单例子的基本过程 (1)第一步 xml配置文件,配置创建的对象 <bean id="名字" class="类路径"></bean> (2)第二部 工厂模式的意思是创建一个工厂类,在其中创建静态方法来返回对象,当其他方法要获取该对象时,能通过“类.方法”获取对象降低耦合度。我们就按照这个模式创..

2022-01-26 23:26:59 2016

原创 Servlet过滤器

一.过滤器的作用的作用 过滤器是处于客户端和服务端目标资源之间的过滤技术。在客户端发送请求时,会先经过过滤器,在到servlet,响应时会根据执行流程再次反向执行过滤器。 流程图: 二.过滤器的实现 通过实现Filter接口,在diFilter方法中编写过滤逻辑 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throw

2022-01-25 21:29:12 1813

原创 ServletContext对象

1.ServletContext对象的获取 获取ServletContext对象有多张方式 (1)通过request对象获取 ServletContext sc=request.getServletContext(); (2)通过session对象获取 ServletContext sc=request.getSession().getServletContext(); (3)通过ServletConfig对象获取 ServletContext sc=request.getServl..

2022-01-24 23:45:52 1187

原创 Servlet请求乱码问题

1.乱码问题的原因 产生乱码的主要原因是在解析过程中默认使用的编码方式为ISO-8859-1(不支持中文),所以解析是如果有中文会出现乱码现象。 2.乱码问题的解决方法 解决这种乱码问题的方法是设置request(HttpServletRequest类的对象)中的编码方式告诉服务器以书面方式解析数据,或者在接收到乱码数据后,再通过相应的编码格式还原。 请求分为两种,get和post。post请求无论tomcat哪个版本,都会出现乱码问题,而get请求在tomcat8及以上版本不会出现乱码问题,tom

2022-01-23 22:01:49 2682 1

原创 Linux服务管理

一.服务介绍 服务本质就是进程,但是运行在后台,通常会监听某个端口,等待其他其他程序的请求,比如(mysql,sshd,防火墙)。 二.查看服务名 方式1:直接输入setup指令,会显示系统服务 方式2:ls -l /etc/init.d指令可以看到service管理的服务 三.chkconfig指令 1.chkconfig --list 查看全部服务信息,可以通过管道命令| grep对信息进行筛选,利于观看。 2.chkconfig 服务名 --list 查看该服务名的信息 3.chk

2022-01-21 23:32:02 779

原创 Linux磁盘情况查询

1.查询整个系统的磁盘利用情况 指令:df 加上-h能显示单位。 2.查询指定目录的磁盘利用情况 指令:du 目录 -a 含文件 -h 显示单位 -s 指定目录占用大小汇总 -c 增加汇总值 -max-depth=x x为查到目录的第几级子目录 3.实用指令 举例 ①查询某文件夹下目录的个数 指令:ls -l文件夹路径 | grep “^d” | wc -l 解释指令:显示文件夹目录后先通过管道命令(| grep “^d”)筛选出开头.

2022-01-20 23:26:50 2386

原创 Linux的权限管理

一.介绍一些基本概念 在Linux中每个用户都属于一个组,一个组可以有一个或多个用户。 对于每个文件有所有者,所在组,其他组的概念。 1.所有者 所有者是指这个文件属于的用户。哪个用户创建了文件哪个用户就是该文件的所有者。 2.所在组 所在组是指该文件属于的用户属于的组。 3.其他组 其他组是指除开文件所在组用户和所有者的其他用户。 二.权限介绍 下面用一个查实例说明权限(查询指令是ll) 1.第一个字符(d) 它表示文件的类型 - 普通文件 d 目录 l

2022-01-19 22:53:27 689

原创 Linux的查找指令介绍

1.find指令 find指令是将从指定目录向下递归遍历其全部子目录,将满足条件目录或文件的显示在终端。 (1)find 指定目录 -name 文件名 查找指定目录下的文件。文件名可以写成*.txt,表示查所有的txt文件。 (2)find 指定目录 -user 用户名 查找指定目录下属于该用户的文件。 (3)find 指定目录 -size 文件大小范围 文件大小范围举例说明: -200M,表示小于200M的文件。 +200K,表示大于200K的文件。 2.locate指令 该指令可以

2022-01-18 23:42:55 949

原创 Linux文件的操作

在Linux中文件的删除修改拷贝都与目录相同 1.新增文件 touch x.txt 当文件不存在时,新建一个空文件,当文件已存在,将文件的创建时间修改成系统当前时间 2.编辑文件(主要讲vim) Linux系统会自带vim文本编辑器,vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补全、编辑及错误跳转等方便编程的功能十分丰富 vim分为3个模式,三个模式间的转换图 (1)正常模式 当你用vim 文件时进入的就是正常模式,该模式下可以通过上下左右.

2022-01-17 23:03:29 990

原创 Linux简单的目录操作

我将对于有关目录指令做一些介绍 1.cd指令 cd xx 切换到当前目录下的文件目录 cd /xx/xx/xx 根据绝对路径切换目录 cd ~或cd 回到自己的家目录 cd .. 回到当前目录的上一级目录 cd - 回到上次访问的目录 2.mkdir指令 mkdir xx 在当前目录下创建一个目录 mkdir /xx/xx 在指定目录下创建一个目录 mkdir -p /xx/xx/xx 在指定位置上创造多级目录 3.rm指

2022-01-16 23:40:23 308

原创 Linux的目录结构

1.简单介绍 在Linux系统中一切皆文件。Linux的文件系统采用的是级层式的树状目录结构,在此结构目录的最上层是根目录“/”,然后在此目录下创建其他目录。 2.具体的目录存放详解 /bin 经常使用的命令 /sbin 系统管理员使用的系统管理程序 /home 普通用户的主目录 /root 系统管理员的主目录 /lib 系统开机所需要的最基本的动态连接共享库 /lost+found 当系统关机后,存一些文件。(一般为空) /etc 所

2022-01-14 22:38:09 177

原创 MYSQL索引简单介绍

1.什么是索引 索引是为了提高查询表效率在数据库表的字段上添加的标志。所谓的提高效率就是在查询是缩小扫描的范围。在一张表上,可以一个字段添加索引,也可以多个字段联合添加索引。 2.索引的实现原理(简单说明) 索引在mysql中,不同的存储引擎会有存储在不同的位置,但都是以一个树的形式存在(自平衡二叉树:B-Tree) 3.索引的创建和删除 (1)创建索引: 例如 create index a_b_index on a(b); 给a表的b字段添加索引,起名:a_b_index (2)删除索引

2022-01-13 22:55:44 234

原创 MYSQL事务简单介绍

一.什么是事务? 一个事务其实是一个完整的逻辑,是一个最小的工作单元,不可再分。 一个事务中有很多增删改的语句,并且这些操作会同时成功或者同时失败。 二.事务的提交和回滚 1.mysql的自动提交机制 在mysql中,默认会有自动提交事务的机制(每执行一条语句提交一次)。所以我们在开启事务前要先执行“start transaction;”命令,这样会关闭mysql的自动提交事务的机制。 2.事务的提交 事务的提交就是执行该事务中的语句。 执行“commit;”命令用来提交事务。 3.事

2022-01-12 23:04:19 609

原创 MYSQL表的约束

一.什么是约束 在创建表的时候,给表中的字段数据加上一点条件。 二.表的四种约束 1.非空约束 非空约束是让表的字段不能为空。 举例实现: create table students( id int; name varchar(20) not null ); 创建表时在字段的数据类型后加not null,来限制该字段的值不能为空。若该表插入信息name为空则会报错。 2.唯一性约束 唯一性约束是让表的字段的值不会重复。(null可以重复) (1)当一个字段具有唯一性时

2022-01-11 23:24:22 501 1

原创 MYSQl表的子查询

一.表的子查询可以出现在 可以出现在select,from,where 后面。 二.三种子查询介绍 1.where 案例: //找出比最低工资高的员工姓名和工资。emp是员工表,ename是员工姓名,sal是工资 select ename,sal from emp where sal>min(sal);//这是错误的写法,where后面不能跟分组函数。 select ename,sal from emp where sal>(s

2022-01-10 23:45:15 1156

空空如也

空空如也

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

TA关注的人

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