Android开发(7):使用网络技术
个人笔记整理
使用网络技术
使用Http访问网络
使用HttpURLConnection
// new一个Url对象
URL url = new URL("http://www.baidu.com");
// new HttpURLConnection 新建连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 可设置请求方式 GET/POST
connection.setRequestMethod("GET");
// 设置连接超时毫秒数
connection.setConnectTimeout(8000);
// 设置读取超时毫秒数
connection.setReadTimeout(8000);// 如果为POST,获取输出流
OutputStream os = connection.getOutputStream();
// 传入post参数
os.write("username=张三&age=20".getBytes());// 获得输入流
InputStream in = connection.getInputStream();// 进行字节流读取相关操作// 关闭流
in.close();
os.close();
// 关闭连接
connection.disconnect();
使用OkHttp
导入依赖
编辑app/build.gradle
,添加依赖
dependencies {compile 'com.squareup.okhttp3:okhttp:3.10.0'
}
使用
// 创建一个OkHttpClient的实例
OkHttpClient client = new OkHttpClient();
// 创建一个(空)Request 对象:
Request request = new Request.Builder().build();
// 或者在Builder中设置url
Request request = new Request.Builder().url("http://www.baidu.com").build();// 之后调用OkHttpClient的newCall() 方法来创建一个Call 对象,并调用它的execute() 方法来发送请求并获取服务器返回的数据
Response response = client.newCall(request).execute();// 得到Response返回的具体内容
String responseData = response.body().string();// 如果为POST 我们需要先构建出一个Request Body对象来存放待提交的参数
RequestBody requestBody = new FormBody.Builder().add("username", "admin").add("password", "123456").build();
// Request.Builder中调用一下post() 方法,并将RequestBody 对象传入
Request request = new Request.Builder().url("http://www.baidu.com").post(requestBody).build();
// 调用execute() 方法来发送请求并获取服务器返回的数据即可。
get同步请求
// 创建OkHttpClient对象
OkHttpClient client = new OkHttpClient.Builder().cache() // 设置缓存目录(有默认).connectTimeout() // 设置连接超时(有默认).cookieJar() // cookie的读取,保存(需自己实现).build();
// 创建Request对象
Request request = new Request.Builder().url(address).build();
// 发送请求,获取响应
Call call = client.newCall(request);
// 发送同步请求,需手动创建子线程
new Thread(){public void run(){Response response = call.execute();//等待服务端进行响应(等待过程中会阻塞)// 判断响应状态是否正常if(response.isSuccessful()){// 获取服务端响应的内容(文本)String str = response.body().string();}}
}
get异步请求
//发送异步方式的get请求
private void getAsync(){//2.创建请求对象Request request = new Request.Builder().url(Constant.BASE_URL +"LoginServlet?username=张三&password=123").build();//3.发送请求,获取响应Call call = okHttpClient.newCall(request);//异步请求,不需要手动创建子线程call.enqueue(new Callback(){@Overridepublic void onFailure(Call call, IOException e) {//请求失败时执行e.printStackTrace();}@Overridepublic void onResponse(Call call, Response response) throws IOException {//请求成功时执行Log.e("onResponse",Thread.currentThread().getName());Log.e("异步get请求的结果",response.body().string());//执行在子线程中,不能直接修改用户界面//可以借助Handler实现//在实现文件下载功能时,如何获取网络文件的数据
// InputStream is = response.body().byteStream();
// FileOutputStream fos = new FileOutputStream(
// getExternalFilesDir(null).getAbsolutePath() + "/a.jpg");}});Log.e("okhttp","异步请求已发送");
}
异步post:发送文本
MIME 参考手册 (w3school.com.cn)
//异步方式的post请求,发送文本数据
private void postAsync(){//2.创建请求体对象RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain;charset=utf-8"), // 根据上传类型选择相应MIME"username=张三&password=123");//3.创建请求对象Request request = new Request.Builder().url(Constant.BASE_URL + "LoginServlet").post(requestBody)//设置请求方式为POST.build();//4.发送请求,获取响应Call call = okHttpClient.newCall(request);//异步请求,不需要手动创建子线程call.enqueue(new Callback(){@Overridepublic void onFailure(Call call, IOException e) {//请求失败时执行e.printStackTrace();}@Overridepublic void onResponse(Call call, Response response) throws IOException {//请求成功时执行Log.e("onResponse",Thread.currentThread().getName());Log.e("异步get请求的结果",response.body().string());//执行在子线程中,不能直接修改用户界面//可以借助Handler实现}});
}
异步post:发送表单
//2.创建请求体对象
FormBody formBody = new FormBody.Builder().add("username","张三").add("password","123").build();//3.创建请求对象
Request request = new Request.Builder().url(Constant.BASE_URL + "LoginServlet").post(formBody)//设置请求方式为POST.build();
post本地选择文件上传
//文件上传
private void uploadFile(){Intent intent = new Intent();intent.setAction(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent, 1);
}@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1 && resultCode == RESULT_OK){ContentResolver contentResolver = getContentResolver();Cursor cursor = contentResolver.query(data.getData(),null,null,null,null);if (cursor.moveToFirst()){String imagePath = cursor.getString(cursor.getColumnIndex("_data"));//创建请求体对象File file = new File(imagePath);RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"),file);//创建请求对象Request request = new Request.Builder().url(Constant.BASE_URL + "UploadServlet").post(requestBody).build();Call call = okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {e.printStackTrace();}@Overridepublic void onResponse(Call call, Response response) throws IOException {Log.e("上传文件的结果",response.body().string());}});}}
}
post下载远端
@Override
public void onResponse(Call call, Response r) throws IOException{InputStream is = response.body().byteStream();File file = new File(Environment.getExternalStorageDirectory(), "test.txt");FileOutputStream fos = new FileOutputStream(file);int len = 0;byte[] buf = new byte[128];while ((len = is.read(buf)) != -1){fos.write(buf, 0, len);}
}
解析XML格式数据
Pull解析方式
解析的xml
<apps><app><id>1</id><name>Google Maps</name><version>1.0</version></app><app><id>2</id><name>Chrome</name><version>2.1</version></app><app><id>3</id><name>Google Play</name><version>2.3</version></app>
</apps>
java代码
private void parseXMLWithPull(String xmlData) {try {XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// 创建xmlPull解析器// XmlPullParser parser = Xml.newPullParser();XmlPullParser xmlPullParser = factory.newPullParser();// 初始化解析器xmlPullParser.setInput(new StringReader(xmlData));// 当前读取的事件类型int eventType = xmlPullParser.getEventType();String id = "";String name = "";String version = "";// 如果没有读取到文档的末尾while (eventType != XmlPullParser.END_DOCUMENT) {// 获得当前节点的名称String nodeName = xmlPullParser.getName();switch (eventType) {// 开始标签case XmlPullParser.START_TAG: {if ("id".equals(nodeName)) {id = xmlPullParser.nextText();} else if ("name".equals(nodeName)) {name = xmlPullParser.nextText();} else if ("version".equals(nodeName)) {version = xmlPullParser.nextText();}break;}// 结束标签case XmlPullParser.END_TAG: {if ("app".equals(nodeName)) {Log.d("MainActivity", "id is " + id);Log.d("MainActivity", "name is " + name);Log.d("MainActivity", "version is " + version);}break;}default:break;}eventType = xmlPullParser.next();}} catch (Exception e) {e.printStackTrace();}
}
- 首先要获取到一个XmlPullParserFactory 的实例
- 借助这个实例得到XmlPullParser 对象
- 然后调用XmlPullParser 的setInput() 方法将服务器返回的XML数据设置进去就可以开始解析了。
- 解析的过程也非常简单,通过getEventType() 可以得到当前的解析事件
- 然后在一个while循环中不断地进行解析如果当前的解析事件不等于XmlPullParser.END_DOCUMENT,说明解析工作还没完成,调用next() 方法后可以获取下一个解析事件。
- 在while 循环中,我们通过getName() 方法得到当前节点的名字,如果发现节点名等于id、name或version,就调用nextText() 方法来获取节点内具体的内容,每当解析完一个app节点后就将获取到的内容打印出来。
SAX解析方式
模板
public class MyHandler extends DefaultHandler {@Overridepublic void startDocument() throws SAXException {// startDocument() 方法会在开始XML解析的时候调用}@Overridepublic void startElement(String uri, String localName, String qName, Attributesattributes) throws SAXException {// startElement() 方法会在开始解析某个节点的时候调用}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {// characters() 方法会在获取节点中内容的时候调用}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {// endElement() 方法会在完成解析某个节点的时候调用}@Overridepublic void endDocument() throws SAXException {// endDocument() 方法会在完成整个XML解析的时候调用}
}
解析上述XML
public class ContentHandler extends DefaultHandler {private String nodeName;private StringBuilder id;private StringBuilder name;private StringBuilder version;@Overridepublic void startDocument() throws SAXException {id = new StringBuilder();name = new StringBuilder();version = new StringBuilder();}@Overridepublic void startElement(String uri, String localName, String qName, Attributesattributes) throws SAXException {// 记录当前节点名nodeName = localName;}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {// 根据当前的节点名判断将内容添加到哪一个StringBuilder对象中if ("id".equals(nodeName)) {id.append(ch, start, length);} else if ("name".equals(nodeName)) {name.append(ch, start, length);} else if ("version".equals(nodeName)) {version.append(ch, start, length);}}@Overridepublic void endElement(String uri, String localName, String qName) throwsSAXException {if ("app".equals(localName)) {Log.d("ContentHandler", "id is " + id.toString().trim());Log.d("ContentHandler", "name is " + name.toString().trim());Log.d("ContentHandler", "version is " + version.toString().trim());// 最后要将StringBuilder清空掉id.setLength(0);name.setLength(0);version.setLength(0);}}@Overridepublic void endDocument() throws SAXException {super.endDocument();}
}
调用
private void parseXMLWithSAX(String xmlData) {try {SAXParserFactory factory = SAXParserFactory.newInstance();XMLReader xmlReader = factory.newSAXParser().getXMLReader();ContentHandler handler = new ContentHandler();// 将ContentHandler的实例设置到XMLReader中xmlReader.setContentHandler(handler);// 开始执行解析xmlReader.parse(new InputSource(new StringReader(xmlData)));} catch (Exception e) {e.printStackTrace();}
}
解析JSON格式数据
测试Json数据
[{"id":"5","version":"5.5","name":"Clash of Clans"},
{"id":"6","version":"7.0","name":"Boom Beach"},
{"id":"7","version":"3.5","name":"Clash Royale"}]
使用JSONObject
转成Json字符串
// JSONObject转json字符串
JSONObject jsonObject = new JSONObject();
jsonObject.put(String name,Object value);
jsonObject.put(String name,Object value);String jsonStr = jsonObject.toString();// 若是数组,写个循环生成JSONObject,然后用JSONArray对象的put方法
读取JSON字符串
private void parseJSONWithJSONObject(String jsonData) {try {// 读入JSON数组字符串 新建JSONArray对象JSONArray jsonArray = new JSONArray(jsonData);for (int i = 0; i < jsonArray.length(); i++) {// 得到json对象JSONObject jsonObject = jsonArray.getJSONObject(i);// 获得对应数据String id = jsonObject.getString("id");String name = jsonObject.getString("name");String version = jsonObject.getString("version");Log.d("MainActivity", "id is " + id);Log.d("MainActivity", "name is " + name);Log.d("MainActivity", "version is " + version);}} catch (Exception e) {e.printStackTrace();}
}
使用Gson
添加依赖
编辑app/build.gradle
文件,在dependencies
闭包中添加
compile 'com.google.code.gson:gson:2.8.5'
使用
Builder设置Gson属性
Gson gson = new GsonBuilder().serializeNulls() // 允许导出null.setPrettyPrinting() // 格式化s.setDateFormat("yyyy-MM-dd") // 设置日期输出格式.create(); // 生成配置好的Gson对象
对象转json字符串
Gson gson = new Gson();
String jsonStr = gson.toJson(Object);
字符串直接解析对象
jsonData = """{"name":"Tom","age":20}"""
Gson gson = new Gson();
Person person = gson.fromJson(jsonData, Person.class);
Json字符串为对象数组
List<Person> people = gson.fromJson(jsonData, new TypeToken<List<Person>>() {}.getType());
网络编程实践
定义一个Http工具类
public class HttpUtil {// 发送Http GET请求public static String sendHttpRequest(String address) {HttpURLConnection connection = null;try {URL url = new URL(address);connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(8000);connection.setReadTimeout(8000);connection.setDoInput(true);connection.setDoOutput(true);InputStream in = connection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}return response.toString();} catch (Exception e) {e.printStackTrace();return e.getMessage();} finally {if (connection != null) {connection.disconnect();}}}/*** 封装好的post请求** @param uri url* @param parameters 请求参数* @return post请求*/public static String sendPost(String uri, Map<String, String> parameters) {StringBuffer postUrlSB = new StringBuffer(serverUrl + uri);if (parameters != null) {postUrlSB.append("?");Set<Map.Entry<String, String>> entries = parameters.entrySet();int count = 1;int size = parameters.size();for (Map.Entry<String, String> entry : entries) {String key = entry.getKey();String value = entry.getValue();if (count++ < size) {postUrlSB.append(key).append("=").append(value).append("&");} else {postUrlSB.append(key).append("=").append(value);}}}String postUrl = postUrlSB.toString();URL url = null;HttpURLConnection connection = null;String meg = null;try {url = new URL(postUrl);connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Content-type", "text/plain;charset=UTF-8");InputStream is = connection.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));meg = br.readLine();br.close();is.close();} catch (IOException e) {e.printStackTrace();}return meg;}}
开启子线程来接收返回值
Java回调机制
1. 定义一个HttpCallbackListener接口
public interface HttpCallbackListener {void onFinish(String response);void onError(Exception e);
}
- onFinish() 方法表示当服务器成功响应我们请求的时候调用:onFinish() 方法中的参数代表着服务器返回的数据。
- onError() 表示当进行网络操作出现错误的时候调用:onError() 方法中的参数记录着错误的详细信息。
2.修改原HttpUtil类
public class HttpUtil {public static void sendHttpRequest(final String address, finalHttpCallbackListener listener) {new Thread(new Runnable() {@Overridepublic void run() {HttpURLConnection connection = null;try {URL url = new URL(address);connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(8000);connection.setReadTimeout(8000);connection.setDoInput(true);connection.setDoOutput(true);InputStream in = connection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}if (listener != null) {// 回调onFinish()方法listener.onFinish(response.toString());}} catch (Exception e) {if (listener != null) {// 回调onError()方法listener.onError(e);}} finally {if (connection != null) {connection.disconnect();}}}}).start();}
}
我们首先给sendHttpRequest() 方法添加了一个HttpCallbackListener 参数
并在方法的内部开启了一个子线程,然后在子线程里去执行具体的网络操作。
子线程中是无法通过return语句来返回数据的,因此这里我们将服务器响应的数据传入了HttpCallbackListener的onFinish() 方法中,如果出现了异常就将异常原因传入到onError() 方法中。
现在sendHttpRequest() 方法接收两个参数了,因此我们在调用它的时候还需要将HttpCallbackListener的实例传入
HttpUtil.sendHttpRequest(address, new HttpCallbackListener() {@Overridepublic void onFinish(String response) {// 在这里根据返回内容执行具体的逻辑}@Overridepublic void onError(Exception e) {// 在这里对异常情况进行处理}
});
使用OkHttp
使用
public class HttpUtil {...public static void sendOkHttpRequest(String address, okhttp3.Callback callback) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(address).build();client.newCall(request).enqueue(callback);}
}
okhttp3.Callback :是OkHttp库中自带的一个回调接口
HttpUtil.sendOkHttpRequest("http://www.baidu.com", new okhttp3.Callback() {
@Overridepublic void onResponse(Call call, Response response) throws IOException {// 得到服务器返回的具体内容String responseData = response.body().string();}@Overridepublic void onFailure(Call call, IOException e) {// 在这里对异常情况进行处理}
});
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Clustering method in protocol reverse engineering for industrial protocols
工业协议逆向工程中的聚类方法一、摘要二、介绍(一)流量收集(二)信息提取(三)基于大小的消息聚类(四)基于相似性的消息聚类(五)字段提取(六&#…...
2024/4/14 13:51:36 - WordPress个人博客美化
WordPress个人博客美化 个人博客:https://www.xiaohuangyr.top/ 有兴趣可以访问一下 以下截图是电脑端访问的效果,和手机差很多 一、基本概念 1、起因 双十一的时候,因为阿里云折扣力度很大,就购买了三年的ECS云服务器。 又在阿…...
2024/4/19 13:49:23 - SPI协议简介—学习笔记
SPI协议简介—学习笔记 1、SPI百度百科 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚&…...
2024/5/7 15:58:36 - 锐捷某系统前台任意文件写入分析
0x00前言 这套系统我估计是全网第一个公开能拿shell的吧(不是的话当我没说),哪套系统自己猜,这次先分享下前台任意文件写入,还有几个rce日后分享,也感谢独立团孙德胜Alan提供的思路。 0x01代码分析 漏洞…...
2024/4/7 4:57:59 - EFR32BG22 Thunderboard Kit 学习笔记总结
EFR32BG22 Thunderboard Kit 学习笔记总结 Thunderboard™ BG22 开发套件是Silicon Labs提供的一个小型原型平台,适用于电池供电的蓝牙应用。 上面搭载的EFR32BG22 蓝牙低功耗 5.2 SoC可提供低功耗蓝牙、网状网络和误差一米以内的测向精度。 文章目录EFR32BG22 Thun…...
2024/4/14 13:50:40 - java基础~JavaSE概述
目录 java语言初识 Helloworld 基础语法 流程控制 数组 面向对象 异常 常用类 集合 泛型 I/O流 多线程 网络编程 GUI 注解和反射 java语言初识 markdown语法 简单的dos命令 JDK:开发者工具 配置环境变量:系统属性—环境变量—系统变量 …...
2024/5/7 20:43:38 - Android 10手势导航的侧滑返回效果优化策略,flutter集成第三方sdk
// 设置返回回调 mEdgeBackPlugin.setBackCallback(mBackCallback); // 设置LayoutParams mEdgeBackPlugin.setLayoutParams(createLayoutParams()); updateDisplaySize(); } 这个类中并没有看到视图如何添加到屏幕上的。 那么再来看看NavigationBarEdgePanel。 // 1&a…...
2024/4/17 23:51:34 - 【C++从0到1】第三篇:类和对象(上)
文章目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1 访问限定符4.2 封装五、类的作用域六、类的实例化七、类对象模型7.1 如何计算类对象的大小7.2 类对象的存储方式7.3 结构体内存对齐规则八、this指针8.1 this指针的引出8.2 this指…...
2024/4/14 13:50:35 - 什么是 custom elements
使用自定义元素,Web 开发人员可以创建新的 HTML 标签、增强现有的 HTML 标签或扩展其他开发人员编写的组件。API 是 Web 组件的基础。它带来了一种基于 Web 标准的方式来创建可重用组件,仅使用 vanilla JS/HTML/CSS 就能生产出可以重用的组件。成果就是在…...
2024/5/7 14:57:13 - 整数反转(18)
整数反转题目描述函数部分代码题目描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号&…...
2024/5/7 22:43:46 - 内网安全-基础
小迪 参考引用: https://www.bilibili.com/video/BV1JZ4y1c7ro?p64 https://www.jianshu.com/p/8580587c3201 #DMZ https://blog.csdn.net/magod/article/details/6308940 #DMZ https://www.cnblogs.com/Le30bjectNs11/p/4118098.html #Le30bjectNs11猥琐青年 Vuln…...
2024/4/20 0:13:43 - Windows下ab压力测试工具的模拟表单提交使用
在ab压力测试工具的bin目录下添加postfile文件,在postfile文件内设置表单提交的值: 表单内容: <form id"msform" action"${pageContext.request.contextPath}/doseckill" enctype"application/x-www-form-urlen…...
2024/4/18 8:06:55 - MySQL学习笔记(基础篇)
一、SQL语言的规则与规范 1.SQL大小写规范 (建议遵守) MySQL 在 Windows 环境下是大小写不敏感。推荐采用统一的书写规范: 数据库名、表名、表别名、字段名、字段别名等都小写; SQL 关键字、函数名、绑定变量等都大写。 2.注释…...
2024/4/23 11:06:54 - 寒假每日一题——存在重复元素II
题目链接:https://leetcode-cn.com/problems/contains-duplicate-ii/题目描述 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j , 满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在,返回 …...
2024/4/14 13:50:45 - 计算机毕业设计java+ssm大学校园宿舍零食便利店(源码+系统+mysql数据库+Lw文档)
项目介绍 现代社会的迅速发展使得人们的生活更加方便,人们也越来越会享受生活,催生了各种应用,好友之间通过拼车、拼房、拼游、拼购可以增进彼此的感情。同时,因为人们可以足不出户便可进行购物,娱乐,游戏…...
2024/4/5 5:01:24 - hnu小学期软件实训-计算校验码
【问题描述】 传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整…...
2024/4/19 8:37:41 - 电话机器人部署
你知道电销语音机器人吗?你接到过电销语音机器人外呼的电话吗? 现在很多房地产、金融、保险、培训等机构都在使用电销机器人做外呼了,可能你接到的电话就是机器人外呼的哦!AI智能语音客服机器人的问世,有不明白 的可以…...
2024/4/20 2:04:16 - 第九届蓝桥杯本科Java B组题解【省赛】
文章目录1.第几天题目描述运行限制2.方格计数题目描述3.复数幂题目描述数据类型题解4.测试次数题目描述题目分析算法题解5.快速排序题目描述题目分析题解6.递增三元组题目描述输入输出题目分析题解7.螺旋折线题目描述输入输出题目分析题解8.日志统计题目描述输入输出题目分析题…...
2024/4/14 13:51:16 - Acid-PEG2000-Pyrene,羧基和芘丁酸修饰的PEG,HOOC-PEG2000-Pyrene
芘-PEG-COOH是用于碳纳米管和石墨烯表面功能化的众多聚乙二醇化芘衍生物之一,其通过芘与单壁和多壁碳纳米管上的芳香环之间的强(接近不可逆)π-π堆积实现。芘通过非常稳定的酰胺键与PEG结合。这是一个非常简单的过程,只需要在有机…...
2024/4/7 4:57:51 - 科研论文检索方法入门(计算机领域)
科研论文检索方法入门(计算机领域) 文章目录 科研论文检索方法入门(计算机领域)一、写在前面二、CCF推荐期刊的使用方法三、dblp的使用四、多种检索工具的介绍与推荐五、论文检索与阅读六、论文“副产品”的检索七、其他写在最后 …...
2024/4/19 15:02:23
最新文章
- 【强训笔记】day12
NO.1 思路:哈希表,建立bool数组,将要删除的字符串存入哈希表,并标为true,再遍历要做处理的字符串,如果在哈希表中为false,就输出。 代码实现: #include <iostream> #includ…...
2024/5/8 5:39:35 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - Android如何实现一个应用位于前台时全局页面每隔三分钟弹出一次一天最多弹出5次的GroMore半插屏广告,处于付费页和后台时停止
首先我们需要添加一个全局的Application public class MyApp extends LitePalApplication {private static final String TAG "MyApp";private static Context mContext;private boolean isManageMent;public static String oaid;Overridepublic void onCreate() {…...
2024/5/6 22:23:37 - 基于单片机的数字万用表设计
**单片机设计介绍,基于单片机的数字万用表设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的数字万用表设计概要是关于使用单片机技术来实现数字万用表功能的一种设计方案。下面将详细概述该设计的各个…...
2024/5/6 14:06:11 - npm常用命令技巧
NPM (Node Package Manager) 是 JavaScript 的包管理工具,广泛用于管理项目中的依赖。无论是前端项目还是Node.js后端项目,NPM 都扮演着重要的角色。本文将介绍 NPM 中常用的几个命令,并提供相应的代码示例。 1. 初始化项目:npm …...
2024/5/7 10:07:20 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/7 5:50:09 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57