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

安卓 kuaishou 设备did和egid 学习分析

did和egid注册

接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android

did 是本地生成的16进制 或者 获取的 android_id

public static final Random f16237a = new Random(System.currentTimeMillis());
public static long m19668a() {    return f16237a.nextLong(); }
private static String m16457g() {try {return C4314az.m19633a(Long.toHexString(C4316bb.m19668a()), 16, '0');} catch (Throwable th) {th.printStackTrace();return null;}}

接口传输数据:

productName	KUAISHOU
ts	1595073602059
deviceInfo	3sCt3iAAMjE5NTY0Njg5AAIQAJ2ewbEC7J3ooFAJAAAkGUqVzgq%2B6ZBgbBLpGRojaWBHvg21P%2FEF%0A0iN01YrwCwIZSPntw6DoUwMzXr8oppoRkz7AGlYqAgwjxP1PhD6%2FZhgTnOZYiTXFyJ79ZTUFq30a%0Ai7elU%2Bppe3lEBOLxl3rzYZ6ZB2tARglqG2XiWRfVu5yrdI%2FiENYDLTbBqfVqJfcKxi0ESCSjbwZQ%0AsiK%2FRMw6MPwoRt60%2BEuORU5yAs6Rws0hYMe7eqs6sEEkQlcdShmtvj2yBTWV%2FRYf5DUXtpqTzWbJ%0Ahy4pS2meEEO9%2F73RpOKatCGhGg%2Foo1uK%2FaKNlZzNb0yIIh9alXI8OWIvTpuJ6paK2fuXxlf2W7wd%0AekGhEK3BrsSkkLpcanUslw9Dq5pMAJnlTl5C9CFK8PNk7B6pRzElnsntHFRHINLSZINLUbrcae4Z%0AfH0IHj78tSp569Isv%2Fsdc98fcQbaDofJOH0aBBYyzwg47HEqunqzVIWb3GmQF9unUwMYEtEOupiL%0Adj4WlCsfXwHnalMvVSPsmeaKCPjm%2FC3kt8SuIS7Q%2FQG7zvvEkX2TgLD%2BrGTkBynAlyaTLbSdhOBV%0AkjsZyomfwxJKYcg4jqpQESgAB%2F%2F5DlPiSKpY54U9os0y%2FyP0jfxmPPR2MGJlEHhF4wIvPjWwtb82%0A38nCeJGod0PwRo%2BWcB1xL2FQdw4POXISIarsC99Ah4FJufxMp7V1b8Htm1hi7EGc3jUAZTFUEfnN%0AymM8oe0CdVaofsLl900hbZpwAslPu35Lat04YVvVZKS1xTDt%2BiLqzyjhPKjD6fVxkppRGavKYh1w%0A9%2Bw2kqoLa9YnHnLvrtkDsr1%2FLmuf2CmjHxLbrlovJ06edV4zy10wAnkCNS7KN%2BBsshOnJmbb8pjp%0ADvF%2F7TtL8BwjdUcH%2BfS4NXiwhLvFpcPUmkZXOYqcQw21TZtaeMoHZlJf5zM2zQwHHNNiy04N6xxS%0A9Dw2z8iL3C1%2BYcX8icsgrSOTHXmBeMH1hgjsbCQtAKgCZaB8h6Z1Eci9GdC%2BFUZcshNRcOxPdrjo%0AZUrT7Llcfu8hd9hBlr3qUccsGiVRseTMr7USVQWr7Ki4tCglC0sy2PiGttV3z3GlkGv4EPf1AYPz%0AnouuNd8iR0H0njIGcKaOFQXUGTF%2FoFtctG0mTjj96gaRtVtnfY0x1Vbo6%2Fvgj7PQ2e8St66n8nzx%0AiOhghPpni3VVqiB%2BoMHMQP6FSxHTTGCN3ez3nVn8Sz%2BMDhFzh%2BxYjPbgf4IXV3jp0fj%2BmF0EvJQq%0AX4G3kODD67WQUR4ju2m1byV674ZDIsLQlVw539goCGlVPOqR9m9teBtOWkBF6fCTacIgQcmhdOJa%0A5lk7291BPvikTQzYbsdhlGHpt3sM2N25M6AS55hw09lw8uZZIzHekaifQg2CMzDn9hmtUfCgQ%2FII%0AXsk1qJ5kvFKeqkbq4NEiEknGKoJWqxnWyQrTJqy6lxB9hrNAU8KXIivfK%2FL%2FhsouE2ubXU8zPbxt%0AVQQZ6wASbe9cANu2NcFdR4tHOC3LUGvLqrdCVIwEiXgQe4QiR%2BUX%2FYQ9NtScA9vzKcS8b3h0jVgo%0ArbbzaHFvyZTYBEEpvJbT%2FAx3tZZLXqTzUCYY%2FNmsI6Ue3cPq6LI8OyqxrRrn%2FqIMMO4zRFWgeAOR%0A1n9N7suVla2bW3WVr1tQXxhWO0J%2B%2Bn%2BARhDYhamh%2FMQAyB%2FUfOj%2FZwf797YNMow5GLjPB%2FiAtwMM%0A0aZps1rqSg2RSa61rOsRDgLZUxSznFmWPXL1pcDCziapimWg3FIrcPdlBpTEhJ7PTx2oDeO64qEI%0Am5BBNkeIw8Al%2FAuL3mmhXl0zICFSBwi2L%2FaN%2Bf1928SAr6oldZx%2F92AAAXYOD8GVexG3tOQZI%2BLT%0AUEtgpzRotdCgSLDjnzjrIQALjnqNTG3mVBIMzMv17OwZRAXwg6Gq5ApzN5vdT66NBzj3jBfOEf57%0A%2Fg%2F5gigZoCLIL5nN8CIGGOwOX6jZu3uO78Pla6HVpvLICRD%2BlsEeChD5DkbMuKqYt2GYAWb44B%2Bp%0AHgi1hQ3aOkT9dWIc%2Bw4U5jimcCvDy0RWyTI4b7FvFPM7VM%2BPEopsuqCmyglHBf9Fdp%2B1xRMIyoL1%0A5%2BSMZs7ard1Zv0mHmkb8eflmVo%2BCvvU%2FTf25SZbFq64d2QNNJwAWuNGZyyrGnYEAJHhrQu1uen7o%0ALdANPPOn7OchweBoAiMVnYM0iDDGSRyv0jT5OPYuLdhMT%2B8ZsQ4V6mosOZZohA9LDcxoA87EzjPe%0ARIjVeb%2BaAQxnMKQKz66qc%2FEzNotP01DKyK%2BzZ4skVDWJuMZbkLxsgiBfE7%2BIk5rDNAhUignAa83J%0AqmU0v1WPCpuqe47vw%2BVrodWm8sgJEP6WwQdmJddfnDZz7p1YwpWTpGU3KUL80Ch6Wu5o4ddb5xw6%0AsmyqbSCTBbNC3%2FZvr%2FQuFNo2692n993d0E655JNM0WXbGGAq%2BPr4aVezc%2BYNsAhS0xHcLk1POoQM%0AHvle220aKLaF3zwPkoK8vQO0IwvH7nocI4DUqjGlkHsVaAnbMYTwDPZdjfgFPTP8aoRXctuqm%2Fp6%0AC%2BOrD1CwGKJCe1FpVSxPCynEUJq5YqHYtveA%2BH1Hc8%2FQer8uoDc2A1cmZc7oDuf6x4XSGsnPWoiM%0AbcQgfwAFZI6AcM6rFDlYIzIRBGVCBXsE8D6wPlWvAHYQz7BwZDUz8%2By1grZO7wYl4hMtbyZErgzI%0AIV4ktl7JrZ9nzV4bUhACmXEysdzdAn%2BM4I6C%2FBUzhyRw33WPK%2FoQGyPcQQ3A3RyZfSDfN0rnMgyE%0AsV655ANcWFaSyweqHdZK15PUM3kmDFVZZCWbXgdSWOfzrS04tOouKAx7OCF3B149%2Fw8Tl4am1q%2Bb%0AO0A770K9HXhOv4eId6JwRgds%2BnrcD3u%2BglChj6KkfcjmBoAYzlhS7IP%2FWcASrwmldIi207p3XMmv%0AkS3LcFy68W2en4JluUpfxhYZdm70oMVxRHBm6Oysz5XdU4J58AZ%2FtQ%2FFxbe0VIgefv3qtwY0iAv%2B%0AatUB%2BwbE%2FAvi4frlrK6iYwJ7F5yKxE%2FVZwu2Nh%2BAwYrsAgSbrVSUT8K6rpg1hUA%2B%2FR9zEC%2BdPnpM%0AOYSNqmNhclXeyixErKpUlSceJHSsIvgModdynT8%2BJma1eC33u9NA6j5IYBJICe0zf3jlYCNakjuh%0A6iQgnN4Oal%2FEsP7gFGt%2B8cXh1r1SGQ%3D%3D%0A
sign	2195646899cf1cc7a6d51bfbff3cfd31e6d9930c37
sv	2
{k31=fuels:wZ2fk8aflZefxsefl5CfxJQ=, k30=Flyme 7.1.7.1A, k33=notExist, k32=KWE_NC, k35=8.1.0, k34=[3.0,1080,2124,3.0,318.976,320.386], k37=OPM1.171019.026, k36=1.1.7.5.1, k39=1594992720872, k38=KWE_NC, k40=Meizu/meizu_M1852_CN/M1852:8.1.0/OPM1.171019.026/1540458566:user/release-keys, k42=KWE_NC, k41=KWE_N, k44=release-keys, k43=KWE_PN, k46=3885793280, k45=KWE_NC, k48=KWE_NC, k47=unknown, k49=0, k51=2c951907b69eb332, k50=KWE_NC, k53=KWE_NC, k52=meizu_M1852_CN, k55=a2:25:cb:02:6c:d8, k54=notExist, k57=KWE_PN, k56=KWE_NC, k59=1, k58=M1852, k60=unknown, k62=KWE_NC, k61=Meizu, k64=852QLDV924G42, k63=flyme, k66=56c4bf75e79c15c6, k65=KWE_NC, k68=KWE_PN, k67=KWE_N, k69=KWE_NC, k71=KWE_NPN, k70=KWE_NC, k73=KWE_NPN, k72=KWE_NC, k75=KWE_PN, k74=KWE_PN, k77=KWE_PN, k76=KWE_NC, k79=KWE_NC, k78=KWE_NC, k80=KWE_NU, k82=[1,BMI160_ACCELEROMETER Accelerometer Non-wakeup,50463488,BOSCH,19.6133,2500,0.18,5.9820566E-4:1,BMI160_ACCELEROMETER Accelerometer Wakeup,50463488,BOSCH,19.6133,2500,0.18,5.9820566E-4:35,BMI160_ACCELEROMETER Accelerometer-Uncalibrated Non-wakeup,50463488,BOSCH,19.6133,2500,0.18,5.9820566E-4:35,BMI160_ACCELEROMETER Accelerometer-Uncalibrated Wakeup,50463488,BOSCH,19.6133,2500,0.18,5.9820566E-4:4,BMI160_GYROSCOPE Gyroscope Non-wakeup,50463488,BOSCH,2.1815972,5000,0.9,6.6577064E-5:4,BMI160_GYROSCOPE Gyroscope Wakeup,50463488,BOSCH,2.1815972,5000,0.9,6.6577064E-5:16,BMI160_GYROSCOPE Gyroscope-Uncalibrated Non-wakeup,50463488,BOSCH,2.1815972,5000,0.9,6.6577064E-5:16,BMI160_GYROSCOPE Gyroscope-Uncalibrated Wakeup,50463488,BOSCH,2.1815972,5000,0.9,6.6577064E-5:27,Device Orientation  Non-wakeup,1,qualcomm,1.0,0,0.025,0.1:27,Device Orientation  Wakeup,1,qualcomm,1.0,0,0.025,0.1:15,Game Rotation Vector  Non-wakeup,1,qualcomm,1.0,5000,0.515,0.1], k81=KWE_NC, k84=27b63c793f46a83a, k83=KWE_FIRST, k86=KWE_N, k85=32622d8245dfe338, k88=noexsist, k87=3043341723, k89=1618696036, k91=1436926309, k90=KWE_NC, k93={"1":"0","0":6,"2":"false","8":"9","10":"KWE_N"}, k92=1595075739488, k95=0|183528f283c77d0cd0546206b607f638|7, k94=KWE_N, k97=09a0509a749e5304b670aabc548d508e, k96={"0":"1594988383000","1":"1"}, k99=KWE_NS, k98=KWE_NS, k1=KWE_NC, k2=WiFi, k3=com.smile.gifmaker, k4=KWE_NC, k5=54134046720, k6=0, k7=ANDROID_56c4bf75e79c15c6, k8=user, k9=3960YSZb8eGSEQuHyyHWM00lA2-UbYhFYDRRpstfiVo, k100=d7b7d042-d4f2-4012-be60-d97ff2429c17, k11=1, k10=0, k13=KWE_NC, k12=notExist, k15=KWE_NC, k14=AND:3193040869, k17=192.168.51.169, k16=Mz-Builder-L21, k19=sdm710, k18=isContent, k20=KWE_NC, k22=7.2.0.12758, k21=KWE_NC, k24=KWE_NC, k23=Meizu, k26=armeabi-v7a,armeabi, k25=0, k28=qcom, k27=M1852, k29=Dalvik/2.1.0 (Linux; U; Android 8.1.0; M1852 Build/OPM1.171019.026)}

研究某手的时候,会发现某手接口中存在两个参数至关重要,一个did,另外一个是egid

它们也就是快手的双参设备,如果从charles抓个设备包的话,请求频率过多,就会遇到请求太快访问频繁的问题

先抓个设备参数:

did: ANDROID_7c65a948b18ba4t5
egid:DFPB24F4EA19896D552C3C9578A09565335CDD5T20CF8991BECFDB15C69D974B

在这里插入图片描述

在这里插入图片描述

解决办法就是模拟请求,批量注册设备,效果如下:

刚注册出来的设备是不能直接使用的,还需要发送xxx 等相关接口日志激活。

在这里插入图片描述

这里放几个设备,有需要的小伙伴自取:

{'egid': 'DFPC681A0395B4984FB539014DB3493926FBBEA31961EE2E8FB428B881B3744F', 'did': '56ca8cbecec16c77'}
{'egid': 'DFPE862C9C29EB683AAA1CE7C9F01973E62C39E922E744F20954D4D6B3553DDC', 'did': 'f7a84c04051e6ec7'}
{'egid': 'DFPB6828D54C5C2CFA87C71834C175990B9E45E70DB066EFB29B463BEE7FD165', 'did': 'dc281d3be2e0c75a'}

经过测试,像搜索接口,视频评论,视频列表,用户主页等接口都可以应用。

相关文章:

安卓 kuaishou 设备did和egid 学习分析

did和egid注册 接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id public static final Random f16237a new Random(System.currentTimeMillis()); public static long m19668a() { return f1623…...

基于Vue+ELement实现增删改查案例与表单验证(附源码)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…...

webpack:使用externals配置来排除打包后的某个依赖插件IgnorePlugin的使用

背景 假设,我们写了一个库并使用 webpack 打包输出 bundle,但是这个库依赖一个第三方包,比如依赖 lodash,这时候我们不想把这个库打包进 bundle 里因为体积会变大,而且我们的主项目里已经安装了这个 lodash&#xff0…...

2023年中国工业脱水机行业供需分析:随着自动化和智能化技术的快速发展,销量同比增长4.9%[图]

工业脱水机行业是指专门从湿润的固体物料中去除水分的设备制造和相关服务。它广泛应用于食品加工、化工、制药、纺织、环保等行业,用于去除物料中的水分,提高产品质量和降低能耗。 工业脱水机行业分类 资料来源:共研产业咨询(共研…...

[论文笔记]MacBERT

引言 今天带来MacBERT的阅读笔记。论文题目是 重新审视中文自然语言处理的预训练模型。 本篇主要是探讨中文预训练语言模型在非英文语言中的有效性,然后提出了一种简单而有效的模型,称为MacBERT,它在多个方面改进了RoBERTa,特别是采用纠错型掩码语言模型(MLM as correcti…...

AI发展目前最大挑战是什么?

影响AI成本的因素包括多个方面: 首先,AI技术的复杂性是其成本高昂的一个重要原因。AI技术需要进行大量数据处理、模型训练和优化,这需要耗费大量的计算资源和时间。同时,AI技术需要高水平的专业人才进行设计、开发和维护&#xf…...

自然语言处理NLP:LTP、SnowNLP、HanLP 常用NLP工具和库对比

文章目录 常见NLP任务常见NLP工具英文NLP工具中文NLP工具 常见NLP任务 Word Segmentation 分词 – Tokenization Stem extraction 词干提取 - Stemming Lexical reduction 词形还原 – Lemmatization Part of Speech Tagging 词性标注 – Parts of Speech Named entity rec…...

百度交易中台之内容分润结算系统架构浅析

作者 | 交易中台团队 导读 随着公司内容生态的蓬勃发展,内容产出方和流量提供方最关注的“收益结算”的工作,也就成为重中之重。本文基于内容分润结算业务为入口,介绍了实现过程中的重难点,比如千万级和百万级数据量下的技术选型和…...

【索引】常见的索引、B+树结构、什么时候需要使用索引、优化索引方法、索引主要的数据结构、聚簇索引、二级索引、创建合适的索引等重点知识汇总

目录 索引的分类 什么时候需要 / 不需要创建索引? 有什么优化索引的方法 MySQL索引主要使用的两种数据结构是什么 为什么 MySQL 采用 B 树作为索引 聚簇索引和二级索引 根据给定的表,如何创建索引比较好 索引的分类 普通索引:最基本的…...

Egg 封装接口返回信息

中间件封装 代码 const msgArr {"200":成功,"401":token失效 } module.exports (option, app) > {return async function(ctx, next) {try{//成功是返回的信息ctx.emit(code,data,msg)>{console.log(1111,code,data,msg)ctx.body {code,data:dat…...

Android AMS——创建APP进程(五)

接上一篇,在 ActivityTaskSupervisor 中会判断进程是否存在,如果进程不存在,则会创建进程,执行 startProcessAsync() 方法。如果进程存在,则执行 realStartActivityLocked() 方法。在APP 的启动时,进程是不存在的。所以我们先来分析一下进程不存在的情况。 一、创建进程…...

凉鞋的 Unity 笔记 102. 场景层次 与 GameObject 的增删改查

102. 场景层次 与 GameObject 的增删改查 在上一篇,我们完成了 Unity 引擎的 Hello world 输出,并且完成了第一个基本循环: 通过这次基本循环的完成,我们获得了一点点的 Unity 使用经验,这非常重要。 有实践经验后再…...

信息安全:网络安全审计技术原理与应用.

信息安全:网络安全审计技术原理与应用. 网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。网络安全审计的作用在于建立“事后“安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线…...

嵌入式Linux应用开发-第十三章APP怎么读取按键值

嵌入式Linux应用开发-第十三章读取按键及按键驱动程序 第十三章 APP怎么读取按键值13.1 妈妈怎么知道孩子醒了13.2 APP读取按键的4种方法13.2.1 查询方式13.2.2 休眠-唤醒方式13.2.3 poll方式13.2.4 异步通知方式13.2.4.1 异步通知的原理:发信号13.2.4.2 应用程序之…...

Web 中间件怎么玩?

本次主要是聊聊关于 web 中间件, 分为如下四个方面 什么是 web 框架中间件 为什么要使用 web 中间件 如何使用及其原理 哪些场景需要使用中间件 开门见山 web 中间件是啥 Web 框架中的中间件主要指的是在 web 请求到具体路由之前或者之后,会经过一个或…...

HMTL知识点系列(4)

目录 1. 在你过去的项目中,你如何解决HTML的布局和样式问题?2. 你能否解释一下HTML的“文档对象模型”(DOM)是什么,以及它的重要性?3. 你有没有经验处理网页的兼容性问题,特别是在不同浏览器之间…...

CFS内网穿透靶场实战

一、简介 不久前做过的靶场。 通过复现CFS三层穿透靶场,让我对漏洞的利用,各种工具的使用以及横向穿透技术有了更深的理解。 一开始nmap探测ip端口,直接用thinkphpv5版本漏洞工具反弹shell,接着利用蚁剑对服务器直接进行控制,留下…...

【RabbitMQ实战】07 3分钟部署一个RabbitMQ集群

一、集群的安装部署 我们还是利用docker来安装RabbitMQ集群。3分钟安装一个集群,开始。 前提条件,docker安装了docker-compose。如果没安装的话,参考这里 docker-compose文件参考bitnami官网:https://github.com/bitnami/contai…...

PS 切片工具 选择切片 切片存储

上文 PS 透视裁剪工具 中 我们简单讲述了透视裁剪工具 今天 我们来讲他后面的切片工具 首先 他的用途还是很多的 例如 你有一个很大的图片 其中包括 轮播 导航 主题内容 但他们都在一个图片上 你就可以用切片工具 将完整的图片切成多个部分 这里 我们选择了切片工具 光标也会…...

Git版本控制系统

概念: 一个免费的 开源 分布式源码仓库,帮助团队维护代码 个人使用 多人联机使用 git安装: 这里直接看大佬的安装 文章 很不错的 git 安装配置https://blog.csdn.net/mukes/article/details/115693833 安装完毕之后: 使用命名git -v查看…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...