<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[StruggleShu的博客]]></title><description><![CDATA[不积跬步，无以至千里；不积小流，无以成江海。]]></description><link>https://blog.youkuaiyun.com/StruggleShu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; StruggleShu]]></copyright><item><title><![CDATA[Java多线程之Condition]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/75144101</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/75144101</guid><author>StruggleShu</author><pubDate>Sat, 15 Jul 2017 10:02:25 +0800</pubDate><description><![CDATA[Condition，Condition 将 Object 监视器方法（wait、notify 和 notifyAll）分解成截然不同的对象，以便通过将这些对象与任意 Lock 实现组合使用，为每个对象提供多个等待 set （wait-set）。其中，Lock 替代了 synchronized 方法和语句的使用，Condition 替代了 Object 监视器方法的使用。下面将之前写过的一个线程通信的]]></description><category></category></item><item><title><![CDATA[JConsole的远程连接]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/74909985</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/74909985</guid><author>StruggleShu</author><pubDate>Mon, 10 Jul 2017 10:45:34 +0800</pubDate><description><![CDATA[JConsole是基于JMX的可视化监视、管理工具。可以很方便的监视本地及远程服务器的java进程的内存使用情况。下面介绍如何连接远程服务器，进行远程java程序的监控。1、使用hostname -i 查看远程主机的hostname。
如果显示为 127.0.0.1，需要进行修改。
vim /etc/hosts
修改127.0.0.0.1 为服务器真实的外网ip。2、被监控的程序运行时给虚拟机添加一]]></description><category></category></item><item><title><![CDATA[数据库之事务]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/74075098</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/74075098</guid><author>StruggleShu</author><pubDate>Sat, 01 Jul 2017 17:09:43 +0800</pubDate><description><![CDATA[定义事务是一组原子性的SQL查询，或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句，那么就执行该组查询。如果其中一条语句因为崩溃或其他原因无法执行，那么多有的语句都不会执行。也就是说，事务内的语句，要么全部执行成功，要么全部执行失败。
通俗的讲，事务就是一件事情。是一个不可分割的整体，就像化学原子一样，是构成物质的最小单元。
ACID原子性（Atomicity）：一个]]></description><category></category></item><item><title><![CDATA[Java多线程之ThreadLocal]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73828729</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73828729</guid><author>StruggleShu</author><pubDate>Wed, 28 Jun 2017 10:40:57 +0800</pubDate><description><![CDATA[ThreadLocal直译为"本地线程"，但它并不是这样。ThreadLocal本身其实是一个容器，用于 存放线程的局部变量，这个类能使线程中的某个值与保存值的线程对象关联起来。ThreadLocal提供了get和set等访问接口或方法，这些方法为每个使用该变量的线程都存有一份副本，因此get总是返回当前执行线程在调用set时设置的最新值。下面将以实例代码说明。场景：一个序列号生成器的程序同时会有多]]></description><category></category></item><item><title><![CDATA[Intellij IDEA中生成jar包]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73506005</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73506005</guid><author>StruggleShu</author><pubDate>Tue, 20 Jun 2017 18:29:26 +0800</pubDate><description><![CDATA[Intellij IDEA 为优秀的Java开发环境，但是有很多人知道利用此工具可以编译成class文件，而不知道如何在intellij IDEA工具如何将所有的class打包成jar文件，现在将方法介绍如下：1.选择菜单File->Project Structure，将弹出Project Structure的设置对话框。2.选择左边的Artifacts后点击上方的“+”按钮3.在弹出的框中选择ja]]></description><category></category></item><item><title><![CDATA[Centos7下中文乱码解决]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73504287</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73504287</guid><author>StruggleShu</author><pubDate>Tue, 20 Jun 2017 17:38:46 +0800</pubDate><description><![CDATA[CentOS 7 终端中文乱码解决办法：1、使用vim编辑locale.config文件：vim /etc/locale.conf2、将LANG=”C”修改为：LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.UTF-8:zh_CN.UTF-8:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT]]></description><category></category></item><item><title><![CDATA[Java之泛型剖析]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73384796</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73384796</guid><author>StruggleShu</author><pubDate>Sat, 17 Jun 2017 20:55:03 +0800</pubDate><description><![CDATA[泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。泛型提供了一个类型参数用来指示元素的类型。比如AarryList:
 ArrayList<Sting> strs = new ArrayList<String>();(根据多态性，前面的ArrayList<String>可以换成List<String>)。这样使代码有更好的可读性。
一个泛型类就是具有一个或多个类型变量的类。下面是一个简单的]]></description><category></category></item><item><title><![CDATA[Java之注解初学]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73351237</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73351237</guid><author>StruggleShu</author><pubDate>Fri, 16 Jun 2017 21:59:42 +0800</pubDate><description><![CDATA[注解是那些插入到源代码中用于某种工具处理的标签。这些标签可以在源代码层次上进行操作，也可以在处理编译器将它们纳入到注解类文件中。在Java中，注解是当一个修饰符来被使用的，它被置于被注解项之前，中间没有分号。
注解语法一个注解是由一个注解接口定义的
    modifiers @interface AnnotationName
    {
        element declaration1;]]></description><category></category></item><item><title><![CDATA[Java多线程之CountDwonLatch]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73302580</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73302580</guid><author>StruggleShu</author><pubDate>Thu, 15 Jun 2017 21:07:19 +0800</pubDate><description><![CDATA[CountDwonLatch是一个非常实用的多线程控制工具类，这个工具类通常用来控制线程等待，它可以让某个线程等待直到其它线程执行任务结束，在开始执行。下面先看代码，根据代码分析程序，提出问题。
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.ut]]></description><category></category></item><item><title><![CDATA[枚举单例模式]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73252230</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73252230</guid><author>StruggleShu</author><pubDate>Wed, 14 Jun 2017 21:12:24 +0800</pubDate><description><![CDATA[Java中的枚举类非常强大的。之前看过单例的许多实现，对于枚举的单例略有了解，但理解不够深刻，最近结合实例研究了一下，感觉枚举是很强大且非常好用。首先看一个最简单的枚举单例模式:
public enum  TestEnum {
    TEST_ENUM;
}其中TEST_ENUM，即为TestEnum类的唯一实例。这样写可能一眼看去，没什么意义。也不是很好理解。下面以生成一个单例的CGLib动态代]]></description><category></category></item><item><title><![CDATA[Java中的枚举]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73176217</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73176217</guid><author>StruggleShu</author><pubDate>Tue, 13 Jun 2017 18:08:21 +0800</pubDate><description><![CDATA[虽然知道在Java中存在枚举类型，但是却一直很少用。最近接触了一些，特加以总结。
枚举类型的定义枚举类型是指由一组固定的常量组成合法值的类型。比如我们常用的：
    public static final static ERROR = -1;
    public static final static SUCCESS = 1;
根据枚举类型的定义，其实这也属于一种枚举，一种int枚举模式。这种模]]></description><category></category></item><item><title><![CDATA[HTTP缓存字段总结]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73113459</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73113459</guid><author>StruggleShu</author><pubDate>Mon, 12 Jun 2017 16:01:36 +0800</pubDate><description><![CDATA[HTTP控制缓存的字段主要包括Cache-Control/Pragma,Expires,Last-Modified/Etag。
1、Cache-Control/Pragma    这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令，如果知道该页面是否为缓存，不仅可以控制浏览器，还可以控制和HTTP相关的缓存或代理服务器。它可以指定下列可选值：
    1、Public：]]></description><category></category></item><item><title><![CDATA[Wireshark抓包分析TCP的三次握手]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73026822</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73026822</guid><author>StruggleShu</author><pubDate>Sun, 11 Jun 2017 13:54:54 +0800</pubDate><description><![CDATA[今天学习了Wireshark工具，对于抓包有了极大的兴趣；特意通过抓包来加深一下TCP三次握手的过程，同时做以记录。
TCP报文段结构过滤规则介绍   网络中包含着许多的数据报文，但是许多的都不是我们需要的。网上给的大多数规则不够具体，通过查阅资料，用下面的过滤规则可以更快的抓取TCP三次握手的包.
tcp.flags.syn == 0x02 || tcp.flags.ack == 0x02 &&]]></description><category></category></item><item><title><![CDATA[JSON字符串，JSON对象，JSON数组]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/73017670</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/73017670</guid><author>StruggleShu</author><pubDate>Sun, 11 Jun 2017 11:23:53 +0800</pubDate><description><![CDATA[JSON的全称是"JavaScript Object Notation"，意思是JavaScript对象表示法，它是一种基于文本，独立于语言的轻量级数据交换格式。JSON必须是符合以下两点：
   1.键一定要用双引号，值如果是字符串也要用双引号包括
   2.数据只包括，数字，布尔，数组，null，对象，字符串
下面先给出JSON对象，JSON字符串，JSON数组的基本形式，用于对比   
JSO]]></description><category></category></item><item><title><![CDATA[Ubuntu15.10 下安装Oracle 11g]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/51586103</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/51586103</guid><author>StruggleShu</author><pubDate>Sat, 04 Jun 2016 21:07:38 +0800</pubDate><description><![CDATA[学Oracle数据库之前，首先面临的是安装数据库Oracle数据库，前几天在ubuntu下安装好了，现在总结一下安装过程。]]></description><category></category></item><item><title><![CDATA[二分查找的非递归和递归例程实现]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/51356666</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/51356666</guid><author>StruggleShu</author><pubDate>Mon, 09 May 2016 22:06:15 +0800</pubDate><description><![CDATA[二分查找：定义一个整数X，和整数A(0)，A(1)，A(2)，......A(N-1),后者已经预先排序并在内存中，求使得Ai=X的下标i,如果X不存在，则返回-1。
策略：验证X是否是居中的

二分查找的非递归实现

int BinarySearch(const ElementType a[], ElementType x, int N)
{
    int Low, Mid, Hig]]></description><category></category></item><item><title><![CDATA[C语言中一类特殊的数组越界！！]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/51296827</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/51296827</guid><author>StruggleShu</author><pubDate>Mon, 02 May 2016 16:16:55 +0800</pubDate><description><![CDATA[首先看一段C语言程序（红色字体部分数组越界访问）和运行的结果（系统unbantu15.10，编译器 vim）


# include 
int a[2] = {2, 3};
int b;

void func()
{
	static int s = 8;
}

int main(void)
{
	b = 12;

	func();
	printf("%d", a[2]);//越界访问
	re]]></description><category></category></item><item><title><![CDATA[ubuntu下编写并运行第一个c语言程序]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/51228795</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/51228795</guid><author>StruggleShu</author><pubDate>Sat, 23 Apr 2016 22:38:10 +0800</pubDate><description><![CDATA[对于初入Ubantu系统的小伙伴来说，进入Ubuntu最想做的事莫过于在终端（Terminal）里运行自己的第一个C/C++程序"hello.c/hello.cpp"了。

Ubuntu默认是不包含编辑器vim和编译器gcc。如果你是刚安装好的Ubuntu电脑，下面我们将来实现自己的第一个程序。

1.准备工作

1.1 打开控制台：使用快捷键 Ctrl + Alt + T；

1]]></description><category></category></item><item><title><![CDATA[java实现二叉树]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/51182936</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/51182936</guid><author>StruggleShu</author><pubDate>Mon, 18 Apr 2016 21:21:46 +0800</pubDate><description><![CDATA[用java实现实现二叉树

第一步：创建节点类

class TreeNode {
	private Object nodeValue;
	private TreeNode left, right;
	
	public TreeNode(){
		this(null, null, null);
	}
	
	public TreeNode(Object item){
		nodeValue ]]></description><category></category></item><item><title><![CDATA[最大子序和问题]]></title><link>https://blog.youkuaiyun.com/StruggleShu/article/details/51150894</link><guid>https://blog.youkuaiyun.com/StruggleShu/article/details/51150894</guid><author>StruggleShu</author><pubDate>Thu, 14 Apr 2016 13:32:56 +0800</pubDate><description><![CDATA[最大子序和问题：给定整数A1，A2，.....An（可能有负数)，求A1 +A2+A3+......+An的最大值（规定：如果所有整数均为负数，则最大子序和为0）
例：
输入-2， 11， -4, 13， -5， -2时，答案为20（从A2到A4）。
下面给出四种不同复杂度的算法，进行比较分析
O（N3）的算法]]></description><category></category></item></channel></rss>