个人笔记
超级无敌谢大脚
谢大脚永远不会秃头
展开
-
算法:爬楼梯
到达第 i 阶楼梯的方法数是到达第 i-1 阶和第 i-2 阶楼梯的方法数之和。这是因为,要到达第 i 阶,你最后一步要么是从第 i-1 阶上来的,要么是从第 i-2 阶上来的。原创 2024-08-27 14:12:43 · 354 阅读 · 0 评论 -
uniapp 中 web-view 向 App 传递消息
在web项目中引入官方库 uni.webview.1.5.4.js ,原创 2024-08-14 14:17:40 · 555 阅读 · 0 评论 -
通过iframe碎片实现web局部打印
iframe碎片实现web界面局部打印。解决了拉起打印机内容为空;解决了拉起打印机样式丢失;原创 2024-07-25 17:09:18 · 306 阅读 · 0 评论 -
浏览器跨标签页通信
现代Web开发中的跨标签页通信是一个多样化且复杂的话题。通过结合LocalStorage、Broadcast Channel API、SharedWorker、postMessage以及Cookie,开发者可以选择适合自己应用场景的最佳方案。理解这些技术的优势和局限性对于设计一个高效、安全且用户友好的Web应用至关重要。原创 2024-04-23 14:21:59 · 819 阅读 · 0 评论 -
Flutter Widget之CompositedTransformTarget+CompositedTransformFollower(例如:功能引导指示,跟随弹窗等功能。)
在合成阶段(在绘制阶段之后,如 WidgetsBinding.drawFrame 中所述)合成此小部件时,它会应用一个转换,将链接的 CompositedTransformTarget 的 targetAnchor 和此小部件的 followerAnchor 结合在一起。如果父级覆盖屏幕,这很容易实现,所以这个小部件通常用作应用程序范围的 Overlay 中的 OverlayEntry 的根(例如,由 MaterialApp 小部件的导航器创建)。例如:功能引导,跟随弹窗等功能。原创 2023-08-02 14:29:50 · 497 阅读 · 0 评论 -
Flutter 中实现截图指定控件并进行微信分享和本地存储
我们拿到控件生成的 ByteData,通过 ByteData.buffer.asUint8List() 拿到 Uint8List ,然后通过 RenderRepaintBoundary 中的 toImage() API 来获取当前控件生成的 ByteData。上面我们已经拿到了,生成 png 文件了,下面的就直接根据 fluwx 的文档直接去用就可以了。之后获取临时的缓存目录,File().create() 创建 一个空间的 png File。想要仔细了解 image_gallery_saver 点。原创 2023-07-27 14:37:59 · 996 阅读 · 0 评论 -
微信开放标签 wx-open-launch-app 拉起 Flutter APP 白屏。
但是在 Flutter 项目中使用微信开放标签拉起 APP 会跳转进一个 native 白屏界面,只有你返回的时候才会返回到 flutter 的 页面,这就非常的奇奇怪怪。大家应该都知道在微信浏览器里面是无法直接拉起 APP 的,需要对接微信的开放标签 (wx-open-launch-app) 拉起 APP。我把这个example 的配置全部拿到新建的空白项目中后,就不会在跳到 native 的白屏界面。一开始怀疑是项目代码有问题,倒是我哪怕是新建一个空白的项目去拉起还是白屏,这就比较难搞了。原创 2023-05-05 10:29:41 · 571 阅读 · 0 评论 -
手写极简VUE(MVVM) 实现 v-click 和 v-model
手写极简MVVM实现了 {{}} 模板数据解析v-click事件c-mode指令原创 2022-12-07 20:09:48 · 1383 阅读 · 0 评论 -
vite + react + ts 配置路径别名alias
path 模块是 node.js 的内置模块,而 node.js 默认不支持 ts 文件的,所以需要安装 @type/node 依赖包。的时候才不会提示是否安装你。根据需要进行配置路径别名。原创 2022-09-05 17:37:19 · 1801 阅读 · 0 评论 -
el-tabale 多选添加 分页 默认选中
el-tabale 多选添加 分页 默认选中1. 子组件 `initData` 初始化获取数据之后 通过 `this.$nexttick(()=>{})` 对 `el-table` 进行默认选中。当前选中的项 包括三部分 :2. 需要吧这三项进行合并去重,存储到 `currentSelect` . 然后根据 `el-table` 当前页的数据 过滤后 默认选中。默认选中会刷新 `selectionGoodsList` 为当前页面选中的数据。3. 确认选中的时候 就更新所有的选中项 `currentSe原创 2022-08-10 15:21:29 · 1588 阅读 · 0 评论 -
ES13 - ES2022 - 第 123 届 ECMA 大会批准了 ECMAScript 2022 语言规范
2022 年 6 月 22 日,第 123 届 ECMA 大会批准了 ECMAScript 2022 语言规范,这意味着它现在正式成为标准。原创 2022-08-08 14:00:09 · 191 阅读 · 0 评论 -
公众号测试号 进行H5授权获取code《前端部分》
Vue-H5 微信公众号静默授权。从注册测试号到进行授权。目前仅支持微信浏览器内部进行授权,还没有在其他浏览器进行授权的逻辑。公众号授权进行开发调试的时候需要微信浏览器访问访问电脑端开启的项目服务,之后会讲手机怎么访问电脑开启的项目服务。...原创 2022-07-08 10:34:47 · 2805 阅读 · 1 评论 -
element中select,值更新视图不更新
一、 业务逻辑使用el-table的自定义列功能,同一行数据的两列有互动,当一列(值来源)数据改变,另一列(默认值)的el-select无法选中值(实际v-model对应的数据已改变,但是页面上没有更新),如图:二、原因默认值这一列对应的select的v-model对应的字段是在table生成后动态插入的,初始的数据结构类似://data 为el-table的datavar data=[ {src:'param'}]src字段改变后,在值来源的select的chan..原创 2022-03-13 11:53:24 · 3856 阅读 · 0 评论 -
HTTP缓存机制
web缓存:数据库缓存,服务器缓存,浏览器缓存;浏览器缓存:indexDB localStorage(5M);sessiStorage(5M);Cookie(4K) HTTP缓存HTTP缓存:强缓存(expries Cache-Contral) 协商缓存(Etag:if-none-match Last-Modifiy:if-Modify-Since)浏览器第一次请求浏览器再次请求:为什么已经有了Last-Modifiy 还需要ETag ?1. Last-Modified.原创 2022-01-25 15:12:45 · 635 阅读 · 0 评论 -
VUE插件 --(来自官方文档)
插件插件是自包含的代码,通常向 Vue 添加全局级功能。它可以是公开install()方法的object( { install:xxxx } ),也可以是function1、编写插件每当这个 插件 被添加到应用程序中时,如果它是一个对象,就会调用对象中的install方法。如果它是一个function,则函数本身将被调用。两种情况调用的函数都会接受两个参数:Vue.creatApp生成的对象和自己填写的options;差劲最好单独在一个文件中编写 暴...原创 2022-01-15 14:43:40 · 931 阅读 · 0 评论 -
web局部打印
vue项目对部分DOM进行打印通过$ref 获取需要打印的DOM注册自定义全局方法$printimport Print from '@/common/print.js' // 引入附件的js文件Vue.use(Print) // 注册print.jsprint.js// 打印类属性、方法定义/* eslint-disable */const Print = function (dom, printType, options) { if (!(thi.原创 2022-01-13 11:43:14 · 159 阅读 · 0 评论 -
directive 拖拽dialog
其实没什么东西就是添加一个自定义指令,就是在dialog的头部的时候,添加一个onmousedown 事件,获取当前鼠标的位置 然后更新dialog的定位位置;copy可用: bind(el, binding, vnode) { const dialogHeaderEl = el.querySelector('.el-dialog__header') const dragDom = el.querySelector('.el-dialog') dialogHeade.原创 2022-01-06 16:11:34 · 155 阅读 · 0 评论 -
directive 自定义指令
设置自定义指令实现 一些通用的功能,样式等Example :(文档上的)<div id="dynamicexample"> <h3>Scroll down inside this section ↓</h3> <p v-pin:[direction]="200">I am pinned onto the page at 200px to the left.</p></div>const app = Vue.c原创 2021-12-24 16:20:03 · 682 阅读 · 0 评论 -
vue3 draggable拖拽
!!首先安装 vuedraggable npm i -S vuedraggable@next一定要带上@next,不然就会报错 很恶心!使用建议看官网。官网:vue.draggable中文文档 - itxst.comVue.Draggable是一款基于Sortable.js实现的vue拖拽插件。支持移动设备、拖拽和选择文本、智能滚动,可以在不同列表间拖拽、不依赖jQuery为基础、vue 2过渡动画兼容、支持撤销操作,总之是一款非常优秀的vue拖拽组件。https://www.itxs..原创 2021-12-21 16:03:59 · 5990 阅读 · 0 评论 -
富文本(vue3)SQL格式化 JSON格式化
先上图看效果:SQL格式化使用的是 codemirror 和 sql-formatter 实现的(建议看文档搞)使用就直接用就可以了,如果用的地方多建议 install 全局组件 <codeEditor v-model:value="code" :scene="type" :height-size="200" ></codeEditor>对富文本编辑器进行封装。直接copy可用<templat...原创 2021-12-17 21:53:40 · 2588 阅读 · 0 评论 -
Upload 上传文件 设置请求参数
Upload 上传文件设置参数和请求原创 2021-12-14 10:41:35 · 4077 阅读 · 0 评论 -
VUE3 + TS 使用 Axios(copy可直接使用)
index.ts 用来暴露实例import EnclosureHttp from "@/utils/http/requset";const http = new EnclosureHttp();export default http;request.ts 实现 axios 创建实例 请求拦截 响应拦截 和默认 的get post 封装(偷懒了,没有封装自定义的 get post put delete )import Axios, { AxiosRequestConfig, A.原创 2021-12-04 21:52:01 · 10000 阅读 · 0 评论 -
TS 小记 和 Record
Record<K,T>;将petsGroup中的每个值(‘dog’ | ‘cat’ | ‘fish’)都转为 IPetInfo 类型。当然也可以自己在第一个参数后追加额外的值,type petsGroup = 'dog' | 'cat' | 'fish';interface IPetInfo { name:string, age:number,}type IPets = Record<petsGroup, IPetInfo>;const anim...原创 2021-11-29 22:41:27 · 1303 阅读 · 0 评论 -
算法 :两数相加
一、比较恶心的算法逻辑:因为对链表不了解,所以我最开始想到的是 类似两个数组相加;把两个链表遍历成数组然后倒过来转换成数字,相加后再反转数组;比如:arr1 = [2,8,6] ;arr2= [9,5,2] 把两个数组 reverse() 之后 join() 一下不就能得到 '682' 和 '259'了吗!Number() 之后 在相加 这不就得到 707 吗! 最后就是 split() 一...原创 2021-11-25 12:02:57 · 797 阅读 · 0 评论 -
极简的MVVM实现
MVVM 匹配 {{}}原创 2021-11-21 22:31:18 · 490 阅读 · 0 评论 -
Promise 实现
// promise手写 /* 1.promise状态 pending(等待) resolve(成功) reject(失败) 2. resolve 和 reject 函数 3. then方法的实现 4.发布订阅者模式 实现异步 5.链式调用 ( 返回 普通值 和 promise) 6.resolve reject all race c...原创 2021-11-19 16:35:24 · 554 阅读 · 0 评论 -
node.js - 笔记 : 保存喜欢的图片
//引入核心模块const http = require("http");const https = require("https");const fs = require("fs");const cheerio = require("cheerio");for (var page = 1; page < 2; page++) {}// let url = `https://pic.netbian.com/4kdongman/index_${page}.html`for (let .原创 2021-10-29 16:38:02 · 268 阅读 · 0 评论 -
2021-10-26 下划线转化为小驼峰
将输入的变量名转换为小驼峰写法可能的输入命名格式如下:TestVariabletest_variableTEST_VARIABLE,最终输出为testVariablefunction format( name ) { // write code here if(name == "") return name if(name.indexOf('_') != -1){ name = name.toLowerCase() } l原创 2021-10-26 10:34:11 · 537 阅读 · 0 评论 -
2021-10-26 算法二叉树遍历
给定一个先序遍历与中序遍历的二叉树,要求求出该二叉树的后序遍历表示形式。对于如下二叉树:其先序遍历为:GDAFEMHZ其中序遍历为:ADEFGHMZ当给定先序遍历与中序遍历时,该二叉树就被唯一的确定下来,这时即可求出二叉树的后序表示为:AEFDHZMG。给定输入中,二叉树中的字符有且仅有一个,且二叉树中的所有节点互不相同输入:两行,第一行为二叉树的先序遍历表示,第二行为二叉树的中序遍历表示输出:一行,二叉树的后续遍历表示function binaryTre.原创 2021-10-26 10:31:48 · 186 阅读 · 0 评论 -
LODOP打印
PRINT_INT(strPrintTaskName)打印初始化● SET_PRINT_PAGESIZE(intOrient,intPageWidth,intPageHeight,strPageName)设定纸张大小● ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,strHtml)增加超文本项● ADD_PRINT_TEXT(intTop,intLeft,intWidth,intHeight,strContent)增加纯文本项● ADD_..原创 2021-10-16 09:57:09 · 625 阅读 · 0 评论 -
下载文件保存为Excel
function exportMethod(data) { let token = Vue.cookie.get('token') // 请求头带上token axios.defaults.headers.common["token"] = token; axios({ method: data.method, url: `${data.url}${data.params ? '?' + data.params : ''}`, responseType: 'blob'.原创 2021-10-08 16:18:10 · 143 阅读 · 0 评论 -
uniapp map 地图
## 简单实现两点连线文档地址:uni-app官网## 代码<template> <view> <map style="width: 100%;height: 600rpx;" :latitude="latitude" :polyline="polyline" :include-points="includePoints" :longitude="longitude" :markers="markers"></map>...原创 2021-09-10 21:47:38 · 1837 阅读 · 0 评论 -
vue DOM 事件传递字符串参数必须是 ‘‘ 单引号
如果是双引号传递字符串参数模板解析就会出错;原创 2021-09-08 17:11:22 · 416 阅读 · 0 评论 -
JS 组合寄生式继承
<script> /* 1、创建一个空对象 2、把构造函数的prototype指向这个对象的__proto__ 3、把构造函数的执行上下文(this) 只想这个对象 4、执行构造函数的函数 5、返回这个对象 */ function SuperType(name) { this.name = name ..原创 2021-08-28 11:45:04 · 90 阅读 · 0 评论 -
event loop 事件循环
调用栈(call stack)、消息队列(Message Queue)、微任务队列(Microtask Queue)宏任务:script全部代码、setTimeout、setInterval、setImmediate、I/O、UI Rendering。微任务:Process.nextTick(Node 独有)、Promise 等。JS代码在浏览器中运行时单线程的,event loop 会一行一行的执行代码遇到函数就会把函数压入调用栈中执行函数里的代码 代码执行完毕...原创 2021-08-11 09:36:10 · 114 阅读 · 0 评论 -
uniapp 拉起授权 (兼容拒绝后重新开启权限)
uniapp 获取用户权限的时候 如果不小心点击了取消权限就会发现,第二次无论怎么点击都无法重新拉起授权界面的按钮;>(获取用户权限除外 getUserProfile getUserinfo 无论拒绝还是同意每一次都能重新拉起授权)拒绝授权后就必须进入设置中开启授权,那么怎么直接在小程序中直接跳转设置界面重新打开这一项权限呢?使用openSetting函数但是如果你直接在外部(authorize函数得外部)调用openSetting函数 你会发现进入的设置的界面里 没有你需要的重新..原创 2021-08-09 20:49:37 · 6327 阅读 · 4 评论 -
长链接 WebSocket 的简单实现
##created() { this.initWebsocket()},methods: { // 初始化websocket initWebsocket() { let _this = this let ws = new WebSocket(this.wsUrl) //保持连接 ws.onopen = () = > { // Web Socket 已连接上,使用 send() ..原创 2021-07-27 16:10:58 · 485 阅读 · 1 评论 -
21-7-8 挂在之前获取 $refs获取DOM实例
原创 2021-07-08 13:39:17 · 106 阅读 · 0 评论 -
简单背包问题 获取最大价值~~(个人理解,看不懂看别家的)
/** * @param {m} 物品重量数组 * @param {v} 物品价值数组 * @param {index} 当前待选择的物品索引 * @param {C} 背包容量 */ function resloveKs(m, v, index, C) { if (C <= 0 || index < 0) return 0 let ks = resloveKs(m, v,...原创 2021-07-07 10:50:15 · 426 阅读 · 0 评论 -
el-input-number 不能增减 ;;;当动态为对象添加属性时,必须使用中括号【】,不可用点方法
在el-table 中使用el-input-number 的时候,渲染table 的tableList不存在el-input-number需要的字段;这时会为tableList中的item添加属性的时候,如果使用element.xxx的形式进行添加默认值,就会发现el-input-number的加减失效了无法加减;但是如果使用element['xxx']的形式进行添加就可以;这个问题困扰我好久;以前的处理放大就是在taleList第一次赋值的时候遍历添加属性值,但是获取tableList的接口实在公..原创 2021-07-03 11:43:23 · 2891 阅读 · 0 评论