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

有道ai写作,突破免费限制,无限制使用

预览效果

示例图

  • 文末提供源码包及apk下载地址

有道ai写作python版

import hashlib
import time
import json
import ssl
import base64
import uuidfrom urllib.parse import quote
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from sseclient import SSEClient# 生成唯一的用户id
yduuid=str(uuid.uuid4()).replace('-','')session = requests.session()
lastModified = requests.get('https://fanyi.youdao.com/index.html').headers['last-Modified']
_nlmf = int(time.mktime(time.strptime(lastModified, "%a, %d %b %Y %H:%M:%S GMT")))
session.headers = {'Referer': 'https://fanyi.youdao.com/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
}
session.get(f'https://rlogs.youdao.com/rlog.php?_npid=fanyiweb&_ncat=pageview&_ncoo=935962676.0432019&_nssn=NULL&_nver=1.2.0&_ntms={time.time()}&_nref=&_nurl=https%3A%2F%2Ffanyi.youdao.com%2Findex.html%23%2F&_nres=1920x1080&_nlmf={_nlmf}&_njve=0&_nchr=utf-8&_nfrg=%2F&/=NULL&screen=1920*1080')# 获取md5加密结果
def get_md5(s,is_hex=True):md5=hashlib.md5()md5.update(s.encode())if is_hex:return md5.hexdigest()return md5.digest()# AES-128-CBC解密
def decrypt(encrypted_data, key, iv):cipher = AES.new(key, AES.MODE_CBC, iv)decrypted_data = cipher.decrypt(base64.b64decode(encrypted_data))return decrypted_data.decode('utf-8')def get_token_and_key():params = {'product': 'webdict', 'appVersion': '1.0', 'client': 'web', 'mid': '1', 'vendor': 'web','screen': '1', 'model': '1', 'imei': '1','network': 'wired', 'keyfrom': 'webdict','keyid': 'ai-write','mysticTime': str(int(time.time()*1000)),'yduuid': yduuid,}# 参数排序sorted_params = sorted(params.items(), key=lambda x: x[0])sorted_params.append(("key","xuiC95RuooxC8Q51UJtdod1plLUhdAmt"))encoded_params = '&'.join([f"{key}={value}" for key, value in sorted_params])print("encoded_params:::::"+encoded_params)# 获取sign签名sign=get_md5(encoded_params)params.update({"sign":sign})params.update({"pointParam":"appVersion,client,imei,keyfrom,keyid,mid,model,mysticTime,network,product,screen,vendor,yduuid,key"})response = session.get('https://luna-ai.youdao.com/write/ai/web/ktf', params=params, verify=False)print(response.text)#============解密数据===============================e=response.text.replace("-","+").replace("_","/")key=get_md5("IIS0fzL@zGv1^zO2%NcZiTcM=98WYxdun$CJE1KUKFfEhz&zpEC0fdXfvGqy*N!r",is_hex=False)iv=get_md5("kG_oSxAXx#xjbiOKAkf9915Ko-XclOBP-GSgfo6E9ZB%9WvgcY6Y7dmje!+m5g#d",is_hex=False)s=decrypt(e,key,iv).replace('\x02', '')print("解密数据::::"+s)decode_data=json.loads(json.loads(s))return decode_datadef get_result(query):decode_data=get_token_and_key()params = {'product': 'webdict', 'appVersion': '1.0', 'client': 'web', 'mid': '1', 'vendor': 'web','screen': '1', 'model': '1', 'imei': '1','network': 'wired', 'keyfrom': 'webdict','keyid': 'ai-write-web','mysticTime': str(int(time.time()*1000)),'yduuid': yduuid,'functionId':'1','query':quote(query),'userCustomize':quote(query),'token':decode_data["token"]}# 参数排序sorted_params = sorted(params.items(), key=lambda x: x[0])sorted_params.append(("key",decode_data['sk']))encoded_params = '&'.join([f"{key}={value}" for key, value in sorted_params])print("encoded_params:::::"+encoded_params)# 获取签名字符串sign=get_md5(encoded_params)params.update({"sign":sign})print("签名字符串:"+sign)params.update({"pointParam":"appVersion,client,functionId,imei,keyfrom,keyid,mid,model,mysticTime,network,product,query,screen,token,userCustomize,vendor,yduuid,key"})# 数据为multipart/form-data格式multipart_data = MultipartEncoder(fields=params)# 修改请求头中的Content-Typesession.headers['Content-Type']= multipart_data.content_type# 发送请求response = session.post('https://luna-ai.youdao.com/write/ai/template/sse', data=multipart_data, stream=True,verify=False)# 处理SSE流数据client=SSEClient(response)for event in client.events():# 判断事件类型if event.event=='message':# 不换行输出print(json.loads(event.data)['content'],end='')if __name__=='__main__':keyword=input('请输入关键词:')get_result(keyword)

有道ai写作lua版

使用Aide lua打包为apk

  • 主要lua代码
require "import"
--import "androidx"
--import "androidx.appcompat.app.*"
--import "androidx.appcompat.view.*"
--import "androidx.appcompat.widget.*"
--import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "androidx.coordinatorlayout.widget.CoordinatorLayout"local layout={CoordinatorLayout;layout_height="fill";layout_width="match_parent";{LinearLayout;layout_width="match_parent";orientation="vertical";layout_height="match_parent";{LinearLayout;layout_width="match_parent";orientation="horizontal";layout_height="wrap_content";{EditText;layout_marginTop="10";id="inputText";hint="请输入关键词";layout_weight=19;layout_marginLeft="5";};{Button;layout_marginTop="10";id="translateBtn";text="ai写作";layout_weight=1;layout_marginRight="5";};};{LinearLayout;layout_width="fill";layout_height="fill";{ScrollView;layout_width="fill";id="1";layout_height="fill";{TextView;layout_margin="10";layout_width="fill";id="resultView";layout_height="wrap_content";};};};};
};--ui结束activity.setContentView(loadlayout(layout))-- 生成时间戳
function getTimestamp()local Date = luajava.bindClass "java.util.Date"return Date().getTime()
end-- 字符串url编码
function urlEncode(s)-- url编码local s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02X", string.byte(c)) end)-- 逗号不编码return s:gsub(" ", "+"):gsub("%%2C",","):gsub("%%25","%%")
end-- 字符串序列化
function tableToStr(tbl,sep)local str = ''local sep= sep or '&'for key, value in pairs(tbl) dostr = str .. key .. '=' .. urlEncode(value) .. sependreturn string.sub(str, 1, -2)
end-- 拼接排序后的表为字符串
function tableToStr1(tbl)local str = ''for key, value in ipairs(tbl) dostr = str .. value[1] .. '=' .. urlEncode(value[2]) .. '&'endreturn string.sub(str, 1, -2)
end-- md5加密
function md5Encrypt(data,isHex)local MessageDigest = luajava.bindClass "java.security.MessageDigest"local md = MessageDigest.getInstance("MD5")local bytes = md.digest(String(data).getBytes())local isHex= (isHex==nil) and true or falseif isHex ==false thenreturn bytesendlocal result = ""for i = 0, #bytes - 1 dolocal temp = string.format("%02x", (bytes[i] & 0xff))result = result .. tempendreturn result
end-- AES解密
function decrypt(encryptStr, key, iv)local String = luajava.bindClass "java.lang.String"local SecretKeySpec = luajava.bindClass "javax.crypto.spec.SecretKeySpec"local IvParameterSpec = luajava.bindClass "javax.crypto.spec.IvParameterSpec"local Cipher = luajava.bindClass "javax.crypto.Cipher"local Base64 = luajava.bindClass "android.util.Base64"local algorithm = "AES"local mode = "AES/CBC/PKCS5Padding"local raw=SecretKeySpec(key,algorithm)local ivBytes = IvParameterSpec(iv)local cipher = Cipher.getInstance(mode)cipher.init(Cipher.DECRYPT_MODE, raw, ivBytes)local encode_content = Base64.decode(encryptStr, Base64.DEFAULT)local byte_content = cipher.doFinal(encode_content)return String(byte_content, "utf-8")
end-- 公共请求参数定义
local base = {Cookies = {['OUTFOX_SEARCH_USER_ID_NCOO'] = '1536815481.8081024',['OUTFOX_SEARCH_USER_ID'] = '1773118125@192.168.0.1',},Headers = {['Accept'] = 'application/json, text/plain, */*',['Accept-Language'] = 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',['Connection'] = 'keep-alive',['Origin'] = 'https://fanyi.youdao.com',['Referer'] = 'https://fanyi.youdao.com/',['Sec-Fetch-Dest'] = 'empty',['Sec-Fetch-Mode'] = 'cors',['Sec-Fetch-Site'] = 'same-site',['User-Agent'] ='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',['sec-ch-ua'] = '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',['sec-ch-ua-mobile'] = '?0',['sec-ch-ua-platform'] = '"Windows"',},Params = {['product'] = 'webdict',['appVersion'] = '1.0',['client'] = 'web',['mid'] = '1',['vendor'] = 'web',['screen'] = '1',['model'] = '1',['imei'] = '1',['network'] = 'wired',['keyfrom'] = 'webdict',['keyid'] = 'ai-write',['mysticTime'] = '',['yduuid'] = '',}
}-- 生成全局唯一用户id,同一id只有10次免费机会,每次生成不同id即可跳过免费限制
function genUUID()local UUID=luajava.bindClass 'java.util.UUID'return string.gsub(tostring(UUID.randomUUID()),'-','')
end--复制表
function copyTable(original)local copy = {}for key, value in pairs(original) doif type(value) == "table" thencopy[key] = copyTable(value) -- 递归复制子表elsecopy[key] = valueendendreturn copy
end-- 获得按键排序后的参数table
function getSortedParams(params)local function compare(a, b)return a[1] < b[1]endlocal sorted_params = {}for key, value in pairs(params) dotable.insert(sorted_params, { key, value })endtable.sort(sorted_params, compare)return sorted_params
end-- 获取token和key
function getTokenAndKey()local JSON=require 'cjson'local url = 'https://luna-ai.youdao.com/write/ai/web/ktf'-- 复制公共表头和参数local headers = copyTable(base.Headers)local params = copyTable(base.Params)local cookies = tableToStr(base.Cookies,";")-- 设置参数params['mysticTime']=getTimestamp()-- 生成yduuidbase.yduuid=genUUID()params['yduuid']=base.yduuid-- 按照table中键进行排序,并指定排序函数local sorted_params=getSortedParams(params)local encoded_params = tableToStr1(sorted_params)encoded_params = encoded_params .. "&key=xuiC95RuooxC8Q51UJtdod1plLUhdAmt"print("获取签名字符串"..encoded_params)local sign = md5Encrypt(encoded_params)print("获取签名的sign:"..sign)params['sign'] = signparams['pointParam'] ="appVersion,client,imei,keyfrom,keyid,mid,model,mysticTime,network,product,screen,vendor,yduuid,key"local finalUrl=url..'?'..tableToStr(params)print("请求地址"..finalUrl)-- 发送请求local httpTask=Http.get(finalUrl,cookies,nil,headers,function () end)local result=httpTask.get()local code,content,cookie,header=result[0],result[1],result[2],result[3]-- 解密数据local b64str=content:gsub(' ','+'):gsub('-','+'):gsub('_','/')-- des解密local key=md5Encrypt('IIS0fzL@zGv1^zO2%NcZiTcM=98WYxdun$CJE1KUKFfEhz&zpEC0fdXfvGqy*N!r',false)local iv=md5Encrypt('kG_oSxAXx#xjbiOKAkf9915Ko-XclOBP-GSgfo6E9ZB%9WvgcY6Y7dmje!+m5g#d',false)local s=tostring(decrypt(b64str,key,iv))s=string.gsub(s,'\x02','')print("token和sign"..s)local decodeData=JSON.decode(JSON.decode(s))return decodeData['sk'],decodeData['token']
end-- 获取翻译结果
function getResult(query)local JSON=require 'cjson'local url = 'https://luna-ai.youdao.com/write/ai/template/sse'-- 复制公共表头和参数local headers = copyTable(base.Headers)local params = copyTable(base.Params)-- 获取token和keylocal key,token=getTokenAndKey()-- 设置参数params['mysticTime']=getTimestamp()params['yduuid']=base.yduuidparams['keyid']='ai-write-web'params['functionId']='1'params['query']=urlEncode(query)params['userCustomize']=urlEncode(query)params['token']=token-- 设置头部local boundary="jeb3u3g5vh5v3hh2h2hg5g6v7vh4hehdjd"headers['Content-Type']='multipart/form-data;boundary='..boundaryheaders['Accept']='*/*, text/event-stream'headers["Referer"]="https://fanyi.youdao.com/aiwrite/document"-- 按照table中键进行排序,并指定排序函数local sorted_params=getSortedParams(params)local encoded_params=tableToStr1(sorted_params)encoded_params = encoded_params .. "&key="..keyprint('生成签名的参数字符串:::'..encoded_params)local sign = md5Encrypt(encoded_params)params['sign'] = signprint("签名结果:::"..sign)params['pointParam'] = 'appVersion,client,functionId,imei,keyfrom,keyid,mid,model,mysticTime,network,product,query,screen,token,userCustomize,vendor,yduuid,key'-- 处理sse事件流数据local OkHttpClient=luajava.bindClass 'okhttp3.OkHttpClient'local MultipartBody=luajava.bindClass 'okhttp3.MultipartBody'local Request=luajava.bindClass 'okhttp3.Request'local RealEventSource=luajava.bindClass 'okhttp3.internal.sse.RealEventSource'local EventSource=luajava.bindClass 'okhttp3.sse.EventSource'local EventSourceListener=luajava.bindClass 'okhttp3.sse.EventSourceListener'local TimeUnit=luajava.bindClass 'java.util.concurrent.TimeUnit'local client =OkHttpClient.Builder().connectTimeout(20,TimeUnit.SECONDS).readTimeout(20,TimeUnit.SECONDS).build()local requestBodyBuilder=MultipartBody.Builder().setType(MultipartBody.FORM)--添加请求参数for k,v in pairs(params) dorequestBodyBuilder.addFormDataPart(String(k),String(tostring(v)))endlocal requestBody=requestBodyBuilder.build()local requestBuilder = Request.Builder().url(url)-- 添加请求头for k,v in pairs(headers) dorequestBuilder.header(String(k),String(tostring(v)))endlocal request=requestBuilder.post(requestBody).build()-- 事件监听器local listener=EventSourceListener({onOpen=function(eventSource,response)print("建立sse链接")print(response)end,onEvent=function(eventSource,id,_type,data)-- 判断事件类型if _type=="message" then-- 更新uiactivity.runOnUiThread(Runnable{run=function()local result=JSON.decode(data)resultView.append(result["content"])end})endend,onFailure=function(eventSource,t,response)print("打开链接失败")end,onClose=function(eventSource)print("连接关闭")end})local eventSource=RealEventSource(request,listener)--开启事件源连接eventSource.connect(client)
end-- 测试
translateBtn.onClick=function()-- 清空上一次的结果resultView.setText("")local inputStr=tostring(inputText.getText())getResult(inputStr)
end

apk源码包及apk下载地址

  • 源码:https://www.123pan.com/s/J5Nsjv-6XBN.html 提取码:SnKW
  • apk:https://www.123pan.com/s/J5Nsjv-6XBN.html 提取码:SnKW

相关文章:

有道ai写作,突破免费限制,无限制使用

预览效果 文末提供源码包及apk下载地址 有道ai写作python版 import hashlib import time import json import ssl import base64 import uuidfrom urllib.parse import quote import requests from requests_toolbelt.multipart.encoder import MultipartEncoder from Crypto…...

node.js 使用 elementtree 生成思维导图 Freemind 文件

请参阅: java : pdfbox 读取 PDF文件内书签 请注意&#xff1a;书的目录.txt 编码&#xff1a;UTF-8&#xff0c;推荐用 Notepad 转换编码。 npm install elementtree --save 编写 txt_etree_mm.js 如下 // 读目录.txt文件&#xff0c;使用 elementtree 生成思维导图 Free…...

Vue中路由守卫的详细应用

作为一名web前端开发者&#xff0c;我们肯定经常使用Vue框架来构建我们的项目。而在Vue中&#xff0c;路由是非常重要的一部分&#xff0c;它能够实现页面的跳转和导航&#xff0c;提供更好的用户体验。然而&#xff0c;有时我们需要在路由跳转前或跳转后执行一些特定的逻辑&am…...

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理&#xff08;尚未Checkpoint&#xff09; 如下图&#xff0c;Topic 有两个分区&#xff0c;并行度也为 2&#xff0c;根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据&#xff0c;该Topic 有 2 个 Pa…...

【Java程序代理与系统代理关系】Java程序代理与系统代理关系优先级及覆盖关系

前言 使用Apache HttpClient工具包中的HttpClients.createDefault()方法创建的默认HTTP客户端会根据操作系统当前的设置来决定是否使用代理。 具体来说&#xff0c;当创建默认HTTP客户端时&#xff0c;它会检查系统的代理设置。如果操作系统当前设置了系统级代理&#xff0c;…...

MQ,RabbitMQ,SpringAMQP的原理与实操

MQ 同步通信 异步通信 事件驱动优势&#xff1a; 服务解耦 性能提升&#xff0c;吞吐量提高 服务没有强依赖&#xff0c;不担心级联失败问题 流量消峰 ​ 小结: 大多情况对时效性要求较高&#xff0c;所有大多数时间用同步。而如果不需要对方的结果&#xff0c;且吞吐…...

Vue 3 + Koa2 + MySQL 开发和上线部署个人网站

Vue 3 Koa2 MySQL 开发和上线部署个人网站 记录个人的一个操作步骤, 顺序不分先后, 嫌啰嗦请出门右转! 环境说明: 服务器: 阿里云轻量应用服务器 服务器系统: CentOS8.2 本地环境: macOS 12.7.2 Node: 20.10.0 MySQL: 8.0.26 Vue: 3.3.11 Koa: 2.7.0 pm2: 5.3.1 Nginx: 1.1…...

uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面

1. pages下创建三个不同用户身份的“我的”页面。 显示第几个tabbar&#xff0c;0是管理员 1是财务 2是司机 2. 在uni_modules文件夹创建底部导航cc-myTabbar文件夹&#xff0c;在cc-myTabbar文件夹创建components文件夹&#xff0c;在components文件夹创建cc-myTabbar.vue组件…...

源支付V7开心1.9修复版,非网络上泛滥不能那种

源支付V7开心1.9修复版&#xff0c;非网络上泛滥不能那种 修复版源码&#xff0c;非网络泛滥版&#xff0c;防止源码泛滥&#xff0c;会员专属源码, 本站会员免费下载所有资源 注&#xff1a;开发不易&#xff0c;仅限交流学习使用&#xff0c;如商业使用&#xff0c;请支持正…...

Gitlab和Jenkins集成 实现CI (二)

Gitlab和Jenkins集成 实现CI (一) Gitlab和Jenkins集成 实现CI (二) Gitlab和Jenkins集成 实现CI (三) 配置Gitlab api token 配置 Gitlab 进入gitlab #mermaid-svg-t84fR8wrT4sB4raQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:…...

Java:内部类、枚举、泛型以及常用API --黑马笔记

内部类 内部类是类中的五大成分之一&#xff08;成员变量、方法、构造器、内部类、代码块&#xff09;&#xff0c;如果一个类定义在另一个类的内部&#xff0c;这个类就是内部类。 当一个类的内部&#xff0c;包含一个完整的事物&#xff0c;且这个事物没有必要单独设计时&a…...

【持续更新】2024牛客寒假算法基础集训营3 题解 | JorbanS

A - 智乃与瞩目狸猫、幸运水母、月宫龙虾 string solve() {string a, b; cin >> a >> b;if (isupper(a[0])) a[0] a - A;if (isupper(b[0])) b[0] a - A;return a[0] b[0] ? yes : no; }B - 智乃的数字手串 string solve() {cin >> n;int cnt 0;for (…...

Java基于微信小程序的驾校报名小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

Android中AGP与Gradle、AS、JDK的版本关系

文章目录 AGP版本所要求的Gradle、JDK、SDK Build Tools最小版本Android Studio所要求的AGP最小版本 本文介绍了 在Android开发中由于AGP与gradle、JDK、AS等版本不匹配导致的编译失败问题屡见不鲜&#xff0c;尤其是对于新手而言更是叫苦不迭。新手经常遇到拿到别人的工程代码…...

web 前端实现一个根据域名的判断 来显示不同的logo 和不同的标题

1.需求 有可能我做一个后台 web端 我想实现一套代码的逻辑 显示不同的公司主题logo以及内容&#xff0c;但是实际上 业务逻辑一样 2.实现 建一个store oem.ts 这个名为是 oem系统 oem.ts import { defineStore } from pinia;import { store } from /store;const oemDataLis…...

复制和粘贴文本时剥离格式的5种方法(MacWindows)

您可能每天复制和粘贴多次。虽然它是一个非常方便的功能&#xff0c;但最大的烦恼之一就是带来了特殊的格式。从网络上获取一些文本&#xff0c;您经常会发现粘贴到文档中时&#xff0c;它保持原始样式。 我们将展示如何使用一些简单的技巧在不格式化的情况下复制和粘贴。 1.…...

SpringBoot实现即时通讯

SpringBoot实现即时通讯 功能简述 好友管理群组管理聊天模式&#xff1a;私聊、群聊消息类型&#xff1a;系统消息、文本、语音、图片、视频会话列表、发送消息、接收消息 核心代码 package com.qiangesoft.im.core;import com.alibaba.fastjson2.JSONObject; import com.q…...

【每日一题】LeetCode——反转链表

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…...

精通Python爬虫:掌握日志配置

源码分享 https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2 在开发Python爬虫时&#xff0c;日志记录是一个不可或缺的特性&#xff0c;它帮助我们捕捉运行时信息、调试代码和监控爬虫的健康状况。合理地配置日志系统是提高爬虫可维护性的关键。本篇技术博客将详细介绍…...

Python_百度贴吧评论情感分析

一、评论爬取 以百度贴吧中“美团骑手吧”为例&#xff0c;对页面中的帖子评论进行爬取&#xff0c;并将结果以json的格式保存到本地中。 from lxml import etree import requests import json# 根据网页url获取评论 def GetComments(url):# 使用requests库发送GET请求&#…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...