![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 64
yanghaoplus
这个作者很懒,什么都没留下…
展开
-
Oauth2整合gitee
原理首先,我们的目的是通过第三方账号的授权来实现用户的登录操作,也即用户不用直接创建我们网站或应用的账户,而是直接通过原有的第三方账户来登录,比如微信,qq等。其原理图如下:原理简单讲就是先跳转到第三方应用(如qq)的登录界面,然后用户输入账号密码登录成功,并且统一授权,第三方应用的服务器就会返回一个code给我方服务器,我方服务器再带着这个code去第三方应用的服务器去换取一个access_token,获取这个access_token之后我们就能够使用被授权的各种功能,比如查看用户信息这些,具体能原创 2021-11-06 18:26:30 · 1390 阅读 · 1 评论 -
springboot整合邮箱功能实现验证码登录
本来是想整合阿里的短信服务到项目里面的,但是要付费,穷学生,舍不得花钱,就先使用邮件替代。这里只先记录一下邮件发送简单的验证码文本,和发送带附件的文本,发送复杂文本,比如html页面那样添加样式什么的,后面有需要再加上来。https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.mail上面是springboot官网的文档说明。下面原创 2021-11-05 21:11:21 · 1529 阅读 · 0 评论 -
shiro 安全框架学习过程笔记
本文介绍shiro学习的详细过程,包括看那些博客、文章,做哪些练习,希望传达一种学习思想。原创 2021-07-16 16:29:49 · 124 阅读 · 0 评论 -
Caused by: java.sql.SQLException: Access denied for user ‘æ�¨æ˜Š‘@‘localhost‘数据源读取配置问题
Caused by: java.sql.SQLException: Access denied for user 'æ�¨æ˜Š'@'localhost' (using password: YES)数据源读取问题,db.properites和xml配置原创 2021-07-03 11:38:11 · 1458 阅读 · 0 评论 -
Java中int取值范围问题
Java 代码中 int32 变量 取值范围是[-2147483648, 2147483647]若有int型变量n,则n∈[−2147483648,2147483647] ,因此当 n = -2147483648时执行 n = -n 会因越界而赋值出错。解决办法是用一个long类型的变量接受n,long m=n;...原创 2020-09-09 19:12:15 · 482 阅读 · 0 评论 -
Java枚举(以实现单例模式来学习)
在学习设计模式时,单例模式有一种方式是通过枚举实现的,这里就以是实现单例模式为例来学习枚举。Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 该枚举类的 实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。所有枚举实例都可以调用该枚举类的方法enum Singleton { SINGLETON;//这个枚举成员相当于一个Singleton实例/原创 2020-08-19 10:05:16 · 88 阅读 · 0 评论 -
一图了解IaaS、PaaS、SaaS
IaaS(Infrastructure as a Service),即基础设施即服务。指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。在这种服务模型中,普通用户不用自己构建一个数据中心等硬件设施,而是通过租用的方式,利用 Internet从IaaS服务提供商获得计算机基础设施服务,包括服务器、存储和网络等服务。PaaS是(Platform as a Service)的缩写,是指平台即服务。 把服务器平台作为一种服务提供的商业模式,通过网络进行程序原创 2020-08-03 16:56:21 · 332 阅读 · 0 评论 -
实体类定义规则
PO(persistent object) 持久层对象VO(view object) 表现层对象DTO(Data Transfer Object) 传输层对象POJO(Plan ordinary Java object) 无规则简单对象https://www.bilibili.com/video/BV1b4411q7DX?p=2截图自狂神说。原创 2020-08-03 16:47:54 · 171 阅读 · 0 评论 -
JVM框架图
初步了解了JVM内部组成,知道了何为JVM调优,OOM怎么回事,这里先留个整体的知识结构图做个记录,等过段时间再深入了解JVM。原创 2020-08-01 00:35:18 · 51 阅读 · 0 评论 -
java双亲委派机制及作用
Java源代码被编译器编译成.class的字节码文件需要由ClassLoader加载到JVM中去执行。类加载器有四种:其中Java语言系统自带有三个类加载器:Bootstrap ClassLoader(启动类加载器)最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。另外需要注意的是可以通过启动jvm时指定-Xbootclasspath和路径来改变Bootstrap ClassLoader的加载目录。原创 2020-07-31 11:10:31 · 116 阅读 · 0 评论 -
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。
集合的出现就是为了批量管理对象,如果用集合来存放基本数据类型,那为什么不直接用数组呢,数组可以用来存放各种基本数据类型,所以不需要再用集合了。可以再百度下集合和数组的区别。...原创 2020-07-31 00:32:33 · 3082 阅读 · 3 评论 -
线程池笔记
线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作, 无需反复创建线程而消耗过多资源。工作原理:合理利用线程池能够带来三个好处:降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也原创 2020-07-30 22:02:08 · 89 阅读 · 0 评论 -
线程安全详解笔记
相关概念线程安不安全: 多线程程序中,多个线程共同访问共享资源 ( 共有的资源 ) 时,由于线程的调度机制是抢占式调度,可能会发生多个线程在执行时,同时操作共享资源,导致程序执行结果与预期不一致的现象。线程安全:如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。案例我们通过一个案例,演示线程的安全问题:电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “葫芦娃大战奥特曼”,本次电影原创 2020-07-30 21:21:32 · 158 阅读 · 0 评论 -
Java多线程的常见创建方式与区别、以及同步问题
相关概念:并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。所谓的并发实质是宏观上同时进行,微观上交替运行,单核处理器同一时刻只能处理一个任务,所以单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并发运行。同理,线程也是一样的,从宏观角度上理解线程是并行运行的,但是从微观角度上分析却是串行运行的,即一个线程一个线程的去运行,当系统只有一个CPU时,线程会以某种顺序执行多个线程,我们把这种情况称之为线程调度。多核处理器的系原创 2020-07-30 12:04:06 · 169 阅读 · 0 评论 -
int i=10;i=i++;i的值为多少?其底层过程是这样的。
int i =10;i=i++;//10System.out.println(i);i=i++;的底层等于以下步骤:int temp=i;i=i+1;i=temp;所以,以上计算的输出结果为10.原创 2020-07-30 09:40:57 · 3785 阅读 · 0 评论 -
反射笔记
反射定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射能够在程序执行时取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。反射在日常开发中用的比较少,能说的上来的比如用JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序,虽然用的比较少,但是反射搞懂反射能够帮助看懂一些框架的源码,比如Sprin原创 2020-07-29 21:33:57 · 67 阅读 · 0 评论 -
Arrays.asList()方法传入的参数不能是基本类型的数组,必须包装成包装类型再使用,否则对应生成的列表的大小永远是1:
传入一个基本类型数组,如int数组时,整个数组会被当做一个对象,所以其生成的列表大小为1.public class rongqi { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; List list = Arrays.asList(arr); System.out.println(list.getClass()); Iterator i原创 2020-07-29 11:47:29 · 410 阅读 · 0 评论 -
==和equals的区别,hashCode() 和 equals() 的关系
==和equals的区别==:对于基本数据类型来说,==就是来判断值是不是相等,对于引用类型来说,就是判断用来判断两个对象的地址是不是相等,也就是用来判断是不是同一个对象。equals:equals只能用于比较引用数据类型,可以将equals分“两种”。一种是没有override的来自Object类的equals,因为Object类是根类,每个类都会有这个方法,如果没有override,那么equals就是比较的对象是否相等,可以视作与==相同。第二种是重写了的equals,通常会覆盖原原创 2020-07-28 16:49:37 · 151 阅读 · 0 评论 -
java泛型的类型擦除
类型擦除:Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。如在代码中定义List和List等类型,在编译后都会变成List,JVM看到的只是List,而由泛型附加的类型信息对JVM是看不到的。原文: https://www.cnblogs.com/wuqinglo原创 2020-07-28 11:51:06 · 80 阅读 · 0 评论 -
Java 是编译与解释共存的语言
学习java已有一段时间,但是还说摸不清java到底是编译型语言还说解释型语言,然后网上查阅整理之后得到自己对java的认识——Java 是一门编译与解释共存的语言。首先了解编译与解释的定义:编译型语言:将做好的源程序一次性编译成二进制代码的可运行程序,然后就可以直接运行这个程序。解释型语言:将源程序翻译成机器能理解的语言,翻译一句执行一句,直到结束。java 比较特殊,以上两种方式都有所涉及,所以比较难区分。java从源代码到运行的流程如下。java源程序首先要经过一次编译形成字节码文件.c原创 2020-07-28 10:48:06 · 665 阅读 · 0 评论 -
request.getRequestURL()和request.getRequestURI()
URL:uniform resource location 统一资源定位符URI:uniform resource identifier 统一资源标识符URI是一种资源的标识;而URL也是一种URI,也是一种资源的标识,但它也指明了如何定位Locate到这个资源。URI是一种抽象的资源标识,既可以是绝对的,也可以是相对的。URL可以理解为一种绝对的URI.URI的区分绝对和相对,绝对URI包含具体域名地址,相对URL只有域名知乎的一部分。例如这位博主的举例:https://blog.csdn.n原创 2020-07-27 10:41:32 · 162 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
据说出现这个问题是因为jdk版本过高,jdk1.9之后缺少了什么的问题。。。然后解决办法是降低jdk版本到1.8或者装上这个包。我选择第二种,于是我找到该jar包并下载,然后把他添加到我的项目依赖中发现成功了。添加到依赖的方法是在把该jar包放在resource下,然后右键Library一栏把它加到library就行了。吐槽一下,jdk9真的很多问题,有点后悔选这个版本来学习了。。。...原创 2020-07-25 20:33:00 · 170 阅读 · 0 评论 -
rabbitmq端口
端口:5672: rabbitMq的编程语言客户端连接端口15672:rabbitMq管理界面端口25672:rabbitMq集群的端口原创 2020-07-24 23:19:44 · 976 阅读 · 0 评论 -
springboot通过配置类读取application.yml种的自定义属性@ConfigurationProperties与@EnableConfigurationProperties
1.首先在当前module的application.yml种写上自定义的属性2.编写一个配置类,类中的成员名称要和自定义属性一样,并且给该类加上@ConfigurationProperties(prefix = “leyou.sms”)的注解,prefix的值是application.yml中的前缀,这样就回把该配置类注入容器,使用时通过注入方式即可。3.使用属性时在需要用到的地方注入一个属性类的对象,然后直接调用即可文章中使用的例子为某马的项目,这里做个笔记。...原创 2020-07-24 22:04:33 · 645 阅读 · 0 评论 -
maven项目的groupId和artifactId什么意思?
首先要知道groupId和artifactId的存在是为了定位到你的项目,所以它们充当着坐标的角色。groupId:group意思为组,所以理解为是组织Id,也是公司Id,通常它的写法与公司域名类似。一般分三段,即“域.公司名称.子项目”,域指org、com、cn等,类似计算机网络里学过的,cn指china,com商业,org非盈利组织。artifactId:即一个具体的项目,命名方式自己决定。举个某马大型商城项目结构为例,该项目采用了微服务架构,所以使用了聚合方式,即一个大项目下几个小项目(这样是原创 2020-07-24 11:12:17 · 18473 阅读 · 0 评论 -
D:\Develop\nginx-1.14.0>nginx -s reload nginx: [emerg] unknown directive “if(!-f“ in D:\Develop\ngin
D:\Develop\nginx-1.14.0>nginx -s reloadnginx: [emerg] unknown directive "if(!-f" in D:\Develop\nginx-1.14.0/conf/nginx.conf:44配置nginx反向代理路径,想要先判断是否有静态页面,有就直接返回,没有再访问远程服务。出现这样的错误时因为if和(之间必须要有空格,所以加个空格就好...原创 2020-07-22 18:11:52 · 146 阅读 · 0 评论 -
status 405 reading GoodsClient#querySpuById(Long); content: {“timestamp“:“2020-07-22T01:45:09.636+00
status 405 reading GoodsClient#querySpuById(Long); content: {“timestamp”:“2020-07-22T01:45:09.636+0000”,“status”:405,“error”:“Method Not Allowed”,“message”:“Request method ‘POST’ not supported”,“path”:"/spu/id"}Feign远程调用到时候明明只会用到Get请求,却莫名其妙的给我报个Post错误,仔细找原创 2020-07-22 10:27:52 · 575 阅读 · 0 评论 -
Thymeleaf语法入门
first,what is Thymeleaf?什么是Thymeleaf?Thymeleaf是用来开发Web和独立环境项目的现代服务器端Java模板引擎。具有以下特点:动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以原创 2020-07-21 21:01:50 · 268 阅读 · 0 评论 -
通用mapper的常用查询,select和selectByPrimaryKey
通用mapper 的查询总结1.如果是等值查询根据其主键查询,则可以用selectByPrimaryKey()如果不是主键,而是根据其他值查询,那么用select(T t)T为通用mapper对应的类类型,这里传入一个该类的实例,根据改实例去匹配对应字段相同的返回。eg:blic List<Category> queryByBrandId(Long bid);}userMapper.select(user);//查找name姓名为name1,年龄为12 的user2.如果是原创 2020-07-10 14:45:13 · 8863 阅读 · 0 评论