此文是对js高级程序设计一书难点的总结,也是笔者在看了3遍之后的一些梳理和感想,希望能借此巩固js的基础和对一些核心概念有更深入的了解。 摘要 js基本的数据类型和关键点 变量,作用域和内存问题 垃圾回收机制 面向对象的程序设计 实现类与继承的经典方式
今天给大家介绍的主要是我们全栈CMS系统的未讲解完的后台部分和前台部分,如果对项目背景和技术栈不太了解,可以查看我公众号之前的文章。 摘要 本文将主要介绍如下内容: 实现自定义的koa中间件和restful API koa路由和service层实现
今天给大家介绍的主要是我们全栈CMS系统的后台部分,由于后台部分涉及的点比较多,我会拆解成几部分来讲解,如果对项目背景和技术栈不太了解,可以查看我的上一篇文章 这篇文章除了会涉及node的知识,还会涉及到redis(一个高性能的key-value数据库),前端领域的j
作为一名前端开发工程师,我们平时除了对javascript,css,html的积累之外,还需要对http,浏览器渲染原理甚至后端的一些知识有所了解,这样对自己职业发展才会更有帮助。 项目背景 由于本人对前端领域非常感兴趣,接触到前端的时间
本文是继上一篇文章 所以写这篇文章的目的一方面是对自己工作中一些css高级技巧的总结,另一方面也是希望能教大家一些实用的技巧和高效开发css的方式,以提高在工作中的效率。 我们将学到 box-shadow的高级应用 制作自适应的椭圆 纯css3
由于笔者之前维护了几个比较老的项目是用jquery全家桶开发的,其中有些需求是需要跨页面交互和父子页面通信,故借此总结一下。另一块是前端实现文件下载功能,虽然方法很多,为了不用重复造轮子,在此还是总结一波,毕竟多页面下的应用场景还是很多的。 文
递归和尾递归 简单的说,递归就是函数自己调用自己,它作为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。一般来说,递归需要有边界条件、递归前进阶段和递归返回阶段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积,又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 。 例子 假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b
让我们一起来探讨js数据结构中的树。这里的树类比现实生活中的树,有树干,树枝,在程序中树是一种数据结构,对于存储需要快速查找的数据非有用,它是一种分层数据的抽象模型。一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点以及零个或多个子节点。如下所以为一个树结构:)
本文主要介绍用canvas实现图形验证码的一些思路以及如何用javascript面向对象的方式更友好的实现canvas的功能,关于canvas的一些基本使用方法和API我整理了一个思维导图,大家感兴趣的可以参考学习。 你将收获 闭包的使用 c
本文主要介绍如何使用原生javascript和Css3来实现一个在各大移动应用中经常出现的转盘游戏,由于改实现可以有不同方式,如果熟悉canvas的话也可以用canvas实现,本文采用js和css实现主要考虑到复杂度较小性能较好,所以如果有更好的方案,也可以随时和我交流。 前言
前言 本文将带大家一步步实现一个H5拼图小游戏,考虑到H5游戏的轻量级和代码体积,我没有使用react或vue这些框架,而采用我自己写的dom库和原生javascript来实现业务功能,具体库代码可见我的文章如何用不到200行代码写一款属于自己的js类库,构建工具我采用了自己
本文主要总结了笔者在多年前端工作中的技术方案选型,结合各种不同类型的项目,搭建了一套完整的前端集成解决方案,主要包含如下内容: 于vue-cli3搭建的vue+vue-router+vuex+elementUI/antd/mint+stylus/less/scss的单/多页项目
本文主要解决原生localStorage无法设置过期时间的问题,并通过封装,来实现一个操作便捷,功能强大的localStorage库,关于库封装的一些基本思路和模式,我将采用之前写的如何用不到200行代码写一款属于自己的js类库中类似的方法,感兴趣的朋友可以学习,交流。 设计思路
本文将会介绍如何使用gulp4来搭建项目脚手架,如果您还在使用gulp3或更老的版本,您也以通过本文的一些思想将之前的项目进行完善,更新。如果gulp不是你们团队的重点,也可以移步我的另一篇文章: 用 webpack 4.0 撸单页/多页脚手架 (jquery, react, vue, typ
前言 JavaScript 的核心是支持面向对象的,同时它也提供了强大灵活的 OOP 语言能力。本文将使用面向对象的方式,来教大家用原生js写出一个类似jQuery这样的框架。我们将会学到如下知识点: 闭包:减少变量污染,缩短变量查找范围 自执行函数在对象中的运用 extend
本文主要介绍shell脚本的一些基本用法以及在前端项目中的应用。将围绕以下几点来展开: shell基本用法(变量,循环,传参,运算符,流程控制等) 使用shell脚本自动将项目打包部署到git服务器 使用nodeJs编写命令行工具 1. shell基本介绍及用法
前言 本文总结了项目开发过程中常用的js函数和正则,意在提高大家平时的开发效率,具体内容如下: 常用的正则校验 常用的设备检测方式 常用的日期时间函数 跨端事件处理 js移动端适配方案 xss预防方式 常用的js算法(防抖,截流,去重,排序,模板渲染,观察者..
本文主要介绍如何使用原生js,通过面向对象的方式实现一个文件上传预览的组件,该组件利用FileReader来实现文件在前端的解析,预览,读取进度等功能,并对外暴露相应api来实现用户自定义的需求,比如文件上传,进度监听,自定义样式,读取成功回调等。 组件设计架构如下: 涉及的核心知识点如下:
UDP(User Datagram Protocol,用户数据报协议)是一种简单的、不可靠的通信协议,它只负责将数据发出,但不保证它们能否到达目的地,之所以不可靠是由于以下几个原因:1.没有顺序控制,当数据包乱序到达时,没有纠正功能。2.没有重传控制,当数据包丢失时,不会重发。3.UDP在通信开始时
牛牛要起飞(https://ac.nowcoder.com/acm/contest/9854/B)昨天临场没找好这个题的状态,看了上一位的dp题解,我重新构思了一个可以压缩到一维状态dp数组。a数组的元素无论加减b元素,a的原数不变,先对a数组求和 再从b中挑取0-n个元素即可。 为什么开205的数
include <stdio.h>int main(void){int n, r, temp;scanf("%d %d", &n, &r);int a[101][3];for(int i=0;i<n;i++){for(int j=0;j<3
hello, 大家好,初次来到牛客网写博客,以前都是在csdn上分享的,一时半会写不了什么,那我就拿我的csdn中的博客开头吧(本篇原文出处https://blog.csdn.net/qq_43597130/article/details/84454480)(在开始阅读这篇文章前,不妨浏览下http
牛牛想起飞用bitset来记录可以得到的数,然后求得值为1的最高位就是答案 #include <bits/stdc++.h> using namespace std; #define Happy return #define New_Year 0 const int N = 1e5+5;
把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 数据范围:0<=m<=10,1<=n<=10。本题含有多组样例输入。这个题本来想着用排列组合求解的,然后发现我算的不太对,就算去重也是有问题
输入一个正整数,计算它在二进制下的1的个数。注意多组输入输出!!!!!!基本上都是比较简单的基础题,这里的话考察的是位与以及右移的用法,暂时想到的就是这么去做了。#include<stdio.h>int main(){ int n; while(scanf("%d&
配图来自Canva可画 2020年就要过去了,回首望去,今年最大的赢家,可能并不是一开始大家所预料的在线教育或者在线办公,而是去年最惨的新能源汽车行业。 在经历过一波大起大落之后,2020年已经可以被视为新能源汽车元年。蔚来董事长李斌非常认可“元年”的说法:“有的人讲今年是中国电动汽车的元年,我觉得
预期难度顺序 F J < D I G < B E A < C G A: 分析可知,当且仅当Z距离某一扇门的距离比H更近时才能逃脱,否则不能逃脱。 可以对两扇门分别跑一次深度优先搜索确定Z和H谁离这扇门更近。 code: #include<bits/stdc++.h>
人性其实只有两大痛点: 一个是愉悦,一个是恐惧。 愉悦感可以让人沉浸在一件事情当中干一万小时,成为高手,而恐惧带来的动力更加显著。——题记 这一年时间过的飞快,回首望去,不过是站在刀尖上跳舞,任何错误的抉择都不会有重新来过的机会。2020.1.1 上线了第一个微信小程序当我亲手完成并上架这个作
比赛地址:https://ac.nowcoder.com/acm/contest/9667 出题人题解:https://ac.nowcoder.com/discuss/575975 A-黑白边 知识点:并查集 优先选择黑边然后再选白边,选择条边可使图连通。 #include <map>
优 评价 差 稳定性 简单选择排序 O(n2) O(n2) O(n2)  
1、倍增算法 #include<bits/stdc++.h> #define MXN 50007 using namespace std; std::vector v[MXN];//图 std::vector w[MXN];//边权 int fa[MXN][31], cost[MXN][
#include <iostream> int main() { using namespace std; int N; cin >> N; // 输入键值对的个数 int sum[1000] = {0}; int index, va
福哥答案2021-01-01:这道题是我被大厂面试的题,但网上的答案太多了,故直接引用。 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 超文本传输安全协议)。HTTPS在传统的HTTP和TCP之间加了一层用于加密解密的S
目录 Pandas 使用以下语句导入 Pandas 库: Pandas 数据结构 Series-序列 存储任意类型数据的一维数组 DataFrame-数据框 存储不同类型数据的二维数组 输入输出 读取/写入CSV 读取/写入Excel 读取内含多个表的Excel 读取和写入 S
#include<iostream> #include<algorithm> #include<cstring> #include<stack> using namespace std; struct ss{ int v; int
include <stdio.h> int main(void){ printf("\(X_X)/ Says : "I can 100%% print this !""); return 0;} // ,%,"是转义字符
include <stdio.h> int a[201][201], b[201][201], sum[201][201];int main(void){ int n; scanf("%d", &n); for(int i=0;i<n;
include <stdio.h> include <string.h> int main(){ int i=0,flag=0,j=0,c1[5]= {0},c2[5]= {0},c3[5]= {0},p,max; char s[5][1001]; for(
问题描述 某工厂有 件物品需要进行加工,并且每件物品都需要先在 工厂加工 分钟,然后在 工厂加工 分钟,, 工厂每次分别只能加工一件物品,问你最少需要多少时间能够加工完全部 件物品 交换论证 假设有 件待完成事件,当前完成了 件,所花时间为 ,设当前先完成 事件再完成 事件的总时
class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { // 优先队列做法 复杂度nlogn // emplace可以直
题目:查找薪水变动超过15次的员工号emp_no以及其对应的变动次数tTABLE salariesemp_no ,salary ,from_date ,to_date ,要点:“薪水变动次数” t这里针对“薪水变动次数”的衡量可以采取不同方式计算。1)可以对同一emp_no下不同的salary计数。
A、创建和使用别名(便于应用程序能够引用计算字段)计算字段(常用功能)——对检索出的数据进行算术计算。例:表Orders 收到的所有订单;表OrderItems 每个订单中的各项物品;列 prod_id 产品编号列 item_price 包含订单中每项物品的单价; 要求:汇总产品编号为20008的物
从个位开始依次统计每一位有多少个1 一共有n个数含有个位(必然都有个位),每10个数一个周期,每个周期内有1个1 一共有n-9个数含有十位(n减去一位数的数量),每100个数一个周期,每个周期内有10个1 一共有n-9-90个数含有百位,每1000个数一个周期,每个周期内有100个1... 代码如
include <stdio.h> include <math.h> int main(){ int t, a=0, b=0, sum; char g[101]; scanf("%d", &t); getchar();
库 OS func Chdir(dir string)//error 将当前工作目录更改为dir目录 func Getwd()(dir string,err error) //获取当前目录,和linux中pwd类似 func Chomd(name string,mode FileMode)e
function instance_of(L,R){ const baseType = ['string','number','boolean','undefined','null','symbol']; if(baseType.includes(typeof L))
题目信息 tag:链表 哈希表 难易程度:中等 题目描述: 设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能 set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值 若opt=1,接下来两个整数x,
每日一题data:2021-01-02数组操作: 数组元素内部方法: push()方法 在元素最后一位后面添加一个或者多个,调用方式如下: //直接操作元素 arr = [1,2] function add(arr,item){ arr.push(item); } add(
#include<bits/stdc++.h> using namespace std; int main() { cout << "Happy New Year*2019*" << endl; return 0; }
解题思路参考代码中的注释: class Solution { //计算n!的末尾有多少个0,其实就是计算[1, n]区间上有几个5的倍数 //因为[1, n]
解题思路参考代码中的注释: /** * Definition for a binary tree node. * public class TreeNode {  
前言 如果说 TCP/IP 协议是互联网通信的根基,那么 HTTP 就是其中当之无愧的王者,小到日常生活中的游戏,新闻,大到双十一秒杀等都能看到它的身影,据 NetCraft 统计,目前全球至少有 16 亿个网站、2 亿多个独立域名,而这个庞大网络世界的底层运转机制就是 HTTP,可以毫不夸张的说,
#include<iostream> #include<algorithm> #include<vector> using namespace std; const int maxn = 1e6 + 11; int a[maxn], vis[maxn]; i
1.序 我们都知道在公司中都有代码管理,那么我们在进入公司实习也好,工作也好无论svn,git都是默认你会的,所以不会让你时间去看一遍,我在研一期间跟着师兄们做项目就开始用svn以及git。所以在实习期间在这一块就很顺心。以下分享以下公司必用的gitlab。 2.注册Gitlab账号 登录ht
1.序 我们在把这张图拿出来,Jdk8最大的一个特点之一就是Lambda表达式,它支持JAVA也能进行简单的“函数式编程”。我原本以为用的很少。结果实习才发现,用的很多,因为它真的特别省劲,而且很简洁。公司其实代码的宗旨就是功能,可读性,简洁性。所以不会的同学赶紧来喵喵吧,不然也会像我一样面临
1.序 2020/3/17日JDK14正式发版,但是现在大部分公司还是在使用jdk 8。所以我们今天继续聊聊jdk8。 2.jdk8 详解 2.1编程语言 2.1.1Lambda 表达式 Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。 举个例子 // Jav
StampedLock https://segmentfault.com/a/1190000015808032
ForkJoinPool https://blog.csdn.net/m0_37542889/article/details/92640903
1.序 今天为什么谈设计模式呢,因为设计模式对于我们找工作来说非常重要,记得我在面试华为的时候基本上把我知道的都讲了一遍,大概15-16种,因此给面试官留下了很好的印象,在面试其它的大公司的时候同样是这样,因为当时我花了很多时间把设计模式整理了一遍,所以因此受益,今天开始把每一种分享出来,今天先从
扫一扫,把题目装进口袋
扫描二维码,进入QQ群
扫描二维码,关注牛客网公众号