![](https://img-blog.csdnimg.cn/84c450b46c204c248983cb5d240ebeb4.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
文章平均质量分 88
java基础知识的一些随笔记录
杀死一只知更鸟debug
幻想成为全栈工程师,接着努力!手敲博客 https://www.robindeblog.cn/
展开
-
如何访问GitHub快的飞起?两步解决访问超时GitHub,无法访问GitHub的问题
输入 github.com 点击查看分析往下滑动,找一个比较快的IP,然后去修改hosts配置文件 (例如:20.205.243.166)hosts配置文件地址:打开hosts文件,在其末尾插入 保存退出hosts文件,再次访问,快的飞起 👻原创 2024-01-05 19:09:41 · 781 阅读 · 3 评论 -
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
今天在安装idea中的插件时,又双叒叕出现了这个问题,下载一个几MB的插件巨慢,所以写一下它的解决方案。先查找访问比较快的ip,然后修改host文件即可原创 2024-01-05 18:57:27 · 5375 阅读 · 0 评论 -
Stream流的简单使用
其实Stream流非常简单,只需要将其理解为一条流水线即可,然后在不同的时期去做不同的操作。● 获取Stream流 ○ 创建一条流水线,并把数据放到流水线上准备进行操作● 中间方法 ○ 流水线上的操作 ○ 一次操作完毕之后,还可以继续进行其他操作● 终结方法 ○ 一个Stream流只能有一个终结方法 ○ 是流水线上的最后一个操作原创 2023-12-24 18:13:36 · 434 阅读 · 0 评论 -
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
jdk17 linux 版本压缩包通过xftp将jdk17的压缩包传输到/tmp下执行解压缩命令到/usr/local中。原创 2023-12-19 12:25:22 · 1952 阅读 · 0 评论 -
jjwt使用说明-笔记
● notBefore: sets the nbf(Not Before) Claim 定义在某个时间前该jwt是不可用的。● id: sets the jti(JWT ID) Claim jwt的唯一身份标识,作一次性token,防重放攻击。● audience: sets the aud(Audience) Claim 校验jwt的一方。● subject: sets the sub(Subject) Claim jwt针对的用户。● claime(Map对象)原创 2023-11-22 20:48:45 · 410 阅读 · 0 评论 -
关于使用Java-JWT的笔记
在生成token的方法中,设置了issuer签发者,签发时间,token过期时间,校验token方,以及一些自定义数据载荷,签证加密算法使用 HMAC256。我的这个例子就通过普通的maven项目来生成token,并不从web项目方面构建,但原理是一致的。自定义载荷:自定义载荷就是将自己需要的一些 key=>value数据放入到载荷中.原创 2023-11-21 22:40:27 · 414 阅读 · 0 评论 -
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。该注解可以更改匹配规则。你也可以直接修改配置spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER来更改规则。降低你的spring版本到2.5及以下,就不再会出现上述的问题。,自己指定的端口号不同,改成自己的端口号即可。原创 2023-08-07 07:57:29 · 164 阅读 · 0 评论 -
java数据结构,线性表链式存储(单链表)的实现
结合上一篇的顺序存储的总结java数据结构,线性表顺序存储(数组)的实现对于顺序存储,按顺序放在一起,相邻元素通过内存地址相邻产生联系,”随机存取“。而链式存储,元素随机放置在内存中任意位置,每个元素除了存放数据,也保存了其相邻元素的内存地址,来实现线性关系,“随机存取”。单链表的存储空间会比相同元素个数的线性表多,原因是单链表中包括了数据域data和指针域next,所以其存储密度是小于1的。原创 2022-11-21 10:15:27 · 719 阅读 · 0 评论 -
java数据结构,双向链表的实现
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。DoubleListNode.java为结构体类,DoubleLinkedList.java为实现类,MyList.java为方法接口。设置head和last两个哑元(其数据域并不存放数据),只是为了方便插入删除。双链表,需要一个指向前驱的指针,后指向后继元素的指针,以及数据域。插入的话,需要修改四个指针指向(修改顺序具有一定的规则!原创 2022-11-22 10:56:36 · 490 阅读 · 0 评论 -
java数据结构,线性表顺序存储(数组)的实现
线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。接着用类去实现这一接口,重写其中的全部方法,因为有一些操作,使用静态方法更便捷,所以接口中只是部分的基础操作,线性表的增删改查。7)Insert(L,i,x)在表L的位置i处插入元素x,将原占据位置i的元素及后面的元素都向后推一个位置。数据结构陆续更新中!3)Get(L,i) 这是一个函数,函数值为L中位置i处的元素(1≤i≤n)6)Locate(L,x) 这是一个函数,函数值为元素x在L中的位置。原创 2022-11-20 12:58:28 · 1194 阅读 · 0 评论 -
springboot整合mybatis-plus及mybatis-plus分页插件的使用
mybatis-plus是mybatis功能的增强版,我们使用的话,也是引入对应的stater即可,相比mybatis更方便,无需指定配置mapper.xml(前提是mapper接口是使用继承baseMapper接口的方式),mybatis-plus提供了baseMapper接口类,我们可以使用自己的mapper接口去继承,可以快速的无需自己编写sql方法,baseMapper接口里面提供了丰富的方法。mybatis-plus提供了很多插件,可以去其官网查看如何使用。原创 2023-01-29 13:07:11 · 1201 阅读 · 0 评论 -
springboot中整合mybatis及简单使用
在springboot中整合使用mybatis很方便,只要引入对应的stater,然后在application.yaml或者application.properties配置文件中进行配置即可(配置对应的mapper.xml的路径,还有很多配置,可以参考对应的官方文档),注意使用mapper接口时通过@Mapper注解标识,或者通过@MapperScan注解扫描对应的mapper包。如下图,当mapper.xml与mapper接口绑定时,会有小鸟图标显示,开发很方便观察。原创 2023-01-29 11:18:05 · 957 阅读 · 0 评论 -
yaml语法格式,springboot中yaml的使用
YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(,而不是以标记语言为重点,而用反向缩略语重命名。),但为了强调这种语言。原创 2023-01-23 09:48:31 · 900 阅读 · 0 评论 -
springboot中restful风格请求的使用
Rest风格支持(使用HTTP请求方式动词来表示对资源的操作)以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户。因为html表单只支持发送get和post请求,所以当发送delete,put请求时,需要设定一个隐藏域,其name值必须为`_method`,value值为表单的请求方式(且delete,put的表单的method为p原创 2023-01-24 16:58:31 · 983 阅读 · 0 评论 -
springboot自定义拦截器的简单使用和一个小例子
在springboot中,使用自定义拦截器,只需要将类实现接口(与原生的filter也基本差不多)preHandle():当某个 url 已经匹配到对应的 Controller 中的某个方法,且在这个方法执行之前 去执行。返回 true 则放行,返回 false 则不会向后执行。postHandle():当某个 url 已经匹配到对应的 Controller 中的某个方法,且在执行完了该方法,但是在 DispatcherServlet视图渲染之前。所以在这个方法中有个 ModelAndView 参数,可原创 2023-01-26 17:23:48 · 1469 阅读 · 0 评论 -
spring复习04,静态代理动态代理,AOP
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。JoinPiont对象,jdk动态代理,Proxy类,InvocationHandler接口,注解配置Aop原创 2022-11-28 20:17:29 · 335 阅读 · 0 评论 -
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
创建application.yamlspring : # 修改请求映射 mvc : static-path-pattern : /res/ ** # 修改静态资源目录 web : resources : static-locations : [ classpath : /images/ ]在类路径下,创建自己刚刚自定义的静态资源目录images,并且存放一张图片,用于待会儿测试修改完毕后,再次启动服务发现通过之前的请求已经无法访问到静态资源了输入刚刚修改的请求映射静态资源成功访问解决方案。原创 2023-01-24 09:50:14 · 7214 阅读 · 3 评论 -
springMVC02,restful风格,请求转发和重定向
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。每一个URI代表1种资源;客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;通过操作资源的表现形式来操作资源;资源的表现形式是XML或者HTML;原创 2022-12-02 10:14:42 · 643 阅读 · 0 评论 -
spring复习02,xml配置管理bean
获取bean的几种方式1. 通过id获取bean2. 通过class获取bean3. id和class结合来获取bean。依赖注入的两种方式:setter注入,有参构造器注入。依赖注入时一些特殊值的处理1.字面量2.null值3.xml实体4.CDATA节。为类类属性赋值1.引入已经声明的bean的方式2.内部bean的方式3.级联属性赋值的方式。为数组,集合,map类型赋值1.array标签2.list标签3.map标签4.until标签。p命名空间bean的作用域及生命周期1.bean的作用域原创 2022-11-26 17:22:16 · 633 阅读 · 0 评论 -
spring复习03,注解配置管理bean
如下图,@Qualifier注解的使用,当使用在属性上的时候,@Qualifier 和 @Autowired结合使用可以通过唯一Bean的id实现自动装配,因为单独的@Autowired注解实现自动装配是按照类型优先原则的,一旦IOC容器中出现了两个类型一样的Bean,@Autowired注解就会无法辨别用那个,即而报错,但是当我们加上 @Qualifier(value = “Bean的id”) 的时候就可以直接通过Bean的唯一标识(id)进行装配了。的基础上起了三个新的名字,用于开发人员分辨组件。原创 2022-11-27 10:49:10 · 398 阅读 · 0 评论 -
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
在springboot中实现文件上传、下载操作直接使用Spring框架中的MultipartFile来处理文件即可非常简单。MultipartFile类是org.springframework.web.multipart包下面的一个类。MultipartFile主要是用表单的形式进行文件上传,在接收到文件时,可以获取文件的相关属性,比如文件名、文件大小、文件类型等等。表单中,method="post" enctype="multipart/form-data",使用multiple属性可以将多个文件上传原创 2023-01-27 09:08:15 · 1298 阅读 · 0 评论 -
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(两种方式配置druid数据源。自定义配置,需要通过@Configuration注解标识一个配置类,然后在其内部定义组件@Bean,DruidDataSource,servlet(StatViewServlet),filter(WebStatFilter),使用stater的方式的话,引入依赖,然后使用application.yaml进行配置信息即可,很简单和方便。原创 2023-01-28 12:00:26 · 4664 阅读 · 0 评论 -
springMVC01,【第一个springMVC例子(注解版):HelloWorld】
springMVC的执行流程:浏览器发送请求,若请求地址符合前端控制器的url-pattern,该请求就会被前端控制器DispatcherServlet处理。前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,最终转发到视图对应的页面。原创 2022-12-01 15:31:26 · 445 阅读 · 0 评论 -
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
SpringMVC是Spring的一个后续产品,是Spring的一个子项目。SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了SpringMVC 作为 Java EE 项目表述层开发的首选方案。Spring 家族原生产品,与 IOC 容器等基础设施无缝对接基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理。原创 2022-12-01 11:47:47 · 323 阅读 · 0 评论 -
spring复习05,spring整合mybatis,声明式事务
spring整合mybatis,基于mybatis-spring来整合,sqlSessionFactoryBean的配置,sqlSession(SqlSessionTemplate)的配置,声明式事务,事务的传播行为,隔离级别,回滚策略,超时,只读提示@Transactional注解,xml配置声明式事务...spring大概的过了一遍,过几天要开始springMvc的复习了,果然“配置地狱”!原创 2022-11-29 19:49:29 · 503 阅读 · 0 评论 -
springbootWeb常用注解使用
可以通过@RequestHeader注解来获取请求标头的一些信息,如果方法参数是Map、MultiValueMap或HttpHeaders,则映射将填充所有标头名称和值。一般都是结合着@RequestMapping注解来使用,用于在参数传递的过程中,规范前端发送请求的格式,和数据的验证。若不存在,将抛出异常。注意的点:@PathVarible注解,如果方法参数为Map,则映射将填充所有路径变量名称和值。原创 2023-01-25 10:56:01 · 1487 阅读 · 0 评论 -
设计模式--适配器模式 Adapter Pattern
(1)适配器模式将某个类的接口转换成为客户端期望的另一个接口表示,主要的目的是兼容性,让原本应接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper).(2)适配器模式属于结构型模式(3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。原创 2023-02-11 18:39:53 · 787 阅读 · 0 评论 -
设计模式--建造者模式 builder
Product : 产品类,最终要生成的对象(例如:一台电脑)。Builder :构建者的抽象基类或则抽象接口。定义了Product产品的生产流程的抽象步骤(比如一台电脑可以在出厂的时候就将所有外设配件搭载齐全,也可以只是原装的一台电脑,外设需要自己从别的地方购买)。ConcreteBuilder :Builder的实现类。Direcotr : 决定如何构建最终产品的算法逻辑,多个方法Construct(Builder builder){//方法体}原创 2023-02-10 18:21:59 · 732 阅读 · 1 评论 -
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
工厂模式-创建型模式-提供了创建对象的最佳方式。在工厂模式中,创建对象时不会对客户端暴露创建逻辑,并且是通过一个共同的接口来创建新的对象。简单工厂模式是属于创建型模式,是工厂模式的一种。**简单工厂模式**是**由一个工厂对象决定创建出哪一种产品类的实例**。(工厂类拥有一个工厂方法(create),接受了一个参数,通过不同的参数实例化不同的产品类。)工厂方法进一步解耦合,把工厂类进行抽象,不再负责所有实例的创建,而是把具体的创建工作交给其子类去完成,实例化延迟到子类加载,由子类来决定要实例化的类。原创 2023-02-09 14:06:29 · 366 阅读 · 0 评论 -
设计模式--单例模式Singleton
饿汉式” ,就是你可以试着想想一下,一个饿汉的行为,肯定是见到了食物就去吃。静态内部类在使用时才会实例化,避免资源浪费,实现延迟加载。解决了多线程的安全问题,双重检查可以解决懒加载问题,即在使用时才会加载(避免浪费内存资源),同时保证了效率,推荐使用。妄图通过减小同步代码块的方式来提高效率,但会导致多线程还是存在安全问题,只能在单线程下使用,不推荐使用。使用枚举来实现单例模式,既可以避免多线程同步问题,也能防止反序列化重新创建新的对象。避免了线程不安全,利用静态内部类的特点实现延迟加载,效率高。原创 2023-02-08 12:57:25 · 402 阅读 · 0 评论 -
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响原创 2023-01-26 16:07:44 · 1797 阅读 · 0 评论 -
Java注解,元注解,自定义注解的使用
自定义注解,需要使用@interface来定义,使用@interface自定义注解时,自动继承java.lang.annotation.Annotation接口。权限修饰符 @interface 注解名 {// 定义内容 String value() default "";// 参数类型 参数名 默认值;@interface 用来声明一个注解其中上面的表示这个注解需要提供一个String类型的参数,且其默认值为空字符串default ""value() 就是参数的名称。原创 2023-01-21 17:57:50 · 1783 阅读 · 0 评论 -
Java-Thread多线程的使用
并行,指的是多个事情,在同一时间点上同时发生了( 并行的多个任务之间是不互相抢占资源的, 只有在多CPU的情况中,才会发生并行)。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。比如最常见的 ,线程A占有资源1,同时想占有资源2,线程B占有资源2,也想占有资源1,但是资源1和资源2都只有一份便形成了死锁。进程是程序的一次执行过程,或者正在运行的程序,具有动态的生命周期,从创建,运行到消亡。程序是指令、数据及其组织形式的描述,原创 2023-01-16 18:11:52 · 587 阅读 · 0 评论 -
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。原创 2023-01-15 10:41:34 · 1677 阅读 · 0 评论 -
File类的使用
Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。如果遍历的是一个文件或者不存在的文件夹目录 则会返回空指针异常。File对象代表磁盘中实际存在的文件和目录。需求,找某一目录下的以.txt结尾的所有文件。2.使用filefilter来过滤。原创 2023-01-01 09:41:15 · 766 阅读 · 0 评论 -
Properties类的使用
Properties类是Hashtable的直接子类,Properties类表示一组持久的属性。Properties可以保存到流中或从流中加载。属性列表中的每个键及其对应的值都是一个字符串。key-value的形式存放,并且其都是字符串。这里 注释的中文变成了unicode编码。原创 2022-12-26 10:03:54 · 552 阅读 · 0 评论