dispatcher

JBOSS 无文件 webshell 的技术研究

那年仲夏 提交于 2020-08-14 20:29:50
作者:宽字节安全 原文链接: https://mp.weixin.qq.com/s/_SQS9B7tkL1H5fMIgPTOKw 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 前几篇文章主要研究了tomcat,weblogic的无文件webshell。这篇文章则重点研究jboss的无文件webhsell。下面分享一下思路,以下分析基于 jboss 社区版 wildfly-20.0.0.Final版本。 0x01 wildfly 加载Filter分析 在Filter处随便打一个断点,如图,观察堆栈 jboss比较简单,处理Filter的代码如下所示 io.undertow.servlet.handlers.FilterHandler#handleRequest public void handleRequest(HttpServerExchange exchange) throws Exception { ServletRequestContext servletRequestContext = (ServletRequestContext)exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY); ServletRequest request

Linux 操作系统!开篇!!!

北慕城南 提交于 2020-08-13 16:49:22
此篇文章主要会带你介绍 Linux 操作系统,包括 Linux 本身、Linux 如何使用、以及系统调用和 Linux 是如何工作的。 Linux 简介 UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线。为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是程序员。Linux 继承了 UNIX 的设计目标。从智能手机到汽车,超级计算机和家用电器,从家用台式机到企业服务器,Linux 操作系统无处不在。 大多数程序员都喜欢让系统尽量简单,优雅并具有一致性。举个例子,从最底层的角度来讲,一个文件应该只是一个字节集合。为了实现顺序存取、随机存取、按键存取、远程存取只能是妨碍你的工作。相同的,如果命令 ls A* 意味着只列出以 A 为开头的所有文件,那么命令 rm A* 应该会移除所有以 A 为开头的文件而不是只删除文件名是 A* 的文件。这个特性也是 最小吃惊原则(principle of least surprise) 最小吃惊原则一半常用于用户界面和软件设计。它的原型是:该功能或者特征应该符合用户的预期,不应该使用户感到惊讶和震惊。 一些有经验的程序员通常希望系统具有较强的功能性和灵活性。设计 Linux 的一个基本目标是每个应用程序只做一件事情并把他做好。所以编译器只负责编译的工作,编译器不会产生列表

JVM相关

喜欢而已 提交于 2020-08-13 14:42:46
本文基于 OpenJDK 11 在分析线上 JVM 性能问题的时候,我们可能会碰到下面这些场景: 1.GC 本身没有花多长时间,但是 JVM 暂停了很久,例如下面: 2.JVM 没有 GC,但是程序暂停了很久,而且这种情况时不时就出现。 这些问题一般和 SafePoint 还有 Stop the World 有关。 什么是 SafePoint?什么是 Stop the world?他们之间有何关系? 我们先来设想下如下场景: 当需要 GC 时,需要知道哪些对象还被使用,或者已经不被使用可以回收了,这样就需要每个线程的对象使用情况。 对于偏向锁(Biased Lock),在高并发时想要解除偏置,需要线程状态还有获取锁的线程的精确信息。 对方法进行即时编译优化(OSR栈上替换),或者反优化(bailout栈上反优化),这需要线程究竟运行到方法的哪里的信息。 对于这些操作,都需要线程的各种信息,例如寄存器中到底有啥,堆使用信息以及栈方法代码信息等等等等,并且做这些操作的时候,线程需要暂停,等到这些操作完成,否则会有并发问题。这就需要 SafePoint。 Safepoint 可以理解成是在代码执行过程中的一些特殊位置 ,当线程执行到这些位置的时候, 线程可以暂停 。在 SafePoint 保存了其他位置没有的 一些当前线程的运行信息,供其他线程读取 。这些信息包括:线程上下文的任何信息

纯干货Android知识点整理(二)

放肆的年华 提交于 2020-08-12 17:52:15
本篇为第二篇整理的文章,第一篇的链接 纯干货Android知识点整理(一) 1.OkHttp解析 首先 OkHttp 内部是一个门户模式,所有的下发工作都是通过一个门户 Dispatcher 来进行分发。 然后在网络请求阶段通过责任链模式,链式的调用各个拦截器的 intercept 方法。其中有 2 个比较重要的拦截器:CacheInterceptor 和 CallServerInterceptor。它们分别用来做请求缓存和执行网络请求操作。 最后在理解源码实现的基础上,对 OkHttp 的功能进行了一些扩展,实现了网络请求进度的实现。 BridgeInterceptor:主要对 Request 中的 Head 设置默认值,比如 Content-Type、Keep-Alive、Cookie 等。 CacheInterceptor:负责 HTTP 请求的缓存处理。 ConnectInterceptor:负责建立与服务器地址之间的连接,也就是 TCP 链接。 CallServerInterceptor:负责向服务器发送请求,并从服务器拿到远端数据结果。 2.Bitmap解析 默认情况下 BitmapFactory 使用 Bitmap.Config.ARGB_8888 的存储方式来加载图片内容,而在这种存储模式下,每一个像素需要占用 4 个字节。因此上面图片 rodman

聊聊rocketmq-client-go的TraceInterceptor

我的未来我决定 提交于 2020-08-11 23:01:05
序 本文主要研究一下rocketmq-client-go的TraceInterceptor TraceInterceptor rocketmq-client-go-v2.0.0/producer/interceptor.go // WithTrace support rocketmq trace: https://github.com/apache/rocketmq/wiki/RIP-6-Message-Trace. func WithTrace(traceCfg *primitive.TraceConfig) Option { return func(options *producerOptions) { ori := options.Interceptors options.Interceptors = make([]primitive.Interceptor, 0) options.Interceptors = append(options.Interceptors, newTraceInterceptor(traceCfg)) options.Interceptors = append(options.Interceptors, ori...) } } WithTrace方法在options.Interceptors后追加TraceInterceptor

WPF 通过 InputManager 模拟调度触摸事件

ぃ、小莉子 提交于 2020-08-11 21:46:35
在 WPF 中,框架可以分为两个部分,一个是渲染,另一个是交互。交互的入口是在 InputManager 里面,而实际的交互实现需要通过渲染布局和交互的路由事件才能完成。在输入管理提供了调度事件的方法,这个方法可以被传入路由事件,传入的路由事件将会被调度到路由事件指定的元素上进行触发。本文告诉大家如何模拟调度一个触摸事件 本文的内容属于没有任何官方文档的支持的内容,以下是我看 WPF 源代码了解到的用法 在输入管理里面可以通过 System.Windows.Input.InputManager.Current 拿到当前的输入管理,这个属性默认和 Dispatcher.CurrentDispatcher.InputManager 是相同的对象,只有在初始化的时候 Dispatcher.CurrentDispatcher.InputManager 会是空拿不到值,而通过 System.Windows.Input.InputManager.Current 将会自动创建 此时就可以回答这个 InputManager.Current 是针对进程还是线程的问题了,请问 CurrentDispatcher 是针对进程还是线程呢 在拿到输入管理,就可以调用 ProcessInput 方法传入一个 InputEventArgs 了,可以传入一个路由事件,此时路由事件将会加入触发队列

springboot2配置JavaMelody与springMVC配置JavaMelody

假装没事ソ 提交于 2020-08-11 20:10:20
文章来自于: 诗情画意程序员 JavaMelody是监视QA和生产环境中的Java或Java EE应用程序服务器,以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年,全部或自定义时间段查看。 JavaMelody介绍 JavaMelody的目标是监视QA和生产环境中的Java或Java EE应用程序服务器。它不是模拟用户请求的工具,而是根据用户对应用程序的使用情况来测量和计算有关应用程序实际操作的统计信息的工具。JavaMelody主要基于请求的统计信息和演化图。 它可以改善质量检查和生产中的应用程序,并有助于: 提供有关平均响应时间和执行次数的事实 在趋势不好的时候,在问题变得太严重之前做出决定 根据更有限的响应时间进行优化 找到响应时间的根本原因 优化后验证真正的改进 注: 执行所需的Java版本:1.6或更高版本(Oracle的JDK或JRE或JRockit或IBM的OpenJDK或J9) 执行所需的服务器版本:至少servlet api 2.4(或JavaEE 1.4),例如Tomcat 5.5或+,GlassFish v2 +,JBoss 4 +,Jetty 6 +

SpringMvc配置产生的问题

陌路散爱 提交于 2020-08-11 12:35:18
配置如下 package top.redheart.templet.company; import ch.qos.logback.core.spi.LogbackLock; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.filter.CharacterEncodingFilter; import org.springframework.web.servlet.DispatcherServlet; import top.redheart.templet.company.config.MvcConfig; import top.redheart.templet.company.config.TemplesConfig; import javax.servlet.*; /** * @author Administrator */ public class

SpringBoot(二)

牧云@^-^@ 提交于 2020-08-10 16:28:42
SpringBoot注册MVC 初始化内置tomcat 除了在properties中配置以外,还可以通过实现WebServerFactoryCustomizer来定制化SpringBoot的启动参数: @Component public class MvcConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> , Ordered { @Override public void customize(TomcatServletWebServerFactory factory) { factory.setPort(8080); } @Override public int getOrder() { return 0; } } 所有的Customizer会被SpringBoot扫描到,并且应用到WebServerFactory中: public class WebServerFactoryCustomizerBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware{ @Override public void setBeanFactory(BeanFactory beanFactory) { Assert

深入浅出PyTorch(算子篇)

混江龙づ霸主 提交于 2020-08-10 07:15:03
Tensor 自从张量(Tensor)计算这个概念出现后,神经网络的算法就可以看作是一系列的张量计算。所谓的张量,它原本是个数学概念,表示各种向量或者数值之间的关系。PyTorch的张量(torch.Tensor)表示的是N维矩阵与一维数组的关系。 torch.Tensor的使用方法和numpy很相似( https://pytorch.org/...tensor-tutorial-py ),两者唯一的区别在于torch.Tensor可以使用GPU来计算,这就比用CPU的numpy要快很多。 张量计算的种类有很多,比如加法、乘法、矩阵相乘、矩阵转置等,这些计算被称为算子(Operator),它们是PyTorch的核心组件。 算子的backend一般是C/C++的拓展程序,PyTorch的backend是称为"ATen"的C/C++库,ATen是"A Tensor"的缩写。 Operator PyTorch所有的Operator都定义在Declarations.cwrap和native_functions.yaml这两个文件中,前者定义了从Torch那继承来的legacy operator(aten/src/TH),后者定义的是native operator,是PyTorch的operator。 相比于用C++开发的native code,legacy