url

原生node.js创建服务器

孤街浪徒 提交于 2020-02-13 21:48:44
var http = require('http'); var fs = require('fs'); var path = require('path'); var server = http.createServer((req, res) => { console.log("req.url: ", req.url); if (req.url === '/') { readFileSend('./index.html') } else { readFileSend(req.url) } function readFileSend(url) { let suffix = url.slice( url.lastIndexOf('.') + 1 ); writeHead(suffix); let fileDir = path.join(__dirname, url) console.log('fileDir: ', fileDir); fs.readFile(fileDir, function (err, data) { if (err) { writeHead('html', 404); res.end("<h1 style='text-align: center;'>404 Not found</h1>"); console.log('Not found File'); }

30分钟编写一个抓取 Unsplash 图片的 Python爬虫

℡╲_俬逩灬. 提交于 2020-02-13 20:26:03
我一直想用 Python and Selenium 创建一个网页爬虫,但从来没有实现它。 几天前, 我决定尝试一下,这听起来可能是挺复杂的, 然而编写代码从 Unsplash 抓取一些美丽的图片还是挺容易的。 PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步! 简易图片爬虫的组成部分 Python (3.6.3 或者更新版本) Pycharm (Community edition 版本就可以) Requests Pillow Selenium Geckodriver (阅读下面的说明) Mozlla Firefox (如果你没有,去安装一下) 有效的网络连接 (显而易见的) 你的 30 分钟 (可能更少) 简易图片爬虫的制作 把所有东西都安装好了么?不错!跟着我们的代码,我将开始解释我们每一个爬虫原料的作用。 第一件事情,我们将 把 Selenium webdriver 和 geckodriver 结合起来去打开一个为我们工作的浏览器窗口。首先,在 Pycharm

jdbc-mysql 中文乱码解决

眉间皱痕 提交于 2020-02-13 19:12:05
在客户端或者JDBC连接时定制支持中文的编码格式(通常使用UTF-8),这样插入数据的时候,让mysql为自动为我们转码,可行的办法有两种: 1、如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题 jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8 2、如果是通过其它数据源,比如DBCP、tomcat-jdbc、c3p0、spring-jdbc、hibernate读取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的,而是通过数据源自身的配置生效,比如下列配置: <!-- Tomcat data source --> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="$

mysql jdbc 中文乱码解决方案

末鹿安然 提交于 2020-02-13 19:10:44
对于mysql数据库而言,解决中文乱码,可以从两个方向考虑,一个是通过修改mysql服务器端的配置文件/etc/mysql/my.cnf来支持中文,比如: ... [mysql] default-character-set=utf8 ... 但是,修改配置文件需要重启服务,尤其是对于已经在线上运行的数据库或者“老”的数据库实例(有可能是多实例或集群)而言,显然通过修改配置文件来操作是不适合的,甚至是不被DBA允许的,通常能想到的办法是在客户端或者JDBC连接时定制支持中文的编码格式(通常使用UTF-8),这样插入数据的时候,让mysql为自动为我们转码,可行的办法有两种: 1、如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题。 jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8 2、如果是通过其它数据源,比如DBCP、tomcat-jdbc、c3p0、spring-jdbc、hibernate读取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的

微博、腾讯视频(部分)提取器-- 前端Vue.js篇

跟風遠走 提交于 2020-02-13 15:42:17
提取器主要功能是将输入的微博视频地址转换成可下载的视频地址,如下图所示 单击下载代码 关键代码摘录 提交单击事件代码如下 export default { name : "app" , components : { } , data ( ) { return { url : "" , //用户输入的原始视频地址 videoUrl : "" , //解析后的视频地址 } ; } , methods : { videoSaveAsHandler : function ( ) { if ( ! ! this . url ) { // 腾讯视频下载 if ( this . url . includes ( "https%3A%2F%2Fv.qq.com%2F" ) ) { try { if ( ! ! JSON . parse ( this . url ) ) { let str = JSON . parse ( this . url ) ; str = str . vurl ; str = unescape ( str ) ; // 目前只能解析以 https://ugccsy.qq.com 打头的视频 if ( str . startsWith ( "https://ugccsy.qq.com" ) ) { this . videoUrl = str ; this . url = ""

把自定义url配置到SAP Fiori Launchpad上打开

一个人想着一个人 提交于 2020-02-13 13:09:22
打开SAP云平台 portal Service的Content manager: 点击My Content,创建一个新的portal应用: 我们的自定义url就在这个新建应用的字段URL里维护: 创建的应用如下图所示: 再创建一个新的group: 将之前创建的url应用分配给这个group: 点击Go to site,打开url: 即可看到之前创建的URL应用出现在Launchpad里: 点击tile,即可在portal里打开对应的url: 要获取更多Jerry的原创文章,请关注公众号"汪子熙": 来源: https://www.cnblogs.com/sap-jerry/p/12303114.html

简单服务器开发(六)服务器截获请求URI

北慕城南 提交于 2020-02-13 09:48:24
开始处理客户端的请求,首先我们需要知道客户端访问的是哪一个资源,我们怎么才能知道客户端访问的哪个资源呢? 答案当然是在服务器端获取客户端请求的URI,请求的URI在HTTP请求协议的请求行上。所以我们需要读取请求协议的第一行数据, 然后从这些数据中解析出URI,从而得出客户要访问的是服务器端的哪个资源。 (1) URL 和 和 URI 是什么?它们之间是什么关系? A、 URL(Uniform Resource Locator) 是统一资源定位符,例如在浏览器地址栏上直接输入的请求路径 http://127.0.0.1:8080/oa/index.html 就是一个 URL ,通过它可以定位网络中的某个资源。 B、 URI(Uniform Resource Identifier) 是统一资源标识符,只是代表网络中某个资源的名称,不具备定位功能,或者说 URI 是 URL 的一部分。例如上面的 URL 中/oa/index.html 就是一个 URI 。 (2) HTTP 协议请求协议的请求行由三部分组成: 请求方式+URI+ 协议版本号 , 我们需要获取的就是请求行上的 URI (3) 在 在 HandlerRequest.java 中 编写程序读取请求行 A、解析 客户请求的 字符串,截获 URI B、通过 BufferedReader 获取请求消息 BufferedReader

TP隐藏入口

↘锁芯ラ 提交于 2020-02-13 09:04:50
我们知道,在thinkphp的案例中有一个.htaccess文件,里面配置了URL的一些重写规则,如: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule> 它的作用就是设置URL重写以隐藏URL中含有的index.php。一般来说URL过长或者动态化的URL都不利于SEO因此隐藏的目的就是要达到更好的SEO效果。 明白了.htaccess文件的作用,接下来就是让它工作起来。 要使.htaccess文件起作用,通常需要服务器开启URL_REWRITE模块才能支持。 下面是Apache的配置过程: 1、httpd.conf配置文件中加载了mod_rewrite.so模块 在httpd.conf配置文件搜索 LoadModule rewrite_module modules/mod_rewrite.so (Apache2是这个)去掉前面的# 2、AllowOverride None 将None改为 All 在httpd.conf配置文件找到“AllowOverride None”将None改为 All

gevent协程

只愿长相守 提交于 2020-02-13 06:46:19
Python通过 yield 提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。 gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。 由于切换是在IO操作时自动完成,所以gevent需要修改Python自带的一些标准库,这一过程在启动时通过monkey patch完成: 先了解greenlet,这个库用来学习的 功能不是很多。 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 from greenlet import greenlet 6 7 8 def test1(): 9 print 12 10 #切换到g2 11 gr2.switch() 12 print 34 13 #切换到g2继续执行上次的任务 14 gr2.switch() 15 16 17 def test2(): 18 print 56 19 gr1.switch() 20 print 78 21 22 gr1 =

Python协程

江枫思渺然 提交于 2020-02-13 05:32:49
一、一些基本概念: 协程(Coroutine),又称微线程,纤程,一种用户级的轻量级线程。 栈(Stack)是一个数据集合,可以理解为只能在一端进行插入或删除操作的列表。 协程拥有自己的寄存器上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态。 在并发编程中,协程与线程类似,每个协程表示一个执行单元,有自己的本地数据,与其他协程共享全局数据和其他资源 协程需要用户自己来编写调度逻辑,对于CPU来说,协程其实是单线程,所以cpu不用去考虑怎么调度,切换上下文,这就省去了cpu的切换开销,所以协程一定程度上又好于多线程 协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序。 协程的适用场景:当程序中存在大量不需要CPU的操作时(IO),适用于协程; 二、yield回顾: def f(): print('ok1') count=yield 5 print(count) print('ok2') yield 6 gen=f() # ret=next(gen) # print(ret) ret=gen