try

MediaStore.Images.保存图片时生成两张图片的问题 并且在oppo手机上时间是1970-01-01 08:00:00

萝らか妹 提交于 2019-12-25 03:47:39
MediaStore.Images.保存图片时生成两张图片的问题 并且在oppo手机上时间是1970-01-01 08:00:00 正确方式如下 使用方式一 private void saveImage ( String originFilePath ) { File appDir = new File ( Environment . getExternalStorageDirectory ( ) . getPath ( ) + "/leikebaijing/images" ) ; if ( ! appDir . exists ( ) ) appDir . mkdirs ( ) ; String fileName ; long dateTaken = System . currentTimeMillis ( ) ; if ( originFilePath . contains ( "/" ) ) { fileName = originFilePath . substring ( originFilePath . lastIndexOf ( "/" ) + 1 ) ; } else { fileName = dateTaken + "jpg" ; } File file = new File ( appDir , fileName ) ; if ( ! file . exists (

Java编程的逻辑 (71) - 显式锁

依然范特西╮ 提交于 2019-12-25 02:08:46
​ 本系列文章经补充和完善,已修订整理成书《Java编程的逻辑》,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接 : http://item.jd.com/12299018.html 在 66节 ,我们介绍了利用synchronized实现锁,我们提到了synchronized的一些局限性,本节,我们探讨Java并发包中的显式锁,它可以解决synchronized的限制。 Java并发包中的显式锁接口和类位于包java.util.concurrent.locks下,主要接口和类有: 锁接口Lock,主要实现类是ReentrantLock 读写锁接口ReadWriteLock,主要实现类是ReentrantReadWriteLock 本节主要介绍接口Lock和实现类ReentrantLock,关于读写锁,我们后续章节介绍。 接口Lock 显式锁接口Lock的定义为: public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit) throws InterruptedException

Python语言高级特性:上下文管理器 #P005#

一世执手 提交于 2019-12-24 21:24:02
相信大家在编程的时候,经常会遇到这样的场景:先执行一些准备操作,然后执行自己的业务逻辑,等业务逻辑完成以后,再执行一些清理操作。例如,对文件操作,我们需要首先打开文件,然后处理文件内容,最后关闭文件。又如,当多线程程序需要访问临界资源的时候,线程首先需要获取互斥锁,当执行完成并准备退出临界区的时候,需要释放互斥锁。对于这些场景,Python中提供了上下文管理器(Context Manager),可以通过上下文管理器来控制代码块执行前的准备动作以及执行后的收尾动作。 1 上下文管理器的概念 所谓上下文管理器,就是实现了上下文管理协议的类(实现__enter__和__exit__方法)或函数(使用contextmanager装饰器)。为了使用上下文管理器,Python 2.6和Python 3.0引入了一种特殊的语句,即with语句及其可选的as子语句。with语句与上下文管理器一起作协,为Python工程师编程提供了一些便利。 上下文管理器应用于某些特殊的情景之中,典型的应用场景是打开某种资源,对资源进行处理,最后再关闭资源。可以看到,上下文管理器的作用与常见的try/finally语句的作用比较类似,都是用于确保打开的资源无论在何种情况下,都能够及时的关闭。在其他编程语言中,一般使用try/finally语句来完成。在Python中,应该优先使用上下文管理器。因为

Python-异常处理

本小妞迷上赌 提交于 2019-12-24 21:03:14
异常和错误 错误: 开发过程中难免出现错误,而错误分成两种 1、语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2、逻辑错误(逻辑错误) 异常: 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下: python中的异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 触发IndexError l=['egon','aa'] l[3] 触发KeyError dic={'name':'egon'} dic['age'] 触发ValueError s='hello' int(s) 常用异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(的子类) ;代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError

java多线程与并发(基础篇)

孤街醉人 提交于 2019-12-24 19:06:31
一、进程与线程 进程 :是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程 :是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的 资源。 虽然系统是把资源分给进程,但是CPU很特殊,是被分配到线程的,所以线程是CPU分配的基本单位。 二者关系: 一个进程中有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程有自己的程序计数器和栈区域。 程序计数器 :是一块内存区域,用来记录线程当前要执行的指令地址 。 栈 :用于存储该线程的局部变量,这些局部变量是该线程私有的,除此之外还用来存放线程的调用栈祯。 堆 :是一个进程中最大的一块内存,堆是被进程中的所有线程共享的。 方法区 :则用来存放 NM 加载的类、常量及静态变量等信息,也是线程共享的 。 二者区别: 进程 :有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响。 线程 :是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。 1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 2) 线程的划分尺度小于进程,使得多线程程序的并发性高。 3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 4) 每个独立的线程有一个程序运行的入口

python+selenium封装UI自动化框架

血红的双手。 提交于 2019-12-24 12:14:41
seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的时候不需要写程序 4)有日志功能,实现无人值守 5)自动发报告 6)框架中不要有重复的代码,实现高度的封装和复用 推荐使用关键字驱动、混合驱动 为什么要编写程序呢? 通用性的东西满足不了个性化的需求 测试的工具:python+selenium 接口测试用例:excel 一、搭建自动化测试的目录结构 分层如下: 1、Action包: 放置关键字文件 2、Config目录: 所有配置文件,日志的配置文件;把所有的项目相关的配置均放到这里,用python支持较好的配置文件格式ini进行配置。实现配置与代码的分离 3、Projvar包:项目所有的公共变量,如:目录、自定义变量名称; 4、ScreenCapture目录:存放截屏目录,按照年月日小时来建目录; 5、TestData目录:放测试将数据文件,可以把所有的testcase的参数化相关文件放在这里,一般采用xlsx、xml等格式。实现数据与代码分离; 6、TestScript包:测试脚本,主程序 7、Util包:封装的公共的类,包括读取config的类,写log的类,读取excel、xml 的类、生成报告的类(如HTMLTestRunner)、数据库的连接

异常处理之try except

此生再无相见时 提交于 2019-12-24 09:40:02
编程中遇到的错误常常为语法错误和运行错误。 在程序执行时,异常报错可能会中止程序运行,影响输出结果的显示,此时可用try except 语句进行异常处理,将错误直接输出打印出来,而不是报错。 例如: try : print ( 1 / 0 ) except Exception as e : print ( e ) ## 输出结果:division by zero try : print ( a ) except NameError as n : print ( n ) name ## 输出结果: 'a' is not defined 来源: CSDN 作者: 小研一枚 链接: https://blog.csdn.net/qq_35027690/article/details/103673393

【】Python】异常处理try...except、raise

萝らか妹 提交于 2019-12-24 00:22:11
一、try...except 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError 例子: 1 2 3 4 a = 10 b = 0 c = a / b print "done" 运行结果: Traceback (most recent call last): File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in <module> c=a/b ZeroDivisionError: integer division or modulo by zero 我们发现程序因为ZeroDivisionError而中断了,语句print "done" 没有运行。为了处理异常,我们使用try...except,更改代码: 1 2 3 4 5 6 7 8 a = 10 b = 0 try : c = a / b print c except ZeroDivisionError,e: print e.message print "done"    运行结果: integer division or modulo by zero done 这样程序就不会因为异常而中断,从而print "done"语句正常执行。

python之异常

十年热恋 提交于 2019-12-23 21:57:53
一、python的异常类型: https://fishc.com.cn/thread-45814-1-2.html 二、try,except,else,finally a=int('xyz')----------->ValueError: invalid literal for int() with base 10: 'xyz' b=1+'1'---------------->TypeError: unsupported operand type(s) for +: 'int' and 'str' f=open("jj.txt")------->FileNotFoundError: [Errno 2] No such file or directory: 'jj.txt' 以上代码可能执行的方案为: 方案一:try--->except---->finaly 方案二:try--->else----->finally 总之,无论如何都会执行finally!!! 三、raise 来源: CSDN 作者: jiao_mrswang 链接: https://blog.csdn.net/jiao_mrswang/article/details/103667201

python异常处理与导入模块与导入包

拥有回忆 提交于 2019-12-23 19:24:20
一.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,否则程序会 终止执行 。 注: 语法上的错误跟异常处理无关,必须在程序运行前就修正 二.异常处理 捕捉异常可以使用try/except语句。 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。 如果你不想在异常发生时结束你的程序,只需在try里捕获它。 语法: if..else...处理 num1=input('>>: ') #输入一个字符串试试 if num1.isdigit(): int(num1) #我们的正统程序放到了这里,其余的都属于异常处理范畴 elif num1.isspace(): print('输入的是空格,就执行我这里的逻辑') elif len(num1) == 0: print('输入的是空,就执行我这里的逻辑') else: print('其他情情况,执行我这里的逻辑') 1.if判断式的异常处理只能针对某一段代码 ,对于不同的代码段的相同类型的错误你需要写重复的if来进行处理。 2.在你的程序中频繁的写与程序本身无关,与异常处理有关的if,可读性极其的差。 以下为简单的