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

  • 相关阅读:
    全文搜索 Contains 与like 的区别
    Easyui _treegrid 动态加载子节点
    十五、ES开启SSL访问
    十二、ES分词器
    十一、ES监控
    十六、源码部署EFK之快乐没有了
    十四、ES开启密码认证
    十三、ES备份恢复
    十七、优化ES
    正则表达式
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6387807.html
Copyright © 2011-2022 走看看