- 博客(38)
- 收藏
- 关注
原创 使用Github Actions自动化发布npm包的探索
最近编写了一个封装了前端存储 API 的工具库,准备将它发布在 npm 上方便以后使用,不过如果每次都手动从本地打包发布的话就会非常麻烦,因此这次尝试一下自动化发布。
2021-05-28 17:28:18
540
原创 浅谈src与href的区别
src 和 href 都是用来引入外部资源的属性,例如:图片、视频、CSS 文件、JavaScript 文件等。那么它们两者之间究竟有什么样的区别呢?
2021-05-09 18:37:18
4448
原创 Chrome插件开发入门
最近学习了Chrome插件的开发,总体来说上手还是很容易的,因为浏览器插件本质上依旧是网页,写几个demo基本就了解了他的开发过程。完整项目:xmy6364/chrome-extension-getimage什么是Chrome插件正如开头所说的,Chrome插件实际上就是一个网页,由HTML、CSS、JS、图片等资源组成,与网页不同的是,Chrome插件是用来增强浏览器功能的,同时它还有一套属于自己的开发规则和API。每个插件都由不同的组件构成,这些组件大都包括background scrip
2021-04-18 17:32:33
761
原创 使用Webpack构建多页面程序
使用webpack搭建单页面程序十分常见,但在实际开发中我们可能还会有开发多页面程序的需求,因此我研究了一下如何使用webpack搭建多页面程序。
2021-03-15 20:43:59
373
原创 React Native中使用Markdown编辑器
最近在研究`React Native`,准备用它写一个笔记APP,但是并没有搜到很好用的编辑器插件,因此准备使用`WebView`和已有的Web端编辑器自己封装一个。
2021-02-17 22:19:28
565
原创 实现一个简单的静态博客生成器
作为一名程序员,写博客是积累知识、提升水平必不可少的一个方法。我们写博客主要有三种方法,一种是使用掘金、博客园、CSDN等博客网站,第二种是自己搭建网站,存放自己的博客,第三种就是使用静态博客生成器,将生成的网页部署到服务器或者github pages、gitee pages等服务上。这三种方法中,第一种自由度太低,并且定制样式很麻烦;第二种每写一篇博客都要新建个页面,非常麻烦。因此我选择了第三种方法,在使用了hexo、vuepress,gridea等多种静态博客生成器后,我决定自己写一个来提升自己的能
2021-02-08 10:46:27
564
原创 使用 webpack 手动搭建 vue 项目
webpack 是一个前端工程化打包工具,对于前端工程师来说 webpack 是一项十分重要的技能。下面我们就通过搭建一个 vue 项目来学习使用 webpack
2020-12-07 20:39:07
443
原创 使用Github Actions将Vue项目部署到Github Pages
GitHub Actions 是 GitHub 的持续集成服务,是一个非常强大的功能,用它可以实现很多自动化功能。现在我们来使用Github Actions将我们做好的Vue项目部署到Github Pages上。
2020-11-16 23:35:31
491
原创 TypeScript实现设计模式——生成器模式
生成器模式是一种在TypeScript/JavaScript中非常常见的创建型设计模式,它使你能够分步骤创建复杂对象。当你需要创建一个可能有许多配置选项的对象时, 该模式会特别有用。
2020-09-28 18:14:45
146
原创 在express中使用ES7装饰器构建路由
在express中使用ES7装饰器构建路由在Java的Spring框架中,我们经常会看到类似于@Controller这样的注解,这类代码能够极大的提高我们代码的可读性和复用性。而在Javascript的ES7提案中,有一种新的语法叫做decorator,它能够在Javascript中实现与注解相同的功能。@tuzilow/express-decorator@tuzilow/express-decorator是由本人开发的一个简单的express装饰器包,具有@Controller、@RootUrl、
2020-09-12 20:47:30
511
原创 深入学习JavaScript数据类型
数据类型是我们学习`JavaScript`时最先接触的东西,它是JavaScript中最基础的知识,这些知识看似简单,但实则有着许多初学者甚至是部分学习了多年JavaScript的老手所不了解的知识。
2020-07-10 17:38:01
225
1
原创 使用Typescript和React重构CNode社区
一个React和Typescript的练手项目,后台调用CNode社区提供的API,功能基本完成。等以后水平提高了会考虑重构本项目,并且增加移动端适配。
2020-07-05 10:34:44
229
原创 LeetCode刷题记录(1)
LeetCode刷题记录(1)使用语言: JavaScript。从简单题开始写的,只放上了代码,没有写思路。两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]/**
2020-07-05 10:33:17
300
原创 TypeScript实现设计模式——观察者模式
观察者模式是一种行为设计模式,允许一个对象将其状态的改变通知其他对象。观察者模式提供了一种作用于任何实现了订阅者接口的对象的机制, 可对其事件进行订阅和取消订阅。
2020-07-05 10:31:55
272
原创 TypeScript实现设计模式——策略模式
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。——《大话设计模式》
2020-07-05 10:30:26
316
原创 TypeScript实现设计模式——工厂模式
TypeScript实现设计模式——工厂模式上回用typescript实现了单例模式,这回来实现工厂模式。工厂模式又分为简单工厂模式、工厂方法模式以及抽象工厂模式。简单工厂模式简单工厂模式通常在业务比较简单的情况下使用,它有三个部分组成:工厂类、抽象产品类、具体产品类。抽象产品类abstract class Pizza { public abstract show(): void; public abstract cut(): void;}具体产品类class KFCPizza
2020-07-05 10:29:00
315
原创 TypeScript实现设计模式——单例模式
单例模式的目的是限制一个类只能被实例化一次,提供一个全局的访问点。单例模式又被分为懒汉单例模式和饿汉单例模式,懒汉单例模式就是在第一次调用时实例化,饿汉单例模式是类加载时就实例化。
2020-07-05 10:27:05
4011
原创 nodejs爬虫--抓取CSDN某用户全部文章
nodejs爬虫–抓取CSDN某用户全部文章最近正在学习node.js,就想搞一些东西来玩玩,于是这个简单的爬虫就诞生了。准备工作node.js爬虫肯定要先安装node.js环境创建一个文件夹在该文件夹打开命令行,执行npm init初始化项目正式开始安装依赖express 用来搭建一个简单http服务器,也可以使用node原生apicheerio 相当于node版的jQuery,用来解析页面superagent 用来请求目标页面eventproxy 解决同时处理多个页面的问题
2020-07-05 10:24:06
219
原创 利用PicGo、GitHub和jsDelivr搭建图床
一个高速稳定的图床对于每一个写博客的人来说都很重要,之前大部分人的选择可能都是利用微博搭建图床,但是从2019年4月开始微博开启了防盗链,导致所有依赖微博图床的图片全部无法显示。利用PicGo将图片上传到GitHub仓库,再使用jsDelivr优化对于我们来说会是一个不错的选择。
2020-07-05 10:21:17
1467
原创 Git学习记录(一)
Git学习记录(一)本篇文章介绍Git的本地使用Git是什么?Git是世界上最先进的分布式版本控制系统。那么什么是版本控制系统?我们来举个例子,假设我创建了一个项目Project.1,里面写了一个README.txt文档、一个code1.cs和一个code2.cs,第二天我突然想改进一下版本,但是我们不能直接在这个项目里改,因为如果直接在这里面改,我们要是想要退回去的话就会很麻烦,因为我们可能记不住上一个版本里面的代码是什么样子的,而且改代码这个东西经常是改一个地方就要将许多地方一同改掉。所以,
2020-07-05 10:19:37
244
原创 JavaScript闭包
闭包是JavaScript中的一个难点,同时也是它的特色,JavaScript的很多高级应用都要依靠闭包来实现。以下是我学习闭包的记录,希望对你有些帮助。
2020-07-05 10:18:35
88
原创 T-SQL学习笔记
T-SQL学习笔记学习T-SQL时记录的笔记,记得并不全也不详细if和while语句declare @age intselect @age = DATEDIFF(year,stuAge,getdate()) from TbStudent where stuName = '孙悟空'if(@age>=18)begin --必须有begin..end print N'已成年'endelsebegin print N'未成年'enddeclare @sum intset @s
2020-07-05 10:16:53
208
原创 HtmlAgilityPack+Selenium爬取需要拉动滚动条的页面内容
C# HtmlAgilityPack+Selenium爬取需要拉动滚动条的页面内容现在大多数网站都是随着滚动条的滑动加载页面内容的,因此单纯获得静态页面的Html是无法获得全部的页面内容的。使用Selenium就可以模拟浏览器拉动滑动条来加载所有页面内容。前情提要C#HtmlAgilityPack爬取静态页面Selenium简介Selenium是一个WEB自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),
2020-07-05 10:15:20
510
原创 C# HtmlAgilityPack爬取静态页面
C# HtmlAgilityPack爬取静态页面最近对爬虫很感兴趣,稍微研究了一下,利用HtmlAgilityPack制作了一个十分简单的爬虫,这个简易爬虫只能获取静态页面的HtmlHtmlAgilityPack简介HtmlAgilityPack是一个解析速度十分快,并且开源的Html解析工具。HtmlAgilityPack支持使用Xpath解析Html,能够帮助我们解析Html文档就像解析Xml文档一样轻松、方便。HtmlAgilityPack官网HtmlAgilityPack的Github
2020-07-05 10:14:04
219
原创 JS实现可用滑块滑动的缓动图
JS实现可用滑块滑动的缓动图尝试模仿京东的“发现好货”模块的可用滑块滑动的缓动图JS代码function $(id) { return document.getElementById(id); }//缓动轮播图var fhTimer;var fhNum = 0;var barNum = 0;fhTimer = setInterval(marquee, 20);function marquee() { fhNum--; barNum = fhNum; if(fhNu
2020-07-05 10:11:32
632
原创 搭建hexo静态博客
搭建hexo静态博客使用hexo搭建博客,并将博客部署到github需要的工具Node.jsGit一个Github账号正式开始在任意目录下新建一个文件夹,如blog,在该文件夹下右键打开git bash here,执行npm install -g hexo-cli,安装hexo执行hexo init执行npm install根据提示依次执行npm audit fix和npm audit fix --force执行hexo g,生成博客执行hexo s后,可以在 http://
2020-07-05 10:09:58
133
原创 C# 封装SqlHelper
C# 封装SqlHelper老师在讲C#实战项目时所使用的SqlHelper,使用的数据库是SQL Server注意,连接数据库的连接字符串需要在配置文件中设置好<appSettings> <add key = "connString" value="data source = .; database = CourseSelectionInfo; integrated security = true"/></appSettings>public cl
2020-07-05 10:07:51
274
原创 利用JavaScript实现倒计时
利用JavaScript实现倒计时利用JS中的Date对象即可实现,创建目标时间和当前时间,利用getTime函数将两个时间转换成距离1970-01-01的秒数,相减后转化为年月日即可利用JS中的Date对象即可实现js代码<script> window.onload = function() { setInterval(function() { var nowTime = new Date();//获取当前时间
2020-07-05 10:04:48
5828
原创 C#中使用XML存储数据
C#中使用XML存储数据使用微软所封装的XML方法创建XML文档首先引用System.Xml命名空间1.初始化一个实例XmlDocument xd = new XmlDocument();2.创建XML头文件声明XmlDeclaration xdt = xd.CreateXmlDeclaration("1.0", "utf-8", null);xd.AppendChild(xdt);3.创建唯一根节点XmlElement Students = xd.CreateElement("S
2020-07-05 10:02:55
1915
原创 PTA-字符串的冒泡排序
我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。输入格式:输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。输出格式:输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。输入样例:6...
2018-12-27 21:50:07
1690
原创 PTA-查找指定字符
本题要求编写程序,从给定字符串中查找某指定的字符。输入格式:输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。输出格式:如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。输入样例1:mprogramming输出样例1:index = 7...
2018-12-27 21:47:26
9775
1
原创 PTA-数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N...
2018-12-27 21:44:13
1213
原创 PTA-藏尾诗
输入格式:输入为一首中文藏尾诗,一共四句。每句一行,但句子不一定是等长的,最短一个汉字,最长九个汉字。注意:一个汉字占两个字节。输出格式:取出每句的最后一个汉字并连接在一起形成一个字符串并输出。同时在末尾输入一个换行符。输入样例:悠悠田园风然而心难平兰花轻涌浪兰香愈幽静输出样例:风平浪静#include<stdio.h>#include&l...
2018-12-27 21:42:11
1583
原创 PTA-求幂之和
本题要求编写程序,计算sum=+++⋯+。可以调用pow函数求幂。输入格式:输入在一行中给出正整数n(≤10)。输出格式:按照格式“result = 计算结果”输出。输入样例:5输出样例:result = 62#include<stdio.h>#include<math.h>int main (){ int sum=...
2018-11-23 20:20:40
9925
3
原创 PTA-猜数字游戏
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包...
2018-11-23 20:13:30
4445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人