<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Fantasy_Virgo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Fantasy_Virgo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Fantasy_Virgo]]></copyright><item><title><![CDATA[mysql表数据量大时查看行数和所占物理空间]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/110498400</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/110498400</guid><author>Fantasy_Virgo</author><pubDate>Wed, 02 Dec 2020 22:04:08 +0800</pubDate><description><![CDATA[1.背景

近日需要对一张mysql表进行分表，先查一下它目前的数据量，没多想直接使用了以下sql。没想到根本跑不出来结果。


select count(ID) from table_name;

2.解决方法

可以从mysql自带的information_schema库里查看相关信息。


// 登录数据库
// 切换information_schema数据库
use information_schema;
// 查询要查的表信息:行数、物理空间大小等等
select * from TABLES wh]]></description><category></category></item><item><title><![CDATA[mysql中删除一个表中的重复记录并只保留一条]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/88358298</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/88358298</guid><author>Fantasy_Virgo</author><pubDate>Fri, 08 Mar 2019 21:31:06 +0800</pubDate><description><![CDATA[爬虫爬数据的时候，有些记录会重复地插入数据库，如果直接用这些数据做实验，容易对实验结果造成影响，所以必要的时候，需要先清洗数据：把重复记录删除掉只保留一条。我们可以在实验过程中清洗数据，也可以直接在数据库中删除重复的数据。

先从数据库中读取，在实验过程中去重。这样做无法解决根本问题，每次运行实验代码都要去重一次；
	用sql语句实现。重点是写出高效率的且不违反mysql要求（mysql不允许边查...]]></description><category></category></item><item><title><![CDATA[非递归广度优先遍历无向图（有向图）并打印出其路径]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/87896656</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/87896656</guid><author>Fantasy_Virgo</author><pubDate>Sat, 23 Feb 2019 20:51:20 +0800</pubDate><description><![CDATA[昨天有个朋友找我帮个忙，需要我帮他看个代码，实现从无向图中输出两个节点中的路径。

他给了我一份代码，但是在遍历的过程中测试了很多次，基本都没有输出。我看了一下代码是深度优先遍历的，但是由于他的无向图节点有一万多个，并且每个节点的邻接节点又有几百几千个，在深度遍历过程中这个n叉树得不到控制，遍历路径的时间完全随缘，运行几小时也遍历不完。并且由于是深度遍历，输出的路径也是随缘，不会达到先输出最短路径...]]></description><category></category></item><item><title><![CDATA[对Java中String类的忽略大小写比较器（CaseInsensitiveComparator）的compare方法的一点疑问]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83548986</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83548986</guid><author>Fantasy_Virgo</author><pubDate>Tue, 30 Oct 2018 21:31:08 +0800</pubDate><description><![CDATA[最近我在看jdk源码，无意中看到String类的忽略大小写比较器的源码，其源码如下。


    private static class CaseInsensitiveComparator
            implements Comparator&amp;lt;String&amp;gt;, java.io.Serializable {
        // use serialVersionUID ...]]></description><category></category></item><item><title><![CDATA[Comparable和Comparator的区别]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83314398</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83314398</guid><author>Fantasy_Virgo</author><pubDate>Tue, 23 Oct 2018 20:57:18 +0800</pubDate><description><![CDATA[Comparable和Comparator两个接口都是Java中的比较器，但是在使用中还是有区别的，要根据实际需求选择。

Comparable

Comparable可以认为是一个内比较器，实现了Comparable接口的类：

必须要实现compareTo方法，compareTo方法也被称为自然比较方法；
	这些类是可以和自己比较的，至于具体和另一个实现了Comparable接口的类如何比较，...]]></description><category></category></item><item><title><![CDATA[RTTI：Class.forName("ClassName")和ClassName.class的区别]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83117841</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83117841</guid><author>Fantasy_Virgo</author><pubDate>Thu, 18 Oct 2018 10:13:52 +0800</pubDate><description><![CDATA[RTTI：即 Run-Time Type Identification，程序在运行时，通过运行时类型信息来检查某个引用所指的实际派生类型。其中运行时类型信息被包含在一个称为Class对象的特殊对象中，Java使用Class对象来执行其RTTI。

Class.forName(&quot;ClassName&quot;)和ClassName.class主要有以下几点区别：

Class.forName(&quot;ClassNa...]]></description><category></category></item><item><title><![CDATA[python字典遍历的几种方法]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83083401</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/83083401</guid><author>Fantasy_Virgo</author><pubDate>Tue, 16 Oct 2018 13:48:17 +0800</pubDate><description><![CDATA[python的字典非常方便，常用的遍历方法有以下几种：

1. 按照key遍历


myDict = {&quot;C&quot;:98.2,&quot;C++&quot;:98.4,&quot;Java&quot;:97.5,&quot;Python&quot;:99.5}

# 1.按照key遍历
for key in myDict:
    print(key+&quot;: &quot;+ str(myDict[key]) )
for key in myDict.keys():
    ...]]></description><category></category></item><item><title><![CDATA[Java多态中的问题（三）构造器中调用多态方法]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82709544</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82709544</guid><author>Fantasy_Virgo</author><pubDate>Fri, 14 Sep 2018 22:41:09 +0800</pubDate><description><![CDATA[动态绑定：在运行时根据对象的类型调用恰当的方法。Java中除了static方法（构造方法可看做static方法）和final方法（private方法可看做final方法）之外，其他普通方法都是动态绑定的。

测试在构造方法中调用该类的多态方法，代码如下。


package polymorphism;

class ConstructSuper{
	protected int rr = 1;
	C...]]></description><category></category></item><item><title><![CDATA[Java多态中的问题（二）字段和静态方法]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82708753</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82708753</guid><author>Fantasy_Virgo</author><pubDate>Fri, 14 Sep 2018 21:43:48 +0800</pubDate><description><![CDATA[动态绑定：在运行时根据对象的类型调用恰当的方法。Java中除了static方法（构造方法可看做static方法）和final方法（private方法可看做final方法）之外，其他普通方法都是动态绑定的。

1. 在利用多态特性时，如果直接访问某个字段，这个访问就将在编译器进行解析，不再是多态，以下代码可反映该问题。


package polymorphism;

class Super {
	...]]></description><category></category></item><item><title><![CDATA[Java多态中的问题（一）“覆盖”私有方法]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82708444</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82708444</guid><author>Fantasy_Virgo</author><pubDate>Fri, 14 Sep 2018 20:56:20 +0800</pubDate><description><![CDATA[动态绑定：在运行时根据对象的类型调用恰当的方法。Java中除了static方法（构造方法可看做static方法）和final方法（private方法可看做final方法）之外，其他普通方法都是动态绑定的。

如果在继承中，“覆盖”私有方法，并利用多态特性访问该方法，则可能得不到期望的结果，以下代码可反映问题。


package polymorphism;

public class Privat...]]></description><category></category></item><item><title><![CDATA[Java对象的创建过程]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82592909</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82592909</guid><author>Fantasy_Virgo</author><pubDate>Mon, 10 Sep 2018 17:28:58 +0800</pubDate><description><![CDATA[考虑一个名为Dog的类：

当首次创建类型为Dog的对象时，或者Dog类的static方法/static字段/static域首次被访问时，Java解释器必须查找类路径（在事先设好的类路径里搜索），以定位Dog.class文件。
	载入Dog.class，有关静态初始化的所有动作都会被执行。因此，静态初始化只在Class对象首次加载的时候进行一次。
	new Dog()创建对象时，首先将在堆上为Do...]]></description><category></category></item><item><title><![CDATA[Java类成员的初始化顺序（静态、非静态、构造函数）]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82592339</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82592339</guid><author>Fantasy_Virgo</author><pubDate>Mon, 10 Sep 2018 17:11:57 +0800</pubDate><description><![CDATA[在类的内部，变量定义的先后顺序决定了初始化的顺序(在初始化优先级别相同的情况下)。
	即使变量定义散布于方法定义之间，它们仍旧会在任何方法（包括构造方法）被调用之前得到初始化。
	初始化优先顺序1&amp;gt;2&amp;gt;3：
	 静态变量/静态域，只调用一次；
		 非静态成员变量/非静态域，每new一次都要调用一次；
		 构造方法，每new一次都要调用一次。
	
	示例代码：

package in...]]></description><category></category></item><item><title><![CDATA[selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82382216</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82382216</guid><author>Fantasy_Virgo</author><pubDate>Tue, 04 Sep 2018 13:52:11 +0800</pubDate><description><![CDATA[最近在用selenium+PhantomJS写程序的时候，其中有一部分是输入用户名密码然后点击登录的过程，在登录按钮操作的时候一直报错：


username_input = wait.until(EC.presence_of_element_located((By.ID,'TB_userName')))
passwd_input = wait.until(EC.presence_of_eleme...]]></description><category></category></item><item><title><![CDATA[python3下读文件时如果文件不存在则创建文件]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82315727</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/82315727</guid><author>Fantasy_Virgo</author><pubDate>Sun, 02 Sep 2018 15:41:02 +0800</pubDate><description><![CDATA[最近写python脚本的时候遇到个读写文件的问题，当我用with open打开文件读文件的时候如果文件不存在就会报FileNotFoundError这个错误，并且在加入了try之后使用API里面的mknod()函数创建也不行，经过探索，得出几种读文件时文件不存在则创建文件的解决办法。

1. 仍然使用with open，但是mode参数为a，则当文件不存在时会自动创建，不会报错。


with o...]]></description><category></category></item><item><title><![CDATA[python+scrapy+selenium结合]]></title><link>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/78595392</link><guid>https://blog.youkuaiyun.com/Fantasy_Virgo/article/details/78595392</guid><author>Fantasy_Virgo</author><pubDate>Tue, 21 Nov 2017 18:28:38 +0800</pubDate><description><![CDATA[第一篇优快云博客，先写个笔记
最近在学习python利用selenium爬取动态网站，因为之前学了scrapy框架，然后就不理解怎么把scrapy和selenium结合起来使用，看了几个文章，说的是用scrapy框架自动生成目录结构后，在middleware.py里面自定义自己的中间件代码。重要的方法就是process_request()。


看的两个文章：
http://www.j]]></description><category></category></item></channel></rss>