<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[doris_d的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/doris_d</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; doris_d]]></copyright><item><title><![CDATA[Android NDK 实现串口工具]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/109763641</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/109763641</guid><author>doris_d</author><pubDate>Wed, 18 Nov 2020 09:08:27 +0800</pubDate><description><![CDATA[实现效果

SerialPort.c
将 SerialPort.c 放入 src/main/cpp 目录中。
#include &lt;termios.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;string.h&gt;
#include &lt;jni.h&gt;

#include "androi]]></description><category></category></item><item><title><![CDATA[手机传感器辅助类]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/109735272</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/109735272</guid><author>doris_d</author><pubDate>Tue, 17 Nov 2020 09:09:12 +0800</pubDate><description><![CDATA[SensorUtil.java
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Handler;]]></description><category></category></item><item><title><![CDATA[一个实用的线程辅助类]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/109173840</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/109173840</guid><author>doris_d</author><pubDate>Tue, 20 Oct 2020 08:53:21 +0800</pubDate><description><![CDATA[另一篇文章 使用Ntrip协议连接CORS服务器获取差分数据-Java 中使用了这个线程辅助类，有人问到，这里把它放上来方便大家参考。
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.IntRange;
import androidx.annotation.NonNull;

impo]]></description><category></category></item><item><title><![CDATA[RxBinding 入门篇]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/109091311</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/109091311</guid><author>doris_d</author><pubDate>Thu, 15 Oct 2020 11:55:46 +0800</pubDate><description><![CDATA[介绍
RxBinding 将 Android 平台中的 UI 控件变为 Observable 对象，将 UI 控件的事件当做 RxJava 中的数据流使用。
GitHub - RxBinding
优点：

RxBinding 是对 Android View 事件的扩展，它帮助我们可以对 View 事件使用 RxJava 的各种操作；
RxBinding 提供了与 RxJava 一致的回调，简化了代码；
几乎支持所有的常用控件及事件；
支持 Kotlin；


使用
build.gradle 中添加引用：
P]]></description><category></category></item><item><title><![CDATA[RxJava 操作符篇 - 组合操作符]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108846965</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108846965</guid><author>doris_d</author><pubDate>Wed, 30 Sep 2020 10:48:50 +0800</pubDate><description><![CDATA[Zip
使用指定函数按顺序结合两个或多个 Observables 发射的数据项，然后发射这个函数返回的结果。它按照严格的顺序应用这个函数。它只发射与发射数据项最少的那个Observable一样多的数据。
Merge
将多个 Observables 的输出项合并为一个 Observable。
StartWith
在数据序列的开发插入一条指定的项。
CombineLatest
当两个 Observables 中的任何一个发射了数据时，使用一个函数结合每个 Observable 发射的最近数据项，并且基于这个函数]]></description><category></category></item><item><title><![CDATA[RxJava 操作符篇 - 过滤操作符]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108846889</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108846889</guid><author>doris_d</author><pubDate>Tue, 29 Sep 2020 15:50:14 +0800</pubDate><description><![CDATA[Debounce
仅在过了一段指定的时间还没发射数据时才发射一个数据，会过滤掉发射速率过快的数据项。
Distinct
过滤掉重复的数据项，只允许还没有发射过的数据项通过。
ElementAt
只发射指定索引位置的数据项。
Filter
指定函数过滤数据项。
First
只发射第一个数据项。
IgnoreElements
抑制原始 Observable 发射的所有数据，只允许它的终止通知（onError和onCompleted）通过。
Last
只发射最后一个数据项。
Sample
定时发射 Observa]]></description><category></category></item><item><title><![CDATA[RxJava 操作符篇 - 转换操作符]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108841837</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108841837</guid><author>doris_d</author><pubDate>Mon, 28 Sep 2020 11:35:00 +0800</pubDate><description><![CDATA[Buffer
定期收集 Observable 的数据放进一个数据包裹，然后发射这些数据包裹，而不是一次发射一个值。
如果原来的 Observable 发射了一个 onError 通知，buffer 会立即传递这个通知，而不是首先发射缓存的数据，即使在这之前缓存中包含了原始 Observable 发射的数据。
buffer(count)
每次取count项发射，最后一次发射可能不足count。
Observable.range(1, 10)
        .buffer(3)
        .subscr]]></description><category></category></item><item><title><![CDATA[RxJava 操作符篇 - 创建操作符]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108829136</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108829136</guid><author>doris_d</author><pubDate>Sun, 27 Sep 2020 16:24:40 +0800</pubDate><description><![CDATA[Create
创建Observable。
Observable.create(new ObservableOnSubscribe&lt;Integer&gt;() {
	   @Override
	   public void subscribe(@NonNull ObservableEmitter&lt;Integer&gt; emitter) throws Throwable {
	       try {
	           for (int i=0; i&lt;10; i++) {
	     ]]></description><category></category></item><item><title><![CDATA[RxJava 与 RxAndroid 入门篇]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108647520</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108647520</guid><author>doris_d</author><pubDate>Sun, 27 Sep 2020 16:12:20 +0800</pubDate><description><![CDATA[响应式编程

是一种基于异步数据流概念的编程模式；
事件；

RxJava

异步数据处理库
扩展的观察者模式 onCompleted，onError
轻量级框架
支持Java 8 lambda
支持Java 6+ &amp; Android 2.3+
支持异步和同步
提高工作效率
优雅的解决复杂业务场景

RxAndroid

RxJava针对Android平台的扩展，用于Android开发
提供响应式扩展组件，快速、易于开发Android程序
Schedulers：调度器

解决Android主线程问题]]></description><category></category></item><item><title><![CDATA[一个实用的TCP通讯类-Java]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108661821</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108661821</guid><author>doris_d</author><pubDate>Fri, 18 Sep 2020 11:21:46 +0800</pubDate><description><![CDATA[import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
impo]]></description><category></category></item><item><title><![CDATA[使用Ntrip协议连接CORS服务器获取差分数据-Java]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108661073</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108661073</guid><author>doris_d</author><pubDate>Fri, 18 Sep 2020 11:14:04 +0800</pubDate><description><![CDATA[NtripClient
import android.util.Base64;

import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import.]]></description><category></category></item><item><title><![CDATA[Retrofit2 入门篇]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108481376</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108481376</guid><author>doris_d</author><pubDate>Fri, 11 Sep 2020 09:54:52 +0800</pubDate><description><![CDATA[Retrofit介绍
Retrofit是Square公司基于RESTful风格的网络框架封装，它并不是一个网络框架，而是对OKHttp的二次封装，其本质仍是OKHttp。
github地址

API设计简洁；
通过注解配置请求，高度解耦；
支持多种解析器，支持Gson（默认）、Jackson、Protobuf等；
支持RxJava；
Retrofit2中导入了OKHttp3；


其他网络框架介绍
AndroidAsynHttp

基于HttpClient；
在UI线程外异步的进行Http请求，在匿名回调中]]></description><category></category></item><item><title><![CDATA[敏捷估算扑克]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/108212943</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/108212943</guid><author>doris_d</author><pubDate>Tue, 25 Aug 2020 08:48:15 +0800</pubDate><description><![CDATA[敏捷扑克是什么？
其实应该叫“估算扑克”更准确一些，本质上是扑克牌，基于Delphi估算原理，可以快速估算出需要的数字。
关于扑克牌上的数字
估算扑克牌上的数字，有的牌是自然数排列，有些是斐波纳契数，有些则是不连续自然数。具体选用哪种扑克，要根据被估算的内容的跨度大小而定，如果估算值跨度在10倍以内，那么采用顺序自然数比较好，如果数值跨度较大，达到10倍以上，那么采用斐波纳契数比较好。一般而言，估算软件开发工时的话，自然数可能更好一些，毕竟数值都不大，跨度也不会很夸张。
扑克估算的意义与价值
第一点，自然是]]></description><category></category></item><item><title><![CDATA[C#使用log4net输出日志到文件&控制台&PostgreSQL]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/106410643</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/106410643</guid><author>doris_d</author><pubDate>Thu, 28 May 2020 18:51:04 +0800</pubDate><description><![CDATA[项目环境

VS2017
log4net v2.0.3
PostgreSQL v3.0


引用log4net
右键项目，点击【管理NuGet程序包】，浏览中搜索【log4net】，下载安装即可。
注意：若要输出到PostgreSQL，需要使用v2.0.3版本。
我开始安装的v2.0.8，发现sql语句中无法解析参数，修改为低版本就好了。

添加配置文件

右键项目，添加配置文件【log4net.config】；
将配置文件的属性设置为【如果较新则复制】；
在配置文件的【configuration】节点下添]]></description><category></category></item><item><title><![CDATA[Android使用me.dm7.barcodescanner:zxing扫描二维码乱码问题处理]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/105955311</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/105955311</guid><author>doris_d</author><pubDate>Wed, 06 May 2020 17:39:02 +0800</pubDate><description><![CDATA[项目中使用me.dm7.barcodescanner:zxing实现扫描二维码、条形码的功能，部分二维码出现乱码问题，解决方法如下：
在ZXingScannerView.ResultHandler.handleResult中增加结果的乱码判断，若乱码，则转换字符集。
public void handleResult(Result result) {
	String str = result.get...]]></description><category></category></item><item><title><![CDATA[Java Web 开发准备：JDK & Eclipse & Tomcat]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/105527537</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/105527537</guid><author>doris_d</author><pubDate>Wed, 15 Apr 2020 20:30:58 +0800</pubDate><description><![CDATA[Eclipse
Tomcat
Eclipse 中部署 Tomcat 服务器

]]></description><category></category></item><item><title><![CDATA[解决Windows8插入USB设备无响应的问题]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/105527042</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/105527042</guid><author>doris_d</author><pubDate>Wed, 15 Apr 2020 08:54:22 +0800</pubDate><description><![CDATA[重装了个Windows 8的系统，发现连接Android设备时，电脑无响应，Android Studio中调试也看不到设备，折腾半天，记录下修复方法。


右键【这台电脑】，点击【管理】，打开【计算机管理】，点击【设备管理器】；


插上设备，【设备管理器】刷新，出现带【！】的设备。如果没有刷新，则在Android设备的开发这选项中重新打开调试，再次插拔设备；



右键【未知设备】，点击【更新驱...]]></description><category></category></item><item><title><![CDATA[Shpfile属性编码自动识别（C#，Java，C）]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/102855024</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/102855024</guid><author>doris_d</author><pubDate>Thu, 09 Jan 2020 16:16:29 +0800</pubDate><description><![CDATA[shpfile构成

]]></description><category></category></item><item><title><![CDATA[mp4文件解析（c#）]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/103762379</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/103762379</guid><author>doris_d</author><pubDate>Tue, 31 Dec 2019 11:19:03 +0800</pubDate><description><![CDATA[ISO/IEC 14496
ISO/IEC 14496 是MPEG专家组制定的MPEG-4标准，于2000年年初正式成为国际标准。MPEG-4与MPEG-1和MPEG-2有很大的不同。MPEG-4不只是具体压缩算法，它是针对数字电视、交互式绘图应用（影音合成内容）、交互式多媒体（WWW、资料撷取与分散）等整合及压缩技术的需求而制定的国际标准。
MPEG-4由一系列的字标准组成，包含以下的部分：

...]]></description><category></category></item><item><title><![CDATA[Android 10 定位问题，获取NMEA（支持5.0~10.0）]]></title><link>https://blog.youkuaiyun.com/doris_d/article/details/102941696</link><guid>https://blog.youkuaiyun.com/doris_d/article/details/102941696</guid><author>doris_d</author><pubDate>Fri, 08 Nov 2019 18:02:31 +0800</pubDate><description><![CDATA[兼容 Android 5.0 ~ Android 10.0 的定位方法

编译版本设置为 24 ~ 28 之间

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.xd.gps"
        minSdkVersion 21
        // 目标sdk版本&lt;29，文件读...]]></description><category></category></item></channel></rss>