<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ofofw的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ofofw</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ofofw]]></copyright><item><title><![CDATA[一文快速理解容器、docker和Kubernetes]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/111595396</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/111595396</guid><author>ofofw</author><pubDate>Wed, 23 Dec 2020 18:14:25 +0800</pubDate><description><![CDATA[一、容器是什么？

容器本质上是Linux系统上一种特殊的进程。

容器经常会拿来和虚拟机做对比，下图是常见的一张容器和虚拟机的对比图。





可以看到虚拟机在操作系统层面通过硬件虚拟化，模拟出操作系统需要的各种硬件，然后在虚拟的硬件上安装新的操作系统。

容器是基于Linux内核的一些隔离和限制的特性去创造一个“边界”，营造一个沙箱环境。

其中：

隔离功能主要是由Linux的Namespace技术实现。Linux提供的Namespace有很多种，比如有：Pid Namespace（进程隔离）、..]]></description><category></category></item><item><title><![CDATA[编写java程序推荐一个好的定义log的方式——lombok]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/50846034</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/50846034</guid><author>ofofw</author><pubDate>Thu, 10 Mar 2016 14:12:04 +0800</pubDate><description><![CDATA[一般情况下我们使用log4j或者slf4j定义一个log会这样写:private static final Logger log = Logger.getLogger(getClass());
今天在开源社区看到一种写法更为简洁
在class上引入注解@Slf4j即可直接使用.
如:@Slf4j
public class SectionVO {
    public SectionVO()]]></description><category></category></item><item><title><![CDATA[nginx+tomcat 架构 HttpServletRequest.getScheme()获取正确的协议]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/46791447</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/46791447</guid><author>ofofw</author><pubDate>Tue, 07 Jul 2015 16:59:34 +0800</pubDate><description><![CDATA[今天遇到一个问题，我通过浏览器输入https://www.mysite.com，后台通过request.getScheme()获取到的确实http而不是https
通过request.getRequestURL()拿到的也是http://www.mysite.com

分析原因，是因为用nginx+tomcat部署web服务，tomcat接受到的请求都是来自于nginx的http请求。
解]]></description><category></category></item><item><title><![CDATA[mybatis 打印sql语句]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/40429927</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/40429927</guid><author>ofofw</author><pubDate>Fri, 24 Oct 2014 16:52:49 +0800</pubDate><description><![CDATA[log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClie]]></description><category></category></item><item><title><![CDATA[下载spring源码]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/37312831</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/37312831</guid><author>ofofw</author><pubDate>Sun, 06 Jul 2014 13:36:29 +0800</pubDate><description><![CDATA[spring源码已经从SVN迁移至GitHub，而且改为基于Gradle的构建来构建项目，取代了之前的Ant+Ivy系统。
所以下载spring源码先下载安装github和Gradle
1、下载安装github
windows地址：http://windows.github.com
2、下载安装Gradle
下载地址：http://www.gradle.org，下载后解压到任意目录
我]]></description><category></category></item><item><title><![CDATA[Fragment、Activity比较——Android碎片介绍]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/26255605</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/26255605</guid><author>ofofw</author><pubDate>Mon, 19 May 2014 15:50:23 +0800</pubDate><description><![CDATA[Fragment是Android honeycomb 3.0新增的概念，Fragment名为碎片不过却和Activity十分相似，下面介绍下Android Fragment的作用和用法。Fragment用来描述一些行为或一部分用户界面在一个Activity中，你可以合并多个fragment在一个单独的activity中建立多个UI面板，同时重用fragment在多个activity中.你可以认为f]]></description><category></category></item><item><title><![CDATA[mysql与oracle数据类型转换]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/21511621</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/21511621</guid><author>ofofw</author><pubDate>Wed, 19 Mar 2014 16:19:20 +0800</pubDate><description><![CDATA[BIGINT

NUMBER(19, 0)



BIT

RAW



BLOB

BLOB, RAW



CHAR

CHAR



DATE

DATE



DATETIME

DATE



DECIMAL

FLOAT (24)



DOUBLE

FLOAT (24)



DOUBL]]></description><category></category></item><item><title><![CDATA[mysql从5.0升级到5.1]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/21511529</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/21511529</guid><author>ofofw</author><pubDate>Wed, 19 Mar 2014 09:02:51 +0800</pubDate><description><![CDATA[1、升级方式：直接将MySQL5.1.72安装目录覆盖正在运行的Mysql目录
2、备份数据库 mysqldump -uroot -A -F > /data/mysql_upgrade_bak/all_databases.sql
这里可能遇到问题：mysqldump: Got error: 1556: You can’t use locks with log tables. when usin]]></description><category></category></item><item><title><![CDATA[常用的匹配正则表达式和实例]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/6855513</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/6855513</guid><author>ofofw</author><pubDate>Sun, 09 Oct 2011 14:08:32 +0800</pubDate><description><![CDATA[匹配中文字符的正则表达式： [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内)：[^\x00-\xff]

应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）

String.prototype.len=function(){retur]]></description><category></category></item><item><title><![CDATA[js !!]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/6729774</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/6729774</guid><author>ofofw</author><pubDate>Mon, 29 Aug 2011 16:13:09 +0800</pubDate><description><![CDATA[!!string
除了空字符串是false其他都是true]]></description><category></category></item><item><title><![CDATA[mysql的SQL_CALC_FOUND_ROWS 使用]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/6228979</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/6228979</guid><author>ofofw</author><pubDate>Mon, 07 Mar 2011 14:34:00 +0800</pubDate><description><![CDATA[<br />通常mysql获取查询记录总数我们使用如下语句：<br />SELECT COUNT(*) FROM users WHERE k='avs';<br />SELECT id FROM goods WHERE k='avs' LIMIT 10;<br />但是记录总数总是需要单独的语句来查询，例如在分页查询程序中就有这样的问题，其实mysql可以在一次查询中获取记录和总数的，这就是要使用SQL_CALC_FOUND_ROWS参数，使用方法如下：<br />SELECT SQL_CALC_FOUND]]></description><category></category></item><item><title><![CDATA[生成数字验证码]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/5506961</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/5506961</guid><author>ofofw</author><pubDate>Tue, 20 Apr 2010 14:52:00 +0800</pubDate><description><![CDATA[<%!   Color getRandColor(int fc,int bc){//给定范围获得随机颜色   	Random random = new Random();   	if(fc>255) fc=255;   	if(bc>255) bc=255;   	int r=fc+random.nextInt(bc-fc);   	int g=fc+random.next]]></description><category></category></item><item><title><![CDATA[jsp清除页面session、cookies缓存]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/5506948</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/5506948</guid><author>ofofw</author><pubDate>Tue, 20 Apr 2010 14:49:00 +0800</pubDate><description><![CDATA[一、清除页面缓存在jsp页里response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires", 0);response.flushBuffer();%>在html页里二、清除cookieCookie killMyCookie = new Cookie("mycookie", null);killMyCoo]]></description><category></category></item><item><title><![CDATA[sitemesh 排除页面]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/5505991</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/5505991</guid><author>ofofw</author><pubDate>Tue, 20 Apr 2010 11:13:00 +0800</pubDate><description><![CDATA[方法1：decorator.xml文件标签里面加上需要排除的页面方法2：在页面上的里加上]]></description><category></category></item><item><title><![CDATA[JAVA 在图像处理中的应用]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/4794927</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/4794927</guid><author>ofofw</author><pubDate>Tue, 10 Nov 2009 17:29:00 +0800</pubDate><description><![CDATA[     相信大家平时碰到过一些在JAVA中对图像进行处理的需求，比如需要对上传的图片加上自己的签名或图标，或者生成和解析动态的GIF图片，以及处理PSD文件图像信息。本文就JAVA在图像处理中一些基本应用进行了介绍。希望通过能够对大家在以后的图像处理中有些帮助。 一、对一个现有的图片进行文字和图标的合成我们先从下面的这段简单的代码开始import java.awt.*]]></description><category></category></item><item><title><![CDATA[shell join 注意事项]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/4782647</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/4782647</guid><author>ofofw</author><pubDate>Sat, 07 Nov 2009 14:56:00 +0800</pubDate><description><![CDATA[1、join之前必须sort2、多列sort之前如果用了awk，最好用sort -k选项指定列（如：sort -k1.1指定第一列）3、join以空格或者tab健分隔有误差，最好指定其他分隔符]]></description><category></category></item><item><title><![CDATA[json对象转字符串形式]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/4732705</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/4732705</guid><author>ofofw</author><pubDate>Tue, 27 Oct 2009 11:28:00 +0800</pubDate><description><![CDATA[//json对象转字符串形式function json2str(o) {    var arr = [];    var fmt = function(s) {        if (typeof s == object && s != null) return json2str(s);        return /^(string|number)$/.test(ty]]></description><category></category></item><item><title><![CDATA[linux下date命令详解]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/4617307</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/4617307</guid><author>ofofw</author><pubDate>Tue, 29 Sep 2009 14:59:00 +0800</pubDate><description><![CDATA[名称 : date 使用权限 : 所有使用者使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 说明 : date 能用来显示或设定系统的日期]]></description><category></category></item><item><title><![CDATA[iframe的跳转方法_js]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/4558080</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/4558080</guid><author>ofofw</author><pubDate>Wed, 16 Sep 2009 12:50:00 +0800</pubDate><description><![CDATA["window.location.href"、"location.href"是本页面跳转"parent.location.href"是上一层页面跳转"top.location.href"是最外层的页面跳转举例说明：如果A,B,C,D都是jsp，D是C的iframe，C是B的iframe，B是A的iframe，如果D中js这样写 "window.location.href"、"location.hr]]></description><category></category></item><item><title><![CDATA[ZIP码的历史和其代表意义]]></title><link>https://blog.youkuaiyun.com/ofofw/article/details/4394477</link><guid>https://blog.youkuaiyun.com/ofofw/article/details/4394477</guid><author>ofofw</author><pubDate>Thu, 30 Jul 2009 16:28:00 +0800</pubDate><description><![CDATA[ZIP码在美国于1963年7月1日开始使用。“ZIP”代表“分区改善编码”。它显示了ZIP码实际上是1943年起在较大城市中使用的邮政区域系统的扩展。解析ZIP码：第一个数字指代了美国的一个大地理区域，从0指代的东北到9指代的遥远西部。接下来的两位表明这些区域中的人口密度。最后两位指代小的邮局或在较大城市分区中的邮政区域。ZIP+4编码于1983年投入使用。额外的4位数字进一步指明]]></description><category></category></item></channel></rss>