柠檬精僵尸2023-2024_wb粉丝清道夫比赛博更好用的方法

news2024/10/6 4:07:59

微博批量移除微博粉丝方法_可视化的界面 多样性选择你要移除清理的粉丝类型

 

 

三个按钮就可以搞定了

移除粉丝步骤:

首先打开微博,登陆自己的账号。

找到你想要删除的粉丝,点开他/她的头像,打开他/她的个人主页

如果想要大批量清理垃圾粉、僵尸粉,手机上并没有相应的功能,只能一个个删除,但是你可以在电脑端进行操作,登录个人微博后依次点击[帐号昵称-粉丝],进入粉丝设置的页面

稍等片刻扫描的结果就会出现,它会提示你的粉丝质量情况。同时给你一个选择,若您想清理垃圾粉丝则选择【清除垃圾粉丝】我们就可以把自己微博中的垃圾粉丝清理了

【戳教程】zhihu. com/question/608739314

 

附上js版本代码在里面【https://blog.csdn.net/wangwei490202517/article/details/131476110】

/* eslint-disable no-unused-vars */
/* eslint-disable no-extra-semi */
/* eslint-disable no-console */
// ==UserScript==
// @name         柠檬精僵尸清道夫一键僵尸粉清除助手v2023.06.30
// @namespace    https://blog.csdn.net/wangwei490202517/category_10507403.html?spm=1001.2014.3001.5482
// @version      1.0.9
// @description  一键批量删除僵尸粉:兴趣推荐、互相关注、不活跃用户、垃圾昵称、等塞粉微博粉丝记录
// @author      echo_wx:WZMSLR
// @match      https://weibo.com/*
// @icon         https://tva2.sinaimg.cn/crop.2.18.304.304.180/ad573135jw8f33qt1c74sj208k08z75q.jpg?KID=imgbed,tva&Expires=1671381776&ssig=du6gqkc8OF
// @license      MIT
// @grant        none
// ==/UserScript==
 
let removeTargetFans = false; /*是否删除符合条件的粉丝,默认关闭*/
let deepSearchMode =false; /*是否开启深度清理模式*/
let ignoreLikes = true; /*是否无视用户最近点赞*/
let minDayCount = 180; /*最小不活跃天数*/
 
let fansMinCount = 2; /*最小粉丝数*/
let weiboMinCount = 3; /*最小微博数*/
 
let totalCount = 0;
 
let checkIsFromRecommended = true; /*是否检查通过推荐关注*/
let checkIsInactive = true; /*是否检查不活跃用户*/
let checkFansOrWeibo = false; /*是否只判断粉丝数或微博数*/
let checkIsFollowing =true; /*是否检查相互关注*/
let checkIsDefaultIcon = false; /*是否检查默认头像*/
let checkIsNormalFollowed = false; /*是否检查关注来源*/
 
let isError = false;
let isRunning = false;
let userID = 0;
let zeroFanPageCount = 0;
 
function clearLog()
{
    let logger = document.querySelector("p.logger");
    logger.innerHTML = "";
}
 
function logError(msg){
    let logger = document.querySelector("p.logger");
    let parent = logger.parentElement;
    logger.innerHTML +="<span style='color: Crimson; font-weight:bold;'>" + msg + "</span><br>";
    parent.scrollTop = parent.scrollHeight;
}
 
function logSuccessMsg(msg){
    let logger = document.querySelector("p.logger");
    let parent = logger.parentElement;
    logger.innerHTML +="<pre style='tab-size: 15em; color: forestgreen;'>" + msg + "</pre>";
    parent.scrollTop = parent.scrollHeight;
}
 
function  logImportantMsg(msg)
{
    let logger = document.querySelector("p.logger");
    let parent = logger.parentElement;
    logger.innerHTML +="<pre style='font-weight:bold'>" + msg + "</pre>";
    parent.scrollTop = parent.scrollHeight;
}
 
function logMsg(msg){
    let logger = document.querySelector("p.logger");
    let parent = logger.parentElement;
    logger.innerHTML +="<pre style='tab-size: 15em;'>" + msg + "</pre>";
    parent.scrollTop = parent.scrollHeight;
}
 
async function removeFanMainFunc() {
    const delay = ms => new Promise(res => setTimeout(res, ms));
    const minute = 1000 * 60;
    const hour = minute * 60;
    const day = hour * 24;
 
    clearTimeout();
    isError = false;
 
    let startIndex = 0;
    let pageIndex = 1;
 
    while(true) {
        if(!isRunning)
        {
            if (removeTargetFans)
                logError("【WX:WZMSLR】用户退出程序。总计清理了 " + totalCount + " 个疑似僵尸粉");
            else
                logError("【WX:WZMSLR】用户退出程序。总计发现了 " + totalCount + " 个疑似僵尸粉");
            break;
        }
 
        await delay(300);
        let fanListJson = await fetch(
            'https://weibo.com/ajax/friendships/friends?relate=fans&count=20&type=fans&fansSortType=followTime' +
            '&page=' + pageIndex +
            '&uid=' + userID,
            {
                method: "GET",
            }).then(response => response.json())
            .catch((e) => {
            });
        if (fanListJson == null || fanListJson.ok != 1 || fanListJson['users'].length === 0) {
            fanListJson = await fetch(
                'https://weibo.com/ajax/friendships/friends?relate=fans&count=20&type=fans&fansSortType=followTime' +
                '&page=' + pageIndex +
                '&uid=' + userID,
                {
                    method: "GET",
                }).then(response => response.json())
                .catch((e) => {
                });
 
            if (fanListJson == null || fanListJson.ok != 1) {
                if (removeTargetFans)
                    logError("【WX:WZMSLR】请求异常,退出程序。总计清理了 " + totalCount + " 个疑似僵尸粉");
                else
                    logError("【WX:WZMSLR】请求异常,退出程序。总计发现了 " + totalCount + " 个疑似僵尸粉");
                break;
            }
        }
 
 
        let fans = fanListJson['users'];
        let count = 0;
 
        for (let i = startIndex; i < fans.length; i++) {
            if(!isRunning)
            {
                if (removeTargetFans)
                    logError("【柠檬精】提醒:用户退出程序。总计清理了 " + totalCount + " 个疑似僵尸粉");
                else
                    logError("【柠檬精】提醒:用户退出程序。总计发现了 " + totalCount + " 个疑似僵尸粉");
                return;
            }
 
            let isFromRecommended = false;
            let isInactive = false;
            let isFollowing = false;
            let isDefaultIcon = false;
            let isNormalFollowed = false;
            let isIrrelevant = false;
            let fansCount, weiboCount;
 
            /*关注来源*/
            let originSrc = fans[i]['origin_source_info'];
            isNormalFollowed = originSrc != null && originSrc['text'] !== "兴趣推荐" && originSrc['text'] !== "微博推荐";
 
			/*是否为铁粉*/
			if(fans[i].fansIcon != null)
			{
				if(fans[i].fansIcon == "loyal_fans")
					continue;
			}
 
            /*是否为非推荐的会员*/
            if (isNormalFollowed && (fans[i]['mbtype'] === 12))
                continue;
 
            /*关注来源是否为兴趣推荐*/
            if (checkIsFromRecommended) {
                isFromRecommended = originSrc != null && originSrc['text'] === "兴趣推荐";
            }
 
            let fanID = fans[i]['id'];
            let fanName = fans[i]['name'];
 
            /*粉丝数与微博数*/
            if (checkIsInactive) {
                fansCount = fans[i]['followers_count'];
                weiboCount = fans[i]['statuses_count'];
                if (checkFansOrWeibo)
                    isInactive = fansCount < fansMinCount || weiboCount < weiboMinCount;
                else
                    isInactive = fansCount < fansMinCount && weiboCount < weiboMinCount || weiboCount === 0 || fansCount === 0;
            }
 
            /*是否为默认头像*/
            if (checkIsDefaultIcon) {
                let icon = fans[i]['avatar_hd'];
                isDefaultIcon = icon != null && icon.includes("/default/images/default_avatar_");
            }
            /*是否互相关注*/
            if (checkIsFollowing) {
                isFollowing = fans[i]['following'];
            }
 
            let isZombie = false;
            if (!isFollowing)
                if (!checkIsNormalFollowed || (checkIsNormalFollowed && !isNormalFollowed))
                    if (isDefaultIcon || isFromRecommended || isInactive || isDefaultIcon || (deepSearchMode && weiboCount === 0))
                        isZombie = true;
 
            /*深度检查*/
            if (deepSearchMode && !isFollowing && !isZombie) {
                await delay(600);
                let weiboJson = await fetch('https://weibo.com/ajax/statuses/mymblog?page=1&feature=0&uid=' + fanID, {
                    method: "GET",
                }).then(response => response.json())
                    .catch((e) => {
                    });
 
 
                if (weiboJson == null || weiboJson.ok != 1) {
                    await delay(800);
                    weiboJson = await fetch('https://weibo.com/ajax/statuses/mymblog?page=1&feature=0&uid=' + fanID, {
                        method: "GET",
                    }).then(response => response.json())
                        .catch((e) => {
                        });
 
                    if (weiboJson == null || weiboJson.ok != 1) {
                        logError(fanName + "主页请求失败,跳过检查");
                        continue;
                    }
                }
 
                let weiboList = weiboJson.data['list'];
                let invalidWeiboCount = 0;
                let validWeiboCount = 0;
                let currDate = Date.now();
                for (let index = 0; index < weiboList.length; index++) {
                    let currWeibo = weiboList[index];
                    let weiboSrc = currWeibo['source'];
                    if(weiboSrc != null && weiboSrc.includes("生日动态"))
                        continue;
 
                    if (weiboSrc != null && (weiboSrc.includes("渔场") ||
                        weiboSrc.includes("活动") || weiboSrc.includes("森林") || weiboSrc.includes("微博积分") ||
                        weiboSrc.includes("支付宝") || weiboSrc.includes("淘宝") || weiboSrc.includes("芭芭农场") ||
                        weiboSrc.includes("任务") || weiboSrc.includes("签到") || weiboSrc.includes("新浪游戏") ||
                        weiboSrc.includes("微博游戏") || weiboSrc.includes("红包") || weiboSrc.includes("微博会员") ||
                        weiboSrc.includes("微博运动") || weiboSrc.includes("熊猫守护者") || weiboSrc.includes("点淘"))) {
                        invalidWeiboCount++;
                        continue;
                    }
 
                    if (ignoreLikes && currWeibo['title'] != null && currWeibo['title']['text'].includes("赞"))
                        continue;
 
                    let createTime = currWeibo['created_at'];
                    if (currWeibo['retweeted_status'] != null) {
                        createTime = currWeibo['retweeted_status']['created_at'];
                    }
 
                    if (Math.round((currDate - new Date(createTime)) / day) <= minDayCount) {
                        validWeiboCount++;
                    }
 
                    invalidWeiboCount--;
                }
 
                if (invalidWeiboCount > 3) {
                    isIrrelevant = true;
                    isZombie = true;
                }
 
                if (validWeiboCount < 3) {
                    isInactive = true;
                    isZombie = true;
                }
            }
            await delay(300);
            if (isZombie) {
                let reason = "原因: ";
                if (isFromRecommended)
                    reason += " 兴趣推荐";
                if (isInactive)
                    reason += " 不活跃用户";
                if (isIrrelevant)
                    reason += " 不相关用户";
                if (isDefaultIcon)
                    reason += " 默认头像";
                if (removeTargetFans) {
                    let fData = new FormData();
                    fData.append("uid", fanID);
                    fData.append("_t", "0");
                    const json = await fetch('/aj/f/remove?ajwvr=6&__rnd=' + Math.round(new Date().getTime()), {
                        method: "POST",
                        body: fData
                    }).then(response => response.json())
                        .catch((e) => {
                        });
 
 
 
                    if (json != null && json.code == 100000) {
                        logSuccessMsg("【WX:WZMSLR】提示:"+ fanName + "\t删除成功 " + reason);
                        count++;
                        totalCount++;
                  
                    } else
                        logError("【WX:WZMSLR】提示:" + fanName + "\t删除失败 ");
                } else {
                    logMsg("【WX:WZMSLR】提示:"+ fanName + "→疑似僵尸粉 " + reason);
 
                    count++;
                    totalCount++;
                }
            }
        }
 
        if (fans.length > 0) {
            startIndex = 0;
            zeroFanPageCount = 0;
            if (removeTargetFans) {
                logImportantMsg("【WX:WZMSLR】提醒:第 " + pageIndex + " 页删除了 " + count + " 个粉丝");
                if (count > 0) {
                    startIndex = fans.length - count;
                    if (startIndex < 0) startIndex = 0;
                } else {
                    pageIndex++;
                }
            } else {
                logImportantMsg("【WX:WZMSLR】提醒:第 " + pageIndex + " 页发现了 " + count + " 个疑似僵尸粉");
                pageIndex++;
            }
        } else {
            if(zeroFanPageCount < 5)
            {
                zeroFanPageCount++;
                pageIndex++;
            }else {
                if (removeTargetFans)
                    logError("【柠檬精】已到达粉丝列表上限,退出程序。总计清理了 " + totalCount + " 个疑似僵尸粉");
                else
                    logError("【柠檬精】已到达粉丝列表上限,退出程序。总计发现了 " + totalCount + " 个疑似僵尸粉");
                break;
            }
        }
    }
    StopFunc();
}
 
function RemoveFans(startIndex){
    let p = new Promise(function(){removeFanMainFunc(startIndex)});
}
 
let InitParameters = ()=>
{
    checkIsFromRecommended = document.body.querySelector("input#checkIsFromRecommended").checked;
    checkIsFollowing = document.body.querySelector("input#checkIsFollowing").checked;
    checkIsNormalFollowed = document.body.querySelector("input#checkIsNormalFollowed").checked;
    checkIsDefaultIcon= document.body.querySelector("input#checkIsDefaultIcon").checked;
 
    checkIsInactive = document.body.querySelector("input#checkIsInactive").checked;
    checkFansOrWeibo = document.body.querySelector("input#checkFansOrWeibo").checked;
    fansMinCount = parseInt(document.body.querySelector("input#fansMinCount").value);
    weiboMinCount = parseInt(document.body.querySelector("input#weiboMinCount").value);
 
    deepSearchMode = document.body.querySelector("input#deepSearchMode").checked;
    ignoreLikes = document.body.querySelector("input#ignoreLikes").checked;
    minDayCount = parseInt(document.body.querySelector("input#minDayCount").value);
};
 
let StartCheckFans = ()=>
{
    SetMode("running");
    InitParameters();
    clearLog();
    totalCount = 0;
    removeTargetFans = false;
    isRunning = true;
    RemoveFans(0);
};
 
let StartRemoveFans = ()=>
{
    SetMode("running");
    InitParameters();
    clearLog();
    totalCount = 0;
    removeTargetFans = true;
    isRunning = true;
    RemoveFans(0);
};
 
let StopFunc = ()=>
{
    SetMode("ready");
    clearInterval();
    clearTimeout();
    isRunning = false;
};
 
let SetDeepSearchParam = ()=>{
    let disable = document.body.querySelector("input#deepSearchMode").checked === false;
    let params = document.body.querySelectorAll("input.DeepSearchParam");
    for(let i = 0; i < params.length; i++)
        params[i].disabled = disable;
};
 
let SetMode = (mode) =>{
    let params = document.querySelector("div.parameter").querySelectorAll("input");
    let readyPanel = document.querySelector("div.ready");
    let runningPanel = document.querySelector("div.running");
    if(mode === "running")
    {
        for(let i = 0; i < params.length; i++) params[i].disabled = true;
        readyPanel.style.display = "none";
        runningPanel.style.display = "";
    }
    else if(mode === "ready")
    {
        for(let i = 0; i < params.length; i++) params[i].disabled = false;
        runningPanel.style.display = "none";
        readyPanel.style.display = "";
    }
};
 
let ReplaceHTML = ()=>
{
    let list = document.querySelector("div.woo-box-flex.woo-tab-nav")?.querySelectorAll("a");
    let href = document.location.href;
    if(list == null || list.length !== 5) {
        if(document.location.href.includes("https://weibo.com/u/"))
        {
            userID = document.location.href.replace("https://weibo.com/u/", "");
            let numIndex = 0;
            for(numIndex = 0; numIndex <  userID.length; numIndex++)
            {
                if(userID[numIndex] < '0' || userID[numIndex] > '9')
                    break;
            }
            userID = userID.slice(0, numIndex);
        }else {
            console.error("无法找到用户id,请打开微博主页再运行代码");
            return;
        }
    }else{
        userID = list[4].href.replace("https://weibo.com/u/", "");
        href = "https://weibo.com/u/page/follow/"+ userID +"?relate=fans";
    }
 
 
    document.head.innerHTML = '<meta charset="UTF-8"><title>柠檬精僵尸清道夫</title>';
    let body = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><script src="RemoveZombiesUI.js"></script></head><body><div class="left" style="position: fixed;  display: flex; flex-direction: column;top:0; left:0; bottom:0; width:500px; background-color: rgb(255, 102, 0);"><h1 style="text-align:center; margin: 10px;">        柠檬精僵尸清道夫<span style="font-size: 20px;">v2023.06.22</span></h1><div class="parameter"><h3>快速清粉参数-博主微博@当时我就没憋住</h3><table style="width: 100%; font-size: 15px;" ><tr><td><input id="checkIsFromRecommended" type="checkbox" style="height: 15px; width: 15px;" checked>清除兴趣推荐用户</td><td><input id="checkIsFollowing" type="checkbox" style="height: 15px; width: 15px;" checked>排除相互关注</td><td><input id="checkIsNormalFollowed" type="checkbox" style="height: 15px; width: 15px;">只检查通过推荐关注</td></tr><tr style="height: 10px;"></tr><tr><td rowspan="2"><input id="checkIsInactive" type="checkbox" style="height: 15px; width: 15px;" checked>清除不活跃用户</td><td> 最低粉丝数<input id="fansMinCount" type="number" style="height: 15px; width: 60px;" min="0" value="2" ></td><td rowspan="2"><input id="checkFansOrWeibo" type="checkbox" style="height: 15px; width: 15px;" >满足任一条件即清除</td></tr><tr><td> 最低微博数<input id="weiboMinCount" type="number" style="height: 15px; width: 60px;" min="0" value="3" ></td></tr><tr><td><input id="checkIsDefaultIcon" type="checkbox" style="height: 15px; width: 15px;">清除默认头像用户</td></tr></table><h3>深度清粉参数-博主微博@当时我就没憋住</h3><table style="width: 100%; font-size: 15px;"><tr><td><input id="deepSearchMode" type="checkbox" style="height: 15px; width: 15px;" οnchange="SetDeepSearchParam();">开启深度清粉</td><td> 最小不活跃天数:<input class="DeepSearchParam" id="minDayCount" type="number" style="height: 15px; width: 40px;" min="0" value="365" disabled></td><td><input class="DeepSearchParam" id="ignoreLikes" type="checkbox" style="height: 15px; width: 15px;" checked disabled>无视用户最近点赞</td></tr></table></div><div class="ready"><button style="position: relative; height: 45px; width:48%; font-size: 16px; margin: 4px 2px;" οnclick="StartRemoveFans();">清粉</button><button style="position: relative; height: 45px; width:48%; font-size: 16px; margin: 4px 2px;" οnclick="StartCheckFans();">开始检测</button></div><div class="running" style="display: none"><button style="position: relative; height: 45px; width:98%; font-size: 16px; margin: 4px 2px;" οnclick="StopFunc();">停止</button></div><div style="position: relative; margin: 4px 2px; flex-grow: 1; width: 100%; background-color: Gold; overflow-y: scroll;"><p class="logger"></p></div><div style="position: absolute; bottom: 0px; height: 1px; width:100%; background-color: black"></div></div><div style="position: fixed; top:0; left: 500px; bottom: 0; right: 0;"><iframe class="web" src="" sandbox="allow-same-origin allow-scripts" style="width:100%; height:100%;"></iframe></div></body></html>';
    document.body.innerHTML = body.replaceAll('ο', 'o');
    let iframe = document.body.querySelector('iframe.web');
    iframe.src = href;
    iframe.onload=()=>{ iframe.contentDocument.body.querySelector("div[node-type=outer]")?.remove(); }
}
 
ReplaceHTML();

使用方法参考这篇文章

批量删微博丨2023简易版本控制台批量删除微博代码_echo爱学易语言的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚硅谷Docker实战教程-笔记04【Docker镜像】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】尚硅谷Docker实战教程-笔…

accountId、uid、roleId 游戏中的3种id

1)accountId&#xff1a; // 是一个字符串 这个是字符串&#xff0c;玩家可以输入名字(比如:输入zfoo) 或者 通过微信生成(openid是不变的)。 2)uid&#xff1a;// long 这个是一个很长的,玩家通过http登录授权后&#xff0c;通过web层&#xff0c;由雪花算法根据accountId生成…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十一天 11/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

Selenium上传文件有多少种方式?不信你有我全

Selenium 封装了现成的文件上传操作。但是随着现代前端框架的发展&#xff0c;文件上传的方式越来越多样。而有一些文件上传的控件&#xff0c;要做自动化控制会更复杂一些&#xff0c;这篇文章主要讨论在复杂情况下&#xff0c;如何通过自动化完成文件上传 1.input 元素上传文…

【FFmpeg实战】AAC编码, 解码

使用命令行进行AAC编码 // PCM的三要素采样率&#xff0c;声道数&#xff0c; 采样格式 ffmpeg -ar 44100 -ac 2 -f s16le -i in.pcm out.aac// -c:a codec:audio 指定的是音频编码 ffmpeg -ar 44100 -ac 2 -f s16le -i in.pcm -c:a libfdk_aac out.aacffmpeg -ar 44100 -ac …

哪些辅助工具支持快递单号的批量查询

当我们批量发出大量快递时&#xff0c;有什么查询软件可以快速查询和跟踪批量每个单号的物流信息&#xff0c;及时跟踪物流状态&#xff1f;今天&#xff0c;我来安利一个软件&#xff1a;“固乔快递查询助手”&#xff0c;可以实现这个功能。我们一起来看看软件的使用和操作步…

C++类与对象(默认成员函数之拷贝构造函数)

接前几次的类与对象的默认函数的知识点&#xff0c;下来面是默认成员函数中的拷贝构造函数。是的&#xff0c;它的名字是拷贝构造函数&#xff0c;他其实也是一种构造函数&#xff0c;为什么呢&#xff1f;接下来你就知道了&#xff0c;我们直接看看代码&#xff0c;如下&#…

【AICG】【Midjourney】AI自动生成图片的初接触

背景 现在是AI 比较流行&#xff0c;公司也推荐学习和了解AI的相关东西。 公司的内部培训中涉及到了Midjourney的简单讲解。 效果 由于我的账号注册的时候过了free窗口期&#xff1a; 现在要我花钱订阅&#xff1a; 只能看看其他人的帖子过过AI生成的瘾。 如图所示&#x…

【TA100】4.2 SSAO算法 屏幕空间环境光遮蔽

1 SSAO介绍 1.1 环境光遮蔽&#xff08;AO&#xff09; 全称Ambient Occlusion,是计算机图形学中一种着色和渲染技术&#xff0c;模拟光线达到物体的能力的粗略的全局方法&#xff0c;描述光线到达物体表面的能力。 这个场景看起来没有表示颜色的贴图&#xff0c;但是场景的…

SC5103接口可pin对pin兼容TLK1501

SC5103 用于超高速双向点对点数据传输系统。SC5103 支持 0.6Gbps 至 1.5Gbps 的有效串行接口速度&#xff0c;提供高达 1.2Gbps 的有效数据带宽。可pin对pin兼容TLK1501。 SC5103 可替代并行传输数据结构从而减少传输路径数、连接端子数、发送/接收端子数。并行数据被发送链路转…

求职贴 | 多源融合定位方向24届硕士秋招求职

求职方向 多源融合定位 / LIO / VIO 基本情况 现就读于华中区某985&#xff0c;研究方向为多源融合定位&#xff0c;主要内容是LiDAR / IMU融合两篇期刊论文在投&#xff0c;论文内容即项目经历&#xff1b;具有丰富的电子设计类竞赛经历自我认为学习能力强&#xff0c;爱动…

JavaSE-15 【异常】

文章目录 JavaSE-15 【异常】第一章 什么是异常1.1 异常的概念1.2 异常的体系1.3 异常的分类1.4 异常产生的过程 第二章 异常的处理2.1 抛出异常throw2.2 声明异常throws2.3 捕获异常try...catch2.4 finally 代码块2.5 异常注意事项 第三章 自定义异常3.1 自定义异常概述3.2 自…

工业物联网解决方案:远程组态监控管理系统

如何高效的采集和集中工业设备PLC运行数据、工艺参数、产品质量等生产数据&#xff0c;通过数据分析反馈在制造工艺、生产流程、质量管理、设备维护和能耗管理的智能应用&#xff0c;这是工业远程组态监控管理系统可以解决的问题&#xff0c;也是众多工厂企业关注的重点。 工…

动态规划--输出路径06.25

https://www.cnblogs.com/jbelial/articles/2116074.html 博客参考 https://www.cnblogs.com/jbelial/articles/2116074.html 12. 背包问题求具体方案 - AcWing题库 由于需要求解最小字典序&#xff0c;尝试输入数据时逆序输入&#xff0c;其他不改变&#xff0c;状态含义不变…

奇安信浏览器调用JM9硬件解码操作教程

本文讲述如何通过奇安信浏览器调用景嘉微JM9系列显卡的硬件解码。 判断硬件解码是否打开方法 1.检查奇安信浏览器版本。dpkg -l | grep qaxbrowser&#xff0c;我这里是1.0.45209.2-1版本。要大于等于这个版本的奇安信浏览器才支持硬件解码。 2.打开奇安信浏览器&#xff…

海思平台OSD的实现

目录 1.海思平台OSD理论学习 1.1、OSD概述 1.2、海思OSD的4种类型 1.3、海思OSD的几个重要概念 1.4、海思平台OSD使用方法 1.5、海思平台OSD的API和关键数据结构 2.使用海思接口实现OSD---代码框架 2.1、函数调用层次 2.2、前\背景透明度、背景颜色 3.使用字库字符实现…

Jmeter远程服务模式运行时引用csv文件的路径配置

目录 前言&#xff1a; 问题 解决方法 前言&#xff1a; 在JMeter远程服务模式下运行时&#xff0c;你可以通过配置CSV文件的路径来引用该文件。CSV文件经常用于存储测试数据&#xff0c;可以在测试中进行参数化。 问题 在使用jmeter过程中&#xff0c;本机的内存等配置不…

掌握GDB调试工具,轻松排除bug!

一、什么是GDB gdb是GNU debugger的缩写&#xff0c;是编程调试工具。 GDB官网&#xff1a; https://www.gnu.org/software/gdb/GDB适用的编程语言&#xff1a; Ada / C / C / objective-c / Pascal 等。GDB的工作方式&#xff1a; 本地调试和远程调试。 目前release的最新版…

RRT* 算法研究(附 MATLAB 和 Python 实现)

RRT* 算法研究 参考 机器人路径规划、轨迹优化课程-第六讲-RRT*算法原理和代码讲解 路径规划 | 随机采样算法&#xff1a;PRM、RRT、RRT-Connect、RRT* 基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees) 《改进RRT算法在移动机器人路径规划中的应用研究》 理论基础…