try

基于任务的异步编程

我是研究僧i 提交于 2020-02-29 04:41:08
博客迁移 记录《Effective C#》学习过程。 任务运行的几种方法 //1.new方式实例化一个Task,需要通过Start方法启动 Task task = new Task(() => { Console.WriteLine($"task1的线程ID为{Thread.CurrentThread.ManagedThreadId}"); }); task.Start(); //2.Task.Factory.StartNew(Action action)创建和启动一个Task Task task2 = Task.Factory.StartNew(() => { Console.WriteLine($"task2的线程ID为{Thread.CurrentThread.ManagedThreadId}"); }); //3.Task.Run(Action action)将任务放在线程池队列,返回并启动一个Task Task task3 = Task.Run(() => { Console.WriteLine($"task3的线程ID为{ Thread.CurrentThread.ManagedThreadId}"); }); View Code 使用异步方法执行异步工作 对于调用异步方法的主调方法来说,只要异步方法已经返回,这里返回的是Task对象,它就可以继续往下执行。

Java 异常

天大地大妈咪最大 提交于 2020-02-28 23:02:09
throw 和 throws 的区别? throws 是用来声明一个方法可能抛出的所有异常信息, throws 是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而 throw 则是指抛出的一个具体的异常类型。 final 、 finally 、 finalize 有什么区别? final 可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。 finally 一般作用在 try-catch 代码块中,在处理异常的时候,通常我们将一定要执行的代码方法 finally 代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。 finalize 是一个方法,属于 Object 类的一个方法,而 Object 类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用 System 的 gc() 方法的时候,由垃圾回收器调用 finalize() ,回收垃圾。 try-catch-finally 中哪个部分可以省略? catch 可以省略 原因: 更为严格的说法其实是: try 只适合处理运行时异常, try+catch 适合处理运行时 异常+普通异常 。也就是说,如果你只用 try 去处理普通异常却不加以 catch 处理,编译是通不过的,因为编译器硬性规定

Java学习笔记(十三)面向对象---异常

一曲冷凌霜 提交于 2020-02-28 22:50:10
概述 对异常的理解 程序在运行过程中出现不正常情况。是对问题的描述,将问题进行对象的封装。 异常的由来 问题也是现实生活中一个具体的事物,也可以通过Java的类的形式进行描述,并封装成对象。 对于问题的划分 一种是严重的问题,一种是非严重的问题。 对于严重的:Java通过Error类进行描述。 对于Error一般不编写针对性的代码对其进行处理。 对于非严重的:Java通过Exception类进行描述。 对于Exception可以使用针对性的处理方式进行处理。 无论Error还是Exception都具有一些共性内容。 比如:不正常情况的信息,引发原因。 异常体系 Throwable |--Error |--Exception |--RuntimeException 异常体系的特点: 异常体系中的所有类以及被建立的对象都具备可抛性。 异常的处理 代码语句格式 try { 需要被检测的代码 } catch(异常类 变量) { 处理异常的代码(处理方式) } finally { 一定会执行的语句; } 对异常的常见操作方法 String getMessage(); String toString(); void printStackTrace(); class Demo { int div(int x,int y) { return x/y; } } public class

DK1.5-JDK11各个新特性

◇◆丶佛笑我妖孽 提交于 2020-02-28 19:48:32
摘要: 参考文献: https://blog.csdn.net/lsxf_xin/article/details/79712537 JDK各个版本的新特性 要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。以下介绍一下JDK1.5版本到JDK1.7版本的特性及JDK1.8部分特性。 JDK1.5新特性 1:自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。 自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。 自动拆箱,只需将该对象值赋给一个基本类型即可。 java——类的包装器 类型包装器有:Double,Float,Long,Integer,Short,Character和Boolean 2:枚举 把集合里的对象元素一个一个提取出来。枚举类型使代码更具可读性,理解清晰,易于维护。枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。 简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。 复杂用法

Redis整理(3) >> Spring boot 集成Redis

妖精的绣舞 提交于 2020-02-28 18:49:38
接Redis整理(2),(3) 第一步:配置项目环境 1. Spring-boot maven 加入下面俩个依赖 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-data-redis </ artifactId > </ dependency > < dependency > < groupId > org.apache.commons </ groupId > < artifactId > commons-pool2 </ artifactId > < version > 2.4.2 </ version > </ dependency > 2. yml 配置文件中新增Redis配置信息 3. 项目中增加RedisConfig @RestController @RequestMapping("/test") public class TestController { @Autowired private RedisUtil redisUtil; @RequestMapping("/addCache") public void addCache() { redisUtil.set("key1", UUID.randomUUID()

Preconditions优雅的检验参数

拜拜、爱过 提交于 2020-02-28 13:50:50
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示: import org.junit.Test;public class PreconditionsTest { @Test public void Preconditions() throws Exception { getPerson(8,"peida"); getPerson(-9,"peida"); getPerson(8,""); getPerson(8,null); } public static void getPerson(int age,String neme)throws Exception{ if(age>0&&neme!=null&&neme.isEmpty()!=true){ System.out.println("a person age:"+age+",neme:"+neme); }else{ System.out.println("参数输入有误!"); } } }   说明:参数验证

python3_异常 && pass语句

不问归期 提交于 2020-02-28 13:38:20
使用异常对象来管理程序执行期间发生的错误。 异常是try-except代码块处理的。 1.前言 找到所需的异常 print ( 5 / 0 ) 异常语法解释: 将容易出错的代码放在try语句中运行, 如果没有报错:直接跳过except语句下的内容,运行其他剩余代码。 如果报错:将挨个查找except后面对应的错误类型,1.找到对应的错误,执行该错误下的代码块。运行剩余代码块。2.找不到对应的错误,报错,不运行剩余代码块。 例子: try : print ( 5 / 0 ) except ZeroDivisionError : print ( "除数不能为0" ) 2.else代码块: 使用else代码块的作用是只有当语句不报错的时候,才会执行print语句。 如果不使用else语句,print语句在不管报错或不报错都会执行。 try : 要测试的语句 except 异常类型 : 引发异常后的操作 else : 没引发异常时的操作 eg: 1.除数不能为零异常 try : result = 6 / 2 except ZeroDivisionError : print ( "除数不能为o" ) else : print ( result )   #不引发异常时时,才执行。 print ( "程序执行完毕!" ) #不管是否引发异常都会执行。 2.文件找不到异常 try : with

“致命错误:在解开可选值时意外发现nil”是什么意思?

佐手、 提交于 2020-02-28 07:50:30
我的Swift程序因 EXC_BAD_INSTRUCTION 和以下错误而崩溃。 这是什么意思,我该如何解决? 致命错误:解开Optional值时意外发现nil 该帖子旨在收集“意外发现的零”问题的答案,以使它们不会分散且很难找到。 随意添加您自己的答案或 编辑 现有的Wiki答案。 #1楼 这个答案是 社区维基 。 如果您认为它可以做得更好,请随时对其进行 编辑 ! 背景:什么是可选的? 在Swift中, Optional 是一个 泛型类型 ,可以包含一个值(任何类型),或者根本不包含任何值。 在许多其他编程语言中,通常使用特定的“前哨”值来指示 缺少值 。 例如,在Objective-C中, nil ( 空指针 )指示缺少对象。 但这在处理原始类型时变得更加棘手-应该使用 -1 来指示缺少整数,或者可能 INT_MIN 或其他某个整数吗? 如果选择任何特定值表示“无整数”,则意味着它不再可以视为 有效值 。 Swift是一种类型安全的语言,这意味着该语言可帮助您弄清代码可以使用的值的类型。 如果代码的一部分需要一个字符串,则类型安全性可防止您误将其传递给Int。 在Swift中, 任何类型 都可以设为optional 。 可选的值可以从原始类型,任何值 或 特殊值 nil 。 可选用 ? 定义 ? 类型的后缀: var anInt: Int = 42 var

Lock wait timeout exceeded; try restarting transaction

别等时光非礼了梦想. 提交于 2020-02-28 06:03:06
转自 http://blog.itpub.net/12679300/viewspace-1418320/ http://blog.csdn.net/mayor125/article/details/76186661 在管理ORACLE的工作中,经常发现因为锁等待的原因导致应用宕机了。Mysql考虑到自身的性能和架构等因素,InnoDB数据库引擎增加了参数innodb_lock_wait_timeout,避免在资源有限的情况下产生太多的锁等待; 一、innodb_lock_wait_timeout的参数说明 innodb_lock_wait_timeout指的是事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败; 参数的时间单位是秒,最小可设置为1s(一般不会设置得这么小),最大可设置1073741824秒(34年,一条语句锁等待超过30分钟估计业务该有反馈了) 默认安装时这个值是50s(公司的默认参数设置) 二、参数的修改 参数支持范围为Session和Global,且支持动态修改,所以可以通过两种方法修改; 2.1 通过语句修改 set innodb_lock_wait_timeout=100; set global innodb_lock_wait_timeout=100; 注意global的修改对当前线程是不生效的,只有建立新的连接才生效 2.2

android 蓝牙匹配和通信

↘锁芯ラ 提交于 2020-02-28 04:54:49
事先说明: 安卓蓝牙需要定位权限申请,在安卓6.0需要用户手动确认权限后才能使用,各位可以自行查询资料实现,如果嫌麻烦,可以用第三方bmob集成好的工具类进行实现,详细可以看http://blog.csdn.net/qq_30379689/article/details/52223244 蓝牙连接过程: 1、查询用户是否开启蓝牙。 2、搜索附近的可用的蓝牙。 3、进行蓝牙配对。 4、进行蓝牙连接。 5、获取输入流和输出流。 6、发送消息。 实现需要的权限:由于安卓4.x以上的版本使用蓝牙,需要开启定位权限才能搜索到附近的蓝牙设备 [Java] 查看源文件 复制代码 <uses-permission android:name="android.permission.bluetooth"/> <uses-permission android:name="android.permission.bluetooth_admin"/> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.access_coarse_location" /> 服务端 实现思路: 1、拿到本地蓝牙设备。 2