西安面试第一天面试问题总结

struts2运行原理

          1、tomcat 启动的时候会加载 web.xml 、核心控制器 (老版)FilterDispatcher、(新版)StrutsPrepareAndExecuteFilter                 会加载并解析 struts.xml

          2、客户端会发送一个请求到 action 、StrutsPrepareAndExecuteFilter(新版)  会根据后缀名进行拦截

          3、FilterDispatcher根据 struts.xml  的配置文件信息 找到 某个action 对应的某个类里的指定方法

         4、执行相关的业务逻辑最后返回 一个String

         5、<action/> 里配置 <result/> name的属性值与返回的String 进行匹配,跳转到指定的jsp 页面

 mybatis # $ 区别

       1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那               么      解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id"  
       2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by                   user_id,  如果传入的值是id,则解析成的sql为order by id.
       3. #方式能够很大程度防止sql注入。
       4.$方式无法防止Sql注入
       5.$方式一般用于传入数据库对象,例如传入表名
       6.一般能用#的就别用$

       MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

redis数据如何更新的

mybatis项目中怎么查询,怎么配置,怎么整合

         1.导入mybatis的pom节点

         2.配置数据源

         3.spring配置文件中配置扫描mapper层xml位置

         4.编写xml里面的sql

         5.把接口层查询跟xml文件中每个mybatis标签的id属性值保持一致,然后调用查询

mongodb介绍          

          1.   我们主要用mongodb来存储我们项目里面的操作日志(银行的付款转账记录,角色权限的变动日志),我们主要是结               合aop来使用的,首先我们来配置一个aop的切面类,再给aop的使用规则,哪个类里面的哪个方法使用当前切面类,利              用后置通  知类获取当前方法的操作日志,将操作日志存储到mongodb,然后进行分类管理查看。利用后置通知传到数据              库。

            2.   我们在项目中使用它来存储电商产品详情页的评论信息(评论id,商品id,标题,评分,内容,评论人信息,评论的发布                时间,评论标签组)并且为了提高可用性和高并发用了3台服务器做了mongodb的副本集,其中一台作为主节点,另外              两台作为副本节点,这样在任何一台mongodb服务器宕机时就会自动进行故障转移,不会影响应用程序对mongodb的操                作,为了减轻主节点的读写压力过大的问题,我还对mongodb副本集做了读写分离,使写操作在主节点进行,读取操作              在副本节点进行。为了控制 留言,我们留言的界面设置在了订单状态,只有状态为5,也就是交易成功收货后才能评                   论, 并在评论成功后将订单状态改为6

【补充:如果问到副本集是怎么搭建的,就说我们有专门的运维人员来负责搭建,我只负责用Java程序去进行操作】

Spring和mongodb整合步骤:

1.   添加依赖的jar包

要想整合Spring和Mongodb必须下载相应的jar,这里主要是用到两种jar一种是spring-data-document和spring-data-commons两种类型的jar

2.定义实体类

3.Spring配置

新建application.xml配置文件

这个必须要的引入mongodb标签xmlns:mongo="http://www.springframework.org/schema/data/mongo"

在配置文件中加入链接mongodb客服端

<mongo:mongo host="localhost" port="27017">  

</mongo:mongo>

注入mogondb的bean对象

   <bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemp"> 

      <constructor-arg ref="mongo"/> 

      <constructor-arg name="databaseName" value="db"/> 

      <constructor-arg name="defaultCollectionName" value="person" /> 

   </bean> 

   <bean id="personRepository" class="com.mongo.repository.PersonRepository"> 

        <property name="mongoTemplate" ref="mongoTemplate"></property> 

  </bean> 

4.然后编写操作mongodb增删查改的接口

      public interface AbstractRepository { 

      public void insert(Person person); 

      public Person findOne(String id); 

      public List<Person> findAll(); 

      public List<Person> findByRegex(String regex); 

      public void removeOne(String id); 

      public void removeAll(); 

      public void findAndModify(String id); 

  } 

再写对应接口的实现类:

  import java.util.List; 

  import java.util.regex.Pattern; 

   

  import org.springframework.data.document.mongodb.MongoTemplate; 

  import org.springframework.data.document.mongodb.query.Criteria; 

  import org.springframework.data.document.mongodb.query.Query; 

  import org.springframework.data.document.mongodb.query.Update; 

   

  import com.mongo.entity.Person; 

 import com.mongo.intf.AbstractRepository; 

   

  public class PersonRepository implements AbstractRepository{ 

     private MongoTemplate mongoTemplate; 

      @Override 

      public List<Person> findAll() { 

          return getMongoTemplate().find(new Query(), Person.class); 

      } 

   

     @Override 

     public void findAndModify(String id) {  

       getMongoTemplate().updateFirst(new Query(Criteria.where("id").is(id)), nw Update().inc("age", 3));

      } 

       @Override 

      public List<Person> findByRegex(String regex) { 

          Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE); 

          Criteria criteria = new Criteria("name").regex(pattern.toString());            return getMongoTemplate().find(new Query(criteria), Person.class);        } 

       @Override 

      public Person findOne(String id) { 

          return getMongoTemplate().findOne(ne

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
西安交通大学计算机科学与技术夏令营的面试对于我来说是一个难得的机会。这次面试对于我的职业发展意义重大,我将借此机会展示我在计算机科学领域的热情和才能。 首先,在面试中,我将充分展示我对计算机科学的知识和技能。我将准备好对计算机科学的基本概念和理论进行深入的讲解并能够解答面试官的相关问题。我会将自己在计算机科学课程中所学到的知识应用到实际问题中,展示出解决问题的能力和创新思维。 其次,我将积极参与面试中的实践操作和团队合作项目。在实践操作中,我会展示我在计算机编程和软件开发方面的能力。我将展示我在解决实际问题、设计算法以及编写和调试代码方面的实践经验。同时,在团队项目中,我会积极参与并展示我良好的沟通能力和团队合作精神。 此外,我还将准备好回答可能出现的问题。我会提前了解西安交通大学计算机科学与技术夏令营的相关信息,包括学校的课程设置、学术氛围以及就业前景等。我会积极思考我为什么选择西安交通大学、为什么喜欢计算机科学等问题,并准备相关的回答。 最后,我希望通过此次面试能够获得进一步了解西安交通大学计算机科学与技术夏令营的机会。我相信这次面试不仅是对我的综合素质和实践能力的考察,同时也是与面试官建立联系的机会,他们将成为我未来职业发展中的导师和合作伙伴。 总之,我会充分准备并发挥出自己的优势。通过这次面试,我希望能够展示自己在计算机科学领域的才华和热情,并获得进一步了解西安交通大学计算机科学与技术夏令营的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值