around

spring-boot使用AOP统一处理日志

情到浓时终转凉″ 提交于 2020-08-13 15:41:10
新的项目,把之前用到的知识点总结一下。 有时候我们需要处理一些请求日志,或者对某些方法进行一些监控,这是就可以使用AOP(比如shiro中通常会加aop配置,以使用shiro认证注解( @RequiresPermissions、@RequiresRoles、@RequiresUser、@RequiresGuest )) 1:pom.xml添加依赖: <!--引用AOP--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 2:添加工具类 注意:如果(WebControllerAop) 类不准备放在项目启动目录下,启动类组件扫描需要添加(WebControllerAop) 类所在的包路径 比如我的:@ComponentScan(basePackages="com.example.config") package com.example.config; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation

p2p打洞技术原理

廉价感情. 提交于 2020-08-13 09:22:15
什么是打洞,为什么要打洞 由于Internet的快速发展 IPV4(网际协议版本4)地址不够用,不能每个主机分到一个公网IP 所以使用NAT地址转换 一般来说都是由私网内主机主动发起连接,数据包经过NAT地址转换后送给公网上的服务器,连接建立以后可双向传送数据,NAT设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,但在一些特殊的场合需要不同私网内的主机进行互联(例如P2P软件、网络会议、视频传输等),TCP穿越NAT的问题必须解决。 nat的几种类型 现在基本使用这种,又分为对称和锥型NAT。 锥型NAT ,有完全锥型、受限制锥型、端口受限制锥型三种: a) Full Cone NAT (完全圆锥型) :从同一私网地址端口192.168.0.8:4000发至公网的所有请求都映射成同一个公网地址端口1.2.3.4:62000 ,192.168.0.8可以收到任意外部主机发到1.2.3.4:62000的数据报。 b) Address Restricted Cone NAT (地址限制圆锥型) :从同一私网地址端口192.168.0.8:4000发至公网的所有请求都映射成同一个公网地址端口1.2.3.4:62000,只有当内部主机192.168.0.8先给服务器C 6.7.8.9发送一个数据报后,192.168.0.8才能收到6.7.8.9发送到1.2.3.4

Spring AOP学习笔记01:AOP概述

此生再无相见时 提交于 2020-08-13 06:39:31
1. AOP概述   软件开发一直在寻求更加高效、更易维护甚至更易扩展的方式。为了提高开发效率,我们对开发使用的语言进行抽象,走过了从汇编时代到现在各种高级语言繁盛之时期;为了便于维护和扩展,我们对某些相同的功能进行归类并使之模块化,冲出了最初的"原始部落",走过了从过程化编程到面向对象编程(OOP)的"短暂而漫长"的历程。但不管走过的路有多长,多么坎坷,我们一直没有停止寻找更加完美、更加高效的软件开发方法,过去如此,现在亦然。   当OOP被提出来,以取代过去基于过程化编程的开发方法时,或许那个时代的人都会以为,面向对象编程和面向对象的软件开发就是我们一直追求的那颗能够搞定一切的"银弹"。但不得不承认的是,即使面向对象的软件开发模式,依然不能很好地解决软件开发中的所有问题。   软件开发的目的,最终是为了解决各种需求,包括业务需求和系统需求。使用面向对象方法,我们可以对业务需求等普通关注点进行很好的抽象和封装,并且使之模块化。但对于系统需求(比如日志记录、权限验证、事务管理等)一类的关注点来说,情况却有所不同。   对于业务需求而言,需求与其具体实现之间的关系基本上是一对一的。我们可以在系统中某一个确定的点找到针对这种需求的实现,无论从开发还是维护的角度,都比较方便。比如电商系统中的账户管理模块、订单模块、支付模块等,可以很容易地按照功能划分模块并完成开发。   但是

静态只读与常量

僤鯓⒐⒋嵵緔 提交于 2020-08-13 06:16:46
问题: I've read around about const and static readonly fields. 我已经阅读了有关 const 和 static readonly 字段的信息。 We have some classes which contains only constant values. 我们有一些仅包含常量值的类。 Used for various things around in our system. 用于我们系统中的各种事物。 So I am wondering if my observation is correct: 所以我想知道我的观察是否正确: Should these kind of constant values always be static readonly for everything that is public? 这些常量值是否应该对所有公共内容始终保持 static readonly ? And only use const for internal/protected/private values? 并且仅将 const 用于内部/受保护/私有值吗? What do you recommend? 您有什么推荐的吗? Should I maybe even not use static readonly fields,

如何获得泛型类型T的类实例

核能气质少年 提交于 2020-08-13 05:24:54
问题: I have a generics class, Foo<T> . 我有一个泛型类 Foo<T> 。 In a method of Foo , I want to get the class instance of type T, but I just can't call T.class . 在 Foo 的方法中,我想获取类型T的类实例,但是我无法调用 T.class 。 What is the preferred way to get around it using T.class ? 使用 T.class 绕过它的首选方法是什么? 解决方案: 参考一: https://stackoom.com/question/EQLx/如何获得泛型类型T的类实例 参考二: https://oldbug.net/q/EQLx/How-to-get-a-class-instance-of-generics-type-T 来源: oschina 链接: https://my.oschina.net/u/4438370/blog/4348251

Linux 基金会推出公共卫生计划- LFPH

房东的猫 提交于 2020-08-12 11:44:47
Linux 基金会 宣布推出公共卫生计划 LFPH(Linux Foundation Public Health),使用开源技术来对抗 COVID-19 和未来可能出现的流行病。LFPH 的高级会员包括思科、doc.ai、Geometer、IBM、NearForm、腾讯和 VMware,目前托管了两个 COVID-19 暴露通知应用 COVID Shield 和 COVID Green,已在加拿大及爱尔兰抗击疫情中发挥了重要作用。 Linux 基金会 执行董事 Jim Zemlin 称:“在这场严重的全球危机中,将致力于推动 Linux 基金会 社区全力支持 LFPH,开源为全球合作提供了一个架构,这正是我们所需要强调的公共卫生基础设施建设、安全。” 英文报道:https://www.prnewswire.com/news-releases/tech-leaders-and-health-authorities-from-around-the-globe-collaborate-to-combat-covid-19-301096039.html 相关文件下载地址 本地直接下载 来源: oschina 链接: https://my.oschina.net/u/4324861/blog/4435888

如何有效地计算JavaScript中对象的键/属性数量?

北城以北 提交于 2020-08-12 07:55:01
问题: What's the fastest way to count the number of keys/properties of an object? 计算对象的键/属性数的最快方法是什么? It it possible to do this without iterating over the object? 是否可以在不迭代对象的情况下执行此操作? ie without doing 即不做 var count = 0; for (k in myobj) if (myobj.hasOwnProperty(k)) count++; (Firefox did provide a magic __count__ property, but this was removed somewhere around version 4.) (Firefox确实提供了一个神奇的 __count__ 属性,但此属性已在版本4的某个位置删除。) 解决方案: 参考一: https://stackoom.com/question/Wns/如何有效地计算JavaScript中对象的键-属性数量 参考二: https://oldbug.net/q/Wns/How-to-efficiently-count-the-number-of-keys-properties-of-an-object-in

嘘!异步事件这样用真的好么?

↘锁芯ラ 提交于 2020-08-12 05:07:43
为了方便大家理解我把之前方案的图片复制过来了,如下: 上图的方案存在一个问题,就是我们今天文章要聊的内容。 这个问题就是当 MQ Consumer 收到消息后,就直接发布 Event 了,如果是同步的,没有问题。如果某个 EventListener 中处理失败了,那么这条消息将不会 ACK。 如果是异步发布 Event 的场景,发布完消息马上就 ACK 了。就算某个 EventListener 中处理失败了,MQ 也感知不到,不会进行消息的重新投递,这就是存在的问题。 解决方案 方案一 既然消息已经 ACK 了,那就不利用 MQ 的重试功能了,使用方自己重试是不是也可以呢? 可肯定是可以的,内部处理是否成功肯定是可以知道的,如果处理失败了可以默认重试,或者有一定策略的重试。实在不行还可以落库,保存记录。 这样的问题在于太烦了呀,每个使用的地方都要去做这件事情,而且对于未来接手你代码的程序小哥哥来说,这很有可能让小哥哥头发慢慢脱落啊。。。。 脱落不要紧,关键他还不知道要做这个处理,说不定哪天就背锅了,惨兮兮。。。。 方案二 要保证消息和业务处理的一致性,就不能立马进行 ACK 操作。而是要等业务处理完成后再决定是否要 ACK。 如果有处理失败的就不应该 ACK,这样就能复用 MQ 的重试机制了。 分析下来,这就是一个典型的异步转同步的场景。像 Dubbo 中也有这个场景

芯片Timing sign-off Corner理解

纵然是瞬间 提交于 2020-08-12 05:07:21
参考博文:http://blog.sina.com.cn/s/blog_5ced60e80102y7pd.html 一颗健壮的IC芯片应该具有能屈能伸的品质,他需要适应于他所在应用范围内变化的温度、电压,他需要承受制造工艺的偏差,这就需要在设计实现过程中考虑这些变化的温度、电压和工艺偏差。 在STA星球,用 library PVT、RC corner跟OCV 来模拟这些不可控的随机因素。在每个工艺结点,通过大量的建模跟实测,针对每个具体的工艺,foundary厂都会提供一张推荐的timingsignoff表格, 建议需要signoff的corner及各个corner需要设置的ocv跟margin。这些corner能保证大部分芯片可以承受温度、电压跟工艺偏差,一个corner=libraryPVT+ RC corner + OCV,本文将关注于library PVT。 ------OCV(on-chip-variation)也是用来模拟cell的PVT及线的RC变化,与前面两个不同的是,前两者是芯片全局的PVT/RC Corner,OCV是芯片上内的局部偏差(包括process 、 voltage、temperature、network RC)。比如在STA分析setup时,并不是用最慢的library PVT来signoff就是最差情况,对于capture

GreenPlum 数据倾斜排查

余生长醉 提交于 2020-08-12 01:57:49
在MPP无共享环境中,查询的总响应时间取决于单个node执行最长的process。如果数据偏斜,则具有更多数据的node将花费更多时间来完成,因此每个node必须具有大约相等的行数并执行大约相同的处理量。如果一个node要处理的数据比其他node多得多,可能会导致性能差和内存不足的情况。 将大表连接在一起时,最佳分配至关重要。要执行联接,匹配的行必须一起位于同一node上。如果数据未分配在同一DSK列上,则表之一中所需的行将动态重新分配给其他node。在某些情况下,将执行广播动作,在该动作中,每个node将其各自的行发送到所有其他node,而不是进行重新分配动作,在该重新分配动作中,每个node都会对数据进行哈希处理,然后根据哈希键将行发送到适当的node。 在GPDB中的所有表都是分布的,这意味着它们的数据被分割到系统的所有节点上。如果数据分布的不平坦,查询的性能可能会受到影响。下面的视图可以帮助诊断一张表是否出现了数据不平坦分布。 gp_skew_coefficients gp_skew_idle_fractions gp_skew_coefficients The gp_toolkit.gp_skew_coefficients view shows data distribution skew by calculating the coefficient of