当前位置: 首页 > news >正文

Android MQTT连接阿里云使用Json解析数据

Android Studio 连接阿里云订阅主题然后使用JSON解析数据非常好用

  • 导入MQTT的JAR包
    • 1、在项目中添加依赖然后使用Studio 去下载库
    • 2、直接下载JAR包,然后作为库进行导入
  • 环境验证:
  • 给程序进行联网权限
  • XML布局文件
    • 效果如下:
  • MainActitive.java 主要代码如下:
  • End

导入MQTT的JAR包

这里有两种方法:

1、在项目中添加依赖然后使用Studio 去下载库

2、直接下载JAR包,然后作为库进行导入

这里先介绍第一种方法:
切换到Android 目录:
在这里插入图片描述按照如下图,添加依赖即可:
在这里插入图片描述

  implementation("org.eclipse.paho:mqtt-client:3-1.2.0")

在这里插入图片描述
第二种方法:
打开Android Studio 然后切换到Android 目录找到Lib文件夹,将MQTT的JAR包复制进去即可。
在这里插入图片描述
然后点击project目录然后将MQTT JAR包导进去
在这里插入图片描述
添加完成之后作为库导入工程中
在这里插入图片描述

环境验证:

在MainActivity 任取一个地方输入MQTT 看是否有提示弹窗。
在这里插入图片描述
到这里以及成功一半了。接下来就是设置一些权限问题

给程序进行联网权限

切换到按的Android 目录
在这里插入图片描述
找到如下的目录:
在这里插入图片描述
添加如代码:

 <uses-permission android:name="android.permission.INTERNET" /><!--允许程序获取网络状态--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

XML布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:background="#51CCDC"android:orientation="vertical"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:background="#673AB7"android:layout_height="wrap_content"><TextViewandroid:layout_width="match_parent"android:text="桂航果蔬种植基地"android:textSize="25sp"android:textColor="#060A0C"android:layout_height="match_parent"></TextView></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="200dp"android:layout_gravity="center"android:layout_marginTop="20dp"><androidx.cardview.widget.CardViewandroid:layout_width="wrap_content"android:layout_height="200dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"app:cardCornerRadius="20dp"><ImageViewandroid:id="@+id/m_img2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/bg3"/></androidx.cardview.widget.CardView></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:background="#51CCDC"android:orientation="vertical"><LinearLayoutandroid:layout_marginBottom="3dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_width="match_parent"android:background="@drawable/shape_corner"android:layout_height="wrap_content"android:orientation="vertical"android:layout_marginTop="5dp"android:padding="30dp"><!--左文字--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学号:2020070230226"android:textColor="@color/black"android:textSize="16sp"></TextView><!--左文字--><TextViewandroid:id="@+id/m_mqtt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text= "姓名:xiao!"android:textColor="@color/black"android:textSize="16sp"></TextView></LinearLayout></LinearLayout><!-- vertical 竖直排列 --><!-- horizontal 竖直排列 --><!-- 数据解析界面 --><LinearLayoutandroid:layout_marginTop="10dp"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFF"><!-- 包裹其他界面--><LinearLayoutandroid:layout_margin="5px"android:padding="3dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:gravity="center"android:layout_weight="1"android:orientation="horizontal"android:layout_height="match_parent"><!--气温--><LinearLayoutandroid:layout_width="160dp"android:layout_weight="1"android:gravity="center"android:background="@drawable/shape_corner"android:layout_height="105dp"><ImageViewandroid:id="@+id/test"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="10dp"android:src="@drawable/air_temp"android:layout_marginRight="15dp"></ImageView><LinearLayoutandroid:layout_width="wrap_content"android:orientation="vertical"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="温度"android:textSize="25sp"></TextView><!-- 数值 --><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/air_temp"android:layout_width="wrap_content"android:text=" 0 "android:textSize="25sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout></LinearLayout><!--The End --><!-- 湿度--><LinearLayoutandroid:layout_marginLeft="25dp"android:layout_width="160dp"android:layout_weight="1"android:gravity="center"android:background="@drawable/shape_corner"android:layout_height="105dp"><ImageViewandroid:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="10dp"android:src="@drawable/air_humi"android:layout_marginRight="15dp"></ImageView><LinearLayoutandroid:layout_width="wrap_content"android:orientation="vertical"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="湿度"android:textSize="20sp"></TextView><!-- 数值 --><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/air_humi"android:layout_width="wrap_content"android:text=" 0 "android:textSize="25sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout></LinearLayout></LinearLayout><!--The End --></LinearLayout><!-- 2 --><LinearLayoutandroid:layout_width="match_parent"android:background="#FFFF"android:layout_margin="5px"android:padding="3dp"android:layout_height="wrap_content"><!-- Layout1--><LinearLayoutandroid:layout_width="match_parent"android:gravity="center"android:layout_height="match_parent"><!--气温--><!--Left1 --><LinearLayoutandroid:layout_width="160dp"android:layout_weight="1"android:gravity="center"android:background="@drawable/shape_corner"android:layout_height="105dp"><ImageViewandroid:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="10dp"android:src="@drawable/soil_humi"android:layout_marginRight="15dp"></ImageView><LinearLayoutandroid:layout_width="wrap_content"android:orientation="vertical"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="土壤湿度"android:textSize="20sp"></TextView><!-- 数值 --><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/sloi_humi"android:layout_width="wrap_content"android:text=" 0 "android:textSize="25sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout></LinearLayout><!--The End --><!-- 湿度--><LinearLayoutandroid:layout_width="160dp"android:layout_weight="1"android:gravity="center"android:layout_marginLeft="25dp"android:background="@drawable/shape_corner"android:layout_height="105dp"><ImageViewandroid:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="10dp"android:src="@drawable/n2"android:layout_marginRight="15dp"></ImageView><LinearLayoutandroid:layout_width="wrap_content"android:orientation="vertical"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="土壤含氮"android:textSize="20sp"></TextView><!-- 数值 --><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/soli_n"android:layout_width="wrap_content"android:text=" 0 "android:textSize="25sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout></LinearLayout></LinearLayout></LinearLayout><!-- The End --><!-- 3 --><LinearLayoutandroid:layout_margin="5px"android:padding="3dp"android:layout_width="match_parent"android:orientation="horizontal"android:gravity="center"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="160dp"android:background="@drawable/shape_corner"android:layout_weight="1"android:gravity="center"android:layout_height="105dp"><ImageViewandroid:layout_weight="1"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="10dp"android:src="@drawable/p2"android:layout_marginRight="15dp"></ImageView><LinearLayoutandroid:layout_width="wrap_content"android:orientation="vertical"android:layout_height="wrap_content"><TextViewandroid:layout_marginTop="5dp"android:layout_marginRight="5dp"android:layout_width="wrap_content"android:text="土壤含磷"android:textSize="20sp"android:layout_height="wrap_content"></TextView><TextViewandroid:id="@+id/soil_p"android:layout_marginTop="5dp"android:layout_width="wrap_content"android:text=" 0 "android:textSize="25sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout><!--L1--><LinearLayoutandroid:layout_marginLeft="25dp"android:gravity="center"android:layout_weight="1"android:layout_width="160dp"android:orientation="horizontal"android:background="@drawable/shape_corner"android:layout_height="105dp"><ImageViewandroid:layout_weight="1"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="10dp"android:src="@drawable/k2"android:layout_marginRight="15dp"></ImageView><LinearLayoutandroid:layout_width="wrap_content"android:orientation="vertical"android:layout_height="wrap_content"><TextViewandroid:layout_marginRight="5dp"android:layout_width="wrap_content"android:text="土壤含钾"android:textSize="20sp"android:layout_height="wrap_content"></TextView><TextViewandroid:id="@+id/soil_k"android:layout_width="wrap_content"android:text=" 0 "android:textSize="25sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout><!--Layout2--></LinearLayout><!-- The End --></LinearLayout></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

效果如下:

在这里插入图片描述

MainActitive.java 主要代码如下:

package com.example.ks_wfs;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.net.wifi.aware.DiscoverySession;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.json.JSONException;
import org.json.JSONObject;import java.util.concurrent.ScheduledExecutorService;
public class MainActivity extends AppCompatActivity {private Handler handler;private String serverUri = "自己的IP地址";
/*    private String serverUri = "tcp://iot.qaeb.cn:1883";*//*这里可以填上各种云平台的物联网云平的域名+1883端口号,什么阿里云腾讯云百度云天工物接入都可以,这里我填的是我在我的阿里云服务器上搭建的EMQ平台的地址,注意:前缀“tcp://”不可少,之前我没写,怎么都连不上,折腾了好久*/private String userName = " ";private String passWord = " ";private String clientId = "app"+System.currentTimeMillis(); //clientId很重要,不能重复,否则就会连不上,所以我定义成 app+当前时间private String mqtt_sub_topic = "/iotsoil/post";          //需要订阅的主题private String mqtt_pub_topic = "xiao";                  //需要发布的主题private MqttClient mqtt_client;                         //创建一个mqtt_client对象MqttConnectOptions options;private  TextView air_temp;private  TextView air_humi;private  TextView sloi_humi;private  TextView soli_n;private  TextView soil_p;private  TextView soil_k;private ImageView test;private ScheduledExecutorService scheduler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/** xiaobai* 2023.10.10* Version V1.0*//*绑定UI文件*/UI_Init();/*类似单片机的初始化*/mqtt_init_Connect();/*初始化连接函数*//*回调函数,数据会在回调函数里面*/mqtt_client.setCallback(new MqttCallback() {@Overridepublic void connectionLost(Throwable throwable) {}@Overridepublic void messageArrived(String s, MqttMessage mqttMessage) throws Exception {/*数据到这了*/final String msg = new String(mqttMessage.getPayload());Log.d("MQTTRCV", msg);//日志信息,可以查看System.out.println(msg);/*打印得到的数据*//*更新UI线程*//*               runOnUiThread(new Runnable() {@Overridepublic void run() {*//*开始解析数据*//**//*数据解析部分这里使用的是Json解析*//**//*为了避免闪退,使用try来处理异常情况*//*try {JSONObject jsonObject = new JSONObject(String.valueOf(msg));String method = jsonObject.getString("method");JSONObject params = jsonObject.getJSONObject("params");int soilHumidity = params.getInt("soilHumidity");int currentTemperature = params.getInt("CurrentTemperature");int currentHumidity = params.getInt("CurrentHumidity");int n = params.getInt("N");int p = params.getInt("P");int k = params.getInt("K");*//*更新数据到UI*//*air_temp.setText(String.valueOf(currentTemperature));air_humi.setText(String.valueOf(currentHumidity));sloi_humi.setText(String.valueOf(soilHumidity));soli_n.setText(String.valueOf(n));soil_p.setText(String.valueOf(p));soil_k.setText(String.valueOf(k));*//*打印日志信息*//*Log.d("TAG", "method: " + method);Log.d("TAG", "soilHumidity: " + soilHumidity);Log.d("TAG", "currentTemperature: " + currentTemperature);Log.d("TAG", "currentHumidity: " + currentHumidity);Log.d("TAG", "N: " + n);Log.d("TAG", "P: " + p);Log.d("TAG", "K: " + k);}catch (JSONException e){e.printStackTrace();Toast.makeText(MainActivity.this ,"数据解析异常!",Toast.LENGTH_LONG).show();}}});*//*下面是带弹窗显示的代码数据已经解析完成,解开注释即可*/runOnUiThread(new Runnable() {@Overridepublic void run() {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("MQTT消息");builder.setMessage(msg);builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {// 点击确定按钮后的操作/*   开始解析数据*//*    数据解析部分这里使用的是Json解析为了避免闪退,使用try来处理异常情况*/try {JSONObject jsonObject = new JSONObject(String.valueOf(msg));String method = jsonObject.getString("method");JSONObject params = jsonObject.getJSONObject("params");int soilHumidity = params.getInt("soilHumidity");int currentTemperature = params.getInt("CurrentTemperature");int currentHumidity = params.getInt("CurrentHumidity");int n = params.getInt("N");int p = params.getInt("P");int k = params.getInt("K");/*     更新UI*/air_temp.setText(String.valueOf(currentTemperature));air_humi.setText(String.valueOf(currentHumidity));sloi_humi.setText(String.valueOf(soilHumidity));soli_n.setText(String.valueOf(n));soil_p.setText(String.valueOf(p));soil_k.setText(String.valueOf(k));/*     打印输出的信息*/Log.d("TAG", "method: " + method);Log.d("TAG", "soilHumidity: " + soilHumidity);Log.d("TAG", "currentTemperature: " + currentTemperature);Log.d("TAG", "currentHumidity: " + currentHumidity);Log.d("TAG", "N: " + n);Log.d("TAG", "P: " + p);Log.d("TAG", "K: " + k);}catch (JSONException e){e.printStackTrace();Toast.makeText(MainActivity.this ,"数据解析异常!",Toast.LENGTH_LONG).show();}}});builder.show();}});}@Overridepublic void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {}});/*点击事件*/test.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {PublishMessage(mqtt_pub_topic,"{\"params\":{\"我是小白,你好呀\":999 } }");}});}public void mqtt_init_Connect(){try {//实例化mqtt_client,填入我们定义的serverUri和clientId,然后MemoryPersistence设置clientid的保存形式,默认为以内存保存mqtt_client = new MqttClient(serverUri,clientId,new MemoryPersistence());//创建并实例化一个MQTT的连接参数对象options = new MqttConnectOptions();//然后设置对应的参数options.setUserName(userName);                  //设置连接的用户名options.setPassword(passWord.toCharArray());    //设置连接的密码options.setConnectionTimeout(30);               // 设置超时时间,单位为秒options.setKeepAliveInterval(50);               //设置心跳,30soptions.setAutomaticReconnect(true);            //是否重连//设置是否清空session,设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接options.setCleanSession(false);/*初始化成功之后就开始连接*/connect();Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_LONG).show();}catch (Exception e) {e.printStackTrace();Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_LONG).show();}}public void connect(){//连接mqtt服务器try {mqtt_client.connect(options);mqtt_client.subscribe(mqtt_sub_topic);Toast.makeText(this ,"开始建立连接.....!",Toast.LENGTH_LONG).show();}catch (Exception e) {e.printStackTrace();Log.d("MQTTCon","mqtt连接失败");Toast.makeText(this ,"mqtt连接失败!",Toast.LENGTH_LONG).show();}}/*绑定各个UI控件*/public void UI_Init(){air_temp  =  findViewById(R.id.air_temp); //空气温度air_humi  =  findViewById(R.id.air_humi);//空气湿度sloi_humi =  findViewById(R.id.sloi_humi);//土壤湿度soli_n    =  findViewById(R.id.soli_n);//土壤含N量soil_p    =  findViewById(R.id.soil_p);//土壤含P量soil_k    =  findViewById(R.id.soil_k);//土壤含K量test      =  findViewById(R.id.test);//测试按钮}/*发布函数!*/private void PublishMessage(String topic,String Message2){if(mqtt_client ==null || !mqtt_client.isConnected()){return;}MqttMessage message = new MqttMessage();message.setPayload(Message2.getBytes());try{mqtt_client.publish(topic,message);}catch (MqttException e){e.printStackTrace();}}}

End

完整的代码工程可以进QQ群获取!
764452437

相关文章:

Android MQTT连接阿里云使用Json解析数据

Android Studio 连接阿里云订阅主题然后使用JSON解析数据非常好用 导入MQTT的JAR包1、在项目中添加依赖然后使用Studio 去下载库2、直接下载JAR包&#xff0c;然后作为库进行导入 环境验证&#xff1a;给程序进行联网权限XML布局文件效果如下&#xff1a; MainActitive.java 主…...

生成二维码

Qt本地生成二维码-第三方库Libqrencode Chapter1 Qt本地生成二维码-第三方库Libqrencode一、功能简介二、本地生成二维码三、在线生成二维码 Chapter2 Qt生成二维码图片方法QRCode二维码简介如何选定QR码版本&#xff1f;主要方法(1) 下载qrencode源码(2) 将qrencode源码移植到…...

【C++入门 一 】学习C++背景、开启C++奇妙之旅

目录 1.什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域1. 操作系统以及大型系统软件开发2. 服务器端开发3. 游戏开发4. 嵌入式和物联网领域5. 数字图像处理6. 人工智能7. 分布式应用 3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 4. 如何学习C4.1 别人怎么学…...

oracle 表空间详解以及配置操作

Oracle 数据库是由若干个表空间构成的。任何数据库对象在存储时都必须存储在某个 表空间中。表空间对应于若干个数据文件&#xff0c;即表空间是由一个或多个数据文件构成的。 1、常用表空间&#xff1a; 系统表空间 (system tablespace) 是每个 Oracle 数据库都必须具备的。…...

php判断是否是email格式

要判断一个字符串是否是有效的电子邮件地址&#xff0c;你可以使用正则表达式和PHP内置函数来完成。以下是一个示例代码&#xff1a; $email "exampleexample.com"; // 你要检查的电子邮件地址// 使用正则表达式检查电子邮件格式 if (filter_var($email, FILTER_VA…...

AJAX与JSON

1.AJAX 1.AJAX概述 AJAX(Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML 本身不是一种新技术&#xff0c;而是多个技术综合。用于快速创建动态网页的技术 一般的网页如果需要更新内容&#xff0c;必需重新加载个页面。 而 Ajax通过浏览器与服务器…...

1024常玩到的漏洞(第十六课)

1024常玩到的两个漏洞(第十六课) 漏洞扫描工具 1024渗透OpenVas扫描工具使用(第十四课)-CSDN博客 流程 一 ms12-020漏洞分析 MS12-020漏洞是一种远程桌面协议(RDP)漏洞。在攻击者利用该漏洞之前,它需要将攻击者的计算机连接到受害者的计算机上。攻击者可以通过向受害者计算…...

【Edabit 算法 ★★★★★★】【两个大整数相加】Recursion: Sum of Two Numbers (With A Twist!)

Recursion: Sum of Two Numbers (With A Twist!) Instructions This is an “expert” challenge!!! Why is a sum of two numbers an “expert” challenge!!! Well, the numbers can have 1000 digits or even beyond such count… So, what’s the twist? You have to do …...

电容屏物体识别手工制作

电容屏识别物体效果2 电容屏识别物体效果1 电容屏识别物体效果3 电容屏识别物体效果4 电容识别物理效果5 我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。 触摸屏无处不在&#xff0c;成千上万的应用程序中有多种设备和屏幕格式&#xff0c;但我们只找到…...

13JVM进阶

JVM内存模型 1、线程私有的数据区 1)、程序计数器 我们知道&#xff0c;线程是CPU调度的基本单位。在多线程情况下&#xff0c;当线程数超过CPU数量或CPU内核数量时&#xff0c;线程之间就要根据 时间片轮询抢夺CPU时间资源。也就是说&#xff0c;在任何一个确定的时刻&#…...

java与c++中的交换方法

最近在写算法的时候&#xff0c;遇到一个问题。 java中编写swap&#xff08;交换&#xff09;方法还需要传入一个数组&#xff0c;但是在c中则不需要。 可以看到&#xff0c;在没有传入数组进行交换数组元素的时候&#xff0c;交换前与交换后的值是一样的。 而在c中&#xff…...

OpenCV中world模块介绍

OpenCV中有很多模块&#xff0c;模块间保持最小的依赖关系&#xff0c;用户可以根据自己的实际需要链接相关的库&#xff0c;而不需链接所有的库&#xff0c;这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便&#xff0c;此时可以使…...

IMX6ULL板开发——第一个应用程序

实现第一个应用程序&#xff1a;在IMX6ULL开发板上运行程序hello.c #include <stdio.h>/* 执行命令: ./hello weidongshan* argc 2* argv[0] ./hello* argv[1] weidongshan*/int main(int argc, char **argv) {if (argc > 2)printf("Hello, %s!\n", arg…...

MyBatis Generator - 快速生成 实体类 和 映射文件

目录 一、MyBatis Generator 的使用 1.1、生成类和映射文件 1.1.1、在 pom.xml 中引入依赖 1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件 1.1.3、自动生成类 和 映射文件 1.1.4、在 Insert 标签中添加获取主键值的选项 1.1.5、扫描配置…...

点击查看详情 | 网页版微信客户管理系统如何操作试用?

微信作为我们日常生活中最常用的社交应用之一&#xff0c;早已成为我们与朋友、家人和同事保持联系的重要工具&#xff0c;也是营销引流的重要平台。 通过微信营销&#xff0c;可以比较精准定向亲近用户。而微信的功能并没有很能满足做微信营销的人群&#xff0c;所以我们需要借…...

新加坡攻略

文章目录 基础信息入境行李App电信交通餐饮购物法规旅游牛车水&#xff08;Chinatown&#xff09;克拉码头&#xff08;Clarke Quay&#xff09;东海岸&#xff08;East Coast&#xff09;丹戎巴葛&#xff08;Tanjong Pagar&#xff09;滨海湾&#xff08;Marina Bay&#xff…...

AM@导数的应用@二阶导数的应用@函数的性态研究@函数图形的绘制

文章目录 概念称呼说明驻点极值和极值点最值极值点和最值比较曲线的凹凸性凹凸性判定定理&#x1f47a;例证明 凹凸性和单调性无必然关系拐点寻找拐点&#x1f47a; 函数图形的绘制例 概念 本文讨论导数的应用:利用导数研究函数的性态相关定理主要通过Lagrange中值定理进行推导…...

【2024秋招】2023-9-14 最右后端开发线下一面

1 自我介绍 2 计算机网络 2.1 说说你对tcp滑动窗口的理解 TCP 滑动窗口是 TCP 协议流量控制的一个重要机制。它的主要目的是确保发送方不会因为发送太多数据而使接收方不堪重负。下面我会详细地描述滑动窗口的概念&#xff1a; 窗口的大小&#xff1a; 滑动窗口的大小&#…...

uniapp无感刷新token实现过程

路漫漫其修远兮&#xff0c;前端道路逐渐迷茫&#xff0c;时隔好久好久终于想起了我还有一个小博客&#xff0c;最近在一直在弄uniapp&#xff0c;属实有被恶心到&#xff0c;但也至少会用了&#xff0c;最近实现了一个比较通用的功能&#xff0c;就是无感刷新token&#xff0c…...

一步步掌握Java IO的奥秘:深入学习BIO、NIO,实现客户端与服务器通信

众所周知&#xff0c;Java IO是一个庞大的知识体系&#xff0c;很多人在学习的过程中会感到迷茫&#xff0c;甚至学得一头雾水&#xff0c;而我也曾有同样的困惑。因此&#xff0c;本文的目标是帮助大家一步一步深入学习Java IO&#xff0c;从BIO开始&#xff0c;然后引出JDK1.…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...