精华内容
下载资源
问答
  • ARM初始化异常向量表

    千次阅读 2016-04-23 00:42:42
    今天玩zynq的FreeRTOS时,扒启动时又忘记...ARM启动时首先找.vectors区间,而该区间就包含了_vector_table(异常向量表),ARM的异常向量表构造如下:  异常类型   复 位   未定义指令   软中断 

    今天玩zynq的FreeRTOS时,扒启动时又忘记ARM是怎么启动的了,应该是这样:


    ARM启动时首先找.vectors区间,而该区间就包含了_vector_table(异常向量表),ARM的异常向量表构造如下:

        异常类型             

        复  位               

        未定义指令           

        软中断               

        预取指令终           

        数据终止             

        保留                 

        中断请求(IRQ)      

        快速中断请求(FIQ)  

    举例FreeRTOS v8.23(port_asm_vectors.S文件)

    _freertos_vector_table:
    B  _boot
    B  FreeRTOS_Undefined
    ldr   pc, _swi
    B  FreeRTOS_PrefetchAbortHandler
    B  FreeRTOS_DataAbortHandler
    NOP  /* Placeholder for address exception vector*/
    LDR   PC, _irq
    B  FreeRTOS_FIQHandler

    而Xilinx的standalone v5.3(asm_vectors.S)

    _vector_table:
    B _boot
    B Undefined
    B SVCHandler
    B PrefetchAbortHandler
    B DataAbortHandler
    NOP /* Placeholder for address exception vector*/
    B IRQHandler
    B FIQHandler

    因此,地址0x00000000位置即为_boot,即开始执行_boot内容
    展开全文
  • DispatcherServlet初始化请求处理过程

    千次阅读 2018-04-25 22:59:43
    1.DispatcherServlet的继承关系在idea中,右键选择DispatcherServlet的Diagrams可以查看类的继承关系,如图所示可以看到,DispatchServlet继承子...2.HttpSerlvetBean初始化过程分析public final void init()...
    1.DispatcherServlet的继承关系

    在idea中,右键选择DispatcherServlet的Diagrams可以查看类的继承关系,如图所示



    可以看到,DispatchServlet继承子FrameworkServlet,而FrameworkServlet继承子HttpServletBean;

    2.HttpSerlvetBean初始化过程分析
    public final void init() throws ServletException {
       if (logger.isDebugEnabled()) {
          logger.debug("Initializing servlet '" + getServletName() + "'");
       }
    
       // Set bean properties from init parameters.
       try {
          PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);
          BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(this);
          ResourceLoader resourceLoader = new ServletContextResourceLoader(getServletContext());
          bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, getEnvironment()));
          initBeanWrapper(bw);
          bw.setPropertyValues(pvs, true);
       }
       catch (BeansException ex) {
          logger.error("Failed to set bean properties on servlet '" + getServletName() + "'", ex);
          throw ex;
       }
    
       // Let subclasses do whatever initialization they like.
       initServletBean();
    
       if (logger.isDebugEnabled()) {
          logger.debug("Servlet '" + getServletName() + "' configured successfully");
       }
    }
    分析:
    PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);

    获取web.xml的参数,构造PropertyValues对象;这里的psv值通过debug可以观察到实际是servlet的名称和具体的配置路径;


    之后设置DispatcherServlet的属性;其实这段代码的目的就是获取servlet的context参数,设置为DispatcherServlet的contextConfigLocation参数,构造spring mvc的容器上下文;最后

    initServletBean();
    protected void initServletBean() throws ServletException {
    }

    该方法是占位方法,子类可以重写该方法,来做更多的事情;

    3.FrameworkServlet

    源代码如下所示,省略部分日志代码

    @Override
    protected final void initServletBean() throws ServletException {
       getServletContext().log("Initializing Spring FrameworkServlet '" + getServletName() + "'");
       if (this.logger.isInfoEnabled()) {
          this.logger.info("FrameworkServlet '" + getServletName() + "': initialization started");
       }
       long startTime = System.currentTimeMillis();
    
       try {
          this.webApplicationContext = initWebApplicationContext();
          initFrameworkServlet();
       }

    重要的方法有initWebApplicationContext,代码

    protected WebApplicationContext initWebApplicationContext() {
       WebApplicationContext rootContext =
             WebApplicationContextUtils.getWebApplicationContext(getServletContext());
       WebApplicationContext wac = null;
    
       if (this.webApplicationContext != null) {
          // A context instance was injected at construction time -> use it
          wac = this.webApplicationContext;
          if (wac instanceof ConfigurableWebApplicationContext) {
             ConfigurableWebApplicationContext cwac = (ConfigurableWebApplicationContext) wac;
             if (!cwac.isActive()) {
                // The context has not yet been refreshed -> provide services such as
                // setting the parent context, setting the application context id, etc
                if (cwac.getParent() == null) {
                   // The context instance was injected without an explicit parent -> set
                   // the root application context (if any; may be null) as the parent
                   cwac.setParent(rootContext);
                }
                configureAndRefreshWebApplicationContext(cwac);
             }
          }
       }
       if (wac == null) {
          // No context instance was injected at construction time -> see if one
          // has been registered in the servlet context. If one exists, it is assumed
          // that the parent context (if any) has already been set and that the
          // user has performed any initialization such as setting the context id
          wac = findWebApplicationContext();
       }
       if (wac == null) {
          // No context instance is defined for this servlet -> create a local one
          wac = createWebApplicationContext(rootContext);
       }
    
       if (!this.refreshEventReceived) {
          // Either the context is not a ConfigurableApplicationContext with refresh
          // support or the context injected at construction time had already been
          // refreshed -> trigger initial onRefresh manually here.
          onRefresh(wac);
       }
    
       if (this.publishContext) {
          // Publish the context as a servlet context attribute.
          String attrName = getServletContextAttributeName();
          getServletContext().setAttribute(attrName, wac);
          if (this.logger.isDebugEnabled()) {
             this.logger.debug("Published WebApplicationContext of servlet '" + getServletName() +
                   "' as ServletContext attribute with name [" + attrName + "]");
          }
       }
    
       return wac;
    }

    首先判断WebApplicationContext是否为空,因为DispatcherServlet有一个构造函数webApplicationContext

    public DispatcherServlet(WebApplicationContext webApplicationContext) {
       super(webApplicationContext);
    }

    所以要先进行判断,当使用该构造函数来生成DispatcherServlet的时候执行这段逻辑;

    之后调用

    wac = findWebApplicationContext();

    以contextAttribute为key从ServletContext中找WebApplication。一般不会设置contextAttribute属性,所以这里返回值为null;然后调用

    wac = createWebApplicationContext(rootContext);

    来创建上下文,具体的代码如下

    wac.setEnvironment(getEnvironment());
    wac.setParent(parent);
    wac.setConfigLocation(getContextConfigLocation());
    
    configureAndRefreshWebApplicationContext(wac);
    设置跟上下文为父上下文,然后配置ServletConfig,ServletContext等实例到这个上下文中;

    最后onRefresh(wac);模板方法,子类DispatcherServlet会覆盖这个方法;

    之后将创建的容器上下文设置到ServletContext中;

    String attrName = getServletContextAttributeName();
    getServletContext().setAttribute(attrName, wac);
    4.DispatcherServlet

    DispatcherServlet覆盖了父类FrameworkServlet中的方法,代码如下

    @Override
    protected void onRefresh(ApplicationContext context) {
       initStrategies(context);
    }
    
    /**
     * Initialize the strategy objects that this servlet uses.
     * <p>May be overridden in subclasses in order to initialize further strategy objects.
     */
    protected void initStrategies(ApplicationContext context) {
       initMultipartResolver(context);
       initLocaleResolver(context);
       initThemeResolver(context);
       initHandlerMappings(context);
       initHandlerAdapters(context);
       initHandlerExceptionResolvers(context);
       initRequestToViewNameTranslator(context);
       initViewResolvers(context);
       initFlashMapManager(context);
    }

    这里主要初始化各种策略接口的实现类,比如常用的异常处理初始化initHandlerExceptionResolvers,视图处理初始化initViewResolvers,请求映射初始化方法initHandlerMappings;

    总结:1.HttpServletBean 主要做一些初始化的事情,将web.xml中的配置参数设置到servlet中。比如servlet标签的子标签init-param标签中的参数;

    2.FrameworkServlet 将Servlet与Spring容器上下文关联;也就是初始化FarmeworkServlet属性webApplicationContext,这个属性代表springmvc上下文,它有个父类上下文;

    3.DispatcherServlet 初始化各个功能的实现,比如异常处理,视图处理,请求映射等功能;

    5.DispatcherServlet对http请求的处理过程
    首先了解下HttpServlet对于http请求的处理过程;

    1.所有的请求都会调用service方法;

    protected void service(HttpServletRequest req, HttpServletResponse resp)

    2.service中,根据请求类型再分别调用以下方法

    else if (method.equals(METHOD_POST)) {
        doPost(req, resp);
        
    } else if (method.equals(METHOD_PUT)) {
        doPut(req, resp);
        
    } else if (method.equals(METHOD_DELETE)) {
        doDelete(req, resp);
        
    } else if (method.equals(METHOD_OPTIONS)) {
        doOptions(req,resp);
        
    } else if (method.equals(METHOD_TRACE)) {
        doTrace(req,resp);

    3.FrameworkServlet子类继承子HttpServlet,并重写了上述方法,代码如下:

    @Override
    protected final void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    
       processRequest(request, response);
    }

    4.FrameworkServlet的processRequest方法代码如下


    其中doService的具体代码如下,可以看到是抽象方法,具体的实现是在DispatchServlet中,


    5.doService具体实现逻辑如下


    这里判断请求如果是include请求,那么就保存请求的快照,doDispatch方法处理之后,快照中的数据会覆盖新的request中的数据;

    6.doDispatch方法的处理逻辑


    这里首先通过getHandler得到当前请求对应的handler;getHandler方法的具体代码如下

    protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {
       for (HandlerMapping hm : this.handlerMappings) {
          if (logger.isTraceEnabled()) {
             logger.trace(
                   "Testing handler map [" + hm + "] in DispatcherServlet with name '" + getServletName() + "'");
          }
          HandlerExecutionChain handler = hm.getHandler(request);
          if (handler != null) {
             return handler;
          }
       }
       return null;
    }

    这里的handlerMapping的数据结构其实是个List,里面保存了当前servlet处理请求的映射;

    /** List of HandlerMappings used by this servlet */
    private List<HandlerMapping> handlerMappings;

    根据handler再得到HandlerAdapter,HandlerAdapter是一个接口,其中的handle方法如下所示

    /**
     * Use the given handler to handle this request.
     * The workflow that is required may vary widely.
     * @param request current HTTP request
     * @param response current HTTP response
     * @param handler handler to use. This object must have previously been passed
     * to the {@code supports} method of this interface, which must have
     * returned {@code true}.
     * @throws Exception in case of errors
     * @return ModelAndView object with the name of the view and the required
     * model data, or {@code null} if the request has been handled directly
     */
    ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;

    处理对应的request请求,返回一个视图;这里就是http请求的处理逻辑;

    参考文章:

    https://www.cnblogs.com/fangjian0423/p/springMVC-directory-summary.html


    展开全文
  •  重点原理:在初始化的时候需要总的数目,因此需要一个请求,但是注意,回调函数中一定要加上判断条件,检测如果是第一次初始化的话,就不需要再走index+1的请求,因为酱紫效果没变,但是页面请求是增加了一次的。...
    在做项目的时候碰到的一个问题,jquery pegination 两次请求的问题。
    项目中检查请求的时候,发现初始化一直是两次请求存在,各种调试,最后解决了两次请求的问题。
     重点原理:在初始化的时候需要总的数目,因此需要一个请求,但是注意,回调函数中一定要加上判断条件,检测如果是第一次初始化的话,就不需要再走index+1的请求,因为酱紫效果没变,但是页面请求是增加了一次的。
    核心代码:

    var htmls = '<div class="f-box clearfix">\
    <div class="f-teacher-img fl"><a href="http://blog.163.com/qyl_anikin/blog/#" target="_blank"><img src="http://blog.163.com/qyl_anikin/blog/{{imgSrc}}" alt="" /></a></div>\
    <div class="f-teacher-info fr">\
    <div class="f-teacher-tit">\
    <a class="f-teacher-a" href="http://blog.163.com/qyl_anikin/blog/#" target="_blank">{{roomname}}</a><i class="{{type}}">老师</i><a href="javascript:void(0)" class="f-btn-clearfocus">取消关注</a>\
    </div>\
    <p class="f-teacher-txt">{{info}}</p>\
    </div>\
    </div>';
    var type=['','i-tg','i-teacher','i-teacher']; // 老师 投顾
    var bFalse = true;
    function initAble(nowIndex){
    var This = this;
    var count;
    commonJs.jsonps(Hexun.myFocusTeacher,{currentPage:nowIndex,pagesize:5},function(data){
    if( data.resultKey && data.resultKey == 'ok' ){
    count = data.data.count;
    var List = data.data.favorites;
    var ireu = arguments.callee(Number(nowIndex)+1);
    $("#myFocus").pagination(Math.ceil(count/5), {
    num_display_entries: 5, //主体页数
    current_page: 0,
    callback: function(index,jq){
    if(bFalse){ // 重点,第一次不要发请求。
    bFalse =false;
    domAction(List);
    return;
    } // 第二次在发请求

    romoteData(index+1);
    domAction(List);
    },
    items_per_page: 1, //每页显示1
    prev_text: "前一页",
    next_text: "后一页"
    })
    }
    if( data.errorMessage != null ){
    Realert(data.errorMessage);
    }
    })
    }

    function romoteData(nowIndex){
    commonJs.jsonps(Hexun.myFocusTeacher,{currentPage:nowIndex,pagesize:5},function(data){
    if( data.resultKey && data.resultKey == 'ok' ){
    count = data.data.count;
    domAction(data.data.favorites);
    }
    if( data.errorMessage != null ){
    Realert(data.errorMessage);
    }
    });

    }

    function domAction(arr){
    if( $.type( arr ) != 'array' ) return;
    var This = this;
    $('#myFocus').siblings().remove();
    for( var i=0; i<arr.length; i++ ){
    $(htmls.replace('{{imgSrc}}', arr[i].imgUrl)
    .replace('{{roomname}}', arr[i].roomName)
    .replace('{{type}}',type[arr[i].level])
    .replace('{{info}}',arr[i].roomInfo) ).prependTo($('#focus_i'));
    }

    }


    ps: 项目源代码,仔细阅读,便可知道一次请求的实现过程。commonJs.jsonps函数是自己封装的jsonp请求,全可当做ajax请求,这个不是重点,重点是查看请求部分代码。
    展开全文
  • 我之前回家用自己家的电脑打算写几个程序的时候需要运用到node.js的时候遇到过这种问题: cmd突然报这个错给我让我很烦恼啊。。。不过解决这个问题的方法还是要写入一条指令,指令如下:[plain] view plain ...

    我之前回家用自己家的电脑打算写几个程序的时候需要运用到node.js的时候遇到过这种问题:


           cmd突然报这个错给我让我很烦恼啊。。。不过解决这个问题的方法还是要写入一条指令,指令如下:

    [plain]  view plain  copy
    1. netsh winsock reset  
            写入这个指令按确定键,然后按照提示重启电脑就能ok了。
    展开全文
  • 报错如下: 错误摘要  以下是错误摘要,这些错误的详细信息列在该日志的后面。 * 激活 http://xxxx/xxxx.application 导致异常。 检测到下列失败消息: ... + 无法加载或初始化请求的服务提供...
  • 基于最新Spring 5.x,详细介绍了Spring MVC 初始化流程的源码,主要包括DispatcherServlet与MVC子容器的初始化,以及各种MVC组件的初始化
  • MVC中出现“初始化数据库时发生异常”,已经出现过两次。第一次处理时乱点一气,也不知道如何解决的,今天又出现了,好好研究一下: 分析后,应该是当前的数据库无法正常打开导致的。做如下处理: 1. 在VS中删除...
  • 这说明在spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。 原文地址:https://www.cnblogs.com/study-everyday/p/6257127.html 问题 实现InitializingBean接...
  • 基于最新Spring 5.x,详细介绍了Spring MVC 初始化流程的源码,主要包括ContextLoaderListener与根上下文容器的初始化流程的源码,以及web.xml文件加载流程。
  • 初始化和默认初始化的区别

    千次阅读 2018-03-11 20:29:08
    参考资料[1]P185指出,如果局部变量没有显式的初始化值,它将执行值初始化(不是默认初始化!),内置类型的局部静态变量初始化为0 1 背景 参考资料[1]P39提到,在C++语言中,初始化与赋值并不是同一个概念:...
  • 初始化

    千次阅读 2016-10-22 01:46:38
    初始化Flask程序创建一个Flask类的对象,使用WSGI协议把客户端的所有请求转发给这个对象。from flask import Flask app = Flask(__name__)Flask类的构造函数只有一个必须制定的参数,即程序主模块或包的名字。 ...
  • 问题描述:页面初始化,调用多个ajax(ajax1,ajax2,ajax3),调用没有先后关系,相互不影响。在网络异常或其他异常情况下,有可能会出现多个请求都不成功,页面弹出多个异常弹窗,用户体验不好。 解决方案一、...
  • 1、问题场景: 1.1、服务在启动之后的第一笔或者几笔请求,处理时间较长,对于调用方来说超时,引发技术保底。 1.2、数据库连接信息...2.2、应用启动之后的初始几笔请求处理时间过长,超过1s,跟踪日志发现在in...
  • 一、中断中断通常被定义为一个事件,该事件改变处理器执行的指令顺序。中断有两种,一种是由CPU外部产生的,对于执行中的软件来说,...Intel手册中分别将这两种中断称为中断和异常。Intel文档中,中断又可分为可屏蔽
  • 上一周调优一个项目的Js部分,其中一个严重的问题就是在页面初始化数据时,没有对异常进行处理, 导致Loading一直在等待中,无提示无处理。在用户体验上很不好,即使网络条件无法保证,在出错的情况下,也应该 ...
  • 初始化过程中出现故障:“System.Net.ServicePointManager”的类型初始值设定引发异常 今天打开vscode运行的文件的时候,突然出现这个问题。 问题如下: 无法启动此 shell。初始化过程中出现故障: “System.Net....
  • Servlet什么时候初始化

    千次阅读 2017-12-02 09:32:08
    Servlet什么时候初始化? 最近面试遇到了这样一道题,面试官问Servlet什么时候初始化?回答是:在web容器启动的时 候初始化,然后他笑了笑,我就一脸懵逼了。回来之后查了查资料,明白当时的回答是多么的傻! ...
  • 文章目录类加载机制类加载机制分类、类加载器、双亲委派机制类加载机制分类类加载器双亲委派机制加载.class文件的方式类生命周期类生命周期结束类加载过程JVM初始化步骤类加载时机类初始化时机类的初始化类的实例化 ...
  • 最近学着做个ssh的网站,随着一系列问题的产生与解决,网站也大概初具模型,但这些天又被一个问题困扰,怎样实现一输入网址就请求数据库数据后对网站首页进行初始化呢?一般的网站都是一进入index网站首页的...
  • 一、Servlet初始化 ①Servlet在初始化的时候,是通过init(ServletConfig config) 或 init() 来执行的。 ServletConfig 是一个接口,它怎样传递给他一格对象来进行初始化呢?其实,是这个对象是由 servlet 容 器...
  • 初始化流程

    千次阅读 2018-07-27 13:15:18
    一、类的初始化顺序(静态变量、静态初始化块:决于它们在类中出现的先后顺序)&gt;(变量、初始化块:决于它们在类中出现的先后顺序)&gt;构造器 原理: 1、加载类信息。在实例化对象之前,类的装载器会...
  • SpringMVC初始化过程

    千次阅读 2017-09-12 19:41:45
    springmvc是主流的MVC框架,首先从使用开始一步一步解析其初始化过程,springmvc的核心是DispatcherServlet,它是前端控制器,负责拦截客户端发过来的请求,然后解析请求进行分发。 DispatcherServlet是基于Servlet...
  • AJAX请求异常代码含义

    千次阅读 2013-02-21 21:20:49
    0 - (未初始化)还没有调用send()方法  1 - (载入)已调用send()方法,正在发送请求  2 - (载入完成)send()方法执行完成,已经接收到全部响应内容  3 - (交互)正在解析响应内容
  • Spring DispatcherServlet初始化详解(应用上下文的初始化)Spring的初始化主线如下: DispatcherServlet的继承体系结构图如下: 这个继承体系结构中HttpServletBean和FrameworkServlet是 对spring的支持。 ...
  • DispatcherServlet初始化过程

    千次阅读 2016-07-14 15:05:34
    上图是DispatcherServlet的继承树,我们可以看出DispatcherServlet其实是HttpServlet的子类,那么初始化的过程我们就从HttpServlet的init()方法开始看起。 实际上HttpServlet的init()方法是一个空方法,目的就是...
  • C++11中变量初始化方法汇总

    千次阅读 2019-10-25 17:19:58
    参考资料 [1] C++ Primer中文版(第5版) 1 背景     参考资料[1]P39提到,在C++语言中,初始化...
  • 中断描述符表的初始化

    千次阅读 2015-12-17 21:44:41
    Linux内核在系统初始化要进行大量的初始化工作,其与中断...为了防止用户使用INT指令模拟非法的中断和异常,必须对中断描述符表进行谨慎的初始化。其措施之一就是将中断门或陷阱门中的请求特权级DPL域置为0,如果用户进
  • 上一周调优一个项目的Js部分,其中一个严重的问题就是在页面初始化数据时,没有对异常进行处理, 导致Loading一直在等待中,无提示无处理。在用户体验上很不好,即使网络条件无法保证,在出错的情况下,也应该 ...
  •  某个类在static初始化代码块中启动了一个线程,用于监控该类的运行情况并打印日志,代码示意如下。 public class Test { static { new Thread(new Runnable(){}).start(); } ...// other code }在项目运行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 262,247
精华内容 104,898
关键字:

初始化请求异常