<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Alan_Mathison_Turing的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Alan_Mathison_Turing]]></copyright><item><title><![CDATA[Linux学习笔记]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79451460</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79451460</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 21:37:01 +0800</pubDate><description><![CDATA[1、 ps -ef|grep mysql  查询名为mysql的服务是否存在

2、sudo /etc/init.d/mysql.server -P 3306 start  在beta机上启动mysql服务，如果启动时PID file exists。则要删除mysql.pid和mysql.lock。分别在/home/q/mysql/multi/3306/pid和/home/q/mysql/mult...]]></description><category></category></item><item><title><![CDATA[git命令笔记]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79451334</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79451334</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 21:26:55 +0800</pubDate><description><![CDATA[1、 git clone [仓库地址]2、新建分支：git branch 分支名3、切换到分支：git checkout 分支名4、 添加代码到索引库：git add 文件名。如果是分支的全部文件，可用git add .5、 将索引库里的代码提交到本地仓库：git commit 6、将本地仓库代码推送到远程仓库：git push。如果是第一次提交，需要创建远程的分支，可用git push origi]]></description><category></category></item><item><title><![CDATA[Linux上搭建MySQL]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79451242</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79451242</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 21:20:56 +0800</pubDate><description><![CDATA[1、安装 sudo yum install q-dba-pxc-5622、初始化3306配置sudo /home/q/mysql/scripts/mysql_install_file \--port 33063、配置环境变量 
配置全局的在/etc/profile，配置个人的在~/.bashrcexport PATH="/home/q/mysql/bin:/home/q/pt/bin/:/home/]]></description><category></category></item><item><title><![CDATA[Future模式]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79448942</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79448942</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 17:53:44 +0800</pubDate><description><![CDATA[Java多线程编程中，常用的多线程设计模式包括：Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。1、Future模式核心思想Future模式的核心在于：去除了主函数的等待时间，并使得原本需要等待的时间段可以用于处理其他业务逻辑（根据《Java程序性能优化》）。Future模式有点类似于商品订单。在网上购物时，提交订单后，]]></description><category></category></item><item><title><![CDATA[try-with-resource与guava Closer]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79448681</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79448681</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 17:32:57 +0800</pubDate><description><![CDATA[基本语法 
try(…) {} ，try里面所有实现接口java.lang.AutoCloseable，包括java.io.Closeable的对象，在{}的语句块执行完毕后都会自动的close。例如：try (FileWriter fileWriter = new FileWriter(outFile);
PrintWriter printWriter = new PrintWriter(file]]></description><category></category></item><item><title><![CDATA[MySQL笔记]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79447734</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79447734</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 16:42:28 +0800</pubDate><description><![CDATA[SELECTselect * from product A join product_details B on A.id=B.id
select * from product A left join product_details B on A.id=B.id第一个满足条件才列出，第二个不满足条件的B字段以null代替drop与truncate/delete 
drop 删除数据库或数据表（表结构，]]></description><category></category></item><item><title><![CDATA[Guava使用之Throwables异常简化、错误传播和检查]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79447161</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79447161</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 16:20:17 +0800</pubDate><description><![CDATA[任何人都不敢说自己的代码没有bug，所以程序抛异常是再经常不过的事情，有时候，你会想把捕获的exception抛到上一个try/catch块。对于 RuntimeException 和 Error 尤为如此，它们不需要try/catch 块，但可能被其他的 try/catch 块无意捕获。你没想捕获它们，但是声明捕获Throwable和Exception的时候，也包括了了Error或RuntimeE]]></description><category></category></item><item><title><![CDATA[nginx配置简介]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79446835</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79446835</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 15:53:55 +0800</pubDate><description><![CDATA[分布式系统中，需要有一个反向代理统一处理请求转发，所有需要访问这些分布式系统的请求都先打到nginx,然后nginx根据配置的转发规则将请求转发到相应的系统。例如我的ngnix配置在/home/q/nginx/conf/vhost下面，有一个配置文件配置着url的请求转发规则，如：location /user/order/html/ {
        proxy_pass http://user_]]></description><category></category></item><item><title><![CDATA[Linux上配置git]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79446765</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79446765</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 15:49:08 +0800</pubDate><description><![CDATA[配置用户名：  git config –global user.name “yourName” 
配置邮箱：  git config –global user.email “yourEmail”ssh-keygen 生成秘钥，默认保存在～/.ssh/id_rsa.pub文件中 ，把整个文件内容拷贝添加到gitlab的ssh key中]]></description><category></category></item><item><title><![CDATA[Java注解Annotation]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79446453</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79446453</guid><author>Alan_Mathison_Turing</author><pubDate>Mon, 05 Mar 2018 15:32:48 +0800</pubDate><description><![CDATA[用一个词就可以描述注解，那就是元数据，即一种描述数据的数据。所以，可以说注解就是源代码的元数据Annotation是如何工作的？怎么编写自定义的Annotation？例如注解@Override@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}在上面这个例子中，有几个]]></description><category></category></item><item><title><![CDATA[Linux上solr搜索引擎的安装]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79110511</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79110511</guid><author>Alan_Mathison_Turing</author><pubDate>Fri, 19 Jan 2018 20:31:33 +0800</pubDate><description><![CDATA[本文是《win上安装solr》的续篇，win上solr安装#点我#

这次在linux上安装solr，是 jdk8+tomcat8+solr-7.1.0 的组合。这里必须首先声明一下各个主要组件的版本，因为版本不一致可能会导致很多莫名其妙的问题，比如一些类会找不到。

jdk和tomcat的安装不是我们这次的重点，这里不再赘述。



1、下载solr

linux上下载solr还是很方便的，到达]]></description><category></category></item><item><title><![CDATA[Win solr搜索引擎的安装]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79098113</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/79098113</guid><author>Alan_Mathison_Turing</author><pubDate>Thu, 18 Jan 2018 18:44:56 +0800</pubDate><description><![CDATA[solr的原理、用途、简介啥的我就不说了，其他博客已经写了很多。这里ImportNew有个solr系列的文章很好，安利一波-->##点我点我##。
很多初学者碰到的第一个头痛的问题，肯定是怎么成功安装并能使用。这里先跟大家介绍一下再win下怎么安装solr搜索引擎。
1、下载solr
到apache的solr官网下载即可，附上链接-->#想下载就点我#
2、安装
win的安装很简单，解压]]></description><category></category></item><item><title><![CDATA[java线程池]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78529965</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78529965</guid><author>Alan_Mathison_Turing</author><pubDate>Tue, 14 Nov 2017 14:08:10 +0800</pubDate><description><![CDATA[这里搜集了一些关于java线程池的好文章java线程池艺术探索深入理解java线程池-ThreadPoolExecutor]]></description><category></category></item><item><title><![CDATA[对象池和线程池]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78512410</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78512410</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 12 Nov 2017 16:04:59 +0800</pubDate><description><![CDATA[实际开发中，并发和多线程的情景处处存在。今天我们来聊聊对象池和线程池这个两个日常开发用的比较多，但是又很容易混淆的两个概念。

对象池

首先我们来说说对象池。对象池利用了串行封闭的概念：将对象O“借给”一个请求线程T1，T1使用完之后再交还给对象池，并保证“未擅自发布该对象”且“以后不再使用”；对象池收回对象O之后，等T2来借的时候再把他借给T2，完成对象所用权的传递。

下面是一个简化版的对象]]></description><category></category></item><item><title><![CDATA[Guava使用之Table]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78010072</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78010072</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 17 Sep 2017 14:21:35 +0800</pubDate><description><![CDATA[当我们需要多个索引的数据结构的时候，通常情况下，我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现。 
为此Guava提供了一个新的集合类型－Table集合类型，来支持这种数据结构的使用场景。Table支持“row”和“column”，而且提供多种视图。@Test
public void testTable(){
    Table<String,]]></description><category></category></item><item><title><![CDATA[Guava使用之Splitter]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78010010</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78010010</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 17 Sep 2017 14:12:05 +0800</pubDate><description><![CDATA[Splitter：在Guava官方的解释为： 
Extracts non-overlapping substrings from an input string, typically by recognizing appearances of a separator sequence. This separator can be specified as a single character, fi]]></description><category></category></item><item><title><![CDATA[Guava使用之Preconditions]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78009933</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78009933</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 17 Sep 2017 13:57:51 +0800</pubDate><description><![CDATA[Guava的Preconditions内置了很多前置条件判断方法，这些判断方法经常放在方法的最前面，用来检查入参的条件是否符合，它可以使代码变得更整洁。每个方法都有三个变种： 
1. 没有额外的参数，抛出的异常中没有错误信息 
2. 有一个object对象作为额外参数，抛出的异常中以object.toString()作为错误信息 
3. 有一个String作为额外参数，附加不定数量的object对象]]></description><category></category></item><item><title><![CDATA[Guava使用之Ordering强大的流畅风格比较器]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78009836</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78009836</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 17 Sep 2017 13:37:49 +0800</pubDate><description><![CDATA[排序器（Ordering）是Guava流畅风格比较器[Comparator]的实现，它可以用来为构建复杂的比较器，以完成集合排序的功能。从实现上说，Ordering实例就是一个特殊的Comparator实例。Ordering把很多基于Comparator的静态方法（如Collections.max）包装为自己的实例方法（非静态方法），并且提供了链式调用方法，来定制和增强现有的比较器。常见的排序器可以]]></description><category></category></item><item><title><![CDATA[Guava使用之MultiSet]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78009739</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/78009739</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 17 Sep 2017 13:18:48 +0800</pubDate><description><![CDATA[Multiset是什么？顾名思义，Multiset和Set的区别就是可以保存多个相同的对象。在JDK中，List和Set有一个基本的区别，就是List可以包含多个相同对象，且是有顺序的，而Set不能有重复，且不保证顺序（有些实现有顺序，例如LinkedHashSet和SortedSet等）所以Multiset占据了List和Set之间的一个灰色地带：允许重复，但是不保证顺序。 实际开发中，经常会需要]]></description><category></category></item><item><title><![CDATA[Guava使用之MultiMap]]></title><link>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/77824094</link><guid>https://blog.youkuaiyun.com/Alan_Mathison_Turing/article/details/77824094</guid><author>Alan_Mathison_Turing</author><pubDate>Sun, 03 Sep 2017 17:46:43 +0800</pubDate><description><![CDATA[在日常的开发工作中，我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数据结构，以便做相应的业务逻辑处理。例如：private class  StudentScore{
    int CourseId;
    int score;
}private Map<String, List<StudentScore>> StudentScoreM]]></description><category></category></item></channel></rss>