<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wingahi的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wingahi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wingahi]]></copyright><item><title><![CDATA[同步,异步,阻塞,非阻塞及并发编程概念]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/99673162</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/99673162</guid><author>wingahi</author><pubDate>Fri, 16 Aug 2019 10:38:59 +0800</pubDate><description><![CDATA[转自：https://www.jianshu.com/p/d945aefa73fa
这是一边通俗易懂，深刻全面说了 同步,异步,阻塞,非阻塞 概念的文章，值得阅读！！
1.基本概念
引子
以ajax为例: 异步就是不等待结果的代码, 异步并不是同时做两件事情

#结果打印顺序是 1,3,2
"
之所以会是这样是因为:
异步代码不等待结果，直接进行下面的代码，
所以定时器只是开启了，而没有立即执行里...]]></description><category></category></item><item><title><![CDATA[java线程池submit与execute的区别]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/96584841</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/96584841</guid><author>wingahi</author><pubDate>Sat, 20 Jul 2019 13:36:16 +0800</pubDate><description><![CDATA[1、例子代码，可以先忽略ReadWriteLock相关代码，重点看ExecutorService 就行。
public class ReadWriteLockTest {
	//private static Lock lock = new ReentrantLock();
	private static ReadWriteLock readWriteLock = new ReentrantRead...]]></description><category></category></item><item><title><![CDATA[Dubbo架构设计详解]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52458492</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52458492</guid><author>wingahi</author><pubDate>Wed, 07 Sep 2016 12:43:18 +0800</pubDate><description><![CDATA[转自：http://shiyanjun.cn/archives/325.html 
Dubbo是Alibaba开源的分布式服务框架，它最大的特点是按照分层的方式来架构，使用这种方式可以使各个层之间解耦合（或者最大限度地松耦合）。从服务模型的角度来看，Dubbo采用的是一种非常简单的模型，要么是提供方提供服务，要么是消费方消费服务，所以基于这一点可以抽象出服务提供方（Provider）和服务消费方（C]]></description><category></category></item><item><title><![CDATA[使用ZooKeeper实现Java跨JVM的分布式锁]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52454733</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52454733</guid><author>wingahi</author><pubDate>Tue, 06 Sep 2016 23:15:40 +0800</pubDate><description><![CDATA[说明：本文是使用Curator框架进行讲解及演示，Curator是对Zookeeper客户端的一个封装，因为Zookeeper的客户端实现偏底层，如果想要实现锁或其他功能都需要自己封装，实现一些简单的功能还可以，如果想要实现锁这种高并发下的东西，不建议自己封装，除非你自信你写的东西比国外大神写的还好~ 如果是研究学习到是可以自己写一下，同时也可以看看开源的代码，那里面还是有很多值得学习的东西。Zoo]]></description><category></category></item><item><title><![CDATA[Concurrent下的线程安全集合]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52358218</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52358218</guid><author>wingahi</author><pubDate>Tue, 30 Aug 2016 00:42:22 +0800</pubDate><description><![CDATA[转自：http://www.cnblogs.com/ijavanese/p/3778688.html 
1.ArrayBlockingQueueArrayBlockingQueue是由数组支持的线程安全的有界阻塞队列，此队列按 FIFO（先进先出）原则对元素进行排序。这是一个典型的“有界缓存区”，固定大小的数组在其中保持生产者插入的元素和使用者提取的元素。一旦创建了这样的缓存区，就不能再增加其容量。]]></description><category></category></item><item><title><![CDATA[使用Nginx+Keepalived组建高可用负载平衡Web server集群]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52358169</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52358169</guid><author>wingahi</author><pubDate>Tue, 30 Aug 2016 00:29:27 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/luxiaoyu_sdc/article/details/7333024 
一，首先说明一下网络拓扑结构： 
﻿﻿ 
﻿﻿ 
1，Nginx 反向代理Server（HA）： 
     ①Nginx master：192.168.1.157 
     ②Nginx backup：192.168.1.158 
      虚拟IP统一为：192.168]]></description><category></category></item><item><title><![CDATA[nginx+keepalive主从双机热备+自动切换解决方案]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52358157</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52358157</guid><author>wingahi</author><pubDate>Tue, 30 Aug 2016 00:26:53 +0800</pubDate><description><![CDATA[转自：http://blog.sina.com.cn/s/blog_630d50dc0102w3dt.html 
环境采集cenots 6.3 64位迷你安装，因为安装前，你需要做一些工作 
yum install -y make wget  
如果你愿意可以更新下系统，更换下yum源.1.安装keepalive官方最新版  keepalived-1.2.7 tar zxvf keepalived-]]></description><category></category></item><item><title><![CDATA[Java内存总结]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52353268</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52353268</guid><author>wingahi</author><pubDate>Mon, 29 Aug 2016 15:06:59 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键
快捷键
加粗    Ctrl + B 
斜体    Ctrl + I 
引用    Ctrl]]></description><category></category></item><item><title><![CDATA[Java性能调优笔记]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/52238958</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/52238958</guid><author>wingahi</author><pubDate>Thu, 18 Aug 2016 11:08:52 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/yang_net/article/details/5830820调优步骤：衡量系统现状、设定调优目标、寻找性能瓶颈、性能调优、衡量是否到达目标(如果未到达目标，需重新寻找性能瓶颈）、性能调优结束。寻找性能瓶颈 
性能瓶颈的表象：资源消耗过多、外部处理系统的性能不足、资源消耗不多但程序的响应速度却仍达不到要求。资源消耗：CPU、文件IO、网络IO、内存。]]></description><category></category></item><item><title><![CDATA[ThreadLocal变量存储的实际原理与线程安全原因]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/50831449</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/50831449</guid><author>wingahi</author><pubDate>Tue, 08 Mar 2016 22:47:35 +0800</pubDate><description><![CDATA[每个线程都有自己的本地变量：ThreadLocalMap，而线程的ThreadLocalMap统一由ThreadLocal管理。当一个线程使用ThreadLocal的时候，ThreadLocal会帮该线程初始化ThreadLocalMap（为什么是单独为该线程初始化的呢？继续看下面）：

private T setInitialValue() {
        T value = init]]></description><category></category></item><item><title><![CDATA[ReentrantLock解析]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/47682713</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/47682713</guid><author>wingahi</author><pubDate>Sat, 15 Aug 2015 16:03:34 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/yanlinwang/article/details/40450769

最近学习Jdk的源代码时，读到了ConcurrentHashMap的源码实现时，发现每一个分段Segment都是ReentrantLock类型，于是顺带对ReentrantLock的源代码进行了学习。。在这里做一个笔记总结。因为只有在工作之余才能有空看看，所以思路有点零散，]]></description><category></category></item><item><title><![CDATA[深入浅出Java并发包—锁机制(一)]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/47681739</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/47681739</guid><author>wingahi</author><pubDate>Sat, 15 Aug 2015 14:31:48 +0800</pubDate><description><![CDATA[转自：http://yhjhappy234.blog.163.com/blog/static/316328322013548580299/

前面我们看到了Lock和synchronized都能正常的保证数据的一致性（上文例子中执行的结果都是20000000），也看到了Lock的优势，那究竟他们是什么原理来保障的呢？今天我们就来探讨下Java中的锁机制！

Synchronized是基于J]]></description><category></category></item><item><title><![CDATA[文本操作的底层]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/46551275</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/46551275</guid><author>wingahi</author><pubDate>Thu, 18 Jun 2015 19:02:52 +0800</pubDate><description><![CDATA[下面是一个简单的操作文本的底层，通过自定义存储格式，读取遵循定义好的协议，从而对数据进行操作。通过将文本数据转化为类返回给用户。
直接上代码：
 /// 
    /// 文本阅读器
    /// 
    public class TxtReader
    {
        private static string path = System.AppDomain.CurrentDom]]></description><category></category></item><item><title><![CDATA[LiteDB实践使用]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/46540039</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/46540039</guid><author>wingahi</author><pubDate>Wed, 17 Jun 2015 23:34:41 +0800</pubDate><description><![CDATA[本文是使用LiteDB编写一个词条的增加、显示和删除的功能。主要是想体现一下使用LiteDB的奇妙。实现界面如下：


实现代码：
1、首先封装好操作LiteDB的底层，下面给出仅供参考的几个方法：


获取数据库路径类；
    public class DB
    {
        // Get a unique database name in TestResults f]]></description><category></category></item><item><title><![CDATA[lucene.net 3.0.3、结合盘古分词进行搜索的小例子（分页功能）]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/45226817</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/45226817</guid><author>wingahi</author><pubDate>Thu, 23 Apr 2015 20:46:38 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/pukuimin1226/article/details/17558247

//封装类


[csharp] view plaincopyprint?using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using ]]></description><category></category></item><item><title><![CDATA[使用Lucene.Net实现全文检索]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/45226645</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/45226645</guid><author>wingahi</author><pubDate>Thu, 23 Apr 2015 20:33:25 +0800</pubDate><description><![CDATA[目录

一 Lucene.Net概述

二 分词

三 索引

四 搜索

五 实践中的问题

 

一 Lucene.Net概述

　　Lucene.Net是一个C#开发的开源全文索引库，其源码包括“核心”与“外围”两部分。外围部分实现辅助功能，而核心部分包括：

Lucene.Net.Index 提供索引管理，词组排序。Lucene.Net.Search 提]]></description><category></category></item><item><title><![CDATA[C#线程同步方法汇总]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/45155199</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/45155199</guid><author>wingahi</author><pubDate>Mon, 20 Apr 2015 20:36:16 +0800</pubDate><description><![CDATA[归纳一下:C#线程同步的几种方法

　　我们在编程的时候，有时会使用多线程来解决问题，比如你的程序需要在 后台处理一大堆数据，但还要使用户界面处于可操作状态；或者你的程序需要访问一些外部资源如数据库或网络文件等。这些情况你都可以创建一个子线程去处理， 然而，多线程不可避免地会带来一个问题，就是线程同步的问题。如果这个问题处理不好，我们就会得到一些非预期的结果。

　　在网上也看过一些关于线]]></description><category></category></item><item><title><![CDATA[ASP.NET之Cookie（坑爹的Response.Cookies.Remove）]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/44492121</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/44492121</guid><author>wingahi</author><pubDate>Fri, 20 Mar 2015 15:07:41 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/bdstjk/article/details/7557344

在web开发中Cookie是必不可少的

.NET自然也有一个强大的Cookie操作类，我们用起来也非常方便，不过在使用中我们会发现一个坑爹的事情Response.Cookies.Remove删除不了Cookie。

例子如下：



[csharp] view
 ]]></description><category></category></item><item><title><![CDATA[C#访问远程主机资源的方法]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/44046763</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/44046763</guid><author>wingahi</author><pubDate>Tue, 03 Mar 2015 23:40:44 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/csethcrm/article/details/20469929

实现访问远程主机的共享目录中的一个文件的解决方法：

一、调用Net use命令

        // 使用方法：
        //if (Connect("192.168.1.48", "用户名", "密码"))   
        //{
      ]]></description><category></category></item><item><title><![CDATA[.NET/ASP.NET Routing路由（深入解析路由系统架构原理）]]></title><link>https://blog.youkuaiyun.com/wingahi/article/details/44046361</link><guid>https://blog.youkuaiyun.com/wingahi/article/details/44046361</guid><author>wingahi</author><pubDate>Tue, 03 Mar 2015 23:24:14 +0800</pubDate><description><![CDATA[目录(?)[-]

1开篇介绍2ASPNETRouting路由对象模型的位置3ASPNETRouting路由对象模型的入口4ASPNETRouting路由对象模型的内部结构

41UrlRoutingModule对象内部结构42RouteBaseRouteRouteCollectionRouteTable路由核心对象模型43RouteValueDictionaryRouteDataRequ]]></description><category></category></item></channel></rss>