自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (2)
  • 收藏
  • 关注

原创 停更,欢迎访问个人github

https://github.com/peterroe

2021-11-27 15:32:59 323

原创 手把手教你利用js给图片打马赛克

效果演示Canvas简介这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript)不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性本手册提供完整的 getContext(“2d”

2021-05-14 22:51:33 2920 36

原创 隐私账号管理系统(c语言)

还在为记不住账号而苦恼吗?还在为忘记密码而绞尽脑汁吗?只要998!!!账号管理系统带回家下面进入正题:隐私账号管理系统:1需求分析: 对个人的账号信息进行记录和保护,已达到随时记录随时查询的目的。1.1问题提出: 计划写一个隐私信息管理系统,主要用来管理隐私信息。1.2本系统设计的知识点: 函数、结构体、文件、循环、分支、数组等。1.3功能要求:1)建立每个账号的编号,账号位置,账号描述,账号名以及密码2)修改账号信息3)删除账号信息4)查询账号信息,分为按部分账号名查找和按编号查找

2020-06-03 08:51:34 9721 21

原创 怎么手动彻底清除电脑上的广告弹窗

我们在电脑安装了一些软件之后,电脑经常会有一些广告弹窗出现,这些弹窗是下载安装软件之后在文件夹里面附带的。如:要想彻底清除这些软件,就要找到广告程序所在的目录,并删除它。方法如下:当广告弹窗出现的时候,不要急着关闭,呼出任务管理器,(Ctrl+Shift+Esc或者鼠标右键电脑窗口的任务栏,再找到任务管理器)鼠标右键广告弹窗,点击“转到进程”,系统会默认选中此广告弹窗,选中此程序,鼠...

2020-04-06 16:54:14 7503 2

原创 在docusaurus中使用Vue组件⚡

docusaurus,类似于Vuepress,是一个静态站点生成工具。但不同的是,使用docusaurus可以在文档中轻易混入React组件,很适合写React相关组件的文档,而Vuepress则是适合混入Vue组件。这就让我比较困惑,如果我想在我的博客中同时使用vue组件和react组件,二者都满足不了我的要求,于是决定自己摸索,在文档中同时使用两种组件初步目的是想把Vue组件封装成react组件,再让docusaurus渲染这个组件,不用自己写底层,省下一笔不小的功夫docusaurus官网的描述

2021-10-18 12:27:57 855

原创 前端新人必看的开发技巧之浏览器控制台

随便进入一个网页,按下F12,都将看到如下的控制台一、快速定位深层元素二、移动端调试在浏览器也能很好的模拟移动端的效果,可以切换不同的机型与大小三、css调试标签大小可通过右下角的矩形图可以直观看出,当前标签的width、height、padding、margin、position的大小(如果有的话,否则属性是auto或-)属性来源查看当一个标签被多个类修饰,我们也能看出究竟那些熟悉生效了,特别是有熟悉冲突的时候属性值调试我们不一定要修改代码来改变css,可以直接在浏览器调.

2021-08-17 21:20:52 2624

原创 阿里巴巴矢量字体转Image图片(建议收藏)

在开发微信小程序的时候,找tabber栏图片的时候,总是很难找到一套的,因为一张图片要两种颜色来切换,经过一番努力,终于找到了好的方法在阿里巴巴矢量库里面找到你想要的icon,并复制拷贝好两种不同的颜色如下:编辑:保存为副本:得到了两种颜色的图片:复制其中一个的svg的HTML标签:来到另一个网站:http://www.atoolbox.net/Tool.php?Id=690#/复制的格式例如:data:image/svg+xml,%3Csvg class=‘icon’.

2021-08-13 18:17:21 546

原创 1个小时就掌握了N数之和算法的秘诀

两数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在两个元素 a,b,使得 a + b = 0 ?请你找出所有和为 0 且不重复的二元组。注意:答案中不可以包含重复的二元组/*输入:*/ nums = [-1,0,1,2,-1,-4]/*输出:*/ [[-1,1]]示例 2:/*输入:*/ nums = [-6,3,0,2,1,0,-3]/*输出:*/ [[-3,3],[0,0]]示例 3:/*输入:*/ nums = [0]/*输出:*/ []..

2021-05-26 22:35:02 481 1

原创 js常见排序算法与Jest性能测试

算法简介冒泡排序冒泡排序(有时称为下沉排序)是一种简单的排序算法,它反复遍历LIT以进行排序,如果排序顺序不对(升序或降序),则将它们组合起来,并交换它们。在不需要交换的情况下,对列表进行遍历直到不需要交换,这表明列表已被排序。复杂度分析NameBestAverageWorstMemoryStable CommentsBubble sortnn²n²1YesJavaScript实现:function bubbleSort(array) { f

2021-05-16 17:33:45 565 4

原创 JavaScript --- 防抖与节流

引言:不管是面试中还是实际应用,防抖与节流都是我们比不可少的一门技能防抖例如?假如不操作电脑十分钟后,会触发熄屏函数,然后电脑会熄屏,但是我们如果在十分钟内操作了电脑,将会重新计时十分钟假如轮播图每过五秒会自动翻页,但是当我们手动点击翻页时,会重新计时五秒,防止突然跳两页的奇怪情况发生节流例如?许多网站当页面滚动到一定距离,会出现回到顶部的按钮,节流可以帮助我们减少触发滚动事件的次数提交按钮的时候,仍有部分人喜欢狂点按钮,节流可以让其不管点击多少次,在一定时间内只能生效一次防抖的经.

2021-05-05 19:28:34 316 3

原创 图解leetcode - 两数相加(难度中)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9],

2021-05-05 15:43:46 215

原创 JavaScript --- 代理与反射

引言: 代理与反射听起来像是javaScript不同于其他语言的独有特性,从某些方面来说,代理类似C++的指针,但这里先不讨论它的定义。接下来给出几个例子,就很容易理解了创建空代理let target = { name: 'lihua', age: 18, array: [1, 2, 6]}let handler = {}let proxy = new Proxy(target, handler)//证明proxy与target的属性引用的是同一块地址,哪怕是原始.

2021-04-24 21:38:48 744 10

原创 Node.js基础设计模式 --- 观察者模式

引言:在Node.js中使用的另一个重要和基本的模式是观察者模式,观察者模式也是平台的支柱之一,并且是使用node核心和用户模块的先决条件观察者定义了一个理想的解决方案,用于构建Node.js的反应特性,并且是回调的完美补充。下面给出一个正式的定义:观察者模式定义了一个对象(称为主体),当它的反应状态发生改变时,它可以通知一组观察者(或者监听者)与回调模式的主要区别是,主体实际上可以通知多个观察者,而传统的CPS回调通常将其结果传播给一个监听者,即回调EventEmitter类在传统的面向对

2021-04-18 15:28:08 617

原创 图解leetcode - 无重复字符的最长子串(难度中)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"

2021-04-18 12:21:45 257 1

原创 Node.js基础设计模式 --- 回调模式

引言回调是Node.js独特的编程风格印记。回调是被调用来传播操作结果的函数,这正是我们在处理异步操作时所需要的,它们会替代总是同步执行的return指令。JavaScript是一种很好的表示回调的语言,因为如你所见,函数首先是类对象,可以很容易的分配给变量,作为参数传递,从另一个函数调用返回或储存到数据结构。例如,在以往的语言特性中,我们总会认为return语句是一个函数的结束:function add(a, b) { return a + b}console.log(add(2, 3

2021-04-17 21:53:31 257 1

原创 Node.js哲学思想

引言:每个平台都有它自己的哲学:大众普遍接收的一套原理和准则,影响平台演化的一种做事思维,以及应用程序如何开发与设计。这些原则都不是被强加的,它们总是遵循常识的。不管怎样,当我们在设计程序的过程中需要灵感来源的时候,它们被证明是非常有用的小核心Node.js自身核心库建立在几个原则的基础上。其中之一是具有功能最小的集合,其余的留给所谓的用户品台。当你在Node环境下完成你的任务时,你多半会使用到如npm这样的工具,允许你扩展任意第三方包。模块的生态系统存在与核心库之外。这一原则对Node.

2021-04-17 20:57:24 183

原创 node实现微信小程序登录流程的代码描述(下)

在上一篇文章中,我们描述了如下图红线内的登录代码实现,主要步骤npm包安装自定义登录态与openId,session_key关联自定义登录态存入wx.setStoragewx.request()发起业务请求携带自定义登录态通过自定义登录态查询openid和session_key并验证合理性npm包安装接下来会用到如下包session用于储存cookie状态md5用于加密openid和session_keylet session = require('express-session').

2021-04-14 14:56:20 330

原创 node实现微信小程序登录流程的代码描述(上)

看看官方对于登录时的描述主要实现步骤wx.login()获取codewx.request()发送code到第三方服务器登录凭证校验接口,参数为appid、appsecret、code返回的session_key以及openid等由第三方服务器解密获得用户信息wx.login()获取code调用:wx.login({ timeout: 10000, success(s) { console.log(res) }})返回如下对象{ code: "073qmo0w.

2021-04-12 21:28:15 652

原创 Vue --- 区分vm.$data.msg、data.msg、vm.msg

上代码:<body> <div id="app"> {{msg}} </div> <script> let datas = { //声明一个名为data的对象 msg: "hello" } let vm = new Vue({ el: '#app', data: datas //把声明的date对象赋值给date属性 }) //现在,有三种方法可以获取到msg的值 console.log(datas

2021-01-16 21:32:19 1932

原创 An unhandled error has occurred inside Forge: An error occured while making for target: squirrel

项目场景:在使用electron打包的时候npm run make出现如下问题问题描述:例如:错误代码: An unhandled error has occurred inside Forge:An error occured while making for target: squirrelFailed with exit code: 1Output:���ڳ��Դӡ�my_electron_app.nuspec�����ɳ�

2021-01-09 10:01:52 8568

原创 盘点Ts与Js的不同 --- 类型

变量布尔需要注意TS有boolean和Boolean两种类型,Boolean是boolean的封装对象,Boolean对象的值是boolean类型//let a:boolean = new Boolean(1); 错误let b:boolean = Boolean(1); //正确枚举枚举值和枚举名相互映射enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};console.log(Days["Sun"] === 0); //trueco

2021-01-05 20:29:49 563 2

原创 为什么要学习TypeScript?

为什么要学习TypeScript?任何一门语言的诞生和发展都是有缘由的,从某种程度上来说,TypeScript的诞生是历史发展的必然,目前Web应用越来月复杂,必然导致JavaScript代码的快速增长由于目前各主流浏览器中的JavaScript引擎还没有完全实现ES6的特征,如JavaScript模块导入与导出和面向对象编程中的类与接口等,另外,JavaScript是一种动态语言,很难做到类型检查,这将导致很多JavaScript语法问题在编码阶段无法暴露,而只能在运行时暴露TypeScri

2020-12-29 22:39:30 504 1

原创 阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O、异步I/O

一、POSIX定义的同步与异步I/O:可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX)把同步I/O定义为导致进程阻塞直到I/O完成的操作,反之则是异步实际上操作系统大多数时候采用的都是同步I/O二、I/O是缓慢的I/O操作绝对是计算机操作中中最慢的,例如访问RAM可以达到纳秒(ns)级别,的传输速度一般为GB/s,而在磁盘或网络上访问时(I/O),消耗的时间级却是毫秒(ms)级别的,传输速度MB/s起步,乐观情况下能达到GB/s。

2020-12-25 19:52:15 428

原创 JavaScript --- 扩展操作符(...)

参数扩展与收集ES6新增了扩展操作符,使用它可以非常简洁地操作和组合集合数据,可以在接收参数或传递参数时使用场景一:把数组分为单个参数(扩展参数)let arr = [25, 65, 12, 77,38];function getsum() { //arguments伪数组会默认接收到所有参数 let sum = 0; for(let i = 0; i < arguments.length; i++) { sum += arguments[i]; }}/*下面的两个操作是等

2020-12-25 12:02:12 837

原创 MongoDB> 在Node.js中导出文档

事先已经在playground集合里面存好了文档新建:Mongo.js://导入第三方包let mongoose = require("mongoose");//连接mongodbs数据库的自己创建的playground集合mongoose.connect("mongodb://localhost/playgroung", { useUnifiedTopology: true,useNewUrlParser: true}) .then(value => { console.log("

2020-12-13 18:17:25 449

原创 Promise使用,看完你一定会有所收获

测试环境为Node.js/谷歌浏览器,如若没有声明,默认环境为Node.js在Promise语法出现前,我们是这样使用具有依赖关系的异步函数的,以读取文件内容为例:let fs = require("fs");fs.readFile('./1.txt','utf-8',(err, result1) => { console.log(result1); fs.readFile('./2.txt','utf-8',(err, result2) => { console.log(r.

2020-12-08 11:23:44 199

转载 Node.js>readline模块的使用

什么是readlinereadline允许从可读流中以逐行的方式读取数据,比如process.stdin等。在node.js命令行模式下默认引入了readline模块,但如果是使用node.js运行脚本的话,则需要自己通过require(‘readline’)方式手动引入该模块。怎么使用readline创建实例首先、创建一个接口实例,提供一个Object类型的参数。参数如下:input: 监听的可读流(必需)output: 写入readline的可写流(必需)completer: 用于 Ta

2020-12-02 22:36:51 1340

原创 Git基本原理介绍(三)--index暂存区

上集我们说到在执行git add ~命令后,.git目录下会生成两个文件一个是objects下的blob对象另一个是index文件我们已经知道blob对象存取了提交文件的内容,而今天要介绍的index文件,如我们猜想,里面存取了文件的名字直接输入cat .git/index,打印的虽然是一串乱码,但是我们还是能在其中找到我们的文件名,也就是new.txt和file.txtgit帮我们提供了一个命令可以方便的查看index区的文件名git ls-files如果想查看文件名和文

2020-12-02 12:33:43 1078

原创 Git基本原理介绍(二)--git add的背后

使用git init初始化之后先来看看.git目录下所有的文件 ls -R .git,通过这个命令可以看到递归显示.git目录下的所有文件在对文件进行修改之后,我们可以通过git status命令查看文件的变化情况,这里简单地以新建一个new.txt为例,内容为hello world观察到有一个未跟踪的文件new.txt,此时我们.git目录下的文件不会有任何变化但是当我们使用git add命令之后再次使用 ls -R .git查看,发现.git目录下较之前多了两个文件夹一个是.gi

2020-12-01 23:26:36 453

原创 Git基本原理介绍(一)--代码仓库初始化

初始化代码仓库,我们生成了一个.git的隐藏文件可以看到在.git目录下有一个config文件,我们可以把它看为代码仓库的一个配制文件,它和我们全局配制的.gitconfig文件略有不同我们查看一下config文件里面的内容:这时间我们看另一个文件:在用户根目录下面也有一个配制文件,这个.gitconfig存储着git的全局配制文件最开始我们配制git用户的时候就输入过如下指令:git config --global user.name "youname"设置用户git confi

2020-12-01 11:09:14 441

原创 原生JavaScript APIs基础回顾

1. API 和Web API什么是API?API是给程序员提供的一种工具,以便能更轻松的实现想要完成的功能什么是Web API?Web API是浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM)2.DOM简介2.1什么是DOM文档对象模型(Document Object Model),是W3C组织推荐的可处理扩展标记语言(HTML或者XML)的标准编程接口2.2 DOM树文档: 一个页面就是一个文档,DOM中使用document表示元素: 页面中所有标签都是元素,DO

2020-11-08 14:20:46 252 2

原创 Vue框架入门(二)---图书管理

涉及知识:HTML、CSS、JavaScriptVue(具名插槽、组件注册、侦听器、生命周期、自定义属性、父子组件传值、组件插槽、计算属性)Gitee仓库 :https://gitee.com/vgtime123/ManageBookGitee Pages:http://vgtime123.gitee.io/managebook完整代码:<!DOCTYPE html><html> <head> <meta charset="utf-8" .

2020-11-04 21:49:15 281

原创 最新解决Vue-Devtools工具的安装方法

进入Vue官方文档网站:https://cn.vuejs.org/v2/guide来到github主页,复制如下地址任意在电脑上新建一个文件夹,在此处打开git Bush(电脑中须提前安装git)把刚才复制的仓库地址的文件克隆到本地,注意,这里要克隆v5.1.1版本的需要等待一定时间,如下代表克隆完成进入该文件夹,看到如下视图接着按住键盘shift键,右键鼠标打开powershell窗口,输入npm install回车(这里需要提前安装Node..

2020-11-02 15:57:42 1534

原创 一句代码从刷网课的劳累中解脱

原理:网页中的视频存放地址一般都是在<video>标签中,先来找找看它的位置video标签有很多属性,我们可以通过自己写一段代码,打印出它的属性<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <script src="js/vue.js" type="text/javascript" charset=

2020-10-30 21:43:54 6619 9

原创 Vue框架入门(一)---开发简易计算器

涉及知识:HTML、CSSVue(v-for、v-model、v-on、v-clock)开发简易计算器目录目标代码sty.css:index.html:calcu.js:搭建骨架添加外观改用Vue框架完整代码使用测试目标代码sty.css:* { margin: 0; padding: 0; box-sizing: border-box; /*引入盒子模型*/}body { background-color: antiquewhite;}[v-cloak]{ .

2020-10-29 14:43:48 723 1

原创 JavaScript -- Array进阶详解

测试宿主环境均为Node.js文章目录前言一、创建数组二、使用步骤1.引入库2.读入数据总结前言除了Object之外,Array应该ECMAScript中最常用的类型了,但和其他语言不一样,ECMAScript中的数组长度是可变的,而且由于ECMAScript的弱类型,这也使得数组Array中存取的类型可以是混杂的,例如数组的第一个元素可能是number类型,第二个可能是string类型,第三个可能又是Object,但通常我们不会这么做,更多地是使用统一的规范一、创建数组我们来看两种有意思的

2020-10-24 09:02:40 301

原创 JavaScript包装对象简介

什么是包装对象?存取字符串、数字或布尔值的属性时创建的临时对象称作包装对象哪里会使用到包装对象?不知道你是否会注意到我们平时在操作字符串时注意到如下现象我们看到普通的的字符串变量竟然有属性和方法:var str = 'hello world';var s = str.substring(2, str.length - 2);我们知道,只有对象才有属性和方法,字符串既然不是对象,为什么它会有属性呢?只要引用了字符串str的属性,JavaScript就会将字符串值通过调用new Stri

2020-09-20 09:44:33 287

原创 打造你的专属印章(c语言)

制作原理我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。56点阵汉字用56 x 56 = 3136个像素点来描绘。当我们需要记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规则,其中GB2312的编码规则是:一个汉字用两个字节表示,前一个字节表示区号,

2020-09-01 11:01:09 3116 3

原创 原生JavaScript基础篇再回顾

1.JavaScript简介1.1 JavaScript是什么1.JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言2.脚本语言:不需要编译,运行过程由js引擎逐行来解释并执行3.现在也可以基于Node.js技术进行服务器编程1.2 JavaScript的作用1.表单动态校验(例如密码强度检测)(js最初产生的目的)2.网页特效3.服务端开发(Node.js)4.桌面程序(Electron)5.App(Cordova)6.控制硬件-物联网(Ruff)7.游戏开

2020-08-27 11:30:50 604

转载 实例讲解JavaScript中instanceof运算符的用法

instanceof 运算符简介在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。ECMAScript 引入了另一个Java运算符instanceof来解决这个问题。instanceof 运算符与 typeof运算符相似,用于识别正在处理的对象的类型。与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。例如:清单

2020-08-26 22:45:18 309

XingKai56.txt

我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。 瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。56点阵汉字用56 x 56 = 3136个像素点来描绘。 当我们需要记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规则,其中GB2312的编码规则是:一个汉字用两个字节表示,前一个字节表示区号,后一个表示区中的偏移序号。

2020-06-04

LiShu56.txt

我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。 瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。56点阵汉字用56 x 56 = 3136个像素点来描绘。 当我们需要记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规则,其中GB2312的编码规则是:一个汉字用两个字节表示,前一个字节表示区号,后一个表示区中的偏移序号。 每个区有94个汉字。区号和序号的编码都是从 0xA1开始(为了避免和西文冲突)。已知某个汉字的GB2312编码,就可以计算出它在二进制字模文件中所在的绝对位置。我们在本次课程设计中,不用二进制字模文件。而是用文本文件LiShu56.txt,因为其中的点阵信息非常形象直观,适合我们这些C的初学者。

2020-06-02

空空如也

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

TA关注的人

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