ppw项目-问题记录30个


1、详情页加载,下拉列表框for循环, 选中下拉框,单独的。
3者之间不要来往。


2、LayUI+JFinal,CRUD 代码自动生成+权限。
后台,目前还没用模版自动生成代码的方式,尽可能维护可复用的类、模块,方便维护一些。
约定优于配置。
JS。前端引入,完整一套,已经开始维护jtn-common-jquery等各种js了。
任重而道远。

3、#include("/_view/common/resource/header.html")
     #include("/_view/common/resource/js.html")
     
     js放在前面引入。
     如果放在后面引入,layui有个渲染的过程,用户会有0.5秒的渲染过程。
     有明显的视觉差异。
     
4、短信验证码按钮,必须用 button,a标签没有disabled属性。
禁止再次点击,不太方便。
目前防止“重复点击”,已经有了解决方案。
后端暂时没有引入Redis“中央单点锁”,所谓的“分布式锁”。


5、部署之前,要clean一次,防止和上次代码冲突

6、登录backendUser类型变了,从long变为int
redis必须重启,登录key保存时间1天导致

7、JFinal封装了各种基础方法。
   但是,性能存在潜在问题。
   fillModelList方法,会填充1个实体中的所有关联字段,但有的时候不需要,有的地方只需要1个字段,却查询了所有关联字段,
   造成极大的浪费。
   通过CostTimeInterceptor,大于0.5秒的,后续就单独优化下。
    /**
     * 通过id查找
     */
    public <K> Map<K, T> findByIdListAsMap(@Nullable List<?> idList) {
        logger.info("BaseService->findByIdListAsMap,idList={}", idList);
        // 主键默认为"id"
        String primaryKey = getPrimaryKeyName();
        return findByIdListAsMap(primaryKey, idList);
    }
    
8、养成习惯,检查一遍
从内部类中访问本地变量userModel; 需要被声明为最终类型。
Eclipse编译的时候,没有自动提示,Maven打包的时候,才提示。

9、Redis重启?
停止
redis-cli -h 127.0.0.1 -p 6379 shutdown

10、上线
先将之前的重命名,放到1个单独的目录,再用新的包部署,方便回滚

11、costTime拦截器,大于500ms 记录error日志。


12、jQuery和vue一起使用的时候,先后顺序的问题。
jQuery初始化之后,才会初始化config的API_URL变量。
但是,vue可能在这之前,就使用了config的变量,这个时候API_URL可能还没有初始化。
因此,为了统一,不人工去解决先后顺序问题,统一让jQuery初始化之后,再让vue发送请求,
并且config这种基础配置,放在业务代码的前面。

var API_URL = "";
var ossDomain = "";   

$(function(){
    API_URL =  $("#backendDomain").val()+"/admin/"; 
    ossDomain = $("#ossDomain").val();  
    console.log("API_URL:"+API_URL);
    console.log("ossDomain:"+ossDomain);
});


var config = {
    idcardListData : API_URL + "idcard/listData",
    
    }
    mounted(){
        console.log("mounted");
        //vue必须在jQuery之后执行
        $(function(){
            this.getData();
        });
    }

13、HTML5的input[type=number],最小值是1,只能是整数。
充值金额如果支持小数,比如1.23,就不能用这个type。

14、HTML标题的优先级
<title>首页-${siteName}</title>
<#include "/common/css_js.html" />(<title>${siteName}</title>)
先引入的标题生效了。
通用页里维护 通用的标题,具体页面里,如果需要覆盖标题,再单独定义title。

15、js long丢失
  vue用了key限制,2个id相同的只会展示1个。
  后端bigint的long,在js由于精读丢失,2个id一样,10条数据,只展示了7条。
  <tr v-for="(item,index) in page.list" :key="item.id">
                        <td>{{item.id}}</td>
    </tr>

16、layui的图标字体,不需要引入。
css使用样式的时候,根据相对路径,自动引入了。
<!-- <link rel="stylesheet" type="text/css"
    href="/static/framework/layui/font/iconfont.ttf"> -->

17、三要素认证(实名)
根据【手机号、姓名、身份证号码】来校验三者是否一致。支持移动、联通、电信。
https://market.aliyun.com/products/57000002/cmapi026061.html?spm=a2c4e.11153940.blogcont552767.17.4dad1e0eeL3R7z#sku=yuncode2006100000

四要素认证(绑定银行卡)
https://market.aliyun.com/products/57000002/cmapi021096.html?spm=a2c4e.11153940.blogcont629430.18.117e2803ccA9BV#sku=yuncode1509600000
根据【银行卡号、身份证号码、开户名、手机号】四个元素进行校验信息是否匹配一致。

18、用户投标回款的钱,项目还款的钱,差1分钱。
rid 659,repay_amount和return_amount差1分钱?精确度?
loan_repay需要还的金额,100元,以100总数计算。
投标(50,35,15)分3个值分别计算利息,3次利息之和 不等于100一次性的利息之和。

严谨的做法,项目回款的钱 等于 用户回款的钱之和。
这种设计,能适应更多需求场景。
比如,某几个用户有加息。

19、数据库DDL添加字段

一次添加多个
alter table recommend add(
   extral_url varchar(1000) DEFAULT NULL COMMENT "跳转页面的url",
   extral_url2 varchar(1000) DEFAULT NULL COMMENT "跳转页面的url"
);
公司内部SQL校验,不支持这种。

一次添加1个
alter table recommend add
 column  extral_url varchar(1000) DEFAULT NULL COMMENT "跳转页面的url"
;


20、一个奇怪的bug
layui admin框架,网上下载了个2017年6月版本。
正常在tab之间切换,没问题。
但是,有一个tab名字叫做“会员等级”,就不能正常切换。
改成“会员等级列表”就行,其它的“项目列表”也正常。
jtnTabChange(configTab.userLevelListName);


找不出问题原因。


21、axios发送的请求不带“XMLHttpRequest”,不带清楚原因

后端总是返回false
    public static boolean isAjaxRequest(HttpServletRequest request) {
        String requestedWith = request.getHeader("x-requested-with");
        if (StringUtils.isEmpty(requestedWith)) {
            return false;
        } else if (StringUtils.isNotEmpty(requestedWith) && requestedWith.equals("XMLHttpRequest")) {
            return true;
        }
        return false;
    }
    
必须手动加上,坑爹    
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

22、从数据库统计的数据,一定要判断null。
sum等。

23、开发环境,一直用Chrome。
自测的时候,可以偶尔换换浏览器。
像上传图片等,不能总是长传同1张图片,不同的图片都试试。
多测试几种场景,可能会有新发现。

24、HTML5,doctype很关键,对布局样式有影响。
图片对齐遇到过bug。
用<!DOCTYPE html>
<html>

不再用老家伙啦
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

25、导出按钮等增加防止重复点击
function jtnDownload(btnId,formId, url) {
    disableOne(btnId);
    enableOneLater(3000);
    var form = $("#" + formId);
    var formOriginalUrl = form.attr("url");
    form.attr("action", url);
    form.submit();
    form.attr("action", formOriginalUrl);
}

26、JFinal重定向
    response.sendRedirect虽然可以,但是会打印错误,页面找不到,换一种方式
    public void intercept(Invocation inv) {
        Controller c = inv.getController();
        //response.sendRedirect(BackendLoginInterceptor.loginUrl);
        c.redirect(BackendLoginInterceptor.loginUrl);
    }
    
27、vue下,才能使用axios,后台数据在res.data里

28、修改表的自增起始值
alter table withdraw  auto_increment = 10000;


29、Eclipse里Git总是无法提交,提示内部错误啥的。
D:\GitRepos\jtn\jtnabc\.git
看到提交失败,就试试“add index”添加到索引也还是不行,然后根据提示去目录里看了看,发现一个“index.lock”文件。
删除之后,就好了。
这应该是git维护的文件锁,还好懂点,多学点东西还是有用的,不知道哪天就用上了。


30、Tomcat 启动时 SecureRandom 非常慢解决办法
2018-12-17 22:50:35.735 INFO  [localhost-startStop-1] (ContextLoader.java:325) - Root WebApplicationContext: initialization completed in 950 ms
Dec 17, 2018 10:57:25 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [409,543] milliseconds.
直接改的jre。因为1个机器上JDK只有1个,而Tomcat可能有多个。
已验证。

解决办法:
a. 在Tomcat环境中解决:

可以通过配置 JRE 使用非阻塞的 Entropy Source:

在 catalina.sh 中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。

b. 在 JVM 环境中解决:

打开 $JAVA_PATH/jre/lib/security/java.security 这个文件,找到下面的内容:

securerandom.source=file:/dev/random
替换成:

securerandom.source=file:/dev/./urandom

https://www.jb51.net/article/117086.htm
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值