<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qqinternet的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qqinternet</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qqinternet]]></copyright><item><title><![CDATA[滑动窗口算法]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/109018441</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/109018441</guid><author>qqinternet</author><pubDate>Sun, 11 Oct 2020 22:35:07 +0800</pubDate><description><![CDATA[滑动窗口问题:

现在有一个数组a,然后每次移动k个元素，记录每次移动时候最大的值，进行返回

例如:数组a[]={1,3,-1,-3,5,3,6,7},每次移动3个元素

滑动窗口的位置        最大值
---------------        -----
[1 3 -1] -3 5 3 6 7    3
1 [3 -1 -3] 5 3 6 7    3
1 3 [-1 -3 5] 3 6 7    5
1 ...]]></description><category></category></item><item><title><![CDATA[记录一次mysql binlog 恢复数据的操作]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/106309905</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/106309905</guid><author>qqinternet</author><pubDate>Sun, 24 May 2020 08:25:49 +0800</pubDate><description><![CDATA[由于公司人员的一次大意操作，把一个只有表结构的空表,覆盖了线上的数据库。直接把生产系统上的数据库给覆盖了，生产数据全部没了。而碰巧的是这个新的数据库还没有进行每天的备份,直接炸锅.

幸好有binlog，在这里记录一下恢复过程.

1 先把生产线上的binlog 复制到了测试机器和本地上面。防止意外情况发生binlog破坏或者丢失.

2 在测试机器建立和破坏掉的数据库一样的表结构.

3 利用mysqlbinlog 命令进行对数据库的还原

3.1 binlog文件在的目录一般是在/var/lib/mys]]></description><category></category></item><item><title><![CDATA[ReentrantLock 源码分析]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/104978227</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/104978227</guid><author>qqinternet</author><pubDate>Thu, 19 Mar 2020 22:32:24 +0800</pubDate><description><![CDATA[前沿

  前面几篇文章已经向大家详细介绍了AQS,今天我们来看一下ReentrantLock。其实当你明白AQS的原理的时候,在来看ReentrantLock,你会发现很简单。因为ReentrantLock其实就是基于AQS来实现的,下面我们来详细学习ReentrantLock。

ReentrantLock特性

ReentrantLock是一把重入锁,可中断,可以限时,支持公平锁和非公平...]]></description><category></category></item><item><title><![CDATA[AQS共享锁与独占锁对比]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/104686888</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/104686888</guid><author>qqinternet</author><pubDate>Thu, 05 Mar 2020 23:23:28 +0800</pubDate><description><![CDATA[AQS框架图



上图是AQS框架大致的一些方法,还有一些没有全部的列出来。这里主要是让大家从这张图中,对AQS有一个总体的印象。总的来说AQS框架分为五层从对外暴露的API层到底层的数据层,当自定义同步器时候,只需要实现API的方法即可，不需要关注底层的具体实现逻辑。

共享模式和独占模式流程图对比

独占模式流程图



共享模式流程图



相同点

从流程图中，我们发现独占模式和共...]]></description><category></category></item><item><title><![CDATA[AQS 共享锁模式]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/104566085</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/104566085</guid><author>qqinternet</author><pubDate>Fri, 28 Feb 2020 22:45:27 +0800</pubDate><description><![CDATA[前沿

上一篇文章已经向大家讲解了AQS的数据结构，以及独占锁的源码详解，本篇文章接着介绍AQS的共享锁模式,学习并发编程一定要把AQS搞懂，因为JUC包中的很多类都是由AQS实现的。

AQS共享模式acquireShared执行流程

多个线程通过调用tryAcquireShared方法获取共享资源，返回值大于等于0则获取资源成功,返回值小于0则获取失败。
	当前线程获取共享资源失败后，通过调...]]></description><category></category></item><item><title><![CDATA[java脑图]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/104460551</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/104460551</guid><author>qqinternet</author><pubDate>Sun, 23 Feb 2020 15:19:45 +0800</pubDate><description><![CDATA[​java的内容很多,有些知识点很碎。有些人想要系统的去复习java知识不知道从何下手,我这里做了一个java后端程序员应该掌握知识的脑图,可供参考。

这里覆盖了java基础部分核心要点,javaWeb重要知识点,java开发应该掌握的框架以及java底层运行的java虚拟机知识点。数据库应该掌握的知识点,以及做为一个程序开发者内功部分的数据结构,操作系统,计算机网络，一些简单的算法。以及以后做...]]></description><category></category></item><item><title><![CDATA[AQS详解之独占锁模式]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/104154013</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/104154013</guid><author>qqinternet</author><pubDate>Mon, 03 Feb 2020 11:31:41 +0800</pubDate><description><![CDATA[AQS 介绍

AbstractQueuedSynchronizer简称AQS,即队列同步器。它是JUC包下面的核心组件,它的主要使用方式是继承,子类通过继承AQS,并实现它的抽象方法来管理同步状态,它分为独占锁和共享锁。很多同步组件都是基于它来实现的,比如我门常见的ReentrantLock，它是基于AQS的独占锁实现的,它表示每次只能有一个线程持有锁。在比如ReentrantReadWrite...]]></description><category></category></item><item><title><![CDATA[maven cmd下创建]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/62238390</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/62238390</guid><author>qqinternet</author><pubDate>Wed, 15 Mar 2017 22:02:39 +0800</pubDate><description><![CDATA[可以通过命令行的方式创建maven

mvn archetype:generate -Dgroupld=org.seckill -Dartifactld=secki
ll-DarchetypeArtifactld=maven-archetype-webapp]]></description><category></category></item><item><title><![CDATA[android cmd 下命令行]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/55002246</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/55002246</guid><author>qqinternet</author><pubDate>Sun, 12 Feb 2017 17:01:06 +0800</pubDate><description><![CDATA[在不用编译器的情况下如何创建并且运行程序，我们只需要在sdk的tools下用命令行的方式启动。
首先进入在运行框中输入cmd然后在窗口下输入对应操作的命令行。
查看sdk的版本
在sdk的tools的目录下输入
Android list targets
出现对应的Android api
F:\Users\ASUS-PC\AppData\Local\Android2\sdk\tools>]]></description><category></category></item><item><title><![CDATA[Android自定义属性]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52687323</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52687323</guid><author>qqinternet</author><pubDate>Wed, 28 Sep 2016 07:42:44 +0800</pubDate><description><![CDATA[Android自定义属性，我们首先可以打开我们的SDk，然后我们可以看到这个platforms\android-19\data\res\values路径的下的attrs.xml文件。我们打开后可以看一下Android系统自带的属性是如何定义的。我们可以随便看一个比如TextView。


从这里我们可以看到TextView的各种属性，那么我们就可以模仿系统的写法，自己写一个自己控件的属性。]]></description><category></category></item><item><title><![CDATA[百度地图如何计算两点之间距离]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52244673</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52244673</guid><author>qqinternet</author><pubDate>Thu, 18 Aug 2016 20:38:00 +0800</pubDate><description><![CDATA[路线规划提供了获取路线距离的方法，见MKRoutePlan 类的 getDistance 方法。

如果是计算任意两点的距离，自2.0.0版本开始，Android SDK为开发者提供了计算距离的接口（DistanceUtil），具体使用方法如下：

1.GeoPoint p1LL = new GeoPoint(39971802, 116347927);

2.GeoPoint p2LL]]></description><category></category></item><item><title><![CDATA[Activity的四种启动模式]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52234319</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52234319</guid><author>qqinternet</author><pubDate>Wed, 17 Aug 2016 20:24:02 +0800</pubDate><description><![CDATA[以前一直没有总结，今天总结一下Actiivty的启动模式。
我们都知道Activity有四种启动模式，分被为 Standard，SingleTop，SingleTask，SingleInstance。
Standard：标准模式，也是Activity的默认启动模式。比如说A启动B，B是标准模式，那么B就会进入到A的栈中。在这个启动中我们要注意一个问题，比如说如果ApplicationConte]]></description><category></category></item><item><title><![CDATA[Toolbar]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52165499</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52165499</guid><author>qqinternet</author><pubDate>Tue, 09 Aug 2016 19:30:22 +0800</pubDate><description><![CDATA[我们现在一般都用Toolbar 不在用Actionbar了。这是因为Actionbar在定制时，会出现在不同的手机上适配有问题。在加上在goole 退出的Meteral Design的设计风格，而Toolbar就可以实现，并且actionbar的很多功能在Toolbar上都可以实现。
在写toolbar时一定要在启动的的activity的里面设置style方式，不然会与系统发生冲突。
以下是T]]></description><category></category></item><item><title><![CDATA[Fragment的认识]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52165371</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52165371</guid><author>qqinternet</author><pubDate>Tue, 09 Aug 2016 19:05:47 +0800</pubDate><description><![CDATA[我们都知道Fragment是为了适应大屏幕应用而生，它是一种碎片化的界面。
创建Fragment的两种方式，一种是静态的创建，一种是动态的创建。
静态的创建步骤
1 创建想要的Fragment，以及xml
2在主页面中的xml中写 fragment的控件时，应当注意一个问题，一定要写出它的name。不然会找不到你创的fragment。这里要注意
下面是静态创建Fragment的代码片段]]></description><category></category></item><item><title><![CDATA[欢迎使用优快云-markdown编辑器]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52136961</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52136961</guid><author>qqinternet</author><pubDate>Sat, 06 Aug 2016 16:23:11 +0800</pubDate><description><![CDATA[加入第三方库混淆打包问题 
 Error:Execution failed for task ‘:app:transformClassesAndResourcesWithProguardForRelease’. 
   java.io.IOException: Please correct the above warnings first.]]></description><category></category></item><item><title><![CDATA[Error:(2) Error: "app_name" is not translated in "en" (English) [MissingTranslation]]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52136752</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52136752</guid><author>qqinternet</author><pubDate>Sat, 06 Aug 2016 15:56:28 +0800</pubDate><description><![CDATA[如果碰见这个问题
Error:(2) Error: "app_name" is not translated in "en" (English) [MissingTranslation]

Error:(4) Error: "title" is not translated in "en" (English) [MissingTranslation]

Error:(9) Error: ]]></description><category></category></item><item><title><![CDATA[Activity的任务栈]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52079093</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52079093</guid><author>qqinternet</author><pubDate>Sun, 31 Jul 2016 15:59:32 +0800</pubDate><description><![CDATA[在我们实际做项目时，我们都会创建一个BaseActivity，在这个基础的Activity中写一些通用的方法，然后让每个Actiivty都继承它。这样写的好处是可以减少代码的冗余性，可以让代码更加简洁清晰。
那么我们在这个BaseActivity中除了写一些窗口的样式，键盘的显示方式和一些通用的方法外，最好写上一个Activity的任务栈管理者，这样写的好处是当我们一直打开activity时，这]]></description><category></category></item><item><title><![CDATA[Android计时器]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/52026880</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/52026880</guid><author>qqinternet</author><pubDate>Mon, 25 Jul 2016 19:45:32 +0800</pubDate><description><![CDATA[我们在开发的时候有时候需要倒计时的功能有时候需要一个计时器一样的功能。我们大多数会写for循环累加然后写在线程中，这样写很麻烦，也很容易出错。今天我介绍一下这样的功能在Android中其实已经有封装了。
CountDownTimer  这个类是位于Android.OS包下。实现这个类中的三个方法就很容易实现倒计时的功能了。
下面是代码
这段代码实现了发送短信时的倒计时功能。
public ]]></description><category></category></item><item><title><![CDATA[Error:Execution failed for task ':XXXX:processDebugManifest'. > Manifest merger failed with multiple]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/51870319</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/51870319</guid><author>qqinternet</author><pubDate>Sun, 10 Jul 2016 10:15:27 +0800</pubDate><description><![CDATA[Error:(26, 9) Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:26:9
Error:(28, 9) Attribute application@theme value=(@style/ThemeActionBar) from AndroidManifest.xml:28:9
is]]></description><category></category></item><item><title><![CDATA[百度地图定位demo]]></title><link>https://blog.youkuaiyun.com/qqinternet/article/details/51594794</link><guid>https://blog.youkuaiyun.com/qqinternet/article/details/51594794</guid><author>qqinternet</author><pubDate>Mon, 06 Jun 2016 13:13:10 +0800</pubDate><description><![CDATA[以下是基于百度地图3.7的一个定位的demo 
在集成百度地图时首先要在Application中进行SDK的配置然后在配置文件中进行引用public class app extends Application {
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub]]></description><category></category></item></channel></rss>