<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yanhandle的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yanhandle</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yanhandle]]></copyright><item><title><![CDATA[[沧海拾遗]nginx反向代理和负载均衡]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/17011293</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/17011293</guid><author>yanhandle</author><pubDate>Thu, 28 Nov 2013 20:08:37 +0800</pubDate><description><![CDATA[今天收到一个需求，集群A上的一个页面中要调用B集群的一个ajax接口，然后这个ajax接口需要从cookie中取到session id去取session信息，但是这个cookie在调用集群B的登录时会写到集群B的域名下，因此集群A上的页面无法取到。而A、B两个集群都是nginx+tomcat的架构。想了一下，觉得可以通过nginx的反向代理和负载均衡来解决这个问题。

如果A集群页面url中的]]></description><category></category></item><item><title><![CDATA[[举重若轻]html5 history api实现单页面结构]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/16967167</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/16967167</guid><author>yanhandle</author><pubDate>Tue, 26 Nov 2013 16:42:02 +0800</pubDate><description><![CDATA[为了提高wap页面的响应速度，以及减少用户的流量，无线端越来越多地开始采用"单页面结构"。所谓的单页面结构就是指多个页面间切换时，不刷新当前整个页面，而是更新页面中的某些需要更新的dom节点;并且在通过点击跳加载另一个页面内容时，要相应地改变地址栏中的url。要做到页面内容的无刷更新并不困难，使用ajax或者jsonp等技术就可以实现。而本文主要介绍如何在点击后页面无刷地来改变地址格栏的url。]]></description><category></category></item><item><title><![CDATA[[沧海拾遗]applet在web容器中的部署]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/9313813</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/9313813</guid><author>yanhandle</author><pubDate>Fri, 12 Jul 2013 17:30:33 +0800</pubDate><description><![CDATA[将一个applet部署到web应用中，首先在html端很简单，只要在html嵌入如下的applet代码即可：


但是这个时候要把TestApplet.jar部署到哪呢？假设上面的html页面的访问url为如下：
http://XXXXX/path/test.html

而applet在执行时需要去下载对应的jar包，而这个jar的下载地址由两个来决定，当前的url路径和codebas]]></description><category></category></item><item><title><![CDATA[[沧海拾遗]applet本地web开发例子]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/9190791</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/9190791</guid><author>yanhandle</author><pubDate>Thu, 27 Jun 2013 18:28:23 +0800</pubDate><description><![CDATA[最近想做一个应用，需要用到本地的tcp服务，因此就想通过applet来实现。骤然发现，虽然用java开发web这么多年，用applet估计还是在上学期间。记录下一个简单的开发例子：


写一个applet类
 import java.applet.Applet;  
 import java.awt.Button;   
 import java.awt.event.ActionEvent]]></description><category></category></item><item><title><![CDATA[[抢海拾遗]java并发之线程中断]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/9189763</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/9189763</guid><author>yanhandle</author><pubDate>Thu, 27 Jun 2013 17:03:20 +0800</pubDate><description><![CDATA[java线程启动比较容易，但是要停止却比较麻烦。JAVA在线程设计之初设计了大量的方法来控制线程的状态，如start、suspend、resume、stop、destroy等操作。后来由于在多线程开发环境中各种并发问题而被deprecated了。本文主要介绍一些线程的stop方法以及正确的中断线程方法。

Thread.stop

在一开始使用java时，要停止一个线程，有可能会误用线程的]]></description><category></category></item><item><title><![CDATA[[举重若轻]Debian下android真机调试]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/9122995</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/9122995</guid><author>yanhandle</author><pubDate>Tue, 18 Jun 2013 18:33:38 +0800</pubDate><description><![CDATA[Linux下android连真机设备经常显示设置名为”??????”,并且查看设备时也出现”????????? no permission”,并且导致连上不真机，无法调试。google了一下，解决方法如下： 
1. 进入root用户（在debian下好像必须是在root用户下才行，使用sudo也不行）
2. 关闭服务
./adb kill-server
3. 重启服务
./adb sta]]></description><category></category></item><item><title><![CDATA[[沧海拾遗]java并发之Executor]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/9037401</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/9037401</guid><author>yanhandle</author><pubDate>Thu, 06 Jun 2013 11:27:58 +0800</pubDate><description><![CDATA[java自1.5以来加入了处理一批线程的方法，也就是java并发包里的Executor。本文主要介绍ExecutorService的用法，Runable和Callable的用法以及ExecutorCompletionService的用法。 
使用Executor来执行多个线程的好处是用来避免线程的创建和销毁的开销，以提升效率。因此如果某些场景需要反复创建线程去处理同类事务的话，可以考虑使用线程池]]></description><category></category></item><item><title><![CDATA[[沧海拾遗]java并发之CountDownLatch、Semaphore和CyclicBarrier]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/9016329</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/9016329</guid><author>yanhandle</author><pubDate>Mon, 03 Jun 2013 19:30:36 +0800</pubDate><description><![CDATA[JAVA并发包中有三个类用于同步一批线程的行为，分别是CountDownLatch、Semaphore和CyclicBarrier。

CountDownLatch

CountDownLatch是一个计数器闭锁，主要的功能就是通过await()方法来阻塞住当前线程，然后等待计数器减少到0了，再唤起这些线程继续执行。 这个类里主要有两个方法，一个是向下减计数器的方法:countdown()]]></description><category></category></item><item><title><![CDATA[[沧海拾遗]读＜Linux/Unix设计思想＞个人所思]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8961835</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8961835</guid><author>yanhandle</author><pubDate>Thu, 23 May 2013 09:31:48 +0800</pubDate><description><![CDATA[＜Linux/Unix设计思想＞一书主要介绍了unix系统设计中的一些原则，其中包含了九个主原则和十个原则。
九大主原则


SMALL
即“小即是美”。小则灵活，并易于改变去适应变化。而大则牵一发而动全身，一旦改变就会伤筋动骨。说到这个原则，就想起我们it界那个长久以来口口相传的笑话，说工程师老是被pd说改需求改需求，从而狂燥甚至发狂。笑一笑后，是不是该想一想，之所以出现这么难以改变的]]></description><category></category></item><item><title><![CDATA[[举重若轻]gnome3远程桌面nx安装]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8959978</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8959978</guid><author>yanhandle</author><pubDate>Wed, 22 May 2013 13:45:07 +0800</pubDate><description><![CDATA[debian 7 开始默认安装gnome 3，这给很多使用nomachine来远程Linux的人带来了很大的不便.目前nomachine的所有版本对gnome3的支持都不是很好。 后来无意间发现了一款nomachine的客户端开源软件，安装好后居然能够显示gnome 3,真是神奇的事情。这个软件的名字叫opennx。大家可以google一 下找到软件，然后安装，但是安装好后发现始终无法将服务器端的]]></description><category></category></item><item><title><![CDATA[[举重若轻]android开发环境]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8959969</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8959969</guid><author>yanhandle</author><pubDate>Wed, 22 May 2013 13:43:57 +0800</pubDate><description><![CDATA[adt安装

在http://developer.android.com/sdk/index.html下载包。由于本人机器上安装的是64位的debian系统，因此下载好解压开来执行时会有问题，会报如下错误：

Unexpected exception ‘Cannot run program “/home/android/sdk/platform-tools/adb”: java.io.IO]]></description><category></category></item><item><title><![CDATA[[举重若轻]debian安装无线网络设置]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8959961</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8959961</guid><author>yanhandle</author><pubDate>Wed, 22 May 2013 13:42:20 +0800</pubDate><description><![CDATA[debain的网络设置不像ubuntu一样，会由系统来自动设置，需要我们手工配置配置文件，来进行连接。debian中的网络配置方法如下(以无线网络为例，无线网络id为wlan0)：

编辑/etc/network/interface,加入如下内容：
auto wlan0  
iface wlan0 inet dhcp  
    wpa-conf /etc/wpa_supplicant/wi]]></description><category></category></item><item><title><![CDATA[[举重若轻]python+django+mysql web开发入门学习之orm]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8556191</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8556191</guid><author>yanhandle</author><pubDate>Wed, 30 Jan 2013 15:17:51 +0800</pubDate><description><![CDATA[django中有一套类似于hibernate的orm框架，方便来处理与数据库相关的事务。要使用这个orm框架，首先需要设置好mysql的连接参数，在settings.py中有一个DATABASES的配置项，详情如下：
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgr]]></description><category></category></item><item><title><![CDATA[[举重若轻]python+django+mysql web开发入门学习之动态模板]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8555924</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8555924</guid><author>yanhandle</author><pubDate>Wed, 30 Jan 2013 14:30:37 +0800</pubDate><description><![CDATA[很多时候，我们要将后台处理的数据回显到页面上，显然用纯静态的html不可能实现，需要与一种模板语言结合，来实现动态回显，在django中内置有这样的动态模板，比如我们之前的hello world,我们可以如下改造：

from django.http import HttpResponse
from django.template import Context, Template

def h]]></description><category></category></item><item><title><![CDATA[[举重若轻]python+django+mysql web开发入门学习之hello world]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8555303</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8555303</guid><author>yanhandle</author><pubDate>Wed, 30 Jan 2013 11:33:55 +0800</pubDate><description><![CDATA[创建项目
部署好环境之后，要开发一个web程序，首先我们要建立一个项目：
django-admin.py startproject mysite
如果系统找不到django-admin.py命令，可以到python的bin目录下查找。这个命令会创建一个项目目录mysite，它下面的目录详情如下：
├── manage.py
└── mysite
    ├── __init__.py]]></description><category></category></item><item><title><![CDATA[[举重若轻]python+django+mysql web开发入门学习之环境搭建]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8555151</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8555151</guid><author>yanhandle</author><pubDate>Wed, 30 Jan 2013 10:55:57 +0800</pubDate><description><![CDATA[安装python:

sudo apt-get install python


安装django：
下载地址：https://www.djangoproject.com/download/ ,或者直接使用wget:

wget https://www.djangoproject.com/download/1.4.3/tarball -O Django-1.4.3.tar.gz]]></description><category></category></item><item><title><![CDATA[[举重若轻]ajax打开新窗口实现]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8486638</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8486638</guid><author>yanhandle</author><pubDate>Thu, 10 Jan 2013 14:47:43 +0800</pubDate><description><![CDATA[最近开发中碰到一个问题，有一场景需要在ajax验证通过后在新窗口打开一个url。一开始通过在异步回调函数中使用window.open()来实现，但是发现这种实现方式会被浏览器拦截，需要用户进行浏览器设置才能打开，但是这显然不适合在互联网应用中对用户做这个限制。因此就想有没有什么办法来解决？
        首先的一个想法是js打开一个新窗口不行，有可能是浏览器对于js直接打开新窗口有安全限制，那]]></description><category></category></item><item><title><![CDATA[[N天一练]java exception]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/8125331</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/8125331</guid><author>yanhandle</author><pubDate>Thu, 01 Nov 2012 19:16:47 +0800</pubDate><description><![CDATA[java exception是java有别于其他语言的一个重要特性，在平时的工作中相信大家经常会用到，目前大家对于exception的使用也存在各种各样的争议，最近有时间整理了一下。我们知道exception在java中的体系结构：
       
        无论是error还是exception都继承自Throwable类。
        Error往往是一些合理程序不能截获的严重]]></description><category></category></item><item><title><![CDATA[[N天一练]打造自己的chrome]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/7948328</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/7948328</guid><author>yanhandle</author><pubDate>Wed, 05 Sep 2012 23:07:18 +0800</pubDate><description><![CDATA[chrome有两种方式可供我们使用来扩展chrome的功能，一种是扩展程序，一种是js脚本。这两种扩展方式能使我们开发出一系列的便利的工具。
        首先讲一讲chrome扩展程序开发。前些日子搞了一个https服务器，但是发现swithysharp下的手动配置中，配置了https代理不可用，于是就想了解一下chrome的扩展程序到底是如何实现的。
        要开发一个chrom]]></description><category></category></item><item><title><![CDATA[[N天一练]node.js搭建https代理服务器]]></title><link>https://blog.youkuaiyun.com/yanhandle/article/details/7925196</link><guid>https://blog.youkuaiyun.com/yanhandle/article/details/7925196</guid><author>yanhandle</author><pubDate>Thu, 30 Aug 2012 18:28:25 +0800</pubDate><description><![CDATA[前段时间看到一篇文章：http://www.sunchangming.com/blog/?p=4325 。文章里讲到如果通过node.js来搭建https代理服务器，看了之后自己动手试了试，发现文档写得不是太详细，导致很多地方都需要自己费力去查资料，在此将自己的搭建过程记录一下。
        google的chrome以及firefox(11以上)浏览器内置了对基于ssl加密的代理支持，我们]]></description><category></category></item></channel></rss>