自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 资源 (9)
  • 收藏
  • 关注

原创 opencv 数字识别详细教程

最近要做数字识别这块,但是自己又完全不懂这个,网上搜资料搜了好多,但是都没找到完整代码。只有自己慢慢搞,下面写下自己的过程以及代码有不好的地方希望大神可以指出,大家相互交流下。有需要完整代码的可以留下邮箱我是在VS2013 和opencv 2.4.9 环境下实现的。关于环境的搭建和配置以及软件的下载可以可以参考,http://blog.csdn.net/ltg01/article/detail

2016-01-10 16:11:28 60437 435

原创 MAC Reason: image not found

在mac 上python3 连接mqsql 数据库时候,安装mysqlclient 导包MySQLdb 运行则会报错:return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in ...

2020-06-03 17:43:11 1251

原创 NoneType object has no attribute encoding

采用scrapy 爬取数据,采用异步方式保存数据到数据库时候,运行 报错如下:2020-06-03 17:28:37 [scrapy.core.engine] INFO: Spider closed (finished)[Failure instance: Traceback: <class 'AttributeError'>: 'NoneType' object has no attribute 'encoding'/Library/Frameworks/Python.framework

2020-06-03 17:38:44 2164

原创 使用 Image 截取指定区域的图片截取不到位

想使用爬虫模拟登陆12306 ,但是有验证码,需要识别验证码。实现步骤1.把 登陆整个界面 截图。2.找到 验证码图片区域在整个截图的在区域,截取验证码图片3.对验证码图片进行识别在第2步骤总是截取不到对应的区域,坐标也是正确的,代码如下:from selenium import webdriverimport timefrom PIL import Image...

2020-04-29 10:06:47 2916 7

原创 添加两个字母即可无需安装百度云盘就能下载百度网盘数据

操作步骤和上篇文章一样,只需把三个vvv改成wp即可

2019-08-31 09:38:32 3389

原创 添加三个字母即可免费下载百度文库的文档

以前上学的时候,下载百度文库的文章,好多需要下载券,有时候需要下载很多,结果发现文档可能大都没用,这样下载券都浪费了,有再多的下载券都不够用,除非你rmb多多。今天说一个小技巧,可以甩下载券也可以下载文档,简直溜溜的。我们只需要修改下链接就可以了其他什么都不用做。首先找到你要下载的文档,例如下图,我要下载的文档:如上图所示,需要下载券,而我的下载券个数为0,无法下载 。这时候我们只...

2019-08-31 09:34:27 13715 1

原创 c#启动python的 exe报错,双击可以正常打开

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

2018-12-20 15:42:45 586 1

原创 Missing artifact com.alibaba:dubbo:jar:2.8.4

Dubbox的jar包并没有部署到Maven的中央仓库中,大家在Maven的中央仓库中可以查找到Dubbo的最终版本是2.5.3 , 阿里巴巴解散了Dubbo团队后由当当网继续维护此项目,并改名为 Dubbox ,坐标不变,版本变更了,但是并没有提交到中央仓库。我们现在需要手动将Dubbox的jar包安装到我的本地仓库中。jar 包在 https://gitee.com/ltg01/Dubbo...

2018-11-30 21:16:59 969

原创 解决springmvc 中请求乱码问题

springmvc 中解决乱码问题 在web.xml中加入:&lt;filter&gt; &lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/fi...

2018-11-08 20:25:14 641

原创 mfc tree中 把string转换为LPCTSTR时 出现乱码

在mfc的tree 插入一个节点的时候,h_file = m_tree.InsertItem(name, h_root); 第一个参数是LPCTSTR,当把string类型通过str.c_str()转换后,编译不通过,强制转换成LPCTSTRh_file = m_tree.InsertItem(LPCTSTR(file_name.c_str()), h_root);//插入文件名节...

2018-08-27 15:32:56 1483

原创 Process finished with exit code -1073741819 (0xC0000005)

遇到该问题的会有各种情况,我的是以下情况遇到的,在python调用c++ 的dll的时候,传递参数是char*时候,在c++中,参数out这么赋值 python调该函数 可以得到out为123EXTERNC ISAC_API void test222( char* &amp;out) { printf("%d %s\r\n", 1,out); out="123";...

2018-08-24 16:57:43 1148

原创 Python 调用c#的dll pythonnet

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...

2018-06-15 09:12:49 19729 27

原创 java 虚拟机学习笔记之二《对象的创建以及布局和访问》

以hotspot虚拟机和常用的Java堆为例,深入探讨hotspot虚拟机在Java堆中对象分配、布局和访问的全过程1.对象的创建        Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层而上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和class对象等)的创建...

2018-04-08 17:48:37 257

原创 java 虚拟机学习笔记之一《运行时数据区》

java 虚拟机运行时数据        Java虚拟机在执行Java程序的时候,会把它管理的内存划分为若干个不同的数据区域,这些区域有着各自用途,以及创建和销毁时间,有的区域随着虚拟机的启动而创建,有的区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图1.程序计数器       ...

2018-04-08 11:35:59 252

翻译 JSR(Java内存模型)常见问题解答

内容目录1.什么是内存模型?2.像其他语言,比如c++,有内存模型吗?3.java的内存模型是什么样的?4.重排序是什么?5.旧的记忆模型有什么问题?6.没有正确同步是什么意思?7.同步是做什么的?8.怎么改变final字段的值?9.final字段在新的JMM下是怎么工作的?10.vol

2017-10-28 11:57:06 1392

转载 阿姆达尔定律

阿姆达尔定律可以用来计算处理器平行运算之后效率提升的能力。阿姆达尔定律因Gene Amdal 在1967年提出这个定律而得名。绝大多数使用并行或并发系统的开发者有一种并发或并行可能会带来提速的感觉,甚至不知道阿姆达尔定律。不管怎样,了解阿姆达尔定律还是有用的。我会首先以算术的方式介绍阿姆达尔定律定律,然后再用图表演示一下。阿姆达尔定律定义一个程序(或者一个算法)可以

2017-10-27 12:45:52 1425

转载 非阻塞算法

在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法。在绝大多数项目中,在算法中如果一个线程的挂起没有导致其它的线程挂起,我们就说这个算法是非阻塞的。为了更好的理解阻塞算法和非阻塞算法之间的区别,我会先讲解阻塞算法然后再讲解非阻塞算法。阻塞并发算法一个阻塞并发算法一般分下面两步:执行线程请求的操作阻塞线程直到可以安全地执行操作

2017-10-27 12:44:49 956

转载 剖析同步器

虽然许多同步器(如锁,信号量,阻塞队列等)功能上各不相同,但它们的内部设计上却差别不大。换句话说,它们内部的的基础部分是相同(或相似)的。了解这些基础部件能在设计同步器的时候给我们大大的帮助。这就是本文要细说的内容。注:本文的内容是哥本哈根信息技术大学一个由Jakob Jenkov,Toke Johansen和Lars Bjørn参与的M.Sc.学生项目的部分成果。在此项目期间我们咨询Do

2017-10-27 12:42:05 870

转载 Java并发编程之CAS

CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。这听起来可能有一点复杂但是实际上你理解之后发现很简单,接下来,让我们跟深入的了解一下这项技术。CAS的使用场景在程序和算法中一个经常出现的模式就是“check

2017-10-27 12:41:00 925

转载 线程池

线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用。因为每启动一个新线程都会有相应的性能开销,每个线程都需要给栈分配一些内存等等。我们可以把并发执行的任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程。只要池里有空闲的线程,任务就会分配给一个线程执行。在线程池的内部,任务被插入一个阻塞队列(Blocking Queue ),线程池里的线程会去取

2017-10-27 12:39:19 556

转载 阻塞队列

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列,下图展示了如何通过阻塞队列来合作:

2017-10-27 12:17:02 743

转载 信号量

Semaphore(信号量) 是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失(译者注:下文会具体介绍),或者像锁一样用于保护一个关键区域。自从5.0开始,jdk在java.util.concurrent包里提供了Semaphore 的官方实现,因此大家不需要自己去实现Semaphore。但是还是很有必要去熟悉如何使用Semaphore及其背后的原理本文的涉及的主题如下

2017-10-27 12:16:15 859

转载 重入锁死

重入锁死与死锁和嵌套管程锁死非常相似。锁和读写锁两篇文章中都有涉及到重入锁死的问题。当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死。可重入的意思是线程可以重复获得它已经持有的锁。Java的synchronized块是可重入的。因此下面的代码是没问题的:(译者注:这里提到的锁都是指的不可重入的锁实现,并不是Java类库中的Lock与ReadWriteLock类)

2017-10-27 12:15:10 4908

转载 Java中的读/写锁

相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(译者注:也就是说:读-读能共存,读-写不能共存,写-写不能共存)。

2017-10-27 12:13:15 602

转载 Java中的锁

锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字(译者注:这说的是Java 5之前的情况)。自Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现,

2017-10-27 12:11:12 866

转载 Slipped Conditions

所谓Slipped conditions,就是说, 从一个线程检查某一特定条件到该线程操作此条件期间,这个条件已经被其它线程改变,导致第一个线程在该条件上执行了错误的操作。这里有一个简单的例子:public class Lock { private boolean isLocked = true; public void lock(){ synchronize

2017-10-27 12:09:58 681

转载 嵌套管程锁死

嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景:线程1获得A对象的锁。线程1获得对象B的锁(同时持有对象A的锁)。线程1决定等待另一个线程的信号再继续。线程1调用B.wait(),从而释放了B对象上的锁,但仍然持有对象A的锁。线程2需要同时持有对象A和对象B的锁,才能向线程1发信号。线程2无法获得对象A上的锁,因为对象A上的锁当前正被线程1持有。线程2一直被阻塞,等待线程

2017-10-27 12:08:10 979

转载 饥饿和公平

如果一个线程因为CPU时间全部被其他线程抢走而得不到CPU运行时间,这种状态被称之为“饥饿”。而该线程被“饥饿致死”正是因为它得不到CPU运行时间的机会。解决饥饿的方案被称之为“公平性” – 即所有线程均能公平地获得运行机会。 下面是本文讨论的主题:1. Java中导致饥饿的原因:高优先级线程吞噬所有的低优先级线程的CPU时间。线程被永久堵塞在一个等待进入同步块的状态。

2017-10-27 12:07:15 827

转载 避免死锁

在有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术:加锁顺序加锁时限死锁检测加锁顺序当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。看下面这个例子:Thread 1: lock A lock BThread 2: wait for A

2017-10-27 12:05:06 9830

转载 死锁

死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生了。线程1永远得不到B,线程2也永远得不到A,并且它们永远也不会知道发生了这样的事情。为了得到彼此的对象(A和B),它们将永远阻塞下去。这种情况就是一个死锁。

2017-10-27 12:04:00 1454

转载 《Java并发性和多线程介绍》-Java TheadLocal

Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。1、创建一个ThreadLocal对象2、访问ThreadLocal对象3、ThreadLocal泛型4、初始化ThreadL

2017-10-27 12:02:25 494

转载 线程通信

线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。例如,线程B可以等待线程A的一个信号,这个信号会通知线程B数据已经准备好了。本文将讲解以下几个JAVA线程间通信的主题:1、通过共享对象通信  2、忙等待3、wait(),notify()和notifyAll()4、丢失的信号5、假唤醒6、多线程等待相同信号7、不要

2017-10-27 11:59:45 658

转载 Java同步块

Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容:Java同步关键字(synchronzied)实例方法同步静态方法同步实例方法中同步块静态方法中同步块Java同步示例Java 同步关键字(synchronized)Java中的同步块用synchronized标记。同步块在Java中

2017-10-27 11:31:38 691

转载 java内存模型

Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,

2017-10-27 11:30:03 654

转载 线程安全及不可变性

当多个线程同时访问同一个资源,并且其中的一个或者多个线程对这个资源进行了写操作,才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。我们可以通过创建不可变的共享对象来保证对象在线程间共享时不会被修改,从而实现线程安全。如下示例:01public class ImmutableValue{02

2017-10-27 10:07:53 948

转载 线程安全与共享资源

允许被多个线程同时执行的代码称作线程安全的代码。线程安全的代码不包含竞态条件。当多个线程同时更新共享资源时会引发竞态条件。因此,了解Java线程执行时共享了什么资源很重要。局部变量局部变量存储在线程自己的栈中。也就是说,局部变量永远也不会被多个线程共享。所以,基础类型的局部变量是线程安全的。下面是基础类型的局部变量的一个例子:public void someMethod

2017-10-27 10:06:50 993

转载 竞态条件与临界区

在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件。实际上,这些问题只有在一或多个线程向这些资源做了写操作时才有可能发生,只要资源没有发生变化,多个线程读取相同的资源就是安全的。多线程同时执行下面的代码可能会出错:1public c

2017-10-27 10:05:51 835

转载 如何创建并运行java线程

Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。 可以用如下方式用java中创建一个线程:Tread thread = new Thread();执行该线程可以调用该线程的start()方法:thread.start();在上面的例子中,我们并没有为线程编写运行代码,因此调用该方法后线程就终止了。编写线程运行时

2017-10-27 10:04:40 898

转载 并发编程模型

并发系统可以采用多种并发编程模型来实现。并发模型指定了系统中的线程如何通过协作来完成分配给它们的作业。不同的并发模型采用不同的方式拆分作业,同时线程间的协作和交互方式也不相同。这篇并发模型教程将会较深入地介绍目前(2015年,本文撰写时间)比较流行的几种并发模型。并发模型与分布式系统之间的相似性本文所描述的并发模型类似于分布式系统中使用的很多体系结构。在并发系统中线程之间可以相互通

2017-10-27 10:03:17 818

转载 多线程的代价

从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码

2017-10-27 10:01:36 6191

深入理解Java虚拟机第一版和第二版

深入理解Java虚拟机第一版和第二版 pdf扫描版本,两个版本

2018-03-15

modbus tcp 客户端和服务端下载

modbus tcp 客户端和服务端下载 modbus tcp 客户端和服务端下载

2017-10-12

TC3培训教材V2.1.pdf

TC3培训教材V2.1.pdf

2017-10-10

倍福点到点轴定位系统培训V3.pdf

倍福点到点轴定位系统培训V3.pdf

2017-10-10

TwinCAT2.0从入门到精通

TwinCAT2.0从入门到精通

2017-10-10

opencv 数字识别

用来对印刷体数字识别

2017-08-27

获取163邮箱的邮件 并下载附件

直接填写邮箱账号密码就可以用

2016-04-28

javax.mail-1.4.4.jar

2016-03-13

opencv数字识别

opencv数字识别

2016-03-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除