try

Android socket通信

丶灬走出姿态 提交于 2019-12-19 06:29:58
/** * 客户端 */ public final class SubsetSocket { private static SubsetSocket instance; private StringBuffer stringBuffer = new StringBuffer(); private SubsetSocket() { } public static SubsetSocket getInstance() { if (instance == null) { synchronized (SubsetSocket.class) { if (instance == null) { instance = new SubsetSocket(); instance.connect(); } } } return instance; } private Vector<String> queue = new Vector<>(); private ExecutorService singleSendDataThread = Executors.newSingleThreadExecutor(); private ExecutorService singleConnectThread = Executors.newSingleThreadExecutor(); private boolean

Android--数据持久化之SQLite

ε祈祈猫儿з 提交于 2019-12-19 04:56:40
前言   对于一个应用程序而言,数据持久化是必不可少的,Android程序也不例外。这篇博客将介绍Android中关于SQLite的使用,SQLite是一种嵌入式的数据库引擎,专门适用于资源有限的设备上进行适量的数据存储,而Android就全面支持标准的SQLite数据库。在本片博客中,将说明SQLite数据库的创建以及维护,还有使用SQLite执行CRUD的两种方式,以及SQLite中事务的使用,最后都会使用示例讲解博客中所提到的概念性的内容。 SQLite   Android对SQLite数据库,提供了完全的支持,而所有创建的SQLite数据库,仅限于当前应用访问,如果其他应用需要访问,则必须提供的Content Provider的支持,并且SQLite数据库会随着Android应用的卸载而被删除。SQLite是一个嵌入式的数据库引擎,最后是以文件的形式保存数据的。从本质上来看,SQLite的操作方式只是一种更为便捷的文件操作,当应用程序创建或打开一个SQLite数据库时,其实只是打开一个文件准备读写。因为SQLite仅适用于资源有限的小型设备,所以本身就不应该把大量数据存储在设备的SQLite数据库里,SQLite只适合存储一些小型的数据。   为了使SQLite和其他数据库间的兼容性最大化,SQLite支持对列上类型进行“类型近似”

Java异常处理机制以及try-catch-finally-return执行顺序

左心房为你撑大大i 提交于 2019-12-19 03:52:35
一,简单描述: 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述。 二,JAVA中用2种方法处理异常:   1.在发生异常的地方直接处理;   2.将异常抛给调用者,让调用者处理。 三,JAVA异常可分为3种:   (1)检查性异常:java.lang.Exception   (2)运行期异常:java.lang.RuntimeException   (3)错误:java.lang.Error   顶层是java.lang.Throwable类,检查性异常,运行期异常,错误都是这个类的子孙类。   java.lang.Exception和java.lang.Error继承自java.lang.Throwable,而java.lang.RuntimeException继承自java.lang.Exception. 检查性异常------程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。   运行期异常------这意味着程序存在bug,如数组越界

Java 异常知识点整理

牧云@^-^@ 提交于 2019-12-19 02:04:50
异常知识点整理 1. 异常和其用法 1.1 异常机制 2. Throwable和其子类 2.1 Error和Exception 2.2 检查型异常和非检查型异常 2.3 常见的Exception 3. 如何自定义异常 4. 面对异常,如何处理 参考材料 1. 异常和其用法 异常 :当程序在正常运作的过程中,出现的阻碍程序正常执行的事件。比如说我们取一个值结果发现这个值为空,要找某个类结果这个类不存在,这些就都是异常。 异常机制 :Java所提供的有关异常的机制。当程序出现这种错误事件时,能够让程序以其他方式继续运作的机制。 1.1 异常机制 Java的异常机制其实就是我们熟悉的try/catch的相关内容,一般写法如下: try/catch机制 //用法1:try/catch机制 try { //要处理的内容 . . . . . . . . . } catch ( AException e ) { //遇到A类型错误时的备用方案 . . . . . . . . } catch ( BException e ) { //遇到B类型错误时的备用方案 . . . . . . . . } catch ( CException e ) { //遇到C类型错误时的备用方案 . . . . . . . . } finally { //最后要做出的处理 . . . . . . . . } try

深入理解 MyBatis 启动流程

此生再无相见时 提交于 2019-12-19 01:40:11
环境简介与入口 记录一下尝试阅读Mybatis源码的过程,这篇笔记是我一边读,一遍记录下来的,虽然内容也不多,对Mybatis整体的架构体系也没有摸的很清楚,起码也能把这个过程整理下来,这也是我比较喜欢的一种学习方式吧 单独Mybatis框架搭建的环境,没有和其他框架整合 入口点的源码如下: @Test public void test01() { try { this.resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2. 创建SqlSessionFactory工厂 this.factory = new SqlSessionFactoryBuilder().build(resourceAsStream); // 3. 创建sqlSession // todo 怎么理解这个sqlSession? 首先它是线程级别的,线程不安全, 其次它里面封装了大量的CRUD的方法 this.sqlSession = factory.openSession(); IUserDao mapper = this.sqlSession.getMapper(IUserDao.class); List<User> all = mapper.findAll(); for (User user : all) {

IO概述、异常、File文件类_DAY19

自古美人都是妖i 提交于 2019-12-19 01:24:13
IO概述: 操作数据的工具 IO流,即数据流,数据像水流一样通过IO工具进行传输。 程序 <IO> 硬盘 绝对路径与相对路径 1:异常(理解) (1)就是程序的非正常情况。 异常相关操作: 创建异常对象(JDK已定义的异常会自动创建对象,自定义异常需要手动创建) 抛出异常(JDK已有定义的异常会自动抛出异常,自定义异常需要手动抛出) 处理异常: 程序员在有异常抛出时,异常的处理方法有两种:(1)将异常捕获并处理(2)声明抛出异常 (2)异常的继承体系结构: Throwable: |--Error 严重的问题,不需要处理的。 |--Exception 非RuntimeException必须进行处理。两种方案,点击鼠标即可。 |--RuntimeException 运行时期异常,需要修正代码。 (3)jvm的默认处理方式: 默认情况下,jvm会采用默认处理方案: 把异常的全路径名称,原因,及位置等信息显示出来。 注意: 如果是jvm的默认处理方式,那么,它会在出问题的地方结束。 (4)我们自己的处理方案: A:处理方式之一:使用捕获 try...catch...finally 基本格式: try { 可能有问题的代码; }catch(异常对象) { 对问题的处理; }finally { //一定会执行的代码 释放资源; } 变形格式: try...catch try...catch..

SQL Transcation的一些总结

本秂侑毒 提交于 2019-12-19 01:20:26
1.1.1 摘要 相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生异常和错误它就会触发事务回滚,从而确保了我们数据的一致性和安全性,下面我们将通过分四部分介绍事件(Transcation)。 1.1.2 正文 首先让我们通过一个具体的例子介绍Transcation的使用,假如我们的数据库中有一个表UserInfo,它包含三个字段分别为:UserID(自增)、UserName (nvarchar)和LuckyNumber (tinyint),如下图所示: 图1 UserInfo表 UserInfo表的sql代码如下: -- The definition of UserInfo. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[UserInfo]( [UserID] [int] IDENTITY(1,1) NOT NULL, [UserName] [nvarchar](50) NOT NULL, [LuckyNumber] [tinyint] NOT NULL ) ON [PRIMARY] 接着我们要把数据插入到表UserInfo中,这里使用一个存储过程把数据插入到该表中

Java并发系列[10]----ThreadPoolExecutor源码分析

冷暖自知 提交于 2019-12-19 01:16:27
在日常的开发调试中,我们经常会直接new一个Thread对象来执行某个任务。这种方式在任务数较少的情况下比较简单实用,但是在并发量较大的场景中却有着致命的缺陷。例如在访问量巨大的网站中,如果每个请求都开启一个线程来处理的话,即使是再强大的服务器也支撑不住。一台电脑的CPU资源是有限的,在CPU较为空闲的情况下,新增线程可以提高CPU的利用率,达到提升性能的效果。但是在CPU满载运行的情况下,再继续增加线程不仅不能提升性能,反而因为线程的竞争加大而导致性能下降,甚至导致服务器宕机。因此,在这种情况下我们可以利用线程池来使线程数保持在合理的范围内,使得CPU资源被充分的利用,且避免因过载而导致宕机的危险。在Executors中为我们提供了多种静态工厂方法来创建各种特性的线程池,其中大多数是返回ThreadPoolExecutor对象。因此本篇我们从ThreadPoolExecutor类着手,深入探究线程池的实现机制。 1. 线程池状态和线程数的表示 1 //高3位表示线程池状态, 后29位表示线程个数 2 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); 3 private static final int COUNT_BITS = Integer.SIZE - 3; 4 private

python-----异常处理

梦想与她 提交于 2019-12-18 22:12:48
一、什么是异常 异常就是程序运行时发生的错误信号(在程序出现错误时,会产生一个异常,若程序没有处理它,则会抛出该异常,程序也会随之终止),在python中,错误触发的异常如下: 1 # _*_ encoding:utf-8 _*_ 2 __author__ = 'listen' 3 __date__ = '2018/12/9 8:03' 4 name 分为三个部分:追踪信息traceback 异常类型NameError 异常值:类型后面的信息 错误分为两种: 语法错误和逻辑错误 语法错误 : 1 if 2 print('nihao' 3 def test: 4 pass 5 class Foo 6 pass 本身就有错 逻辑错误: 1 # a=5/0 2 # print(a) #ZeroDivisionError: division by zero 3 4 # for i in 5: 5 # print(i) #TypeError: 'int' object is not iterable 6 7 # aaa #NameError: name 'aaa' is not defined 8 9 # l=[] 10 # l[2] #IndexError: list index out of range 11 12 # dic={} 13 # dic['name'] #KeyError:

Redis分布式锁之实战

拥有回忆 提交于 2019-12-18 21:02:51
一、pom依赖 <dependency> <groupId>tf56.redis</groupId> <artifactId>redis-client</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <artifactId>servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> <exclusion> <artifactId>gson</artifactId> <groupId>com.google.code.gson</groupId> </exclusion> </exclusions> </dependency> <!-- 其他redis依赖 --> 二、MyCacheCloudRedisFactory工具类 package tf56.payOnlineService.util.redis; ​ import com.sohu.tv.builder.ClientBuilder; import com.sohu.tv.cachecloud.client.basic.enums.RedisTypeEnum; ​ import org.apache.commons.lang.StringUtils; import org