1.什么是类加载机制? 类与类加载器的关系 2.什么是双亲委任模型 为什么要这么做呢? 双亲委任模型时如何实现的? 3.如何破坏双亲委任模型? 4.Tomcat的类加载器是怎么设计的? Tomcat如何实现自己独特的类加载机制? 总结 我想,在研究tomcat类加载之前,我们复习一下或者说巩固一下java默认的类加载器。楼主以前对类加载也是懵懵懂懂,借此机会,也好好复习一下。 楼主翻开了神书《深入理解Java虚拟机》第二版,p227,关于类加载器的部分。请看: 1.什么是类加载机制? 代码编译的结果从本地机器码转变成字节码,是存储格式的一小步,却是编程语言发展的...

目录 异常处理方案分类 基于请求转发 基于异常处理器 基于过滤器 常见异常处理实现方案 BasicExceptionController @ExceptionHandler @ControllerAdvice+@ExceptionHandler SimpleMappingExceptionResolver HandlerExceptionResolver Filter 全局异常处理实现方案 请求转发 异常处理器+请求转发补充 过滤器 异常处理器+过滤器补充 注意事项 方案推荐 异常处理方案分类 异常处理主要分为三类: 基于请求转发的方式处理异常; 基于异常处理器的方式处理...

通过这篇文章你将了解到整洁的代码对项目、公司和你的重要性,以及如何书写整洁的代码. 通过命名、类、函数、测试这四个章节,使我们的代码变得整洁. 1、为什么要保持代码整洁? 不整洁的代码随着时间的增加而增加时,生产力会随之降低.导致的结果就是: 代码不易扩展或扩展容易引发其他问题 程序崩溃 加班 增加公司成本(加人) 甚至可能造成公司倒闭 一图胜千言 1.1、所以从一开始就要保持整洁 所以在一开始就要写整洁的代码,如果有不整洁的代码就要及时的整改.绝对不要有以后再改,以后再说的想法,因为! laterequalnever 想想是不是这个道理,你有多少以后再说、以后再改的东西都抛诸脑后...

前言:近期在项目中需要对指定请求整个信道进行加解密(防篡改,反拦截),实现整个信道通讯安全,由于不确定后期那些接口可能需要类似处理,最后决定放在网关实现该功能(虽然稍微占用网关的性能,但是能够全局统一处理十分方便,性能方面可以增加配置来解决)。此过程中也踩了些坑,在此记录下来,以便后来人参考; 首先我们采用的是GlobalFilter,GlobalFilter是应用于所有路由的特殊过滤器。GlobalFilter接口的实现类如下图所示: 当请求与路由匹配时,Web处理程序会将所有的GlobalFilter和特定的GatewayFilter添加到过滤器链中。这个组合过滤器链是按org.sp...

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。 Linux 命令在系统中有两种类型:内置Shell命令和Linux命令。 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息。 cd...

1Docker迁移存储目录 默认情况系统会将Docker容器存放在/var/lib/docker目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现 /var/lib/docker 这个目录特别大。由上述原因,我们都知道,在 /var/lib/docker 中存储的都是相关于容器的存储,所以也不能随便的将其删除掉。 那就准备迁移 docker 的存储目录吧,或者对 /var 设备进行扩容来达到相同的目的。更多关于 dockerd 的详细...

1引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。 2JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: 加载JDBC驱动; 建立并获取数据库连接; 创建JDBCStatements对象; 设置SQL语句的传入参数; 执行SQL语句并获得查询结果; 对查询结果进行转换处理并将处理结果返回; 释放相关资源(关闭Connection,关闭Statement,关闭ResultSet); 推荐一个...

一、引言 1.1流式编程的概念和作用 Java流(Stream)是一连串的元素序列,可以进行各种操作以实现数据的转换和处理。流式编程的概念基于函数式编程的思想,旨在简化代码,提高可读性和可维护性。 JavaStream的主要作用有以下几个方面: 简化集合操作:使用传统的for循环或迭代器来处理集合数据可能会导致冗长而复杂的代码。而使用流式编程,能够用更直观、更简洁的方式对集合进行过滤、映射、排序、聚合等操作,使代码变得更加清晰易懂。 延迟计算:流式操作允许你在处理数据之前定义一系列的操作步骤,但只在需要结果时才会实际执行。这种延迟计算的特性意味着可以根据需要动态调整数据处理的操作流程,提升效...

通过这篇文章你将了解到整洁的代码对项目、公司和你的重要性,以及如何书写整洁的代码. 通过命名、类、函数、测试这四个章节,使我们的代码变得整洁. 1、为什么要保持代码整洁? 不整洁的代码随着时间的增加而增加时,生产力会随之降低.导致的结果就是: 代码不易扩展或扩展容易引发其他问题 程序崩溃 加班 增加公司成本(加人) 甚至可能造成公司倒闭 一图胜千言 1.1、所以从一开始就要保持整洁 所以在一开始就要写整洁的代码,如果有不整洁的代码就要及时的整改.绝对不要有以后再改,以后再说的想法,因为! laterequalnever 想想是不是这个道理,你有多少以后再说、以后再改的东西都抛诸脑后...

1、检测两台服务器指定目录下的文件一致性 !/bin/bash 检测两台服务器指定目录下的文件一致性 通过对比两台服务器上文件的md5值,达到检测一致性的目的 dir=/data/web b_ip=192.168.88.10 将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中 find$dir-typef|xargsmd5sum>/tmp/md5_a.txt ssh$b_ip"find$dir-typef|xargsmd5sum>/tmp/md5_b.txt" scp$b_ip:/tmp/md5_b.txt/tmp 将...

当你遇到跨域问题,不要立刻就选择复制去尝试。请详细看完这篇文章再处理。我相信它能帮到你。 分析前准备: 前端网站地址: http://localhost:8080 服务端网址: http://localhost:59200 首先保证服务端是没有处理跨域的,其次,先用postman测试服务端接口是正常的 当网站8080去访问服务端接口时,就产生了跨域问题,那么如何解决?接下来我把跨域遇到的各种情况都列举出来并通过nginx代理的方式解决(后台也是一样的,只要你理解的原理)。 跨域主要涉及4个响应头: Access-Control-Allow-Origin 用于设置...

1、背景 Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。 我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周期也能促进我们加深对spring的理解。业务代码也能合理利用这些扩展点写出更加漂亮的代...

公众号:java乐园 上一篇讲解了网关zuul的path-url这种转发方式;这一篇讲解一下path-serviceId这种转发方式。path-serviceId这种方式需要使用到注册中心eureka 1、新建项目sc-zuul-consumer,该项目主要提供一个Controller,两个接口,对应的pom.xml文件如下 <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://...

  0ay4xuMOEQMf   2023年11月02日   28   0   0 springUsermaven

函数式接口(FunctionalInterface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式。Java允许利用Lambda表达式创建这些接口的实例。java.util.function包是Java8增加的一个新技术点“函数式接口”,此包共有43个接口。别指望能够全部记住他们,但是如果能记住其中6个基础接口,必要时就可以推断出其余接口了。这些接口是为了使Lamdba函数表达式使用的更加简便,当然你也可以自己自定义接口来应用于Lambda函数表达式。 JDK1.8API包含了很多内建的函数式接口,比如Comparator或者Run...

  0ay4xuMOEQMf   2023年11月02日   34   0   0 redisjava编程语言lambda接口

一、BigDecimal概述 二、BigDecimal常用构造函数 三、BigDecimal常用方法详解 四、BigDecimal格式化 五、BigDecimal常见异常 六、BigDecimal总结 importjava.math.BigDecimal newBigDecimal("4.0")newBigDecimal("4.0")//true newBigDecimal("4.0")newBigDecimal("4.00")//false BigDecimal小数比较 一、BigDecimal概述 Java在java.math包中提供的API类BigDecimal,用来对超...

  0ay4xuMOEQMf   2023年11月02日   29   0   0 jdkjava反射objectandroid

1.BlueOcean是什么 BlueOcean是pipeline的可视化UI。同时兼容经典的自由模式的job。JenkinsPipeline从头开始设计,但仍与自由式作业兼容,BlueOcean减少了经典模式下的混乱并为团队中的每个成员增加了清晰度。BlueOcean的主要特点包括: 持续交付(CD)管道的复杂可视化,允许快速直观地了解管道的状态 管道编辑器通过引导用户通过直观和可视化的过程来创建管道,使管道的创建变得平易近人 个性化以适应团队每个成员基于角色的需求 在需要干预和/或出现问题时精确定位。BlueOcean显示了管道中需要注意的地方,促进异常处理并提高生产力 分支和拉取请求...

  0ay4xuMOEQMf   2023年11月02日   26   0   0 linux可视化javapythongit

在VirtualBox下安装CentOS7操作系统,因为VirtualBox免费开源,所以采用VirtualBox。在完成系统的安装后,发现系统无法连接外网进行上网,安装Docker环境。如果你也出现这种情况,可以按照以下步骤操作。 0x01、配置VirtualBox的虚拟网卡 1)打开网络和共享中心,找到VirtualBoxHost-OnlyNetwork 2)双击该适配器,点击属性,为网卡配置上IPv4的地址以及子网掩码,如下图所示。因为主机使用的是无线网络,所以主机的ip地址是192.168.10.6,子网掩码是255.255.255.0,默认网关、dhcp服务器、dns服务器都是...

  0ay4xuMOEQMf   2023年11月02日   30   0   0 网络VMwarelinux网关centos

项目中使用LocalDateTime系列作为DTO中时间的数据类型,但是SpringMVC收到参数后总报错,为了配置全局时间类型转换,尝试了如下处理方式。 注:本文基于Springboot2.x测试,如果无法生效可能是spring版本较低导致的。 如果你的Controller中的LocalDate类型的参数啥注解(RequestParam、PathVariable等)都没加,也是会出错的,因为默认情况下,解析这种参数是使用ModelAttributeMethodProcessor进行处理,而这个处理器要通过反射实例化一个对象出来,然后再对对象中的各个参数进行convert,但是LocalDa...

  0ay4xuMOEQMf   2023年11月02日   77   0   0 Javapostspringspring bootjson

本篇和大家分享的是SpringBoot打包并结合Shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_publish.sh启动程序 profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上等,我们要想对这些环境区分配置文件,可以通过两种方式: 通过application.yml中编码指定profile.active=uat方式指定 通过mvn中pr...

  0ay4xuMOEQMf   2023年11月02日   82   0   0 大数据mavenJavalinuxshell

软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try{...}catch{...}finally{...} 代码块,不仅有大量的冗余代码,而且还影响代码的可读性。 比较下面两张图,看看您现在编写的代码属于哪一种风格?然后哪种编码风格您更喜欢? 丑陋的trycatch代码块: 优雅的Controller: 上面的示例,还只是在Controller层,如果是在Service层,可能会有更多的trycatch代码块。这将会严重影响代码的可读性、“美观性”。 所以如果是我的话,我肯定偏向于第二种,我可以把...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~