2018年10月工作中遇到的问题

1、知识点:Spring Cloud

对象 RestTemplate:该对象会使用 Ribbon 的自动化配置,同时通过配置@LoadBalanced还能够开启客户端负载均衡。

2、RestTemplate 针对几种不同请求类型和参数类型

GET请求

     第一种: getForEntity 函数:

第二种: getForObject 函数:

POST请求

第一种: postForEntity 函数:

第二种: postForObject 函数

 

第三种: postForLoca巨on函数。 该方法实现了以POST请求提交资源, 并返回新资源的URI

3、详细设计阶段用到了哪些图形工具? 

程序流程图(PFD)  

盒图(N-S 图)  

问题分析图(PAD)  

判定表/判定树(其他非图形工具有过程设计语言(PDL) 

4、input 输入 小写转大写 遇到坑

①、<input type="text" id="txt1" value="" style="text-transform:uppercase"/>这种方式开起来转成大写了,实际上,在取值的时候还是小写。

②、解决办法:

法一:适配所有input框

法二:

 

5、数值的计算

①、BigDecimal类的加减乘除

public BigDecimal(double val);//将double表示形式转换为BigDecimal

public BigDecimal(int val);//将int表示形式转换为BigDecimal

public BigDecimal(String val);//将字符串表示形式转换为BigDecimal

public BigDecimal add(BigDecimal augend);//加法

public BigDecimal subtract(BigDecimal subtrahend);//减法

public BigDecimal multiply(BigDecimal multiplicand);//乘法

public BigDecimal divide(BigDecimal divisor);//除法

②、比较大小

BigDecimal a = new BigDecimal("1.00");

BigDecmial b = new BigDecimal(1);

想比较一下a和b的大小,一般都会用equals

System.out.println(a.equals(b));

但是输出结果是:false

原因是:BigDecimal比较时,不仅比较值,而且还比较精度?

if(a.compareTo(b)==0) 结果是true

比较大小可以用 a.compareTo(b)

返回值    -1 小于   0 等于    1 大于

③、保留小数据点位数

MySQL锁表:select for update

是为了在查询时,避免其他用户以该表进行插入,修改或删除等操作,造成表的不一致性.

 

select * from t for update 会等待行锁释放之后,返回查询结果。
select * from t for update nowait 不等待行锁释放,提示锁冲突,不返回结果
select * from t for update wait 5 等待5秒,若行锁仍未释放,则提示锁冲突,不返回结果
select * from t for update skip locked 查询返回查询结果,但忽略有行锁的记录

 

SELECT...FOR UPDATE 语句的语法如下:

  SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];

其中:

  OF 子句用于指定即将更新的列,即锁定行上的特定列。

  WAIT 子句指定等待其他用户释放锁的秒数,防止无限期的等待。

 

“使用FOR UPDATE WAIT”子句的优点如下:

  1防止无限期地等待被锁定的行;

  2允许应用程序中对锁的等待时间进行更多的控制。

  3对于交互式应用程序非常有用,因为这些用户不能等待不确定

  4 若使用了skip locked,则可以越过锁定的行,不会报告由wait n 引发的‘资源忙’异常报告

**:开启事务之后锁表,等事务结束之后锁表自动被释放

 

JSP-导入taglib 出现classNotFound异常:

java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV

 

案例

 

前端登录跳转到指定jsp,报classNoFoundException,原因是页面导入 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 导致的

Caused by: java.lang.ClassNotFoundException:

org.apache.jsp.WEB_002dINF.jsp.common.index_005fmenu_jsp

       at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

       at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

       at java.security.AccessController.doPrivileged(Native Method)

       at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

       at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132)

       at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)

       at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:121)

       at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172)

       ... 52 more

在pom.xml添加如下配置发现也没效果


 

<dependency>
   <groupId>javax.servlet.jsp.jstl</groupId>
   <artifactId>jstl-api</artifactId>
   <version>1.2</version>
</dependency>

解决方案

经网上搜索,是缺少jstl相关包的问题,刚才我们只是导入了jstl-api,而没有导入jstl的实现,所以再导入jstl 的实现。去mvnrepository上找jstl 的实现,基本上有两个版本,一个是glassfish 的jstl-impl, 另一个是apache的taglibs-standard-impl,一直犹豫不决该用谁,最后在stackoverflow.com/a/25374024/1443527上发现网友分享了他实现的经验,他用的是glassfish版本,所以我们也引人这个。由于tomcat7是兼容j2ee 3.0规范的,所以我们将jstl 依赖的东西给去除掉,防止和tomcat自身的servlet jar包冲突,改正后的依赖为


    

  <dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
   <exclusions>
      <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
      </exclusion>
      <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<dependency>
   <groupId>org.glassfish.web</groupId>
   <artifactId>jstl-impl</artifactId>
   <version>1.2</version>
   <exclusions>
       <exclusion>
           <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
       </exclusion>
       <exclusion>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
       </exclusion>
       <exclusion>
             <groupId>javax.servlet.jsp.jstl</groupId>
             <artifactId>jstl-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

顺便说一下jstl-impl-1.2.jar 和taglibs-standard-impl-1.2.1.jar 的区别,这两个包的内容很相似,后者应该是前者的一个再打包,因为Apache的taglibs工程从2009年以后一直处于停止状态。

如果你要引人后者,那么依赖应该为:    

<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-spec</artifactId>
    <version>1.2.1</version>
</dependency>

<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.1</version>
</dependency>

 

猜你喜欢

转载自blog.csdn.net/LookForDream_/article/details/84567362