- 博客(44)
- 收藏
- 关注
原创 JVM调优案例分析(4)
前面三篇介绍了处理Java虚拟机内存问题的知识与工具,在处理实际项目的问题 时,除了知识与工具外,经验也是一个很重要的因素。因此本章将与读者分享几个比较 有代表性的实际案例。考虑到虚拟机故障处理和调优主要面向各类服务端应用,而大部 分Java程序员较少有机会直接接触生产环境的服务器,因此本章还准备了一个所有开发人员都能够进行“亲身实战”的练习,希望通过实践使读者获得故障处理和调优的经验。...
2022-08-18 14:22:47 409 1
原创 JVM虚拟机性能监控与故障处理工具(3)
经过前面两章对于虚拟机内存分配与回收技术各方面的介绍,相信读者已经建立了 一个比较完整的理论基础。理论总是作为指导实践的工具,能把这些知识投入到实际工 作中才是我们的最终目的。接下来的两章,我们将从实践的角度去了解虚拟机内存管理 的世界。给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用 知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照 (threaddump / javacore文件)、堆转储快照(heapdump / hprof文件)等。...
2022-08-18 11:51:38 438
原创 java垃圾收集器与内存分配策略(2)
JDK 1.6中的各种垃圾收集器到此已全部介绍完毕,在描述过程中提到了很多虚拟机非稳定的运行参数,表3-1整理了这些参数以供读者实践时参考。
2022-08-18 00:11:21 373
原创 JVM内存区域与内存溢出异常(1)
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据 区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的 启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟 机规范(第2版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区 域,如图2-1所示。......
2022-08-18 00:10:26 382
原创 spring boot集成solr-SpringBoot(26)
Solr是一个独立的企业级搜索应用服务器,对外提供API接口。用户可以通过HTTP请求向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过HTTP GET操作提出查找请求, 并得到XML格式的返回结果。Solr现在支持多种返回结果。...
2022-08-17 16:34:58 1633
原创 spring boot集成Elasticsearch-SpringBoot(25)
可以根据Spring Data提供的方法名称,实现自己想自定义的查询功能:无须写实现类,只要继承ElasticsearchRepository接口即可。如"findByTitle"表示根据"title”进行查询,具体方法见表13~2图 13-2如果要查询价格在7 ~ 8元的商品,则可以在接口类加上"List findByPriceBetween(Double min, Double max);...
2022-08-16 23:44:05 1359
原创 spring boot集成RabbitMQ-SpringBoot(24)
RabbitMQ 是开源的高级消息队列协议(Advanced Message Queueing Protocol, AMQP) 的实现,用Erlang 语言编写,支持多种客户端。RabbitMQ是目前应用相当广泛的消息中间件(其他同类的消息处理中间件有ActiveMQ、Kafka等)。在企业级应用、微服务应用中,RabbitMQ担当着十分重要的角色。例如,在业务服务模块中解耦、异步通信、高并发限流、超时业务、数据延迟处理等都可以使用RabbitMQ。RabbitMQ的处理流程如图12-1所示。...
2022-08-14 16:38:11 3621
原创 用redis和jpa实现缓存文章和点击量-SpringBoot(23)
用redis和jpa实现缓存文章和点击量-SpringBoot(23)
2022-08-13 17:06:52 820 1
原创 Reason: Failed to determine a suitable driver class
最近遇到这个问题是因为改了包名,找了很久都没找到原因,csdn菜鸟太多了,基本都是复制别人的博客,从没想过自己解决问题,大佬又不屑解决这种问题,新建项目复制过去、把包名再改回去、清楚idea缓存、刷新maven,各种方法都试了,都没办法运行。最后审查代码,发现更改包名后mybatis的xml映射文件会把工作空间给修改为类名,把包名去掉了,idea这个操作属实是一个弊端,如下。最后加上前缀成功解决问题。......
2022-08-12 17:13:38 4004
原创 Spring Security静态资源过滤(11)
重写configure(WebSecurity)方法,并配置需要忽略的请求,这些需要忽略的地址,最终都会被添加到ignoredRequests集合中,并最终以过滤器链的形式呈现出来。在一个实际项目中,并非所有的请求都需要经过Spring Security过滤器,有一些特殊的请求,例如静态资源等,一般来说并不需要经过Spring Security过滤器链,用户如果访问这些静态资源,直接返回对应的资源即可。配置完成后,再次启动项目,此时不需要认证就可以访问/login.html页面。...
2022-08-11 22:09:36 1177
原创 Spring Security定义多个过滤器链(10)
同时我们配置了局部 AuthenticationManager 对应的用户是 chain1in/123 ,由于没有重写 configure(AuthenticationManagerBuilder)方法,所以注册到 Spring 容器中的 UserDetailsService 将作为局部 AuthenticationManager的parent对应的用户,换句话说,如果登录的路径是/bar/login,那么升发者可以使用 chain1in/123和 剑气近/123两个用户进行登录。...
2022-08-11 22:08:53 1875
原创 redis-SpringBoot(21)
Redis是大规模互联网应用常用的内存高速缓存数据库,它的读写速度非常快,据官方 Bench-mark的数据,它读的速度能到11万次/秒,写的速度是8.1万次/秒。
2022-08-11 22:08:08 840
原创 shiro认证- SpringBoot(20)
除Spring Security安全框架外,应用非常广泛的就是Apache的强大又灵活的开源安全框架 Shiro,在国内使用量远远超过Spring Security。它能够用于身份验证、授权、加密和会话管理, 有易于理解的API,可以快速、轻松地构建任何应用程序。而且大部分人觉得从Shiro入门要比 Spring Security 简单。...
2022-08-10 22:24:38 341
原创 ObjectPostProcessor使用与多种用户定义方式(9)
在前面的章节中,我们定义用户主要是两种方式:(1)第一种方式是使用的重写configure(AuthenticationManagerBuilder)方法的方式。(2)第二种方式是定义多个数据源时,我们直接向Spring容器中注入了 UserDetailsService 对象。那么这两种用户定义方式有什么区别?...
2022-08-09 23:41:26 2155
原创 Spring Security过滤器链分析-初始化流程(8)
提起Spring Security的实现原理,很多读者都会想到过滤器链。因为Spring Security中的所有功能都是通过过滤器来实现的,这些过滤器组成一个完整的过滤器链。那么,这些过滤器 链是如何初始化的?我们前面反复提到的AuthenticationManager又是如何初始化的?通过前面章节的学习,相信读者己经有了一些认识,本章我们将从头开始,分析Spring Security的初始化流程,同时再通过六个案例来让读者深入理解并且学会如何制作过滤器链。...
2022-08-09 20:51:50 1140
原创 Spring Security配置多个数据源并添加登录验证码(7)
多个数据源是指在同一个系统中,用户数据来自不同的表,在认证时,如果第一张表没有查找到用户,那就去第二张表中査询,依次类推。
2022-08-04 11:55:45 655
原创 Spring Security认证流程分析(6)
作为 Spring Security 过滤器链中的一环,AbstractAuthenticationProcessingFilter可以用来处理任何提交给它的身份认证,图3-3描述了 AbstractAuthenticationProcessingFilter的工作流程:图 3-3图中显示的流程是一个通用的架构。...
2022-08-04 11:54:54 1621
原创 Spring Security登录账户自定义与数据持久化(5)
在前面的案例中,我们的登录用户是基于配置文件来配置的(本质是基于内存),但是在实际开发中,这种方式肯定是不可取的,在实际项目中,用户信息肯定要存入数据库之中。Spring Security支持多种用户定义方式,接下来我们就逐个来看一下这些定义方式。...
2022-08-03 23:04:57 1067
原创 Spring Security登录用户数据获取(4)
登录成功之后,在后续的业务逻辑中,开发者可能还需要获取登录成功的用户对象,如果不使用任何安全管理框架,那么可以将用户信息保存在HttpSession中,以后需要的时候直接从HttpSession中获取数据。这里列出来的两种方式是主流的做法,开发者也可以使用一些非主流的方式获取登录成功后的用户信息,例如直接从HttpSession中获取用户登录数据,无论是哪种获取方式,都离不开一个重要的对象:Authentication。...
2022-08-03 23:04:24 3373
原创 Spring Security登录表单配置(3)
接下来,我们在resources/static目录下创建一个login.html页而,这个是我们自定义的登录页面:查看代码这个logmt.html中的核心内容就是一个登录表单,登录表单中有三个需要注意的地方,login.html定义好之后,接下来定义两个测试接口,作为受保护的资源。当用户登录成功 后,就可以访问到受保护的资源。...
2022-08-02 22:04:38 2260
原创 Spring Security基本认证(2)
对于安全管理框架而言,认证功能可以说是一切的起点,所以我们要研究SpringSecurity,就要从最基本的认证开始。在SpringSecurity中,对认证功能做了大量的封装,以至于开发者只需要稍微配置一下就能使用认证功能,然而要深刻理解其源码却并非易事。本文从最基本的用法开始讲解,最终再扩展到对源码的理解。...
2022-08-02 08:43:26 1503
原创 Spring Security的认证和授权(1)
Shiro本身是一个老牌的安全管理框架,有着众多的优点,例如轻量、简单、易于集成、可以在JavaSE环境中使用等。不过,在微服务时代,Shiro就显得力不从心了,在微服务面前,它无法充分展示自己的优势。也有开发者选择自己实现安全管理,这一部分人不在少数,但是一个系统的安全,不仅仅是登录和权限控制这么简单,我们还要考虑各种各样可能存在的网络攻击以及防御策略,从这个角度来说,开发者自己实现安全管理也并非是一件容易的事情,只有大公司才有足够的人力物力去支持这件事情。...
2022-08-02 08:42:26 2021 1
原创 ani转换ico文件
首先ani文件不是图片格式,是不能用ps等软件打开的,所以我们首先需要将ani格式转为png、jpg等,当时我也用过很多在线转换格式的网页,但是效果并不是很好,所以推荐使用这款软件,使用软件打开下载后的鼠标图标包的ani文件打开后就是这种样子啦,因为我下的图标包是动态的,所以是一帧一帧的,任选一帧直接另存就可以了哦,直接File->saveas->保存格式改为png就可以啦。......
2022-07-31 00:56:08 3334
原创 SpringBoot(15)ORM ( Object Relation Mapping )和JPA—Java持久层API
ORM(ObjectRelationMapping)是对象/关系映射。它提供了概念性的、易于理解的数据模型,将数据库中的表和内存中的对象建立映射关系。它是随着面向对象的软件开发方法的发展而产生的,面向对象的开发方法依然是当前主流的开发方法。对象和关系型数据是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中表现为关系型数据。内存中的对象不会被永久保存,只有关系型数据库(或NoSQL数据库,或文件)中的对象会被永久保存。......
2022-07-31 00:46:08 636
原创 SpringBoot(18)Spring Security
/指定为配置类//指定为SpringSecurity如果是WebFlux,则需要启用@EnableWebFluxSecurity//如果要启用方法安全设置,则开启此项。@Override//不拦截静态资源}@Bean//使用BCrypt加密}@Override//除上面外的所有请求全部需要鉴权认证//处理异常,拒绝访问就重定向到403页面}}代码解释如下。定义哪些URL需要被保护,哪些不需要被保护。......
2022-07-31 00:44:26 797
原创 SpringBoot(17)接口架构风格—RESTful与Swagger
自定义头(例如,Accept-version)允许在版本之间保留URL。为了保障前后端的数据交互的顺畅,建议规范数据的返回,并采用固定的数据格式封装。如,{"code""10001","msg""异常信息","data"null}{"code"200,"msg""成功","data"{"id"1,"name""age"2}}...
2022-07-31 00:43:21 616
原创 SpringBoot(16)Mybatis与实现分页
増加、删除、修改和查询是主要的业务操作,必须掌握这些基础注解的使用方法。MyBatis提供的操作数据的基础注解有以下4个。@Select用于构建查询语句。@Insert用于构建添加语句。@Update用于构建修改语句。@Delete用于构建删除语句。@Mapper}从上述代码可以看岀首先要用@Mapper注解来标注类,把UserMapper这个DAO交给Spring管理。这样Spring会自动生成一个实现类,不用再写UserMapper的映射文件了。...
2022-07-31 00:42:40 469
原创 SpringBoot(14)JDBCTemplate
学习使用JDBCTempIate之前,我们先来了解一下JDBC(JavaDataBaseConnectivity)。它是Java用于连接数据库的规范,也就是用于执行数据库SQL语句的JavaAPI。从JDBC的名称上看,它似乎没有指定某种数据库。可以猜想它可以为多种数据库提供统一访问的接口,这更符合程序设计的模式。实际上,它由一组用Java语言编写的类和接口组成,为大部分关系型数据库提供访问接口。JDBC需要每次进行数据库连接,然后处理SQL语句、传值、关闭数据库。...
2022-07-31 00:41:21 1301
原创 SpringBoot(13)单元测试
单元测试(unittest)是为了检验程序的正确性。一个单元可能是单个程序、类、对象、方法等,它是应用程序的最小可测试部件。
2022-07-31 00:40:46 1195
原创 SpringBoot(12)使用控制器通知
error}}")@Override}map.put("msg","不存在");}map.put("msg","正常");}}启动项目,访问一个不存在的网址,则返回下方信息{"msg""不存在",”code"404}访问正确定义的映射"http8080/error/ok",则返回下方正确信息{"msg""正常","code"200}自定义异常类需要继承Exception(异常)类。这里继承RuntimeException,}}...
2022-07-31 00:40:14 156
原创 SpringBoot(11)异常处理
在应用程序的开发过程中,经常会自定义异常类,以避免使用try产生重复代码。自定义异常类—般是通过扩展Exception类来实现的。这样的自定义异常属于检查异常(checkedexception)。如果要自定义非检查异常,则需要继承RuntimeException。...
2022-07-31 00:39:35 111
原创 SpringBoot(10)元注解与自定义注解
Document@Component}使用@Target标注作用范围。使用@Retention注解标注生命周期。使用@Documented将注解信息添加在Java文档中。@MyTestAnnotation("测试用")}测试用。
2022-07-30 23:34:25 365
原创 SpringBoot(9)自定义Starter
在使用Spring官方的Starter时,可以在application.properties文件中配置参数,以覆盖默认值。}}}}}System.out.println("参数}}@Bean}}最后,在resources文件夹下新建目录META-INF,在目录中新建spring.factories文件,并且在spring.factories中配置AutoConfiguration,加入以下代码注解详解使用。...
2022-07-30 23:33:43 202
原创 SpringBoot(8)过滤器与监听器
入口类默认提供了注解@SpringBootApplication,它用于标注SpringBoot项目的入口。这个注解被@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解所修饰,即SpringBoot提供了统一的注解来替代这三个注解。}}上面的“run”方法实例化了一个“SpringApplication”对象。/***/}}}}创建一个新的SpringApplication实例。...
2022-07-30 23:32:53 238
原创 SpringBoot(7)认识Ioc容器和Servlet容器
loC(InversionofControl)容器,是面向对象编程中的一种设计原则,意为控制反转(也被称为'控制反向”或"控制倒置”)。它将程序中创建对象的控制权交给Spring框架来管理,以便降低计算机代码之间的耦合度。控制反转的实质是获得依赖对象的过程被反转了。这个过程由自身管理变为由loC容器主动注入。这正是loC实现的方式之一依赖注入(dependencyinjection,DI),由loC容器在运行期间动态地将某种依赖关系注入对象之中。...
2022-07-30 23:32:16 523
原创 SpringBoot(6)面向切面编程
AOP(AspectOrientedProgram,面向切面编程)把业务功能分为核心、非核心两部分。在Spring的面向切面编程(AOP)思想里,非核心业务功能被定义为切面。核心业务功能和切面功能先被分别进行独立开发,然后把切面功能和核心业务功能“编织"在一起,这就是AOPAOP将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,以便减少系统的重复代码,降低模块间的耦合度,利于未来的拓展和维护。这正是AOP的目的,它是Spring最为重要的功能之一,被广泛使用。...
2022-07-30 23:31:25 2126 1
原创 SpringBoot(5)响应式编程WebFlux
WebFlux是从SpringFramework5.0开始引入响应式Web框架的。与SpringMVC不同,WebFlux不需要ServletAPI,在完全异步且无阻塞,并通过Reactor项目实现ReactiveStreams规范。WebFlux可以在资源有限的情况下提高系统的吞吐量和伸缩性(不是提高性能)。这意味着,在资源相同的情况下,WebFlux可以处理更多的请求(不是业务)。WebFlux除支持RESTfulWeb服务外,还可以用于提供动态HTML内容。MVC的工作流程是。...
2022-07-30 23:30:46 3720
原创 SpringBoot(4)视图技术Thymeleaf
SpringBoot主要支持Thymeleaf、Freenrtarker、Mustache、GroovyTemplates等模板引擎。Thymeleaf语法并不会破坏文档的结构,所以Thymeleaf模板依然是有效的HTML文档。模板还可以被用作工作原型,Thymeleaf会在运行期内替换掉静态值。它的模板文件能直接在浏览器中打开并正确显示页面,而不需要启动整个Web应用程序。...
2022-07-30 23:29:13 1026
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人