SpringBoot-自定义注解切面AOP
简介在做博客项目的时候需要记录用户操作日志,这时候需要自定义注解与切面来实现。
步骤1、依赖需要引入相应依赖,这里肯定时能和数据库关联了(简单的来说就是能够在浏览器上进行增删改查)。
12345<!-- aop的依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>
2、自定义日志注解定义一个方法级别的@Log注解,用于标注需要监控的方法:
12345678910111213import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * ...
一个基础的SpringBoot 项目该包含哪些东西?
前言建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一些重复的工作,比如说拷贝一下常用的工具类,通用代码等等。所以就可以做一个基础的项目方便使用,在经历新项目的时候,直接在基础项目上进行简单配置就可以开发业务代码了。
基础项目该包含哪些东西
Swagger 在线接口文档。
CodeGenerator 代码生成器。
统一返回。
通用的分页对象。
常用工具类。
全局异常拦截。
错误枚举。
自定义异常。
多环境配置文件。
Maven 多环境配置。
日志配置。
JenkinsFile。
Swagger写接口文档通常是一件比较头疼的事情,然而 swagger 就用是用来解决这个问题的。可以在线生成接口文档,并且可以在页面上进行测试。可以非常清楚的显示,请求数据已经响应数据。当然这一切都需要在代码中进行配置。「注意的点:接口文档只能在测试 / 开发环境开启,其他环境请关闭。」
常用的 Swagger 注解
@Api用于Controller
@ApiOperation用于Controller内的方法。
@ApiResponses用于标识接口返回数据的类 ...
Redis: 数据结构与模板类
1. Redis 有多少种数据结构?主要有 5 种 Redis 对象,分别是 String、List、Hash、Set、Zset,这里的对象都指的是 Value 部分。底层实现依托于 sds、ziplist、skiplist、dict 等更基础的数据结构。
2. String(字符串)2.1 简单介绍字符串类型是 Redis 最基础的数据结构,字符串类型可以是JSON、XML甚至是二进制的图片等数据,但是最大值不能超过512MB。在 Redis 中,String 是可以修改的,称为动态字符串(Simple Dynamic String简称SDS),说是字符串但它的内部结构更像是一个ArrayList,内部维护着一个字节数组,并且在其内部预分配了一定的空间,以减少内存的频繁分配。Redis的内存分配机制是这样:
当字符串的长度小于 1MB 时,每次扩容都是加倍现有的空间。
如果字符串长度超过 1MB 时,每次扩容时只会扩展 1MB 的空间。
这样既保证了内存空间够用,还不至于造成内存的浪费,字符串最大长度为**512MB**。分析一下 SDS 的数据结构:
123456struc ...
还分不清 Cookie、Session、Token、JWT?
背景早期互联网只是用来访问查看,不需要关心谁在访问查看。HTTP 是一种无状态的协议,每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,为了标示用户,就出现了 Cookie,而 Cookie、Token、JWT 都是用来标示用户的。
什么是认证(Authentication)
通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)
互联网中的认证:
用户名密码登录
邮箱发送登录链接
手机号接收验证码
只要你能收到邮箱/验证码,就默认你是账号的主人
什么是授权(Authorization)
用户授予第三方应用访问该用户某些资源的权限
你在安装手机应用的时候,APP 会询问是否允许授予权限(访问相册、地理位置等权限)
你在访问微信小程序时,当登录时,小程序会询问是否允许授予权限(获取昵称、头像、地区、性别等个人信息)
实现授权的方式有:cookie、session、token、OAuth
什么是凭证(Credentials)
实现认证和授权的前提是需要一种媒介(证书) 来标 ...
Hexo+travis+语雀 自动部署博客
修改自:https://www.yuque.com/u46795/blog/dlloc7yuque-hexo:https://github.com/x-cold/yuque-hexo
一、Hexo+Github 的痛点1.为啥要用 hexo+github?作为一个程序猿,博客肯定是必须要有的拉,github 也是必须要混的拉~所以:
hexo + github = 高大上
2.蛋疼的写作体验使用 hexo,会面临如下问题:
博客源码怎么管理?
图片存在哪?
如何编写 markdown 文件?
相信很多人都在使用本地编辑器来写博客,那体验,真心蛋疼,比如说 vscode,可视化插件一般般,图片还不能复制黏贴,想插入个图片还要先保存成文件放在本地,然后再引用,啥?你说七牛云存储?哪有复制黏贴爽呀~当然,博客源码可以使用 travis-ci 来做持续集成,想写博客或者换个电脑,clone 一下源仓库,写完 push 一下,就可以不用管了。but,比起独立站点的博客,如 wordpress,还是觉得写作体验有点不爽。
3. 脑洞大开:偶然间,朋友安利了语雀这个文档写作平台,觉得这 ...
抢学术章的的辛酸泪
前言
2021-10-10更新,增加对人工认证的处理,重构代码
由于问卷星更新了,里面加了阿里云智能验证的接口,所以之前的方法使用 selnium 不行了。
前端通过简单的判断就可以知道是不是 webdriver,解决的办法可以使用中间代理过滤掉 webdrvier 中的指纹信息,太过繁琐且不太好移植
😄 因此使用puppeteer的V2.0来了!
项目地址: https://github.com/DongZhouGu/wjx-academic
使用说明新建python工程建议使用 IDE Pycharm , 工程目录如下
安装环境Requirements
Python 3.5+
time
pyyaml
pypuppter(https://github.com/miyakogi/pyppeteer)
1python3 -m pip install pyppeteer -i https://pypi.tuna.tsinghua.edu.cn/simple
也可以直接在 Pycharm 中安装此包
安装包完成后,接着,修改下图所示的
的 pyppeteer/_init_.py ...
注意力机制-Attention
注意力机制-Attention今天从四个方面来介绍注意力机制。首先是我们为什么要引入注意力机制,深度学习对于特征提取近年来取得了巨大的成功,但是他还有什么不足呢? 其次,我将从Encoder-Decoder框架(一种深度学习领域的研究模式,应用场景异常广泛)来介绍注意力机制;接着,总结一下目前注意力机制研究的的分类与应用;最后,切入到计算机视觉CV领域来介绍注意力机制。
为什么要引入注意力机制?我们知道深度学习近年来在计算机视觉,自然语言处理等领域取得了巨大的成功,使用多层的深度神经网络逐层进行特征提取,获取更加高级的语义特征。但这样,伴随着两个缺陷
• 计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈
• 优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。卷积神经网络中,虽然能通过堆叠卷积层来获得更大的感受野,但不断地池化也会丢失长距离依赖的语义信息。
因此,注意力机制的出现就是为了 ...
论文-PD-Net(2020)
Polysemy Deciphering Network for Human-Object Interaction Detection
概述:
关键词:
源码: https://github.com/MuchHair/PD-Net
主要贡献现有模型假设同一动词在不同的 HOI 范畴中具有相似的视觉特征,忽略了动词的不同语义(在不同的场景下,相同的动作的视觉特征有很大差别,如下图所示,对于不同的物体,动词可以呈现实质上不同的语义和视觉特征。这种语义差异可能非常大,导致同一类型视觉特征的重要性随着感兴趣物体的变化而发生巨大变化)。本文提出一种多义词解码网络 PDNet,通过 3 种方式对动词的视觉多义进行解码以进行 HOI 检测。首先,PDNet 利用语言先验信息增强人类的姿态和空间特征进行 HOI 检测,使动词分类器能够接收到减少同一动词类内变异的语言提示。其次,提出了一种新的多义注意模块(PAM),该模块可以指导 PDNet 根据语言优先级对更重要的特征类型进行决策。最后,将上述两种策略应用于动词识别的两种分类,即 SH-VCM 和 SP-VCM(object-shared an ...
Mask R-CNN 演变笔记
前言目标检测分为两种方法:一阶段法和两阶段法。一阶段法的代表算法为YOLO,SSD,具有速度快的优势。所谓两阶段法就是先找出图像中的region proposal ,再分别对每个proposal进行回归和分类,它的优势则是精确度高,Mask R-CNN则是这一方法,从一开始的R-CNN到Fast R-CNN再到Faster R-CNN,FPN,到最后的Mask R-CNN,演进过程中的一些方法依旧用于其他的机器视觉任务中,所以这个路线中的网络架构和方法非常值得我们去学习。
Sliding windows
这是目标检测的最早期的算法——滑动窗口法,很好理解,就是固定一个窗口(不同的size 和长宽比)从左向右,从上到下的去滑动,对每个窗口的图像进行目标识别与分类。这种方法可想而知,非常耗时。
R-CNN2014年的时候随着深度学习的兴起,R-CNN横空出世了。与滑动窗口法不同,这里使用selective search 这种 region proposal method 来提取图像的RoIs (感兴趣区域)。这里我们可以看下这种方法的思想,相似的像素、纹理或者是灰度等会被归为一个区域,并得 ...
Leetcode总结—二叉树的构造
二叉树是面试中常见的题目类型,这里,针对leetcode前200道题中的二叉树相关问题进行总结与思考,力求烂熟于心,能根据题目名回忆起题目的具体描述,进而用简洁的语言描述出算法的核心。具体的题目答案可打开leetcode查看历史提交记录。
二叉树的遍历是上一篇的内容,可先回顾;本篇主要整理二叉树的构造相关题目和思路。
二叉树的构造(binary-tree-traversal)
给定二叉树特定遍历下的结果,构造出原本的二叉树。
解题关键在于定位出根节点,划分出左右子树,然后 递归 构建左右子树
1.从前序与中序遍历序列构造二叉树该题是leetcode105题,medium难度,一句话题干描述:从前序与中序遍历序列构造二叉树。
解决方案1(复杂度高): 先序遍历的顺序是根节点,左子树,右子树。中序遍历的顺序是左子树,根节点,右子树。
所以我们只需要根据先序遍历得到根节点,然后在中序遍历中找到根节点的位置,它的左边就是左子树的节点,右边就是右子树的节点。生成左子树和右子树就可以递归的进行了。
12345678910111213141516171819202122public TreeNo ...
iCAN (BMVC2018)
文献-iCAN: Instance-Centric Attention Network for Human-Object Interaction Detection
概述:人或物体实例的外观包含上下文线索,利用这些信息可以注意到图像中可以促进交互预测的部分。为了利用这些线索,研究者提出了一个以实例为中心的注意力模块,学习根据每个实例的外观动态突出显示图像中的区域。这种基于注意力的网络允许研究者选择性地聚合与识别 HOI相关的特征。在InteractNet上做的改进,达到了 V-COCO 45.3%。
关键词:注意力机制
论文地址:https://www.yuque.com/ugdongzhou/io8kmc/1661063
源码: https://github.com/vt-vl-lab/iCAN 和DRG2020同属vt-vl-lab实验室
网络结构
主要贡献
引入了一个以实例为中心的注意力模块,它允许网络动态突出信息区域以改进 HOI 检测。
在由h或者o计算a的分数时,不止用它们本身的特征,还concat了context特征,contex特征则是根据intance产生 ...
实验室gpu管理
🙂在线阅读地址:项目地址:https://github.com/DongZhouGu/shu-lxd-gpu
🙂在线阅读地址:https://dongzhougu.github.io/shu-lxd-gpu/
GPU 容器使用说明
容器目前只在新到的服务器上(2* 2080Ti)实施
但可以访问 👉显卡监控界面 看到实验室所有显卡的使用情况
使用LXD创建和管理容器,多位同学可以同时使用校园网远程访问服务器;
操作简单,你可以像是用自己的电脑一样使用容器。
请根据角色,阅读以下具体的使用文档👉For 用户👉For 管理员👉显卡监控界面
监控界面的登入用户名与密码,见下方文档
https://shimo.im/docs/yVpDgvJKqPwtvpqr
document.querySelectorAll('.github-emoji')
.forEach(el => {
if (!el.dataset.src) { return; }
const img = document.crea ...