自定义博客皮肤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 87

原创 深入Threadlocal原理

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

2023-05-30 11:07:49 105

原创 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 104

原创 JVM直接内存

JVM直接内存

2022-10-14 18:50:56 155

原创 串池StringTable

串池StringTable

2022-10-14 18:50:13 95

原创 jvm内存结构

jvm内存结构

2022-10-13 22:11:23 71

原创 springmvc视图

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

2022-02-17 23:46:03 208 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 362

原创 springmvc域对象共享数据

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

2022-02-15 23:53:06 204

原创 @RequestMapping

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

2022-02-14 23:26:11 458

原创 第一个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 339

原创 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 394

原创 封装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 215

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

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

2022-02-08 23:53:16 1710

原创 mybatis第一个例子

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

2022-02-07 00:04:53 664

原创 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 638

原创 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 1140

原创 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 672

原创 Bean作用域

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

2022-01-28 23:32:30 242

原创 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 447

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

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

2022-01-26 23:26:59 1881

原创 Servlet过滤器

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

2022-01-25 21:29:12 1693

原创 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 1111

原创 Servlet请求乱码问题

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

2022-01-23 22:01:49 2535 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 688

原创 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 2291

原创 Linux的权限管理

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

2022-01-19 22:53:27 579

原创 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 903

原创 Linux文件的操作

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

2022-01-17 23:03:29 906

原创 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 262

原创 Linux的目录结构

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

2022-01-14 22:38:09 133

原创 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 186

原创 MYSQL事务简单介绍

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

2022-01-12 23:04:19 546

原创 MYSQL表的约束

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

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

原创 MYSQl表的子查询

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

2022-01-10 23:45:15 1039

空空如也

空空如也

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

TA关注的人

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