<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[渔歌子的程序人生]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/QZidane</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; QZidane]]></copyright><item><title><![CDATA[MockServer学习 - part1]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/75949181</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/75949181</guid><author>QZidane</author><pubDate>Sun, 23 Jul 2017 22:55:56 +0800</pubDate><description><![CDATA[引子
  单位近期要研究应用挡板，找了下开源框架，MockServer看上去挺好，但系统的中文资料比较稀缺，所幸官网资料全面，干脆用俺蹩脚的英文翻译一下吧，既可以加深印象，又能方便后人，可乐而不为？
① 什么是MockServer
  MockServer能用来模拟任何集成了Http或者Https功能的系统
MockServer可以：
当接收到一个预期的请求时，返回一个模拟的响应
当接收到一个预期的]]></description><category></category></item><item><title><![CDATA[JavaFX - Dock效果模态框]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/73262110</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/73262110</guid><author>QZidane</author><pubDate>Wed, 14 Jun 2017 23:36:04 +0800</pubDate><description><![CDATA[效果
  类似DOCK, 在主界面的右方弹出/收回，或者显示/隐藏 
  
思路
新创建一个dock_stage
dock_stage的模态类型为NONE或者WINDOW_MODAL（否则会挡住主stage）
在主stage的scene的x、y属性增加监听器
监听器动作是更新dock_stage的X和Y坐标
不足
移动主stage时，dock_stage有非常轻微的脱离感，或许有其他更好的方法？比如]]></description><category></category></item><item><title><![CDATA[JavaFX - 关于子线程更新UI]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/72805587</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/72805587</guid><author>QZidane</author><pubDate>Mon, 29 May 2017 22:58:21 +0800</pubDate><description><![CDATA[之前看了篇blog学习了一下如何使用JavaFX多线程：
  JavaFX如何做多线程编程
里面讲到用Task或者Service来启用FX子线程以更新界面。最近尝试了下用Task，但一直报错：
  “Not on FX application thread”
研究了半天，发现Task类里面的call方法还是使用传统子线程做处理只有successed, running, scheduled, canc]]></description><category></category></item><item><title><![CDATA[Java - 字符串处理库 - StringUtil [转]]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/53892812</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/53892812</guid><author>QZidane</author><pubDate>Tue, 27 Dec 2016 09:17:34 +0800</pubDate><description><![CDATA[package com.sun.util;import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.sql.Timest]]></description><category></category></item><item><title><![CDATA[JavaScript - 继承]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/52099078</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/52099078</guid><author>QZidane</author><pubDate>Tue, 02 Aug 2016 23:22:16 +0800</pubDate><description><![CDATA[目录
类式继承
构造函数继承
组合继承(1+2)
寄生式继承
寄生组合继承
多重继承
多态
类式继承
  通过原型链继承的方式
实现方法 :// 声明父类
function SuperClass() {
    this.superValue = 'SUPER';
}
// 为父类添加公共方法
SuperClass.prototype.getSuperValue = function() {]]></description><category></category></item><item><title><![CDATA[Javascript - 回调]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/52079300</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/52079300</guid><author>QZidane</author><pubDate>Sun, 31 Jul 2016 16:29:00 +0800</pubDate><description><![CDATA[理解回调:
  
  回调指将B函数作为参数传递给A函数，并且在A函数处理完成后被调用
  跟iOS的事件绑定是同一个意思：当事件触发时，使用绑定的函数
  
举个例子：// 在haveBreakfast函数中，先执行完console.log，才会执行callback函数
function haveBreakfast(food, drink, callback) {
    console.log(]]></description><category></category></item><item><title><![CDATA[Javascript - 创建对象的安全模式]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/52079186</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/52079186</guid><author>QZidane</author><pubDate>Sun, 31 Jul 2016 16:11:00 +0800</pubDate><description><![CDATA[若创建对象时不使用new关键字，则可能会导致原本为对象的属性和方法创建到全局变量上// 比如：
var instance = Book('title','name'); // 这里Book()函数在全局作用域中执行了，而如果Book没有返回值，则instance的值是undefined
避免创建无效对象的解决方法是：在定义构造函数时加入判断var Book = function(title, tim]]></description><category></category></item><item><title><![CDATA[Javascript - 闭包]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/52078157</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/52078157</guid><author>QZidane</author><pubDate>Sun, 31 Jul 2016 13:16:27 +0800</pubDate><description><![CDATA[理解闭包：
  ①. 闭包是阻止垃圾回收器将变量从内存中移除的方法，使得在创建变量的执行环境的外面能够访问到该变量1
  
  ②. 闭包因保存函数而被创建2
  
  ③. 闭包是有权访问另外一个函数作用域中变量的函数，即在一个函数内部创建另外一个函数。3
示例代码：example1：理解①②var prison = {
    name : 'zidane',
    who : functio]]></description><category></category></item><item><title><![CDATA[Android Studio导入Cordova项目]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/51988838</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/51988838</guid><author>QZidane</author><pubDate>Thu, 21 Jul 2016 23:01:48 +0800</pubDate><description><![CDATA[准备工作
  
  安装nodejs
  安装cordova
  安装android studio
  安装gradle – 这个在cordova build android时自动下载和安装
  新建cordova项目：cordova create myApp xxx.xxx.xxx.myApp myApp
新建android项目：cordova platform add android
查看项目依]]></description><category></category></item><item><title><![CDATA[Javascript 定义命名空间，减少全局变量污染]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/51925214</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/51925214</guid><author>QZidane</author><pubDate>Sat, 16 Jul 2016 16:55:44 +0800</pubDate><description><![CDATA[创建命名空间
  1、每个js文件都采取“立即执行函数(IIFE)”来创建命名空间
  
  2、程序运行时该js文件只会产生一个全局变量(object类型)
  
  3、需要对外公布的属性和方法在return内定义，这样能有效保护了内部变量和内部方法不被随意改变和调用。
例子://1.js 该文件有创建命名空间
var hello1 = (function () {
    var hello1]]></description><category></category></item><item><title><![CDATA[JavaScript-导航栏点击变色处理]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50993063</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50993063</guid><author>QZidane</author><pubDate>Sun, 27 Mar 2016 18:51:29 +0800</pubDate><description><![CDATA[// 绑定列表点击事件，点击后会传递event

var navList = document.getElementById('nav-pills');
if (navList) {
    navList.addEventListener('click', listSelect, false);    
};

// 点击导航栏，激活+变色相应的li
function listS]]></description><category></category></item><item><title><![CDATA[Javascript-ajax的get/post方法]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50814471</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50814471</guid><author>QZidane</author><pubDate>Sun, 06 Mar 2016 18:14:07 +0800</pubDate><description><![CDATA[// ajax的post方法:
// login的post方法，调用B1接口
function LoginPost() {
	$.ajax({
		//提交数据的类型 POST GET
		type: "POST",
		//提交的网址
		url: "http://localhost:8080/FootBallWebSite/LoginServlet",
		//提交的数据
		data: {
]]></description><category></category></item><item><title><![CDATA[IOS测试：XCTest小试牛刀]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50682685</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50682685</guid><author>QZidane</author><pubDate>Wed, 17 Feb 2016 21:30:18 +0800</pubDate><description><![CDATA[今晚试了下XCTest的使用，比较简单，就是IOS版的单元测试，并且也可以用作TDD(测试驱动开发)：


Step1：假设我们要测试的类功能是返回字符串：
#import "CLASSA.h"

@implementation CLASSA

-(NSString *)Hello:(NSString *)name{
    NSString *helloTo = [name string]]></description><category></category></item><item><title><![CDATA[ignoring file ***missing required architecture armv7in file ****  ignoring file ***missing required]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50674408</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50674408</guid><author>QZidane</author><pubDate>Tue, 16 Feb 2016 14:08:06 +0800</pubDate><description><![CDATA[今天调试时发现用模拟器运行成功，但是真机报错：



iOS警告： ignoring file ***missing required architecture
armv7in file ****
Undefined symbols for architecture armv7:
 "_OBJC_CLASS_$_SafeInput", referenced from:
     o]]></description><category></category></item><item><title><![CDATA[Cordova：插件测试小结-cordova-plugin-test-framework]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50280965</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50280965</guid><author>QZidane</author><pubDate>Sun, 13 Dec 2015 09:40:25 +0800</pubDate><description><![CDATA[最近研究cordova插件测试，官网公布的测试框架也就cordova-plugin-test-framework比较完善，不过官方文档有点坑（比如plugin.xml的设置，根本不需要），以至于调试好久才通，分享下心得：

项目github地址：https://github.com/QiuZidane/hello2.git

以android为例(ios也是支持的)：
测试脚本id：de]]></description><category></category></item><item><title><![CDATA[编程思想：使用extern传值]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50241637</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50241637</guid><author>QZidane</author><pubDate>Wed, 09 Dec 2015 21:20:06 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[编程思想：理解回调-CallBack]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/50059977</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/50059977</guid><author>QZidane</author><pubDate>Thu, 26 Nov 2015 19:29:11 +0800</pubDate><description><![CDATA[// 回调指将B函数作为参数传递给A函数，并且在A函数处理完成后被调用
// 跟iOS的事件绑定是同一个意思：当事件触发时，使用绑定的函数

// 举个栗子：
// 在haveBreakfast函数中，先执行完console.log，才会执行callback函数
function haveBreakfast(food, drink, callback) {
    console.log]]></description><category></category></item><item><title><![CDATA[Cordova - 安装和使用]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/49950901</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/49950901</guid><author>QZidane</author><pubDate>Fri, 20 Nov 2015 19:19:06 +0800</pubDate><description><![CDATA[一、安装

1. 安装Node.js，安装后，就可以在/usr/bin目录中找到node和npm这两个命令。
Node.js was installed at
   /usr/local/bin/node
npm was installed at
   /usr/local/bin/npm
Make sure that /usr/local/bin is in your $PATH.]]></description><category></category></item><item><title><![CDATA[ios编程思想：委托实现方式2 - 协议类方式]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/49836493</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/49836493</guid><author>QZidane</author><pubDate>Sat, 14 Nov 2015 16:12:07 +0800</pubDate><description><![CDATA[接上一篇：委托实现方式1 - 协议方式(protocol)
 
最近学习了一种新的委托实现方式，比起使用协议来说更为简单——使用协议类的方式。
协议类是我自己的叫法而已，其实就是一个类，在类里面定义需要帮其他类做的事情（方法），然后其他类定义一个id指向这个协议类即可。其实原理跟使用协议是大同小异的，但使用协议类的话，就不需要另外声明协议，然后遵循这遵循那了，感觉简单些~
 
具体实现代]]></description><category></category></item><item><title><![CDATA[ios编程思想：委托实现方式1 - 协议方式(protocol)]]></title><link>https://blog.youkuaiyun.com/QZidane/article/details/49835875</link><guid>https://blog.youkuaiyun.com/QZidane/article/details/49835875</guid><author>QZidane</author><pubDate>Sat, 14 Nov 2015 15:06:59 +0800</pubDate><description><![CDATA[>：

MyClass是主类当MyClass要打印时，委托DelegateClass执行打印具体打印用到的方法，通过协议定义，该协议在DLogProtocol内声明结构如下：
 
 
>：
一、通常在类的头文件内定义协议,也可以单独使用一个头文件定义协议

// DLogProtocol.h

//  定义打印用到的方法

@protocol DLogProtocol

@requ]]></description><category></category></item></channel></rss>