around

Shodan全世界在线设备搜索引擎

自作多情 提交于 2020-12-15 08:46:58
reproduction from https://danielmiessler.com/study/shodan/ What is Shodan? Shodan is a search engine for finding specific devices, and device types, that exist online. The most popular searches are for things like webcam, linksys, cisco, netgear, SCADA, etc. It works by scanning the entire Internet and parsing the banners that are returned by various devices. Using that information, Shodan can tell you things like what web server (and version) is most popular, or how many anonymous FTP servers exist in a particular location, and what make and model the device may be. Shodan is of particular

理解postgreSQL中的prepared transactions和处理孤儿(orphans)事务

橙三吉。 提交于 2020-12-10 10:00:00
Prepared transactions是PostgreSQL的一个关键特性。理解该特性提供的功能和处理任何潜在的陷阱对于系统的维护是很关键的。所以,我们来深入研究一下具体什么是prepared transactions。 关于事务 在数据库系统中,事务是一种处理通常包含多个语句的块中的全部或零个语句的方法。在提交整个块之前,该块中语句的结果对其他事务不可见。 如果事务失败或回滚,则对数据库完全没有影响。 事务依附于会话。但是,当要执行与会话独立的事务时(也有其他好处)。这就是“prepared transactions”的来源。 prepared transactions prepared transaction是独立于会话、抗崩溃、状态维护的事务。事务的状态存储在磁盘上,这使得数据库服务器即使在从崩溃中重新启动后也可以恢复事务。在对prepared transaction执行回滚或提交操作之前,将一直维护该事务。 PostgreSQL文档声明,在一个已存在的事务块中,可以使用prepare transaction ’transaction_id‘命令创建一个prepared transaction。它进一步声明该过程为两阶段提交准备了一个事务。 此外,建议应用程序或交互式会话不要使用prepared transaction。理想情况下

再也不怕aop的原理了

一世执手 提交于 2020-12-07 04:29:34
1 aop是什么   java的核心思想是面向对象,aop是面向切面编程.是对面向对象的一个补充,简单通俗的理解下aop,假设我们上楼梯,我的目标是三楼,我直接朝我的三楼直接过去,但是我可以在二楼的时候去朋友那里玩下,坐下其他的,然后再去三楼 这也不会影响我们的目标去三楼,那么去朋友那里玩,相当于增加的生活的乐趣去那里玩.相当于增强了我们的活动.   那么aop可以做啥呢,可以进行日志记录,可以进行事务管理,可以进行安全控制,可以进行异常处理,可以进行性能统计 2 理解几个关键字 切面 关注点形成的类,就叫 切面(类)! 面向切面编程,就是指对很多功能都有的重复的代码抽取,再在运行的时候网业务方法上动态植入“切面类代码” 切点 执行目标对象方法,动态 植入切面代码。 可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。 通知 在对象上面执行的内容 3 aop的实现原理: aop的底层实现是代理模式加反射. 反射就不用多讲了,代理模式分为多种,静态代理和动态代理,动态代理面又分为jdk动态代理和cglib动态代理 代理模式的好处:可以防止对方得到我们真实的方法; 静态代理的实现方式: package com.cxy.cyclicBarrier; /* * * Created by Administrator on 2017/4/24. */

SpringBoot自定义注解、AOP打印日志

最后都变了- 提交于 2020-11-29 11:54:48
前言 在SpringBoot中使用自定义注解、aop切面打印web请求日志。主要是想把controller的每个request请求日志收集起来,调用接口、执行时间、返回值这几个重要的信息存储到数据库里,然后可以使用火焰图统计接口调用时长,平均响应时长,以便于我们对接口的调用和执行情况及时掌握。 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>2.1.4.RELEASE</version> <

宋宝华:那些年你误会的Linux DMA(关于Linux DMA ZONE和API最透彻的一篇)

ε祈祈猫儿з 提交于 2020-11-28 08:41:46
原创 宋宝华 Linux阅码场 2019-11-29 创作目的 互联网、Linux内核书籍上充满了各种关于Linux DMA ZONE和dma_alloc_coherent、dma_map_single等的各种讲解,由于很多童鞋缺乏自身独立的思考,人云亦云,对这些概念形成了很多错误的理解。本文的目的在于彻底澄清这些误解。 当你发现本文内容与baidu到的内容不一致的时候,以本文内容为准。 本文目录 1.DMA ZONE的大小是16MB? 这个答案在32位X86计算机的条件下是成立的,但是在其他的绝大多数情况下都不成立。 首先我们要理解DMA ZONE产生的历史原因是什么。DMA可以直接在内存和外设之间进行数据搬移,对于内存的存取来讲,它和CPU一样,是一个访问master,可以直接访问内存。 DMA ZONE产生的本质原因是:不一定所有的DMA都可以访问到所有的内存,这本质上是硬件的设计限制。 在32位X86计算机的条件下,ISA实际只可以访问16MB以下的内存。那么ISA上面假设有个网卡,要DMA,超过16MB以上的内存,它根本就访问不到。所以Linux内核干脆简单一点,把16MB砍一刀,这一刀以下的内存单独管理。如果ISA的驱动要申请DMA buffer,你带一个GFP_DMA标记来表明你想从这个区域申请,我保证申请的内存你是可以访问的。 DMA ZONE的大小,以及DMA

宋宝华:那些年你误会的Linux DMA(关于Linux DMA ZONE和API最透彻的一篇)

久未见 提交于 2020-11-28 08:39:14
原创 宋宝华 Linux阅码场 2019-11-29 创作目的 互联网、Linux内核书籍上充满了各种关于Linux DMA ZONE和dma_alloc_coherent、dma_map_single等的各种讲解,由于很多童鞋缺乏自身独立的思考,人云亦云,对这些概念形成了很多错误的理解。本文的目的在于彻底澄清这些误解。 当你发现本文内容与baidu到的内容不一致的时候,以本文内容为准。 本文目录 1.DMA ZONE的大小是16MB? 这个答案在32位X86计算机的条件下是成立的,但是在其他的绝大多数情况下都不成立。 首先我们要理解DMA ZONE产生的历史原因是什么。DMA可以直接在内存和外设之间进行数据搬移,对于内存的存取来讲,它和CPU一样,是一个访问master,可以直接访问内存。 DMA ZONE产生的本质原因是:不一定所有的DMA都可以访问到所有的内存,这本质上是硬件的设计限制。 在32位X86计算机的条件下,ISA实际只可以访问16MB以下的内存。那么ISA上面假设有个网卡,要DMA,超过16MB以上的内存,它根本就访问不到。所以Linux内核干脆简单一点,把16MB砍一刀,这一刀以下的内存单独管理。如果ISA的驱动要申请DMA buffer,你带一个GFP_DMA标记来表明你想从这个区域申请,我保证申请的内存你是可以访问的。 DMA ZONE的大小,以及DMA

SpringBoot参数非空校验的非最优实现历程

Deadly 提交于 2020-11-24 06:27:20
  SpringBoot参数非空校验在网上已经有很多资料了,自己最近要实现这一个功能,大概看了下觉得没什么难度,不想在过程中还是遇到了一些问题,在此记录,希望有遇到和我一样问题的人和过路大神不吝指教。   需求是做一个全局请求参数非空校验和异常拦截,spring提供的@Validated和Hibernate提供的@Valid目前不支持请求参数为基本类型的非空判断,只能是请求参数封装为对象时,判断对象属性非空,所以要自己实现一个对基本类型的非空判断。   首先说下网上原创转载最多的一个思路:实现一个指向方法的注解,注解中创建一个String[]属性,用来存放方法中需要非空判断的参数的名称 -----> 创建AOP,切点为注解的方法,增强方法中拿到注解中的String[],然后遍历判断是否为空,如果为空则抛出一个自定义异常 -----> 实现一个全局异常处理类,捕获抛出的自定义异常,进行后续处理。   首先说下根据这个思路的实现非常简单,也很实用,只是有两个吹毛求疵的问题。第一,注解需要写成@CheckParam({param1,param2})这样的形式加在方法上,还需要手动写param1,param2这样的要进行非空判断的参数的名称,而不是像@RequestParam注解直接加在参数上就OK了。第二,@RequestParam注解本身会判断非空,一起使用时,自己的注解无效。  

自定义注解!绝对是程序员装逼的利器!!

一笑奈何 提交于 2020-11-22 13:56:17
△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 315 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) 相信很多人对Java中的注解都很熟悉,比如我们经常会用到的一些如@Override、@Autowired、@Service等,这些都是JDK或者诸如Spring这类框架给我们提供的。 在以往的面试过程中,我发现,关于注解的知识很多程序员都仅仅停留在使用的层面上,很少有人知道注解是如何实现的,更别提使用自定义注解来解决实际问题了。 但是其实,我觉得一个好的程序员的标准就是懂得如何优化自己的代码,那在代码优化上面,如何精简代码,去掉重复代码就是一个至关重要的话题,在这个话题领域,自定义注解绝对可以算得上是一个大大的功臣。 所以, 在我看来,会使用自定义注解 ≈ 好的程序员。 那么,本文,就来介绍几个,作者在开发中实际用到的几个例子,向你介绍下如何使用注解来提升你代码的逼格。 基本知识 在Java中,注解分为两种,元注解和自定义注解。 很多人误以为自定义注解就是开发者自己定义的,而其它框架提供的不算,但是其实上面我们提到的那几个注解其实都是自定义注解。 关于"元"这个描述,在编程世界里面有都很多,比如"元注解"、"元数据"、"元类"、"元表"等等,这里的"元"其实都是从meta翻译过来的。 一般我们把

自定义注解!绝对是程序员装大佬的利器!!

匆匆过客 提交于 2020-11-22 09:50:31
作者 l Hollis 来源 l Hollis(ID:hollischuang) 相信很多人对Java中的注解都很熟悉,比如我们经常会用到的一些如@Override、@Autowired、@Service等,这些都是JDK或者诸如Spring这类框架给我们提供的。 在以往的面试过程中,我发现,关于注解的知识很多程序员都仅仅停留在使用的层面上,很少有人知道注解是如何实现的,更别提使用自定义注解来解决实际问题了。 但是其实,我觉得一个好的程序员的标准就是懂得如何优化自己的代码,那在代码优化上面,如何精简代码,去掉重复代码就是一个至关重要的话题,在这个话题领域,自定义注解绝对可以算得上是一个大大的功臣。 所以, 在我看来,会使用自定义注解 ≈ 好的程序员。 那么,本文,就来介绍几个,作者在开发中实际用到的几个例子,向你介绍下如何使用注解来提升你代码的逼格。 基本知识 在Java中,注解分为两种,元注解和自定义注解。 很多人误以为自定义注解就是开发者自己定义的,而其它框架提供的不算,但是其实上面我们提到的那几个注解其实都是自定义注解。 关于"元"这个描述,在编程世界里面有都很多,比如"元注解"、"元数据"、"元类"、"元表"等等,这里的"元"其实都是从meta翻译过来的。 一般我们把 元注解理解为描述注解的注解,元数据理解为描述数据的数据,元类理解为描述类的类 … 所以,在Java中

你知道Spring AOP @Before @Around@After 的执行顺序吗

萝らか妹 提交于 2020-11-21 23:56:35
做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 原文地址:https://dwz.cn/uLMHZN5P 用过spring框架进行开发的人,多多少少会使用过它的 AOP 功能,都知道有 @Before 、 @Around 和 @After 等advice。最近,为了实现项目中的 输出日志 和 权限控制 这两个需求,我也使用到了AOP功能。我使用到了 @Before 、 @Around 这两个advice。但在,使用过程中,却对它们的执行顺序并不清楚。为了弄清楚在不同情况下,这些advice到底是以怎么样的一个顺序进行执行的,我作了个测试,在此将其记录下来,以供以后查看。 前提 • 对于AOP相关类(aspect、pointcut等)的概念,本文不作说明。 • 对于如何让spring框架扫描到AOP,本文也不作说明。 情况一: 一个方法只被一个Aspect类拦截 当一个方法只被一个Aspect拦截时,这个Aspect中的不同advice是按照怎样的顺序进行执行的呢?请看: 添加 PointCut 类 该pointcut用来拦截 test 包下的所有类中的所有方法。 添加 Aspect 类 该类中的advice将会用到上面的pointcut,使用方法请看各个advice的 value 属性。 添加测试用Controller