自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

业精于勤荒于嬉,行成于思毁于随

博采众长,厚积薄发。

  • 博客(110)
  • 资源 (1)
  • 收藏
  • 关注

原创 Explain详解与MySQL索引优化最佳实践

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中like KK%相当于=常量,%KK和%KK% 相当于范围-- mysql5.7关闭ONLY_FULL_GROUP_BY报错本文文档:【有道云笔记】01-Explain详解与索引优化最佳实践有道云笔记。

2024-08-04 18:49:44 801

原创 CSS3中display显示属性

设为none,全都消失,位置也不占,visibility为hidden消失了,但是还占位置。

2024-08-28 15:18:58 225

原创 Spring之Bean生命周期源码解析上

实例化自动注入Aware对象初始化。

2024-08-28 15:14:11 700

原创 Spring之底层架构核心概念解析

我们还可以。

2024-08-27 09:47:36 742

原创 Spring事务

当我们在某个方法上加了@Transactional注解后,就表示该方法在调用时会开启Spring事务,而这个方法所在的类所对应的Bean对象会是该类的代理对象。如果存在,则利用事务管理器(TransactionMananger)新建一个数据库连接。执行target.test(),执行程序员所写的业务逻辑代码,也就是执行sql。判断当前执行的方法是否存在@Transactional注解。修改数据库连接的autocommit为false。执行完了之后如果没有出现异常,则提交,否则回滚。

2024-08-27 09:42:16 255

原创 AOP大致流程

代理类中还会有一个target属性,该属性的值为被代理对象(也就是通过UserService类推断构造方法实例化出来的对象,进行了依赖注入、初始化等步骤的对象)UserService代理对象.test()--->执行切面逻辑--->target.test(),注意target对象不是代理对象,而是被代理对象。当我们从Spring容器得到UserService的Bean对象时,拿到的就是UserServiceProxy所生成的对象,也就是代理对象。执行切面逻辑(@Before)找出所有的切面Bean。

2024-08-26 10:45:52 204

原创 Spring推断构造方法

需要重视的是,如果Spring选择了一个有参的构造方法,Spring在调用这个有参构造方法时,需要传入参数,那这个参数是怎么来的呢?如果一个类存在多个构造方法,Spring不知道如何选择,就会看是否有无参的构造方法,因为无参构造方法本身表示了一种默认的意义。如果一个类只存在一个构造方法,不管该构造方法是无参构造方法,还是有参构造方法,Spring都会用这个构造方法。这些构造方法中,存在一个无参的构造方法,那么Spring就会用这个无参的构造方法。确定用哪个构造方法,确定入参的Bean对象,这个过程就叫做。

2024-08-26 10:41:41 293

原创 Spring中Bean的创建过程

紧接着,Spring会判断该对象是否实现了InitializingBean接口,如果实现了,就表示当前对象必须实现该接口中的afterPropertiesSet()方法,那Spring就会调用当前对象中的afterPropertiesSet()方法(最后,Spring会判断当前对象需不需要进行AOP,如果不需要那么Bean就创建完了,如果需要进行AOP,则会进行动态代理并生成一个代理对象做为Bean(那么Spring到底是如何来创建一个Bean的呢,这个就是Bean创建的生命周期,大致过程如下。

2024-08-25 22:41:58 344

原创 Spring中是如何创建一个对象

其实不管是AnnotationConfigApplicationContext还是ClassPathXmlApplicationContext,目前,我们都可以简单的将它们理解为就是用来创建Java对象的,比如调用getBean()就会去创建对象(此处不严谨,getBean可能也不会去创建对象,后续课程详解)。这样,但调用context.getBean("userService")时,就可以根据"userService"找到UserService类,从而就可以去创建对象了。

2024-08-25 22:40:23 267

原创 最新CSS3定位元素

学习盒模型,页面版式主要由三个属性控制:position属性,控制元素位置关系。display属性,控制元素堆叠,并排,还是不在页面上出现。float属性,提供控制的方式,以便把元素组成多栏布局。

2024-08-24 15:49:19 1212

原创 CSS3多行多栏布局

当前布局由6个等宽行组成,其中第四行有三栏,第五行有四栏。

2024-08-24 14:51:38 354

原创 CSS3页面布局-三栏-中栏流动布局

控制两个外包装容器的外边距,一个包围三栏,一个包围左栏和中栏。实现三栏布局且中栏内容区不固定的核心问题就是处理右栏的定位,并在中栏内容区大小改变时控制右栏与布局的关系。

2024-08-23 17:12:04 329

原创 CSS3页面布局-三栏-固定宽度布局

一般原则,控制布局宽度,内容决定布局高度。

2024-08-23 17:09:57 507

原创 Tomcat热加载和热部署

在项目开发过程中,经常要改动Java/JSP 文件,但是又不想重新启动Tomcat,有两种方式:热加载和热部署。热部署表示重新部署应⽤,它的执行主体是Host。热加载表示重新加载class,它的执行主体是Context。思考:Tomcat 是如何用后台线程来实现热加载和热部署的?

2024-08-22 23:01:15 984

原创 Tomcat类加载机制详解

Java中有 3 个类加载器,另外你也可以自定义类加载器。

2024-08-22 22:57:28 1080

原创 Tomcat性能调优

你会看到 Tomcat 中的各种连接器,展开“http-nio-8080”,你会看到这个连接器上的统计信息,其中 maxTime 表示最长的响应时间,processingTime 表示平均响应时间,requestCount 表示吞吐量,errorCount 就是错误数。理论上我们可以通过公式 线程数 = CPU 核心数 *(1+平均等待时间/平均工作时间),计算出一个理想值,这个值只具有指导意义,因为它受到各种资源的限制,实际场景中,我们需要在理想值的基础上进行压测,来获得最佳线程数。

2024-08-21 17:39:43 716

原创 Tomcat 线程模型详解

I/O要解决什么问题I/O:在计算机内存与外部设备之间拷贝数据的过程。到底采取何种选择就是I/O模型需要解决的事情了。以网络数据读取为例来分析,会涉及两个对象,一个是调用这个I/O操作的用户线程,另一个是操作系统内核。一个进程的地址空间分为用户空间和内核空间,基于安全上的考虑,用户程序只能访问用户空间,内核程序可以访问整个进程空间,只有内核可以直接访问各种硬件资源,比如磁盘和网卡。不同的I/O模型对于这2个步骤有着不同的实现步骤。其中信号驱动式IO在实际中并不常用。

2024-08-21 17:33:59 983

原创 Tomcat整体架构及其设计精髓分析

本专题讲解的Tomcat版本: apache-tomcat-9.0.55 , Tomcat9源码阅读环境搭建,查看我的其他博文。官方文档:Apache Tomcat 9 (9.0.93) - Documentation IndexTomcat是Apache Software Foundation(Apache软件基金会)开发的一款开源的Java Servlet容器。它是一种Web服务器,用于在服务器端运行Java Servlet和JavaServer Pages (JSP)技术。它可以为Java Web应用

2024-08-20 14:38:58 992

原创 Tomcat9源码阅读环境搭建

目的:搭建源码阅读环境。

2024-08-20 14:25:20 450

原创 GraalVM与SpringBoot

spring 6.0和spring boot3.0都会基于jdk17构建,spring官方也写的很清晰,会继续维护和升级spring 2.的版本,如果有人不愿意升级,一样可以使用老的版本。比如阿里开源的jdk8,11,就有非侵入式携程,在高并发项目中性能比jdk17要强。而云原生的虚拟机则应该是Oracle公司主导,因为国外开发者,大多不会强制限定一定是Java语言,喜欢多语言开发,所以应该来说比较受欢迎,而国内则不同。所以到底是Oracle公司在引导Java了,还是有可能国内的公司引导了,这个都不好说!

2024-08-19 15:43:55 325

原创 让Java性能提升的JIT深度剖析

跨语言(语言无关性):JVM只识别字节码,所以JVM其实跟语言是解耦的,也就是没有直接关联,JVM运行不是翻译Java文件,而是识别class文件,这个一般称之为字节码。还有像Groovy 、Kotlin、Scala等等语言,它们其实也是编译成字节码,所以它们也可以在JVM上面跑,这个就是JVM的跨语言特征。Java的跨语言性一定程度上奠定了非常强大的java语言生态圈。Java程序在运行的时候,主要就是执行字节码指令,一般这些指令会按照顺序解释执行,这种就是解释执行。

2024-08-19 15:42:42 1425

原创 为Java开疆拓土的ZGC深度剖析

ZGC(The Z Garbage Collector)是JDK 11停顿时间不超过10ms(JDK16已经达到不超过1ms);停顿时间不会随着堆的大小,或者活跃对象的大小而增加;支持8MB~4TB级别的堆,JDK15后已经可以支持16TB。这么去想,如果使用ZGC来做Java项目,像对STW敏感的证券系统,游戏的系统都可以去用Java来做(以前都是C或者C++的市场),所以ZGC的出现就是为了抢占其他语言的市场(卷!

2024-08-18 10:00:33 607

原创 阿里巴巴Arthas详解

/字符串常量池:"计算机"和"技术" 堆内存:str1引用的对象"计算机技术"//堆内存中还有个StringBuilder的对象,但是会被gc回收,StringBuilder的toString方法会new String(),这个String才是真正返回的对象引用String str2 = new StringBuilder("计算机").append("技术").toString();//没有出现"计算机技术"字面量,所以不会在常量池里生成"计算机技术"对象//true。

2024-08-17 21:37:01 910

原创 JVM调优工具详解及调优实战

事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用。

2024-08-16 11:08:20 1076

原创 垃圾收集器G1&ZGC详解

G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1将Java堆划分为多个大小相等的独立区域(),JVM目标是不超过2048个Region(JVM源码里TARGET_REGION_NUMBER 定义),实际可以超过该值,但是不推荐。

2024-08-15 23:47:00 858

原创 Java垃圾收集底层算法实现

在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。漏标的问题主要引入了三色标记算法来解决。

2024-08-14 21:09:56 930

原创 Java垃圾收集器ParNew&CMS

分代收集理论当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。

2024-08-14 21:05:15 1423

原创 Java中class文件结构分析二

第17个常量池:01 00 15 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 5601:tag位表示的是utf8类型的字面量常量00 15 二个字节表示的是字面量常量的长度为21接下来21个字节: 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56 表示字符串 (Ljava/lang/String;)V。

2024-08-13 10:28:15 760

原创 Java中class文件结构分析一

22为常量池类型的nameAndType类型,分别指向我们的常量池第#5(utf-8类型的常量)的位置表示我们的字段的名称userName,#6指向的是常量池第六个位置,类型是utf-8类型的值为:Ljava/lang/String;6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 字面量的值为:java/lang/Object。第十个常量分析:01 00 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65。

2024-08-13 10:03:49 917

原创 一文彻底理解position定位问题,让新手彻底不迷糊

CSS布局核心是position属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位。position属性有4个值:static,relative,absolute,fixed.

2024-08-12 23:18:15 605

原创 JVM对象创建与内存分配机制深度剖析

指针压缩。

2024-08-12 11:04:46 983

原创 HTML标记与文档结构

内容标记包括闭合标签和非闭合标签。

2024-08-11 22:02:41 367

原创 JVM内存模型深度剖析与优化

对象在堆内部挪动的过程其实是复制,原有区域对象还在,一般不直接清理,JVM内部清理过程只是将对象分配指针移动到区域的头位置即可,比如扫描s0区域,扫到gcroot引用的非垃圾对象是将这些对象复制到s1或老年代,最后扫描完了将s0区域的对象分配指针移动到区域的起始位置即可,s0区域之前对象并不直接清理,当有新对象分配了,原有区域里的对象也就被清除了。

2024-08-11 18:21:14 573

原创 HTML实现弹出层

位置。并排显示:某度上的图片代码:6.3.弹出层.html。

2024-08-11 00:51:52 538

原创 最新HTML设计搜索表单

页眉中包含表单,表单中只需包含label和Input.

2024-08-10 18:50:45 462 2

原创 2024最新表单元素以及设置表单样式

【代码】2025最新表单元素以及设置表单样式。

2024-08-10 18:48:17 218

原创 从JDK源码级别彻底剖析JVM类加载机制

commonLoader:Tomcat最基本的类加载器,加载路径中的class可以被Tomcat容器本身以及各个Webapp访问;catalinaLoader:Tomcat容器私有的类加载器,加载路径中的class对于Webapp不可见;sharedLoader:各个Webapp共享的类加载器,加载路径中的class对于所有Webapp可见,但是对于Tomcat容器不可见;

2024-08-10 10:32:09 728

原创 HTML表单元素

表单把用户的信息发给服务器。

2024-08-10 00:12:24 330

原创 CSS3下拉菜单实现

2.a链接,显示为块状撑满,字体颜色#555,背景色#eee,内边距上下0.2em左右1em,边框颜色透明。3.二级菜单列表临时显示,显示为块状,相对于父亲绝对定位,左边与父菜单对齐,顶边与父菜单底对齐。8.列表中的a显示为块状,边框右侧为实线,背景延伸内边距盒子,下划线去掉。3.a伪类悬停,字体颜色#fff,背景色#aaa.4.a伪类点击,背景色#fff,字体颜色#ccc。2.二级菜单内部a去掉右边框,上边框实线。5.整体菜单样式设置内边距,外边距为0.7.列表为左浮动,去掉点,相对定位。

2024-08-09 17:44:17 401

原创 Mysql 8.0新特性详解

建议使用8.0.17及之后的版本,更新的内容比较多。

2024-08-09 10:41:52 1021

CSS3专业网页开发指南,练习代码,有图有真相

学前端必看的入门书,国外大佬写的,刷经验就完事了

2024-07-30

poi3.17实现word转html(可以作为流读取)

通过poi3.17将本地word转化为html页面,同时也可以读取流通过IOUtils将流转化为string,返回到前台。可以替代ueditor输入,通过ajax转化后返回在ueditor中显示。很棒的功能。

2018-12-05

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

TA关注的人

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