- 博客(123)
- 收藏
- 关注
原创 爬虫设计概念
有任务表,结果表 1、创建表 2、添加任务 首先查看是否创建任务表 - 创建了 是否有任务 没有的话添加任务 有 return - 没有创建任务表 3、执行任务 while True: 获取任务表里tag =1的任务 ...
2020-09-22 12:04:44
268
原创 spider-gaode-3
import requests import json import time import pandas as pd import hashlib import random from django.shortcuts import render,HttpResponse from . import models sl = set() # url存储 count = 0 # key计数 req_count = 0 # 请求数量 keys = ['227b360433411dd173a81ab636a8
2020-09-14 17:41:11
363
原创 spider-gaode-2
import requests import json import time import pandas as pd import hashlib import random sl = set() # url存储 count = 0 # key计数 keys = ['227b360433411dd173a81ab636a89543','227b360433411dd173a81ab636a89543'] def getTypes(): df = pd.read_excel('./amap_poi
2020-09-13 16:56:03
257
原创 docker-前提知识
1、前提知识 强制:熟悉linux命令 建议:git 2、docker为什么会出现 职责 开发交付-镜像(代码 war包,配置,系统,数据),运维ubunto centos上部署 运维和开发产生问题的地方 环境、配置 3、什么是docker? 解决了运行环境和配置问题的软件容器,方便持续集成并有助于整体发布的容器虚拟化技术 4、docker能干嘛? 1)传统虚拟机:一种操作系统运行另一种操作系统(应用程序、操作系统和硬件三者逻辑不变),其实就是个文件,不用了就删掉,对其他部分毫无影响 缺点
2020-09-13 10:14:58
269
原创 spider-df
import pandas as pd df = pd.read_excel('./amap_poicode.xlsx',sheet_name='POI分类与编码(中英文)') print(df.iloc[:,1])
2020-09-12 19:43:00
129
原创 gaode-spider
import requests import json import time def getjson(page): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36' } pa = { 'key': '227b36043341
2020-09-12 17:03:06
210
原创 scripy-spider
1、 是什么? 是一个非常强大的爬虫框架,框架,已经为你实现了好多功能,你只需要将你的精力放到自己的业务逻辑中即可。多进程、多线程、去重队列,框架为你实现好了,你不用管。底层语言使用python实现的,所以你可尝试看源码学习它 2、安装:pip install scrapy 3、认识框架 引擎(engine)、调度器(scheduler)、爬虫(spiders)、管道(pipeline)、下载器(downloader) 4、工作原理 见百鸟朝凤图 5、使用 (1)新建工程 scrapy startproje
2020-09-12 09:59:53
152
原创 docker
1、什么是docker? 2、为什么要用docker? 3、能解决什么问题? 4、跟大家有什么关系? 目标:部署一套服务 条件:一台电脑,具备软件(lamp、lnmp) 问题:业务添加,添加电脑,1,2,3,4,5 … n,多台机器安装设计node版本,npm版本 解决:docker docker: 容器、镜像、仓库 镜像:类似windows系统,也可以是一个压缩包-可复制 通过命令-> 容器 ...
2020-09-06 10:11:31
118
原创 node面试问题
1、什么虚拟DOM? 博文参考 2、什么是长连接和短连接? 博文参考 3、前端接收的数据怎么优化? 从数据上处理:分页分表,比如前端可以把数据分页展示,后端也分段吐数据 从渲染上解决:2.1 异步渲染,比如进入页面先不渲染,然后加载好页面再渲染。2.2 局部渲染:只渲染目前可见区域的数据,再渲染次屏数据。2.3 还有性能瓶颈,可以考虑web worker 做压缩和解码,也可以考虑离屏canvas做预渲染。3. 减少网络耗时:压缩数据,gzip等 4、浏览器或移动端适配 参考博文 5、websocket和ge
2020-08-20 10:16:37
418
原创 项目上线相关配置
1、通过node创建web服务器 2、开gzip配置(针对服务端) 开启文件的Gzip服务网络传输压缩 cnpm i compression -D const compression = require('compression') //一定将这段代码放到静态托管之前 3、配置https服务 const options = { cert:fs.readFileSync('./full-chain.pem'), key:fs.readFileSync('./private.key') }
2020-08-16 12:09:41
213
原创 js常用数组方法
改变原数组函数:push、pop,shift、unshift,sort(需函),reverse,splice 不改变原数组函数:join,slice,foreach,map(需函),filter(需函),every(需函),some(需函) 1、数组中元素拼接(join())(原数组不会改变) var arr = [1,2,3]; console.log(arr.join('-'))//1-2-3 2、push()和pop()(原数组改变) //push(): 把里面的内容添加到数组末尾,并返回修改后
2020-08-14 10:38:36
215
原创 项目优化
1、利用babel-plugin-transform-remove-console在执行build期间移除所有console babel.config.js //注意把包在装开发依赖里 // 这是项目发布阶段需要用到的babel插件 const prodPlugins = []; if(process.env.NODE_ENV == 'production'){ prodPlugins.push('transform-remove-console'); } module.exports = { pr
2020-08-14 07:13:40
178
原创 电商系统--git使用小结
1、使用git //情形一、前提:远程未存在该分支,内容:本地提交(本地)-> master合并并push(master)->将本地分支在云端存储(本地) git add .(login) git commit -m ''(login) git checkout master git merge login git push //把本地分支在云端存储 git checkout login git push -u origin login //情形二、前提:远程未存在该分支,内容:本地提
2020-08-13 07:47:31
334
原创 命令行添加数据库数据
const fs = require('fs'); const mysql = require('mysql'); function query(sql, params, mysql_host, mysql_user, mysql_pass, mysql_db, mysql_port, callback) { var connection = mysql.createConnection({ multipleStatements: true, host: mysql_host, user: m
2020-08-12 13:46:44
901
原创 node+webSocket连接设备
app.js var wsWorkStation = require('./lib/wsWorkStation'); wsWorkStation.initWorkStations(); lib/wsWorkStation const WebSocket = require('ws'); const log4js = require('../log-config'); const logger = log4js.getLogger('wsclient'); const db = require('./my
2020-08-11 15:07:47
375
原创 es6-补充项
1、 解构赋值 交换变量 let x = 1; let y = 2; [x, y] = [y, x]; 函数返回多个值 // 返回一个数组 function example() { return [1, 2, 3]; } let [a, b, c] = example(); // 返回一个对象 function example() { return { foo: 1, bar: 2 } } let { foo, bar } = e
2020-08-11 12:02:06
162
原创 es6编程风格
1、块级作用域,用let取代var for (let i = 0; i < 10; i++) { console.log(i); } 2、全局常量和线程安全,在全局环境应该设置常量const,多使用const提高程序的运行效率 const [a, b, c] = [1, 2, 3]; 3、静态字符串使用单引号,动态字符串使用反引号 const a = 'foobar'; const b = `foo${a}bar`; 4、使用数组成员对变量赋值,优先使用解构赋值 const arr = [1
2020-08-11 11:36:04
135
原创 项目优化策略
1、生成打包报告 2、第三方库启用cdn 3、element-ui 按需加载 4、路由懒加载 5、首页内容定制 通过nprogress添加进度条效果 main.js cnpm i nprogress -S import './permissions' permissions.js import store from './src/store/index' import router from './src/router/index' import NProgress from 'nprogress'
2020-08-11 07:37:53
202
原创 前段问题单
1、左侧菜单栏长度如何动态变换 :width="isCollapse ? '50px':'200px'" 2、主子路由及router-view设置 @/views/home.vue <el-main> <h3>Welcome</h3> <!-- 匹配菜单栏路由区域 --> <router-view></router-view> </el-main> router/index.js
2020-07-31 08:13:32
146
原创 mongodb+express api接口
mongoose.json {"url":"mongodb://192.168.40.194:35248/cims_db","user":"cims","pass":"cims123$%"} app.js var strMongodb = fs.readFileSync('./public/settings/mongodb.json', 'utf-8'); var mongodbSettings = JSON.parse(strMongodb); mongoose.connect(mongodbSett
2020-07-30 15:41:14
292
原创 Inno setup 软件安装
目录: /bin/AutoEtax/%PKGDIR% /depend/install/setUp.iss image/bin/Win32/realase/安装文件 ;指定名字 #define MyAppName "CIMSDataCenter" #define MyAppVersion "1.0.3" #define MyAppPublisher "fuyoo" #define DirName "CIMS" ;安装和卸载程序所使用的全局设置(必选) [Setup] ;AppId决定卸载注册表的真实值,不能
2020-07-30 10:20:01
383
原创 实现页面合理跳转
permissions(路由全局守卫) const whiteList = ['/login']; if (getToken()) { if (to.path == '/login') { next(); } else { // 读取用户信息,用户信息不存在,返回登录页面,存在next() store.dispatch('GetInfo').then(res => { if(res.code){ next('/login') }else{ next();
2020-07-27 08:35:07
141
原创 node - 确认软件
/validate/main.js //安装文件确认 const readFile = require('../common/readFile')//读取目录路径下文件的函数 const path = require('path'); const installPath = path.resolve('../../');//被对比目录路径 const contrastArr = require('../conf/contrastFileName')//对比文件 const contrastFileFun =
2020-07-21 17:22:45
197
原创 软件确认-node注册表的查询 添加
common/readCmd.js var exec = require("child_process").exec; const iconv = require('iconv-lite'); module.exports = function myTest(path,callback) { return new Promise(function(resolve, reject) { var cmd = path exec(cmd,{ encoding: 'bu
2020-07-21 10:12:14
952
原创 布局居中不贴边
position absolute left 50% top 50% tansform translate(-50%.-50%) 元素居中(上下,左右元素补贴边) display:flex align-items:center
2020-07-17 22:22:55
209
原创 node.js按行读取文件
const readline = require('readline') const path = require('path') const fs = require('fs') let filePath = path.join(__dirname,"df.txt"); let input = fs.createReadStream(filePath); const rl = readline.createInterface({input:input}) rl.on('line',(line) =&g
2020-07-16 20:26:56
405
原创 mysql - init
//创建数据库CIMS CREATE DATABASE cims_db DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; //创建cims用户 CREATE user 'cims'@'%' IDENTIFIED BY 'cims123$%'; //授权用户 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON cims_db.* TO 'cims'; FLUSH PRIVILEGES; ...
2020-07-16 17:23:14
279
原创 express-common篇
const os = require("os"); const interfaces = require('os').networkInterfaces(); const fs = require('fs'); const path = require('path'); module.exports.GetIpaddr = function(){ var ipaddrs = []; for(var devName in interfaces){ var iface = interfaces[dev
2020-07-16 17:16:30
256
原创 app.js-token验证-错误(500)提醒设计
app.use("*", function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); res.header("Access-Control-Allow-Methods", "PU
2020-07-16 17:07:19
607
原创 权限设计
设计思想: 1、拿到请求的url,/api/uses/addUsers 和对照表/conf/authAndApi.js,找到对应的permition:addUsers 2、数据库中查找当前登录用户的所有权限(整合) 3、根据请求的permition addUsers和数据库中的addUsers的值做比较 /conf/authAndApi.js module.exports = [ {permition:'addUsers',authnanme:"添加用户",baseurl:'/api/users/a
2020-07-16 16:56:57
151
原创 验证用户名、密码规范
var validator = require('validator'); module.exports.checkUserName = function (user, callback) { var p1 = '^[a-z]{2,9}([0-9]{0,2})?$'; if (!validator.matches(user, p1)) { return callback("Please re-enter your username,规则:[姓(全拼)+ 名简](必须是小写子母,最少2位,最多9位)+
2020-07-16 16:05:29
614
原创 创建用户-api
var bodyParser = require('body-parser'); /*使用局部解析*/ var bcrypt = require('bcryptjs'); router.post('/addUsers', bodyParser.json(), function (req, res, next) { logger.info('API:"post /api/users/addUsers" accessed.'); var password = req.body.password ? req
2020-07-16 15:52:16
264
原创 Node-循环异步
var successUser = []; var failedUser = []; var actions = []; var importSaveUser = function (index, item, callback) { db.query(UserSql.getNextUserNo, [], function (err, rows) { if (err) { logger.error("Database operation error! error:" + err);
2020-07-16 14:22:46
247
原创 express-分页-api
router.get('/userList', function (req, res, next) { logger.info('API:"/api/users/userList" accessed'); var pageNum = req.query.pageNum ? Number(req.query.pageNum) var pageSize = req.query.pageSize ? Number(req.query.pageSiz req.query.username ? (ayy
2020-07-16 14:15:53
357
原创 node.js-软件安装包确认
const path = require('path'); const fs = require('fs'); const contrastArr = require('../conf/contrastFileName') const installPath = path.resolve('../../'); const filesList = []; const getFiles = function (confirmPath) { let files = fs.readdirSync(confir
2020-07-16 11:00:20
178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅