zoukankan      html  css  js  c++  java
  • 12341432

    1.迭代器(Iterator)

      迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

      Java中的Iterator功能比较简单,并且只能单向移动:

      (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

      (2) 使用next()获得序列中的下一个元素。

      (3) 使用hasNext()检查序列中是否还有元素。

      (4) 使用remove()将迭代器新返回的元素删除。

    2.对于这两种方式,我们总是都事先知道集合的内部结构,访问代码和集合本身是紧密耦合的,无法将访问逻辑从集合类和客户端代码中分离出来。同时每一种集合对应一种遍历方法,客户端代码无法复用

    3.default package是没有文件夹的,在Eclipse项目的真实工程目录里,是没有文件夹的。是直接存在src目录下的
    4..java的java代码文件,经过编译后生成.class文件,存储在项目目录下的bin文件夹。.class文件是打开后乱码的,不能直接查看。
    5.我们下载的外来jar包,里面就全都是.class文件,是编译好的class文件,可以直接被import引用后使用。
    6.jar包里面全是class文件,没事其他的东西,没有.java文件
    7.每一个Eclipse工程文件路径下,都有个.classpath文件,里面包含了创建的文件夹/外来引入的jar包等。
    8.<?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="config2"/>
    <classpathentry kind="src" path="config"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="D:/ECcipseSVNWorkSpace/zzgjs1.0.0/src/J2EE/APP-INF/lib/log4j-1.2.15.jar"/>
    <classpathentry kind="output" path="bin"/>
    </classpath>

    9.spring mvc @requestbody的使用位置,并不是在类上,而是在方法参数前面,()里面。
    @RequestMapping(value = "saveUser", method = {RequestMethod.POST }})
    @ResponseBody
    public void saveUser(@RequestBody List<User> users) {
    userService.batchSave(users);
    }

    10.@RequestBody

    该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;

    它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

    因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverter api;

    11.前端是怎样发送post请求的var parm = "act=" + act + "&cityname=" + cityname + "&antique=" + antique;//构造URL参数
    //xmlobj.open("POST", "{dede:global.cfg_templeturl/}/../include/weather.php", true); //调用weather.php
    xmlobj.open("POST", "/weather/include/weather.php", true); //调用weather.php
    xmlobj.setRequestHeader("cache-control","no-cache");
    xmlobj.setRequestHeader("contentType","text/html;charset=uft-8") //指定发送的编码
    xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); //设置请求头信息
    xmlobj.onreadystatechange = StatHandler; //判断URL调用的状态值并处理
    xmlobj.send(parm); //设置为发送给服务器数据

    12.Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性
    13.HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包
    14.httpclient jar包和log4j jar包都是apace研发的
    15.HttpClient使用方法:
    2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
    3.4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

    5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
    6.httpclient-4.1.3.jar和httpcore-4.1.4.jar 适用于HTTP请求类操作

    7.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    :commons-logging.jar记录日志的公共包,缺少jar包,commons.jar吧。
    8. HttpClient简单使用:
    HttpClient 代表Http客户端 里面定义了很多http 请求执行行为
    HttpEntity 消息载体,发送或者接收消息的载体,可以通过客户端请求或者服务器响应获取实例

    9.http的get或者post请求,指的都是tcp走向服务器端的请求流,请求流也就是请求报文里,可以选择get请求方式或者post请求方式,选择带不带请求体。服务器收到请求后,都会有个带消息体的返回流,这是不能选择的。即服务器返回的流都带有消息体!!!!
    10.服务器返回的流都带有消息体!这个不能选择,请求流中程序员可以自己选择带不带请求提,即用get或者post请求。
    11.http,一来一回才代表完整的请求。来,回。来,是去向服务器,选择get或者post。回,是服务器返回,都带有消息体。
    一来一回,也就是http的底层,tcp,都带有两个方向的流。


    12.httpclient使用方法:
    要引入3个jar包:httpclient jar包和http-core jar包和commos-logging jar包,httpclient是Apache研发的,这三个jar包夜都是Apache研发的
    // 创建默认的客户端实例
    HttpClient httpCLient = new DefaultHttpClient();
    // 创建get请求实例
    HttpGet httpget = new HttpGet("http://www.baidu.com");
    // 客户端执行get请求 返回响应实体
    HttpResponse response = httpCLient.execute(httpget);
    // 服务器响应状态行
    System.out.println(response.getStatusLine());

    Header[] heads = response.getAllHeaders();
    // 打印所有响应头
    for(Header h:heads){
    System.out.println(h.getName()+":"+h.getValue());
    }

    // 获取响应消息实体
    HttpEntity entity = response.getEntity();
    if(entity != null){

    //响应内容
    System.out.println(EntityUtils.toString(entity));

    System.out.println("----------------------------------------");
    // 响应内容长度
    System.out.println("响应内容长度:"+entity.getContentLength());
    }


    13.Junit的测试用例中,是无法使用log4j记录日志的。因为log4j是伴随着项目启动而启动的。而项目的启动,是不启动junit的。所以两者的启动时间不一样。
    解决办法:junit单元测试使用log4j
    直接在src 的根目录下,建立log4j.property文件.
    系统启动后会自动加载这个文件.
    这样就ok了.
    http://www.educity.cn/wenda/118857.html

    14.post 请求可不可以在url中加参数,可以?key=value
    答:可以,GET 有限制,POST两个地方都可以

    15.get的参数是跟在url后面,那post的参数是加在什么地方。
    get的参数在Url后面跟一个?,然后是参数列表。也就是参数在http请求的请求头中
    post的参数在http请求的请求体中,并且是经过urlencode编码的

    16.抓包,就是抓取http发送的数据包。发送的包,
    HTTPwatch抓包工具 抓的post数据怎么都是分隔开的。
    点post数据 右边的“流” ,上面是Header 空行下面就是实际的post数据流!
    “POST数据” 这页,分开,只是便于查看!

    17.2.在Composer面板中的第一个下拉框中选择Post请求方式。

    3.填写请求的URL,比如:
    http://10.134.218.34:8080/starCWebEvaluation/jaxrs/weightSetService/saveTotalWeightOfEvaluation

    4.fiddler抓包工具模拟post请求
    Request Headers中输入:
    Content-Type: application/json; charset=utf-8
    Content-Length: 398 (也可以不输入)

    5.在Request Body中输入json数据,比如:
    {
    “siteId”:”680004011001571”,
    “learnTimeWeight”:30,
    “workWeight”:30,
    “testWeight”:30,
    “forumWeight”:30,
    “status”:1
    }
    6.点击Execute执行,若结果返回200表示操作成功!
    http://blog.csdn.net/dodan/article/details/52082099

    7.Junit对Spring Controller进行单元测试
    :首先要明白用junit启动spring 和spring mvc。要引入spring的启动文件@(locations={“classpath:applicationContext.xml”})
    如下:
    所以在测试类中有使用到注解:

    @RunWith(SpringJUnit4ClassRunner.class)

    设置运行方式

    @(locations={“classpath:applicationContext.xml”})
    引入配置文件

    8.平时对junit测试service/DAO层已经很熟悉不过了,如果不了解,可以猛戳这里,但是我们要测试controller层,不能总重启服务器吧,(重启tomcat好慢的飘过,别。。。别走啊),那么我们就用junit4模拟请求,测试controller层的方法。

    20.MockMvc为spring测试下的一个非常好用的类
    21.spring mvc测试框架:通过相应的Mock API进行模拟测试,无须启动服务器
    22.spring 集成测试中 对mock 的集成实在是太棒了!但是使用请注意一下3个条件。

    junit 必须使用4.9以上

    同时您的框架必须是用spring mvc

    spring 3.2以上才完美支持

    24.EasyMock 使用方法与原理剖析
    Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。
    Mock 对象能够模拟其它协同模块的行为,被测试模块通过与 Mock 对象协作,可以获得一个孤立的测试环境。此外,使用 Mock 对象还可以模拟在应用中不容易构造(如 HttpServletRequest 必须在 Servlet 容器中才能构造出来)和比较复杂的对象(如 JDBC 中的 ResultSet 对象),从而使测试顺利进行。

    25.Junit中怎么只运行一个测试方法?(@Test方法)?:选中方法名,右键run as junit test
    26.java string中包括"name"双引号怎么办?答:用反斜线转义字符修饰双引号。 如:String temp = ""name"";注意是反斜线。
    27.string中indexof()方法,返回第一个出现字符串的位置。
    28.jsonObject怎么用?答:将json字符串转换为jsonObject对象,jsonObject对象类似于hashmap那样,可以通过get(key)方法获得对应的值。
    什么叫json字符串?一种特殊格式的字符串。能方便的转换为jsonObject。
    29.所以jsob的用途就是,传输json字符串。方便读取解析出来数据。
    30.A传数据给B,A将对象转换为JSON字符串,B将json字符串反解析出来,反解析成json对象,然后jsonobject读取。
    31.JSON字符串就是一种传输格式,传世的字符串规范。
    32.使用介绍:
    Fastjson的最主要的使用入口是com.alibaba.fastjson.JSON

    import com.alibaba.fastjson.JSON;

    public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
    public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
    public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
    public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
    public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
    public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
    public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
    public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

    33.具体使用办法:
    1.将javebean转换为json字符串:
    User user = new User();
    user.setAge(3);
    user.setNameString("tom");
    user.setPhoneString("21314862847");
    String userJsonString = JSON.toJSONString(user);
    2.将json字符串转换为javebean,这是无法的。fastjson是无法将json字符串直接转换为java bean的。spring mvc可以直接将json字符串转换为java bean的。用request body。
    User user = new User();
    user.setAge(3);
    user.setNameString("tom");
    user.setPhoneString("21314862847");
    String userJsonString = JSON.toJSONString(user);
    User tempUser = (User) JSON.parse(userJsonString);//这里会报错,无法将jsonobject转换为java bean

  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6387807.html
Copyright © 2011-2022 走看看