java 开发遇到的问题记录

1  propertise显示中文需要安装propertise中文插件,否则显示乱码

 

2  tomcat  out of  memory配置eclipse

打开tomcat编辑参数

Arguments加入

-Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=256m

参考下载网页。

 

3  <%@ page import="org.json.simple.*" %>

Jar包未导入

 

4 谷歌调试 network =xhr 意思

记录ajax中的请求

5  Eclipse 的列编辑功能,只需要通过快捷键Alt+Shift+A 进入列编辑模式,修改完成后,再按一次 Alt+Shift+A 退出列编辑模式

6  WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

   ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

1.多个Servlet通过ServletContext对象实现数据共享。

InitServlet的Service方法中利用ServletContext对象存入需要共享的数据

/*获取ServletContext对象*/  

ServletContext context = this.getServletContext();   

//存入共享的数据    

context.setAttribute("name", "haha"); 

在其它的Servlet中利用ServletContext对象获取共享的数据   

/*获取ServletContext对象*/  

ServletContext context = this.getServletContext();   

//获取共享的数据   

String name = context.getAttribute("name");   

System.out.println("共享的内容值是:"+name);  

 

 

9  logback日志配置

<!-- logback 配置  开始 -->

<context-param>

     <param-name>logbackConfigLocation</param-name>

    <param-value>classpath:logback.xml</param-value>

</context-param>

<listener>

    <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>

</listener>

<!-- logback 配置  结束 -->

 

 

13   mysql查询所有表名

select table_name

from information_schema.tables

where table_schema='数据库名'

 

14 便利map获取参数

protected Map<String, Object> getParams(HttpServletRequest request) {

        Map<String, String[]> map = request.getParameterMap();

 

        Map<String, Object> params = new HashMap<String, Object>();

        for (Entry<String, String[]> entry : map.entrySet()) {

            String[] arr = entry.getValue;

                params.put(entry.getKey(), arr);

        }

        return params;

}

 

15   clone方法 浅复制

public TWaybillsDetail clone() throws CloneNotSupportedException{

return (TWaybillsDetail)super.clone();

}

 

 

17

mysql使用concat 拼接字符串,防止sql注入

and  a.bill_shipper_company like  concat('%',#{billShipperCompany},'%')

 

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
mysql> select concat('11','22',null);

 

mysql> select concat('11','22','33');
concat('11','22','33') 
112233 

 

18

还在用Not in为什么不用 join

在一次实际的业务中,检查SqlServer性能报表,客户的一个操作非常慢,检查报表后发现一个插入语句执行了11S,一个保存业务竟然有这么慢的SQL语句,检查发现是前辈在Insert into中使用了Not in。这里也不废话了想知道NOT IN为什么慢去百度一下吧,我就不说了。

  后来我改写NOT INLEFT JOIN 整个插入由11S降到1S以内。我举个例子吧

  not in 的写法:SELECT * FROM A WHERE ID NOT IN (SELECT ID FROM B),优化后是:select * from  A LEFT JOIN B ON  A.id=B.id  where b.value is null

  这两句效果是一下的可是在数据过多的情况下性能有10倍之差。我记得实际环境中表数据只有10000多条

 

19

  /*TMemberExample memberExample = new TMemberExample();

    Criteria criterialevel1 = memberExample.createCriteria();

    criterialevel1.andObjectIdEqualTo(user.getObjectId()).andTypeEqualTo(user.getType()).andLevelEqualTo(1);

    Criteria criterialevel2 = memberExample.createCriteria();

    criterialevel2.andObjectIdEqualTo(user.getObjectId()).andTypeEqualTo(user.getType()).andLevelEqualTo(2);

    memberExample.or(criterialevel2);

 

    List<TMember> siteMemberList = this.memberMapper.selectByExample(memberExample);

  */

 

 

20

UUID.randomUUID().toString();

 

 

24

项目流程 先请求静态页面html 》然后ajax请求 返回json数据

 

26 数字类型相互转换

.long型转化为int型,这里的long型是基础类型:

long   a = 10;     int b = (int)a;   

.Long型转换为int 型的,这里的Long型是包装类型:

Long a = 10; int b=a.intValue();

.int型转化为long型,这里的int型是基础类型:

int a = 10;long b = (int)a;

.Integer型转化为long型,这里的Integer型是包装类型:

int a = 10;Long b = a.longValue();

 

29  list json

ObjectMapper mapper = new ObjectMapper();

mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));

String result=null;

try {

result = mapper.writeValueAsString(resultMap);

} catch (JsonProcessingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}  

 

32   equals

String sation=”1”;

tMember.getStation().equals("1")   结果true

tMember.getStation().equals(1)结果false

 

33 Mapper.xml文件遍历list

参数传递:list集合

List<Long> ids=new ArrayList<Long>();

for (TMember member : stationList) {

ids.add(member.getId());

}

Map<String,Object> params = new HashMap<String, Object>();

params.put("stationIds", ids);

 

Mapper.xml文件遍历

<select

id="findAll" resultType="map" parameterType="java.util.List">

<foreach item="id"  collection="ids"  open="(" separator="," close=")">

                #{id}

        </foreach>

</select>

36  try catch logger打印异常信息利于排错

try {

                     newW.setId(w.getId());

                     //注意只能selective,否则会清空所有数据

                     tWaybillsMapper.updateByPrimaryKeySelective(newW);

         } catch (Exception e) {

         logger.error("生成运单二维码及条件码异常:"+e.getMessage());

         e.printStackTrace();

         }

 

 

38 导出javadoc >export >javadoc > finish

不成功使用下面的解决方案。

 

今天生成api文档的时候,出现:编码GBK的不可映射字符的问题。我知道这肯定是字符编码的问题,但是不知如何解决,后来找到了解决之道

打开eclipseproject -> Generate javadoc ->next ->next -> Configure Javadoc arguments.

Extra Javadoc options(path names with white spaces must be enclosed in quotes)一栏填入如下代码:

-encoding utf-8 -charset utf-8  

这次就可以生成api文档

 

39 Java将时间加5分钟的方法

如代码所示:

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  Date now = new Date();

  System.out.println("当前时间:" + sdf.format(now));

方法一:

  Date afterDate = new Date(now .getTime() + 300000);

  System.out.println(sdf.format(afterDate ));

方法二:

  Calendar nowTime = Calendar.getInstance();

  nowTime.add(Calendar.MINUTE, 5);

  System.out.println(sdf.format(nowTime.getTime()));

 

 

43 isBlank和isNotBlank

1. 3public static boolean isBlank(String str)  

2. 判断某字符串是否为空或长度为0或由空白符(whitespace)构成  

3. 下面是示例:  

4. StringUtils.isBlank(null) = true  

5. StringUtils.isBlank("") = true  

6. StringUtils.isBlank(" ") = true  

7. StringUtils.isBlank("\t \n \f \r") = true //对于制表符、换行符、换页符和回车符StringUtils.isBlank()均识为空白符  

8. StringUtils.isBlank("\b") = false //"\b"为单词边界符  

9. StringUtils.isBlank("bob") = false  

10. StringUtils.isBlank(" bob ") = false  

 

44

org.apache.commons.collections.CollectionUtils

CollectionUtils.isNotEmpty(pickupWaybillsCarshifts)

 

45

hashMap 合并集合map1 map2

params.put("start", (Integer.parseInt(page) - 1) * (Integer.parseInt(rows)));

params.put("size", Integer.parseInt(rows));

params.putAll(map2);

 

 

47 mybatis mapper.xml文件中两个<select id="findReportTotal" 中的id有重复的话,启动tomcat 会一直解析xml文件,显示正在启动,在写id的时候需要搜索一下有没有重复。

 

 

 

48 js对象转换

// 序列化对象paramList 

"roadAndOilFee":JSON.stringify(paramList)

//反序列化对象

$.parseJSON( json )

49 eclipse修改代码不重启tomcat配置方式

 

51 notepad++ 去除行首、行尾空格

notepad++ 打开,把每一个将要放在表中单元格的内容放一行(注: ^ 代表行首 $ 代表行尾)

去除行尾空格和空白行:按CTRL+H 选择正则表达式– 查找目标:\s+$ 替换为空

去除行首空格:按CTRL+H 选择正则表达式– 查找目标:^\s+ 替换为空

 

正则表达式 a开头,b结尾  a.*?b\

$表示行尾

^表示行首

 

56  com.cb.eclipse.folding折叠插件有bug,不建议使用

57 导入maven报错

A   Failed to read artifact descriptor for xxx:jar

Eclipse中执行Maveninstall命令时,报“Failed to read artifact descriptor for xxx:jar ”的错误。这可能是在下载过程中文件出现错误,其实这个时候你用一些压缩软件比如RAR去打开这些jar包的时候,会提示jar包已经损坏。

 解决办法:从本地的maven库中删除相关的jar包,然后右单击项目,Maven4MyEclipse->Update Project,在弹出的对话框中选择“Force Update Of Snapshots/Releases"

    然后点击“OK”。这样就会重新下载这个jar包。

 

B  右键maven  install 报错没有编译器

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

问题原因eclipse官网看了看,发现eclipse默认是运行在jre上的,
但是maven插件需要使用jdk,因此需要在eclipse修改Installed JRES
位置在-->【Window】-->【Prefrences】-->【Java】-->【Installed JREs】

点击 Add 选择jdk安装目录,其余自动填写,ok, 勾选jdk。

 

 

57 导入maven报错2

win7下用MyEclipse新建一个基于Mavenweb工程的时候,报错:

Failure to transfer org.codehaus.plexus:plexus-components:pom:1.1.15 from http://repo1.maven.org/ma.....

原因是网络不稳定,文件没下成。

解决办法:按照报错信息逐级打开仓库的文件夹,进入到下载失败的文件夹删除.lastUpdated文件或者你可以直接搜 *.lastUpdated, 把搜索结果全删掉

 

58 springBeanUtils.copyProperties用法,深复制,两个独立的对象

a,b为对象

BeanUtils.copyProperties(a, b);

BeanUtilsorg.springframework.beans.BeanUtilsa拷贝到b

BeanUtilsorg.apache.commons.beanutils.BeanUtilsb拷贝到a

60 mysql:表注释和字段注释

1 创建表的时候写注释

create table test1

(

    field_name int comment '字段的注释'

)comment='表的注释';

2 修改表的注释

alter table test1 comment '修改后的表的注释';

3 修改字段的注释

alter table test1 modify column field_name int comment '修改后的字段注释';

--注意:字段名和字段类型照写就行

4 数据库添加字段

alter table t_adviser_info add hold int COMMENT '0持有,1未持有' after stockname

 

61 Java 基本数据类型最大值极限和最小值极限

 

1. public static void main(String[] args)  

2. {  

3.   System.out.println("Integer.MIN_VALUE = " + Integer.MIN_VALUE);  

4.   System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE);  

5.   

6.   System.out.println("Long.MIN_VALUE = " + Long.MIN_VALUE);  

7.   System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE);  

8.   

9.   System.out.println("Float.MIN_VALUE = " + Float.MIN_VALUE);  

10.   System.out.println("Float.MIN_NORMAL = " + Float.MIN_NORMAL);  

11.   System.out.println("Float.MAX_VALUE = " + Float.MAX_VALUE);  

12.   

13.   System.out.println("Double.MAX_VALUE = " + Double.MAX_VALUE);  

14.   System.out.println("Double.MIN_VALUE = " + Double.MIN_VALUE);  

15. 

 

62  正则表达式

 

必须且只含有数字和字母,6-10位。正则表达式

pattern '/^[a-zA-Z0-9]{6,10}$/';

 

/*正则验证输入的用户名、 密码 、验证码*/

function regExValidate(){

    var username = $("#username").val();

    var myreg = /^[a-zA-Z0-9]{6,10}$/;

    if(!myreg.test(username)){

        $.message("warn","请正确填写手机号码");

        return false;

    }

}

注意:  js  中正则不能写成'/^[a-zA-Z0-9]{6,10}$/'不能加单引号

 

63 js判断字符是否为空的方法

//判断字符是否为空的方法

function isEmpty(obj){

    if(typeof obj == "undefined" || obj == null || obj == ""){

        return true;

    }else{

        return false;

    }

}

64 Long类型比较

Long重写了equals方法,如下:

public boolean equals(Object obj) {  

  if (obj instanceof Long) {

      return value == ((Long)obj).longValue();

  }

  return false;

  }

 

65 mysql 的数据类型TEXT BLOB比较

1.blob是二进制大对象,可以容纳可变量数量的数据,

其中blob分为4中类型:TINYBLOB,BLOB,mediumblobLongBlob,他们容纳的长度是不同的.

Text同样也分为四种类型:TINYTEXTTEXTMEDIUMTEXTLONGTEXT

2.

blob被视为二进制字符串,

Text被视为非二进制字符串;

blob列没有字符集,并且排序和比较基于列值字节的数值值。

TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较。

MySQL TEXTBLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOBTEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。

使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告.在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。

3.BLOBTEXT在以下几个方面不同于VARBINARYVARCHAR.

BLOBTEXT列不能有默认值.

 

66 jquery  操作select

 

onClose: function(){

$("#newPZTb").form("clear");

var SelectArr = $("#purposeStationId");

//清空表单后,设置select 默认值

     SelectArr[0].options[0].selected = true;

}

 

67 推荐使用entrySet遍历map

Map<String, String> map = new HashMap<String, String>();

map.put("aaa", "aaaaaaaa");

map.put("bb00", "ssssss");

Iterator<Entry<String, String>> iterator = map.entrySet().iterator();

while (iterator.hasNext()) {

  Map.Entry<String, String> entry =

(Map.Entry<String, String>) iterator.next();

System.out.println(entry.getKey()+"==="+entry.getValue());

 

68 web.xml<init-param>报错

Description ResourcePathLocationType

cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"http://java.sun.com/xml/ns/javaee":enabled,

控制台报错:严重: Servlet /*** threw load() exception

java.lang.ClassNotFoundException: MyApplication

 

解决办法: <init-param>要放在<load-on-startup>1</load-on-startup>上边

 

70 if(selectedRows[0].station_id)

if(selectedRows[0].station_id){

  // selectedRows[0].station_id

如果为空false,有值true

}

 

71  Sping mvc 乱码

@RequestMapping

(value="/list",produces="text/html;charset=UTF-8")

 @ResponseBody

 public String list(@RequestParam(value = "page",

required = false)

不加  produces="text/html;charset=UTF-8"返回页面中文乱码

 

73 对日期加上一月

public static String dateFormat(String datetime) {  

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");  

        Date date = null;  

        try {  

            date = sdf.parse(datetime);  

        } catch (ParseException e) {  

            e.printStackTrace();  

        }  

        Calendar cl = Calendar.getInstance();  

        cl.setTime(date);  

        cl.add(Calendar.MONTH, 0);  

        date = cl.getTime();  

        return sdf.format(date);  

}

 

74  java.lang.UnsupportedOperationException

List<Map<String,Object>> resultList=Collections.emptyList();

使用空集合后,resultList.add(map)报错

 

75 日期排序

private  void  ListSort(List<MainBusinessReportDto> list) {

Collections.sort(list, new Comparator<MainBusinessReportDto>() {

@Override

public int compare(MainBusinessReportDto o1, MainBusinessReportDto o2) {

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

try {

Date dt1 = o1.getDate();

Date dt2 = o2.getDate();

if (dt1.getTime() > dt2.getTime()) {

return -1;

} else if (dt1.getTime() < dt2.getTime()) {

return 1;

} else {

return 0;

}

} catch (Exception e) {

e.printStackTrace();

}

return 0;

}

});

}

 

76 报错'<>'operator is not allowed 

for source level below 1.7

1 配置jdk至少1.7

2 配置编译器环境1.7

3 项目右键 》 属性 》 project facets java 选择1.7

Map<String, String> map = new HashMap<>();

Map<String, String> map = new HashMap<String, String>();

sdk1.7以上才支持加括号中不写具体类型,所以要兼容低版本,最好尖括号中加上类型

 

77  Bad format for Timestamp '1' in column 1

同一个sql, 日期的格式不一样

params.put("formatType", "%Y-%m-%d");

params.put("formatType", "%Y-%m");

 

执行带"%Y-%m"格式sql 放到navicat可以执行,但是映射成对象的时候报错,但是"%Y-%m-%d"  这种格式的没问题

 

解决办法

date显示的是2017-02,默认添加上天数

CONCAT(main.send_time ,'-01') date

 

78  eclipse调试spring 源码

选择注解,查看源码,然后关联

重点调试spring  mvcDispatcherServlet,选择的文件目录为spring-webmvc

参考博客:

http://blog.csdn.net/niclascage/article/details/47451967

79  mybatis 一对多配置

private Integer id;

private String username;

private String address;

List<Items>  list ;//重点对应 collections节点的peoperty的属性

   <resultMap type="cn.it.pojo.UserItems" id="personBean">  

        <id column="id" property="id"/>  

        <result column="username" property="username"/>  

        <result column="address" property="address"/>  

        <!-- 一对多的关系 -->  

        <!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->  

        <collection property="list" ofType="cn.it.pojo.Items">  

            <id column="itemsId" property="id"/>  

            <result column="name" property="name"/>  

            <result column="detail" property="detail"/>  

        </collection>  

    </resultMap>

    <!-- 根据id查询Person, 关联将Orders查询出来 -->  

    <select id="selectUserItemsById" parameterType="int" resultMap="personBean">  

        select  u.*,i.*,i.id as itemsId  from  user u,items i  

where  u.id = i.uid and u.id=  10

    </select> 

重点:两个表的id列名字段不能相同,需要使用别名区别开,例子如上 i.id as itemsId

 

81 Integer.parseInt("") Integer.valueOf("")区别

new Integer("")之间的区别

唯一的区别就是Integer.valueOf(“”)返回的是一个Integer对象

Integer.parseInt(“”)返回的是一个基本类型的int

 

82 比较两个时间大小

public class CompareTo_Date {

    @Test

    public void test() {

        Calendar c = Calendar.getInstance();

        c.set(2016,5,4);

        Date before =c.getTime();

        c.set(2016,5,5);

        Date now=c.getTime();

        c.set(2016,5,6);

        Date after=c.getTime();

        //before早于now,返回负数,可用于判断活动开始时间是否到了

        int compareToBefore=before.compareTo(now);

        System.out.println("compareToBefore = "+compareToBefore);

        int compareToIntNow=now.compareTo(now);

        System.out.println("compareToIntNow = "+compareToIntNow);

        //after晚于now,返回正数,可用于判断活动结束时间是否到了

        int compareToIntAfter=after.compareTo(now);

        System.out.println("compareToIntAfter = "+compareToIntAfter);

    }

}

 

compareToBefore = -1

compareToIntNow = 0

compareToIntAfter = 1

 

83  jQuery对象和DOM对象的相互转换

1.jQuery对象转DOM对象

var $li = $(li);

推荐使用 $li[0]

 

2.DOM对象转jQuery对象

var $obj = $(domObj);

// $(document).ready(function(){});就是典型的DOM对象转jQuery对象

 

84  JSON.parse()JSON.stringify()的区别

JSON.parse() :字符串转js对象

JSON.stringify() :对象转字符串

 

85  eclipse快捷键

1  生成变量名的快捷键

 

eclipse里面的快捷键Extract Local Variable这个对应的快捷键是什么,我的是alt+shift+l

 

2  shift+ctrl+l  快捷键提示

 

3  setter  getter alt+SHIFT +S+R

 

4  构造函数       alt+shift+s+o

 

5  java 注释快捷键 》 ctrl+/

 

6  xml 文件注释  ctrl +shift + /  ctrl+shift+\

 

7  输入法有问题 shift+空格

----------------------------------------------------------------

 

什么是序列化: 序列化理解成“打碎”是可以的,不过在书本上的名词就是将对象转换成二进制。

 

序列化是将 对象状态 转换为 可保持或传输的格式的过程。说明白点就是你可以用对象输出流输出到文件或者参与网络传输

 

 

----------------------------------------------------------------

 

86  JSP九大内置对象及四个作用域

 

request           请求对象             类型 javax.servlet.ServletRequest        作用域 Request

response          响应对象              类型 javax.servlet.SrvletResponse        作用域 Page

pageContext       页面上下文对象        类型 javax.servlet.jsp.PageContext       作用域 Page

session           会话对象              类型 javax.servlet.http.HttpSession      作用域 Session

application       应用程序对象          类型 javax.servlet.ServletContext        作用域 Application

out               输出对象              类型 javax.servlet.jsp.JspWriter         作用域 Page

config            配置对象              类型 javax.servlet.ServletConfig         作用域 Page

page              页面对象              类型 javax.lang.Object                   作用域 Page

exception         例外对象              类型 javax.lang.Throwable                作用域 page

 

 

----------------------------------------------------------------

Servlet 生命周期

 

Servlet 通过调用 init () 方法进行初始化。

Servlet 调用 service() 方法来处理客户端的请求。

Servlet 通过调用 destroy() 方法终止(结束)。

最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

----------------------------------------------------------------

87  js 操作cookie的方法

var cookie = {

            set:function(key,val,time){//设置cookie方法

                var date=new Date(); //获取当前时间

                var expiresDays=time;  //date设置为n天以后的时间

                date.setTime(date.getTime()+expiresDays*24*3600*1000); //格式化为cookie识别的时间

                document.cookie=key + "=" + val +";expires="+date.toGMTString();  //设置cookie

            },

            get: function (c_name) {//获取cookie方法

                if (document.cookie.length > 0) {//先查询cookie是否为空,为空就return ""

                    c_start = document.cookie.indexOf(c_name + "=")//通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1

                    if (c_start != -1) {

                        c_start = c_start + c_name.length + 1//最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置

                        c_end = document.cookie.indexOf(";", c_start)//其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断

                        if (c_end == -1) c_end = document.cookie.length

                        return unescape(document.cookie.substring(c_start, c_end))//通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节

                    }

                }

                return ""

            },

            delete:function(key){ //删除cookie方法

                  var date = new Date(); //获取当前时间

                  date.setTime(date.getTime()-10000); //date设置为过去的时间

                  document.cookie = key + "=v; expires =" +date.toGMTString();

//设置cookie

              

                return tips;

            }

        }

 

        // cookie.set("uesr", "sss", 24);//设置为24天过期

        //alert(cookie.get("uesr"));//获取cookie

 

 

----------------------------------------------------------------

属性文件 保存的磁盘路径格式  

 

HTML_OUT_PATH=D:/temp/java/item/

 

----------------------------------------------------------------

maven 运行命令  clean tomcaat7:run

      跳过测试命令: install -DskipTests

 

----------------------------------------------------------------

maven 添加依赖 :1 直接从父工程中pom文件中copy

 2 在工程中右键 maven adddependency 》输入jar包名字

 

----------------------------------------------------------------

mysql  统计重复的 username 次数

 

select   * ,COUNT(*) as count    FROM `user`   GROUP BY `user`.username

 

 

查询分组后 每个组id最大最小的

select   * ,COUNT(*),max(id),MIN(id)    FROM `user`    GROUP BY `user`.username

 

查询出来 需要的id,然后 not in 删除重复的数据

 

----------------------------------------------------------------

 

junit 整合spring 测试:

加载配置文件classpath:applicationn-*.xml 可以从本工程中加载

jar包中加载 使用classpath*:applicationn-*.xml

来源:maven 分模块-web

----------------------------------------------------------------

 

88 Mysql批量更新

Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新;

原来mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。

 

89  重写 jquery ajax 方法

var ajax = jQuery.ajax;

jQuery.extend({

ajax: function(options){

var succ = options.success;

options.success = function(result, status, xhr){

if(checkLogin(xhr)){

succ(result, status, xhr);

}

};

ajax(options);

}

});

 

success

Type: Function( Anything data, String textStatus, jqXHR jqXHR )

A function to be called if the request succeeds. The function gets passed three arguments: The data returned from the server, formatted according to the dataType parameter or the dataFilter callback function, if specified; a string describing the status; and the jqXHR (in jQuery 1.4.x, XMLHttpRequest) object. As of jQuery 1.5, the success setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event.

 

 

90  获取request里的所有参数

Map<String, String[]> parameterMap = request.getParameterMap();

当上传excel文件时,请求头为

Content-Type: multipart/form-data;

Tomcat不放入参数到ParameterMap中,所以获取不到

 

91 四种常见的 POST 提交数据方式对应的content-type

application/x-www-form-urlencoded 

浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据

 

multipart/form-data 

使用表单上传文件时,必须让 form enctyped 等于这个值

 

application/json 

用来告诉服务端消息主体是序列化后的 JSON 字符串

 

text/xml 

是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范

 

92  mysql存储过程示例,循环更新表字段

BEGIN

  -- 历史表主键

  DECLARE  primaryKey BIGINT(20);

  -- 更新的用户名字

  DECLARE  userName varchar(64);

 

    -- 遍历数据结束标志

    DECLARE isEnd INT DEFAULT FALSE;

 

    -- 游标

    DECLARE cur_account CURSOR FOR

select  a.id,b.`name`  

from   user;

 

    -- 将结束标志绑定到游标

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET isEnd = TRUE;

 

    -- 打开游标

    OPEN  cur_account;     

 

    -- 遍历

    read_loop: LOOP

            -- 从游标中取多个字段放到定义的变量中,该示例 id对应primaryKey,name 对应 userName,注意字段顺序

            FETCH  NEXT from cur_account INTO primaryKey,userName;

 

            IF isEnd THEN

                LEAVE read_loop;

            END IF;

 

        -- 自己想做的操作

        UPDATE  userInfo

SET update_user_name = userName

WHERE  id = primaryKey;

 

    END LOOP;

 

    CLOSE cur_account;

 

END

 

93  shiro配置拦截url类型

/*/**.html=authc

/*/**.json=authc

 

注意:多层url拦截方式 需要配置为一层一层拦截,

三层url配置三个/*

四层url配置四个/*

配置为/**拦截不到

 

 

94  mysql查找数据库文件位置使用命令

show global variables like "%datadir%";

 

95   maven配置jsp-api servlet-api

    此方法不能正确下载jar

<!-- <dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>3.0</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<version>2.2</version>

<scope>provided</scope>

</dependency> -->

 

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.0.1</version>

<scope>provided</scope>

</dependency>

 

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>jsp-api</artifactId>

<version>2.0</version>

</dependency>

 

95  mybatis foreach 集合为空报错

 

<if test="ids != null and ids !=''" >

         and a.belong_station_id  in

         <foreach item="id"  collection="ids" open="(" separator="," close=")">

                #{id}

         </foreach>

</if>

 

改为:

<if test="ids != null and ids.size() > 0" >

         and a.belong_station_id  in

         <foreach item="id"  collection="ids" open="(" separator="," close=")">

                #{id}

         </foreach>

</if>

 

 

97  maven inatall  eclipse报错

解决办法:

· Java Build Path >> Libraries

· JRE System Lybrary >> Edit

· Installed JREs >> click on my jdk >> edit

· Add External Jars >> tools.jar

 

98  eclipse项目目录中去掉Maven生成的target目录

1. eclipse中在target/目录上右键属性,勾选 derived 复选框。

 

2. 执行快速搜索时,在右上角的菜单中把"Show derived resources"的选项去掉。

 

99  spring mvc 处理静态资源,排除被拦截

通过上面url-pattern的配置,所有URL请求都将被Spring MVCDispatcherServlet截获。

方法1.采用<mvc:default-servlet-handler />

<mvc:default-servlet-handler />

 

<!-- 处理静态资源,排除被拦截 -->

<mvc:resources location="/plugins/" mapping="/plugins/**"/>

 

100  Error creating bean with name

101 window环境下杀死进程

首先查找到占用8080端口的进程号PID

netstat -ano | findstr 8080

 

关闭进程:

taskkill /f /pid 9572

 

103  vm添加已经安装好的linux系统

打开虚拟机时,选择移动此虚拟机,不选择复制虚拟机,否则不能启动,mac地址报错

Xshell连结虚拟机

1 配置网络模式

 

 

2 配置网段

 

 

 

 

3   ifconfig eth0  192.168.168.110  命令来设置虚拟机ip地址

注意:虚拟机与电脑ip地址处于同一个网段

 

4   xshell 新建连接,ip地址未虚拟机的ip,端口号默认未22

 

 

104  Maven  clean 后,maven install报错

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project SSM-Test2: Compilation failure

[ERROR] Unable to locate the Javac Compiler in

 

解决办法 maven  updateproject 解决问题

105 mysql数据库时间比较的日期格式 2018-3 格式错误

 

select    *,DATE_FORMAT(create_time, '%Y-%m') create_time  from  user

where  

-- create_time > '2018-03'

create_time  >  '2018-3'

 

2018-3 作为查询条件,将不会查询到数据

 

106 sum  case when使用

SELECT

company_name,

month,

sum(case when  DATE_FORMAT(a.month, '%Y-%m') = '2018-04' then month_turnover else 0 end) as 当月,

sum(case when  DATE_FORMAT(a.month, '%Y-%m') = '2018-03' then month_turnover else 0 end) as 上月

from  user  a

WHERE company_id >0

GROUP BY  company_name

 

107 Calendar  获取某个日期的年月

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

 

 

108  关闭某个包下的logback日志

    <logger name="org.hibernate.validator" level="OFF"></logger>

    <logger name="net.sf.ehcache" level="OFF"></logger>

    <logger name="org.jboss" level="OFF"></logger>

    

<logger name="com.tms.service.Impl">

<level value="DEBUG"></level>

<appender-ref ref="timeAdvice" />

</logger>

 

110 正则表达式匹配指定字符开始和指定字符结束

bill_consignee_tel',width:100">收货人手机</th>

bill_consignee_addr',width:100">收货地址</th>

 

正则表达式   a.*?b就是a开始b结束的匹配

如果要限制是一行的开头和末尾的话就是  ^a.*?b$

 

获取字段的表达式为 '.*?th>   开始,th> 结尾

 

111 json List Map复杂对象

方法一:

1. String jsonString="[{'id':'1'},{'id':'2'}]";  

2. ObjectMapper mapper = new ObjectMapper();  

3. JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, Bean.class);  

4. //如果是Map类型  mapper.getTypeFactory().constructParametricType(HashMap.class,String.class, Bean.class);  

5. List<Bean> lst =  (List<Bean>)mapper.readValue(jsonString, javaType);   

 

方法二:

1. String jsonString="[{'id':'1'},{'id':'2'}]";  

2. ObjectMapper mapper = new ObjectMapper();  

3. List<Bean> beanList = mapper.readValue(jsonString, new TypeReference<List<Bean>>() {}); 

 

112 HTMLJavaScript之单双引号转义

一、HTML :

双引号:"  

单引号:'

 

二、JavaScript:

双引号:\"

单引号:\'

 

 

 

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页