头条个人博客,欢迎来到我的小世界!
本人爱好程序,主业并不是编程,这个博客建立的初衷就是记录我自学编程的点点滴滴心得体会,随着时间的推移,网站的版块也越来越多,这已经是第四次改版了,我不在乎改版对搜索引擎的影响,这仅仅是我的一个学习记笔记的地方
- HTML学习
- JS学习
- CSS学习
-
242019-07
HTML5中的rel属性
rel 属性规定当前文档与被链接的url(使用href=""指定)之间的关系仅<link>标签中使用的rel值: stylesheet:调用外部样式表,用于链接css样式表 icon:指定标题栏,地址栏,收藏栏小图标,rel="shortcut icon" 为了兼容IE,必须包含shortcut才会在IE下显示,IE只支持ico格式 canonical:指明网址的规范版本,用于让搜索引擎知道当前网站中的重复或相似网页中,哪一个页面才是站长想让其抓取与收录的。 author:文档作者,一般指向作者的主页 alternate:备选的源(比如:打印页, 译本和镜像) home:站点的主页 start:当前文档的第一页< archives:集合的目录 toc:集合的目录 head:集合中的顶级文档 first:集合中的首个文档 next:集合中的下一个文档
-
182018-05
URL中的的井号及搜索引擎抓取AJAX
URL中的#(井号)一、#的涵义#代表网页中的一个位置。其右面的字符,就是该位置的标识符。浏览器读取这个URL后,会自动将标识符位置滚动至可视区域。为网页位置指定标识符,有两个方法。一是使用锚点,比如<a name="print"></a>,二是使用id属性,比如<div >。二、HTTP请求不包括##是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。三、#后的字符在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。如下面URL的原意是指定一个颜色值:http://www.example.com/?color=#fff但是,浏览器实际发出的请求是:http://www.example.com/?color=,"#fff"被省略了。只有将#转码为%23,浏览器才会将其作为实义字符处理。四、改变#不触发网页重载单单改变#后的部分,浏览器
-
212017-08
HTML5的WebSocket
WebSocket提供了一个受欢迎的技术,是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术,以替代我们过去几年一直在用的Ajax技术。一、什么是WebSocket API?WebSocket API是下一代客户端-服务器的异步通信方法。该通信取代了单个的TCP套接字,是基于TCP协议上的独立的通信协议,使用ws或wss协议,可用于任意的客户端和服务器程序。WebSocket定义了两种URI格式, “ws://“和“wss://”,类似于HTTP和HTTPS, “ws://“使用明文传输,默认端口为80,”wss://“使用TLS加密传输,默认端口为443。在建立WebSocket通信连接前,需要使用HTTP协议进行握手,从HTTP连接升级为WebSocket连接。浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。WebSocket最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。WebSocket并不限于
-
212017-08
HTML5 服务器发送事件
HTML5 服务器发送事件(server-sent event)是单向消息传递,它允许网页获得来自服务器的更新,以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。创建EventSource 对象用于接收服务器发送事件通知var source=new EventSource("demo_sse.php");事件open当成功与服务器建立连接时产生事件message当收到服务器发送的事件时产生source.onmessage=function(event){alert(event.data);}事件onerror当出现错误时产生另外,还需要能够发送数据更新的服务器。服务器端事件流的语法是非常简单的。把EventSource对象指定的文件中的内容类型 "Content-Type" 报头设置为 "text/event-stream"响应文本的内容可以看成是一个事件流,由不同的事件所组成。每个事件由多种类型和对应的数据两部分组成,同时每个事件可以有一个可选的标识符。不同事件的内容之间通过
-
212017-08
HTML5 Web Workers使用介绍
web worker的作用浏览器端JavaScript是以单线程的方式执行的,也就是说javascript和UI渲染占用同一个主线程,那就意味着,如果JavaScript进行高负载的数据处理,UI渲染就很有可能被阻断,从而造成用户体验的大打折扣。Web Workers作为HTML5新特性之一,为浏览器端JavaScript开创了一种新的运行模式,让web应用程序具备多线程处理能力,在另外的线程中创建新的运行环境,以便使JavaScript能够在后台做一些费时的处理。Web Worker不能跨域加载,importScripts()方法也同样不能跨域加载。worker内代码不能访问window对象和docuemnt对象Web Worker能使用什么:1、可以使用JavaScript的全局对象:JSON、Date()、Array2、可以使用 setTimeout(), clearTimeout(), setInterval() and clearInterval()3、可以使用XMLHttpR
-
212017-08
html5中的canvas绘图方法
CanvasRenderingContext2D对象的方法:方法参数描述arc(x, y, radius, startAngle, endAngle, counterclockwise)x, y 描述弧的圆形的圆心的坐标。radius 描述弧的圆形的半径。startAngle, endAngle 沿着圆指定弧的开始点和结束点的一个角度。这个角度用弧度来衡量。沿着 X 轴正半轴的三点钟方向的角度为 0counterclockwise 弧沿着圆周的逆时针方向(TRUE)还是顺时针方向(FALSE)遍历。使用一个中心点和半径,为一个画布的当前子路径添加一条弧。这个方法的头5个参数指定了圆周的一个起始点和结束点。调用这个方法会在当前点和当前子路径的起始点之间添加一条直线。接下来,它沿着圆周,在子路径的起始点和结束点之间添加弧。startAngle, endAngle用Math.PI*n表示,360°角=2π弧度,如90度为Math.PI*0.5最后一个 counterclockwise 参数指定
-
092022-03
vue的常用指令
文本插值:数据绑定最常见的形式就是使用双大括号的文本插值<span>Name: {{ name }}</span>简单的操作运算:Vue提供了完全的JavaScript表达式支持,可以再插值时进行简单的计算,且每个绑定都只能包含单个表达式,如{{number+1}}{{
-
092022-03
vue的使用简介
Vue.js(读音/vjuː/,类似于view),是一个用于构建用户界面的JavaScript框架,它只关注视图层,通过尽可能简单的API实现响应的数据绑定和组合的视图组件本次学习我们使用在网页中引入js文件的方式,而暂不讨论使用npm或其他的方式通过<script src="https://unpkg.com/vue@next" ></script>的方式在网页
-
132021-07
js中变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构,本质上,这属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。一、数组的解构赋值从数组中提取值,按照对应位置,对变量赋值let [x, , y] = [1, 2, 3]; //x = 1 , y = 3 let [x, ...y] = [1, 2, 3, 4]; //x = 1 , y = [2, 3, 4] let [x, y, ...z] = [''a'']; //x = "a" , y = undefined , z = [] let [x, y] = [y, x] //变量交换 二、对象的解构赋值数组的解构赋值一个重要的不同是数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值,而不需要按照一定的顺序。let {x, y, z} = {z:''iamz'', x:''iamx''} //x =
-
232021-04
Fetch入门介绍
fetch是一种在JavaScript脚本里面发出HTTP请求的方式,是XMLHttpRequest的一种替代方案。fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。fetch和XMLHttpRequest的不同点:1、fetch使用了Promise,不使用回调函数,大大简化了写法;2、fetch返回的promise将不会拒绝http的错误状态,即使响应是一个HTTP404或者500;3、在默认情况下fetch不会接受或者发送cookies;4、fetch采用模块化设计,API分散在多个对象上(Response、Request、Headers、ReadableStream等),更合理;5、fetch通过数据流(Stream对象)异步处理数据,可以分块读取,有利于提高网站性能表现,减少内存占用,对于请求大文件或者网速慢的场景相当有用。fetch语法:fetch(url,option_obj)option_obj是一个object对象,HT
-
232021-04
javascript中的async和await操作符简介
async操作符用于创建一个异步函数,await操作符用于等待一个Promise对象async操作符在函数创建语句前添加async操作符可以把函数转化为异步函数,异步函数的特点: 异步函数永远只会返回一个Promise 1、当函数中显示的return一个Promise时返回该Promise 2、如果return的是一个具体的值,会返回一个resolve为该值的Promise 3、如果使用了throw语句那么会返回一个reject为该值的Promise 3、其他情况下会转换为一个resolve为undefined的Promiseawait操作符在异步函数中使用await操作符表示等待一个值的返回 await右侧为Promise对象时返回的是Promise状态为resolve的值,如果Promise状态是reject,则无返回值(undefined)并且抛出异常。 await右侧为其他值,会直接将该值作为await的返回值注意点:1、awa
-
032020-07
javascript中的var、let和const的异同
var、let和const都是JavaScript中用来声明变量的关键字,let和const是在ES6中新增的。在ES5之前,只有全局作用域和函数块作用域,没有块级作用域。var声明的变量的作用域只能是全局或者整个函数块(根据声明变量的位置不同);let声明的变量的作用域既可以是全局或者整个函数块,也可以是if、while、switch等用{}(要必须有)限定的代码块的块级作用域;const声明一个只读的常量。一旦声明,值就不能改变,否则会报错,所以,const一旦声明变量,就必须立即初始化。除了值不能更改,const声明常量的作用域和特性及使用方法都和let相同。for循环的特殊作用域:设置循环变量的那部分(括号中的部分)是一个父作用域,而循环体内部是一个单独的子作用域:for (let i = 0; i < 3; i++) { let i = ''demo''; console.log(i); } 上面代码正确运行,输出了3次''demo''。因
-
142020-10
CSS中的grid网格布局
Grid布局与Flex布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。Flex布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。既可以设置容器为块元素(display:grid),也可以设置容器为行内元素(display:inline-grid)。设为网格布局以后,容器子元素的float、display: inline-block、display: table-cell、vertical-align和column-*等设置都将失效。设置容器网格的列宽和行高grid-template-columns:定义每一列的列宽grid-template-rows:定义每一行的行高既可以使用绝对单位,也可以使用百分比以下代码指定了一个三行三列的网格,列宽都是33.33%,行高都是100px .box { display: g
-
132020-10
CSS中的flex布局
Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局。它即可以设置容器为块元素(display:flex),也可以设置容器为行内元素(display:inline-flex)。设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。目前,它已经得到了所有浏览器的支持。定义容器的六个属性flex-direction:容器内元素的排列方向(默认row) row,沿水平主轴从左向右排列 row-reverse,沿水平主轴从右向左排列 column,沿垂直主轴从上到下垂直排列 column-reverse,沿垂直主轴从下到上垂直排列flex-wrap:容器内元素的换行(默认nowrap) nowrap:不换行,如一个div宽度100%,设置此属性,2个div宽度就自动变成各50% wrap:自动换行,向下方
-
152019-07
CSS中的变量
CSS中的变量一、变量的声明声明变量的时候,变量名前面要加两根连词线(--)。 body { --foo: #7F583F; --bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:--foo和--bar。它们与正式属性没有什么不同,只是没有默认含义。所以 CSS 变量(CSS variable)又叫做"CSS 自定义属性"(CSS custom properties)。为什么选择两根连词线(--)表示变量?因为$foo被 Sass 用掉了,@foo被 Less 用掉了。为了不产生冲突,官方的CSS变量就改用两根连词线了。各种值都可以放入 CSS 变量。变量名大小写敏感,--header-color和--Header-Color是两个不同变量。二、var()函数用于读取变量。 a { text-decoration-color: var(--bar); color: var(--foo, #7F583F
-
152019-07
自适应网页和响应式图像
自适应网页手机的屏幕比较小,宽度通常在600像素以下,PC的屏幕宽度,一般都在1000像素以上。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果。很多网站的解决方法,是为不同的设备提供不同的网页,这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本。"自适应网页设计"的概念2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。允许网页宽度自动调整在网页代码的头部,加入一行viewport元标签设置页面缩放比例<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no" /> width:设置宽度,为一个正整数,或字符串"width-device"(屏幕宽度) initial-scale:设置页面的初始缩放值,为一个数
-
202017-08
CSS3中的动画
CSS3中的动画中使用的属性在各个浏览器中的支持是不一定兼容的,我们在属性钱添加前缀来实现各个浏览器的兼容-ms-兼容IE9-webkit-兼容Safari和Chrome-o-兼容Opera-moz-兼容Firefox为了节省篇幅,下面仅出现一次兼容性的语句,之后都不做兼容,在实际使用中自行添加兼容性语句。一、2D转换,通过transform 属性实现transform-origin: x y; //设置转换时的相对中心,默认为元素的中心,使用此属性可以改变默认值。transform-origin: bottom left; //设置转换时的相对中心,默认为元素的中心,使用此属性可以改变默认值。1、translate()方法位移div{transform: translate(50px,100px);-ms-transform: translate(50px,100px); /* IE 9 */-webkit-transform: translate(50px,100px); /* Sa
-
212017-02
Google推荐的html/css规范
介绍一下Google推荐的HTML和CSS编写格式规范,以建立良好的个人编码习惯。通用样式规范省略图片、样式、脚本以及其他媒体文件URL的协议部分(http:,https:),除非文件在两种协议下都不可用。这种方案称为protocol-relativeURL,好处是无论你是使用HTTPS还是HTTP访问页面,浏览器都会以相同的协议请求页面中的资源,同时可以节省一部分字节。<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>.example {background: url("//www.google.com/images/example");}缩进格式规范一次缩进2个空格,不要使用 tab 或者混合 tab 和空格的缩进。大小写以下都应该用小写:HTML元素名称,属性,属性值(除非 text/CDATA),CSS 选择器,属性,属性值。编码在
- python学习
- php学习
- go学习
- C#学习
-
112022-04
python中的中间人代理模块mitmporxy
mitmproxy是一个交互式的、支持SSL/TLS的拦截代理,启动后会提供一个命令行界面,用户可以实时看到发生的请求,并通过命令过滤请求,查看请求数据mitmweb是一个基于web的mitmproxy界面。启动后会提供一个web界面,用户可以实时看到发生的请求,并通过GUI交互来过滤请求,查看请求数据mitmdump是命令行版本。启动后没有界面,
-
022022-04
python中的parsel模块
parsel是一个python的第三方库,常用于html或者xml的解析,相当于css选择器+xpath+reparsel由scrapy团队开发,是将scrapy中的parsel独立抽取出来的,可以轻松解析html,xml等内容获取需要的数据安装:pip install parsel引入:importparsel我们更经常使用fromparselimport&n
-
242022-03
office文件老版本转换为新版本
office在2007版本之前使用的是专有格式,其他程序是不能读取到其内容的,但是在2007版本之后使用了占用体积更小的新版格式新版的office格式文件本质上是一个ZIP文件,主要内容保存为XML格式,保存在一个扩展名改为docx|xlsx|ppts等的ZIP文件中新版格式的文件后缀改为ZIP后解压,可以看到解压出来的文件夹中多个文件夹,包含
-
112022-02
python中asyncio库的低层级API
在python中,我们甚至完全不用管事件循环,只需要使用高层API,很少直接与事件循环打交道,但是为了更加熟悉asyncio的运行原理,最好还是了解EventLoop的设计原理,可以实现更加复杂更加精细化的操作创建事件循环asyncio.get_running_loop()返回当前线程中正在运行的事件循环如果没有正在运行的事
-
112022-02
python中的asyncio库的高层级API
asyncio库自python3.4版本开始加入标准库,用于基于协程来实现异步IO使用async关键字创建协程函数,在协程函数中使用await关键字异步等待一个可等待对象(await仅可用于协程函数的函数体中)可等待对象有三种主要类型:协程(coroutines)一般指调用协程函数所返回的协程对象 
-
212022-01
python中的httpx模块
我们常用的网站访问库是requests,但是该库仅支持同步,在有些场景中就显得力不从心,现在有一个新的httpx库,同时支持同步和异步两种方式访问网络同步方式几乎和requests的使用方式完全相同,点击查看,以下我也列出来几点和requests不同的点响应流在requests中使用参数stream=True即可打开相应流,在httpx中将该参数改为stream()方法,在上下文中使用。除了第一个参数需要是定访问方法外,其他参数和正常访问相同,返回一个流对象close():由于使用的上下文,该方法很少使用read():读取所有内容,既然使用了响应流,那么就不应该一次读取所有内容,所以很少使用text(),json()等,必须使用一次read()方法才可用ter_bytes(chunk_size=None):每次返回指定大小的二进制数据iter_lines():每次返回一行数据,会先将数据转化为字符串,然后将所有换行转换为"",返回的每一行结尾都是换行符iter_text(
-
312021-01
php中的命名空间
PHP命名空间(namespace)是在PHP5.3中加入的,可以解决以下两类问题:1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。2、为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。使用namespace关键字定义命名空间定义命名空间的语法格式语法格式1:namespace 命名空间1; ... namespace 命名空间2; ... 直到下一个namespace语句之前的所有代码都属于该命名空间 语法格式2:namespace 命名空间1{...} namespace 命名空间2{...} 当一个文件中有多个命名空间时推荐使用语法格式2 如果一个文件中有全局的命名空间,只能使用语法格式2(大括号形式),全局代码用一个不带名称的namespace语句namespace 命名空间1{...} namespace {...//全局代码} 1、命名空间可以有多个层级,各个层级之间使用反斜杠""分隔
-
302021-01
php中的declare结构
declare结构用来设定一段代码执行指令的行为可选的行为指令有三个:encoding="coding_str":为代码指定其编码方式strict_types=1|0:调用函数传值是否应用严格类型,需要在编译时指定--enable-zend-multibyte,否则declare中的encoding值会被忽略ticks=N:代码中解释器每执行N条可计时的低级语句就会触发的事件declare语句的格式有两个:declare(ticks=1) { // 这里写完整的运行代码}和declare(ticks=1);// 这里写完整的运行代码传入的指令是在文件编译时处理的,所以指令只接受字面量的值,无法使用变量和常量// 这样是有效的declare(ticks=1);// 这样是无效的:const TICK_VALUE = 1;declare(ticks=TICK_VALUE);ticks指令不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。在每个ti
-
192020-05
php中的php-fpm进程管理
web服务器本身不能处理php,当接收到请求后,通过匹配后缀知道该请求是个动态的php请求,会把这个请求转给指定的php解释器处理,并把结果返回给客户端。在php-cgi的年代,总是每一个请求过来后,都要创建一个进程,读取配置,初始化环境,返回数据,退出进程。php-fpm启动后会创建一个主进程(master)并且监听指定端口,master进程会根据配置要求去创建若干子进程(worker),用于处理实际的业务,当一个请求来的时候,通过master传递给worker,这样只需要主进程(master)读取一次配置并初始化执行环境(先读php.ini,然后读取conf配置)master进程的主要作用就是管理worker进程,负责fork或者kill掉子进程。在启动时根据配置文件会预先启动一定数量的worker。当请求比较多worker处理不过来时,master会fork新的worker进程处理。如果空闲的进程较多时,就会kill掉一些worker进程,避免占用浪费系统资源。自从php5.3.3
-
042020-03
PHP的命令行操作
PHP作为一门web开发语言,通常情况下我们都是在Web Server中运行PHP,使用浏览器访问,因此很少关注其命令行操作以及相关参数的使用,但是,特别是在类Unix操作系统上,PHP可以作为一门脚本语言执行与shell类似的处理任务。在文件脚本中,可以通过php_sapi_name()函数获取该脚本文件的运行环境,如在命令行下该函数返回''cli'',在浏览器该函数返回"cgi-fcgi"(不同的环境配置可能显示不同) -a:以交互式shell模式运行,可以执行一些简单的任务,而不需要新建一个php文件。 -c:指定php.ini文件所在的目录 -n:指定不使用php.ini文件 -d foo[=bar]:定义一个INI实体,key为foo,value为''bar'' -e:为调试和分析生成扩展信息 -f:解释和执行文件 -h:打印帮助 -i:显示PHP的基本信息 -l:进行语法检查 (lint)
-
262019-12
php中的哈希函数
单独的hash算法函数:md5函数:md5(string $str[,bool $raw_output=false]):计算字符串的MD5散列值 md5_file(string $filename[,bool $raw_output=false]):计算指定文件的MD5散列值 raw_output:如果为TRUE,将以16字符长度的原始二进制格式返回。默认为false,返回32字符长度的十六进制数字字符串。 sha1函数:string sha1(string $str[,bool $raw_output=false]):计算字符串的sha1散列值 string sha1_file(string $filename[,bool $raw_output=false])计算指定文件的sha1散列值 raw_output:如果被设置为TRUE,将以20字符长度的原始二进制格式返回。默认为false,返回40字符长度的十六进制数字字符串。 crc32函数:crc32(string
-
102019-09
php操作redis
redis扩展模块下载地址:https://pecl.php.net/package/redisRedis类和RedisException类Redis类用于创建Redis客户端:$redis=new Redis();如果无法访问Redis服务器,会抛出RedisException异常对象(连接问题,Redis服务已关闭,或者redis主机过载等),在任何其他不涉及无法访问的服务器(如密钥不正确,无效命令等)的情况下,将返回FALSE预定义常量Redis::REDIS_STRING:StringRedis::REDIS_SET:SetRedis::REDIS_LIST:ListRedis::REDIS_ZSET:Sorted setRedis::REDIS_HASH:HashRedis::REDIS_NOT_FOUND:Not found / other使用Redis类创建的Redis客户端对象连接redis:连接到redis服务器:$redis->connect($host
-
302022-06
Go语言中的EXCEL表格操作
excelize库是Go语言编写的用于操作Excel文档基础库,可以使用它来读取、写入由Excel2007及以上版本创建的电子表格文档安装:go get github.com/xuri/excelize/v2进行安装引用:import "github.com/xuri/excelize/v2"工作簿(文档)操作创建新文档:file := excelize.NewFile(),默认包含一个名为Sheet1的工作表打开
-
062021-12
Go的常用命令
Go的命令格式为:go command [args]其中command为go的子命令,args为子命令的选项可以使用go help command来查看指定子命令的帮助信息常用子命令build: 编译包和依赖clean: 移除对象文件env: 打印go的环境信息bug: 启动错误报告fmt: 运行gofmt进行格式化get: 下载并安装包和依赖install: 编译并安装包和依赖list: 列出包mod:用于管理go程序依赖run: 编译并运行go程序test: 运行测试version: 显示go的版本build命令用来编译go程序生成可执行文件的go build [-o out_file] [build flags] [packages]可以指定多个go文件,会将所有文件视为指定单个包的源文件列表,忽略以“_test.go”结尾的文件但需要注意的是要生成可执行文件,需要满足两个条件:1、该程序属于main包;2、必须包含main函数常用选项: -a:强制重
-
062021-12
go编译dll文件并调用
首先,go编译dll的过程需要用到gcc,所以要先安装gcc现在我们开始编写要编译成dll的go程序package main# 包名必须为mainimport "C"# 必须引入C(大写)包,C是虚拟包,可以调用C语言函数//export MyFuncfunc MyFunc(a int , b int) int{ return a+b}# 需要导出来的函数上面必须要写//export [函数名]格式的注释且与函数主体之间不能有其他语句# 编写要导出函数的逻辑# 函数名并不一定首字母大写,但是习惯上首字母会大写func main(){}# 必须要有一个main函数,可以为空但必须要有以上内容为一个最为简单的示例,下面我们使用go build命令编译成dllgo build -ldflags "-s -w" -buildmode=c-shared -o dll_filename go_filename-ldflags选项非必须,但是加上会使编译成的d
-
252021-10
go语言中的正则操作
"regexp"包实现了正则表达式搜索通用函数QuoteMeta(s string) string:返回将s中所有正则表达式元字符都进行转义后字符串 Match(pattern string, b []byte) (matched bool, err error):检查b中是否存在匹配pattern的子序列 MatchString(pattern string, s string) (matched bool, err error):类似Match,但匹配对象是字符串 MatchReader(pattern string, r io.RuneReader) (matched bool, err error):类似Match,但匹配对象是io.RuneReader 生成正则表达式Compile(expr string) (*Regexp, error):解析并返回一个正则表达式 匹配模式设置为leftmost-first,最短匹配,一旦匹配就立刻返回 CompilePOSIX(ex
-
252021-10
go语言中的路径操作
"path"包实现了对斜杠分隔的路径的常用操作IsAbs(path string) bool:返回路径是否是一个绝对路径 Split(path string) (dir, file string) 将路径从最后一个斜杠后面位置分隔为两个部分(dir和file)并返回 如果路径中没有斜杠,dir会设为空字符串 Join(elem ...string) string 将任意数量的路径元素放入一个单一路径里,会根据需要添加斜杠 结果是经过简化的,所有的空字符串元素会被忽略。 Dir(path string) string 返回该路径最后一个元素所在的目录 如果可以,会尽可能去除末尾的斜杠 如果路径是空字符串,会返回"." Base(path string) string 返回路径的最后一个元素(去除末尾的斜杠) 如果路径是"",会返回"." 如果路径是只有一个斜杆构成,会返回"/" Ext(path string)
-
232021-10
go语言中的数据库操作
在go语言中,标准库"database/sql"提供了保证SQL或类SQL数据库的泛用接口,使用前需要注入对应的数据库驱动,go标准库中没有提供任何一个数据库驱动,需要我们通过其他方式安装驱动常用的支持"database/sql"通用接口的数据库驱动包地址: sqlite3:github.com/mattn/go-sqlite3(注册的数据库驱动名称"sqlite3") mysql:github.com/go-sql-driver/mysql(注册的数据库驱动名称"mysql") postgresDB:github.com/lib/pq(注册的数据库驱动名称"postgres") import ( "database/sql" _ "github.com/mattn/go-sqlite3" ) 标准库"database/sql"的使用type Result interface { LastInsert
-
122021-10
C#中的目录和文件相关操作
System.IO命名空间中的Directory和DirectoryInfo用于操作目录,File和FileInfo用于操作文件,这些类都不能被继承其中Directory和File用于提供目录或文件操作的静态方法DirectoryInfo和FileInfo类的基类是FileSystemInfo,提供目录或文件操作的实例方法在目录和文件操作过程中需要用到参数: Attributes参数用于获取或设置当前文件或目录的特性 该参数为一个FileAttributes枚举,可用成员有 Archive:此文件标记为包含在增量备份操作中。在增量备份期间处理文件时,备份软件应进行清理该属性 Compressed:此文件是压缩文件 Directory:此文件是一个目录 Encrypted:此文件或目录已加密。对于目录来说,表示新创建的文件和目录在默认情况下是加密的 Hidden:文件是隐藏的,因此没有包括
-
112021-10
C#中的输入输出流
流是通过通信路径传递的字节序列,C#采用流模型读写文件、网络或内存中的数据。有两个主要的流:输入流和输出流。输入流用于读取数据(读操作),输出流用于写入数据(写操作)C#中关于流的常用类,这些类大多属于System.IO命名空间的类:创建流的类:Stream:所有流的基类,定义流的基本操作,如Read和Write等方法,是抽象类,无法直接使用 FileStream:以文件作为数据源的流,可以用来读写文件 NetworkStream:以网络作为数据源的流,可以通过此流发送或接受网络数据 MemoryStream:以内存作为数据源的流,可以用来随机读写内存中的数据 BufferedStream:以缓存区作为数据源的流,可以用来读写缓存区中的数据 读写流的类: TextReader:字符读取的基类,定义基本字符读取操作,是抽象类,无法直接使用 TextWriter:字符写入的基类,定义基本字符写入操作,是抽象类,无法直接使用 StreamReader:从流读取字符 StreamWrite
-
012021-09
C#中的结构体
在C#中,结构体是值类型数据结构,它使得一个单一变量可以存储各种数据类型的相关数据。C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员。struct关键字用于创建结构体struct Mystruct{ //结构体定义 } 结构的特点结构可带有方法、字段、索引、属性、运算符方法和事件 结构体中声明的字段无法赋予初值 结构可定义构造函数,但不能定义析构函数 不能为结构定义无参构造函数,无参构造函数(默认)是自动定义的,且不能被改变 结构体的构造函数中,必须为结构体所有字段赋值 与类不同,结构不能继承其他的结构或类 结构不能作为其他结构或类的基础结构 结构可实现一个或多个接口 结构成员不能指定为abstract、virtual 或 protected 使用new操作符创建一个结构对象时,会调用构造函数来创建结构。 与类不同,结构可以不使用new操作符即可被实例化 如果不使用new操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用
-
012021-09
C#中的字符串及常见操作
使用string关键字来声明一个字符串变量,string关键字是System.String类的别名,是从对象(Object)类型派生的String类型的值可以通过两种形式进行分配:引号("")和@引号(@"")字符串的前面加@,称作"逐字字符串",会将转义字符()当作普通字符对待,如@"C:Windows"等价于"C:\Windows"字符串的常见属性Chars:在当前String对象中获取Char对象的指定位置 Length:获取字符串的字符数量 字符串的常见方法String.Compare(strA, strB[, ignoreCase]) 比较两个string对象,并返回一个表示它们在排列顺序中相对位置的整数 ignoreCase如果为真不区分大小写,默认区分大小写 String.Concat(str0,str1,...):连接传入的若干个字符串 str.Contains(val):str中是否包含val String.Copy(str):创建一个与st
-
012021-09
C#中的数组及常见操作
数组是一个存储相同类型元素的固定大小的顺序集合,是用来存储数据的集合。数组中某个指定的元素是通过索引来访问的。所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。声明一个数组datatype[] arrayName; datatype :用于指定被存储在数组中的元素的类型 [] :指定数组的秩(维度) arrayName:指定数组的名称 元素类型和秩之间可以有空格也可以不留空格 声明一个数组不会在内存中初始化数组创建(初始化)数组数组是一个引用类型,所以需要使用new关键字来创建数组的实例double[] demo = new double[10]; 会创建一个所有元素都是double类型的包含10个元素的数组 当创建一个数组时,会根据数组元素类型隐式为每个元素初始化一个默认值。如int数组所有元素都会被初始化为0赋值给数组可以通过使用索引号赋值给一个单独的数组元素double[] demo = new double[10]; dem
-
312021-08
C#中的可空类型和枚举类型
C#中的可空类型C#提供了一个特殊的数据类型:nullable类型(可空类型)可空类型可以表示其基础值类型正常范围内的值,再加上一个null值在处理数据库和其他包含可能未赋值的元素的数据类型时,将null赋值给数值类型或布尔型的功能特别有用声明一个nullable类型(可空类型):<data_type>? [= value]; data_type表示数据类型,后面紧跟着一个问号 variable_name表示变量名 nullable类型的默认值为null 如 int? a 表示a的值为-2147483648到2147483647,也可以被赋值为null值 且此时变量a的默认值由0变为了null Null合并运算符(??)合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。如果第一个操作数的值为 null,则运算符返回第二个操作数的值,否则返回第一个操作数的值double? num1 = null; double? num2 = 3
- SQL学习
- 常用软件
- IT基础
- 微信相关
-
172019-09
redis的通信协议(protocol)
Redis客户端使用名为RESP(REdis序列化协议)的协议与Redis服务器通信。虽然该协议是专为Redis设计的,但它可以用于其他客户端-服务器软件项目RESP是以下事项之间的妥协:易于实施、快速解析、人类可读RESP实际上是一个支持以下数据类型的序列化协议:简单字符串,错误,整数,批量字符串和数组。RESP是二进制安全的,不需要处理从一个进程传输到另一个进程的批量数据,因为它使用前缀长度来传输批量数据注意:此处概述的协议仅用于客户端 - 服务器通信。Redis Cluster使用不同的二进制协议,以便在节点之间交换消息虽然RESP在技术上是非TCP特定的,但在Redis的上下文中,协议仅用于TCP连接或类似的面向流的连接(如Unix套接字)客户端和服务器发送的命令或数据一律以 (CRLF)结尾请求协议:新版统一请求协议在Redis 2.0版本成为Redis服务器通信的标准方式。在这个协议中,所有发送至Redis服务器的参数都是二进制安全(binary safe)的。以下是这
-
032019-09
Redis的持久化
Redis提供了两种不同级别的持久化方式:RDB持久化可以在指定的时间间隔内生成数据集的时间点快照。AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾。可以同时使用AOF持久化和RDB持久化,当Redis重启时,会优先使用AOF文件来还原数据集,因为AOF文件所保存的数据通常是最完整的。RDB的优点RDB是一个非常紧凑的文件,它保存了Redis在某个时间点上的数据集,非常适合用于进行备份。RDB可以最大化Redis的性能:父进程在保存RDB文件时唯一要做的就是fork出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘I/O操作。RDB在恢复大数据集时的速度比 AOF 的恢复速度要快。RDB的缺点在数据集比较庞大时,fork()可能会非常耗时,造成服务器在某段时间内停止处理客户端;每隔一段时间才保存一次RDB文件,在这种情况下,一旦发生故
-
032019-09
Redis的事务
redis的事务可以一次执行多个命令, 并且带有以下两个重要的保证:一、事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。二、事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。当使用AOF方式做持久化的时候,Redis会使用单个write(2)命令将事务写入到磁盘中。如果Redis服务器因为某些原因被管理员杀死,或者遇上某种硬件故障,那么可能只有部分事务命令会被成功写入到磁盘中。Redis在重新启动时发现AOF文件出了这样的问题,那么它会退出,并汇报一个错误。使用redis-check-aof程序可以修复这一问题:它会移除 AOF 文件中不完整事务的信息,确保服务器可以顺利启动。事务命令multi用于开启一个事务 开启事务之后客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是会按照先后顺序被放到一个队列中,最后由exec命令原子性(atomic)地执行 事务内传入的命令都会返回
-
032019-09
Redis的主从复制
Redis支持简单且易用的主从复制功能,可以让从服务器(slaveserver)成为主服务器(masterserver)的精确复制品以下是关于Redis复制功能的几个重要方面: 1、Redis使用异步复制。从服务器会以每秒一次的频率向主服务器报告复制流的处理进度。 2、一个主服务器可以有多个从服务器。 3、不仅主服务器可以有从服务器,从服务器也可以有自己的从服务器。 4、复制功能不会阻塞主服务器。 5、复制功能不会阻塞从服务器(需要在配置文件中slave-serve-stale-data设置,从服务器正在同步时使用旧的数据集来处理命令查询),但是在从服务器删除旧版本数据集并载入新版本数据集的短暂时间内,连接请求会被阻塞。 6、可以配置从服务器,让它在与主服务器之间的连接断开时,向客户端发送一个错误(用于监控主服务器)。 7、复制功能可以单纯地用于数据冗余,也可以通过让多个从服务器处理只读命令请求来提升扩展性。 8、可以让主服务
-
022019-09
Redis服务器端常用命令
连接命令:client setname connection-name 为当前连接分配一个名字,用于识别当前正在与服务器进行连接的客户端 为了避免和client list命令的输出格式发生冲突,名字里不允许使用空格 要移除一个连接的名字, 可以将连接的名字设为空字符串"" 设置成功时返回OK client getname:返回client setname命令为连接设置的名字,没有设置名字返回空白client kill ip:port:关闭地址为 ip:port 的客户端,ip:port应该是client list命令输出的其中一行client list: 以人类可读的格式返回所有连接到服务器的客户端信息和统计数据 命令返回多行字符串,这些字符串按以下形式被格式化: 每个已连接客户端对应一行(以 LF分割) 每行字符串由一系列"属性=值"形式的域组成,每个域之间以空格分开 id=32 addr=1
-
202019-08
Redis的连接和发布订阅命令
连接命令auth password 设置配置文件中requirepass项的值来使用密码保护Redis服务器,在每次连接Redis服务器之后,都要使用auth命令解锁,之后才能使用其他Redis命令。 如果auth输入的密码和配置文件中的密码相符,服务器返回OK并开始接受其他Redis命令 如果auth输入的密码不匹配,服务器返回一个错误,并要求客户端需重新输入密码。 echo message:打印message,主要测试使用,返回messageping:使用客户端向Redis服务器发送一个PING,如果服务器运作正常的话,会返回一个PONG,否则返回一个连接错误。常用于测试与服务器的连接是否仍然生效或者测量延迟值。quit:请求服务器关闭与当前客户端的连接。一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。总是返回OK(但是不会被打印显示,因为当时Redis-cli已经退出)select index:切换到指定的数据库,数据库索引号index用数
-
252020-06
7z的压缩和解压缩常用命令
7z,全称7-Zip, 是一款开源软件。是目前公认的压缩比例最大的压缩解压缩软件。主页:http://www.7-zip.org/语法:7z operator input_file option output_fileinput_file和output_file可以使用星号(*)或问号(?)通配符退出代码0 : 正常,没有错误; 1 : 警告,没有致命的错误,例如某些文件正在被使用,没有被压缩; 2 : 致命错误; 7 : 命令行错误; 8 : 没有足够的内存; 255 : 用户停止了操作; 操作符(operator)a: 添加文件到压缩包,或者创建新的压缩包 d: 从压缩包中删除文件 e: 保持目录结构解压 x: 去除目录结构解压 t: 测试压缩包的是否出错 u: 更新压缩包中的文件 7z u files.zip *.doc 用当前目录下(不含子目录)doc文件更新压缩包中的doc文件(若doc文件存在压缩包中则更新,不存在则添加) l: 保持目录结构列出压
-
112020-06
nginx使用proxy设置反向代理
proxy_pass语法:proxy_pass URL;配置块:location、if将当前请求反向代理到指定的服务器上 URL可以是主机名或IP地址加端口的形式 proxy_pass http://localhost:8000/uri/; 也可以是UNIX句柄: proxy_pass http://unix:/path/to/backend.socket:/uri/; 还可以直接使用upstream块: upstream backend { ... } location / { proxy_pass http://backend; } 是否会附加location配置路径与proxy_pass配置的路径后是否有"/"有关,有"/"则不附加,如: location /test/ { proxy_pass http://127.0.0.1:
-
262020-05
nginx的命令行参数
nginx的命令行参数-? 或者 -h:打印命令行参数帮助信息-c file:指定一个配置文件,默认为nginx根目录下的nginx.conf文件 nginx -c /path/nginx.conf -t :不运行仅仅测试配置文件。将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。-v :显示nginx的版本。-V :显示nginx的版本,编译器版本和配置参数。-q :在配置测试期间禁止非错误信息-s signal :向主进程(Master)发送信号,signal信号参数可以是以下: stop -- 快速关闭(强制关闭,比较粗暴) quit -- 优雅地关闭,nginx主进程会等待worker进程完成当前用户请求的处理,需要启动时的用户身份来执行 reload -- 重新加载配置,使用新配置后启动新的工作进程(Worker),正常退出就的工作进程。 当主进程接收到reload信号,它会检查配置文件的语法,然后尝试应用该配置。如果成功,主
-
242019-07
下载神器aria2的使用命令
-v, --version:获取aria2的版本号-h, --help:获取帮助信息-l, --log=LOGFILE:下载日志记录文件-d, --dir=DIR:指定下载文件的目录-o, --out=FILE:下载文件的文件名,使用-Z选项时,此选项将被忽略。-s, --split=N:使用n个线程进行下载,默认为5--file-allocation=METHOD:指定文件预先分配文件空间的方法。 可能的值: none, prealloc, trunc, falloc 默认值: prealloc “none”不会预先分配文件空间。"prealloc"在开始下载之前预先分配文件空间。这可能需要一些时间,具体取决于文件系统。 如果您使用的是较新的文件系统,如ext4、btrfs、xfs或ntfs,“falloc”是您的最佳选择。它分配大的(很少的gib)文件几乎是瞬间。 而比较老都文件系统,如ext3和fat32,不推荐使用“falloc”,因为它几乎和“
-
082019-07
nginx中的error_page指令和rewrite指令
error_page指令error_page指令的作用是当发生错误的时候能够显示一个预定义的uri的内容指令语法:error_page codes [=code] err_file;error_page 502 503 /50x.html; 当访问出现502、503的时候就能返回50x.html中的内容。 error_page 502 503 =200 /50x.html; 自定义返回状态码,用户访问产生502 、503的时候给用户的返回状态是200,内容是50x.html。 error_page 404 = /error.php; 指定的是一个动态脚本,如果脚本没有自定义返回状态码,则正常输出,如果该脚本也定义了返回状态码,中间不加等号该语句无法执行,即返回404状态码和默认404页面 如果中间添加了等号,返回给用户脚本中定义的状态码,如果自定义状态码和指定状态码相同则状态码正常返回但内容为默认页面,如果自定义状态码和指定状态码不同则状态码和内容都正
-
222019-02
Apache中的mod_alias模块
模块名:alias_module源文件:mod_alias.c模块提供的指令可以映射文档以及URL重定向,mod_alias旨在处理简单的URL操作任务。对于更复杂的任务,建议使用工具mod_rewrite。处理顺序首先,在处理别名之前处理所有重定向,其次,别名和重定向按照它们在配置文件中出现的顺序进行处理,第一次匹配优先。Alias "/foo/bar" "/baz"Alias "/foo" "/gaq"但是如果将上面两条指令的顺序颠倒,则后一条指令永远也得不到匹配的机会。Alias指令映射URL到文件系统的特定区域,使文档可以被存储在DocumentRoot以外的本地文件系统中。语法:Alias URL-path file-path|directory-path例:Alias "/image" "/ftp/pub/image"对http://myserver/image/foo.gif的请求,服务器将返回/ftp/pub/image/foo.gif文件,由于Alias仅匹配完整路径,
-
062020-04
XPath语法
什么是XPath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历。在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。XPath开发工具Chrome插件XPath Helperfirefox插件XPath Checker Try XPathXPath语法选取节点:XPath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。nodename:选取此节点的所有子节点 /:如果在最前面,代表从根节点选取,否则选择某节点之下的某个子节点 /ul:选取根节点子节点中所有ul节点 /ul/li:选取根节点子节点中所有ul节点子节点中的li节点 //:从全局节点中选择节点 //ul:选取所有的ul节点而不管它的位置 //div//li:选取所有div节点下所有li
-
242019-07
邮件的POP3/IMAP/SMTP服务
我们在使用邮件客户端配置账户的时候,会碰到选择服务器类型,邮件服务中用到的POP3/IMAP/SMTP服务到底是什么呢?POP3POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110),用于支持使用客户端远程管理在服务器上的电子邮件。POP与POP3 POP协议支持“离线”邮件存储转发处理:客户端程序连接服务器,下载所有未阅读的电子邮件;一旦将邮件从邮件服务器端送到客户端上,邮件服务器上的邮件将会被删除。 POP3协议可以“只下载邮件,服务器端并不删除”,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上 IMAPIMAP全称是Internet Mail Access Protocol,即交互式邮件访问协议,是一个应用层协议(端口是143),用来从本地邮件客户端访问远程服务器上的邮件。IMAP和POP3的区别IMAP像POP3那样提供了邮件下载服务,让用户能进行离线阅读。不同的是:1、IMA
-
152019-07
计算机基础之子网划分和超网合并
有类网络:也叫主类网络或标准网络,就是指把IP地址能归结到的A类、B类、C类IP,使用的是标准的默认子网掩码。无类网络:相对于有类网络,无类网络IP地址的掩码是变长的。在有类网络的基础上,拿出一部分主机位作为子网位。超网:把多个小网络组合成一个大网络,称为超网(SuperNetting),也可以说子网掩码长度小于相对应的有类网络的叫超网。子网:有类网络划分成更小后的网络,称为子网(Subnet),也可以说子网掩码长度大于相对应的有类网络的叫子网。IPv4地址如果只使用有类(A、B、C类)来划分,会造成大量的浪费或者不够用,为了解决这个问题,提高网络划分的灵活性,诞生了两种非常重要的技术,那就是VLSM(可变长子网掩码)和CIDR(无类别域间路由),把传统标准的IPv4有类网络演变成一个更为高效,更为实用的无类网络。VLSM用于IPv4子网划分,就是把一个大的网络划分成多个小的子网,借用现有网段的主机位的最左边某几位作为子网位,划分出多个子网。把一部分原来属于“主机位”的部分变成“网络位”
-
122019-07
计算机基础之子网掩码
子网掩码的概念及作用①、子网掩码(Subnet Mask)又叫网络掩码、地址掩码,必须结合IP地址一起对应使用。②、只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。③、子网掩码和IP地址做“与”运算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在本地网络上,还是在远程网络网上。④、子网掩码还用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费。子网掩码的组成①、同IP地址一样,子网掩码是由长度为32位二进制数组成的一个地址。②、子网掩码32位与IP地址32位相对应,IP地址如果某位是网络位,则子网掩码为1,否则为0。③、如11111111.11111111.11111111.00000000子网掩码中的1对应IP地址的网络位(1必须是连续的,理论上也可以不连续),子网掩码中的0对应IP地址的主机位。子网掩码的表示方法①、点分十进制表示法:二进制转换十进制,每8位用点号隔开如11111111.11111111.11111111.0
-
122019-07
计算机基础之IP地址的分类
IP地址分类IP地址分A、B、C、D、E五类,其中A、B、C这三类是比较常用的IP地址,D、E类为特殊地址。①、A类地址 A类地址第1字节为网络地址(最高位固定是0),另外3个字节为主机地址。 A类地址范围:1.0.0.0 - 126.255.255.255,其中0和127作为特殊地址。 A类网络默认子网掩码为255.0.0.0,也可写作/8。 A类网络最大主机数量是256×256×256-2=166777214(减去主机位全部为0的网络地址和主机位全部为1的广播地址)。②、B类地址 B类地址第1字节(最高位固定是10)和第2字节为网络地址,另外2个字节为主机地址。 B类地址范围:128.0.0.0 - 191.255.255.255。 B类网络默认子网掩码为255.255.0.0,也可写作/16。 B类网络最大主机数量256×256-2=6554。③、C类地址 C类地址第1字节(最高位固定是110)、第2字节和第3个
-
122019-07
计算机基础之MAC地址和IP地址
MAC地址MAC(Media Access Control,介质访问控制)地址,或称为物理地址,也叫硬件地址,用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的(但可以通过在设备管理器中或注册表等方式修改,同一网段内的MAC地址必须唯一)。MAC地址采用十六进制数表示,长度是6个字节(48位,如08:00:20:0A:8C:6D),分为前24位和后24位。1、前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。2、后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。MAC地址对应于OSI参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,交换机根据收到的数据帧中的“目的MAC地址”字段来转发数据帧。IP地址IP地址(Internet Protocol Address),缩
-
082021-01
小程序中的页面跳转
小程序内部跳转wx.switchTab(object):跳转到tabBar页面(需在app.json的tabBar字段定义),并关闭其他所有非tabBar页面,路径后不能带参数wx.reLaunch(object):关闭所有页面,打开到应用内的某个页面,路径后可以带参数wx.redirectTo(object):关闭当前页面,跳转到应用内的某个非tabBar页面,路径后可以带参数wx.navigateTo(object):保留当前页面,跳转到应用内的某个非tabBar页面,路径后可以带参数 events:Object,页面间通信接口,用于监听被打开页面发送到当前页面的数据。 wx.navigateBack(object):关闭当前页面,并后退指定页面数,delta属性(默认1)表示后退的页面数,如果大于现有页面数,则返回到首页 url:string,要跳转的页面路径,参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ''path?ke
-
072021-01
WXML中事件的绑定
事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches绑定事件 通过属性值设置绑定 bind<name>或者bind:<name>:绑定指定name的事件 catch<name>:绑定执行name的事件并阻止事件冒泡 bindtap="func",只能绑定page.js文件中的函数 如果事件名称name是个空字符串,则绑定失效(可以利用这个特性来暂时禁用一些事件) make:name属性:用来识别具体触发事件的target节点 当事件触发时,事件冒泡路径上所有的mark会被合并,并返回给事件回调函数 <view mark:myMark=
-
072021-01
WXML、WXSS和WXS语法语法简介
WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。框架为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。点击查看组件是视图层的基本组成单元。组件自带一些功能与微信风格一致的样式。一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内。所有组件与属性都是小写。所有组件都有以下属性id:String,组件的唯一标示class:String,组件的样式类,在对应的WXSS中定义的样式类style:String,组件的内联样式hidden:Boolean,组件是否显示data-*:自定义属性,组件上触发的事件时,会发送给事件处理函数bind* / catch*:组件的事件数据绑定WXML中的动态数据均来自对应Page.js的data如现在有一个page.js文件内容如下let global_data==getApp();Page({ data:
-
152020-12
小程序配置索引文件sitemap.json
微信已开放小程序内搜索,通过sitemap.json配置,或者管理后台页面收录开关来配置小程序页面是否允许微信索引。如果没有sitemap.json文件,则默认为所有页面都允许被索引当用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。爬虫访问小程序内页面时,会携带特定的user-agent:mpcrawler及场景值:1129。若小程序爬虫发现的页面数据和真实用户的呈现不一致,那么该页面将不会进入索引中。通过属性rules配置详细规则,该属性为一个由多个Object组成的列表,每个Object代表一个索引规则每个Object拥有的属性值属性类型是否必需默认值详细说明actionstring否"allow"命中该规则的页面是否能被索引,可选值"allow"、"disallow"pagestring是* 表示所有页面,不能作为通配符使用paramsArray否[]当 page 字段指定的页面在被本规则匹配时可能使用的页面参数名称的列表(不含参数值)matchingstring否
-
152020-12
小程序的全局配置文件app.json
配置项配置项子项数据类型是否必需配置详解entryPagePathstring否小程序默认启动首页,默认为 pages 列表的第一项pagesArray是指定小程序由哪些页面组成,每一项都对应一个含文件名的页面路径,文件名不需要写后缀,会自动去寻找对应的.json,.js,.wxml,.wxss四个文件进行处理debugboolea否是否开启 debug 模式,默认关闭functionalPagesboolean否是否启用插件功能页,默认关闭windowObject否全局的默认窗口表现navigationBarBackgroundColorstring十六进制导航栏背景颜色,默认"#000000"navigationBarTextStylestring导航栏标题颜色,仅支持 black / white,默认whitenavigationBarTitleTextstring导航栏标题文字内容navigationStylestring导航栏样式,仅支持fault 默认样式,custom 自定
-
152020-12
小程序的项目配置文件project.config.json
配置项配置项子项数据类型参数详解miniprogramRootString指定小程序源码的目录(需为相对路径)qcloudRootString指定腾讯云项目的目录(需为相对路径)pluginRootString指定插件项目的目录(需为相对路径)compileTypeString编译类型,有效值miniprogram(小程序),plugin(小程序插件)libVersionString基础库版本appidString项目的 appid,只在新建项目时读取projectnameString项目名字,只在新建项目时读取settingObject项目详细设置es6Boolean是否启用 es6 转 es5postcssBoolean上传代码时样式是否自动补全minifiedBoolean上传代码时是否自动压缩urlCheckBoolean是否检查安全域名和 TLS 版本uglifyFileNameBoolean是否进行代码保护checkSiteMapBoolean是否打开SiteMap索引提示(
- 行业报告
- 电子书
- 电脑软件
- 手机软件
-
2021年全球新能源汽车行业回顾.pdf
2021年全球新能源车回顾: 消费崛起元年,中国制造耀眼 —— 长江证券研究所电力设备与新能源研究小组 2022-02-07, •证券研究报告 • 评级 看好 维持 分析师及联系人 分析师 邬博华 分析师 马军 分析师 叶之楠 分析师 司鸿历 SAC执业证书编号:S0490514040001 SAC执业证书编号:S0490515070001 SAC执业证书编号:S0490520090003 SAC执业证书编号:S0490520080002 电话:8621-61118797 电话:8621-61118720 电话:8621-61118797 电话:8621-61118797 电邮:
-
行业周报:2022年有望开启新一轮行业复苏,零部件迎来十年长牛.pdf
[汽Ta车bl和e_汽Tit车le零] 部件行业周报20220130 2022 年有望开启新一轮行业复苏,零部件迎来十年长牛 2022年01月30日 [Table_Summary] [Table_Invest] 推荐 维持评级 汽车周期定位:目前汽车行业库存周期处于被动补库阶段 本轮主动补库周期结束,行业于2021年5月开始进入被动补库阶段,被动补库 阶段汽车板块的投资特征是板块内部滞涨股补涨。 [Table_Author] 汽车零部件板块迎来中期、长期配置性机会 汽车周期当下周期定位利于零部件板块估值修复:汽车行业销量增速呈显著的周 期特征,景气度受库存周期驱动。2019年四季度汽
-
汽车智能化2022年度策略报告.pdf
证券研究报告· 行业年度投资策略报告· 汽车与零部件 汽车智能化2022年度策略: 承上启下,飞轮加速 证券分析师:黄细里/谭行悦/杨惠冰 执业编号:S0600520010001 联系邮箱:huangxl@dwzq.com.cn 联系电话:021-60199790 2022年1月30日,报告核心观点 智能化是2022年汽车供应链最吸引人的赛道。 2022年是本轮全球汽车百年变革的承上启下的关键时点,电动化是上半场,智能化是下半场。如果将 新能源汽车的渗透分为“0-1”、“1-10”、“10-100”三个阶段,那么截至2022年1月,中国市场 新能源汽车渗透率借助电动化技术的持续进步实现了0
-
从Q4财报看特斯拉生产制造革命.pdf
行业研究报告 汽车行业研究 2022年1月28日 从Q4财报看特斯拉生产制造革命 评级:推荐(维持) 国海证券研究所 刘虹辰(分析师) S0350521090005 liuhc@ghzq.com.cn 1,核心观点 单车成本不断下降,规模效应带动盈利能力持续提升,自由现金流充足。2021年特斯拉全年营收538亿美元,同比+71%;其中, 汽车业务营收472亿美元,同比+73%。2021年Q4,特斯拉毛利率27.4%,其中汽车销售业务毛利率30.6%,特斯拉毛利率持续 提升并全面领先主要OEM。扣掉新工厂资本开支等的65亿美元,2021年特斯拉在创造了55.2亿美元(同比+665%)的GAAP净
-
2022中国元宇宙白皮书.pdf
中国元宇宙白皮书.2022.01.26 第 1页,共538页 ,中国元宇宙白皮书.2022.01.26 主编简介 龚才春(男,1978-),国科创新研究院首席科学家,北京信息产业协会元 宇宙专家委员会(筹)发起人,中关村数字媒体产业联盟常务副秘书长,中关村 数字媒体产业联盟元宇宙实验室执行主任,国家互联网数据中心产业技术战略发 展联盟副主任委员。教授,博士生导师。2008年毕业于中国科学院计算技术研究 所,获工学博士学位,长期从事自然语言处理、大数据挖掘等领域的研究。原阿 里巴巴搜索研发专家,大街网首席科学家,职品汇创始人,中科金人工智能研究 院院长。 起草单位 北京信息产业协会 中关村数字
-
汽车芯片行业深度研究报告.pdf
行业报告 | 行业专题研究 半导体 证券研究报告 2022年01月28日 投资评级 汽车芯片七问七答:传统向智能变革,价值向成长重估 行业评级 强于大市(维持评级) 上次评级 强于大市 1.汽车芯片何以成为半导体行业新推动力? 智能化驱动下汽车行业有望实现产业变革升级,加速步入万物互联+万物智联的新时代。当前消费电子 作者 已先一步步入智能时代,而汽车行业正面临着智能化产业升级,整体过程可以类比功能机到智能机。叠 潘暕 分析师 加政策端碳中和推动,电动化浪潮迭起,看好新能源汽车在智能化+电动化驱动下加速起量。 SAC执业证书编号:S1110517070005 汽车智能+电动化带动整
-
车联网洞察报告之手机使用篇 (2022版).pdf
车市智能化涌现智能入口之争 车联网洞察报告之手机使用篇 (2022版) 易车研究院 2022年2月7日,团队成员 周 丽 君 高 英 蒋 若 薇 院长/首席分析 师 行业分析师 见习分析师/市 场 专 员,序 言 2021年,造手机的小米,为何突然造汽车?造汽车的吉利,为何突然造手机?看似南辕北 辙的造手机与造汽车的内部是否有必然联系?该联系与当下如火如荼的智能化趋势是否有关 联?该关联在手机与汽车的高度整合中,是否会重塑汽车行业的传统研发体系与行业竞争格 局?该重塑趋势下广大车企如何积极应对?基于这条线索分析,能否进一步探究上汽等车企捍 卫灵魂的根本目的是什么?华为等宣称不造车的核心逻辑是什
-
2021年电动车保值率排行榜及市场洞察.pdf
洞见 罗兰贝格 02.2022 / 上海 中国 2021 年电动车保值率排行榜及市场洞察,前言 2021 年,国内新能源汽车产业由政策单因素引导市场转向 优与科技基于大量的真实的二手车交易数据,构建多种影 供给共振内生需求驱动,中国汽车产业正在逐步从传统线 响因子共同作用的残值预测模型。本报告中,针对车龄满 - - 1 性产业链拓展成为以用户为中心的四层生态圈,“车 桩 年(及以上)的车型,通过残值预测模型输出预测结果, - - 站 人 云”多位一体的补能体系逐步成型。头部新势力品 并根据当前市场调研数据对模型输出结果进行修正,最终 1 牌凭借具有差异化的产品定位及智能化技术形成的护城河, 获
-
Rolan(快速启动工具) V2.2免激活已付费版
Rolan免费版是一款功能强大的快速启动工具,能够帮助用户轻松快速的启动各种应用程序、文档等,为电脑文件的使用管理提供了帮助。软件已经成功破解,无需注册码注册即可无限制、免费使用,全中文界面满足用户的各种使用需求。【软件功能】1、现代化设计,拥有现代化的外观,为 Windows而设计,并预置了很多很棒的主题
Rolan快速启动
- 人物美图
- 动物美图
- 风景美图
- 设计美图