<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LTG01的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LTG01</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LTG01]]></copyright><item><title><![CDATA[MAC  Reason: image not found]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/106529391</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/106529391</guid><author>LTG01</author><pubDate>Wed, 03 Jun 2020 17:43:11 +0800</pubDate><description><![CDATA[在mac 上python3 连接mqsql 数据库时候，安装mysqlclient 导包MySQLdb 运行则会报错：

return _bootstrap._gcd_import(name[level:], package, level)
 File "&lt;frozen importlib._bootstrap&gt;", line 994, in _gcd_import
 File "&lt;frozen importlib._bootstrap&gt;", line 971, in ...]]></description><category></category></item><item><title><![CDATA[NoneType object has no attribute encoding]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/106529346</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/106529346</guid><author>LTG01</author><pubDate>Wed, 03 Jun 2020 17:38:44 +0800</pubDate><description><![CDATA[采用scrapy 爬取数据，采用异步方式保存数据到数据库时候，运行 报错如下：

2020-06-03 17:28:37 [scrapy.core.engine] INFO: Spider closed (finished)[Failure instance: Traceback: &lt;class 'AttributeError'&gt;: 'NoneType' object has no attribute 'encoding'
/Library/Frameworks/Python.framework]]></description><category></category></item><item><title><![CDATA[使用  Image 截取指定区域的图片截取不到位]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/105832784</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/105832784</guid><author>LTG01</author><pubDate>Wed, 29 Apr 2020 10:06:47 +0800</pubDate><description><![CDATA[想使用爬虫模拟登陆12306 ，但是有验证码，需要识别验证码。

实现步骤

1.把 登陆整个界面 截图。

2.找到 验证码图片区域在整个截图的在区域，截取验证码图片

3.对验证码图片进行识别

在第2步骤总是截取不到对应的区域，坐标也是正确的，代码如下：


from selenium  import webdriver
import time
from PIL import Image

...]]></description><category></category></item><item><title><![CDATA[添加两个字母即可无需安装百度云盘就能下载百度网盘数据]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/100169228</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/100169228</guid><author>LTG01</author><pubDate>Sat, 31 Aug 2019 09:38:32 +0800</pubDate><description><![CDATA[操作步骤和上篇文章一样，只需把三个vvv改成wp即可
]]></description><category></category></item><item><title><![CDATA[添加三个字母即可免费下载百度文库的文档]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/100169016</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/100169016</guid><author>LTG01</author><pubDate>Sat, 31 Aug 2019 09:34:27 +0800</pubDate><description><![CDATA[以前上学的时候，下载百度文库的文章，好多需要下载券，有时候需要下载很多，结果发现文档可能大都没用，这样下载券都浪费了，有再多的下载券都不够用，除非你rmb多多。

今天说一个小技巧，可以甩下载券也可以下载文档，简直溜溜的。我们只需要修改下链接就可以了其他什么都不用做。

首先找到你要下载的文档，例如下图，我要下载的文档：



如上图所示，需要下载券，而我的下载券个数为0，无法下载 。这时候我们只...]]></description><category></category></item><item><title><![CDATA[c#启动python的 exe报错，双击可以正常打开]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/85124077</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/85124077</guid><author>LTG01</author><pubDate>Thu, 20 Dec 2018 15:42:45 +0800</pubDate><description><![CDATA[ 

如果要启动的程序为单独一个exe文件没有问题，而当这个程序有配置文件，或在启动时需要读取其他文件时，请配置一下 StartInfo 的 WorkingDirectory 属性为你的应用程序目录。
以上是我遇到相似的问题的解决方法：

 

ProcessStartInfo psi = new ProcessStartInfo();

                psi.FileName ...]]></description><category></category></item><item><title><![CDATA[Missing artifact com.alibaba:dubbo:jar:2.8.4]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/84667961</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/84667961</guid><author>LTG01</author><pubDate>Fri, 30 Nov 2018 21:16:59 +0800</pubDate><description><![CDATA[Dubbox的jar包并没有部署到Maven的中央仓库中，大家在Maven的中央仓库中可以查找到Dubbo的最终版本是2.5.3 , 阿里巴巴解散了Dubbo团队后由当当网继续维护此项目，并改名为 Dubbox ,坐标不变，版本变更了，但是并没有提交到中央仓库。

我们现在需要手动将Dubbox的jar包安装到我的本地仓库中。jar 包在 https://gitee.com/ltg01/Dubbo...]]></description><category></category></item><item><title><![CDATA[解决springmvc 中请求乱码问题]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/83867609</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/83867609</guid><author>LTG01</author><pubDate>Thu, 08 Nov 2018 20:25:14 +0800</pubDate><description><![CDATA[springmvc 中解决乱码问题

 

在web.xml中加入：


&amp;lt;filter&amp;gt;
		&amp;lt;filter-name&amp;gt;CharacterEncodingFilter&amp;lt;/filter-name&amp;gt;
		&amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/fi...]]></description><category></category></item><item><title><![CDATA[mfc tree中  把string转换为LPCTSTR时 出现乱码]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/82113625</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/82113625</guid><author>LTG01</author><pubDate>Mon, 27 Aug 2018 15:32:56 +0800</pubDate><description><![CDATA[在mfc的tree 插入一个节点的时候，


h_file = m_tree.InsertItem(name, h_root);

 第一个参数是LPCTSTR，当把string类型通过str.c_str()转换后，编译不通过，强制转换成LPCTSTR


h_file = m_tree.InsertItem(LPCTSTR(file_name.c_str()), h_root);//插入文件名节...]]></description><category></category></item><item><title><![CDATA[Process finished with exit code -1073741819 (0xC0000005)]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/82021460</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/82021460</guid><author>LTG01</author><pubDate>Fri, 24 Aug 2018 16:57:43 +0800</pubDate><description><![CDATA[遇到该问题的会有各种情况，我的是以下情况遇到的，

在python调用c++ 的dll的时候，传递参数是char*时候，在c++中,参数out这么赋值 python调该函数 可以得到out为123


EXTERNC ISAC_API void test222( char* &amp;amp;out) {
	printf(&quot;%d %s\r\n&quot;, 1,out);
	
        out=&quot;123&quot;;
...]]></description><category></category></item><item><title><![CDATA[Python 调用c#的dll pythonnet]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/80700513</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/80700513</guid><author>LTG01</author><pubDate>Fri, 15 Jun 2018 09:12:49 +0800</pubDate><description><![CDATA[1.首先有准备好的c#的dll可供调用。本文的dll在2.安装pythonnet 在python的安装路径 Python\Python36-32\Lib\site-packages\pip   下执行 pip install pythonnet3.把dl文件放在项目里面4.python的 代码如下import clr  #clr是公共运行时环境，这个模块是与C#交互的核心
clr.FindAsse...]]></description><category></category></item><item><title><![CDATA[java 虚拟机学习笔记之二《对象的创建以及布局和访问》]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/79851880</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/79851880</guid><author>LTG01</author><pubDate>Sun, 08 Apr 2018 17:48:37 +0800</pubDate><description><![CDATA[以hotspot虚拟机和常用的Java堆为例，深入探讨hotspot虚拟机在Java堆中对象分配、布局和访问的全过程1.对象的创建        Java是一门面向对象的编程语言，在Java程序运行过程中无时无刻都有对象被创建出来。在语言层而上，创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已，而在虚拟机中，对象(文中讨论的对象限于普通Java对象，不包括数组和class对象等)的创建...]]></description><category></category></item><item><title><![CDATA[java 虚拟机学习笔记之一《运行时数据区》]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/79847477</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/79847477</guid><author>LTG01</author><pubDate>Sun, 08 Apr 2018 11:35:59 +0800</pubDate><description><![CDATA[java 虚拟机运行时数据        Java虚拟机在执行Java程序的时候，会把它管理的内存划分为若干个不同的数据区域，这些区域有着各自用途，以及创建和销毁时间，有的区域随着虚拟机的启动而创建，有的区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范（Java SE 7版）》的规定，Java虚拟机所管理的内存将会包括以下几个运行时数据区域，如下图1.程序计数器       ...]]></description><category></category></item><item><title><![CDATA[JSR（Java内存模型）常见问题解答]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78374528</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78374528</guid><author>LTG01</author><pubDate>Sat, 28 Oct 2017 11:57:06 +0800</pubDate><description><![CDATA[内容目录
1.什么是内存模型？


2.像其他语言，比如c++，有内存模型吗？


3.java的内存模型是什么样的？


4.重排序是什么？


5.旧的记忆模型有什么问题？


6.没有正确同步是什么意思？


7.同步是做什么的？


8.怎么改变final字段的值？


9.final字段在新的JMM下是怎么工作的？


10.vol]]></description><category></category></item><item><title><![CDATA[阿姆达尔定律]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78363659</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78363659</guid><author>LTG01</author><pubDate>Fri, 27 Oct 2017 12:45:52 +0800</pubDate><description><![CDATA[阿姆达尔定律可以用来计算处理器平行运算之后效率提升的能力。阿姆达尔定律因Gene Amdal 在1967年提出这个定律而得名。绝大多数使用并行或并发系统的开发者有一种并发或并行可能会带来提速的感觉，甚至不知道阿姆达尔定律。不管怎样，了解阿姆达尔定律还是有用的。




我会首先以算术的方式介绍阿姆达尔定律定律，然后再用图表演示一下。
阿姆达尔定律定义

一个程序（或者一个算法）可以]]></description><category></category></item><item><title><![CDATA[非阻塞算法]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78363650</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78363650</guid><author>LTG01</author><pubDate>Fri, 27 Oct 2017 12:44:49 +0800</pubDate><description><![CDATA[在并发上下文中，非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法。在绝大多数项目中，在算法中如果一个线程的挂起没有导致其它的线程挂起，我们就说这个算法是非阻塞的。


为了更好的理解阻塞算法和非阻塞算法之间的区别，我会先讲解阻塞算法然后再讲解非阻塞算法。


阻塞并发算法

一个阻塞并发算法一般分下面两步：

执行线程请求的操作阻塞线程直到可以安全地执行操作]]></description><category></category></item><item><title><![CDATA[剖析同步器]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78363640</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78363640</guid><author>LTG01</author><pubDate>Fri, 27 Oct 2017 12:42:05 +0800</pubDate><description><![CDATA[虽然许多同步器（如锁，信号量，阻塞队列等）功能上各不相同，但它们的内部设计上却差别不大。换句话说，它们内部的的基础部分是相同（或相似）的。了解这些基础部件能在设计同步器的时候给我们大大的帮助。这就是本文要细说的内容。

注：本文的内容是哥本哈根信息技术大学一个由Jakob Jenkov，Toke Johansen和Lars Bjørn参与的M.Sc.学生项目的部分成果。在此项目期间我们咨询Do]]></description><category></category></item><item><title><![CDATA[Java并发编程之CAS]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78363634</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78363634</guid><author>LTG01</author><pubDate>Fri, 27 Oct 2017 12:41:00 +0800</pubDate><description><![CDATA[CAS（Compare and swap）比较和替换是设计并发算法时用到的一种技术。简单来说，比较和替换是使用一个期望值和一个变量的当前值进行比较，如果当前变量的值与我们期望的值相等，就使用一个新值替换当前变量的值。这听起来可能有一点复杂但是实际上你理解之后发现很简单，接下来，让我们跟深入的了解一下这项技术。



CAS的使用场景

在程序和算法中一个经常出现的模式就是“check]]></description><category></category></item><item><title><![CDATA[线程池]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78363626</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78363626</guid><author>LTG01</author><pubDate>Fri, 27 Oct 2017 12:39:19 +0800</pubDate><description><![CDATA[线程池（Thread Pool）对于限制应用程序中同一时刻运行的线程数很有用。因为每启动一个新线程都会有相应的性能开销，每个线程都需要给栈分配一些内存等等。


我们可以把并发执行的任务传递给一个线程池，来替代为每个并发执行的任务都启动一个新的线程。只要池里有空闲的线程，任务就会分配给一个线程执行。在线程池的内部，任务被插入一个阻塞队列（Blocking Queue ），线程池里的线程会去取]]></description><category></category></item><item><title><![CDATA[阻塞队列]]></title><link>https://blog.youkuaiyun.com/LTG01/article/details/78363530</link><guid>https://blog.youkuaiyun.com/LTG01/article/details/78363530</guid><author>LTG01</author><pubDate>Fri, 27 Oct 2017 12:17:02 +0800</pubDate><description><![CDATA[阻塞队列与普通队列的区别在于，当队列是空的时，从队列中获取元素的操作将会被阻塞，或者当队列是满时，往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞，直到其他的线程往空的队列插入新的元素。同样，试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞，直到其他的线程使队列重新变得空闲起来，如从队列中移除一个或者多个元素，或者完全清空队列，下图展示了如何通过阻塞队列来合作：]]></description><category></category></item></channel></rss>