81.“标题党”与“百度收录”问题。
很久以来,就发现那些“标题党”的收录和排名情况非常好,比如CSDN某篇文章,就随便一写,就排在了第一。
因此,如果这个收录和排名规则不变的话,今后也可以利用一下。
比如,我自己总结的问题,如果是为了整理记录,就统一放在1篇文章里。
如果,今后为了宣传或者推广,发帖子的时候,就取一个好的标题,吸引网友的眼球,吸引搜索引擎的眼球。
82.Mybatis找不到参数错误:There is no getter for property named 'categoryId' in 'class java.lang.Integer'。
错误
List<Post> listPage(Integer categoryId);
在测试时报错:There is no getter for property named 'categoryId' in 'class java.lang.Integer'
 问题分析:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取string.value值,引起报错。
 解决方法:  List<Post> listPage(@Param("categoryId")Integer categoryId); 说明参数值。
 
 sql语句
<select id="listPage" resultMap="PostResultMap">
select id,title,summary,create_time from p2p_post
 where status=0 
 <if test="categoryId != null">
  and category_id=#{categoryId}
 </if>
 order by id
desc
</select>
 最让人郁闷的是,以前在只有1个参数的时候,都是不用@Param注解的,一般只有在多个参数的时候,才需要用。
 为什么这次,只有1个参数,也必须用@Params注解呢?
 -----------------------
 第2天早上,问了下boss,感觉还是有道理的。
 
 正解一:
 @Select("select * from ..")
 List<Post> listPage(Integer categoryId);
 
 正解二:
  List<Post> listPage(@Param("categoryId")Integer categoryId);
  <select>..</select>
  
 正解三:
   List<Post> listPage(Integer categoryId);
  <select id="listPage" parameterType="java.lang.Integer" resultMap="PostResultMap">
  
  </select>
 
 昨天遇到的那个问题,问题关键就是:xml文件中的select映射语句,默认参数类型是map,从map里取属性,所以总是找不到。
 或者是当作对象类型吧。
 因此,用@Param注解或手动指定参数类型。
 
 理论上是这样,没有去一一校验。
 
 另外需要说明,多个参数,必须使用@Param,或者用Map,或者对象。
 
83.银行做账。
如果账务做错了,没有“回退”这一说。
而是再做一笔账务,把钱退回去。
+50,-50,就是“回退”了。
84.Tomcat的JVM经常挂掉,根据hs_err_pid23224.log这种日志文件,也没能发现具体是什么原因导致的。
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0x7) at pc=0x00007f1ae404fd50, pid=23224, tid=139753370498816
#
# JRE version: 7.0_17-b02
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.7-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# v  ~StubRoutines::jbyte_disjoint_arraycopy
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
JVM致命错误日志(hs_err_pid.log)。
为了core dumping,执行命令ulimit -c unlimited。
参考博客园上的一篇文章
http://www.cnblogs.com/qq78292959/archive/2012/05/08/2490443.html
手动触发core:kill -6 pid(-6可以产生,默认的文件名是core.pid)。
core文件很大,有200多Mb。
分析对比最近3个月的“hs_err_pid23224.log”文件:
Problematic frame:
# v  ~StubRoutines::jbyte_disjoint_arraycopy
# Problematic frame:
# v  ~StubRoutines::jint_disjoint_arraycopy
# Problematic frame:
# C  [libc.so.6+0x89f74]  __tls_get_addr@@GLIBC_2.3+0x89f74
# Problematic frame:
# C  [libc.so.6+0x89eb0]  __tls_get_addr@@GLIBC_2.3+0x89eb0
# Problematic frame:
# v  ~StubRoutines::jbyte_disjoint_arraycopy
# Problematic frame:
# C  [libc.so.6+0x89f74]  __tls_get_addr@@GLIBC_2.3+0x89f74
# Problematic frame:
# V  [libjvm.so+0x66e040]  _Copy_arrayof_conjoint_jlongs+0x30
# Problematic frame:
# C  [libc.so.6+0x89e68]  __tls_get_addr@@GLIBC_2.3+0x89e68
# Problematic frame:
# v  ~StubRoutines::jbyte_disjoint_arraycopy
# Problematic frame:
# v  ~StubRoutines::jbyte_disjoint_arraycopy
# Problematic frame:
# v  ~StubRoutines::jbyte_disjoint_arraycopy
不清楚,是不是内存不足导致的,手动设置了Tomcat的JVM内存参数。
JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
现在只能等待下一次crash,看看core文件。
鉴于Tomcat服务器现状,有必要监控内存情况,目前想到的3种方法:
1.jconsole监控远程JVM,需要配置。
2.web.xml配置Filter,监听内存情况。
3.Tomcat自带的manager项目,可以留着,说不定用得上。
下午又crash了一次,向阿里云提交了工单,看看专家能不能给点意见。
85.Nginx与真实IP。
配置了Nginx,Tomcat中的Web程序,获得的ip一直是“127.0.0.1”,比较纳闷。
获得远程ip,已经判断了很多情况,为什么会这样呢?
 正解
 proxy_set_header        Host    $host;
 proxy_set_header        X-Real-IP       $remote_addr;
 proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
 
 Java代码直接取:request.getRemoteAddr();
 再有Nginx等情况下,获得的地址不对,比如“127.0.0.1”。
 
86.Freemarker获得属性。
${people.getName()},通过方法这种形式,有时会报错,而通过属性的方式${people.name}则不会。
为啥呢?
87.TCP/IP协议中的端口,端口号的范围从0到65535。
有个程序的端口,12345被占用了,随手已改,改成了80001,结果越界了。
88.项目与Git。
之前每次从git导入一个项目后,喜欢直接把整个项目,“Add to index”,但是象Eclipse本地设置之类的文件,又不需要提交。
每次都需要“反选”,防止错误提交。
最近,学聪明了,只把需要提交的“文件夹”,比如“src/main”Add to index,这样就节省了“反选”需要的注意力等时间消耗。
89.Git的文件冲突。
  有个.gitignore文件,起冲突了,但是我又从本地把它删除了。
  结果,不能把这个冲突很好地解决了。
  因为,“Add to index”或者“Delete”都会发生错误,这个文件已经不存在了嘛。
  解决办法:在原来的目录下,创建一个新的“gitignore”文件,然后再从Git里手动把它删除。
  这里的.gitignore文件,换成是A.txt这种文件,应该也是一个道理吧。
90.“debug”的双层含义。
log4j的debug,是一种日志级别。
java等程序运行为debug模式,表示进行调试,可以单步跟踪。
 

2015年工作中遇到的问题:81-90,标题党-Nginx与真实IP-Mybatis等的更多相关文章

  1. 2015年工作中遇到的问题:71-80,Tomcat-Redis-浮点数-HTTPS

    71.Tomcat访问项目带了"项目名称".最简单的办法,是把这个项目部署到"root"目录,据boss所说,阿里的每一个项目,都单独放到1个Tomcat的ro ...

  2. Tomcat 8.5中获取客户端真实IP及协议

    获取客户端真实IP ServletRequest接口提供了getRemoteAddr方法用于获取客户端IP,但是当客户端通过代理服务器访问后端服务器的时候,服务器调用getRemoteAddr方法会返 ...

  3. KETTLE4个工作中有用的复杂实例--1、数据定时自动(自动抽取)同步作业

    今天呕心沥血花了8个小时给大家带来kettle工作中最常见的四种复杂实例,90%的项目用到这4种实例都可以解决. 4种实例种还有2种通用kettle工具,使用这两种通用工具实例,可以直接修改相应的配置 ...

  4. 随机记录工作中常见的sql用法错误(一)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...

  5. 工作中常用的js、jquery自定义扩展函数代码片段

    仅记录一些我工作中常用的自定义js函数. 1.获取URL请求参数 //根据URL获取Id function GetQueryString(name) { var reg = new RegExp(&q ...

  6. 工作中那些提高你效率的神器(第二篇)_Listary

    引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...

  7. 工作中那些提高你效率的神器(第一篇)_Everything

    引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...

  8. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  9. C# 工作中遇到的几个问题

    C#  工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...

随机推荐

  1. 怎样将OpenStack部署到Hadoop

    随着信息时代的快速发展,大数据技术和私有云环境都非常实用;只是,假设将两者结合在一起.企业会获得巨大的利润.虽然结合两者会让环境变得更复杂.企业仍然能够看到将 OpenStack 私有云和 Apach ...

  2. ubuntu14中 memcached安装与使用

    第一步,先安装lib-event 下载lib-event  的包http://libevent.org/ 下载完之后,解压安装 ./configure –prefix=/usr (或 ./config ...

  3. Android中的帧动画与补间动画的使用

    前言 在日常开发中,我们有时候须要一些好看的动画效果,这时能够充分利用Android提供的这几种动画来实现. Android提供了3种类型的动画: 补间动画:补间动画能够应用于View,让你能够定义一 ...

  4. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  5. 利用Socket进行大文件传输

    分类: WINDOWS 最近接触到利用socket进行大文件传输的技术,有些心得,与大家分享.首先看看这个过程是怎么进行的(如下图):      所以,我们需要三个socket在窗体加载的时候初始化: ...

  6. 【CS Round #43 E】Coprime Pairs

    [链接]点击打开链接 [题意] 让你选择n个数字,组成一个数组,使得这n个数字中恰好有k对,它们是互质的. [题解] 我们可以先找出前n个质数,那么接下来的问题就转化为,凑出rest = n*(n-1 ...

  7. 3、U-boot的环境变量: bootcmd 和bootargs

    u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数.   现在我的boo ...

  8. 【BZOJ 3238】[Ahoi2013]差异

    [链接]h在这里写链接 [题意]     还有更简洁的题目描述吗/xk [题解]     对于lenti+lentj这一部分,比较好处理.     可以弄一个前缀和.     然后O(N)扫描一遍. ...

  9. Windows中DLL文件的意义及其作用

    Windows中DLL文件的意义及其作用 DLL是Dynamic Link Library的缩写,意为动态链接库.DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和 ...

  10. IOS使用AsyncSocket进行Socket通信

    首先导入CFNetwork.framework框架 1.下载ASyncSocket库源码 2.把ASyncSocket库源码加入项目 3.在项目增加CFNetwork框架 使用AsyncSocket开 ...