<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[码猿同学]]></title><description><![CDATA[new day,new thing]]></description><link>https://blog.youkuaiyun.com/AirMario</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AirMario]]></copyright><item><title><![CDATA[Spring Security教程(二)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/102579646</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/102579646</guid><author>AirMario</author><pubDate>Wed, 16 Oct 2019 09:39:48 +0800</pubDate><description><![CDATA[上一篇博客中，Spring Security教程(一)，我把用户信息和权限信息放到了xml文件中，这是为了演示如何使用最小的配置就可以使用Spring Security，而实际开发中，用户信息和权限信息通常是被保存在数据库中的，为此Spring Security也提供了通过数据库获得用户权限信息的方式。本教程将讲解使用数据库管理用户权限。
一 引入相关的jar包
这个例子用的是mysql数据库和c...]]></description><category></category></item><item><title><![CDATA[字节码增强技术-Byte Buddy]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/102536017</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/102536017</guid><author>AirMario</author><pubDate>Sun, 13 Oct 2019 18:33:29 +0800</pubDate><description><![CDATA[为什么需要在运行时生成代码？
Java 是一个强类型语言系统，要求变量和对象都有一个确定的类型，不兼容类型赋值都会造成转换异常，通常情况下这种错误都会被编译器检查出来，如此严格的类型在大多数情况下是比较令人满意的，这对构建具有非常强可读性和稳定性的应用有很大的帮助，这也是 Java 能在企业编程中的普及的一个原因之一。然而，因为起强类型的检查，限制了其他领域语言应用范围。比如在编写一个框架是，通常...]]></description><category></category></item><item><title><![CDATA[字节码增强技术-Javassist]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/102062900</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/102062900</guid><author>AirMario</author><pubDate>Fri, 04 Oct 2019 12:08:26 +0800</pubDate><description><![CDATA[字节码
什么是字节码，在这里就不在赘述了，网上教程很多。Java 为了能让 Java 程序编译一次到处运行，用 Java 编译器将程序对源代码编译生成固定格式的字节码（.class文件）供 JVM 使用，因此理论上来说，只要符合 JVM 规范的字节码文件，就可以在 JVM 上运行，不同的 JVM 类语言（如Scala、Groovy、Kotlin）编译成字节码都可在 JVM 运行，除此之外，如果你对...]]></description><category></category></item><item><title><![CDATA[使用测试]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/101754349</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/101754349</guid><author>AirMario</author><pubDate>Mon, 30 Sep 2019 09:57:40 +0800</pubDate><description><![CDATA[标题1
测试
备注： 测试
]]></description><category></category></item><item><title><![CDATA[JVM中对象的死亡判定]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/72850980</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/72850980</guid><author>AirMario</author><pubDate>Sat, 03 Jun 2017 11:16:54 +0800</pubDate><description><![CDATA[JVM判断对象是否死亡的常用算法JVM在对对象进行垃圾回收之前，首先要先判断对象的状态，对象是否存活还是已经死亡，都是JVM进行垃圾回收的依据引用计数算法事先给一个对象赋予一个引用计数器，当有一个地方引用给对象是就给引用计数器加一，当失效时就给引用计数器减一， 
任何时刻引用计数器为零的对象都是不可再被引用的了，也就是可能要被垃圾回收的对象。这种方法在大多数场景都是 
有用且非常高效的，但是java]]></description><category></category></item><item><title><![CDATA[工厂模式]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/72455449</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/72455449</guid><author>AirMario</author><pubDate>Wed, 17 May 2017 23:50:02 +0800</pubDate><description><![CDATA[工厂模式工厂方法模式分为三种：普通工厂模式,多个工厂方法模式,静态工厂方法模式,抽象工厂方法模式。普通工厂模式普通工厂模式，就是建立一个工厂类，对实现了同一接口的产品类进行实例的创建。示例代码//发送短信和邮件的接口
public interface Sender {  
    public void Send();  
} //发送邮件的实现类
public class MailSender i]]></description><category></category></item><item><title><![CDATA[Spring Security教程(七)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/54425433</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/54425433</guid><author>AirMario</author><pubDate>Sat, 14 Jan 2017 11:54:43 +0800</pubDate><description><![CDATA[在之前的教程四中一笔带过式的讲了下RememberMe记住密码的功能，那篇的Remember功能是最简易的配置，其功能和安全性都不强。这里就配置下security中RememberMe的各种方式。本人也是在学习中，若有错误，欢迎指正，一起学习。
一 概述
RememberMe 是指用户在网站上能够在 Session 之间记住登录用户的身份的凭证，通俗的来说就是用户登陆成功认证一次之后在制定的一]]></description><category></category></item><item><title><![CDATA[Spring Security教程(六)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/54411524</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/54411524</guid><author>AirMario</author><pubDate>Fri, 13 Jan 2017 22:02:08 +0800</pubDate><description><![CDATA[这里接着上篇的自定义过滤器，这里主要的是配置自定义认证处理的过滤器，并加入到FilterChain的过程。在我们自己不在xml做特殊的配置情况下，security默认的做认证处理的过滤器为UsernamePasswordAuthenticationFilter，通过查看源码知道，做认证处理的方法为attemptAuthentication，这个方法的主要作用就是将用户输入的账号和密码，封装成一个U]]></description><category></category></item><item><title><![CDATA[如何构建一个较为通用的业务技术架构]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/54405557</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/54405557</guid><author>AirMario</author><pubDate>Fri, 13 Jan 2017 09:20:02 +0800</pubDate><description><![CDATA[原文链接：http://www.codeceo.com/article/business-framework.html

1、通用架构概述

创业之初，我们往往会为了快速迭代出产品，而选择最简单的技术架构，比如LAMP架构，SSH三层架构。这些架构可以适应初期业务的快速发展，但是，随着业务变得越来越复杂，我们会发现这些架构越来越难支撑业务的发展，出现在一个类中写好几千行代码，一个方法中到处]]></description><category></category></item><item><title><![CDATA[Spring Security教程(五)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/54312980</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/54312980</guid><author>AirMario</author><pubDate>Tue, 10 Jan 2017 15:03:25 +0800</pubDate><description><![CDATA[在之前的几篇security教程中，资源和所对应的权限都是在xml中进行配置的，也就在http标签中配置intercept-url，试想要是配置的对象不多，那还好，但是平常实际开发中都往往是非常多的资源和权限对应，而且写在配置文件里面写改起来还得该源码配置文件，这显然是不好的。因此接下来，将用数据库管理资源和权限的对应关系。数据库还是接着之前的，用mysql数据库，因此也不用另外引入额外的jar包]]></description><category></category></item><item><title><![CDATA[Spring Security教程(四)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/54022812</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/54022812</guid><author>AirMario</author><pubDate>Wed, 04 Jan 2017 19:02:40 +0800</pubDate><description><![CDATA[在前面三个博客的例子中，登陆页面都是用的Spring Security自己提供的，这明显不符合实际开发场景，同时也没有退出和注销按钮，因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果。
一 自定义页面
login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEnco]]></description><category></category></item><item><title><![CDATA[Spring Security教程(三)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53976993</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53976993</guid><author>AirMario</author><pubDate>Mon, 02 Jan 2017 11:50:53 +0800</pubDate><description><![CDATA[在上一篇博客中讲解了用Spring Security自带的默认数据库存储用户和权限的数据，但是Spring Security默认提供的表结构太过简单了，其实就算默认提供的表结构很复杂，也不一定能满足项目对用户信息和权限信息管理的要求。那么接下来就讲解如何自定义数据库实现对用户信息和权限信息的管理。
一 自定义表结构
这里还是用的mysql数据库，所以pom.xml文件都不用修改。这里只要新建三]]></description><category></category></item><item><title><![CDATA[Spring Security教程(二)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53965765</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53965765</guid><author>AirMario</author><pubDate>Sun, 01 Jan 2017 13:00:42 +0800</pubDate><description><![CDATA[上一篇博客中，Spring Security教程(一)，我把用户信息和权限信息放到了xml文件中，这是为了演示如何使用最小的配置就可以使用Spring Security，而实际开发中，用户信息和权限信息通常是被保存在数据库中的，为此Spring Security也提供了通过数据库获得用户权限信息的方式。本教程将讲解使用数据库管理用户权限。
一 引入相关的jar包
这个例子用的是mysql数据库]]></description><category></category></item><item><title><![CDATA[Spring Security教程(一)]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53955727</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53955727</guid><author>AirMario</author><pubDate>Sat, 31 Dec 2016 14:36:04 +0800</pubDate><description><![CDATA[一 概要
Spring Security，这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案，同时在 Web 请求级和方法调用级处理身份确认和授权。这里过多的spring
 security解释和作用就不在这里赘述了，请自行搜索。目前最新版本的Spring Security为4.2.2，但是我这里用了稳定版本3.1.3。下面例子为一个简单的Sp]]></description><category></category></item><item><title><![CDATA[Eclipse创建Web Maven项目]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53954986</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53954986</guid><author>AirMario</author><pubDate>Sat, 31 Dec 2016 12:55:01 +0800</pubDate><description><![CDATA[eclipse似乎不能直接新建web maven项目，这里介绍一种比较简单的方式建立web maven项目。这个教程都是建立在已经安装maven的基础之上的（maven安装链接：http://maven.apache.org/download.cgi）。
一 新建一个普通的maven项目
右键点击new->other->maven project




然后填写组织名和项目名包名等]]></description><category></category></item><item><title><![CDATA[MySQL大表优化方案]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53885033</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53885033</guid><author>AirMario</author><pubDate>Mon, 26 Dec 2016 12:02:48 +0800</pubDate><description><![CDATA[当MySQL单表记录数过大时，增删改查性能都会急剧下降，可以参考以下步骤来优化：
单表优化
除非单表数据未来会一直不断上涨，否则不要一开始就考虑拆分，拆分会带来逻辑、部署、运维的各种复杂度，一般以整型值为主的表在千万级以下，字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间，甚至能正常支撑千万级以上的数据量：
字段


尽量使用TINYI]]></description><category></category></item><item><title><![CDATA[android WebView的使用详解]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53861607</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53861607</guid><author>AirMario</author><pubDate>Sat, 24 Dec 2016 18:55:38 +0800</pubDate><description><![CDATA[一 概述
Webview是android中一个特殊的View视图，一般用它来显示网页，用intent也能用来显示加载一个网页，那么他们到底有什么区别呢。用intent显示加载网页不在app内使用，一般是调用系统浏览器或者手机上的其他浏览器；而使用webview可以实现在app内显示加载网页，除此之外，webview还能用来加载本地资源，同时它还支持javascript和缓存等技术，其实WebVi]]></description><category></category></item><item><title><![CDATA[引入Option优雅地保证健壮性]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53860594</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53860594</guid><author>AirMario</author><pubDate>Sat, 24 Dec 2016 16:40:53 +0800</pubDate><description><![CDATA[REA的Ken Scambler在其演讲《2 Year of Real World FP at REA》中，总结了选择函数式编程的三个原因：Modularity, Abstraction和Composability。
函数式编程强调纯函数（Pure Function），这是模块化的一个重要基础，因为对于纯函数而言，可以不用考虑调用的上下文，就可以根据函数的输入推断函数的执行结果。这也就是Ken所]]></description><category></category></item><item><title><![CDATA[android四大组件之Broadcast(广播)使用详解]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53837307</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53837307</guid><author>AirMario</author><pubDate>Fri, 23 Dec 2016 11:24:20 +0800</pubDate><description><![CDATA[一 概述
Broadcast作为android中的四大组件，其重要性可想而知， 在android系统中，广播（Broadcast）是在组件之间传播数据（Intent）的一种机制；这些组件甚至是可以位于不同的进程中，这样它就像Binder机制一样，起到进程间通信的作用。android广播机制，本质上它就是一种组件间的通信方式，如果是两个组件位于不同的进程当中，那么可以用Binder机制来实现，如果]]></description><category></category></item><item><title><![CDATA[android 四大组件之Service两种调用方式使用详解]]></title><link>https://blog.youkuaiyun.com/AirMario/article/details/53779906</link><guid>https://blog.youkuaiyun.com/AirMario/article/details/53779906</guid><author>AirMario</author><pubDate>Wed, 21 Dec 2016 08:39:04 +0800</pubDate><description><![CDATA[一 概述
Service服务作为android中的四大组件之一，其作用和重要性也不用多说。service用于长期在后台处理任务，与Activity相反Service没有可见的用户界面，但Service能长时间在后台运行，Service是一个具有较长生命周期但没有用户界面的组件，和Activity一样的是Service也有自己的生命周期。下图是它的生命周期的过程。


service有2种基]]></description><category></category></item></channel></rss>