• 学习笔记1


       参加工作一年多了, 但是总觉得技术没有什么长进,最近出去面试,总结出的面试的问题。开始面试的是一家小公司,问了项目的用的技术,我说了的git、maven、springMVC,mybatis, 以及dubbo方面的技术于是面试官的开始问了git方面的问题,如下图1所示:A版本->B版本->C版本, 当要回退到A版本的怎么回退,git命令:git reset --hard 版本号,然后git push,这时其他的开发者拉取你的分支会出现冲突,然后解决冲突,然后在push上去即可,

                     

                                  图1 

       然后问了关于数据结构的问题: 一个单向链表,如图2所示,指针当前指向的时B节点,怎么删除B节点,当时以为直接由A指向C不就完了么,但是仔细一想应该不可能这么简单,果然我时无法获取A节点的指针的,所以不行,然后我想了半天,没有想出来,就直接说我没有想出来。

                图2 

         还好面试官人还是很好,并没有说啥,然后给我说了耐心的说了下思路,可以将C节点的值复制到B节点,然后将B节点的指针指向D节点,不就可以等价的转换为将B节点删除掉。思路确实很巧妙。如图3

                           如图3

       接着,他问了堆栈方面的问题: 有个很长的数组,如何实现三个堆栈,假如 A,B,C三个堆栈,一个函数传入堆栈名A,操作的是A堆栈的数据,问怎么实现?这个当时还是比较简单,我想了下,就说出了思路,堆栈头分别从数组的 0,1,2开始存,然后每个元素间隔2元素保存,如图4

                    图4

         这次数据库的知识有点难的,写一个分组排名前几名的sql查询语句,有一张表是 (班级,姓名,成绩) , 求出每个班级的前三名的分数,开始思路是准备用group_concat函数去做的,但是这样就前三名写到一个字段里去,经过尝试还是没有写出来。 下面给个参考:

    select a.*    from class as a

    where (select count(*) from class as b where a.class_name = b.class_name and b.score < a.score) < 3
    order by score;

    查询结果类似下面:

    `       spring的知识方面,是问了bean的作用域,当时只回答了其中的两个:singleton和prototype, 还有三种种: request和session、global session。

       1 singleton

       spring的bean的scope是单例对象,当一个bean的 作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把 一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例.

       配置实例:
    <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>
    或者
    <bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/>

       2.prototype

      相对于singleton,prototype则是多例的,prototype作用域部署的bean,每一次请求调用注入时,则会产生新的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。 清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用 bean的后置处理器,该处理器持有要被清除的bean的引用。)

      配置实例:

    <bean id="role" class="spring.chapter2.maryGame.Role" scope="prototype"/>
    或者
    <beanid="role" class="spring.chapter2.maryGame.Role" singleton="false"/>

        3. request

      request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可: 
    <web-app>
       ...
      <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
      </listener>
       ...
    </web-app>

    接着既可以配置bean的作用域了: 

    <bean id="role" class="spring.chapter2.maryGame.Role" scope="request"/>
     4 .session
      session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效,配置实例:
      配置实例:
       和request配置实例的前提一样,配置好web启动文件就可以如下配置: 
      <bean id="role" class="spring.chapter2.maryGame.Role" scope="session"/>

      5、global session

      global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。
    配置实例:
    和request配置实例的前提一样,配置好web启动文件就可以如下配置: 
    <bean id="role" class="spring.chapter2.maryGame.Role" scope="global session"/>

    引用了这篇文章: http://www.cnblogs.com/qq78292959/p/3716827.html

    未完待续

                    

  • 相关阅读:
    seriviceWorker 小结
    Number.prototype.toLocalString() js
    浏览器h5新建文件 保存到本地(相当于浏览器写文件)
    ios 当margin-left margin-right 超过设备宽度
    数组变char
    字符窜转数字
    stream 的方式遍历
    LinkedHashSet 去掉重复数据
    前端判断是否为空字符窜
    前端去掉空格的方法
  • 原文地址:https://www.cnblogs.com/xjz1842/p/5944548.html
Copyright © 2020-2023  润新知