scrapy入门教程

安装和入门案例 腾讯云主机Python3环境安装Scrapy爬虫框架过程及常见错误 scrapy 爬虫框架入门案例详解 常见问题 No module named _util pip install Twisted==16.4.1 参考文档 Scrapy连接到各类数据库(SQLite,Mysql,Mongodb,Redis)

阅读全文...

Java代理模式-动态代理

描述 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。 Example // Person.java public interface Person { void eat(String food); } // Main.java public class Man implements Person { private String name; public Man(String name) { this.name = name; } @Override public void eat(String

阅读全文...

Git删除单个文件所有记录

Github上经常出现传输了错误文件的问题,如密码手机等隐私内容,需要彻底删除所有提交记录,用下面这段代码就可以了。 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 删除文件的相对路径' --prune-empty --tag-name-filter cat -- --all git push origin master --force rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now 不记得这段代码从哪复制了,感谢原作者的无私奉献,(*/ω\*)~

阅读全文...

[转]Java volatile总结

内存模型的相关概念 计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据,当运算结束之后,再将高速缓存中的数据刷新到主存当中。 举个简单的例子,比如下面的这段代码:i = i + 1;当线程执行这个语句时,会先从主存当中读取i的值,然后复制一份到高速缓存当中,然后CPU执行指令对i进行加1操作,然后将数据写入高速缓存,最后将高速缓存中i最新的值刷新到主存当中。 这个代码在单线程中运行是没有任何问题的,但是在多线程中运行就会有问题了。在多核CPU中,每条线程可能运行于不同的CPU中,因此每个线程运行时有自己的高速缓存(对单核CPU来说,其实也会出现这种问题,只不过是以线程调度的形式来分别执行的)。本文我们以多核CPU为例。比如同时有2个线程执行这段代码,假如初始时i的值为0,那么我们希望两个线程执行完之后i的值变为2。但是事实会是这样吗? 可能存在下面一种情况:初始时,两个线程分别读取i的值存入各自所在的CPU的高速缓存当中,然后线程1进行加1操作,然后把i的最新值1写入到内存。此时线程2的高速缓存当中i的值还是0,

阅读全文...

android VectorDrawable 转png图片

Android上使用svg图片可以利用VectorDrawable,不仅体积小而且是矢量图,目前已经成为了开发app的不二之选。下面是一个VectorDrawable例子: <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="26dp" android:width="26dp" android:viewportWidth="26" android:viewportHeight="26"> <path android:fillColor="#ee4f4f" android:pathData="M15.746,21.714C15.036,22.541

阅读全文...

centos关闭root登录

每次用ssh登录服务器都有如下的提示: There were xx failed login attempts since the last successful login. 有人在用错误的密码在尝试登录服务器,想想就有点方。网上的解决方案是用ssh密钥登录,关闭root的方式登录。下面记录下操作方式 配置密钥登录 腾讯云管理后台可以选择加载密钥,不过得先关机。创建密钥后就会下载得到一个密钥文件(后续需要这个登录) 创建新用户 adduser user1 passwd user1 配置服务器关闭ROOT登录 vim /etc/ssh/sshd_config 查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“yes”改为“no”,并保存文件。 # PermitRootLogin no,千万不要修改成No,linux是严格区分大小写的 # 重启服务 service sshd

阅读全文...

小程序语音MP3转WAV

前言 小程序录制的语音格式是aar和mp3, 如果想语音文本识别,像百度语音等SDK要求的都是无损原声pcm格式(wav仅仅是pcm的封装),下面提供两种将mp3转换为wav的方法 0x1通过第三方接口 <?php $url = 'http://server.com/sound.mp3'; $data = json_decode(file_get_contents('http://api.rest7.com/v1/sound_convert.php?url=' . $url . '&format=wav')); if (@$data->success !== 1) { die('Failed'); } $wave = file_get_contents($data->file)

阅读全文...

开源小程序: 唯美小姐姐

0x1小程序介绍 这是一款看漂亮小姐姐的小程序,开源地址是: https://github.com/pengwei1024/HiBeauty。话不多说,先上个截图各位小主看看合不合胃口。 怎么抱走小姐姐呢? 可以微信小程序搜索 唯美小姐姐 或者扫码抱走吧 0x2原理分析 各位小主看完了小姐姐,请把口水擦干,我们来看看怎么new一个小姐姐吧。我觉得技术点主要下面两个(当然第一个才是大家最关心的): 小姐姐数据的抓取和处理 小程序从服务器拉取并展示数据 数据抓取 小姐姐的数据主要来自微博美女帅哥大V, 如x粉大魔王等等,在此向各位辛勤付出的大V致谢。抓取用的方案是Headless Chrome + selenium,简而言之就是用的服务器上web自动化方案。 为什么采用这个方案呢,直接抓取网页的方式帐号容易被封,自动登录获取cookie的技术难度都比较大。而web自动化就是模拟网页点击,一切的操作都是so easy。 不了解 Headless Chrome 和 selenium?请看下面的教程: 安装Headless Chrome selenium教程 linux上配置一个定时任务,实现全自动化的抓取,再来个图片分类器把非小姐姐图片去除,自动更新,开开心心欣赏小姐姐真是美滋滋

阅读全文...

gradle编译完成后上传apk

项目中有个需求想本地编译完成自动上传release 的apk到服务器,因为功能比较简单,不想借助第三方来实现,这是个我自定义gradle task来上传apk的例子。 自定义task task apkUpload(type: Exec, dependsOn: ['assembleRelease']) { def version = project.android.defaultConfig.versionName def apkPath = "$buildDir/outputs/apk/release/app-release.apk" commandLine "curl", "-F", "apk=@$apkPath", "上传地址" } 创建了一个Exec类型的task, 依赖assembleRelease任务, 最后执行shell curl -f apk=@{文件路径} {上传路径} 来完成上传 服务器示例 (PHP Codeigniter) /** * 上传apk * @param $version */ public function

阅读全文...

centos安装headless chrome

Centos 7 安装 直接运行安装脚本 curl https://intoli.com/install-google-chrome.sh | bash 安装完成后会提示: Successfully installed google-chrome-stable, Google Chrome 65.0.3325.146 . 运行chrome google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com 正常的话会在当前目录生成screenshot.png的文件 驱动 下载chrome驱动并放到某个目录下: http://npm.taobao.org/mirrors/chromedriver/2.36/chromedriver_linux64.zip , 运行./chromedriver, 如果能返回下面内容说明驱动安装正常 Starting

阅读全文...