- 博客(32)
- 问答 (3)
- 收藏
- 关注
原创 解决@JsonProperty和@JsonIgnore无法同时生效问题
在返回对象时,某些属性不需要返回,我首先通过@JsonIgnore来忽略他,即@JsonProperty(value = "name")@JsonIgnoreprivate String username;但,真正测试时,发现该属性并未被忽略,即 @JsonIgnore注解未生效,猜测是这两个注解冲突,注掉@JsonProperty(value = "user_name")在测试,此时该属性被忽略了,成功。但是,该属性又必须取别名,想到还有@JsonIgnoreProperties,于是将该注解
2021-10-15 10:10:13 1531
原创 OIDC core第1-3章
OIDC(openID Connect)OIDC是基于OAuth2+OpenID整合的新的认证授权协议;OAuth2是一个授权(authorization)的开放协议, 在全世界得到广泛使用,但在实际使用中,OAuth2只解决了授权问题,没有实现认证部分,往往需要添加额外的API来实现认证;而OpenID呢,是一个认证(authentication )的协议,二者在实际使用过程中都有其局限性;OAuth2只在颁发code或者token时对用户身份进行了认证,之后都是以授权为基准对资源进行访问,但是如果在
2021-10-13 09:42:23 1055
原创 springMVC之HelloWorld
首先,创建一个自带web的maven项目与普通maven项目不同的是,需要在创建时选择webapp但是这样创建出来的的maven项目main目录下没有Java文件也没有resources文件,需要我们自己创建并将他们设置为源码根目录和资源很目录,具体如下:然后我们需要搭建开发环境1.首先导入依赖<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2020-10-24 22:48:22 1339
原创 索引和事务
索引MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构,简单来说:索引就是数据结构。当数据量很大时,为了能够方便管理数据,提高数据查询的效率,一般都会选择将数据保存到数据库,因此数据库不仅仅是帮助用户管理数据,而且数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这样就可以在这些数据结构上实现高级查找算法,该数据结构就是索引。MySQL中的索引(index | key),从应用的角度来说,有如下几种类型的索引:1.主键索引
2020-08-23 19:49:05 214
原创 B-树
B-树B-树是一种多叉平衡搜索树,它可以是空树,或者满足以下特性:根节点至少有两个孩子每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子每个非根节点至少有M/2-1(上取整)个关键字,至多有M-1个关键字,并且以升序排列key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间所有的叶子节点都在同一层结点中的key必须按序存储。(任何搜索树中都不允许key重复,所以永远不会出现key相等的情况)...
2020-08-21 21:48:23 195 1
原创 红黑树
红黑树同样是一种二叉平衡搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树的性质1.对于任意一个结点而言,它要么是红色,要么是黑色2.无论什么情况下,如果根节点,则根节点一定为黑色3.对于任意一个结点,红色和红色不能相邻,即如果一个结点是红色的,则它的两个孩子和它的父结点都一定是黑色的。4.对于任意一个结点,从该结点到其后代所有叶结点的简单路径上
2020-08-21 00:34:49 143
原创 AVL树
二叉平衡树二叉搜索树二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树:(1):对于它的任意一个结点而言,若该结点的左子树不为空,则左子树上所有结点的值小于该结点的值.。(1):对于它的任意一个结点而言,若该结点的右子树不为空,则右子树上所有结点的值大于该结点的值.。即对于他的任意一个结点而言,该结点的左右子树也分别为二叉搜索树二叉搜索树的查找既然将其称之为二叉搜索树,因此这棵树最主要的作用是进行查询,而且其查询原理特别简单,具体如下:若根节点不为空:若根节点key =
2020-08-20 22:22:15 173
原创 理解哈希
哈希表在顺序表以及平衡树中,元素关键码和它的存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较,也就是按照顺序依次查找,若为顺序表则其时间复杂度为O(n),若为平衡树则其时间复杂度为树的高度****,即O(log(n)),而搜索的效率取决于搜索过程中元素的比较次数。而在我们的理想情况下,我们希望不经过任何比较,只用一次就能直接从表中得到要搜索的元素;而如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与他的关键码之间能过建立一一映射关系,那么在查找时通过该函
2020-08-19 23:03:54 135
原创 Spring-IOC
Spring:Spring是一个开源框架,Spring 是于 2003 年兴起的一个轻量级的Java 开发框架。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)
2020-08-15 20:13:30 106
原创 认识ThreadLocal,死锁,ConcurrentHashMap
认识ThreadLocalThreadLocal 用于提供线程局部变量,在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。也就是说 ThreadLocal 可以为每个线程创建⼀一个【单独的变量副本】,相当于线程的 private static 类型变量。ThreadLocal 的作用和同步机制有些相反:同步机制是为了保证多线程环境下数据的一致性;而ThreadLocal 是保证了多线程环境下数据的独立性。ThreadLocal的简单使⽤public class Test { pri
2020-08-08 12:50:48 1095
原创 深入了解多线程
synchronized关键字背后的原理:JVM 将 synchronized 锁分为 无锁、偏向锁、轻量级锁、重量级锁 状态。会根据情况,进行依次升级。重量级锁会阻塞,唤醒请求加锁的线程。他针对的是多个线程同时竞争同一把锁的情况(monitor机制)。JVM采用了自适应自旋来避免线程在面对非常小的synchronized代码块时,仍会被阻塞,唤醒的情况。重量级锁通过对象内部的监视器(monitor)实现,而其中 monitor 的本质是依赖于底层操作系统的 Mutex Lock实现,操作系统实现线程之
2020-08-07 14:00:12 159
原创 定时器
定时器:1.在约定好的时间点上,执行某个任务2.每间隔一定时间就执行某个任务在JAVA中实现定时器功能要用的2个类是Timer,TimerTaskTimer类是用来履行任务的类,它接受1个TimerTask做参数Timer有两种执行任务的模式,最经常使用的是schedule,它可以以以下几种方式执行任务:1:在某个时间(Data),2:在某个固定的时间以后(long delay).3.间隔一定时间就执行某个任务(long period )import java.util.concurr
2020-08-06 13:18:32 86
原创 java线程池
线程池(thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。想象这么一个场景:在学校附近新开了一家快递店,老板很精明,想到一个与众不同的办法来经营。店里没有雇人,而是每次有业务来了,就现场找一名同学过来把快递送了
2020-08-06 11:33:45 99
原创 阻塞式队列
生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的/** * 实现阻塞式队列: * 1.满足线程安全的生产,消费的功能 * 2.生产消费达到上限下限时,需要阻塞等待 */public class MyBlo
2020-08-05 15:06:12 139
原创 wait(),notify()和notifyAll()
其实wait()方法就是使线程停止运行。方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法是用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。wait()方法只能在同步方法中或同步块中调用。如果调用wait()时,没有持有适当的锁,会抛出异常。wait()方法执行后,当前线程释放锁,线程与其它线程竞争重新获取锁notify方法就是使停止的线程继续运行。1 方法notify()也要在同步方法或同步
2020-08-05 15:03:10 253
原创 单例模式
单例模式(Singleton Pattern)定义:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式的要点有三个: -是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式是一种对象创建型模式。 单例模式又名单件模式或单态模式单例模式是所有设计模式中结构最为简单的模式,他只包含一个单例类,即单例类单例模式的目的是保证一个类仅有一个实例,并提供一一个访问它的全局访问点。单例模式包含的角色只
2020-08-05 14:08:22 93
原创 多线程的安全问题
中断线程:通过调用interrupt()方法通知中断(); 注意该方法不是真实的直接中断,而是告诉某个线程需要进行中断,具体是否要中断,由该线程自己决定();线程的真实的直接中断方法: stop() (该方法已过期弃用)中断线程:(1)线程启动以后,中断标志位 = false(2)在线程运行态中,处理线程中断,需要通过自行判断中断的标志位,来进行中断的处理逻辑。通过方法判断:Thread.currentThread().isInterrupted() / Thread.interrupted();(
2020-08-04 13:59:05 257
原创 多线程初识
当我们用cmd中的java命令运行程序时,java.exe进程启动:(1)首先,它会调用系统api分配进程的资源(进程是系统分配资源的最小单位)(2)系统级别的C语言main方法会启动一个主线程(系统级别)(每个进程至少有一个线程存在,即主线程(C语言的主线程,他一旦退出,其他所有的线程都要退出)(3)主线程会调用 initialize_JVM(C语言main方法中),initialize_JVM会初始化java虚拟机参数。然后create_VM:根据初始化参数创建java虚拟机。启动jvm内部的
2020-08-03 22:46:59 75
原创 右键个性化没有关联的问题
今天打开电脑右键个性化的时候突然提示我没有与之关联的应用,如下图:解决方式很简单:Win+R,输入regedit,定位到HKEY_CURRENT_USER\Software\Classes\ 找到列表中的ms-settings 将其删除即可!
2020-05-18 09:05:48 2524
原创 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,我用的方法就很low了,直接用插入排序给他升序排序,然后输出前面k个数。代码如下:import java.util.ArrayList;public class Solution { public ArrayList<Integer> GetLeast...
2020-02-12 13:05:39 193
原创 读入一个字符串str,输出字符串str中的连续最长的数字串
题目:读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789思路很简单,遍历一遍,把数字和字符区分开,如果是数字就加在字符串后边,如果不是就在后边加个空格,完成之后再把该...
2020-02-12 12:55:47 809
原创 密码验证合格程序
今天写 密码验证合格程序,题目如下:密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度超2的子串重复源码如下:import java.util.Scanner;public class Main{ public static boolean checkLength(String password){ if(pass...
2019-12-07 22:10:02 303
原创 顺序表
package com.company;import java.util.Arrays;//建立顺序表public class SeqList { private int array[]; private int size;//构造方法 public SeqList(){ array = new int[11]; size = 0; ...
2019-06-11 20:17:29 566
原创 按奇偶排序及杨氏矩阵
1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。void swap(int* num1, int* num2) { int tmp = 0; tmp = *num1; *num1 = *num2; *num2 = tmp;}void Arr(int ch[],i...
2019-04-21 22:08:20 168
原创 位操作
1.编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2...
2019-04-18 22:27:15 85
原创 扫雷游戏
扫雷游戏:1.首先必须要创建并初始化地图:用show_map 表示翻开(‘0’)与未翻开(’*’)用mine_map 表示是雷(1)与不是雷(0)在mine_map 中生成10个随机的地雷2.打印地图(show_map):mine_map 是显示是雷和不是雷的地图,不可向用户展示,否则游戏就无法进行了;3.用户通过输入坐标翻开地图判断是否踩雷,如果是则游戏结束,如果不是,则应该判断...
2019-04-10 22:39:38 296
原创 递归计算
1.递归和非递归分别实现求第n个斐波那契数。//用递归求斐波那锲数int fib(int num) { if (num <= 2) { return 1; } else return fib(num - 1) + fib(num - 2);}//用非递归求斐波那锲数int fibona(int num) { int first = 1; int second = ...
2019-04-09 20:33:11 654
原创 三子棋游戏
三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。首先,我们设立框架如下:1.构建并初始化棋盘;2.打印棋盘;3.玩家落子;4.检测游戏是否结束;5.电脑落子;6.检测游戏是否结束;并将这六项放入循环里;具体代码如下:#define _CRT_SECURE_NO_WARNI...
2019-04-07 18:30:32 165
原创 text06
1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出99口诀表,输入12,输出1212的乘法口诀表。int i = 1;int j = 1;int form(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { printf("%d*%d=%d\t", i,...
2019-04-04 17:46:03 73
原创 text05
1.写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找).int fand() {int num = 0;int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };printf(“请输入需要查找的数:”);scanf("%d", &num); int left = 0; int right = sizeof(arr) / ...
2019-03-29 00:00:04 85
原创 练习1.2
写了一个猜数字的小游戏,虽然写之前老师讲过了一遍,但是我还是想了好久,琢磨琢磨,弄了一下午,还很勉强.代码如下:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>int menu() { printf("---------------...
2019-03-25 16:57:45 117
原创 练习1.1
一个拉窗帘的小练习,见笑了,不过我很满意,感觉起到了渐变的效果.渐变的语句为:welcome to the world !#include<stdio.h>#include<stdlib.h>#include<string.h>#include<Windows.h>int main() { char str1 [] = "welcome...
2019-03-25 16:50:40 135
空空如也
@PreUpdate在 select 语句执行前触发的异常
2022-11-01
有了解 spring security oauth2 的吗
2022-08-04
spring security 需要认证的问题
2022-07-26
在项目中引入 spring-security 依赖后 登录接口变成弹框登录如何解决
2022-07-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人