java

SpringBoot 整合Security权限控制的初步配置

2022-11-08
正文 在源码目录下新建 config 目录, 在该目录下新建 WebSecurityConfig 类文件 /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding co

SpringMVC ajax请求的处理方法介绍

2022-11-08
目录 准备工作 一.@RequestBody 二.@RequestBody获取json格式的请求参数 三.@ResponseBody 四.@ResponseBody响应浏览器json数据 五.@RestController注解 准备工作 ①创建maven工程 ②添加相关依赖,和添加web模块 ③配置web.xml,如配置处理1.编码过滤器,2.请求方式的过滤器,3.前端控制器 ④创建springmvc.xml,并进行配置 ⑤创建控制层controller 一.@RequestBody index

通过HashMap原理详解entrySet中的疑问

2022-11-07
目录 HashMap底层变量 put()方法: 2. get(Object key)方法: 3. remove(Object key)方法: 4.entrySet()方法: EntrySet类代码 HashMap底层变量 HashMap的底层的一些变量: transient Node<K,V>[] table; //存储数据的Node数组 transient Set<java.util.Map.Entry<K,V>> entrySet; transient int si

Redisson分布式锁的源码解读分享

2022-11-07
目录 前言 前置知识 分布式锁的思考 Redis订阅/发布机制 Redisson 加锁 订阅 解锁 看门狗 前言 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid).Redisson有一样功能是可重入的分布式锁.本文来讨论一下这个功能的特点以及源码分析. 前置知识 在讲Redisson,咱们先来聊聊分布式锁的特点以及Redis的发布/订阅机制,磨刀不误砍柴工. 分布式锁的思考 首先思考下,如果我们自己去实现一个分布式锁,这个锁需要具备

Java实现将类数据逐行写入CSV文件的方法详解

2022-11-07
目录 1. 需求和思路 2. 现有方法 3. 代码 4. 参考 1. 需求和思路 最近要用java制作一个数据集,每一行是一个样本,格式是csv.用了一下java类的相关概念,把csv文件里的每一行,即每一个样本视为一个类. 2. 现有方法 目前已有的csv包如opencsv,可以支持字符串,也可以支持javabean(即java类).相关教程如下 Java OpenCSV|极客教程 由于墙的原因,我maven老是下载不到opencsv的jar包,没办法我只能手写个平民版的 3. 代码 自定义的

SpringMVC获取请求参数实现方法介绍

2022-11-07
目录 一.通过ServletAPI获取 二.通过控制器方法的形参获取请求参数 三.@RequestParam 四.@RequestHeader 五.@CookieValue 六.通过POJO获取请求参数 七.解决获取请求参数的乱码问题 我们已经学习过@RequestMapping了,学的属性可能比较多,但是我们常用的也就value和method.所以说我们已经可以把我们的浏览器发送的请求和控制器方法来创建映射关系了. 一.通过ServletAPI获取 将HttpServletRequest作为控

流读取导致StringBuilder.toString()乱码的问题及解决

2022-11-06
目录 流读取导致StringBuilder.toString()乱码 乱码问题 Java StringBuilder toString()方法与示例 流读取导致StringBuilder.toString()乱码 乱码问题 StringBuilder sb = new StringBuilder(); String s = new String(sb.toString().getBytes("ios8859-1"),"UTF-8"); 顺便回忆一下String, S

一篇文章轻松了解SpringBoot配置高级

2022-11-05
目录 前言 @ConfigurationProperties 使用场景 小结 宽松绑定/松散绑定 总结 前言 本文介绍的是SpringBoot配置高级部分,课程是跟着黑马走的,所以会有一些借鉴,当然也是笔记,还会参考一些大佬的分享:这里的SpringBoot配置高级,并不是SpringBoot所有的高级配置:SpringBoot体系(或者说Spring)是十分庞大的,笔者也自知不能穷尽,故而只能把所学的东西拿来记一记,练一练.文章内容如若有误,还请大家批评指正. @ConfigurationPr

ThreadPoolExecutor参数含义及源码执行流程详解

2022-11-05
目录 背景 典型回答 考点分析 知识拓展 execute() VS submit() 线程池的拒绝策略 自定义拒绝策略 ThreadPoolExecutor 扩展 小结 背景 线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度.但如果要说线程池的话一定离不开 ThreadPoolExecutor ,在阿里巴巴的<Java 开发手册>中是这样规定线程池的

Spring事务传播中嵌套调用实现方法详细介绍

2022-11-05
目录 前言 7种传播方式 注解式事务 事务的方法之间的调用 注意事项 前言 最近在使用Spring框架时遇到了一些问题,主要是Spring的事务传播问题,一个不带事务的方法调用带事务的方法,有时候会出现不回滚的情况,所以写了这篇文章来记录一下. 7种传播方式 我们先来看Spring事务的7中传播方式以及对应的描述 属性名称 值 描述 PROPAGATION__REQUIRED REQUIRED 表示的是当前这个方法必须运行在一个事务环境中,如果当前方法已经处于事务环境中,就可以直接使用该方法,否

排序算法图解之Java插入排序

2022-11-05
目录 1.插入排序简介 2.插入排序思想及图解 3.插入排序代码实现 1.插入排序简介 插入排序,一般也被称为直接插入排序.对于少量元素的排序,它是一个有效的算法.插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的.记录数增1的有序表.在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 2.插入排序思想及图解 插入排序的基本思想如下: 把n个待排序的元素看成为一个有序表和一个无

Java编码算法与哈希算法深入分析使用方法

2022-11-05
目录 一.编码算法 1.什么是编码 2.URL编码 3.Base64编码 二.哈希算法 1.概述 2.哈希碰撞 3.常用哈希算法 ①.MD5 ②.SHA-1 ③.RipeMD-160 4.哈希算法的用途 三.小结 一.编码算法 1.什么是编码 ASCII 码就是一种编码,字母 A 的编码是十六进制的 0x41 ,字母 B 是 0x42 ,以此类推. 因为 ASCII 编码最多只能有 127 个字符,要想对更多的文字进行编码,就需要用占用 2个字节的 Unicode .而中文的"中"字使

Java CopyOnWriteArrayList源码超详细分析

2022-11-05
目录 一.概述 二.类图 三.核心方法 1.add() 2.set() 3.remove() 4.get() 5.size() 四.总结 一.概述 CopyOnWriteArrayList是基于写时复制技术实现的,适用于读多写少场景下的线程安全的并发容器.读操作永远不会加锁,读读.读写都不会冲突,只有写写需要等待.写操作时,为了不影响其它线程的读取,它会进行一次自我复制,待数据写入完成后再替换array数组.array数组是被volatile修饰的,它被修改后可以被其他线程立刻发现. publi

Java&nbsp;Email邮件发送简单实现介绍

2022-11-05
目录 一.邮件协议 1.POP3 2.SMTP 3.IMAP 4.IMAP和POP3有什么区别 二.发送邮件 三.总结 一.邮件协议 MTA 和 MDA 这样的服务器软件通常是现成的,我们通常不会关心这些邮件服务器的内部是如何运行 的.更多的需求场景,是需要发送邮件.例如:促销商品邮件.验证码邮件.消息通知邮件等.常见的 邮件协议有: POP3 . SMTP . IMAP . 1.POP3 POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算

Java构造方法有什么作用?

2022-11-04
构造方法的作用:即给重要属性赋初始值. Java构造方法本身并不神秘,通常它只是去完成一些初始化的工作.构造方法本身并不能去创建出一个对象,真正创建对象的是Java平台,构造方法只是Java平台在创建出一个对象之后去默认调用的方法. 构造方法需要理解的重点: 构造方法没有返回值类型,但是在构造方法中可以使用return 构造方法必须和类名一样 Java平台创建出一对象后,会根据new语句中给出的类名和参数调用相应的构造函数 一个类可以有多个构造方法,它们之间的关系是重载 Java平台是构造函数的

Java&nbsp;TCP编程之Scoket

2022-11-04
目录 一.什么是Scoket 二.服务器端 三.客户端 四.Socket流 五.总结 一.什么是Scoket Socket 是一个抽象概念,一个应用程序通过一个 Socket 来建立一个远程连接,而 Socket 内部通 过 TCP/IP 协议把数据传输到网络. ┌───────────┐                                   ┌───────────┐│Application│                                   │Applicat

SpringCloud&nbsp;Nacos配置中心管理超详细讲解

2022-11-04
目录 一.Nacos配置管理 1.1 统一配置管理 1.1.1在nacos中添加配置文件 1.1.2 从微服务拉取配置 1.2 配置热更新 1.2.1 方式一 1.2.2 方式二 1.3 配置共享 一.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来用 1.1 统一配置管理 当微服务部署越来越多,达到数十,数百时,逐个修改微服务配置就会很麻烦,且容易出错.我们需要一种统一配置管理方案,可以集中管理所有实例的配置. Nacos一方面更可以将配置集中管理另一方面在配置变更时,及

Java&nbsp;Session会话追踪原理深入分析

2022-11-03
目录 一.会话技术 二.Session 1.原理 2.特点 3.获得一个会话对象 4.Session常见方法 三.Cookie和Session的区别 一.会话技术 客户端和服务器通信的过程中,自然而然的会产生一些数据交互.比如,A用户登录了邮箱,那么web服务器该怎么知道C一段时间后的登录状态呢?虽然HttpServletRequest对象和ServletContext对象都可以保存数据,但是不适用于这种情况. 客户端的每次请求,服务器都会产生一个HttpServletRequest对象,该对象

详解Java的线程状态

2022-11-03
Java的每个线程都具有自己的状态,Thread类中成员变量threadStatus存储了线程的状态: private volatile int threadStatus = 0; 在Thread类中也定义了状态的枚举,共六种,如下: public enum State { NEW, // 新建状态 RUNNABLE, // 执行状态 BLOCKED, // 阻塞状态 WAITING, // 无限期等待状态 TIMED_WAITING, // 有限期等待状态 TERMINATED; // 退出状

SpringBoot过滤器与拦截器深入分析实现方法

2022-11-03
目录 过滤器 编写过滤器 注册过滤器 基于 FilterRegistrationBean 基于 @WebFilter 拦截器 过滤器 实现过滤器需要实现 javax.servlet.Filter 接口.重写三个方法.其中 init() 方法在服务启动时执行,destroy() 在服务停止之前执行. 可用两种方式注册过滤器: 使用 FilterRegistrationBean 来注入.可使用 setOrder(0) 设置过滤器的优先级,越小优先级越高. 使用 @WebFilter(filterNa