一键反编译微信小程序获取源码,并转换为uniapp或taro跨端项目
近期热门文章(感谢掘友的鼓励与支持🌹🌹🌹): 做了一夜动画,就为让大家更好的理解Vue3的Composition Api 762赞 🔥耗子尾汁,云开发的羊毛人人可薅! | 🏆 技术专题第七期征文 32赞 特别声明 ★ ★ ★ ★ ★ 禁止使用此方法盗取他人的开发成果 ★ ★ ★ ★ ★ 致歉 向教程中案例“好多计算器”的作者道歉,请大家帮好多计算器的作者多点几次banner广告。 视频教程 提取微信小程序代码包 www.bilibili.com/video/BV1yz… 微信小程序项目转为uniapp项目 www.bilibili.com/video/BV1yz… 微信小程序项目转为taro项目 www.bilibili.com/video/BV1yz… 反编译成果截图 跳一跳 仅反编译小游戏源码 好多计算器 反编译后可获得源码,可转为uniapp,taro等跨端项目 注意事项 不是所有小程序都可以获得源码 理论上所有的小程序都可以被反编译,但反编译和获得源码是两个不同的概念。使用uniapp或taro开发的小程序,反编译后代码不具备可读性。 不是所有小程序都可以转多端 仅支持微信原生开发的小程序反编译后转多端。禁止套娃! 90%的小游戏获取不到源码 因为游戏开发的特殊性,大部分的游戏都会使用游戏框架比如egret,laya,cocos2d等,发行时本就会对代码进行保护和混淆。但可通过反编译提取出代码包内的图像,音频资源。 下载地址 下载:v1.0.0版 from:https://juejin.cn/post/6891957219386982408 https://ukm028kzyr.feishu.cn/docs/doccnW1w3vwpcnjTeTYKcdErjtK#
View Details完美解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso
这是官方提供的解决问题的教程:Creating a personal access token – GitHub Docs 第一步:点击Settings 点击Settings 第二步:点击Developer settings 点击Developer settings 第三步:点击Personal access tokens Personal access tokens 第四步:点击Generate new token Generate new token 第五步:给token起一个描述名字(随便起) token name 第六步:设置token多久后过期 expire 第七步:设置token拥有的权限 权限 第八步:点击Generate token,生成一个token 生成token 第九步:复制token(关掉当前页面,就再也看不到当前token,请确保自己已复制) 复制token 第十步:设置token
|
1 2 3 4 5 |
// <your_token>:包括<>在内的全部字符替换成你的token // <USERNAME>:包括<>在内的全部字符替换成你的username // <REPO>:包括<>在内的全部字符替换成你要访问的仓库名称 git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git git push origin main |
作者:沈正方 链接:https://www.jianshu.com/p/6e86c80c457c 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View DetailsC#读取带命名空间的xml
首先带有命名空间的xml读取可以使用Xml.Linq,也可以使用xpath,本文将采用xpath的方式解析。 原文参考了:https://www.cnblogs.com/duanjt/p/5440540.html 同时参考了:https://www.cnblogs.com/shixudong/p/4056400.html 首先带有命名空间的xml如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:queryResponse xmlns:ns="http://release.service.das.jeaw.com"> <ns:return xsi:type="ax2291:QueryReturnEntity" xmlns:ax2293="http://release.service.das.jeaw.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax2291="http://pojo.servgen.das.jeaw.com/xsd"> <ax2291:code>DAS00000</ax2291:code> <ax2291:message>服务访问成功</ax2291:message> <ax2291:totalRowCount>1</ax2291:totalRowCount> <ax2291:currentPageNo>1</ax2291:currentPageNo> <ax2291:datas xsi:type="ax2293:EntityGZ_GZBDJXX"> <ax2293:GZYXM_1>吕姗姗</ax2293:GZYXM_1> <ax2293:GZYZBH_1 xsi:nil="true"/> <ax2293:ID_1 xsi:nil="true"/> </ax2291:datas> <ax2291:pageSize>1</ax2291:pageSize> <ax2291:totalPageCount>1</ax2291:totalPageCount> </ns:return> </ns:queryResponse> </soapenv:Body> </soapenv:Envelope> |
解析如上的xml,就涉及到两个类,XmlNamespaceManager和XmlDocument。XmlDocument用于解析xml,而XmlNamespaceManager则是和命名空间相关的类。 如上的xml,如果我们想要获取到吕姗姗和ID_1的true怎么实现呢,代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
string xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"> <soapenv:Body> <ns:queryResponse xmlns:ns=\"http://release.service.das.jeaw.com\"> <ns:return xsi:type=\"ax2291:QueryReturnEntity\" xmlns:ax2293=\"http://release.service.das.jeaw.com/xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ax2291=\"http://pojo.servgen.das.jeaw.com/xsd\"> <ax2291:code>DAS00000</ax2291:code> <ax2291:message>服务访问成功</ax2291:message> <ax2291:totalRowCount>1</ax2291:totalRowCount> <ax2291:currentPageNo>1</ax2291:currentPageNo> <ax2291:datas xsi:type=\"ax2293:EntityGZ_GZBDJXX\"> <ax2293:GZYXM_1>吕姗姗</ax2293:GZYXM_1> <ax2293:GZYZBH_1 xsi:nil=\"true\"/> <ax2293:ID_1 xsi:nil=\"true\"/> </ax2291:datas> <ax2291:pageSize>1</ax2291:pageSize> <ax2291:totalPageCount>1</ax2291:totalPageCount> </ns:return> </ns:queryResponse> </soapenv:Body> </soapenv:Envelope>"; XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlStr); XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);//这一步实例化一个xml命名空间管理器 nsMgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/"); nsMgr.AddNamespace("ns", "http://release.service.das.jeaw.com"); nsMgr.AddNamespace("ax2293", "http://release.service.das.jeaw.com/xsd"); nsMgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); nsMgr.AddNamespace("ax2291", "http://pojo.servgen.das.jeaw.com/xsd"); XmlNode nodeGZYXM = doc.SelectSingleNode("soapenv:Envelope/soapenv:Body/ns:queryResponse/ns:return/ax2291:datas/ax2293:GZYXM_1", nsMgr); Console.WriteLine(nodeGZYXM.InnerText); //将输出 吕姗姗 XmlNode nodeId = doc.SelectSingleNode("soapenv:Envelope/soapenv:Body/ns:queryResponse/ns:return/ax2291:datas/ax2293:ID_1/@xsi:nil", nsMgr); //@xsi:nil表示获取Attribute而不是node节点 Console.WriteLine(nodeId.InnerText); //将输出 true |
from:https://www.cnblogs.com/duanjt/p/11654173.html
View Detailssagan: Webpack CSS build issue on Windows
sagan\sagan-client\webpack.config.js
|
1 2 3 4 5 6 7 |
{ test: /\.(woff2|woff|eot|ttf|svg)$/, loader: 'file-loader', options: { name: 'fonts/[name].[ext]', }, }, |
View Details
com.gorylenko.gradle-git-properties
https://plugins.gradle.org/plugin/com.gorylenko.gradle-git-properties
View Detailsnvm安装与使用
nvm全名node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。下面列出下载、安装及使用方法。
View Detailsnode16.0版本 对应node-sass sass-loader 各个版本号
|
1 2 |
"node-sass": "^6.0.1", "sass-loader": "^10.0.1", |
试了半天啊 我真的泪目了 希望给各位省点时间吧 node-sass – npm 认准对应的node版本号 确定好一个后来回切换即可 容错率很高 from:https://blog.csdn.net/qq_40095911/article/details/119253908
View Details@RequestParam详解
1.value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value="page",则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据。
2.required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。
3.defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties['java.vm.version']}"
JDK7 和 JDK8 的 HashMap
JDK7 的 HashMap
JDK7 的 HashMap 的存储结构其实就是哈希表的存储结构(由数组与链表结合组成,称为链表的数组)。
JDK8 的 HashMap
当链表长度超过阈值(TREEIFY_THRESHOLD) 8,table 的长度大于 64如果小于 64,就通过扩容的方式来解决,避免红黑树结构化链表转换为红黑树。
ConcurrentHashMap
HashMap 在高并发下会出现链表环,从而导致程序出现死循环。高并发下避免 HashMap 出问题的方法有两种,一是使用 HashTable,二是使用 Collections.syncronizedMap。但是这两种方法的性能都能差。因为这两个在执行读写操作时都是将整个集合加锁,导致多个线程无法同时读写集合。高并发下的 HashMap 出现的问题就需要 ConcurrentHashMap 来解决了。
View Details