zoukankan      html  css  js  c++  java
  • 2016年工作中遇到的问题31-40

    31.Spring和Dubbo中都有@Service注解,需要注意。
    import com.alibaba.dubbo.config.annotation.Service;


    import org.springframework.stereotype.Service;


    32. Eclipse地方的注释换行了。
    /**
    * 校验令牌信息是否有效
    *
    * @param token
    *            令牌信息
    * @return 是否有效
    */
    public boolean checkToken(String token) throws MemberSecurityException;

    项目中需要改为:
    /**
    * 校验令牌信息是否有效
    *
    * @param token 令牌信息
    * @return 是否有效
    */
    public boolean checkToken(String token) throws MemberSecurityException;


    修改模版,
    Preference-Java-Code Style-Formatter-Edit-Comments-"New line after @Param tag"。


    把自己的Formatter.xml文件导出,再导入,Ctrl+Shift+F,格式化就可以了。

    33.SpringMVC,Fastjson,$ref.


    最后的json存在$ref,前端js不好处理。(前端应该存在对应的js组件,可以解析这种$ref引用)
    public static void main(String[] args) {
    Member member = new Member();
    member.setId(1L);


    List<Member> memberList = new ArrayList<Member>();
    memberList.add(member);
    memberList.add(member);
    System.out.println(JSON.toJSONString(memberList));
    }
    [{"id":1},{"$ref":"$[0]"}]




    解决办法1:
    public static void main(String[] args) {
    Member member = new Member();
    member.setId(1L);


    List<Member> memberList = new ArrayList<Member>();
    memberList.add(member);
    memberList.add(member);
    System.out.println(JSON.toJSONString(memberList,SerializerFeature.DisableCircularReferenceDetect));
    }
    输出:[{"id":1},{"id":1}]


    解决办法2:
    <bean id="jsonConverter"
        class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
        <property name="supportedMediaTypes" value="application/json;charset=UTF-8"/>
        <property name="features">
          <array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
            <value>DisableCircularReferenceDetect</value>
          </array>
        </property>
      </bean>
      <bean id="DisableCircularReferenceDetect" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
        <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect"></property>
      </bean>
      
    34.抛出异常,打印对应的“中文提示”。
    super(codeEnum.getRemark());//这句话很关键,有了它,抛出异常的时候,可以直接看到“错误提示”


    public enum MemberSecurityCodeEnum {
    INVALID_ACCESS_TOKEN(13000,"不合法的AccessToken"),
    ACCESS_TOKEN_EXPIRED(13001,"AccessToken已过期"),
    }

    public class MemberSecurityException extends Exception {


    private Integer code;
    private String msg;


    public MemberSecurityException() {
    super();
    }


    public MemberSecurityException(MemberSecurityCodeEnum codeEnum) {
    super(codeEnum.getRemark());//这句话很关键,有了它,抛出异常的时候,可以直接看到“错误提示”
    this.code = codeEnum.getCode();
    this.msg = codeEnum.getRemark();
    }
    }


    Exception in thread "main" exception.MemberSecurityException


    #这种提示更直观
    Exception in thread "main" exception.MemberSecurityException: AccessToken已过期


    public static void main(String[] args) throws MemberSecurityException {
    throw new MemberSecurityException(MemberSecurityCodeEnum.ACCESS_TOKEN_EXPIRED);
    }

    35.修改表字段的sql语句。
    alter table order_item
    change column productJson specJson text;


    36.SpringMVC属性读取和容器,父子关系。
     友情提示:父子关系理论应该是正确的,但不同配置文件之间的“父子关系”有待考验。
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath:spring-context.xml
    </param-value>
    </context-param>


    这个是“顶级容器”,spring-mvc-servlet.xml是子容器。
    猜测:web.xml先读取的是context上下文文件,另外MVC映射也是“可选的”。重要性方面,context更重要!


    另外一种场景,
    spring-context.xml
    <import resource="classpath:spring-bean-service.xml" />
    <import resource="classpath:spring-task.xml" />

    疑问:spring-task.xml和spring-bean-service.xml之间的关系是?
        猜测:平级,应该可以读取的到。他们都被导入到spring-context.xml中了。



    扫描配置文件
        <util:properties id="domainConfig" location="classpath:goods-domain.properties" />
    <context:property-placeholder properties-ref="domainConfig" ignore-unresolvable="true" />


    domainName=http://a.com
    ${domainName},如果注入到Java类中的变量值仍然是"${domainName}",而非“http://a.com”,就说明失败了。

    37.Cookie写入失败?Cookie只能用80端口吗?
       Java程序写入Cookie,浏览器再请求时,一只没有把Cookie带过来。
       代码是从之前的项目中copy过来的,质量是很有保障的。
       
       最终比较怀疑是,Cookie只能使用80端口,后来用了80端口,也还是不行。
       
       然后又怀疑是,SpringMVC的ResponseBody有影响。
       之前的代码是,手动调用Response.write发送字符串响应Web前端,然后跳转的。
       //@ResponseBody
    @RequestMapping(value = "/doLogin")
    public void doLogin(String loginName, String password,
       
       尝试了很多种方案,最后才开始考虑是配置问题,因为代码都是一样的。


       正解:
       p2p.domain=.p2p.jtn.com
    #p2p.static=http://p2p.jtn.com:80/static
    loginDomain=http://login.p2p.jtn.com:80
    frontDomain=http://p2p.jtn.com:80


    错解:
    frontDomain=http://dev.jtn.com:8080


    直接使用带了“http://"前缀的frontDomain


    解决办法:
    cookieDomain=.dev.jtn.com 
    frontDomain=http://dev.jtn.com:8080


    cookieDomain用这个名字,看着更加直观,不会再错啦!!!(*^__^*) 


    经验:论变量名称的重要性!!!


    38.注册的时候,一个人注册了多次。
    51 1897132630 3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d 0 0 2016-06-15 17:14:53 2016-06-15 17:14:53 0
    52 1897132630 3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d 0 0 2016-06-15 17:14:54 2016-06-15 17:14:54 0
    数据库的手机号,没有加“唯一约束”。


    使用zookeeper锁显然是不合适的,2个不同人,是可以同时注册的。
    最简单的办法,只能是数据库添加“唯一约束”了。


    39.Dubbo有警告warn。
    please config: dubbo.registry.file=xxx.properties。
    java.io.IOException: Can not lock the registry cache file C:UsersAdministrator.dubbodubbo-registry-224.5.6.110.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties
    at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:193)
    at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:150)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

    按照提示,配置了dubbo.registry.file=xxx.properties,还是不行。
    可能的解决办法:zookepper缓存,清除或者重启就好。


    40.JS换行符和在JS中整段地写HTML。
     在2013年或者2014年,之前的问题总结中,遇到过这个问题。
     当时,没有搞成功。
     今天,又遇到了这个问题,成功了。
     
     之前的
     var str = '' +
    '<!doctype html>' +
    '<html>' +
    '   <body>' +
    '       <h1>❤ unicorns</h1>' +
    '   </body>' +
    '</html>' +
    '';


    现在的
    var str = '
    <!doctype html>
    <html>
       <body>
           <h1>❤ unicorns</h1>
       </body>
    </html>';


    注意:不能使用Windows的换行符,"" 必须在最后;


    使用网上的某些JS插件,还可以这么写:
    var str = multiline(function(){/*
    <!doctype html>
    <html>
        <body>
            <h1>❤ unicorns</h1>
        </body>
    </html>
    */});


    原理:
      1. 在一个function中写上一段多行注释
      2. 将此function toString()
      3. 将多行注释内容用正则匹配出来


    参考资料:http://ourjs.com/detail/53c8826a7a0187d41d000003
    http://www.jb51.net/article/49480.htm
  • 相关阅读:
    SQL Server 2008通过PassPhrase加密数据
    SQL Server 2008之Values
    Merge(在一条语句中使用Insert,Update,Delete) 对两个表进行同步数据
    Linux yum常用命令介绍
    SQL Server 2008之WaitFor
    Android之TelephonyManager类的方法详解
    TextView里的文 html
    adb
    Apk得到Java源代码
    【Android】调用系统应用常用uri & intent设置
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462382.html
Copyright © 2011-2022 走看看