自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 使用百度人脸识别实现人脸识别后端逻辑

百度人脸识别APIhttps://ai.baidu.com/ai-doc/FACE/yk37c1u4t获取access_token由于百度API的access_token会定期更新,所以每次请求时就重新获取一个tokenpackage com.example.emoswx.baiduFaceCheck;import org.json.JSONObject;import org.springframework.stereotype.Component;import java.io.Buffer

2022-05-02 11:52:00 1119

原创 简化异常返回消息

/** * 精简返回给客户端的异常 * 后端数据验证异常 * 未授权异常HttpStatus.SC_UNAUTHORIZED(Filter中token验证失败等设置的未授权异常) * EmosException(自定义异常) * 普通异常 */@Slf4j //日志模块@RestControllerAdvice //@RestControllerAdvice都是对Controller进行增强的,可以全局捕获spring mvc抛的异常。public class ExceptionAdvic

2022-03-12 17:46:00 280

原创 Shiro+JWT实现认证和授权

流程:1、将token(JWT生成和验证)封装成认证对象(使用ThreadLocal保证线程安全)2、定义认证与授权的实现方法(Realm类)3、拦截HTTP请求,验证Token(Filter)4、把设置应用到Shiro框架(创建ShiroConfig回传四个对象)5、 回传token:使用AOP拦截Web对象返回方法,从ThreadLocalToken中获取token写入返回对象,然后返回。代码实现JWT加密和验证token/** * JWT对userId进行加密生成token

2022-03-12 12:58:52 910

原创 SpringBoot防止跨站脚本攻击Xss(覆盖Http请求,对http请求进行转义)

流程:1、导入依赖hutool(提供一些Utile工具类)2、定义请求包装类继承HttpServletRequestWrapper对数据进行转义3、创建过滤器,将请求拦截并传入自定义包装类中4、主类添加@ServletComponentScan扫描过滤器(@WebFilter)1、hutool提供一写工具类HtmlUtil、StrUtil <dependency> <groupId>cn.hutool</groupId>

2022-03-07 21:32:17 873

原创 封装web返回对象

/** * 封装web返回对象 * 统一数据返回格式:业务状态码、业务消息 * 虽然SpringMVC的Controller可以自动把对象转换成JSON返回给客户端,但是我们需要制定一个统一的标准, * 保证所有Controller返回的数据格式一致。最简便的办法就是定义封装类,来统一封装返回给客户端的数据。*/public class R extends HashMap<String,Object> { public R(){ put("code", Htt

2022-03-06 22:37:11 252 1

原创 剑指offer26 二叉线索转换为循环双向链表

/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public Node() {} public Node(int _val) { val = _val; } public Node(int _val,Node _left,Node _right) { val = _val;.

2022-01-25 23:35:13 208

原创 BFS二叉树层序遍历

class Solution { public int[] levelOrder(TreeNode root) { //排除特殊情况 if(root==null) return new int[0]; //队列保存状态 Queue<TreeNode> queue=new LinkedList<TreeNode>(); List<.

2022-01-04 22:14:06 174

原创 背景图片上传

controller //上传背景图片 @PostMapping("/upload") public String upload(Integer id, @RequestParam("file") MultipartFile uploadFile,HttpServletRequest request){ //上传文件位置 String path=request.getSession().getServletContext().getRealPath("

2021-03-29 13:37:04 150

原创 创建定时任务

目标:对调查问卷的状态进行定时检测//定时任务,检测问卷状态@EnableSchedulingpublic class ScheduleTask { @Autowired private SurveyService surveyService; @Scheduled(cron = "*/10 * * * * ?") public void state(){ System.out.println("执行任务"); surveyServic

2021-03-29 13:25:52 83

原创 spring整合mybatis

<!--整合mybatis--> <!--加载外部properties文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driver...

2021-03-29 13:20:51 70

原创 数据库事务

<!--数据库事务--> <!--平台事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--事务增强...

2021-03-29 13:19:45 73

原创 ssm操作日志管理

技术不到位考虑到的比较少。使用自定义注解对函数进行操作类型设定//自定义注解@Target(ElementType.METHOD) //方法注解@Retention(RetentionPolicy.RUNTIME) //设置生存周期,运行时可见public @interface LogPointCutAnno { String operateType() default "";//标记当前操作类型}使用环绕通知对日志信息进行获取保存@Aspect@Componentpub

2021-03-29 13:04:02 988

原创 07-重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu

2021-03-20 18:52:15 82

原创 剑指offer04-二叉搜索树

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 ta

2021-03-19 16:12:31 92

原创 java拷贝(clone)

java使用赋值符号(=)给对象赋值时(A a=b;),并不是将b对象的值给赋值给a,而是a对象指向b对象的引用地址,两者同时引用一个地址,所以任何一个对象属性值的改变将会引起另一个对象属性值的改变,基本类型使用赋值是值拷贝。public class test { public static void main(String[] args) throws CloneNotSupportedException { Admin admin=new Admin(); Ad

2021-03-16 19:20:14 160

原创 Mybatis获取插入数据自增长字段值

<insert id="add" keyProperty="id" useGeneratedKeys="true" parameterType="com.example.domain.Question" > insert into tb_question (id,survey_id ,title,remark,type,required,check_style,order_style ,show_style,test,score,orderby,creator,cre..

2021-03-14 20:28:01 395

原创 C语言TCP网络编程--实现cp操作

使用TCP网络编程实现cp操作:#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <fcntl.h>int main(){ int ret=-1; int sockfd=-1; int connfd=-1; //创建套接字 sockfd=soc

2021-01-09 21:43:21 460

原创 设计模式之单例模式(java)

单列模式意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁何时使用:当您想控制实例数目,节省系统资源的时候关键代码:构造函数是私有的

2020-12-04 15:57:13 111

原创 爬虫-最好大学

import bs4import requestsfrom bs4 import BeautifulSoupdef getHTMLTEXT(URL): #将URL信息爬取出来 try: r = requests.get(URL,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except:

2020-07-21 17:54:46 127

原创 记录-爬虫

爬取考古文物信息和图片代码import osimport bs4import requestsimport refrom bs4 import BeautifulSoup#文本信息保存在test.txtfrom lxml import htmldef look_img(i): # 抓取图片地址 # 抓取img标签 img_src = soup.findAll("img") n = 1 url_img = [] # 保存需要爬取图片的地址

2020-07-21 17:08:50 161

原创 python爬取网站图片url并保存在本地文件夹

import osimport requestsfrom bs4 import BeautifulSoupimport urllib.requestdef look_img(soup,i): # 抓取图片地址 # 抓取img标签 img_src = soup.findAll("img") n = 1 url_img = [] # 保存需要爬取图片的地址 for img in img_src: n = n + 1

2020-07-21 17:07:36 2696

原创 爬虫--requests、BeautifulSoup入门

1、通过关键字进行搜索import requests#百度关键词搜索https://www.baidu.com/s?wd=keywordkv = {'wd':'Python'}header = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'} #添加Accept跳过百度验证

2020-06-28 17:17:40 169

原创 Python组合数据类型

1、列表通常使用[ ]将数据 包裹起来创建一个列表。这种 创建方式适用于对于列表中元素个数及其数值已知时。列表中的元素的数据类型可以各不相同,列表中的元素也可以是列表1.1 列表的遍历list1=["string",23,[1,10]]#1for L in list1: print(L)#2for i in range(len(list1)): print(list1[i])1.2 替换列表和字符串不同,列表是可变的,可以在列表中指定下标的值对元素进行修改1.3 增

2020-06-23 18:32:09 3776 1

原创 Python编码风格

下面是应该遵守主要的规则: 使用space(空格)来表示缩进,而不要用tab(制表符)表示。和语法相关的每一层缩进都用4个空格来表示。每行的字符数不应超过79。 采用ASCII或UTF-8编码文件。对于占据多行的长表达式来说,除了首行之外的其余各行,它都应该在通常的缩进级别之上再加4个空格。文件中的函数与类之间应该用两个空行隔开。不要在行尾加分号,也不要用分号将两条命令放在同一行。在同一个类中,各方法之间应该用一个空行隔开。在使用下标来获取列表元素、调用函数或给..

2020-06-22 11:56:52 181

原创 数据类型

1、浮点类型1.1浮点数int()函数可以将浮点数转换成整数,返回整数部分;round()函数将小数四舍五入;math.floor()函数向下取整,math.ceil()函数向上取整;浮点数的小数表示(分子和分母形式)可是使用float.as_integer_ratio(x)方法获取;使用float.hex()方法,可以将浮点数以十六进制形式表示为字符串,相反的装换可以使用float.fromhex()实现。1.2复数复数由实数部分和虚数部分组成,一般形式为x+yj。复数

2020-06-22 11:50:27 215

原创 bfs-密码锁

现在一个紧急的任务是打开一个密码锁。密码由四位数字组成,每个数字从1到9进行编号。每次可以对任何一位数字加1或减1.当将9加1时,数字变为1,当1减1时,数字变为9.还可以交换相邻的数字,每一个行动记做一步。求最少步骤打开密码锁。输入格式:第一行输入四位数字,表示密码锁的初始状态第二行输入四位数字,表示开锁的密码。输出格式:输出一个整数,即最小步骤数。样例输入:12342144样...

2020-04-28 23:40:25 420

原创 bfs---蒜头君回家

解题思路:使用两次bfs,第一计算从起点到各点的最短距离,第二次计算终点到各点的距离,最后算出S到P+P到T的最短距离:#include<algorithm>#include<cstring>#include<iostream>#include<queue>using namespace std;typedef pair<int,...

2020-04-28 00:27:58 109

原创 数独

代码:#include<iostream>using namespace std;int num[10][10];bool visx[10][10],visy[10][10],vis[10][10];bool flag=false;void print(){ for(int i=0;i<9;i++) { for(int j=0;j<9;j++)...

2020-04-24 00:14:08 175

原创 2n皇后

代码:先算黑皇后,再算白皇后#include<iostream>using namespace std;int n,num[10][10],ans=0;bool vis[2][10],col1[2][20],col2[2][20];bool check(int a,int b,int k){ if(vis[k][b]||num[a][b]==0||col1[k]...

2020-04-24 00:11:37 151

原创 安卓适配--FileProvider

官方文档说:对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进...

2020-04-14 23:48:51 263

原创 无脑笔记--内容提供器02

创建内容提供器确定是否需要内容提供程序。如果您想提供以下一项或多项功能,则需要构建内容提供程序:1、您想为其他应用提供复杂的数据或文件2、您想允许用户将复杂的数据从您的应用复制到其他应用中3、您想使用搜索框架提供自定义搜索建议。4、您希望向微件公开应用数据。5、您希望实现 AbstractThreadedSyncAdapter、CursorAdapter 或 CursorLoader ...

2020-04-09 15:46:41 267

原创 无脑笔记--内容提供器01

内容提供器一、概述:二、访问提供程序一、概述:内容提供程序有助于应用管理其自身和其他应用所存储数据的访问,并提供与其他应用共享数据的方法。它们会封装数据,并提供用于定义数据安全性的机制。内容提供程序是一种标准接口,可将一个进程中的数据与另一个进程中运行的代码进行连。实现内容提供程序大有好处。最重要的是,通过配置内容提供程序,您可以使其他应用安全地访问和修改您的应用数据。二、访问提供程序对...

2020-04-07 18:22:45 124

原创 安卓—请求应用权限

在android6.0以后,我们可以直接安装应用,当app需要我们授予不恰当的权限的时候,我们可以予以拒绝。当然你也可以在设置界面对每个app的权限进行查看,以及对单个权限进行授权或者解除授权。新的权限机制更好的保护了用户的隐私,Google将权限分为两类,一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dange...

2020-04-04 22:31:41 2054

原创 解决android studio中使用monitor工具无法打开data文件夹问题

这里写目录标题关于/system/bin/sh: su: not found的解决办法无法打开data文件夹的原因是权限不够,需要设置权限关于/system/bin/sh: su: not found的解决办法D:\Sdk\platform-tools>adb shellgeneric_x86:/ $ su/system/bin/sh: su: not found原因是Andr...

2020-03-31 01:03:03 1212

原创 广播实践--强制下线

这里写目录标题1、先创建一个ActivityCollector类用于管理所有的活动2、创建BaseActivity类作为所有活动的父类3、编写登录界面的布局和活动代码4、发送广播代码5、动态注册广播接收器6、效果图强制下线功能需要先关闭所有活动,然后回到登录界面。1、先创建一个ActivityCollector类用于管理所有的活动//强制下线功能需要关闭所有活动,然后回到登录界面。创建Act...

2020-03-29 20:37:43 144

原创 解决android:background被拉伸问题

在xml设置android:background属性时,将你的background以XML Bitmap的形式定义,如下:<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="bo...

2020-03-29 19:25:13 923

原创 广播机制

Android中的广播机制主要可以分为两种类型:标准广播和有序广播标准广播是一种完全异步执行的广播,在广播放出 之后 ,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序。这种广播效率会很高,但是不能被截断;有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。...

2020-03-29 16:53:24 353

原创 android studio中的@Override

原文链接 @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:1、可以当注释用,方便阅读2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)  example:在重写父类的onCreate时,在方法前面...

2020-03-27 16:53:58 3324

原创 简单使用RecyclerView

这里写目录标题一、将RecyclerView添加到布局二、自定义类及子项布局三、自定义适配器以及点击事件四、使用RecyclerView五、修改布局六、实现瀑布流布局RecyclerView官方参考文档RecyclerView能够灵活实现大数据集的展示,视图的复用管理比ListView更好,能够显示列表、网格、瀑布流等形式,且不同的ViewHolder能够实现item多元化的功能。但是使用起...

2020-03-27 16:31:18 161

原创 RecyclerView编写聊天页面

RecyclerView编写聊天页面一、编写主界面二、自定义实体类三、编写RecyclerView子项布局四、创建RecyclerView的适配器类五、编写活动代码六、效果图一、编写主界面<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sche...

2020-03-26 21:48:22 418 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除