自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(278)
  • 资源 (5)
  • 收藏
  • 关注

原创 前端技术栈

https://juejin.cn/post/7036581158670303240

2021-12-01 17:20:28 270

原创 算法专题汇总(javascript前端版本)

1、快速排序https://blog.csdn.net/cctvcqupt/article/details/107614866?spm=1001.2014.3001.55012、编译器括号配对https://blog.csdn.net/cctvcqupt/article/details/107611384?spm=1001.2014.3001.55013、二叉搜索树的生成https://blog.csdn.net/cctvcqupt/article/details/107608942?s

2021-07-28 16:37:03 89

原创 函数式编程

柯里化函数:函数元降维技术,柯里化函数帮助我们把一个多元函数变成一个不完全调用,把函数调用变成延迟的偏函数(不完全调用函数)调用。偏函数:所谓偏函数,就是以原函数为基础,将某个位置上的参数固定住,后续参数重新扩展传递给原函数,对外则是生成一个新函数。3、函数式编程,是声明式的编程范式(与之对应的是命令式),逻辑清晰,提高代码可读性。2、纯函数的使用,不与全局状态发生交互,具有独立稳定性,提高代码的可维护性。1、将函数视为积木,通过函数来提高代码的模块化和可重用性。柯里化(代码模块化,提高复用性)

2023-01-12 00:06:31 147 1

原创 hMailServer搭建邮件服务器,用自己的域名邮箱,酷一些吧

需要用到的安装包资源下载,特意设置了0积分免费下载,贡献给各位,请点赞吧配置DKIM需要的(含OpenSSL、VC++2008和相关文件)-WindowsServer文档类资源-CSDN下载hMailServer安装包-WindowsServer文档类资源-CSDN下载下面是安装文档,详细操作步骤比较简单:xhMailServer邮件服务下载安装详细步骤、汉化、配置(内含解决.NET Framework和libmysql.dll32位库的问题)_程序员老油条的博客-CSDN博

2022-05-02 23:00:32 716

原创 rem和vw,vh 移动端自适应

rem布局的本质是基于宽度的等比缩放rem单位都是相对于根元素html的font-size来决定大小的,根元素的font-size相当于提供了一个基准,当页面的size发生变化时,只需要改变font-size的值,那么以rem为固定单位的元素的大小也会发生响应的变化。 因此,如果通过rem来实现响应式的布局,只需要根据视图容器的大小,动态的改变font-size即可。function refreshRem() { var docEl = doc.documentElement;

2022-04-25 23:33:50 617

原创 事件循环 EventLoop

1、setTimeout(fn, 0)在下一轮“事件循环”开始时执行2、立即resolve()的 Promise 对象,是在本轮“事件循环”(event loop)的结束时执行setTimeout(function () { console.log('three');}, 0); Promise.resolve().then(function () { console.log('two');}); console.log('one'); // one// two// t

2022-04-15 14:15:53 135

原创 Generator生成器 和 Iterator迭代器

generator - 廖雪峰的官方网站IteratorIterator是一种机制,也可以说是一种接口,它为不同的数据结构提供了统一的访问机制。任何数据结构只要配置了 Iterator 接口,就可以完成遍历操作for...of循环的背后调用的正是iteration,数组对象上有iteration属性,数组是一个可迭代对象,因此数组可以被for...of遍历一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,这个接口就可以被for...of循环消

2022-03-04 19:08:14 456

原创 Symbol

Symbol - JavaScript | MDN2.3 ES6 Symbol | 菜鸟教程每个从Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。最大的用法是用来定义对象的唯一属性名由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。...

2022-03-03 21:17:13 336

原创 Vue2 的数据响应式缺陷

const vm = new Vue({ el:'#app', data:{ message:'aaaaaa', user:{ name:'zhang-san' }, list:['aaaa','bbbb','cc...

2022-03-03 19:16:04 980

原创 Vue生命周期

beforCreate 初始化事件和生命周期created 初始化注入和响应式beforMount 把模板编译为render函数mounted 挂载DOMbeforUpdate 数据变化触发更新updatedbeforDestory 移除事件监听,watchers,和子组件destoryedactivated 组件激活deactivated 组件失活...

2022-02-23 19:54:41 283

原创 $attrs 和 $listeners

$attrs--继承所有的父组件属性(除了prop传递的属性、class 和 style )$listeners--属性,它是一个对象,里面包含了作用在这个组件上的所有监听器,你就可以配合v-on="$listeners"将所有的事件监听器指向这个组件的某个特定的子元素。1、页面中引用Parent组件<template> <div class="x-page"> <Parent address="上海浦东" name="张..

2022-02-23 16:26:55 698

原创 怎么理解vue的单向数据流和v-model双向绑定

Vue 的单向数据流:指数据一般从父组件传到子组件,子组件没有权利直接修改父组件传来的数据,即子组件从 props 中直接获取的数据。子组件使用 $emit 发出一个事件,让父组件接收去修改这个值。v-model 数据双向绑定,和 单向数据流是两个概念。v-model 只是一个语法糖,等同于<input v-model=“phoneInfo.phone”/><input :value="PhoneInfo.phone" @input="val => { Pho

2022-02-22 15:51:00 667

原创 微前端-微应用

现在有哪些成熟的微前端框架? - 知乎介绍 - qiankunsingle-spa | single-spa为什么要用微前端?拆分巨型应用,使应用方便迭代更新兼容历史应用,实现增量开发特点:独立部署 增量迁移 团队自治 松耦合代码优点:通过路由进行跨应用程序通信 解决了大型项目如何迭代的问题 解决了多团队技术栈不同的问题,实现react和Vue等框架整合实现方式:NPM式:子工程以NPM包的形式发布源码;打包构建发布还是由基座工程管理,打包时集成。

2022-02-22 11:07:07 390

原创 HTTP CORS

跨域资源共享 CORS 详解 - 阮一峰的网络日志

2022-02-21 18:36:57 137

原创 webpack 与 vite 对比

webpack vite 打包原理 把代码打包为立即执行函数,这个转换封装逻辑,代码量越大,打包时间越长 把模块区分为 依赖和源码,用 go写的 esbuild 去预构建 这些依赖,源码部分利用浏览器原生ESM的方式去提供出去。(浏览器请求源码时,vite进行了转换) 热更新 先编译打包,然后更新模块 不需要编译打包 生产环境 仍然需要打包,因为模块嵌套导入会导致网络开销。 打包之后可以进行 tree-shaking / 懒...

2022-02-21 16:33:47 549

原创 ESM(ESModule)和CJS(CommonJS)的区别

ES Module Common JS 输出值的引用 输出值的拷贝(浅拷贝) 编译时,输出接口 运行时加载 import和export这些关键字是在编译阶段就做了模块解析 模块解析发生在执行阶段,因为require和module本质上就是个函数或者对象,只有在执行阶段运行时,这些函数或者对象才会被实例化。因此被称为运行时加载 ...

2022-02-16 17:27:32 1069

原创 jwt 如何实现踢人,session 和 jwt 鉴权的区别

Session流程:1、登录2、服务端产生session并保存在内存中,并向客户端写入sessionId3、客户端请求,带上cookie中的sessionId4、客户端根据sessionId 去验证身份JWT流程:1、登录2、服务端根据用户信息,加密生成token,并返回给客户端3、客户端请求header里面带上token4、服务端根据带上来的token,用私钥解密,得到用户信息,验证身份区别:session机制是把一把钥匙保存在客户端,请求的时候

2022-02-14 15:53:00 1871

原创 Vue和React的比较

谁能大致说下vue和react的最大区别之处? - 知乎首先找到 Vue 和 React 的共性,它们被用于解决什么问题, 然后再挖掘各自独特的个性、设计原理以及未来…https://www.zhihu.com/question/309891718/answer/2282544794共同点Vue和React存在着很多的共同点:-数据驱动视图-组件化-都使用 Virtual DOM不同点Vue和React两者虽然都是用于构建用户界面的框架,但是也有很大的差异,首..

2022-02-11 18:57:09 2506

原创 Vue3和Vue2相比,新特性

参考官方文档:介绍 | Vue.jsVue.js - The 渐进式 JavaScript 框架https://v3.cn.vuejs.org/guide/migration/introduction.html#%E5%80%BC%E5%BE%97%E6%B3%A8%E6%84%8F%E7%9A%84%E6%96%B0%E7%89%B9%E6%80%A7

2022-01-25 16:08:08 841

原创 react native 一套代码开发多个应用区分不同渠道

Android多渠道productFlavors同时开发两个类似的app - 简书前言 最近有个需求,老板让开发一个新的app,新的app上的功能和老的app基本上完全一致,差异化的地方很少,那按照惯性思维,复制出一个老的app,然后改改色值,icon,s...https://www.jianshu.com/p/9d3dfdc5256cConfigure multiple flavor/schema for React Native Appshttps://blog.logicwind.com/ad..

2022-01-14 14:19:47 2234

原创 apk再签名,认领应用,签名命令

jarsigner -verbose -keystore 密钥库位置 -signedjar 签名后的apk 签名前的apk 别名

2021-10-28 15:30:56 88

原创 算法:零钱兑换

力扣https://leetcode-cn.com/problems/coin-change/给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。思路:动态规划求解/** * @param {number[]} coins 面额数组 [1,2,5,7] * @param {number}...

2021-09-29 11:04:28 197

原创 环形链表 II

力扣https://leetcode-cn.com/problems/linked-list-cycle-ii/给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。/** * Definition for singly...

2021-09-28 14:25:46 51

原创 删除排序链表中的重复元素 II

力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。var deleteDuplicates = function(head) { //定义一个虚拟节点 let dummyHead=new ListN...

2021-09-28 11:25:08 72

原创 验证二叉搜索树

力扣https://leetcode-cn.com/problems/validate-binary-search-tree/给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路:充分利用二叉搜索树各个节点的大小关系进行递归/** * Definition for a binary tree node. *

2021-09-23 11:48:19 61

原创 二叉树的中序遍历

力扣https://leetcode-cn.com/problems/binary-tree-inorder-traversal/给定一个二叉树的根节点root,返回它的中序遍历。/** * @param {TreeNode} root * @return {number[]} */ var inorderTraversal = function(root) { if(!root){ return [] } let res =[]...

2021-09-18 18:17:48 70

原创 最大正方形

力扣https://leetcode-cn.com/problems/maximal-square/在一个由'0'和'1'组成的二维矩阵内,找到只包含'1'的最大正方形,并返回其面积。//可以使用动态规划降低时间复杂度。我们用dp(i,j)表示以(i,j)为右下角,//且只包含1的正方形的边长最大值。//如果我们能计算出所有dp(i,j)的值,//那么其中的最大值即为矩阵中只包含1的正方形的边长最大值,其平方即为最大正方形的面积。...

2021-09-18 17:35:26 60

原创 算法:路径总和 II

力扣https://leetcode-cn.com/problems/path-sum-ii/给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。var pathSum = function(root, targetSum) { let result=[] dfs(root,targetSum,[]) function dfs(root,targetSum,path){ ...

2021-09-17 12:04:36 136

原创 算法:路径总和

力扣https://leetcode-cn.com/problems/path-sum/给你二叉树的根节点root 和一个表示目标和的整数targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。var hasPathSum = function(root, targetSum) { if(!root){ return false } let nodeList=[],valueLis...

2021-09-16 20:41:57 90

原创 x 的平方根

力扣https://leetcode-cn.com/problems/sqrtx/给你一个非负整数x,计算并返回x的平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去 。//二分法求 平方根var mySqrt = function(x) { let n =Math.ceil( x/2) if(n===1) return n let start=0,end=n while(start<=end){ ...

2021-09-16 17:00:36 50

原创 从前序与中序遍历序列构造二叉树

力扣https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/给定一棵树的前序遍历preorder与中序遍历inorder。请构造二叉树并返回其根节点。

2021-09-16 11:43:01 64

原创 对称二叉树

力扣https://leetcode-cn.com/problems/symmetric-tree/给定一个二叉树,检查它是否是镜像对称的。var isSymmetric = function(root) { return check(root,root) // 每次用两个指针做判断 // 先判断两节点的存在情况对结果的影响 // 再判断两节点的值是否相等 // 最后对两节点镜像位置的孩子递归重复以上步骤 function ch

2021-09-15 15:21:37 71

原创 反转链表(其中部分片段反转)

力扣https://leetcode-cn.com/problems/reverse-linked-list-ii/给你单链表的头指针 head 和两个整数left 和 right ,其中left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。var reverseBetween = function(head, left, right) { // 设置 dummyNode 是这一类问题的一般做法,使用虚拟头节点可以...

2021-09-14 17:09:11 444

原创 算法:合并区间

https://leetcode-cn.com/problems/merge-intervals/以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。解题思路:排序+合并 参见官方解答思路/** * @param {number[][]} intervals * @return {number[][]} */var...

2021-09-13 17:05:27 61

原创 求根节点到叶节点数字之和

力扣https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。/** * Definition for a binary tree nod

2021-09-13 15:54:38 152

原创 全排列:回溯法

https://leetcode-cn.com/problems/permutations/给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。var permute = function(nums) { const res = [], path = []; backtracking(nums, {}); return res; function backtracking(nums, used) {...

2021-09-07 14:33:54 111

原创 二叉树的层序遍历

https://leetcode-cn.com/problems/binary-tree-level-order-traversal/给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。var levelOrder = function(root) { if(!root){ return [] } let result=[] let stack=[root] while(st..

2021-09-06 17:51:10 45

原创 环形链表的判断

https://leetcode-cn.com/problems/linked-list-cycle/给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。如果链表中存在环,则返回true。 否则,返回false。var hasCycle = function(head) { if(!head || !head.next){ return false } let ...

2021-09-06 17:39:01 54

原创 算法:重排链表

https://leetcode-cn.com/problems/reorder-list/给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0→ L1→ … → Ln-1→ Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→ …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。/** * Definition for singly-linked list. * function ListNode...

2021-09-02 20:30:33 81

原创 下一个排列

https://leetcode-cn.com/problems/next-permutation/实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。/*解题方法:从数组尾部找一个大数和前面的一个小数进行交换得到下一个比较大的排列此外还需要了解一个定理:若数列不是单调递减,那么一定存在相邻升.

2021-09-02 18:04:55 56

hMailServer安装包

hMailServer安装包

2022-05-02

配置DKIM需要的(含OpenSSL、VC++2008和相关文件)

配置DKIM需要的(含OpenSSL、VC++2008和相关文件)

2022-05-02

Xamarin Android Circle ImageView 圆形图片实现

Xamarin Android Circle ImageView 圆形图片实现,完美实现,拿来即可用

2016-08-24

tab菜单单击时切换标签的例子

tab菜单单击时切换标签的例子,通用轻量级tab导航菜单

2014-04-20

QQ影音遥控器(windows phone)

说明: 本软件用于远程遥控电脑上QQ影音播放器的常规播放以及电脑关机等操作。 本软件包括手机端程序和电脑端程序,两者配合使用,缺一不可。

2013-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除