- 博客(147)
- 资源 (30)
- 问答 (1)
- 收藏
- 关注
原创 Android NestedScrolling解决滑动冲突问题(3) - 项目实战
实际需求在前面的两片文章中我们了解了 NestedScroll 的相关接口及一般处理逻辑。在本篇文章中就实现一个具体的联合滑动需求。Android中经常在布局中嵌入 WebView 来展示网页内容,而且WebView内部还有交互逻辑(滚动之类的),如果外部布局也要处理滚动逻辑,就会有滑动冲突,这种场景在实际项目开发中很常见,例如在含有 AppBarLayout 的 CoordinatorLay...
2018-12-01 16:57:01 592
原创 Android NestedScrolling解决滑动冲突问题(2) - fling问题与NestedScroll++
滑动的处理在前一篇文章 Android NestedScrolling解决滑动冲突问题(1) - 相关接口 中,我们分析了解决滑动冲突问题的 NestedScroll 接口,也给出了解决此类问题的一般性方案:NestedScrollingChild侧NestedScrollingChild(后面简称NC)处理MotionEvent(一般在onTouchEvent中,如果是ViewGroup还...
2018-12-01 13:29:34 1498
原创 Android NestedScrolling解决滑动冲突问题(1) - 相关接口
Android NestedScrolling解决滑动冲突问题当父View及子View都可以滑动,并且滑动方向一致时(例如CoordinatorLayout内嵌RecyclerView或者Webview),滑动冲突的解决就需要依赖于Android为我们提供的NestedScrolling接口。NestedScrolling 接口分为两个部分:NestedScrollingParent 及 Ne...
2018-11-30 19:45:13 1143
原创 Android获取外置SD卡读写路径
1. 外置SD卡的一些问题1.1 关于外置SD卡上的读写路径Android 4.4及以上版本,应用的外置SD卡读写路径被限定在固定路径上(外置SD卡根路径/Android/data/包名/files)。Android4.4以下版本,申请了外置SD卡读写权限的应用在整个外置SD卡上都有读写权限。1.2 关于外置SD卡路径另外Android没有提供获取外置SD卡路径的API(getExternalSto
2017-04-21 14:38:15 8107 1
原创 Android防止Service被杀死
1. Service被杀死的两种场景1.2 系统回收在系统内存空间不足时可能会被系统杀死以回收内存,内存不足时Android会依据Service的优先级来清除Service。1.2 用户清除用户可以在”最近打开”(多任务窗口、任务管理窗口)中清除最近打开的任务,当用户清除了Service所在的任务时,Service可能被杀死(不同ROM有不同表现,在小米、魅族等第三方产商定制ROM上一般会被立即杀死
2017-04-19 23:10:55 8134 2
原创 Android开发中的各种尺度单位
px像素(pixel),表示屏幕上一个物理像素点 不建议直接使用 px 绘制UI,因为受像素密度的影响,以 px 为单位绘制的UI在不同手机上显示的实际大小会不同。dp密度无关像素。Android 建议使用的一种虚拟像素单位,可以使定义的UI布局在不同像素密度的设备上具有相同的效果。像素密度dpi = 每英寸长度含有的像素点数量 = 屏幕纵向(横向)长度 / 屏幕纵向(横向)像素数目。这种密度无关
2016-08-20 11:28:58 3103 1
原创 Android Studio快捷键
快捷键 功能 快捷键(Mac OSX) 快捷键(Windows/Linux) 显示最近编辑的文件列表 Command + E Ctrl + E 关闭文件 Shift + Click Shift + Click 快速查找、打开文件 Shift + Shift Shift + Shift 注释代码(//) Command + / Ctrl + /
2016-08-04 19:12:59 1185
原创 在Android Studio中进行NDK开发的一般流程
1 在类中声明native方法2 在 app/src/main 下创建 jni 目录3 在 app/src/main/java 下运行命令 javah -jni -d ../jni com.path2class.ClassName4 在 app/src/main/jni 下生成了对应的头文件,创建cpp源文件,利用此头文件实现对应的native方法5 在 app 下的 build.gradle 文件
2016-06-12 00:29:01 3285
原创 使用OpenCV Android SDK从摄像头帧实时检测人脸
在配置好 OpenCV Android SDK 之后(具体见前一篇文章Android Studio中使用OpenCV Android SDK ),可以使用 OpenCV 封装的接口很方便地进行各种图像处理操作。这里简单介绍如何直接使用 OpenCV 训练的人脸模型直接从摄像头帧检测人脸。1. 新建Android Project这里可以直接使用默认的 Android Studio 项目模板, Act
2016-06-08 22:12:00 19826 11
原创 Android Studio中使用OpenCV Android SDK
OpenCV是著名的跨平台计算机视觉开源库,广泛应用于计算机视觉相关领域。OpenCV 已经发布 Android 平台下的 SDK,可以直接导入 Android Studio。OpenCV Android SDK 下载地址: Download OpenCV Android SDK 。Android Studio项目中配置使用OpenCV Android SDK在项目根目录下创建 libraries
2016-06-08 21:21:56 11083 4
原创 iptables导致nginx反向代理不可用的解决方案
在nginx反向代理、web服务器所在的同一系统上配置iptables进行访问限制时,可能会导致nginx反向代理不能正常工作。一种常见原因是iptables没有配置来自本机ip的连接权限而且默认是DROP策略。解决方法也很简单,添加本机ip的连接权限,例如:sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INP
2016-05-26 15:50:16 11114
原创 Linux下使用iptables禁止指定IP地址的网络连接
wsliu@qcloud:~$ sudo iptables -L[sudo] password for wsliu: Chain INPUT (policy ACCEPT)target prot opt source destination DROP all -- 120.203.229.36 anywhere
2016-05-26 13:26:01 43877
原创 常用搜索引擎使用技巧
指定站内搜索使用site指定在某网站内搜索如只在知乎中搜索 liuwons : liuwons site:zhihu.com精确匹配使用双引号来指定精确匹配单词或短语如精确搜索 liuwons : "liuwons"模糊搜索使用星号(*)代替一个单词进行模糊搜索例如"a * saved is a * earned"会搜到如下结果:A penny saved is a penny earned指定索搜
2016-05-19 13:56:59 12614
原创 Ubuntu下Chrome造成系统假死的解决方法
在64 bit Mint Linux下使用Chrome时,经常导致整个系统进行假死状态,图形界面下除了鼠标能动,什么也干不了,不过能够Ctrl + F1进行终端环境。在网上查了很久,有几种情况可能导致这种状况:Chrome中的某些插件Chrome的硬件加速显卡驱动逐一排查后找到我这的原因是Chrome的硬件加速。关掉硬件加速(hardware acceleration)后不再假死。参考链接:
2016-05-17 19:54:45 14089
原创 Python快速搭建自动回复微信公众号
Python快速搭建自动回复微信公众号在之前的一篇文章 Python利用 AIML 和 Tornado 搭建聊天机器人微信订阅号 中用 aiml 实现了一个简单的英文聊天机器人订阅号。但是只能处理英文消息,现在用 图灵机器人 来实现一个中文的聊天机器人订阅号。这里主要介绍如何利用 Python 的 Tornado Web框架以及wechat-python-sdk 微信公众平台 Python 开发包来
2016-04-19 14:07:41 21138 2
原创 字符编码简介
1. ASCII码ASCII (American Standard Code for Information Interchange, 美国标准信息交换代码),是基于拉丁字母的一套编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统。 单个字节可以表示256个不同的字符,不过 ASCII 只使用了其中低于\x80(即最高位字节为0)的一半来表示所有的英文字符以及一些控制字符
2016-04-11 22:17:55 4227
原创 nginx实现请求转发
反向代理适用于很多场合,负载均衡是最普遍的用法。nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。nginx 反向代理官方文档: NGINX REVERSE PROXY当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较常见的是以 URI
2016-04-08 20:35:03 167891 11
原创 Python写的实时地球图片下载工具
Himawari8 Image Downloaderhimawari8downloader 是下载卫星 Himawari8 拍摄到的地球近实时照片的 Python 脚本。GitHub 地址: himawari8downloader 。依赖himawari8downloader 依赖 PIL 和 Requests:pip install Pillowpip install requests使用直接运
2016-04-03 17:57:15 4192 3
原创 浅析 C++ 调用 Python 模块
浅析 C++ 调用 Python 模块作为一种胶水语言,Python 能够很容易地调用 C 、 C++ 等语言,也能够通过其他语言调用 Python 的模块。Python 提供了 C++ 库,使得开发者能很方便地从 C++ 程序中调用 Python 模块。具体的文档参考官方指南: Embedding Python in Another Application调用方法1 链接到 Python 调用库
2016-03-14 21:34:55 35519 7
原创 Python写的一款印象笔记MarkDown同步工具
神器 印象笔记 与 Markdown很久之前就开始记笔记了,印象笔记 的笔记同步以及笔记管理一直很赞,所以一直在使用。最开始的时候是直接用纯文本写笔记。然后开始使用 印象笔记 自己的编辑器来添加标题、加粗文本之类的,不得不说这样做很乏味。后来接触到了神器 MarkDown ,深深了喜欢上了这种简洁优美的标记语言,所有的笔记几乎都是用 MarkDown 来写的。但是 印象笔记 的编辑器并不支持 Mar
2016-03-12 17:30:44 9248 3
原创 git常用操作
Git 常用操作1 概念 概念 意义 HEAD 当前版本 HEAD^ 上一个版本 HEAD~N 往上第 N 个版本 origin 远程仓库的默认名称 master 默认主干分支名2 指令 指令 意义 git init 创建仓库 git clone 克隆远程仓库 git status 当前状态 git diff 查看
2016-03-10 12:43:11 1832 1
原创 用wxBot和图灵机器人API实现微信群聊机器人
1 实现方案用 wxBot登录微信,接收、发送微信消息。用 图灵机器人 API对消息作回复。2 实现效果机器人会回复来自联系人的消息,以及群里@此账号的消息。注意要将对应的群保存到联系人。3 运行方法下载wxBot, 安装python的依赖包。在图灵机器人官网注册账号,申请图灵key: 图灵key申请地址在bot.py文件所在目录下新建conf.ini文件,内容为(key字段内容为申请到的图灵
2016-03-04 15:15:06 43808 6
原创 Java https服务器证书认证问题解决方案
Java https连接的”unable to find valid certification path to requested target”,”PKIX path building failed”错误原因这个问题的是由于Java自带的根证书库中不包含HTTPS服务器上的根证书,因此无法得到认证。解决方案比较容易实现的方案有两种:导入服务器证书到本地Java环境代码中忽略证书信任问题由于
2016-03-02 16:43:45 12004 2
原创 wxBot微信机器人框架
是Python包装Web微信实现的微信机器人框架。可以很容易地实现微信机器人。 github地址: 环境与依赖目前只能运行于Python 2环境 。 wxBot 用到了Python requests 和 pyqrcode 库,使用之前需要安装这两个库:pip install requestspip install pyqrcode快速开发代码利用 wxBot 最简单的方法就是继承WXBot类并
2016-02-23 13:06:18 61519 9
原创 Python包装网页微信API并实现简单自动回复
wxBotwxBot 为Python包装的网页微信API。可以很容易地实现微信机器人。github地址: wxBot Dependencies程序用到了Python requests 和 pyqrcode库,使用之前需要安装这两个库:pip install requestspip install pyqrcodeDemo配置了 图灵机器人 之后,通过测试账号发送各种消息的效果:Run运行程序pyt
2016-02-12 20:42:09 14446 1
原创 Python爬虫之自动登录与验证码识别
Python爬虫之自动登录与验证码识别在用爬虫爬取网站数据时,有些站点的一些关键数据的获取需要使用账号登录,这里可以使用requests发送登录请求,并用Session对象来自动处理相关Cookie。另外在登录时,有些网站有时会要求输入验证码,比较简单的验证码可以直接用pytesser来识别,复杂的验证码可以依据相应的特征自己采集数据训练分类器。以CSDN网站的登录为例,这里用Python的requ
2016-02-06 19:19:21 55839 2
原创 Python获取免费的可用代理
Python获取免费的可用代理在使用爬虫多次爬取同一网站时,经常会被网站的ip反爬虫机制给禁掉,这时就可以通过使用代理来解决。目前网上有很多提供最新免费代理列表的网站,这些列表里很多的代理主机是可用的,但是也有一些是不可用的,因此需要进一步筛选。利用Python可以很方便地筛选出可用的代理列表。以提供免费代理信息的网站IPCN 国家地区免费代理为例,这里给出一个爬取此网站上提供的代理信息并筛选可用代
2016-02-05 22:53:11 57444
原创 Python 利用PIL将图片转为字符
Python 利用PIL将图片转为字符PIL(Python Imaging Library)是Python语言的一个图像处理库,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,而且API非常简单易用,可以用它实现很多图像处理功能。这里介绍一种用PIL将图片转换为字符的方法。实现的效果为:原图像:转换后的字符:CCO$Q$C?COOO?COHNHMMMNM$$MN$C?O$?>77
2016-02-02 20:35:28 51704 2
原创 身份证号码编码方法及校验算法
身份证号码编码方法及校验算法1 身份证号码的字段构成:地址码身份证前六位,表示户口所在县(市、旗、区)的行政区划代码。生日码身份证第七至第十四位,表示出生的年、月、日。顺序码身份证十五到十七位,为同一地址码所标识的区域范围内,对同年、月、日出生的人员编订的顺序号。其中第十七位奇数分给男性,偶数分给女性。校验码身份证最后一位,根据前面十七位数字码,按照ISO7064:1983.MOD11-2计
2016-01-31 00:44:53 58106 1
原创 Python搭建聊天机器人微信订阅号
Python利用AIML和Tornado搭建聊天机器人微信订阅号AIML ,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。它的雏形是一个名为”A.L.I.C.E.” (“Artificial Linguistic
2016-01-28 14:12:26 56250 4
原创 Python搭建聊天机器人
Python用AIML搭建聊天机器人AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。它的雏形是一个名为”A.L.I.C.E.” (“Artificial Linguistic Internet Compu
2016-01-27 16:50:59 52842 14
原创 用Wikidata做实体搜索的两种方案
用Wikidata做实体搜索的两种方案Wikidata 是一个可协同编辑的知识库,是继2006年的维基学院之后,第一个新的维基媒体基金会项目。这一项目与维基共享资源的工作方式类似,将为其他维基计划及各语种维基百科中的信息框、列表及跨语言链接等提供统一存放的数据,该项目在2012年10月30日投入使用。Wikidata 的所有数据都是对外公开的,官网对外提供了两类数据获取方式:在线API和数据库下载。
2016-01-18 16:29:28 31941 14
原创 开放知识库调研
开放知识库调研目前调研到可用的开放知识库包括:Knowledge Graph, Freebase, Wikidata。下文描述能够获取的数据以及对应最方便的接口方式。Knowledge Graph关键字搜索接口接口方式: HTTP GET数据格式: json数据内容: - mid: Freebase 实体id,能通过此id访问实体在 Freebase 中的信息。 - name: 实体名称。 -
2016-01-15 14:56:34 21026 1
原创 三种知识图谱
三种实体搜索工具Knowledge Graph , Freebase , Wikidata 是目前最常见的三种实体(entity)搜索工具。这里对其进行简单介绍并作一些对比。 Knowledge GraphKnowledge Graph 是Google的一个知识库,其使用语义检索从多种来源收集信息,以提高Google搜索的质量。Knowledge Graph 2012年加入Google搜索,20
2016-01-13 23:11:11 40964 1
原创 ubuntu下mysql服务器更改数据库文件路径
遇到需要更改mysql数据库文件路径的情况,查了很多资料试了很多次才成功,记下来先~1. 停止mysql服务sudo service mysql stop2.修改my.cnf文件,将datadir改为目标路径sudo vim /etc/mysql/my.cnf3.将原来的datadir路径下的所有文件拷贝到新的datadir下4.在文件 /etc/apparmo
2015-12-26 19:16:09 19646
原创 用WindowsAPI截屏并转换为RGB格式
在Windows下捕获屏幕图像可以有多重方法,比较简单可以调用第三方库,如Qt的屏幕截屏API就很容易调用。在这里介绍如何用Windows API实现截屏并转换成RGB格式存储。#include //最终f的内存布局为BGRA格式,需要保证buf长度足够(>w*h*4)void ScreenCap(void* buf, int* w, int* h){ HWND h
2015-05-13 09:06:43 23377
原创 hexo 解决代码块前后多余空行的问题
解决方案:github issue 通过修改hexo源码来解决: 文件:lib/util/highlight.js 将91行的:numbers += '' + (i + firstLine) + '';content += '' + item + ''; 改为:numbers += '' + (i + firstLine) + '\n'
2015-01-10 17:56:52 22333 1
原创 YV12转opencv IplImage
void Yv12ToImg(uchar *pin, IplImage* img) { uchar y, cb, cr; int ySize = img->width * img->height; int uSize = ySize / 4; uchar *pY = pin; uchar *pU = pY
2015-01-08 16:45:17 20397
原创 ffmpeg解码内存缓冲区
只贴出部分代码,重在说明过程。与解码文件的大致过程类似,只不过自定义了AVFormatContextstruct IOData { char* data; size_t len; };int FrVideoAcqHT::io_get_data(void *opaque, uint8_t *buf, int buf_size){
2014-12-01 13:30:55 34850 5
Python搭建的web接口聊天机器人
2016-01-25
Qt写的Windows下屏幕录制程序源码
2014-05-30
Qt实现的Windows远程控制软件(服务器端+客户端)
2014-04-30
java学习资源-经典java小程序代码合集
2012-05-15
HexDump源码
2012-05-15
C++ Windows程序设计入门
2012-04-04
Java编写的MVC模式小系统
2012-04-04
SUN公司Java培训教材(中文版)
2012-04-03
Java程序员应该具备的技能
2012-03-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人