@Value("${sys.user.init-password:leaseyuanma}")里面的参数去哪里找
时间: 2023-12-14 14:37:25 浏览: 28
`@Value("${sys.user.init-password:leaseyuanma}")` 中的参数 `${sys.user.init-password}` 是从 Spring Boot 的配置文件中读取的,其中 `${}` 包含的是配置项的名称,冒号后面的是默认值。
通常情况下,Spring Boot 的配置文件是 `application.properties` 或者 `application.yml`,可以在其中添加自定义的配置项。比如,在 `application.properties` 中添加一个配置项:
```
sys.user.init-password=123456
```
这样,就可以通过 `@Value("${sys.user.init-password}")` 来获取配置项的值了。如果配置项不存在,则会使用冒号后面的默认值,即 `leaseyuanma`。
相关问题
esp8266 用sdk编程上传数据点给Onenet云平台(EDP协议)
使用 ESP8266 SDK 编写程序上传数据点给 OneNet 云平台(EDP协议)的步骤如下:
1. 注册 OneNet 账号并创建产品和设备。
2. 下载 ESP8266 SDK,并在开发环境中配置好 SDK。
3. 在你的代码中添加以下头文件:
```c
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "mem.h"
#include "espconn.h"
```
4. 定义以下变量:
```c
#define SERVER "api.heclouds.com" // OneNet 服务器地址
#define PORT 80 // OneNet 服务器端口
#define DEVICE_ID "your_device_id" // 设备 ID
#define API_KEY "your_api_key" // 设备 API Key
#define DATA_STREAM "your_data_stream" // 数据流名称
#define DATA_VALUE "your_data_value" // 数据流值
```
5. 编写连接 OneNet 服务器的函数:
```c
void ICACHE_FLASH_ATTR connect_to_server() {
struct espconn conn;
ip_addr_t ip;
espconn_create(&conn);
conn.type = ESPCONN_TCP;
conn.state = ESPCONN_NONE;
conn.proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));
conn.proto.tcp->local_port = espconn_port();
conn.proto.tcp->remote_port = PORT;
conn.proto.tcp->remote_ip[0] = 183;
conn.proto.tcp->remote_ip[1] = 230;
conn.proto.tcp->remote_ip[2] = 40;
conn.proto.tcp->remote_ip[3] = 39;
espconn_regist_connectcb(&conn, connect_callback);
espconn_regist_reconcb(&conn, reconnect_callback);
espconn_connect(&conn);
}
```
6. 编写连接成功回调函数:
```c
void ICACHE_FLASH_ATTR connect_callback(void *arg) {
struct espconn *conn = (struct espconn *)arg;
os_printf("Connected to server!\n");
char data[300];
os_sprintf(data, "{\"datastreams\":[{\"id\":\"%s\",\"datapoints\":[{\"value\":\"%s\"}]}]}", DATA_STREAM, DATA_VALUE);
char content_length[10];
os_sprintf(content_length, "%d", os_strlen(data));
char header[200];
os_sprintf(header, "POST /devices/%s/datapoints HTTP/1.1\r\napi-key: %s\r\nHost: %s:%d\r\nContent-Length: %s\r\nContent-Type: application/json\r\n\r\n%s", DEVICE_ID, API_KEY, SERVER, PORT, content_length, data);
espconn_sent(conn, header, os_strlen(header));
}
```
7. 编写重连回调函数:
```c
void ICACHE_FLASH_ATTR reconnect_callback(void *arg, sint8 err) {
os_printf("Reconnecting to server...\n");
connect_to_server();
}
```
8. 在你的程序中调用 `connect_to_server()` 函数即可上传数据点到 OneNet 云平台。
完整代码示例:
```c
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "mem.h"
#include "espconn.h"
#define SERVER "api.heclouds.com" // OneNet 服务器地址
#define PORT 80 // OneNet 服务器端口
#define DEVICE_ID "your_device_id" // 设备 ID
#define API_KEY "your_api_key" // 设备 API Key
#define DATA_STREAM "your_data_stream" // 数据流名称
#define DATA_VALUE "your_data_value" // 数据流值
void ICACHE_FLASH_ATTR connect_to_server();
void ICACHE_FLASH_ATTR connect_callback(void *arg);
void ICACHE_FLASH_ATTR reconnect_callback(void *arg, sint8 err);
void ICACHE_FLASH_ATTR user_init() {
uart_div_modify(0, UART_CLK_FREQ / 115200);
os_printf("Starting...\n");
wifi_set_opmode(STATION_MODE);
struct station_config config;
os_memset(&config, 0, sizeof(config));
os_sprintf(config.ssid, "%s", "your_wifi_ssid");
os_sprintf(config.password, "%s", "your_wifi_password");
wifi_station_set_config(&config);
wifi_station_connect();
connect_to_server();
}
void ICACHE_FLASH_ATTR connect_to_server() {
struct espconn conn;
ip_addr_t ip;
espconn_create(&conn);
conn.type = ESPCONN_TCP;
conn.state = ESPCONN_NONE;
conn.proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));
conn.proto.tcp->local_port = espconn_port();
conn.proto.tcp->remote_port = PORT;
conn.proto.tcp->remote_ip[0] = 183;
conn.proto.tcp->remote_ip[1] = 230;
conn.proto.tcp->remote_ip[2] = 40;
conn.proto.tcp->remote_ip[3] = 39;
espconn_regist_connectcb(&conn, connect_callback);
espconn_regist_reconcb(&conn, reconnect_callback);
espconn_connect(&conn);
}
void ICACHE_FLASH_ATTR connect_callback(void *arg) {
struct espconn *conn = (struct espconn *)arg;
os_printf("Connected to server!\n");
char data[300];
os_sprintf(data, "{\"datastreams\":[{\"id\":\"%s\",\"datapoints\":[{\"value\":\"%s\"}]}]}", DATA_STREAM, DATA_VALUE);
char content_length[10];
os_sprintf(content_length, "%d", os_strlen(data));
char header[200];
os_sprintf(header, "POST /devices/%s/datapoints HTTP/1.1\r\napi-key: %s\r\nHost: %s:%d\r\nContent-Length: %s\r\nContent-Type: application/json\r\n\r\n%s", DEVICE_ID, API_KEY, SERVER, PORT, content_length, data);
espconn_sent(conn, header, os_strlen(header));
}
void ICACHE_FLASH_ATTR reconnect_callback(void *arg, sint8 err) {
os_printf("Reconnecting to server...\n");
connect_to_server();
}
```
pyqt5mysql登录验证_pyqt5 设计简单登陆界面,含记住密码功能
以下是一个简单的 PyQT5 登录界面,包括记住密码的功能和基于 MySQL 的验证:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout, QMessageBox
import mysql.connector
class Login(QWidget):
def __init__(self):
super().__init__()
# 初始化数据库连接
self.cnx = mysql.connector.connect(user='root', password='password', host='localhost', database='testdb')
self.cursor = self.cnx.cursor()
# 初始化 UI
self.initUI()
def initUI(self):
# 创建组件
self.label_username = QLabel('Username')
self.label_password = QLabel('Password')
self.edit_username = QLineEdit()
self.edit_password = QLineEdit()
self.edit_password.setEchoMode(QLineEdit.Password)
self.btn_login = QPushButton('Login')
self.btn_login.clicked.connect(self.login)
self.btn_cancel = QPushButton('Cancel')
self.btn_cancel.clicked.connect(self.close)
self.check_remember = QCheckBox('Remember me')
self.check_remember.setChecked(True) # 默认选中
# 创建布局
hbox_username = QHBoxLayout()
hbox_username.addWidget(self.label_username)
hbox_username.addWidget(self.edit_username)
hbox_password = QHBoxLayout()
hbox_password.addWidget(self.label_password)
hbox_password.addWidget(self.edit_password)
hbox_buttons = QHBoxLayout()
hbox_buttons.addWidget(self.btn_login)
hbox_buttons.addWidget(self.btn_cancel)
vbox = QVBoxLayout()
vbox.addLayout(hbox_username)
vbox.addLayout(hbox_password)
vbox.addWidget(self.check_remember)
vbox.addLayout(hbox_buttons)
# 设置窗口属性
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('Login')
# 读取记住密码的数据
settings = QSettings('myapp.ini', QSettings.IniFormat)
self.edit_username.setText(settings.value('username', ''))
self.edit_password.setText(settings.value('password', ''))
def closeEvent(self, event):
# 保存记住密码的数据
settings = QSettings('myapp.ini', QSettings.IniFormat)
if self.check_remember.isChecked():
settings.setValue('username', self.edit_username.text())
settings.setValue('password', self.edit_password.text())
else:
settings.remove('username')
settings.remove('password')
def login(self):
# 从数据库中验证用户名和密码
username = self.edit_username.text()
password = self.edit_password.text()
query = "SELECT * FROM users WHERE username=%s AND password=%s"
self.cursor.execute(query, (username, password))
result = self.cursor.fetchone()
if result:
QMessageBox.information(self, 'Success', 'Login successful')
else:
QMessageBox.warning(self, 'Error', 'Invalid username or password')
if __name__ == '__main__':
app = QApplication(sys.argv)
login = Login()
login.show()
sys.exit(app.exec_())
```
在这个例子中,我们使用了 MySQL 数据库进行验证,用户名和密码存储在一个名为 `users` 的表中。你需要将 `user`、`password`、`host` 和 `database` 更改为你的 MySQL 连接信息,并且需要确保在 MySQL 数据库中有一个名为 `users` 的表。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)