Framework

你真的确定Spring AOP的执行顺序吗

≯℡__Kan透↙ 提交于 2020-10-28 15:21:14
关注公众号: 后端技术漫谈 ,技术之路不迷路~ 前言 忙,是我这个月的主旋律,也是我频繁鸽文章的借口————蛮三刀把刀 公司这两个月启动了全新的项目,项目排期满满当当,不过该学习还是要学习。这不,给公司搭项目的时候,。 本文内容重点: 问题描述 Spring AOP执行顺序 探究顺序错误的真相 代码验证 结论 本文阅读大概需要:3分钟 码字不易,求个关注,欢迎关注我的个人原创公众号:后端技术漫谈(二维码见文章底部) 问题描述 公司新项目需要搭建一个新的前后分离HTTP服务,我选择了目前比较熟悉的SpringBoot Web来快速搭建一个可用的系统。 鲁迅说过, 不要随便升级已经稳定使用的版本 。我偏不信这个邪,仗着自己用了这么久Spring,怎么能不冲呢。不说了,直接引入了最新的SprinBoot 2.3.4.RELEASE版本,开始给项目搭架子。 起初,大多数的组件引入都一切顺利,本以为就要大功告成了,没想到在搭建 日志切面 时栽了跟头。 作为一个接口服务,为了方便查询接口调用情况和定位问题,一般都会将请求日志打印出来,而Spring的AOP作为切面支持,完美的切合了日志记录的需求。 之前的项目中,运行正确的切面日志记录效果如下图: 可以看到图内的一次方法调用,会输出请求url,出入参,以及请求IP等等,之前为了好看,还加入了分割线。 我把这个实现类放入新项目中

三问Spring事务:解决什么问题?如何解决?存在什么问题?

我与影子孤独终老i 提交于 2020-10-28 15:17:21
1. 解决什么问题 让我们先从事务说起,“什么是事务?我们为什么需要事务?”。事务是一组无法被分割的操作,要么所有操作全部成功,要么全部失败。我们在开发中需要通过事务将一些操作组成一个单元,来保证程序逻辑上的正确性,例如全部插入成功,或者回滚,一条都不插入。作为程序员的我们,对于事务管理,所需要做的便是进行事务的界定,即通过类似begin transaction和end transaction的操作来界定事务的开始和结束。 下面是一个基本的JDBC事务管理代码: // 开启数据库连接 Connection con = openConnection(); try { // 关闭自动提交 con.setAutoCommit(false); // 业务处理 // ... // 提交事务 con.commit(); } catch (SQLException | MyException e) { // 捕获异常,回滚事务 try { con.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } finally { // 关闭连接 try { con.setAutoCommit(true); con.close(); } catch (SQLException e) { e.printStackTrace(); }

rest framework错误笔记——身份验证和权限

南笙酒味 提交于 2020-10-28 15:10:25
按照官网教程(http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/)走到最后一步验证时,命令窗口执行http POST http://127.0.0.1:8000/snippets/ code="print 123"后 { " detail " : " Authentication credentials were not provided. " } 这条结果是因为#视图类中的写法(1): authentication_classes = ( BasicAuthentication, ) permission_classes = ( IsAuthenticatedOrReadOnly, ) 若根据教程的写法(2) permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,) 则返回如下结果: { " detail " : " You do not have permission to perform this action. " } 根据版本不同视图类中的代码不同则提示不同,虽然无论哪种结果都代表没有权限,但还是建议用写法(1),因为写法(2)会导致执行http -a admin

干货 | 携程Android 10适配踩坑指南

强颜欢笑 提交于 2020-10-28 11:47:39
作者简介 曙光,携程资深软件工程师,负责市场营销相关研发及管理工作。 2019 年 9 月 3 日,Google 发布了 Android 10 正式版。Android 10 聚焦移动创新、安全隐私和数字健康三大主题,全面打造最佳用户体验。 背景 目前携程旅行线上最新版本已适配到Android 10(API =29),由于从API=26升级到API=29,跨度较大,我们提前对相关适配进行了调研,希望其中一些经验能对其他开发者有一定的帮助。 在Android 10 版本中,官方的改动较大,相应的开发者适配成本还是很高的。基于前期调研,我们主要基于以下几方面进行Android 10的适配: Android X 分区存储 设备ID 明文HTTP限制 一、AndroidX AndroidX 对原始 Android Support库进行了重大改进,后者现在已不再维护。AndroidX 软件包完全取代了支持库,不仅提供同等的功能,而且提供了新的库。 1.1 什么是AndroidX Android系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功。随着Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此这就出现了一个向下兼容的问题。 于是Android团队推出了一个鼎鼎大名的Android Support Library

Spring 核心组件原理解析

此生再无相见时 提交于 2020-10-28 10:18:33
尽管希腊哲学家赫拉克利特(Heraclitus)并不作为一名软件开发人员而闻名,但他似乎深谙此道。他的一句话经常被引用:“唯一不变的就是变化”,这句话抓住了软件开发的真谛。 我们现在开发应用的方式和1年前、5年前、10年前都是不同的,更别提15年前了,当时RodJohnson的图书 Expert One-on-One J2EE Design and Development 介绍了Spring框架的初始形态。当时,最常见的应用形式是基于浏览器的Web应用,后端由关系型数据库作为支撑。尽管这种形式的开发依然有它的价值,Spring也为这种应用提供了良好的支持,但是我们现在感兴趣的还包括如何开发面向云的由微服务组成的应用,这些应用会将数据保存到各种类型的数据库中。 另外一个崭新的关注点是反应式编程,它致力于通过非阻塞操作提供更好的扩展性并提升性能。随着软件开发的发展,Spring框架也在不断变化,以解决现代应用开发中的问题,其中就包括微服务和反应式编程。Spring还通过引入Spring Boot简化自己的开发模型。 Spring 的核心 任何实际的应用程序都是由很多组件组成的,每个组件负责整个应用功能的一部分,这些组件需要与其他的应用元素进行协调以完成自己的任务。当应用程序运行时,需要以某种方式创建并引入这些组件。 Spring Framework 总共有十几个组件

C#接口。 隐式实现与显式实现

女生的网名这么多〃 提交于 2020-10-28 09:06:32
问题: What are the differences in implementing interfaces implicitly and explicitly in C#? 在C#中 隐式 和 显式 实现接口有何区别? When should you use implicit and when should you use explicit? 什么时候应该使用隐式,什么时候应该使用显式? Are there any pros and/or cons to one or the other? 彼此之间是否有优点和/或缺点? Microsoft's official guidelines (from first edition Framework Design Guidelines ) states that using explicit implementations are not recommended , since it gives the code unexpected behaviour. Microsoft的官方指南(来自第一版 Framework Design Guidelines )指出, 不建议使用显式实现 ,因为它会给代码带来意想不到的行为。 I think this guideline is very valid in a pre-IoC-time ,

四、kali之msf渗透测试

☆樱花仙子☆ 提交于 2020-10-28 00:23:07
kali之msf渗透测试 1.metasploit介绍、安装、更新、目录结构 1.metasploit介绍 Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击工具。Metasploit就是一个漏洞框架。 2.MSF安装要求 硬盘空间: 至少10G,个人建议50G;由于分区时用FAT32类型不支持大文件运行,所以分区建议使用NTFS、EXT3类型分区, 内存: 建议2G及以上 处理器: 处理器要求较低,市面上电脑均可满足要求,处理速度大于500HZ即可 网络设备 虚拟机中桥接即可,也可以自己配置IP,无线网络需要外接无线网卡 软件: KALI 和其他测试系统 虚拟机: 必备:需安装kali和各种测试系统 Kali: 下载地址:http://www.kali.org/downloads/ 升级指令:“apt-get update && apt-get upgrade” Metasploitable系统: 它包含Linux系统中大大小小的漏洞,很适合做测试系统。 下载地址:https://sourceforge.net/projects/metasploitable/files

Win7旗舰版下aspnet state服务6/11

孤街醉人 提交于 2020-10-26 23:15:51
新用WIN7旗舰版系统,开始还有aspnet state服务,安装了vs2005后不见了 重新运行C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i(会出错) 或C:\Windows\Microsoft.NET\Framework\v4.0.30319 下的 aspnet_regiis.exe -i作注册都不出现 后来尝试C:\Windows\Microsoft.NET\Framework 64 \v2.0.50727\aspnet_regiis.exe -u 再C:\Windows\Microsoft.NET\Framework 64 \v2.0.50727\aspnet_regiis.exe -i 后服务正常出现 来源: oschina 链接: https://my.oschina.net/u/4404541/blog/4308818

Android-Gnss/GPS HAL层实现直通式修改为绑定式示例

試著忘記壹切 提交于 2020-10-25 20:31:09
Android-Gnss/GPS HAL层实现直通式修改为绑定式示例 为了能够让Android O之前的版本升级到Android O,Android设计了Passthrough模式,经过转换,可以方便的使用已经存在代码,不需要重新编写相关的HAL。 HIDL分为两种模式:Passthrough:翻译成直通式HAL。Binderized:翻译成绑定式HAL 一个编译成so库,供System分区的进程和应用直接加载调用,两者在同一个进程中,这种叫直通式 HAL(passthrough)模式, 另外一种是直接编译成一个daemon可运行的服务,然后System分区的进程通过HwBinder的IPC通信方式来调用,两者在各自独立的进程中,这种称为绑定式HAL(Binderized)模式。 直通式与绑定式最大的区别就是直通模式没有一个独立运行的服务进程,而绑定模式是作为一个独立运行的服务相当于Deamon进程在运行。 直通模式是将android 8.0之前的版本的module 封装起来,供System以上的服务进行调用,上层直接调用 HIDL_FETCH_XXX 来调用此接口的。 调用时都是通过 HIDL 工具生成的 getService() 来调用的, getService() --> getServiceInternal() --> getRawServiceInternal();

iOS 性能优化:优化 App 启动速度

你。 提交于 2020-10-25 12:55:58
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者:Damonwong,iOS 开发者 来源丨老司机技术周报(ID:LSJCoding) Sessions: https://developer.apple.com/videos/play/wwdc2019/423/ 苹果是一家特别注重用户体验的公司,过去几年一直在优化 App 的启动时间,特别是去年的 WWDC 2019 keynote [1] 上提到,在过去一年苹果开发团队对启动时间提升了 200% 虽然说是提升了 200%,但是有些问题还是没有说清楚,比如: 为什么优化了这么多时间? 作为开发者的我们,我们还可以做哪些针对启动速度的优化? 所以我们今天结合 WWDC2019 - 423 - Optimizing App Launch [2] 聊一下和启动相关的东西 名词解释 先介绍一些和启动相关的名词。 Mach-O Mach-O 是 iOS 系统不同运行时期可执行的文件的文件类型统称。主要分以下三类: Executable - 可执行文件,是 App 中的主要二进制文件 Dylib - 动态库,在其他平台也叫 DSO 或者 DLL Bundle - 苹果平台特有的类型,是无法被连接的 Dylib。只能在运行时通过