java
文章平均质量分 62
m78探索者
所有下载0积分
展开
-
RedisUtils工具类
package com.tjh.utils;/** * @author tjh * #Description RedisUtils */import org.springframework.data.redis.connection.DataType;import org.springframework.data.redis.core.Cursor;import org.springframework.data.redis.core.ScanOptions;import org.spri原创 2021-04-12 22:20:54 · 496 阅读 · 0 评论 -
解决Spring Boot 使用RedisTemplate 存储键值出现乱码\x00情况
发现存储键值包含\xac\xed\x00\x05t\x00\特殊字符。原因:RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。解决:方案1 使用 StringRedisTemplate @Au.原创 2021-04-12 21:22:25 · 544 阅读 · 0 评论 -
Java八股文八:MQ消息队列
文章目录八、MQ 消息队列1、场景作用2、如何保证消息不被重复消费呢?3、怎么保证从消息队列里拿到的数据按顺序执行?4、如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?4、如何保证消息的可靠性传输(如何处理消息丢失的问题)?八、MQ 消息队列1、场景作用削峰填谷,异步解耦。2、如何保证消息不被重复消费呢?这个问题可以换个思路,保证消息重复消费,其实是保证程序的幂等性。无论消息如何重复,程序运行的结果是一致的。比如消费消息后做数据库插入操原创 2021-03-13 18:10:06 · 1448 阅读 · 0 评论 -
Java八股文五:MySQL(Inno DB)
文章目录五、MySQL (Inno DB)1、聚簇索引与非聚簇索引2、为何使用 B 树做索引而不是红黑树?3、最左前缀原则4、什么情况下可以用到 B 树索引5、事务隔离级别6、MVCC (多版本并发控制)五、MySQL (Inno DB)1、聚簇索引与非聚簇索引都使用 B+ 树作为数据结构聚簇索引中数据存在主键索引的叶子结点中,得到 key 即得到 data ;非聚簇索引的数据存在单独的空间。聚簇索引中辅助索引的叶子结点存的是主键;非聚簇索引中叶子结点存的是数据的地址;聚簇索引的优势是找到主原创 2021-03-13 18:08:26 · 1514 阅读 · 0 评论 -
Java八股文四:Java虚拟机
文章目录四、Java 虚拟机1、Java 内存结构2、Java 类加载机制3、垃圾回收算法4、典型垃圾回收器四、Java 虚拟机1、Java 内存结构堆 由线程共享,存放 new 出来的对象,是垃圾回收器的主要工作区域。栈 线程私有,分为 Java 虚拟机栈和本地方法栈,存放局部变量表、操作栈、动态链接、方法出口等信息,方法的执行对应着入栈到出栈的过程。方法区 线程共享,存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等信息,JDK 1.8 中方法区被元空间取代,使用直接内存。原创 2021-03-13 18:07:54 · 1080 阅读 · 0 评论 -
Java八股文三:Java多线程
文章目录三、Java 多线程1、synchronized2、Lock3、volatile4、线程的五种状态1). New2). Runnable3). Blocked4). Waiting(无限期等待)5). Timed Waiting(有期限等待)6). Terminated5、 wait() 与 sleep()6、 yield()7、 join()8、线程池1)、分类2)、线程池的几个重要参数3)、线程池线程工作过程4)、线程池拒绝策略(默认抛出异常)5)、如何根据 CPU 核心数设计线程池线程数量9、原创 2021-03-13 18:06:56 · 2036 阅读 · 0 评论 -
Java八股文二:java集合框架
文章目录二、Java 集合框架1、List(线性结构)2、Map(K,V 对)3、Set(唯一值)二、Java 集合框架1、List(线性结构)ArrayList Object[] 数组实现,默认大小为 10 ,支持随机访问,连续内存空间,插入末尾时间复杂度 o(1),插入第 i 个位置时间复杂度 o(n - i)。扩容,大小变为 1.5 倍,Arrays.copyOf(底层 System.ArrayCopy),复制到新数组,指针指向新数组。Vector 类似 ArrayList,线程安全,扩容默原创 2021-03-13 18:06:13 · 1885 阅读 · 0 评论 -
Java八股文一:java基础知识
文章目录一、Java 基础知识1、Object 类相关方法2、基本数据类型3、序列化4、String、StringBuffer、StringBuilder5、重载与重写6、final7、反射8、JDK 动态代理9、Java IO9、Java IO一、Java 基础知识1、Object 类相关方法getClass 获取当前运行时对象的 Class 对象。hashCode 返回对象的 hash 码。clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型原创 2021-03-13 18:05:38 · 7255 阅读 · 0 评论 -
3步更改Oracle默认端口8080
12然后call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),’/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()’,8081));3原创 2021-03-06 15:43:28 · 170 阅读 · 0 评论 -
Idea Error:java: 无效的目标发行版: 12
报错jdk版本错误电脑系统jdk用的1.8版本报错如图示:12345一般就这5个地方原创 2021-03-06 15:11:15 · 133 阅读 · 0 评论 -
SpringBoot18:集成SpringSecurity
SpringSecurity安全简介1、在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整原创 2021-02-28 15:40:18 · 126 阅读 · 0 评论 -
SpringBoot17:Dubbo和Zookeeper集成
分布式理论什么是分布式系统?在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”;分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。分布式系统(distributed system)是建立在网络之上的软件系统。首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算原创 2021-02-27 11:09:57 · 121 阅读 · 0 评论 -
SpringBoot16:富文本编辑器
简介思考:我们平时在博客园,或者CSDN等平台进行写作的时候,有同学思考过他们的编辑器是怎么实现的吗?在博客园后台的选项设置中,可以看到一个文本编辑器的选项:其实这个就是富文本编辑器,市面上有许多非常成熟的富文本编辑器,比如:Editor.md——功能非常丰富的编辑器,左端编辑,右端预览,非常方便,完全免费官网:https://pandao.github.io/editor.md/wangEditor——基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、原创 2021-02-27 11:09:18 · 365 阅读 · 0 评论 -
SpringBoot15:异步、定时、邮件任务
异步任务创建一个service包创建一个类AsyncService异步处理还是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。编写方法,假装正在处理数据,使用线程设置一些延时,模拟同步等待的情况;@Servicepublic class AsyncService { public void hello(){ try { Thread.s原创 2021-02-27 11:08:54 · 145 阅读 · 0 评论 -
SpringBoot14:Swagger
Swagger了解Swagger的概念及作用了解前后端分离在springboot中集成swaggerSwagger简介前后端分离Vue+SpringBoot后端时代:前端只用管理静态页面;html==>后端。模板引擎JSP=>后端才是主力前后端分离时代前端 -> 前端控制层、视图层伪造后端数据,json。已经存在了,不需要后端,前端工程队依旧能够跑起来后端 -> 后端控制层、服务层、数据访问层前后端通过API进行交互前后端相对独立且松耦合产生原创 2021-02-27 11:08:32 · 146 阅读 · 0 评论 -
SpringBoot13:页面国际化
页面国际化有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化了!准备工作先在IDEA中统一设置properties的编码问题!编写国际化配置文件,抽取页面需要显示的国际化页面消息。我们可以去登录页面查看一下,哪些内容我们需要编写国际化的配置!配置文件编写我们在resources资源文件下新建一个i18n(internationalization缩写)目录,存放国际化配置文件建立一个login.properties文件,还有一个login_zh_CN.pro原创 2021-02-27 11:08:09 · 102 阅读 · 0 评论 -
SpringBoot12:MVC自动配置原理
MVC自动配置原理官网阅读在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制。只有把这些都搞清楚了,我们在之后使用才会更加得心应手。途径一:源码分析,途径二:官方文档!地址 :https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configurationSpri原创 2021-02-27 11:07:55 · 102 阅读 · 0 评论 -
SpringBoot11:Thymeleaf模板引擎
Thymeleaf模板引擎前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况,SpringBoot这个项目首先是以jar的方式,不是war,像第二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的。那不支持jsp,如果我们直接用纯静态页面的方式,那给我们开发会带原创 2021-02-27 11:07:32 · 163 阅读 · 0 评论 -
SpringBoot10:Web开发静态资源处理
Web开发探究简介其实SpringBoot的东西用起来非常简单,因为SpringBoot最大的特点就是自动装配。使用SpringBoot的步骤:1、创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好2、手动在配置文件中配置部分配置项目就可以运行起来了3、专注编写业务代码,不需要考虑以前那样一大堆的配置了。要熟悉掌握开发,之前学习的自动配置的原理一定要搞明白!比如SpringBoot到底帮我们配置了什么?我们能不能修改?我们能修改哪些原创 2021-02-27 11:07:11 · 123 阅读 · 0 评论 -
SpringBoot09:整合MyBatis
整合MyBatis官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3整合测试导入 MyBatis 所需要的依赖<dependency> <groupId>原创 2021-02-27 11:06:43 · 84 阅读 · 0 评论 -
SpringBoot08:整合Druid
集成DruidDruid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Spring Boot 2.0 以上默认使用 H原创 2021-02-27 11:06:14 · 81 阅读 · 0 评论 -
SpringBoot07:整合JDBC
SpringData简介对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。Sping Data 官网:https://spring.io/projects/spring原创 2021-02-26 19:59:50 · 102 阅读 · 0 评论 -
SpringBoot06:自定义starter
自定义Starter我们分析完毕了源码以及自动装配的过程,我们可以尝试自定义一个启动器来玩玩!说明启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库;命名归约:官方命名:前缀:spring-boot-starter-xxx比如:spring-boot-starter-web…自定义命名:xxx-spring-boot-starter比如:mybatis-spring-boot-starter编写启动器在IDEA中新建一个空项目原创 2021-02-26 19:58:48 · 121 阅读 · 0 评论 -
SpringBoot05:自动配置原理
自动配置原理配置文件到底能写什么?怎么写?----联系---- spring.factoriesSpringBoot官方文档中有大量的配置,我们无法全部记住,官网:https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/appendix-application-properties.html#core-properties分析自动配置原理SpringBoot启动的时候加载主配置类,开启了自动配置功能 @Enabl原创 2021-02-26 19:58:07 · 107 阅读 · 0 评论 -
SpringBoot04:JSR303数据校验及多环境切换
JSR303数据校验先看看如何使用Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式;1、添加validation启动器<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation&l原创 2021-02-26 19:56:51 · 114 阅读 · 0 评论 -
SpringBoot01:Hello,World!
1、SpringBoot简介回顾什么是SpringSpring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。Spring是如何简化Java开发的为了降低Java开发的复杂性,Spring采用了以下4种关键策略:1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;2、通过IOC,依赖注入(DI)和面向接口实现松耦合;3、基于切面(AOP)和惯例进行声明式原创 2021-02-26 19:44:11 · 111 阅读 · 0 评论 -
Java工具类UUIDUtils
什么是UUIDUUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的重要部分。该工具类就是生成一串不重复的字符串多少位就自己数吧:8bcce843d62544328e434fef3cf57db4public class UUIDUtil原创 2021-02-26 17:27:55 · 205 阅读 · 0 评论 -
Java内存管理
原创 2021-02-22 20:57:41 · 63 阅读 · 0 评论 -
java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: YES) 出现原因和解决办法
今天我在学习SSM的时候,在测试时发现在这里发现账号密码没有问题程序中加载完毕数据库配置文件后,获取数据库配置文件中的变量不一致。改正后就是粗心的原因,导致读取不到账号密码,或者你其他的地方账号密码命名错误...原创 2021-02-21 19:22:53 · 737 阅读 · 0 评论 -
idea每次新建项目Maven都要重新配置
每次新建Maven项目时都是这样File-Settings-Maven里显示的都是默认的解决方案File-》New Projects Settings- 》Settings for New Projects…按照自己的更改,这样就是把默认设置改成你的设置内容之后点击apply-OK即可,...原创 2021-02-20 17:41:10 · 100 阅读 · 0 评论 -
Java转JSON
Fastjson用的ali的Fastjson依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency>具体使用@RequestMapp原创 2021-02-20 16:34:29 · 106 阅读 · 0 评论 -
【总结】Java核心技术36讲知识点大纲(转载)
Java核心技术36讲知识点总结大纲 1 Java平台的理解 Java的特性,解释运行和编译运行 2 Exception 和 Error 有什么区别 理解Java的异常体系的设计,Throwable ,Exception,Error 的关系理解ClassNotFoundException 与NoClassDef...转载 2021-02-20 14:03:24 · 369 阅读 · 0 评论 -
Java核心技术36讲目录
原创 2021-02-20 13:53:09 · 220 阅读 · 0 评论 -
Map.Entry的使用
Map.Entry的定义Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。通过这个集合的迭代器,获得每一个条目(唯一获取方式)的键或值并对值进行更改。Map.Entry中的常用方法如下所示:(1) Object getKey(): 返回条目的关键字(2) Object getValue(): 返回条目的值(3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值常用原创 2021-02-20 12:57:50 · 683 阅读 · 0 评论 -
java集合继承关系图
原创 2021-02-19 20:04:38 · 150 阅读 · 0 评论 -
面向对象的概念
面对对象和面向过程的区别面向过程:将问题分解成步骤,然后按照步骤实现函数,执行时依次调用函数。数据和对数据的操作时分离的。面向对象:将问题分解成对象,描述事物在解决问题的步骤中的行为。对象与属性和行为是关联的。优缺点面向过程的有点是性能比面向对象高,不需要面对对象的实例化;缺点是不容易维护、复用和扩展。面向对象的优点是具有封装、继承、多态的特性,因而容易维护、复用和扩张,可以设计出低耦合的系统;缺点是由于需要实例化对象,因此性能比面向过程低。对象和类对象是现实世界中可以明确标识的实体,对象有自原创 2021-02-19 14:10:29 · 89 阅读 · 0 评论 -
java GC过程图
原创 2021-02-18 20:58:11 · 238 阅读 · 0 评论 -
Integer对象的方法
Integer对象的方法parseInt()Integer.parseInt("");是将字符串类型转换为int的基础数据类型valueOf()Integer.valueOf("")是将字符串类型数据转换为Integer对象intValue()Integer.intValue();是将Integer对象中的数据取出,返回一个基础数据类型int...原创 2021-02-18 20:32:25 · 304 阅读 · 0 评论 -
Java运行时内存
程序计数器,线程私有。可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变整个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能。由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。因此为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,所以线程私有。程序计数器是唯一一个在.原创 2021-02-18 20:22:54 · 83 阅读 · 0 评论 -
Set、Map、List三种集合的差别
1.集合类型主要有3种:set(集)、list(列表)和map(映射,这里就不描述了)。2.关系图3.set——set接口是Collection接口的一个子接口,是无序的,set中不包含重复的元素。也就是说set中不存在两个这样的元素a1.equals(a2)结果为true。又因为Set接口提供的数据结构是数学意义上的集合概念的抽象,因此他支持对象的添加和删除。Set的接口继承Collection接口,而且不允许集合中存在重复项。TreeSet:在集中以升序对对象排序的集的实现,这意味着从一个原创 2021-02-16 19:46:56 · 371 阅读 · 0 评论