技术分享
文章平均质量分 53
<a href="http://blog.yuxiangshi.cn/">
“雨夜”是一个技术分享和大家共同学习的博客!</a>
雨夜的博客
“雨夜”是一个技术分享和大家共同学习的博客,微信公众号“雨夜的博客”!
展开
-
如何通过puppetter实现PDF聚合阅读器初始模型以及产品思维构想
行业中puppeteer被称为傀儡师,又被称为提线木偶,它是一个 Node 库,它提供了一个高级 API 来通过控制 Chrome 或 Chromium。Puppeteer 默认运行,但可以配置为运行完整(非无头)Chrome 或 Chromium。原创 2022-08-22 22:21:57 · 646 阅读 · 1 评论 -
如何理解分治思想
最外面的三角形的边, 表示了盘子从一个柱子移动到另一个柱子最快的方式. 最大的三角形可以沿着中线分成三个次小的三角形, 就是上面由二级的汉诺塔组成三级的汉诺塔的逆向操作, 次小三角形相互之间的连线, 表示着最大的盘子的移动方式.原创 2022-05-04 13:40:19 · 2519 阅读 · 0 评论 -
如何深度理解排序算法(一)
以上三种算法均是排序算法当中常用到的,或者面试中常问的算法;三个算法的时间复杂度都为O(n2),如果要想使时间更短的话,那么大家就要去考虑下其他的算法或者去了解下堆这个概念和分治思想。原创 2022-04-23 12:35:02 · 653 阅读 · 0 评论 -
什么是算法?
以上几种算法都可以达到想要的结果,但是考虑到实际应用的场景以及后期更好的性能输出,还是要考虑它的时间复杂度和空间复杂度作为一个好算法的衡量标准,其次就是他的可读性。原创 2022-04-20 13:55:53 · 614 阅读 · 0 评论 -
ERROR: Could not find a valid gem ‘bundler’ (>= 0)解决方法
ERROR: Could not find a valid gem ‘bundler’ (>= 0)解决方法问题描述系统macOS,需要用到ruby gem,执行gem install bundler后报错:ERROR: Could not find a valid gem 'bundler' (>= 0), here is why: Unable to download data from https://ruby.taobao.org/ - SSL_connec原创 2021-10-21 21:19:17 · 3169 阅读 · 0 评论 -
gem install bundler SSL证书错误 解决办法
gem install bundler SSL证书错误 解决办法最近在windows10电脑上装上PentestBox后,直接用“msfconsole”命令启动metasploit时,却发现需要先让我执行ruby中的“gem install bundler”命令,意思是先让我安装一个bundler,结果却报了如下错误:ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20) ERROR:原创 2021-10-21 21:15:08 · 3465 阅读 · 0 评论 -
Could not find a valid gem ‘compass‘ (>= 0) in any repository compass安装失败解决方案
Could not find a valid gem ‘compass’ (>= 0) in any repository compass安装失败解决方案安装完成ruby gem 之后,通过 gem install compass 安装compass~~出现如下报错Could not find a valid gem ‘compass‘ (>= 0) in any repository然后尝试在 https://rubygems.org/ 下载 compass-1.0.3.gem 本原创 2021-10-21 21:00:56 · 894 阅读 · 0 评论 -
PHP常用函数整理
PHP常用函数整理array_since()从选择的下标开始取出$arr = array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);$arr1 = array_slice($arr,2); # 從arr的下標2開始取出foreach ($arr1 as $key=>$value){echo $key.'='.$value.'<br/>';}输出c=3<br/>d=4<br/>e=5原创 2021-10-20 22:21:11 · 194 阅读 · 0 评论 -
Flutter Insecure http is not allowed by platform
Flutter Insecure http is not allowed by platformFlutter 团队最近进行了此更改,现在不允许不安全的 http 连接。 https://flutter.dev/docs/release/break-changes/network-policy-ios-android我想知道如何将我的手机上的 Flutter 应用程序连接到我的 PC 上运行的本地 Go 服务器。我的服务器正在运行:http : //192.168.29.45 : 4001但它没有连原创 2021-10-20 22:11:04 · 1538 阅读 · 0 评论 -
接口测试笔记
接口测试笔记原文地址:接口测试笔记Apache - Jmeter 安装方法:准备好Jmeter安装包,解压到D盘jmeter文件夹此软件依赖于jdk打开环境变量,新建系统变量JMETER_HOME,路径为自己jmeter的bin文件夹所在所在 路径。如:D:\apache-jmeter-3.0(不含/bin)配置CLASSPATH变量,路径后增加:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jo原创 2021-10-10 12:09:41 · 277 阅读 · 0 评论 -
接口测试常见问题
接口测试常见问题原文地址:接口测试常见问题接口测试需要考虑的点/如何设计接口测试的用例?接口测试用例编写除了使用功能测试中最基本的等价类,边界值,因果图,错误推测,场景设计等方法外,还要考虑一些其他方面,首先我们要先进行冒烟测试,说白了就是传递正确的参数查看是否返回正确的结果然后还要考虑参数组合:因为参数有必填和非必填,参数的格式、长度,以及数据传输的业务流程中的一些限制,我们要考虑不同的参数组合的情况,以保证能够覆盖到所有的情况以及绕过验证、权限验证、参数是否加密最重要的是要考虑业务逻辑校原创 2021-10-09 22:44:18 · 16865 阅读 · 2 评论 -
接口自动化笔记
原文地址:接口自动化笔记配置:在pycharm中安装requests第三方库打开DOS命令或者在pycharm的terminal中输入pip install requests就可以安装了安装pyyaml 5.3.1第三方库打开DOS命令或者在pycharm的terminal中输入pip install pyyaml安装语法:使用单元测试框架class (类名):def setUP(self):passdef test_01(self):print(‘this is test01’原创 2021-10-09 22:37:57 · 265 阅读 · 0 评论 -
Python移动自动化测试面试准备
自动化测试工具原文地址:自动化测试工具InstrumenttationUIAutomator +uiautomatorviewerSelendroidRobotismAppiumselenium自动化框架Unittest框架单元测试数据驱动DDTpython的第三方库一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向、逆向等多种组合,所以在测试一个接口时,通常会编写多条case,而这些除了传参不同外,并没有什么区别。这个时原创 2021-10-09 22:34:50 · 7182 阅读 · 0 评论 -
Python 高级知识点总结
Python 高级知识点总结原文地址:Python 高级知识点总结一、可迭代对象,迭代器对象和生成器像list,tuple等这些序列是可以使用for…in…语句进行遍历输出的。这是为什么呢?这就要需要知道可迭代对象(Iterable),迭代器对象(Iterator)和生成器对象(Genertor)。1、什么是可迭代对象?把可以通过for…in…这类语句迭代读取一条数据提供我们使用的对象。2、可迭代对象的本质?可迭代对象通过__iter__方法向我们提供一个迭代器,我们在迭代一个可迭代对象的时原创 2021-10-09 22:24:40 · 460 阅读 · 0 评论 -
Python高级用法总结—(列表推导式,迭代器,生成器,装饰器)
原文地址:Python高级用法总结—(列表推导式,迭代器,生成器,装饰器)Python高级用法总结—(列表推导式,迭代器,生成器,装饰器)列表推导式(list comprehensions)场景1:将一个三维列表中所有一维数据为a的元素合并,组成新的二维列表。 最简单的方法:新建列表,遍历原三维列表,判断一维数组是否为a,若为a,则将该元素append至新列表中。 缺点:代码太繁琐,对于Python而言,执行速度会变慢很多。 针对场景1,我们首先应该想到列表解析式来处理:lista = [ite原创 2021-10-09 22:17:11 · 345 阅读 · 0 评论 -
Python高级知识
Python高级知识原文地址:Python高级知识# -*- coding: utf-8 -*-# !/usr/bin/python3# 切片# L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']# 取前3个元素# 笨办法# print(L[0], L[1], L[2])# 取前3个元素# r = []# n = 3# for i in range(n):# r.append(L[i])# print(r)# 取前3个元素原创 2021-10-09 22:06:16 · 106 阅读 · 0 评论 -
利用Lrzsz实现Windows/Linux之间文件下载和上传
利用Lrzsz实现Windows/Linux之间文件下载和上传Lrzsz是一款在linux里可代替ftp上传和下载的程序,提供 XMODEM,YMODEM ZMODEM文件传输协议的unix通信包 。只要输入一行简单的命令,就可以上传下载文件,无需打开 ftp 或者其他服务器文件管理软件。lrzsz安装# Debian / Ubuntu :apt-get updateapt-get install lrzsz -y# CentOS / RHEL :yum update -yyum ins原创 2021-06-15 23:51:42 · 752 阅读 · 1 评论 -
Dart基础语言学习 —变量的两种类型
Dart基础语言学习 —变量的两种类型弱类型var如果没有初始值,可以变成任何类型var a;a = 'dart-var';a = 123;a = true;a = {'key': 'val123'};a = ['abc'];Object动态任意类型,编译阶段检查类型Object a = 'dart-Object';a = 123;a = [2222];dynamic动态任意类型,编译阶段不检查检查类型 dynamic a = 'dart-dynamic'; a原创 2021-06-15 23:25:39 · 317 阅读 · 0 评论 -
Dart基础语言学习—常量
Dart基础语言学习—常量类型声明可以省略final String a = 'final-string-dart';final a = 'final-a-dart'const String a = 'const-string-a';const a = 'const-a';初始后不能再赋值final a = 'final-a';a = 'abc';const a = 'const-a';a = 'abc';不能和 var 同时使用final var a = 'final-v原创 2021-06-15 23:24:45 · 162 阅读 · 0 评论 -
Dart基础语言学习—数值
Dart基础语言学习—数值数值数值类型int整数值,其取值通常位于 -253 和 253 之间。double64-bit (双精度) 浮点数,符合 IEEE 754 标准。numint 和 double 都是 num 的子类。数值表示法 十进制、十六进制int a = 1001;int b = 0xABC;print([a, b]);科学计数法num a = 21.2e3;print([a]);数值转换// string -> int// string ->原创 2021-06-12 19:46:21 · 303 阅读 · 0 评论 -
Dart基础语言 — 布尔
Dart基础语言 — 布尔声明为了代表布尔值,Dart 有一个名字为 bool 的类型。 只有两个对象是布尔类型的:true 和 false 所创建的对象, 这两个对象也都是编译时常量。boolbool a;print(a);只有 true 对象才被认为是 true。 所有其他的值都是 flase。String name = 'dart';if(name) { print('this is name');}注意: 断言只在检查模式下运行有效,如果在生产模式 运行,则断言不会执行原创 2021-06-12 19:43:55 · 184 阅读 · 0 评论 -
Dart基础语言 — 字符串
Dart基础语言 — 字符串—单引号或者双引号String a = 'dart';String b = "dart";字符串模板var a = 123;String b = 'dart : ${a}';字符串连接var a = 'hello' + ' ' + 'ducafecat';var a = 'hello'' ''ducafecat';var a = 'hello' ' ' 'ducafecat';var a = 'hello'' ''ducafecat';原创 2021-06-12 19:42:02 · 339 阅读 · 0 评论 -
Dart基础语言 — 日期时间
Dart基础语言 — 日期时间声明var now = new DateTime.now();print(now);var d = new DateTime(2018, 10, 10, 9, 30);print(d);创建时间 UTCvar d = new DateTime.utc(2018, 10, 10, 9, 30);print(d);解析时间 IOS 8601var d1 = DateTime.parse('2018-10-10 09:30:30Z');print(d1);原创 2021-06-12 19:39:04 · 642 阅读 · 0 评论 -
Dart基础语言 — 列表
Dart基础语言 — 列表List 是一个有序列表var l = [1, 2, 3];print(l);自动List<int> l = new List();l..add(1)..add(2)..add(3);print(l);定长List<int> l = new List(3);// print(l[0]);l[0] = 1;l[1] = 2;l[2] = 3;print(l);属性| 名称 | 说明 || —— | ——原创 2021-06-12 19:37:18 · 317 阅读 · 0 评论 -
Dart基础语言 — Map
Dart基础语言 — Mapkey value 形式的集合var a = {'name': 'ducafecat', 'web': 'www.ducafecat.tech'};松散var a = new Map();a['name'] = 'ducafecat';a['web'] = 'www.ducafecat.tech';a[0] = 'abc';强类型var b = new Map<int, String>();b[0] = 'java';b[1] = 'pyth原创 2021-06-12 19:35:37 · 624 阅读 · 0 评论 -
Dart基础语言 — Set
Dart基础语言 — SetSet 是一个元素唯一的有序队列松散// var a = new Set();// a.add('java');// a.add('php');// a.add('python');// a.add('java');// a.add('sql');// a.add('swift');// a.add('dart');强类型// var b = new Set<String>();// b.addAll(['dart', 'c#', 'j#'原创 2021-06-12 19:33:17 · 1059 阅读 · 0 评论 -
Dart基础语言 — Runes
Dart基础语言 — RunesRunesRunes 对象是一个 32位 字符对象,用来表示一个字。这样设计也是考虑兼容 UTF-16 四个字节的情况。length 和 runes.length 比较String a = '';print(a.length);print(a.runes.length);>> 输出2 // 标识占 2 个 16 位字符1 // 表示占 1 个 32 位字符runes 是一个 32 位字符对象操作 32-bit Unicode 字符原创 2021-06-12 19:31:07 · 454 阅读 · 0 评论 -
Dart基础语言 — symbol、enum、comments
Dart基础语言 — symbol、enum、comments符号 SymbolDart语言的标识符,在反射中用的很普及,特别是很多发布包都是混淆后的。import 'dart:mirrors';Symbol libraryName = new Symbol('dart.core');MirrorSystem mirrorSystem = currentMirrorSystem();LibraryMirror libMirror = mirrorSystem.findLibrary(libra原创 2021-06-12 19:30:04 · 361 阅读 · 0 评论 -
Dart基础语言 — 函数 Function
Dart基础语言 — 函数 Function函数定义int add(int x) { return x + 1;}调用add(1);可选参数int add(int x, [int y, int z]) { if (y == null) { y = 1; } if (z == null) { z = 1; } return x + y + z;}调用int(1, 2);可选参数 默认值int add(int x, [int y = 1,原创 2021-06-12 19:28:41 · 475 阅读 · 0 评论 -
MYSQL中UNION和UNION ALL的区别有哪些?
在mysql中如何想要对两个结果集进行合并操作,可以使用UNION和UNION ALL,如果只是想要去除掉重复的记录,属于UNION ALL 即可,但是如何想要除掉没有重复行数据,就要使用Union。本文详细向大家介绍mysql中UNION和UNION ALL的区别。1、具体作用不同UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)2、使用不同使用UNION关键字是将所有查询结果合并到一原创 2021-06-06 22:27:22 · 2181 阅读 · 3 评论 -
Git冲突导致的Please commit your changes or stash them before you merge
Git冲突导致的Please commit your changes or stash them before you merge用git pull来更新代码的时候,遇到了下面的问题:error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.phpPlease, commit your changes or stash them before you can me原创 2021-05-25 01:29:24 · 260 阅读 · 0 评论 -
git错误:对象文件为空(object-file-is-empty)的解决方案
git错误:对象文件为空(object-file-is-empty)的解决方案背景介绍在日常开发过程中我们可能因为操作不当导致git版本库出问题,最经常出的一个问题就是对象文件为空错误object-file-is-empty,一般提示如下所示:error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is emptyfatal: loose object 3165329bb680e30595f242b7c4原创 2021-05-25 01:27:32 · 5011 阅读 · 2 评论 -
Nginx 开启gzip压缩,减轻服务器压力
Nginx 开启gzip压缩,减轻服务器压力优化服务器的方案有很多种、常用的是缓存静态文件和开启gzip,还有cdn加速、使用cache缓存数据,本次主要根据自身的网站、采取的优化方案。首先、Vim打开Nginx配置文件vim /usr/local/nginx/conf/nginx.conf如果找不到,可以通过[root@VM-0-16-centos ~]# sudo nginx -t修改或者添加下面这段gzip on; # 开启Gzip gzip_min_length原创 2021-05-11 00:17:48 · 200 阅读 · 0 评论 -
golang实现cron定时任务
golang实现cron定时任务在编写爬虫的时候,需要定时抓取实时的新闻资讯、原来采用的linux的crontab,但是发现并不是很灵活、而且不能定制,所以就采用golang写了一套、发现网上的文章、有很多坑、所以整理了一套代码。下载包╰$ go get github.com/robfig/cron代码篇:package mainimport ( "fmt" "github.com/robfig/cron" "time") // 定时任务,可以设置具体的时间,三秒执行原创 2021-04-21 00:19:01 · 1278 阅读 · 0 评论 -
go语言实现邮件发送
go语言实现邮件发送安装相关的包 go get github.com/jordan-wright/email代码篇:package mainimport ( "fmt" "github.com/jordan-wright/email" "log" "net/smtp" "time")func main() { e := email.NewEmail() //设置发送方的邮箱 e.From = "XXXXXXXXX@163.com" // 设置接收方的邮箱原创 2021-04-18 01:53:42 · 1988 阅读 · 0 评论 -
golang操作MySQL的具体案例
golang操作MySQL的具体案例代码篇的基础操作:package mainimport ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx")type Profile struct { Id int `db:"id"` Student string `db:"student"`}var Db *sqlx.DBfunc init() { database, e原创 2021-04-17 02:30:29 · 311 阅读 · 0 评论 -
NodeJs和puppeteer结合的爬虫方案
NodeJs和puppeteer结合的爬虫方案由于对NodeJs的数据库操作是异步的,不是同步的,所以去重的方案,直接是删除之前添加的数据,在添加新的。代码篇:const puppeteer = require('puppeteer');const mysql = require('mysql');const connection = mysql.createConnection({ host: 'localhost', user: 'root', passwor原创 2021-04-16 01:15:35 · 505 阅读 · 0 评论 -
基于NodeJs操作MySQL实现基础操作
基于NodeJs操作MySQL实现基础操作实现数据库的增删改查代码篇const mysql = require('mysql');const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '1234567890', database: 'Demo'});connection.connect();var addSql = 'INSERT I原创 2021-04-11 13:44:16 · 168 阅读 · 0 评论 -
基于NodeJs的Redis使用
基于NodeJs的Redis基础操作满足日常使用Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。cnpm install redis新建redis.js,引入redisvar redis = require('redis');var client = redis.createClient(6379,'127.0.0.1');字符串操作client.set('hello','this原创 2021-04-09 23:28:16 · 305 阅读 · 0 评论 -
利用puppeteer采集百度数据,并写入json文件
利用puppeteer采集百度数据,并写入json文件代码篇,属于日常采集篇,后期会mongdb来存贮数据const puppeteer = require("puppeteer");const fs = require('fs');(async()=>{ try{ const browser = await puppeteer.launch({ headless:true, args: [ '–disable原创 2021-04-08 00:27:12 · 698 阅读 · 0 评论