<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[KasoGG的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/kasogg</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; kasogg]]></copyright><item><title><![CDATA[ThreadPoolExecutor原理简介]]></title><link>https://blog.csdn.net/kasogg/article/details/55271591</link><guid>https://blog.csdn.net/kasogg/article/details/55271591</guid><author>kasogg</author><pubDate>Thu, 16 Feb 2017 20:25:37 +0800</pubDate><description><![CDATA[1. execute首先判断当前线程池的线程数是不是小于corePoolSize，如果小于直接addWorker创建新的线程进行工作
 2. 如果大于等于corePoolSize，则添加到workQueue里面，等池子里线程空闲了就去workQueue里面取任务执行
 3. 当workQueue添加满时（有限容量的BlockingQueue），就新建线程放入线程池直接执行，如果池子线程数量达到maximumPool]]></description><category></category></item><item><title><![CDATA[关于android:windowAnimationStyle]]></title><link>https://blog.csdn.net/kasogg/article/details/51719596</link><guid>https://blog.csdn.net/kasogg/article/details/51719596</guid><author>kasogg</author><pubDate>Mon, 20 Jun 2016 11:32:20 +0800</pubDate><description><![CDATA[android:windowAnimationStyle分为两种，一种是activityAnimation，一种是windowAnimation。ActivityAnimation<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowAnimationSty]]></description><category></category></item><item><title><![CDATA[Gradle 多环境配置]]></title><link>https://blog.csdn.net/kasogg/article/details/50585257</link><guid>https://blog.csdn.net/kasogg/article/details/50585257</guid><author>kasogg</author><pubDate>Tue, 26 Jan 2016 09:42:02 +0800</pubDate><description><![CDATA[设置不同的BuildType可以通过设置不同的 BuildType 来生成多个版本的配置。修改 app 模块下的 build.gradle:android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"    defaultConfig {
        applicationId "com.kasogg.demo"]]></description><category></category></item><item><title><![CDATA[Activity launchMode详解]]></title><link>https://blog.csdn.net/kasogg/article/details/50433664</link><guid>https://blog.csdn.net/kasogg/article/details/50433664</guid><author>kasogg</author><pubDate>Wed, 30 Dec 2015 18:13:30 +0800</pubDate><description><![CDATA[Activity android:launchMode详解Task首先介绍 Task 的概念。Task 可以理解为任务栈，用来存放 Activity，按照先进先出的顺序。一个应用可以具有多个 task，一个 task 里面也可以具有多个 Activity。默认的话只有一个任务栈，所有 Activity 都是在这个任务栈中管理，特殊情况下会有多个 task，而这些 task 之间是可以互相切换的（ba]]></description><category></category></item><item><title><![CDATA[DrawerLayout设置滑动边距]]></title><link>https://blog.csdn.net/kasogg/article/details/49756169</link><guid>https://blog.csdn.net/kasogg/article/details/49756169</guid><author>kasogg</author><pubDate>Tue, 10 Nov 2015 10:30:14 +0800</pubDate><description><![CDATA[public static void setDrawerLeftEdgeSize(Activity activity, DrawerLayout drawerLayout, float displayWidthPercentage) {
    if (activity == null || drawerLayout == null) return;
    try {
        Field leftDraggerField = drawerLayout.getClass().getDeclaredF]]></description><category></category></item><item><title><![CDATA[Android StartService和BindService]]></title><link>https://blog.csdn.net/kasogg/article/details/49755845</link><guid>https://blog.csdn.net/kasogg/article/details/49755845</guid><author>kasogg</author><pubDate>Tue, 10 Nov 2015 10:08:52 +0800</pubDate><description><![CDATA[一、Service相关方法
startService()，开启一个服务，可以在系统后台Running Apps里面看到服务在运行，不依赖于具体的某个组件，开启后会调用Service的onStartCommand()方法。  
stopService()，停止一个服务，停止后Running Apps里面看不到服务在运行。 
bindService()，绑定一个服务，绑定到具体组件上——Activity]]></description><category></category></item><item><title><![CDATA[Android Apk签名信息详解]]></title><link>https://blog.csdn.net/kasogg/article/details/49755591</link><guid>https://blog.csdn.net/kasogg/article/details/49755591</guid><author>kasogg</author><pubDate>Tue, 10 Nov 2015 09:51:09 +0800</pubDate><description><![CDATA[应用程序打包时，会对每一个未签名的apk进行签名。在Apk安装时，会将其签名信息进行比对，从而判断该Apk是否可以安装，在一定程度上达到安全的目的。给定一个Apk文件，解压，可以看到一个META-INFO文件夹，在该文件夹下有三个文件：分别为MANIFEST.MF、CERT.SF和CERT.RSA。这三个文件分别表征以下含义：（1）MANIFEST.MF：这是摘要文件。程序遍历Apk包中的所有文件]]></description><category></category></item><item><title><![CDATA[Jquery Ajax ParseError]]></title><link>https://blog.csdn.net/kasogg/article/details/25030979</link><guid>https://blog.csdn.net/kasogg/article/details/25030979</guid><author>kasogg</author><pubDate>Mon, 05 May 2014 10:32:04 +0800</pubDate><description><![CDATA[jquery ajax请求中有个dataType参数,作用是预期服务器返回的类型。如果设置为json，而服务器返回空zif]]></description><category></category></item><item><title><![CDATA[25个必须记住的SSH命令]]></title><link>https://blog.csdn.net/kasogg/article/details/8230254</link><guid>https://blog.csdn.net/kasogg/article/details/8230254</guid><author>kasogg</author><pubDate>Tue, 27 Nov 2012 15:15:35 +0800</pubDate><description><![CDATA[OpenSSH是SSH连接工具的免费版本。telnet，rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的，但SSH是加密的，OpenSSH加密所有通信（包括密码），有效消除了窃听，连接劫持和其它攻击。此外，OpenSSH提供了安全隧道功能和多种身份验证方法，支持SSH协议的所有版本。
SSH是一个非常伟大的工具，如果你要在互联网上远程连接到服务器，那么SSH无疑是最佳的候]]></description><category></category></item><item><title><![CDATA[排序算法总结]]></title><link>https://blog.csdn.net/kasogg/article/details/8127420</link><guid>https://blog.csdn.net/kasogg/article/details/8127420</guid><author>kasogg</author><pubDate>Tue, 30 Oct 2012 11:11:11 +0800</pubDate><description><![CDATA[稳定：　冒泡排序、插入排序、归并排序、基数排序
不稳定：选择排序、快速排序、希尔排序、堆排序

时间复杂度：
      O(nlog2n):快速排序、堆排序、归并排序
      O(n^2):冒泡排序、插入排序、选择排序

空间复杂度：
      O(log2n):快速排序
      O(n):归并排序


2.1 冒泡排序（Bubble Sort） 
冒泡排序是]]></description><category></category></item><item><title><![CDATA[Struts2拦截器简单模拟]]></title><link>https://blog.csdn.net/kasogg/article/details/8012482</link><guid>https://blog.csdn.net/kasogg/article/details/8012482</guid><author>kasogg</author><pubDate>Mon, 24 Sep 2012 13:45:43 +0800</pubDate><description><![CDATA[简单模拟了下Struts2拦截器的原理。
首先定义Interceptor接口：

package com.kaso.interceptor;
 
 public interface Interceptor {
 	public String intercept(ActionInvocation invocation);
 }
该接口中引用了ActionInvocation类：


p]]></description><category></category></item><item><title><![CDATA[Struts2拦截器源码分析]]></title><link>https://blog.csdn.net/kasogg/article/details/8012455</link><guid>https://blog.csdn.net/kasogg/article/details/8012455</guid><author>kasogg</author><pubDate>Mon, 24 Sep 2012 13:24:21 +0800</pubDate><description><![CDATA[当一个请求发出时，由StrutsPrepareAndExecuteFilter过滤请求。它会调用Dispatcher来处理请求，Dispatcher类会执行serviceAction方法，创建ActionProxy，并调用ActionProxy的execute()方法。ActionProxy的execute()方法会调用ActionInvocation的invoke()方法。

public]]></description><category></category></item><item><title><![CDATA[Struts2中loginAction的no result success问题]]></title><link>https://blog.csdn.net/kasogg/article/details/7966448</link><guid>https://blog.csdn.net/kasogg/article/details/7966448</guid><author>kasogg</author><pubDate>Tue, 11 Sep 2012 11:27:05 +0800</pubDate><description><![CDATA[在Struts2中，配置了action：
	
		
			/index.jsp
			/login.jsp
		
	结果总是返回no result success defined for action，后来把action的name改为loginAction就好了。原因可能是login是struts2内置的名字，不能使用。]]></description><category></category></item><item><title><![CDATA[Spring中EmptyResultDataAccessException异常的处理方法]]></title><link>https://blog.csdn.net/kasogg/article/details/7948401</link><guid>https://blog.csdn.net/kasogg/article/details/7948401</guid><author>kasogg</author><pubDate>Wed, 05 Sep 2012 22:39:37 +0800</pubDate><description><![CDATA[Spring中使用JdbcTemplate的queryForObject方法，当查不到数据时会抛出如下异常：



	org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
	org.springframework.dao.support.Data]]></description><category></category></item><item><title><![CDATA[Spring IOC学习——依赖注入的方式]]></title><link>https://blog.csdn.net/kasogg/article/details/7931479</link><guid>https://blog.csdn.net/kasogg/article/details/7931479</guid><author>kasogg</author><pubDate>Sat, 01 Sep 2012 11:40:34 +0800</pubDate><description><![CDATA[1、属性注入 
        属性注入需要Bean提供属性的setXXX()方法，在配置文件中，XXX与元素的name对应，不一定与Bean的属性名相同。下面来看一个完整的例子：


Student.java: package com.kaso.entity;
 
 public class Student {
 	private int id;
 	private String nam]]></description><category></category></item><item><title><![CDATA[代码行数统计器]]></title><link>https://blog.csdn.net/kasogg/article/details/7919592</link><guid>https://blog.csdn.net/kasogg/article/details/7919592</guid><author>kasogg</author><pubDate>Wed, 29 Aug 2012 12:22:59 +0800</pubDate><description><![CDATA[自己写的代码统计器，Java实现的，还有些小缺陷。源码下载地址：http://download.csdn.net/detail/kasogg/4533792













DirScanner.java



01 package com.kaso.codecounter.fileutils;
02 
03 import java.io.*;]]></description><category></category></item><item><title><![CDATA[Java文件加密器]]></title><link>https://blog.csdn.net/kasogg/article/details/7919577</link><guid>https://blog.csdn.net/kasogg/article/details/7919577</guid><author>kasogg</author><pubDate>Wed, 29 Aug 2012 12:19:43 +0800</pubDate><description><![CDATA[自己写了个文件加密器，加密算法没有很复杂，作为练习。源码下载：http://download.csdn.net/detail/kasogg/4533788






com.kaso.fileutils

    --DirScanner.java

    --FileParser.java

    --FileParserException.java

com]]></description><category></category></item><item><title><![CDATA[构造器决不能调用可被覆盖的方法]]></title><link>https://blog.csdn.net/kasogg/article/details/7919571</link><guid>https://blog.csdn.net/kasogg/article/details/7919571</guid><author>kasogg</author><pubDate>Wed, 29 Aug 2012 12:10:06 +0800</pubDate><description><![CDATA[在继承中，构造器决不能调用可被覆盖的方法，无论是直接调用还是间接调用。如果违反了这条规则，很可能导致程序失败。下面来看一个例子：








import java.util.ArrayList;

class Super {
    public Super() {
        overrideMe();
    }

    public void ov]]></description><category></category></item><item><title><![CDATA[利用Java反射机制输出一个类的内部构造]]></title><link>https://blog.csdn.net/kasogg/article/details/7919570</link><guid>https://blog.csdn.net/kasogg/article/details/7919570</guid><author>kasogg</author><pubDate>Wed, 29 Aug 2012 12:08:56 +0800</pubDate><description><![CDATA[import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Scanner;

public class TestClass {]]></description><category></category></item><item><title><![CDATA[异常处理的 15 个处理原则]]></title><link>https://blog.csdn.net/kasogg/article/details/7919555</link><guid>https://blog.csdn.net/kasogg/article/details/7919555</guid><author>kasogg</author><pubDate>Wed, 29 Aug 2012 12:03:25 +0800</pubDate><description><![CDATA[见过很多人在进行异常处理的时候，直接一个 e.printStackTrace() 就完成了，这是一种非常粗陋的做法，首先会导致应用日志的大量错误信息，而很多时候你都不知道这些错误信息因何发生；再者，反应到用户端将直接导致用户无法获取操作的结果以及失败的原因。




以下 15 条异常处理的原则来自国外的博客：

不用使用异常来管理业务逻辑，应该使用条件语句。如果一个控制逻辑可通过]]></description><category></category></item></channel></rss>