rv1126-rv1109-openssh

这是一个工具,可以通过ssh远程登录来操作,非常逆天!

于是rv1109代码自身自带有openssh

所以只需要打开config即可

diff --git a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
index f843b07cc..feabc8465 100755
--- a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
+++ b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
@@ -68,3 +68,9 @@ BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
 # BR2_TARGET_ROOTFS_UBIFS_LEBSIZE is reset to default
 # BR2_TARGET_ROOTFS_UBIFS_OPTS is reset to default
 BR2_TARGET_ROOTFS_UBI_SQUASHFS=y
+BR2_PACKAGE_OPENSSH=y
+BR2_PACKAGE_OPENSSH_CLIENT=y
+BR2_PACKAGE_OPENSSH_SERVER=y
+BR2_PACKAGE_OPENSSH_ENABLE_ROOT_LOGIN=y
+BR2_PACKAGE_OPENSSH_KEY_UTILS=y
+BR2_PACKAGE_OPENSSH_LONBON=y

然后就可以看到out目录下面生成了scp、ssh、ssh-add、ssh-keygen、ssh-keyscan等

然后要把密钥这些文件放进去

 

diff --git a/buildroot/fs/common.mk b/buildroot/fs/common.mk
index 25ce3cbed..4f00960a1 100755
--- a/buildroot/fs/common.mk
+++ b/buildroot/fs/common.mk
@@ -35,7 +35,7 @@ ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES))

 ROOTFS_FULL_DEVICES_TABLE = $(FS_DIR)/full_devices_table.txt
 ROOTFS_FULL_USERS_TABLE = $(FS_DIR)/full_users_table.txt
-
+OPENSSH_DIR_FILES = $(TARGET_DIR)/../../../package/openssh2
 ROOTFS_COMMON_NAME = rootfs-common
 ROOTFS_COMMON_TYPE = rootfs
 ROOTFS_COMMON_DEPENDENCIES = \
@@ -172,6 +172,11 @@ $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES)
        mkdir -p $(TARGET_DIR)/mnt/ro
        mkdir -p $(TARGET_DIR)/mnt/rw
        mkdir -p $(TARGET_DIR)/mnt/rwfs
+ifeq ($(BR2_PACKAGE_OPENSSH_LONBON),y)
+       mkdir -p $(TARGET_DIR)/libexe
+       cp -a $(OPENSSH_DIR_FILES)/libexe/* $(TARGET_DIR)/libexe
+       cp -a $(OPENSSH_DIR_FILES)/etc/ssh/* $(TARGET_DIR)/etc/ssh
+endif

运行后会打包进跟文件系统

就可以看到我打包的路径

然后就完成了,openssh就这么简单,里面是密钥这些文件

==============================测试openssh==================================

//-i 指定密钥文件

ssh -i ./etc/ssh/ssh_host_rsa_key sdk@192.168.1.149
//登录我的ubuntu(远程登录设备终端)
// ssh -i [密钥] [用户名]@[IP]
exit //注销


scp -i ./etc/ssh/ssh_host_rsa_key  bin/mv  sdk@192.168.1.149:work/rk
//cp文件到远程(拷贝本地文件到远程设备)
// scp -i [密钥] [文件] [用户名]@[IP]


scp -i ./etc/ssh/ssh_host_rsa_key   sdk@192.168.1.149:work/rk/mv ./mnt/rw
//cp文件到本地(拷贝远程设备中的文件到本地)
// scp -i [密钥] [用户名]@[IP][文件]  [本地目录]

 远程登录设备终端:

 拷贝本地文件到远程设备:

 拷贝远程设备中的文件到本地:

 

===============================生成密钥=====================================

要在本地 Windows 系统上生成 OpenSSH 格式的私钥,可以使用 ssh-keygen 命令。请按照以下步骤进行操作:

打开命令提示符或 PowerShell。你可以在 Windows 上使用内置的命令提示符或 Windows PowerShell。

使用 ssh-keygen 命令生成密钥。以下是一些常用选项:

-t 选项:指定密钥类型,通常选择 rsa 或 ed25519。
-b 选项:指定密钥的位数。一般来说,2048 位或更多是安全的。例如,-b 2048。
-f 选项:指定生成的密钥文件的名称和路径。如果未指定路径,则会在当前用户的主目录中创建默认路径。
例如,生成一个 2048 位的 RSA 密钥并将其保存到用户主目录下的 .ssh 文件夹中,可以运行以下命令:

shell

ssh-keygen -t rsa -b 2048

在生成密钥时,你将被要求指定文件保存位置和设置一个密码。你可以选择将密钥保存在默认位置(通常是 C:\Users\<YourUsername>\.ssh)或者选择其他位置。如果你选择将密码留空,则私钥将不会被加密。

完成后,将在指定的文件夹中生成两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。私钥文件包含 .pem 扩展名。

如果你想要在 Linux 服务器上使用此密钥对进行身份验证,你需要将生成的公钥(.pub 文件)复制到服务器的 ~/.ssh/authorized_keys 文件中。你可以使用 SSH 客户端连接到服务器,并将公钥上传到服务器,或者将公钥的内容手动复制到服务器上的 authorized_keys 文件中。

现在,你可以在 Linux 服务器上使用生成的私钥文件进行 SSH 连接,例如:

shell

ssh -i /path/to/private/keyfile username@hostname

其中 /path/to/private/keyfile 是生成的私钥文件的路径,username 是你在服务器上的用户名,hostname 是服务器的主机名或 IP 地址。

请注意,生成的私钥文件包含私钥信息,因此应谨慎保存,并不要将其与他人分享。公钥文件(.pub)可以安全地与其他人分享,并添加到远程服务器的 authorized_keys 文件中,以实现 SSH 密钥身份验证。

==================================最后全部补丁===============================

diff --git a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
index f843b07cc..feabc8465 100755
--- a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
+++ b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
@@ -68,3 +68,9 @@ BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
 # BR2_TARGET_ROOTFS_UBIFS_LEBSIZE is reset to default
 # BR2_TARGET_ROOTFS_UBIFS_OPTS is reset to default
 BR2_TARGET_ROOTFS_UBI_SQUASHFS=y
+BR2_PACKAGE_OPENSSH=y
+BR2_PACKAGE_OPENSSH_CLIENT=y
+BR2_PACKAGE_OPENSSH_SERVER=y
+BR2_PACKAGE_OPENSSH_ENABLE_ROOT_LOGIN=y
+BR2_PACKAGE_OPENSSH_KEY_UTILS=y
+BR2_PACKAGE_OPENSSH_LONBON=y
\ No newline at end of file
diff --git a/buildroot/package/openssh/Config.in b/buildroot/package/openssh/Config.in
old mode 100644
new mode 100755
index 7c69c0acb..f6d08ba2c
--- a/buildroot/package/openssh/Config.in
+++ b/buildroot/package/openssh/Config.in
@@ -41,4 +41,12 @@ config BR2_PACKAGE_OPENSSH_KEY_UTILS
        help
          Key utilities: ssh-keygen, ssh-keyscan.

+config BR2_PACKAGE_OPENSSH_LONBON
+       bool "openssh2"
+       default y
+       help
+         A free version of the SSH protocol suite of network
+         connectivity tools. The standard 'ssh', 'sshd', 'scp', and
+         friends.version4.6p1.
+
 endif
diff --git a/buildroot/package/openssh/openssh.mk b/buildroot/package/openssh/openssh.mk
old mode 100644
new mode 100755
index e2599e853..5aef23a58
--- a/buildroot/package/openssh/openssh.mk
+++ b/buildroot/package/openssh/openssh.mk
@@ -13,6 +13,9 @@ OPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable
 OPENSSH_LICENSE = BSD-3-Clause, BSD-2-Clause, Public Domain
 OPENSSH_LICENSE_FILES = LICENCE

+OPENSSH_DIR = $(TARGET_DIR)/../../../package/openssh
+OPENSSH_DKDIR = mkdir
+OPENSSH_CP = mkdir
 # patch touching m4/openssh.m4
 OPENSSH_AUTORECONF = YES

@@ -142,4 +145,10 @@ endef
 OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_ENABLE_ROOT_LOGIN
 endif

+_all:
+ifeq ($(BR2_PACKAGE_OPENSSH_LONBON),y)
+       $(OPENSSH_DKDIR) -p $(TARGET_DIR)/libexe
+       $(OPENSSH_CP) -a $(OPENSSH_DIR)/libexe/* $(TARGET_DIR)/libexe
+       $(OPENSSH_cp) -a $(OPENSSH_DIR)/etc/ssh/* $(TARGET_DIR)/etc/ssh
+endif
 $(eval $(autotools-package))

================================frpc 穿透===================================

1.重启android设备进入先创建出几个key
mkdir  -p /data/ssh
chmod  700 /data/ssh
cd /data/ssh/
ssh-keygen  -t rsa  -f  id_rsa -N  “自定义秘钥”
//这里生成id_rsa和id_rsa.pub文件

2.将我们电脑上的公钥push进去
//注意,authorized_keys是pc客户端的公钥文件
adb  push  id_rsa.pub /data/ssh/authorized_keys

3.更改sshd服务配置文件/system/etc/ssh/sshd_config
#Port  22改为Port 22
#PermitRootLogin yes改为PermitRootLogin  without-password
#RSAAuthentication yes改为RSAAuthentication  yes
#PubkeyAuthentication yes改为PubkeyAuthentication  yes
PasswordAuthentication no改为#PasswordAuthentication  no
#PermitEmptyPasswords no改为PermitEmptyPasswords  yes
#ChallengeResponseAuthentication yes改为ChallengeResponseAuthentication  yes
#UsePrivilegeSeparation  yes改为UsePrivilegeSeparation  no

4.启动ssh服务
#android系统内启动服务
start-ssh
//不中断的在后台运行:nohup start-ssh &

5.selinux的安全策略配置
  #5.1、修改device/rockchip/common/sepolicy/file_contexts 添加
/system/bin/start-ssh                  u:object_r:start-ssh_exec:s0

  #5.2、修改device/rockchip/common/sepolicy/start-ssh.te添加
type start-ssh, domain;
type start-ssh_exec, exec_type, file_type;

init_daemon_domain(start-ssh)
allow start-ssh start-ssh:tcp_socket { read write getopt getattr setopt accept create bind listen name_bind node_bind };
allow start-ssh fwmarkd_socket:sock_file { write };
allow start-ssh netd:unix_stream_socket { connectto };
allow start-ssh start-ssh:fd { use };
allow start-ssh port:tcp_socket { name_bind };
allow start-ssh node:tcp_socket { node_bind };
allow start-ssh system_file:file { execute_no_trans };
allow start-ssh start-ssh:capability { setgid net_raw setuid dac_override net_bind_service };
allow start-ssh start-ssh:udp_socket { create };
allow start-ssh system_data_file:file { read open getattr create write };
allow start-ssh system_data_file:dir { read write open getattr add_name };
allow start-ssh rootfs:lnk_file { getattr };
allow start-ssh shell_exec:file { getattr execute read open execute_no_trans };
allow start-ssh devpts:chr_file { open ioctl getattr read write setattr getattr };

  #5.3、修改system/sepolicy/domain.te
neverallow {
   -system_server
   -system_app
   -init
+  -start-ssh
   -installd # for relabelfrom and unlink, check for this in explicit neverallow
 } system_data_file:file no_w_file_perms;
 # do not grant anything greater than r_file_perms and relabelfrom unlink

6.编译运行烧录设备
7.SSH连接(可以使用xshell进行连接默认端口22)
运行起来后,用电脑连接,连接进去后直接就是root用户
ssh root@192.168.0.1
运行ok时的/data/ssh目录
rk3399_box:/data/ssh # ls -l
total 56
-rw------- 1 root root  412 2021-04-13 06:51 authorized_keys
-rw------- 1 root root  668 2021-04-13 06:51 ssh_host_dsa_key
-rw------- 1 root root  604 2021-04-13 06:51 ssh_host_dsa_key.pub
-rw------- 1 root root 1675 2021-04-13 06:51 ssh_host_rsa_key
-rw------- 1 root root  396 2021-04-13 06:51 ssh_host_rsa_key.pub
-rw------- 1 root root 3342 2021-04-13 06:51 sshd_config

8.收尾工作

a、把启动服务做进固件里面去
b、然后将/data/ssh/里面的文件全部拷贝出来,编译的时候拷贝到system/etc/ssh/目录,开机再拷贝到data/ssh目录,并设置好相关的权限
修改:rk3399_android7.1/device/rockchip/rk3399/init.rk3399.rc

# For ssh 开机拷贝配置文件
     mkdir /data/ssh
     chmod 777 /data/ssh
     copy /system/etc/ssh/authorized_keys /data/ssh/authorized_keys
     copy /system/etc/ssh/ssh_host_dsa_key /data/ssh/ssh_host_dsa_key
     copy /system/etc/ssh/ssh_host_dsa_key.pub /data/ssh/ssh_host_dsa_key.pub
     copy /system/etc/ssh/ssh_host_ecdsa_key /data/ssh/ssh_host_ecdsa_key
     copy /system/etc/ssh/ssh_host_ecdsa_key.pub /data/ssh/ssh_host_ecdsa_key.pub
     copy /system/etc/ssh/ssh_host_rsa_key /data/ssh/ssh_host_rsa_key
     copy /system/etc/ssh/ssh_host_rsa_key.pub /data/ssh/ssh_host_rsa_key.pub
     copy /system/etc/ssh/sshd_config /data/ssh/sshd_config
     mkdir /data/ssh/empty
     chmod 600 /data/ssh/empty
     chmod 600 /data/ssh/authorized_keys
     chmod 600 /data/ssh/ssh_host_dsa_key
     chmod 600 /data/ssh/ssh_host_dsa_key.pub
     chmod 600 /data/ssh/ssh_host_ecdsa_key
     chmod 600 /data/ssh/ssh_host_ecdsa_key.pub
     chmod 600 /data/ssh/ssh_host_rsa_key
     chmod 600 /data/ssh/ssh_host_rsa_key.pub
     chmod 600 /data/ssh/sshd_config

#open ssh 开机启动ssh服务
service daemonssh /system/bin/start-ssh
       class main
       user  root
       group root

修改:device/rockchip/rk3399/rk3399_box.mk 添加
PRODUCT_COPY_FILES += \
       $(call find-copy-subdir-files,*,$(LOCAL_PATH)/ssh,system/etc/ssh)

第一阶段完工,现在已经完全能在局域网内远程ssh安卓设备
二、内网穿透
这里需要到自己购买服务器,或者使用花生壳之类的,不建议使用免费,存在安全问题,最好自己搭建;
代码:FRP开源项目
服务器:阿里云
文档:https://gofrp.org/docs/setup/
1、下载源码
https://github.com/fatedier/frp/releases
根据云服务器、安卓的cpu架构选择对应的包下载;
(客户端)RK3399 Cpu架构选:frp_0.36.2_linux_arm64.tar.gz
(服务端)阿里云服务器CPU架构选:frp_0.36.2_linux_amd64.tar.gz
2、安装
服务端:
#home目录下创建frp目录并拷贝源码到此目录,一定要修改执行权限
[root@ frp]# ll
total 22628
-rwxrwxrwx 1 root root  9953280 Mar 18 11:24 frpc
-rwxrwxrwx 1 root root     9433 Mar 18 11:26 frpc_full.ini
-rwxrwxrwx 1 root root      126 Mar 18 11:26 frpc.ini
-rwxrwxrwx 1 root root 13172736 Mar 18 11:24 frps
-rwxrwxrwx 1 root root     5051 Mar 18 11:26 frps_full.ini
-rwxrwxrwx 1 root root       26 Mar 18 11:26 frps.ini
-rw-rw-r-- 1 root root    11358 Mar 18 11:26 LICENSE
drwxrwxr-x 2 root root     4096 Apr 13 14:19 systemd

修改配置,在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口:
[common]
bind_port = 7000

启动服务
./frps -c ./frps.ini

客户端(RK3399):
在system目录下创建frpc并复制代码到该目录下,一定要修改执行权限
rk3399_box:/system/frpc # ls -l
total 42200
__bionic_open_tzdata_path: ANDROID_DATA not set!
__bionic_open_tzdata_path: ANDROID_ROOT not set!
-rw-r--r-- 1 root root    11358 2021-03-19 06:05 LICENSE
-rwxrwxrwx 1 root root  9240576 2021-03-19 06:04 frpc
-rwxrwxrwx 1 root root      130 2021-04-13 06:34 frpc.ini
-rwxrwxrwx 1 root root     9433 2021-03-19 06:05 frpc_full.ini
-rw-r--r-- 1 root root 12320768 2021-03-19 06:04 frps
-rw-r--r-- 1 root root       26 2021-03-19 06:05 frps.ini
-rw-r--r-- 1 root root     5051 2021-03-19 06:05 frps_full.ini
drwxrwxrwx 2 root root     4096 2021-04-13 06:41 systemd

修改配置:在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:
[common]
server_addr = x.x.x.x 你的阿里云ip地址
server_port = 7000
tls_enable = true  //解决内网防火墙问题导致无法连接服务器

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[adb]
type = tcp
local_ip = 127.0.0.1
local_port = 5555   
remote_port = 8555

local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。
启动客户端:
./frpc -c ./frpc.ini

最后:通过xshell连接服务器ip,协议为SSH,端口号为6000,5555为安卓adb调试网络端口完美连上Rk3399(你的手机)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/159259.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【力扣】从零开始的动态规划

【力扣】从零开始的动态规划 文章目录 【力扣】从零开始的动态规划开头139. 单词拆分解题思路 45. 跳跃游戏 II解题思路 5. 最长回文子串解题思路 1143. 最长公共子序列解题思路 931. 下降路径最小和解题思路 开头 本力扣题解用5题来引出动态规划的解题步骤&#xff0c;用于本…

我的 2023 秋招总结,拿到了大厂offer

2023秋招小结 前言 & 介绍 作为2024年毕业的学生&#xff0c;在2023年也就是今年秋招。 现在秋招快结束了&#xff0c;人生可能没有几次秋招的机会&#xff08;应该就一次&#xff0c;最多两次吧哈哈&#xff09;&#xff0c;也有一点感悟&#xff0c;所以小小总结一下。…

Unity中Shader纹理的过滤

文章目录 前言一、为什么要过滤&#xff1f;二、过滤方式1、Point(no filter) 无过滤2、Bilinear 双线性过滤3、Trilinear 三线性过滤 前言 Unity中Shader纹理的过滤 一、为什么要过滤&#xff1f; 事实上没有一个纹理上的纹素是与屏幕上的像素是一一对应的。 屏幕上的 一个…

【大模型应用开发教程】动手学大模型应用开发,一起探索LLM Universe

动手学大模型应用开发 01 开源初心02 教程内容03 学习指南04 文章最后 原文链接-奇想星球 LLM 正逐步成为信息世界的新革命力量&#xff0c;其通过强大的自然语言理解、自然语言生成能力&#xff0c;为开发者提供了新的、更强大的应用开发选择。随着国内外井喷式的 LLM API 服…

Flutter笔记:桌面应用 窗口定制库 bitsdojo_window

Flutter笔记 桌面应用窗口管理库 bitsdojo_window 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/13446…

开源与闭源:大模型时代的技术交融与商业平衡

一、开源和闭源的优劣势比较 1.1 开源 优势&#xff1a; 1.技术共享与吸引人才&#xff1a; 开源促进了技术共享&#xff0c;吸引了全球范围内的人才参与大模型的发展&#xff0c;形成了庞大的开发者社区。 2.推动创新&#xff1a; 开源模式鼓励开发者共同参与&#xff0c;推动…

LrC ACR :优化的 AI 天空蒙版

在 Lightroom Classic 和 Adobe Camera Raw 中创建基于 AI 技术的天空蒙版时&#xff0c;可能由于底层算法的原因&#xff0c;选中的天空蒙版在边缘处有晕开的现象&#xff08;又称为“出血” Bleed&#xff09;&#xff0c;从而导致天空蒙版不是很精准。 本文提供了一种特殊方…

vue监听对象属性值变化

一、官方文档 二、实现方法 方法一、直接根据watch来监听 export default {data() {return {object: {username: ,password: }}},watch: {object.username(newVal, oldVal) {console.log(newVal, oldVal)}} }方法二&#xff1a;利用watch和computed来实现监听 利用computed定…

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…

【LeetCode刷题日志】20.有效的括号

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;C/C领域新星创作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;LeetCode 刷题日志&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;…

php中RESTful API使用

1、RESTful AP是什么 RESTful API是一种软件架构风格 RESTful API基于HTTP协议&#xff0c;并遵循一系列约定和原则。它的设计理念是将资源&#xff08;Resource&#xff09;作为核心概念&#xff0c;并通过一组统一的接口对资源进行操作。API的资源通常通过URL进行标识&…

3DMAX平铺插件MaxTiles教程

MaxTiles 结合了一组材质和地图插件&#xff0c;任何建筑师或 3D 可视化艺术家都会喜欢。与静态位图纹理不同&#xff0c;MaxTiles 材质可以更改键合图案、替换和混合砖块、更改边缘、随机化颜色、位置、表面等等。MaxTiles 结合了以下功能&#xff1a; 墙壁和瓷砖 – 用于创建…

腾讯云4核8G服务器性能如何多少钱一年?

腾讯云服务器4核8G配置优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云百科txybk.com分…

使用 Redis BitMap 实现签到与查询历史签到以及签到统计功能(SpringBoot环境)

目录 一、前言二、Redis BitMap 位图原理2.1、BitMap 能解决什么2.2、BitMap 存储空间计算2.3、BitMap 存在问题 三、Redis BitMap 操作基本语法和原生实现签到3.1、基本语法3.2、Redis BitMap 实现签到操作指令 四、SpringBoot 使用 Redis BitMap 实现签到与统计功能4.1、代码…

ClickHouse的分片和副本

1.副本 副本的目的主要是保障数据的高可用性&#xff0c;即使一台ClickHouse节点宕机&#xff0c;那么也可以从其他服务器获得相同的数据。 Data Replication | ClickHouse Docs 1.1 副本写入流程 1.2 配置步骤 &#xff08;1&#xff09;启动zookeeper集群 &#xff08;2&…

异常

文章目录 概念体系结构分类处理抛异常捕获异常throws 异常声明try-catch 异常捕获finally 异常处理流程自定义异常 概念 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常。 比如: 算术异常 Exception in thread "main" java.lang.ArithmeticExcept…

C/C++---------------LeetCode第LCR. 024.反转链表

反转链表 题目及要求双指针 题目及要求 双指针 思路&#xff1a;遍历链表&#xff0c;并在访问各节点时修改 next 引用指向&#xff0c;首先&#xff0c;检查链表是否为空或者只有一个节点&#xff0c;如果是的话直接返回原始的头节点&#xff0c;然后使用三个指针来迭代整个…

最新自动定位版本付费进群系统源码

更新内容&#xff1a; 1.在网站首页增加了付款轮播功能。 2.新增了城市定位功能&#xff0c;方便用户查找所在城市的相关信息。 3.对域名库及支付设置进行了更新和优化。 4.增加了一种图模板设置模式&#xff0c;简化了后台模板设置流程。 5.此外还进行了前后台的其他优化…

二进制分析工具-radare2使用教程

二进制分析工具-radare2使用教程 按照如下执行命令 按照如下执行命令 r2 -A 二进制文件

智慧物流追踪:打造未来的物流网络

随着互联网和物流行业的深度融合&#xff0c;智慧物流已成为现代物流发展的新趋势。通过开发一款智能化的物流追踪app小程序&#xff0c;我们不仅可以提高物流效率&#xff0c;还可以为客户提供更加便捷的服务。本文将从市场需求、技术应用、竞争优势、行业前景等方面对智慧物流…