• 原生Js 实现的简单无缝滚动轮播图的示例代码

    2021-05-10 22:52:52

    简单无缝滚动轮播图存在很多漏洞,就是后期增加图片时会很不方便,需要改动的地方也很多,耦合性也很强,只适用于一部分程序,所以我们可以通过改动图片结构和计算折算点的方式,升级代码。  原简单的滚动轮播代码<html><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">

  • 原生Js 实现的简单无缝滚动轮播图的示例代码

    2021-05-10 22:52:52

    简单无缝滚动轮播图存在很多漏洞,就是后期增加图片时会很不方便,需要改动的地方也很多,耦合性也很强,只适用于一部分程序,所以我们可以通过改动图片结构和计算折算点的方式,升级代码。  原简单的滚动轮播代码<html><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">

  • PyTorch的Debug指南

    2021-05-07 20:53:31

    一、ipdb 介绍很多初学 python 的同学会使用 print 或 log 调试程序,但是这只在小规模的程序下调试很方便,更好的调试应该是在一边运行的时候一边检查里面的变量和方法。感兴趣的可以去了解 pycharm 的 debug 模式,功能也很强大,能够满足一般的需求,这里不多做赘述,我们这里介绍一个更适用于 pytorch 的一个灵活的 pdb 交互式调试工具。Pdb 是一个交互式的调试工

  • PyTorch的Debug指南

    2021-05-07 20:53:31

    一、ipdb 介绍很多初学 python 的同学会使用 print 或 log 调试程序,但是这只在小规模的程序下调试很方便,更好的调试应该是在一边运行的时候一边检查里面的变量和方法。感兴趣的可以去了解 pycharm 的 debug 模式,功能也很强大,能够满足一般的需求,这里不多做赘述,我们这里介绍一个更适用于 pytorch 的一个灵活的 pdb 交互式调试工具。Pdb 是一个交互式的调试工

  • 详解如何使用Node.js实现热重载页面

    2021-05-06 18:53:15

    前言前不久我结合browser-sync+gulp+gulp-nodemon实现了一款生产环境热更新(我之前理解有点偏差,应该定义为热更新,不是热重载)的项目脚手架,那么,今天我们将使用Node.js实现一个热重载页面。那么,我今天就总结一下吧,以防止大家也跟我一样。热重载所谓热重载就是页面每次改动,不需要手动去刷新,可自动刷新。热更新浏览器的无刷新更新,允许在运行时替换,添加,删除各种模块,而无

  • 详解如何使用Node.js实现热重载页面

    2021-05-06 18:53:15

    前言前不久我结合browser-sync+gulp+gulp-nodemon实现了一款生产环境热更新(我之前理解有点偏差,应该定义为热更新,不是热重载)的项目脚手架,那么,今天我们将使用Node.js实现一个热重载页面。那么,我今天就总结一下吧,以防止大家也跟我一样。热重载所谓热重载就是页面每次改动,不需要手动去刷新,可自动刷新。热更新浏览器的无刷新更新,允许在运行时替换,添加,删除各种模块,而无

  • golang 定时任务方面time.Sleep和time.Tick的优劣对比分析

    2021-05-04 13:53:10

    golang 写循环执行的定时任务,常见的有以下三种实现方式1、time.Sleep方法:for {   time.Sleep(time.Second)   fmt.Println("我在定时执行任务")}2、time.Tick函数:t1:=time.Tick(3*time.Second)for {   select {   case <-t1:      fmt.Println("t1定时器")

  • golang 定时任务方面time.Sleep和time.Tick的优劣对比分析

    2021-05-04 13:53:10

    golang 写循环执行的定时任务,常见的有以下三种实现方式1、time.Sleep方法:for {   time.Sleep(time.Second)   fmt.Println("我在定时执行任务")}2、time.Tick函数:t1:=time.Tick(3*time.Second)for {   select {   case <-t1:      fmt.Println("t1定时器")

  • 浅谈JS前端模块化的几种规范

    2021-05-04 11:53:14

    前言有这样一个场景,客户端运行很久,但是法务部和数据部需要收集用户的一些信息,这些信息收集好之后需要进行相应的数据处理,之后上报到服务端。客户端提供一个纯粹的js执行引擎,不需要 WebView 容器。iOS 端有成熟的JavaScriptCore、Android 可以使用 V8 引擎。这样一个引擎配套有一个 SDK,访问 Native 的基础能力和数据运算能力,可以看成是一个阉割版的 Hybri

  • 浅谈JS前端模块化的几种规范

    2021-05-04 11:53:14

    前言有这样一个场景,客户端运行很久,但是法务部和数据部需要收集用户的一些信息,这些信息收集好之后需要进行相应的数据处理,之后上报到服务端。客户端提供一个纯粹的js执行引擎,不需要 WebView 容器。iOS 端有成熟的JavaScriptCore、Android 可以使用 V8 引擎。这样一个引擎配套有一个 SDK,访问 Native 的基础能力和数据运算能力,可以看成是一个阉割版的 Hybri

  • go 类型转换方式(interface 类型的转换)

    2021-05-04 11:53:13

    go 在做类型转换时,报错:cannot convert m (type interface {}) to type Msg: need type assertion原因:go 的在 interface 类型转换的时候, 不是使用类型的转换, 而是使用t,ok := i.(T)例子://处理网络消息func ProcessMsg(m interface{}){    //var a interfa

  • go 类型转换方式(interface 类型的转换)

    2021-05-04 11:53:13

    go 在做类型转换时,报错:cannot convert m (type interface {}) to type Msg: need type assertion原因:go 的在 interface 类型转换的时候, 不是使用类型的转换, 而是使用t,ok := i.(T)例子://处理网络消息func ProcessMsg(m interface{}){    //var a interfa

  • 解决Golang中goroutine执行速度的问题

    2021-05-03 10:54:30

    突然想到了之前一直没留意的for循环中开goroutine的执行顺序问题,就找了段代码试了试,试了几次后发现几个有意思的地方,我暂时没有精力往更深处挖掘,希望有golang大神能简单说一说这几个地方是怎么回事。代码:package main  import "fmt" func Count(ch chan int) {fmt.Println("Count doing")ch <- 1fmt.Pri

  • 解决Golang中goroutine执行速度的问题

    2021-05-03 10:54:30

    突然想到了之前一直没留意的for循环中开goroutine的执行顺序问题,就找了段代码试了试,试了几次后发现几个有意思的地方,我暂时没有精力往更深处挖掘,希望有golang大神能简单说一说这几个地方是怎么回事。代码:package main  import "fmt" func Count(ch chan int) {fmt.Println("Count doing")ch <- 1fmt.Pri

  • Vue项目中如何封装axios(统一管理http请求)

    2021-05-03 10:53:35

    1、需求说明在使用Vue.js框架开发前端项目时,会经常发送ajax请求服务端接口,在开发过程中,需要对axios进一步封装,方便在项目中的使用。2、Vue项目结构在本地创建Vue项目,目录结构如下: - public  静态资源文件 - src |- assets  静态资源目录 |- components 公共组件目录 |- http   axios封装目录 |- router  路由管理目录

  • Vue项目中如何封装axios(统一管理http请求)

    2021-05-03 10:53:35

    1、需求说明在使用Vue.js框架开发前端项目时,会经常发送ajax请求服务端接口,在开发过程中,需要对axios进一步封装,方便在项目中的使用。2、Vue项目结构在本地创建Vue项目,目录结构如下: - public  静态资源文件 - src |- assets  静态资源目录 |- components 公共组件目录 |- http   axios封装目录 |- router  路由管理目录

  • vscode搭建STM32开发环境的详细过程

    2021-05-03 10:53:29

    需要安装的软件 vscode必装插件:    C/C++:用于提供高亮显示和代码补全    Cortex-Debug:用于提供调试配置makemake工具可以直接下载xPack项目提供的windows-build-tools工具里面带了make工具。Release xPack Windows Build Tools v4.2.1-2 · xpack-dev-tools/windows-build-

  • vscode搭建STM32开发环境的详细过程

    2021-05-03 10:53:29

    需要安装的软件 vscode必装插件:    C/C++:用于提供高亮显示和代码补全    Cortex-Debug:用于提供调试配置makemake工具可以直接下载xPack项目提供的windows-build-tools工具里面带了make工具。Release xPack Windows Build Tools v4.2.1-2 · xpack-dev-tools/windows-build-

  • 详解Redis实现限流的三种方式

    2021-04-28 13:56:43

    面对越来越多的高并发场景,限流显示的尤为重要。      当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。第一种:基于Redis的setnx的操作      我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(

  • 详解Redis实现限流的三种方式

    2021-04-28 13:56:43

    面对越来越多的高并发场景,限流显示的尤为重要。      当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。第一种:基于Redis的setnx的操作      我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(

  • golang通过递归遍历生成树状结构的操作

    2021-04-28 13:53:32

    业务场景:一个机构查询科室信息的时候,希望返回树状结构的嵌套格式;解决办法:通过递归和指针,嵌套成对应的结构体;借鉴了前人的代码,但是最后递归的指针调用自己也是调试了半天才出来,这里献上完整的示例代码.package mainimport ("fmt""encoding/json") type dept struct {DeptId string `json:"deptId"`FrameDeptS

  • golang通过递归遍历生成树状结构的操作

    2021-04-28 13:53:32

    业务场景:一个机构查询科室信息的时候,希望返回树状结构的嵌套格式;解决办法:通过递归和指针,嵌套成对应的结构体;借鉴了前人的代码,但是最后递归的指针调用自己也是调试了半天才出来,这里献上完整的示例代码.package mainimport ("fmt""encoding/json") type dept struct {DeptId string `json:"deptId"`FrameDeptS

  • python爬取新闻门户网站的示例

    2021-04-25 17:53:22

    项目地址:https://github.com/Python3Spiders/AllNewsSpider如何使用每个文件夹下的代码就是对应平台的新闻爬虫    py 文件直接运行    pyd 文件需要,假设为 pengpai_news_spider.pyd将 pyd 文件下载到本地,新建项目,把 pyd 文件放进去项目根目录下新建 runner.py,写入以下代码即可运行并抓取import pe

  • python爬取新闻门户网站的示例

    2021-04-25 17:53:22

    项目地址:https://github.com/Python3Spiders/AllNewsSpider如何使用每个文件夹下的代码就是对应平台的新闻爬虫    py 文件直接运行    pyd 文件需要,假设为 pengpai_news_spider.pyd将 pyd 文件下载到本地,新建项目,把 pyd 文件放进去项目根目录下新建 runner.py,写入以下代码即可运行并抓取import pe

  • Go缓冲channel和非缓冲channel的区别说明

    2021-04-25 13:53:23

    在看本篇文章前我们需要了解阻塞的概念在执行过程中暂停,以等待某个条件的触发 ,我们就称之为阻塞在Go中我们make一个channel有两种方式,分别是有缓冲的和没缓冲的缓冲channel 即 buffer channel 创建方式为 make(chan TYPE,SIZE)如 make(chan int,3) 就是创建一个int类型,缓冲大小为3的 channel非缓冲channel 即 unbu

  • Go缓冲channel和非缓冲channel的区别说明

    2021-04-25 13:53:23

    在看本篇文章前我们需要了解阻塞的概念在执行过程中暂停,以等待某个条件的触发 ,我们就称之为阻塞在Go中我们make一个channel有两种方式,分别是有缓冲的和没缓冲的缓冲channel 即 buffer channel 创建方式为 make(chan TYPE,SIZE)如 make(chan int,3) 就是创建一个int类型,缓冲大小为3的 channel非缓冲channel 即 unbu

  • 解决Django transaction进行事务管理踩过的坑

    2021-04-24 17:53:27

    概要Transaction是django进行数据库原子性操作在python层面上的实现。简单来说, 被transaction.atomic()包裹的代码块只在代码块顺利完成后进行数据库层面的commit。实际开发当中,遇到了一些问题。1. transaction事务内不执行数据库的commit操作除非手动committransaction最基本的功能。代码场景:在事务当前启动celery异步任务,

  • 解决Django transaction进行事务管理踩过的坑

    2021-04-24 17:53:27

    概要Transaction是django进行数据库原子性操作在python层面上的实现。简单来说, 被transaction.atomic()包裹的代码块只在代码块顺利完成后进行数据库层面的commit。实际开发当中,遇到了一些问题。1. transaction事务内不执行数据库的commit操作除非手动committransaction最基本的功能。代码场景:在事务当前启动celery异步任务,

  • c# 通过内存映射实现文件共享内存的示例代码

    2021-04-24 14:53:31

    内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就像操作进程空间里的地址一样了,比如使用c语言的 memcpy等内存操作的函数。这种方法能够很好的应用在需要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高共享内存是内存映射文件的一种特殊情况,内存映射的是一块内存,而非磁盘上的文件。共享内存的主语是进程(Process),操作系统默认会给

  • c# 通过内存映射实现文件共享内存的示例代码

    2021-04-24 14:53:31

    内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就像操作进程空间里的地址一样了,比如使用c语言的 memcpy等内存操作的函数。这种方法能够很好的应用在需要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高共享内存是内存映射文件的一种特殊情况,内存映射的是一块内存,而非磁盘上的文件。共享内存的主语是进程(Process),操作系统默认会给

  • java关于并发模型中的两种锁知识点详解

    2021-04-02 11:54:03

    1、悲观锁悲观锁假设最坏的情况(如果果你不锁门,那么捣蛋鬼就会闯入并搞得一团糟),只有在确保其他线程不受干扰(获得正确的锁)的情况下才能执行。一般实现如独占锁等。安全性更高,但中低并发性效率更低。2、乐观锁乐观锁通过冲突检查机制判断更新过程中是否存在其他线程干扰。如果存在,操作将失败,重试(也可以不重试)。CAS等常见实现。一些乐观锁削弱了一致性,但在中低并发性下效率大大提高。知识点扩展:并行与分

  • java关于并发模型中的两种锁知识点详解

    2021-04-02 11:54:03

    1、悲观锁悲观锁假设最坏的情况(如果果你不锁门,那么捣蛋鬼就会闯入并搞得一团糟),只有在确保其他线程不受干扰(获得正确的锁)的情况下才能执行。一般实现如独占锁等。安全性更高,但中低并发性效率更低。2、乐观锁乐观锁通过冲突检查机制判断更新过程中是否存在其他线程干扰。如果存在,操作将失败,重试(也可以不重试)。CAS等常见实现。一些乐观锁削弱了一致性,但在中低并发性下效率大大提高。知识点扩展:并行与分

  • Python中使用Lambda函数的5种用法

    2021-04-02 08:54:01

    引言Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一。支持多编程范例的 Python 也提供了一种简单的方法来定义 lambda 函数。用 Python 编写 lambda 函数的模板是:lambda arguments : expression它包括三个部分:· Lambda 关键字· 函数将接收的参数· 结果为函数返回值的表达式由于它的简单性,lambda 函数可以使我们的 P

  • Python中使用Lambda函数的5种用法

    2021-04-02 08:54:01

    引言Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一。支持多编程范例的 Python 也提供了一种简单的方法来定义 lambda 函数。用 Python 编写 lambda 函数的模板是:lambda arguments : expression它包括三个部分:· Lambda 关键字· 函数将接收的参数· 结果为函数返回值的表达式由于它的简单性,lambda 函数可以使我们的 P

  • 第一次启动idea设置方法(图文教程)

    2021-04-02 08:26:13

      下载最新的 IDEA 2020 版本安装包  可以选择从 IDEA 官网下载:  https://www.jetbrains.com/idea/download  一、Idea的第一次启动  二、Idea配置Tomcat  配置tomcat:  将tomcat的jar包依赖进hello_idea工程中:  三、Idea的相关设置  主题的选择:  快捷键的配置:  包的自动导入的配置:  增强

  • 第一次启动idea设置方法(图文教程)

    2021-04-02 08:26:13

      下载最新的 IDEA 2020 版本安装包  可以选择从 IDEA 官网下载:  https://www.jetbrains.com/idea/download  一、Idea的第一次启动  二、Idea配置Tomcat  配置tomcat:  将tomcat的jar包依赖进hello_idea工程中:  三、Idea的相关设置  主题的选择:  快捷键的配置:  包的自动导入的配置:  增强

  • python pyppeteer 破解京东滑块功能的代码

    2021-03-29 16:54:25

    Pyppeteer简介介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web程序自动测试等任务。在上篇文章给大家详细介绍了python爬虫 Pyppeteer使用方法解析 ,感兴趣的朋友可以点击查看。今天给大家介绍

  • python pyppeteer 破解京东滑块功能的代码

    2021-03-29 16:54:25

    Pyppeteer简介介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web程序自动测试等任务。在上篇文章给大家详细介绍了python爬虫 Pyppeteer使用方法解析 ,感兴趣的朋友可以点击查看。今天给大家介绍

  • UltraEdit怎么快速删除空格? UltraEdit批量删除空行的技巧

    2021-03-29 11:57:52

    UltraEdit怎么批量删除空行?代码中的空行很多,看上去很乱,想要删除空格,该怎么操作呢?下面我们就来看看详细的教程。软件名称:UltraEdit(代码编辑器) v28.00.0.114 64位中文绿色已激活版软件大小:70.5更新时间:2021-03-12立即下载如图,下面很多语句中有空行。点击搜索。点击替换。在上面输入正则表达式^p$,下面输入空格即可。点击正则表达。如图点击替换。效果如图

  • UltraEdit怎么快速删除空格? UltraEdit批量删除空行的技巧

    2021-03-29 11:57:52

    UltraEdit怎么批量删除空行?代码中的空行很多,看上去很乱,想要删除空格,该怎么操作呢?下面我们就来看看详细的教程。软件名称:UltraEdit(代码编辑器) v28.00.0.114 64位中文绿色已激活版软件大小:70.5更新时间:2021-03-12立即下载如图,下面很多语句中有空行。点击搜索。点击替换。在上面输入正则表达式^p$,下面输入空格即可。点击正则表达。如图点击替换。效果如图

  • UltraEdit怎么在左侧显示行数变化指示器?

    2021-03-29 11:57:20

    UltraEdit怎么设置显示行数变化指示器?在进行使用UltraEdit的编辑的代码的过程中,就需要的是对当前的进行编辑的代码的过程中,就需要的不知道是否有行数的变化,就需要的是使用变化指示器,今天我们就来看看UltraEdit设置显示行数变化指示器的技巧。软件名称:UltraEdit(代码编辑器) v28.00.0.114 64位中文绿色已激活版软件大小:70.5更新时间:2021-03-12

  • UltraEdit怎么在左侧显示行数变化指示器?

    2021-03-29 11:57:20

    UltraEdit怎么设置显示行数变化指示器?在进行使用UltraEdit的编辑的代码的过程中,就需要的是对当前的进行编辑的代码的过程中,就需要的不知道是否有行数的变化,就需要的是使用变化指示器,今天我们就来看看UltraEdit设置显示行数变化指示器的技巧。软件名称:UltraEdit(代码编辑器) v28.00.0.114 64位中文绿色已激活版软件大小:70.5更新时间:2021-03-12

  • c# 异步编程入门

    2021-03-29 09:54:10

    一、什么算异步?广义来讲,两个工作流能同时进行就算异步,例如,CPU与外设之间的工作流就是异步的。在面向服务的系统中,各个子系统之间通信一般都是异步的,例如,订单系统与支付系统之间的通信是异步的,又如,在现实生活中,你去馆子吃饭,工作流是这样的,点菜->下单->做你的事->上菜->吃饭,这个也是异步的,具体来讲你和厨师之间是异步的,异步是如此重要,因外它代表者高效率(两者或两者以上的工作可以同时进

  • c# 异步编程入门

    2021-03-29 09:54:10

    一、什么算异步?广义来讲,两个工作流能同时进行就算异步,例如,CPU与外设之间的工作流就是异步的。在面向服务的系统中,各个子系统之间通信一般都是异步的,例如,订单系统与支付系统之间的通信是异步的,又如,在现实生活中,你去馆子吃饭,工作流是这样的,点菜->下单->做你的事->上菜->吃饭,这个也是异步的,具体来讲你和厨师之间是异步的,异步是如此重要,因外它代表者高效率(两者或两者以上的工作可以同时进

  • R语言关于变量的知识点总结

    2021-03-28 10:54:23

    变量为我们提供了我们的程序可以操作的命名存储。 R语言中的变量可以存储原子向量,原子向量组或许多Robject的组合。 有效的变量名称由字母,数字和点或下划线字符组成。 变量名以字母或不以数字后跟的点开头。            变量名      合法性      原因              var_name2.      有效      有字母,数字,点和下划线              V

  • R语言关于变量的知识点总结

    2021-03-28 10:54:23

    变量为我们提供了我们的程序可以操作的命名存储。 R语言中的变量可以存储原子向量,原子向量组或许多Robject的组合。 有效的变量名称由字母,数字和点或下划线字符组成。 变量名以字母或不以数字后跟的点开头。            变量名      合法性      原因              var_name2.      有效      有字母,数字,点和下划线              V

  • Android事件分发机制全面解析

    2021-03-27 11:54:22

    事件分发机制事件分发机制的两个阶段:  分发:事件从父视图往子视图分发,被拦截后不再传递,进入回溯阶段  回溯:事件从子视图往父视图回溯,被消费后不再回溯关键方法:  ViewGroup.dispatchTouchEvent 往子视图分发事件  ViewGroup.onInterceptTouchEvent 返回 true 表示拦截分发事件,不再传递,进入当前视图 onTouchEvent  Vi

  • Android事件分发机制全面解析

    2021-03-27 11:54:22

    事件分发机制事件分发机制的两个阶段:  分发:事件从父视图往子视图分发,被拦截后不再传递,进入回溯阶段  回溯:事件从子视图往父视图回溯,被消费后不再回溯关键方法:  ViewGroup.dispatchTouchEvent 往子视图分发事件  ViewGroup.onInterceptTouchEvent 返回 true 表示拦截分发事件,不再传递,进入当前视图 onTouchEvent  Vi

  • python匿名函数的实例用法

    2021-03-26 10:55:09

    一般情况下,lambda就像是一个函数简化器,它允许在所用代码中嵌入函数的定义。它们完全是可选的(一直都可以使用def替换它们),但只需嵌入少量可执行代码,就能使代码结构更加简洁,从而大大简化代码复杂性,提高代码可读性。1、优点(1)减少重复代码;(2)模块化代码。2、实例# def函数def square(x):  return x**2squared = map(square, [1, 2,

  • python匿名函数的实例用法

    2021-03-26 10:55:09

    一般情况下,lambda就像是一个函数简化器,它允许在所用代码中嵌入函数的定义。它们完全是可选的(一直都可以使用def替换它们),但只需嵌入少量可执行代码,就能使代码结构更加简洁,从而大大简化代码复杂性,提高代码可读性。1、优点(1)减少重复代码;(2)模块化代码。2、实例# def函数def square(x):  return x**2squared = map(square, [1, 2,

 2931    1 2 3 4 5 6 7 8 9 10 下一页 尾页

分类点击榜

    栏目ID=0的表不存在(操作类型=0)

分类评论榜

    栏目ID=0的表不存在(操作类型=0)

微信扫一扫

易采站长站微信账号