2016年8月到12月笔记整理

 

order by date

2016-08-01

通过查询svn提交记录来查询新的接口使用了哪些jar包

2016-08-03

java 版本设置 JAVA_HOME,如果设置不顶用,使用where java命令去查看java在哪里, 最有可能的结果是在system32目录下,此目录的优先级比JAVA_HOME优先级高

2016-08-04

订单状态:

  1. 待分配:班长批量分配订单,系统自动加处理轨迹,无需填写备注
  2. 待审核:审单人员再分配订单,批量分配
  3. 待开户:客户经理受理
  4. 待发货:交接件
  5. 物流在途:
  6. 成功关闭:批量成功关闭,无需填备注,支持批量导出订单号做关闭
  7. 处理退单:1-4状态都可以转为此状态
  8. 物流退单:
  9. 系统退单:货到付款,待审核、待开户状态,系统保留T+8 22点,如果没有变为待发货状态,自动变系统退单状态,号码释放

2016-08-07

2016-08-18

  • tomcat 远程debug ./catalina.sh jpda start
  • java 远程debug -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=”8000”

2016-08-23

  • socket绑定本机地址(绑定浮动ip)
  • iptables -F 关闭防火墙

2016-08-29

abandon connection, owner thread: http-8080-exec-3, connected time nano: 21511211962817057, open stackTrace removeAbandonedTimeout:程序从连接池中获取一个connection后, 连接池为了防止程序使用完后忘记close掉connection,而提供的这样一个参数,用来设置connection最迟多少s后被关闭,这里只设置了50s,而我在程序中需要插入大量数据到数据库,50s是不够的,插入操作还没执行完,连接池就主动关闭了connection,因此报错,所以我将时间设置为180s

2016-08-31

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->
<!--[if IE 7]> 仅IE7可识别 <![endif]-->
<!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if IE 8]> 仅IE8可识别 <![endif]-->
<!--[if IE 9]> 仅IE9可识别 <![endif]-->
if ((navigator.userAgent.indexOf('MSIE') >= 0)&& (navigator.userAgent.indexOf('Opera') < 0)){
    alert('你是使用IE')
}else if (navigator.userAgent.indexOf('Firefox') >= 0){
    alert('你是使用Firefox')
}else if (navigator.userAgent.indexOf('Opera') >= 0){
    alert('你是使用Opera')
}else{
    alert('你是使用其他的浏览器浏览网页!')
}
/* var f=document.createElement("form");
f.setAttribute("action" , "http://www.baidu.com" );
f.setAttribute("method" , 'get' );
f.setAttribute("target" , '_black' );
document.body.appendChild(f)
f.submit(); */

2016-09-04

12306 在线支付流程

  1. 在点击支付时已获取支付的url.
  2. 用户点击a标签不会拦截,同时弹出信息页, 支付遇到问题,还是支付成功
  3. 用户进行支付,如果支付以后会跳转,则在跳转回本地页面的同时,通知后台进行状态的改变, 同时关闭此页面
  4. 用户选择支付完成还是遇到问题

<img src="data:image/png;base64,这里放字符"/>

2016-08-19

踩坑经历:

  1. FTP文件目录 在包含权限的情况下 与ssh登录不一致
  2. input type=file IE下只有用户主动点击才会上传,否则会报拒绝访问异常

其他:

  • 大段文字开头空两个字 div的style加text-indent:2em;
  • mysql字段追加
      UPDATE 
          t_wt_realname_linshi 
      SET
          msg1 = CONCAT(IFNULL(msg1,'0') , '收到')
      WHERE tel = '18519332403' ;
    
  • 修改mysql自增初始值alter table users AUTO_INCREMENT=10000;

  • img标签的align属性可控制图片与文字的对齐方式,align属性的值如下:

    • AbsBottom 图像的下边缘与同一行中最大元素的下边缘对齐。
    • AbsMiddle 图像的中间与同一行中最大元素的中间对齐。
    • Baseline 图像的下边缘与第一行文本的下边缘对齐。
    • Bottom 图像的下边缘与第一行文本的下边缘对齐。
    • Left 图像沿网页的左边缘对齐,文字在图像右边换行。
    • Middle 图像的中间与第一行文本的下边缘对齐。
    • NotSet 未设定对齐方式。
    • Right 图像沿网页的右边缘对齐,文字在图像左边换行。
    • TextTop 图像的上边缘与同一行上最高文本的上边缘对齐。
    • Top 图像的上边缘与同一行上最高元素的上边缘对齐。
  • 去重SELECT DISTINCT Company FROM Orders

  • CRT 设置vim语法高亮

    • 设置语法高亮,多色显示 Options -> Session Options -> Emulation (Terminal) 其中Terminal选择 【Xterm】,勾选【ANSI Color】和【Select an alternate keyboard emulation】 设置完成,重新连接。

    • 设置字体 Options->SessionOptions->Appearance->font,然后改成【Courier New】,OK 搞定~

疑问:

  • tomcat怎么知道ServletContextListener 此接口被某一实现类实现了 通过web.xml

2016-10-06

今天在210.13.0.141上安装jdk1.8 和Groovy 2.4.7 使用到的linux命令总结一下

  • 文件解压缩
  • tar.gz文件
    • 压缩命令:tar -zcvf 压缩文件名.tar.gz 被压缩文件名 可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。
    • 解压缩命令:tar -zxvf 压缩文件名.tar.gz 解压缩后的文件只能放在当前的目录。
  • zip文件
    • 解压缩 unzip file.zip 解压在当前目录
  • 查看linux 环境变量
    • 查看当前所有的环境变量 $ env
    • 查看指定的环境变量 $ echo $JAVA_HOME
    • 查看环境变量列表 cd /etc/profile 只有root可以编辑,其他只读
  • 增加新的环境变量
    1. vi /etc/profile
    2. 进入vi界面以后 按大写的G 跳到最后一行。 然后按小写的O键,增加一行。 开始编辑 编辑完成以后 按Esc 输入:wq 退出到控制台界面
    3. 执行命令source /etc/profile来生效 新的环境变量
      • :wq 保存文件并退出vi
      • :w 保存文件但不退出vi
      • :w file 将修改另外保存到file中,不退出vi
      • :q 不保存文件,退出vi
    4. 输入java -version 即完成修改

2016-10-07

SELECT  
CASE WHEN salary <= 500 THEN '1'  
WHEN salary > 500 AND salary <= 600  THEN '2'  
WHEN salary > 600 AND salary <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END salary_class, -- 别名命名
COUNT(*) 
FROM    Table_A
GROUP BY  
CASE WHEN salary <= 500 THEN '1'  
WHEN salary > 500 AND salary <= 600  THEN '2'  
WHEN salary > 600 AND salary <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END

2016-10-27 mysql存储过程

2016-11-01

c3p0 设置多数据源,以及mysql数据库8小时连接断开问题 见monitor 设置连接最大存活时间 即可解决

查看端口连接数 netstat -pnt |grep :8801 |wc -l

2016-11-20

400w 数据 update 10min 23s

2016-12-03 url中#号的使用

#号 描点

  1. 代表网页中的一个位置。其右面的字符,就是该位置的标识符。比如,http://www.example.com/index.html#print就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。 为网页位置指定标识符,有两个方法。一是使用锚点,比如,二是使用id属性,比如<div id="print">
  2. 改变#不触发网页重载 重新加载
  3. 改变#会改变浏览器的访问历史
  4. onhashchange事件 这是一个HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。它的使用方法有三种:
    • window.onhashchange=function;
       window.onhashchange=function(){
        var hashStr = location.hash.replace("#","");
        console.log(hashStr);  
        if(hashStr=="ddddd"){
            do something;
        };
       }
      
    • <body onhashchange="func();">
    • window.addEventListener("hashchange", func, false);   对于不支持onhashchange的浏览器,可以用setInterval监控location.hash的变化。

背书:

票据的收款人或持有人在转让票据时,在票据背面签名或书写文句的手续。背书时写明受票人姓名或受票单位名称的,称记名背书;未写明受票人姓名或受票单位名称的,称空白背书。经过背书转让的票据,背书人负有担保票据签发者到期付款的责任,如果出票人到期不付款,则背书人必须承担偿付责任。经过背书,票据的所有权由背书人转给被背书人。一张票据可以多次背书、多次转让。背书按其附带的记载划分有限制性背书、委托收款背书、有条件背书、质押背书和部分背书(分割背书) 5种方式。 复式记账法:

复式记账法的理论依据是“资产=负债+所有者权益”的会计等式。按照会计等式,任何一项经济业务都会引起资产与权益之间至少两个项目发生增减变动,而且增减变动的金额相等。因此对每一笔经济业务的发生,都可以以相等的金额在两个或两个相关账户中作等额双重记录。这种记账如实反映了经济事物的客观联系,是一种科学的记账方法。;

2016-12-09

filter 和过滤器链

redis 缓存 session 原理 依赖cookie url重写 http参数

保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。

由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://…../xxx;jsessionid=ByOK … 99zWpBng!-145788764 另一种是作为查询字符串附加在URL后面,表现形式为http://…../xxx?jsessionid=ByOK … 99zWpBng!-145788764 这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。 为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历,但如果页面显示的设置Session=false;是当前页面禁用session隐含的变量,但可以显示的定义其他session变量

2016-12-11 关于mybatis 缓存的那些事

单独使用mubatis 使用时, 可以使用mybatis 的一级缓存和二级缓存, 一级缓存默认开启状态 是session级别的, 当在同一个session里,进行两次一样的sql查询,第二次直接从缓存中取, 可以将mybatis 的日志级别调为debug,进行验证.

二级缓存是全局的 在同一个namespace中, 不同的session 都会在缓存中进行查询,查询不到才会查库,

但把mybatis 与spring 进行集成以后, 一级缓存不能使用,因为mybatis 直接将”sqlSessionFactory” 交给spring 进行管理, 当然不可能会有同一个session,去使用缓存了.

所以在spring中只能使用二级缓存,但在使用二级有以下注意点:

  1. 缓存的失效点是表的 crd操作,也就是说 只要crd,缓存就会清空.
  2. 一个表的cud 操作必须在同一个namespace 下,由于二级是针对同一个namespace的,设想一下,如果在namespace A里 有关于table eg1的查询操作,在namespace B里 有关于table eg1的更新操作,如果此时B里进行更新,但是A中的缓存是不会清空的,会读出脏数据.
  3. 只能对单表进行缓存,同理多表关联不可能只在同一个namespace下,会引起脏值
  4. 缓存对象的实体类必须实现序列化接口,因cache可能会在内存,磁盘.

http://blog.csdn.net/isea533/article/details/44566257

  1. 开启缓存只需要加入标签, 更多自定义属性可百度
  2. 不要滥用二级缓存,可以自己写一个 static 的 ConcurrentHashMap ```xml

```

  • property参数配置不加也可以,都会有一个默认值,大家也可以查查一共有哪些配置,然后根据自己的需要来配置,然后这个配置是会带上cache执行的日志,如果不要带日志可以把LogginEhcache改成EhcacheCache。
  • 如果readOnly为false,此时要结果集对象必须是可序列化的。需要将实体对象implements Serializable

在mapper.xml这样设置了默认是全部操作都会执行缓存策略,如果有某些sql不需要执行,可以把useCache设置为false。

<select id="selectUser" resultMap="BaseResultMap" parameterType="XX.XX.XX.XX.User" useCache="false" >

CRUD是指在做计算处理时的增加(Create)、读取(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)

2016-12-12

2016-12-21

如果在只是想匹配模式的上下几行,grep可以实现。

  • $grep -5 ‘parttern’ inputfile //打印匹配行的前后5行
  • $grep -C 5 ‘parttern’ inputfile //打印匹配行的前后5行
  • $grep -A 5 ‘parttern’ inputfile //打印匹配行的后5行
  • $grep -B 5 ‘parttern’ inputfile //打印匹配行的前5行

Linux查找文件内容的常用命令方法。

  • 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名 例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件 grep "thermcontact" */*.in
  • 从文件内容查找与正则表达式匹配的行: $ grep –e "正则表达式" 文件名
  • 查找时不区分大小写:$ grep –i "被查找的字符串" 文件名
  • 查找匹配的行数:$ grep -c "被查找的字符串" 文件名
  • 从文件内容查找不匹配指定字符串的行:$ grep –v "被查找的字符串" 文件名
  • 从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行 find / -type f -name “.log” | xargs grep “ERROR” 例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行 find . -name “.in” | xargs grep “thermcontact”

vconsole手机调试

docker test arukas.io