09 2020 档案

摘要:Spring Security 自带两种方式实现记住我功能(也就是自动登录) 1. 通过Cookie存储认证数据 这种方式十分简单,只要在 WebSecurityConfig 中的 configure() 方法添加一个 rememberMe() 即可: @Override protected voi 阅读全文
posted @ 2020-09-29 10:55 大嘤熊 阅读(722) 评论(0) 推荐(0)
摘要:由于自己是将项目放在带宽很低的服务器上的(便宜)。所以后面访问速度贼慢,就想着通过一些手段提升一下访问速度。 CDN提速缓存 首先想到就是这个,因为自己的服务器发送东西慢嘛,肯定想到能不能将一些经常用到的静态图片啥的放置在其他地方,当访问的时候直接在其他地方获取。 原理 用户访问未使用CDN缓存网站 阅读全文
posted @ 2020-09-28 10:30 大嘤熊 阅读(554) 评论(0) 推荐(0)
摘要:流的基本操作 中间操作: 终端操作: 其他常见操作 阅读全文
posted @ 2020-09-26 10:37 大嘤熊 阅读(100) 评论(0) 推荐(0)
摘要:函数式接口 只有一个方法的接口(或者说只有一个方法需要实现的接口,java8支持接口有默认实现) //常见的函数式接口 @FunctionalInterface public interface Runnable { public abstract void run(); } 简单使用: packa 阅读全文
posted @ 2020-09-21 15:24 大嘤熊 阅读(136) 评论(0) 推荐(0)
摘要:1. 为什么使用线程池 1、降低资源的消耗 2、提高响应的速度 3、方便管理。 线程池可以达到:线程复用、可以控制最大并发数、管理线程的目的 2. 线程池的使用 2.1 Executors的三种方法 package pool; import java.util.concurrent.Executor 阅读全文
posted @ 2020-09-21 11:00 大嘤熊 阅读(180) 评论(0) 推荐(0)
摘要:package ztext.pc; /** * JavaTest * * @author : xgj * @description : de * @date : 2020-09-20 14:40 **/ public class TestOne { public static void main(S 阅读全文
posted @ 2020-09-20 14:52 大嘤熊 阅读(181) 评论(0) 推荐(0)
摘要:Lock锁和synchronized锁的区别 Lock锁是对象,而synchronized是java关键字 Lock锁需要手动加锁释放锁,synchronized的该操作是全自动的。对于异常前者需要手动释放锁,不然容易导致死锁。而后者由jvm自动管理。 Lock锁的属性可以配置,而synchroni 阅读全文
posted @ 2020-09-20 14:29 大嘤熊 阅读(5993) 评论(0) 推荐(0)
摘要:下面都是一些个人理解,有错欢迎指出 线程和进程的区别 一句话解释就是:线程是cpu调度和执行的基本单位。而进程是系统资源分配的基本单位。 个人理解的话, 二者虽然属于不同情况下的定义问题,其实也存在着联系。一个进程具有一个或者多个线程。我们考虑最特殊的情况,一个进程只存在一个线程的时候,那么二者在运 阅读全文
posted @ 2020-09-20 09:32 大嘤熊 阅读(132) 评论(0) 推荐(0)
摘要:sql调优是需要时间积累的,这里只是记录一些基础的知识,也是我第一篇sql调优 一般情况下sql调优主要依靠explain命令:expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra: 阅读全文
posted @ 2020-09-18 12:20 大嘤熊 阅读(125) 评论(0) 推荐(0)
摘要:Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。 @Component作用就相当于 XML配置 @Bean 需要在配置类中使用,即类上需要加上@ 阅读全文
posted @ 2020-09-17 20:25 大嘤熊 阅读(2756) 评论(0) 推荐(1)
摘要:概述 AQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中。 AQS是将每一条请 阅读全文
posted @ 2020-09-16 19:03 大嘤熊 阅读(108) 评论(0) 推荐(0)
摘要:1.1乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,主要区别在对于同步资源的处理方式的不同。在Java和数据库中都有此概念对应的实际应用。 对于乐观锁而言: 认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据 阅读全文
posted @ 2020-09-16 17:49 大嘤熊 阅读(164) 评论(0) 推荐(0)
摘要:虽然这个不是标准的数据结构,但是在java中还是挺重要的结构类。所以需要好好了解一下 使用 该类的使用非常简单,大概就下面的两个操作。 static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>(); sThreadLocal.set( 阅读全文
posted @ 2020-09-16 12:55 大嘤熊 阅读(239) 评论(0) 推荐(0)
摘要:跨域是什么 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。 跨域怎么出现的 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构 阅读全文
posted @ 2020-09-15 08:37 大嘤熊 阅读(115) 评论(0) 推荐(0)
摘要:流程图 过程 一个请求匹配前端控制器(DispatcherServlet)的请求映射路径(在 web.xml中指定), WEB容器就将该请求转交给 DispatcherServlet 处理 DispatcherServlet接收到请求后, 将根据请求信息交给处理器映射器 (HandlerMappin 阅读全文
posted @ 2020-09-13 22:33 大嘤熊 阅读(371) 评论(0) 推荐(0)
摘要:一:JDK安装 将文件jdk-8u211-linux-x64.tar.gz移动到/usr/java/下,并解压:tar -xzvf xxx.tar.gz 二:配置环境变量 在/etc/profile文件中,配置环境变量,是JDK在所有用户中生效:vi /etc/profile 编辑文件,在最后添加如 阅读全文
posted @ 2020-09-13 17:14 大嘤熊 阅读(170) 评论(0) 推荐(0)
摘要:递归模板 public void recursion(参数0) { if (终止条件) { return; } recursion(参数1); } public void recursion(参数0) { if (终止条件) { return; } 可能有一些逻辑运算 recursion(参数1) 阅读全文
posted @ 2020-09-12 12:19 大嘤熊 阅读(139) 评论(0) 推荐(0)
摘要:需求 我自己的手机验证登录,然后想的是当手机验证码发送失败的时候换成绑定的邮箱发送验证码。(主要是发送手机验证码要钱,自己的学习测试项目就不太想包套餐。然后想正好熟悉一下邮箱验证这些操作。实际开发中肯定不会这么玩,然后如果直接 手机发送验证码->失败->邮箱验证。这样的话非常耗时。大概需要1000+ 阅读全文
posted @ 2020-09-12 11:28 大嘤熊 阅读(590) 评论(0) 推荐(0)
摘要:导入Starter模块依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 邮箱配置 Spring Boo 阅读全文
posted @ 2020-09-11 22:55 大嘤熊 阅读(1238) 评论(0) 推荐(0)
摘要:原理 深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个res 阅读全文
posted @ 2020-09-11 21:57 大嘤熊 阅读(183) 评论(0) 推荐(0)
摘要:聚簇索引和非聚簇索引 主要区别在于组织索引的结构是否和数据存储的结构一样。一般再Innodb中主键索引就是聚簇索引,没有主键会默认生成隐藏主键字段。理论上也可以指定其他字段为聚簇索引,聚簇索引也不必唯一。 主键索引和普通索引 我们都知道,InnoDB引擎下的存储结构为b+树,也就是说首先根据key值 阅读全文
posted @ 2020-09-11 11:03 大嘤熊 阅读(216) 评论(0) 推荐(0)
摘要:Servlet简介 Servlet就是sun公司开发动态web的一门技术,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个类,实现Servlet接口 把开发好的Java类部署到web服务器中。 Serlvet接口Sun公司有两个默认的实现类:HttpServlet,Generic 阅读全文
posted @ 2020-09-10 22:21 大嘤熊 阅读(140) 评论(0) 推荐(0)
摘要:基础介绍 1. 基本语法: 1. 与html结合方式 1. 内部JS: * 定义<script>,标签体内容就是js代码 2. 外部JS: * 定义<script>,通过src属性引入外部的js文件 * 注意: 1. <script>可以定义在html页面的任何地方。但是定义的位置会影响执行顺序。 阅读全文
posted @ 2020-09-10 15:38 大嘤熊 阅读(122) 评论(0) 推荐(0)
摘要:1. 概念: Cascading Style Sheets 层叠样式表 * 层叠:多个样式可以作用在同一个html的元素上,同时生效 2. 好处: 1. 功能强大 2. 将内容展示和样式控制分离 * 降低耦合度。解耦 * 让分工协作更容易 * 提高开发效率 3. CSS的使用:CSS与html结合方 阅读全文
posted @ 2020-09-10 15:32 大嘤熊 阅读(138) 评论(0) 推荐(0)
摘要:1. 概念:是最基础的网页开发语言 * Hyper Text Markup Language 超文本标记语言 * 超文本: * 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本. * 标记语言: * 由标签构成的语言。<标签名称> 如 html,xml * 标记语言不是编程语言 阅读全文
posted @ 2020-09-10 15:31 大嘤熊 阅读(152) 评论(0) 推荐(0)
摘要:概念 Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 JDBC本质其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱 阅读全文
posted @ 2020-09-10 15:25 大嘤熊 阅读(231) 评论(0) 推荐(0)
摘要:约束 * 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 * 分类: 1. 主键约束:primary key 1. 注意: 1. 含义:非空且唯一 2. 一张表只能有一个字段为主键 3. 主键就是表中记录的唯一标识 2. 在创建表时,添加主键约束 create table stu( 阅读全文
posted @ 2020-09-10 15:06 大嘤熊 阅读(294) 评论(0) 推荐(0)
摘要:DDL:操作数据库、表 操作数据库:CRUD 1. C(Create):创建 * 创建数据库: * create database 数据库名称; * 创建数据库,判断不存在,再创建: * create database if not exists 数据库名称; * 创建数据库,并指定字符集 * cr 阅读全文
posted @ 2020-09-10 15:03 大嘤熊 阅读(158) 评论(0) 推荐(0)
摘要:几个概念 幂等:是一个数学概念,表示N次变换和1次变换的结果相同。 幂等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用)。 幂等性:一系列操作都是幂等操作 幂等接口:幂等接口认为,外部调用者会存在多次调用的场景,为了防止重试对数据状态的改变,需要将接 阅读全文
posted @ 2020-09-10 10:43 大嘤熊 阅读(311) 评论(0) 推荐(0)
摘要:count()函数是用来统计表中记录的一个函数,返回匹配条件的行数。 count()语法: 添加一个表 count(*) 包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。 count(1) 忽略所有列,1表示一个固定值,也可以用count(2)、co 阅读全文
posted @ 2020-09-09 10:31 大嘤熊 阅读(596) 评论(0) 推荐(0)
摘要:什么是聚合函数? 聚合函数对一组值执行计算并返回单一的值。所以聚合函数不能用于where语句,where语句是一种约束,其运行在聚合函数之前。而可以用于having后面。因为having是对结果的过滤。运行在聚合函数之后 聚合函数有什么特点? 除了 COUNT 以外,聚合函数忽略空值。 聚合函数经常 阅读全文
posted @ 2020-09-09 10:27 大嘤熊 阅读(939) 评论(0) 推荐(0)
摘要:%:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 _ :表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。 []:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个 阅读全文
posted @ 2020-09-09 09:37 大嘤熊 阅读(1633) 评论(0) 推荐(0)
摘要:DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。 阅读全文
posted @ 2020-09-09 09:35 大嘤熊 阅读(306) 评论(0) 推荐(0)
摘要:1.1特征和好处 将常用的依赖分组进行整合到springboot starter中。这样只需要添加一个依赖就可以启动一个web项目 springboot采用javaconfig的方式对spring进行配置,提高了开发效率 springboot的自动配置特征利用spring对条件配置的支持。合理的推测 阅读全文
posted @ 2020-09-08 19:21 大嘤熊 阅读(124) 评论(0) 推荐(0)
摘要:这里有个简化版的图: 根据JavaEE的流程,本质就是Filter过滤请求,转发到不同处理模块处理,最后经过业务逻辑处理,返回Response的过程。 当请求匹配了我们定义的Security Filter的时候,就会导向Security 模块进行处理,例如UsernamePasswordAuthen 阅读全文
posted @ 2020-09-07 22:27 大嘤熊 阅读(562) 评论(0) 推荐(0)
摘要:1. 短信验证码的生成 首先自定义一个短信验证码类 package com.blog.security.smscode; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; im 阅读全文
posted @ 2020-09-07 15:55 大嘤熊 阅读(2119) 评论(0) 推荐(0)
摘要:在前面的简单登录验证,我们简单整合了SpringSecurity的登录,可以通过自定义设置或者从数据库中读取用户权限类。接下来我们实现一些简单的验证码相关的登录验证。 1、图片验证码登录 其实这里和最初的登录验证没啥区别,只是多了一个验证码的验证过程。我们首先需要清楚认识到SpringSecurit 阅读全文
posted @ 2020-09-07 15:51 大嘤熊 阅读(644) 评论(0) 推荐(0)
摘要:题目 分析 这里还是很简单,就是平常的层序遍历就完事了。个人觉得主要是考察基础知识,比如二维数组的初始化,队列的一些操作。解答过程主要是构建一个数组对每层节点进行记录,然后结果倒序就好了。我这里倒叙通过遍历数组实现,官方解答充分利用了list数组的add方法,通过指定每次添加位置为第一位。为不是平常 阅读全文
posted @ 2020-09-06 07:55 大嘤熊 阅读(126) 评论(0) 推荐(0)
摘要:题目 分析 其实很明显该排序强调的从小到大的排序就提示该题存在一定规律,比如如果k在[1,(n-1)!)之间时,那么我们就可以确定第一位数字为1,k在[(n-1)!,2*(n-1)!)之间时,那么第一位就是2.以此类推。 我们用一个数组来记录阶乘。然后开始对该字符串所有位置的的数值进行确定。 代码 阅读全文
posted @ 2020-09-05 15:46 大嘤熊 阅读(95) 评论(0) 推荐(0)