草庐IT

教你用JavaScript实现实时字符计数器

案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个实时字符计数器。用户在指定位置打字,程序实时显示字符数量。案例演示在编辑框内输入字符,下方实时记录数字,且输入有数量限制,输入超出限制的字符后就无法再继续输入。源码学习进入核心代码学习,我们先来看HTML中的核心代码。小院里的霍大侠有个小院-实时字符计数器字符数:字符总数:然后再让我们来看CSS代码,由于CSS代码不是重点且数量较多在这里就不做过多介绍。body{margin:0;display:flex;justify-content:center;height:100vh;al

typora 标题自动加编号

typora标题自动加编号目录typora标题自动加编号新建样式导入我修改好的cssenjoy网上看了挺多其他复制粘贴的方法,但是缺点都是第一级h1,都算进去了按照规范的markdown规范,一个md文件中只能出现一个h1,就是标题所以最大的编号应该就是h2,所以我拿来改了一下新建样式在Typora\themes目录下,新建一个base.user.css文件导入我修改好的css已经集成了标题自动编号,TOC目录自动编号,左侧导航栏自动编号编号默认从h2开始计算/**initializecsscounter*/#write{counter-reset:h1}h1{counter-reset:h2

typora 标题自动加编号

typora标题自动加编号目录typora标题自动加编号新建样式导入我修改好的cssenjoy网上看了挺多其他复制粘贴的方法,但是缺点都是第一级h1,都算进去了按照规范的markdown规范,一个md文件中只能出现一个h1,就是标题所以最大的编号应该就是h2,所以我拿来改了一下新建样式在Typora\themes目录下,新建一个base.user.css文件导入我修改好的css已经集成了标题自动编号,TOC目录自动编号,左侧导航栏自动编号编号默认从h2开始计算/**initializecsscounter*/#write{counter-reset:h1}h1{counter-reset:h2

Golang WaitGroup源码解析

GoWaitGroup源码解析结构体typeWaitGroupstruct{noCopynoCopystate1[3]uint32}其中state1代表三个字段:counter,waiter,semacounter:计数器,每次经过wg.Add(X)或者wg.Done()后的值waiter:调用wg.Wait()的数量,也就是等待者的数量sema:信号量,用于换醒Wait()函数退出WaitGroup的条件counter==0Add(n)更新counter的值。counter+=n判断当前counter>0||waiter==0,满足条件,说明当前还有groutine没有执行完,直接返回。走到

Golang WaitGroup源码解析

GoWaitGroup源码解析结构体typeWaitGroupstruct{noCopynoCopystate1[3]uint32}其中state1代表三个字段:counter,waiter,semacounter:计数器,每次经过wg.Add(X)或者wg.Done()后的值waiter:调用wg.Wait()的数量,也就是等待者的数量sema:信号量,用于换醒Wait()函数退出WaitGroup的条件counter==0Add(n)更新counter的值。counter+=n判断当前counter>0||waiter==0,满足条件,说明当前还有groutine没有执行完,直接返回。走到

openwrt 断网重启检测脚本

背景openwrt有些固件不太稳定,会时不时的断网,导致家里无法上网,遇到这种情况只能手动重启openwrt设备,该操作不方便,作为一个极客爱好者,那肯定是要实现自动化处理的了,写一个简单的脚本加入到crontab定时任务中,就可完全自动化检测了,解放双手。脚本思路1、ping指定域名5次,只要要有2次以上的包响应,才表示网络畅通2、如果低于2次,则视为网络不通,重启网络,并等待20秒3、再次检测网络如果还是网络不通的话,则重启openwrt服务4、当连续失败计数大道10次以上,则重启次数改为10分钟,重复上述步骤,当网络畅通后,计数归零脚本#!/bin/bash#日志默认目录Log_DIR=

openwrt 断网重启检测脚本

背景openwrt有些固件不太稳定,会时不时的断网,导致家里无法上网,遇到这种情况只能手动重启openwrt设备,该操作不方便,作为一个极客爱好者,那肯定是要实现自动化处理的了,写一个简单的脚本加入到crontab定时任务中,就可完全自动化检测了,解放双手。脚本思路1、ping指定域名5次,只要要有2次以上的包响应,才表示网络畅通2、如果低于2次,则视为网络不通,重启网络,并等待20秒3、再次检测网络如果还是网络不通的话,则重启openwrt服务4、当连续失败计数大道10次以上,则重启次数改为10分钟,重复上述步骤,当网络畅通后,计数归零脚本#!/bin/bash#日志默认目录Log_DIR=

闭包的初了解

1.什么是闭包?内部函数能够返回外部函数的作用域(当内部函数返回时,它会携带一个背包,背包中是函数声明时作用域内的所有变量)我们可以用以下代码来表述以下:functionmakeFunc(){varname="Mozilla"functiondisplayName(){alert(name);}returndisplayName;}varmyFunc=makeFunc();myFunc();我们来简单的刨析下上面代码的运行流程编译阶段,变量和函数被声明,作用域即被确定。运行makeFunc(),此时会建立makeFunc()的执行上下文,执行上下文内部储存了makeFunc声明的所有变量函数信

闭包的初了解

1.什么是闭包?内部函数能够返回外部函数的作用域(当内部函数返回时,它会携带一个背包,背包中是函数声明时作用域内的所有变量)我们可以用以下代码来表述以下:functionmakeFunc(){varname="Mozilla"functiondisplayName(){alert(name);}returndisplayName;}varmyFunc=makeFunc();myFunc();我们来简单的刨析下上面代码的运行流程编译阶段,变量和函数被声明,作用域即被确定。运行makeFunc(),此时会建立makeFunc()的执行上下文,执行上下文内部储存了makeFunc声明的所有变量函数信

通过一个例子讲解Vue组合式API

一、CompositionAPI概述当我们编写Vue组件时候,组件中可能包含一系列的功能,例如一个代码仓库管理的应用,用户的仓库列表可以看做是一个组件,这个组件还包含筛选、搜索的功能。所谓的功能我们可以理解为MVC中的Model和Controller。从视图角度,组件是最基本的代码复用单元,但是从逻辑上,功能模块是最基本的代码复用单元。每个组件中可能包含多个功能(也称为关注点),而多个功能的代码会分散在Vue组件的各个部分:data/props/watch/computed/domeventcallback/lifescycle。这会带来两个问题:可读性和可维护性差,比如我们想要阅读某个功能的