Android之使用JavaWeb项目作为后台的实现

android客户端+JAVA WEB服务器实现json数据解析

首先,项目中使用javaweb作为后台服务器,源码地址:服务器和客户端源码地址。
接下来进入正题。
 一、java web服务器
这里就多说了,不太了解j2ee的请查阅相关书籍。
项目结构如下:
News类定义了之后解析的JSON对象的内容;
NewsServer则是定义了一个获取最新新闻News的接口;
NewsServer则是实现了这个接口,定义了获取最新新闻的方法;
NewsListServlet则是一个实现客户端get和post请求的servlet,用于实现网络请求时的业务逻辑处理,主要返回含有News内容的json字符串;
jsonnewslist.jsp是一个jsp文件用于测试服务器是否正常运行。
 
      服务器部分就不啰嗦了,直接贴代码和截图
   
  (1)News类
[java] view plaincopy
  1. <span style="font-size:18px;"> public class News {
  2. private Integer id;
  3. private String title;
  4. private Integer timelength;
  5. public News(Integer id, String title, Integer timelength) {
  6. this.id = id;
  7. this.title = title;
  8. this.timelength = timelength;
  9. }
  10. public Integer getId() {
  11. return id;
  12. }
  13. public void setId(Integer id) {
  14. this.id = id;
  15. }
  16. public String getTitle() {
  17. return title;
  18. }
  19. public void setTitle(String title) {
  20. this.title = title;
  21. }
  22. public Integer getTimelength() {
  23. return timelength;
  24. }
  25. public void setTimelength(Integer timelength) {
  26. this.timelength = timelength;
  27. }
  28. }</span>

(2)NewsServer接口

[java] view plaincopy
  1. <span style="font-size:18px;">public interface NewsServer {
  2. /*
  3. * 获取最新的新闻News
  4. */
  5. public java.util.List<News> getLastNews();
  6. }</span>

(3)NewsServerBean类

[java] view plaincopy
  1. <span style="font-size:18px;">import java.util.ArrayList;
  2. import java.util.List;
  3. public class NewsServerBean implements NewsServer {
  4. @Override
  5. public List<News> getLastNews() {
  6. // TODO Auto-generated method stub
  7. List<News> news = new ArrayList<>();
  8. news.add(new News(10, "吕文健", 20));
  9. news.add(new News(45, "李昱喜", 10));
  10. news.add(new News(89, "android is amazing", 50));
  11. return news;
  12. }
  13. }</span>

(4)NewsListServlet类

[java] view plaincopy
  1. <span style="font-size:18px;">import java.io.IOException;
  2. import java.util.List;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. @WebServlet(name="newslist",
  9. urlPatterns={"/newslist"}
  10. )//配置Servlet
  11. public class NewsListServlet extends HttpServlet {
  12. /**
  13. *
  14. */
  15. private static final long serialVersionUID = 1L;
  16. NewsServerBean serverbean =new NewsServerBean();
  17. @Override
  18. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19. // TODO Auto-generated method stub
  20. doPost(req, resp);
  21. }
  22. @Override
  23. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  24. // TODO Auto-generated method stub
  25. req.setCharacterEncoding("GBK");</span>
[java] view plaincopy
  1. <span style="font-size:18px;">      resp.setCharacterEncoding("GBK");//这里设置成gbk防止手机端显示乱码,之前设置为utf-8总是乱码
  2. List<News> news = serverbean.getLastNews();</span>
[java] view plaincopy
  1. <span style="font-size:18px;">      StringBuilder json = new StringBuilder();
  2. json.append("[");
  3. for(News news2:news){
  4. json.append('{').append("\"id\":").append(news2.getId()).append(",");
  5. json.append("\"title\":").append("\""+news2.getTitle()+"\"").append(",");
  6. json.append("\"timelength\":").append(news2.getTimelength());
  7. json.append('}').append(",");
  8. }
  9. json.deleteCharAt(json.length()-1);//?
  10. json.append("]");
  11. req.setAttribute("json", json.toString());
  12. req.getRequestDispatcher("/jsonnewslist.jsp").forward(req, resp);
  13. }
  14. }</span>
    (5)jsonnewslist.jsp(在服务端测试服务器是否布置成功)
[html] view plaincopy
  1. <span style="font-size:18px;"><%@ page language="java" contentType="text/plain; charset=GBK"
  2. pageEncoding="GBK"%>
  3. ${json}</span>

(6)服务器运行结果


    

OK,运行成功,服务器解决了,楼主把它打包成war,放在阿里云服务器上,省去了用电脑做服务器的各种麻烦。接下来进入正题,客户端解析Json

二、android客户端
     客户端部分主要是一个简单的listview显示获取的news,运行结果如下:
接下来,开始贴代码:
    1、布局文件:
    (1)activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="wf.com.getnewsinjson.MainActivity">
<Button
    android:id="@+id/btn_refresh"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:text="刷新"
    />
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        />
</LinearLayout>

(2)item.xml(ListView中每一个item的布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        />
    <TextView
        android:layout_marginLeft="10dp"
        android:id="@+id/timelength"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center"
        />
</LinearLayout>

2、主要代码

  (1)、News类(和之前服务器中的一样,用于解析)
   (2)、NewsServer类(用于连接服务器并解析JSON字符串)
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import Util.StreamTool;

/**
 * Created by wangfeng on 2016/12/8.
 */

public class NewsService {public static List<News> getJsonLastNews() {List<News> list = null;
        InputStream in = null;
                String path = "http://*****";//这里输入自己的服务器地址
                try {list = new ArrayList<>();
                    URL url = new URL(path);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setConnectTimeout(5000);
                    conn.setRequestMethod("GET");
                    if (conn.getResponseCode()==200){in = conn.getInputStream();
                        list = parseJSON(in);
                    }} catch (MalformedURLException e) {e.printStackTrace();
                    System.out.println("客户端未连接到服务器");
                } catch (IOException e) {e.printStackTrace();
                    System.out.println("客户端未连接到服务器");
                }return list;
    }
/*
*解析json字符串并返回一个List
*/
    public static List<News>  parseJSON(InputStream in){List<News> list = null;
        try {list = new ArrayList<>();
//           String str = StreamTool.streamToString(in);
//            System.out.println(str);
            byte[] bytes = StreamTool.stream2Byte(in);//这里用到了StreamTool工具类,自己到CSDN上下载一个,这里是把
                                                       //输入流转化为字节数组
             String str = new String (bytes,"GBK");//因为服务器设置了返回编码为GBK,这里也设置编码方式为GBK
            System.out.println("解析成功"+str);
            JSONArray jsonArray = new JSONArray(str);//将json字符串转化为JSONArray
            for(int i =0;i< jsonArray.length();i++){JSONObject jsonObject = jsonArray.getJSONObject(i);//循环JSONArray获得每一个JSONObject对象
                int id = jsonObject.getInt("id");
                String title = jsonObject.getString("title");
                int timelength = jsonObject.getInt("timelength");
                list.add(new News(id,title,timelength));
            }} catch (IOException e) {e.printStackTrace();
            Log.e("io","输入流读取错误");
        } catch (JSONException e) {e.printStackTrace();
            Log.e("json","json数组转换错误");
        } catch (Exception e) {e.printStackTrace();
        }return list;
    }
}
    (3)MainActivity类
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity implements Runnable {List<HashMap<String,Object>> data;
    private static final int TAG =0X1;//用于Handler中的异步处理标志
    Thread thread = null;//声明线程,用于执行NewsServer中的网络访问
    Handler handler = new Handler() {@Override
        public void handleMessage(Message msg) {super.handleMessage(msg);
            switch (msg.what){case TAG:SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this,data,R.layout.item,new String[]{"title","timelength"},new int[]{R.id.title,R.id.timelength});
                    listview.setAdapter(simpleAdapter);
                    break;
            }}};

    @BindView(R.id.btn_refresh)Button btnRefresh;
    @BindView(R.id.listview)ListView listview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);//这里使用了ButterKnife组件来初始化组件和绑定id,不懂得自行百度
    }@OnClick(R.id.btn_refresh)public void onClick(View view) {switch (view.getId()) {case R.id.btn_refresh:thread = new Thread(this);
                thread.start();
                break;
        }}@Override
    public void run() {String length = getResources().getString(R.string.timelength);
        List<News> news = NewsService.getJsonLastNews();//这里必须另起一个线程访问,不能在主线程中访问
         data = new ArrayList<>();
        for(News news1:news){HashMap<String,Object> item  = new HashMap<>();
            item.put("id",news1.getId());
            item.put("title",news1.getTitile());
            item.put("timelength",length+": "+news1.getTimelength());
            data.add(item);
        }Message msg = new Message();
        msg.what=TAG;
        handler.sendMessage(msg);//通知组件更新界面
    }
}
三、后记
      作为一只菜鸟不得不承认在这次练习中,犯了不少低级错误,比如,服务器端,没有设置返回的编码方式,json字符串忘记加“ ”;在客户端,在非UI线程中更新UI组件,在解析json时没有设置编码方式,在设置请求方式时将GET写成Get,哎,吃一堑长一智。
  1. private String title;
  2. private Integer timelength;
  3. public News(Integer id, String title, Integer timelength) {
  4. this.id = id;
  5. this.title = title;
  6. this.timelength = timelength;
  7. }
  8. public Integer getId() {
  9. return id;
  10. }
  11. public void setId(Integer id) {
  12. this.id = id;
  13. }
  14. public String getTitle() {
  15. return title;
  16. }
  17. public void setTitle(String title) {
  18. this.title = title;
  19. }
  20. public Integer getTimelength() {
  21. return timelength;
  22. }
  23. public void setTimelength(Integer timelength) {
  24. this.timelength = timelength;
  25. }
  26. }</span>

(2)NewsServer接口

[java] view plaincopy
  1. <span style="font-size:18px;">public interface NewsServer {
  2. /*
  3. * 获取最新的新闻News
  4. */
  5. public java.util.List<News> getLastNews();
  6. }</span>

(3)NewsServerBean类

[java] view plaincopy
  1. <span style="font-size:18px;">import java.util.ArrayList;
  2. import java.util.List;
  3. public class NewsServerBean implements NewsServer {
  4. @Override
  5. public List<News> getLastNews() {
  6. // TODO Auto-generated method stub
  7. List<News> news = new ArrayList<>();
  8. news.add(new News(10, "吕文健", 20));
  9. news.add(new News(45, "李昱喜", 10));
  10. news.add(new News(89, "android is amazing", 50));
  11. return news;
  12. }
  13. }</span>

(4)NewsListServlet类

[java] view plaincopy
  1. <span style="font-size:18px;">import java.io.IOException;
  2. import java.util.List;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. @WebServlet(name="newslist",
  9. urlPatterns={"/newslist"}
  10. )//配置Servlet
  11. public class NewsListServlet extends HttpServlet {
  12. /**
  13. *
  14. */
  15. private static final long serialVersionUID = 1L;
  16. NewsServerBean serverbean =new NewsServerBean();
  17. @Override
  18. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19. // TODO Auto-generated method stub
  20. doPost(req, resp);
  21. }
  22. @Override
  23. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  24. // TODO Auto-generated method stub
  25. req.setCharacterEncoding("GBK");</span>
[java] view plaincopy
  1. <span style="font-size:18px;">      resp.setCharacterEncoding("GBK");//这里设置成gbk防止手机端显示乱码,之前设置为utf-8总是乱码
  2. List<News> news = serverbean.getLastNews();</span>
[java] view plaincopy
  1. <span style="font-size:18px;">      StringBuilder json = new StringBuilder();
  2. json.append("[");
  3. for(News news2:news){
  4. json.append('{').append("\"id\":").append(news2.getId()).append(",");
  5. json.append("\"title\":").append("\""+news2.getTitle()+"\"").append(",");
  6. json.append("\"timelength\":").append(news2.getTimelength());
  7. json.append('}').append(",");
  8. }
  9. json.deleteCharAt(json.length()-1);//?
  10. json.append("]");
  11. req.setAttribute("json", json.toString());
  12. req.getRequestDispatcher("/jsonnewslist.jsp").forward(req, resp);
  13. }
  14. }</span>
    (5)jsonnewslist.jsp(在服务端测试服务器是否布置成功)

[html] view plaincopy
  1. <span style="font-size:18px;"><%@ page language="java" contentType="text/plain; charset=GBK"
  2. pageEncoding="GBK"%>
  3. ${json}</span>

(6)服务器运行结果


    

OK,运行成功,服务器解决了,楼主把它打包成war,放在阿里云服务器上,省去了用电脑做服务器的各种麻烦。接下来进入正题,客户端解析Json

二、android客户端
     客户端部分主要是一个简单的listview显示获取的news,运行结果如下:
接下来,开始贴代码:
    1、布局文件:
    (1)activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="wf.com.getnewsinjson.MainActivity">
<Button
    android:id="@+id/btn_refresh"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:text="刷新"
    />
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        />
</LinearLayout>

(2)item.xml(ListView中每一个item的布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        />
    <TextView
        android:layout_marginLeft="10dp"
        android:id="@+id/timelength"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center"
        />
</LinearLayout>

2、主要代码

  (1)、News类(和之前服务器中的一样,用于解析)
   (2)、NewsServer类(用于连接服务器并解析JSON字符串)
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import Util.StreamTool;

/**
 * Created by wangfeng on 2016/12/8.
 */

public class NewsService {public static List<News> getJsonLastNews() {List<News> list = null;
        InputStream in = null;
                String path = "http://*****";//这里输入自己的服务器地址
                try {list = new ArrayList<>();
                    URL url = new URL(path);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setConnectTimeout(5000);
                    conn.setRequestMethod("GET");
                    if (conn.getResponseCode()==200){in = conn.getInputStream();
                        list = parseJSON(in);
                    }} catch (MalformedURLException e) {e.printStackTrace();
                    System.out.println("客户端未连接到服务器");
                } catch (IOException e) {e.printStackTrace();
                    System.out.println("客户端未连接到服务器");
                }return list;
    }
/*
*解析json字符串并返回一个List
*/
    public static List<News>  parseJSON(InputStream in){List<News> list = null;
        try {list = new ArrayList<>();
//           String str = StreamTool.streamToString(in);
//            System.out.println(str);
            byte[] bytes = StreamTool.stream2Byte(in);//这里用到了StreamTool工具类,自己到CSDN上下载一个,这里是把
                                                       //输入流转化为字节数组
             String str = new String (bytes,"GBK");//因为服务器设置了返回编码为GBK,这里也设置编码方式为GBK
            System.out.println("解析成功"+str);
            JSONArray jsonArray = new JSONArray(str);//将json字符串转化为JSONArray
            for(int i =0;i< jsonArray.length();i++){JSONObject jsonObject = jsonArray.getJSONObject(i);//循环JSONArray获得每一个JSONObject对象
                int id = jsonObject.getInt("id");
                String title = jsonObject.getString("title");
                int timelength = jsonObject.getInt("timelength");
                list.add(new News(id,title,timelength));
            }} catch (IOException e) {e.printStackTrace();
            Log.e("io","输入流读取错误");
        } catch (JSONException e) {e.printStackTrace();
            Log.e("json","json数组转换错误");
        } catch (Exception e) {e.printStackTrace();
        }return list;
    }
}

    (3)MainActivity类
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity implements Runnable {List<HashMap<String,Object>> data;
    private static final int TAG =0X1;//用于Handler中的异步处理标志
    Thread thread = null;//声明线程,用于执行NewsServer中的网络访问
    Handler handler = new Handler() {@Override
        public void handleMessage(Message msg) {super.handleMessage(msg);
            switch (msg.what){case TAG:SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this,data,R.layout.item,new String[]{"title","timelength"},new int[]{R.id.title,R.id.timelength});
                    listview.setAdapter(simpleAdapter);
                    break;
            }}};

    @BindView(R.id.btn_refresh)Button btnRefresh;
    @BindView(R.id.listview)ListView listview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);//这里使用了ButterKnife组件来初始化组件和绑定id,不懂得自行百度
    }@OnClick(R.id.btn_refresh)public void onClick(View view) {switch (view.getId()) {case R.id.btn_refresh:thread = new Thread(this);
                thread.start();
                break;
        }}@Override
    public void run() {String length = getResources().getString(R.string.timelength);
        List<News> news = NewsService.getJsonLastNews();//这里必须另起一个线程访问,不能在主线程中访问
         data = new ArrayList<>();
        for(News news1:news){HashMap<String,Object> item  = new HashMap<>();
            item.put("id",news1.getId());
            item.put("title",news1.getTitile());
            item.put("timelength",length+": "+news1.getTimelength());
            data.add(item);
        }Message msg = new Message();
        msg.what=TAG;
        handler.sendMessage(msg);//通知组件更新界面
    }
}

三、后记
      作为一只菜鸟不得不承认在这次练习中,犯了不少低级错误,比如,服务器端,没有设置返回的编码方式,json字符串忘记加“ ”;在客户端,在非UI线程中更新UI组件,在解析json时没有设置编码方式,在设置请求方式时将GET写成Get,哎,吃一堑长一智。

Android与JSP javaweb交互参考文章相关推荐

  1. Android Studio 与 Tomcat 交互案例(新)

    首先默认已经装了Tomcat了,这方面的教程网上一大堆. github地址 文章目录 两数求和 账户登录与注册 两数求和 参考android与tomcat数据交互所写 移动端输入两个数,点击按钮,在w ...

  2. Android混合开发-(Android与Web的交互)

    在Android开发中,越来越多的商业项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要本地Java代码与HTML中的JavaSc ...

  3. 客户端相关知识学习(三)之Android原生与H5交互的实现

    Android原生与H5交互的实现 H5调用原生的方式 方式可能有多种,根据开发经验,接触过两种方式. 方法一:Android向H5注入全局js对象,也就是H5调Android 1.首先对WebVie ...

  4. 安卓Android与H5双向交互MathJax展示数学公式(源码+解析)

    安卓Android与H5双向交互MathJax展示数学公式(源码+解析) 博主就今天周五又做了个需求(安卓Android与H5交互),原来上线的功能是服务器配置过来的学习报告(一个H5页面)并提供原始 ...

  5. Android热修复技术选型参考

    背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...

  6. HTML和JSP的交互

    HTML和JSP的交互 1.任务简介 本博客分享的是工程训练任务中"中间件和WEB服务"里面的内容,主要涉及HTML和JSP的知识,我通过两个普通任务和一个挑战任务将所学成果分享给 ...

  7. Java JSP JAVAweb在线考试系统源码网上考试系统源码(ssm考试管理系统)

    Java JSP JAVAweb在线考试系统源码网上考试系统源码(ssm考试管理系统) 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁,教务管 ...

  8. 如何避免贫穷和忙碌,在2018年你需要这样提升自己 2018年01月07日 00:00:00 2099 热文导读 | 点击标题阅读 Java和Android架构2017年总结:文章精选 吊炸天!74

    如何避免贫穷和忙碌,在2018年你需要这样提升自己 2018年01月07日 00:00:00 2099 热文导读 | 点击标题阅读 Java和Android架构2017年总结:文章精选 吊炸天!74款 ...

  9. 2.3.NLTK工具包安装、分词、Text对象、停用词、过滤掉停用词、词性标注、分块、命名实体识别、数据清洗实例、参考文章

    2.3.NLTK工具包安装 2.3.1.分词 2.3.2.Text对象 2.3.3.停用词 2.3.4.过滤掉停用词 2.3.5.词性标注 2.3.6.分块 2.3.7.命名实体识别 2.3.8.数据 ...

最新文章

  1. DevOps:软件架构师行动指南3.1 概述
  2. xend: No such file or directory. Is xend running? 问题
  3. python爬虫开发环境_python爬虫开发教程下载|Python爬虫开发与项目实战(范传辉 著)pdf 完整版_ - 极光下载站...
  4. 2、Get和post的区别
  5. Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。...
  6. Backup--修改实例级别是否使用压缩备份的默认值
  7. Can 总线 收发原理
  8. 绘制Python代码的UML图
  9. 微信小程序多位验证码/密码输入框
  10. 大连市2011年初中毕业升学考试试测(一)数 学
  11. 医学统计学基础——第一讲
  12. spfa slf优化
  13. 服务器虚拟化基础hcna,华为云计算全新大纲课程 乾颐堂HCNA-Cloud服务器虚拟化云计算实战课程 HCNA认证课程...
  14. 基于MFC的人事管理系统 VC++
  15. 巧用万能驱动包安装驱动
  16. Halcon threshold详解
  17. Windows蓝屏死机骗局:新的恶意钓鱼方式
  18. 三菱PLC特殊软元件
  19. 【UE4】给游戏制作一个简易的小地图
  20. java jnlp被阻止_JNLP 被java安全阻止

热门文章

  1. 计算机视觉CV的入门理解
  2. lan和adsl是什么信号_lan和adsl是什么信号_ADSL宽带和LAN宽带接入对比(组图)
  3. 后悔没早点看这篇直播系统定制开发入门篇
  4. AP8022开关电源小家电ACDC芯片离线式开关电源IC
  5. Java实现——判断一个数是否是质数
  6. Office Visio 2016安装
  7. 英语藏红花StigmaCroci西红花stigmacroci番红花
  8. 【无标题】 中国小龙虾市场消费状况与盈利前景预测报告(新版)2022-2027年
  9. 凌轩:公司面孔、公司精神让公司万古长存
  10. STM32F103C8T6电池电量ADC检测代码,适用于基于库函数的STM32微控制器