try

Spring

青春壹個敷衍的年華 提交于 2020-02-08 16:59:53
Spring 一、概述: 以下概述内容拷自w3cschool Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。 Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。 Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。 两大重点: 1.依赖注入(DI) Spring 最认同的技术是控制反转的依赖注入(DI)模式。控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。 当编写一个复杂的 Java 应用程序时,应用程序类应该尽可能的独立于其他的 Java 类来增加这些类可重用可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。 到底什么是依赖注入

java基础复习-自定义注解4(结合JDBC技术,打造类表映射微框架)

独自空忆成欢 提交于 2020-02-08 13:07:09
写在前面: 1、该框架为自己所写的第一个框架类产品,可能有着许多不足的地方,读者可以到评论区指出。同时,该微框架的源码也会开源至博客中,够后来的学习者借鉴。由于该框架逻辑结构稍些复杂,不可能花大量篇幅去逐一行代码的讲解,本文后半部分会贴出框架源代码,源代码中有着大量的注释,学习者若有看不懂的地方可以在博客后面留言。 2、该框架称之为微框架,在于其实现的功能简单,帮助开发者自动的建库建表,拜托对数据库操作的烦恼。众所周知,在javaee流行框架中mybatis的逆向工程生成的通用Mapper可以让开发者拜托对数据库增删改查语句的编写,but,开发者还需要自己对数据库进行建库建表,因此,也要求开发者掌握相应的数据库知识。使用本框架,框架将自动的为开发者建库建表,配合mybatis框架的通用mapper将实现开发者全程无需自己对数据库直接操作的开发体验。 3、开源地址 https://gitee.com/xue-guo-peng/MyOrm 1、框架的使用 1.1、导入框架jar包,并导入jdbc驱动,添加为项目库。 框架jar包下载地址: https://gitee.com/xue-guo-peng/MyOrm/releases 1.2、导入后的框架目录结构为: 1.3、将数据源的连接信息放到写到一个database.properties文件中,并放在src目录下: 其中的数据库的名字

java输入,输出流如何无需finally关闭资源

守給你的承諾、 提交于 2020-02-08 12:58:34
例子:往一个文件内写东西 以前的写法,总是在流处理的最后都需要finally关闭资源,这样多了就会觉得很麻烦 private static void oldtest(String filePath) throws FileNotFoundException { OutputStream out = new FileOutputStream(filePath); try { out.write((filePath+"我就是测试下用Java写点东西进来").getBytes()); }catch (Exception e){ e.printStackTrace(); }finally { try { out.close(); }catch (Exception e){ e.printStackTrace(); } } }   Java7 里的try...catch...resource 写法可以流会自动回收,只需在try()括号里写流对象,这样就不用老是finally了 //自动关闭资源写法 private static void newtest(String filePath) throws FileNotFoundException { try(OutputStream out = new FileOutputStream(filePath);){ out.write("用try.

201771010123汪慧和《面向对象程序设计Java》第十六周实验总结

江枫思渺然 提交于 2020-02-08 03:19:54
一、理论部分 1、程序与进程的概念 ‐程序是一段静态的代码,它是应用程序执行的蓝本。 ‐进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程。 ‐操作系统为每个进程分配一段独立的内存空间和系统资源,包括:代码数据以及堆栈等资源。每 一个进程的内部数据和状态都是完全独立的。 ‐多任务操作系统中,进程切换对CPU资源消耗较大。 2、多线程的概念 ‐多线程是进程执行过程中产生的多条执行线索。 ‐线程是比进程执行更小的单位。 ‐线程不能独立存在,必须存在于进程中,同一进程的各线程间共享进程空间的数据。 ‐每个线程有它自身的产生、存在和消亡的过程, 是一个动态的概念。 ‐多线程意味着一个程序的多行语句可以看上去几 乎在同一时间内同时运行。 ‐线程创建、销毁和切换的负荷远小于进程,又称为轻量级进程(lightweight process)。 3、Java实现多线程有两种途径: ‐创建Thread类的子类 ‐在程序中定义实现Runnable接口的类 4、用Thread类子类创建线程 首先需从Thread类派生出一个子类,在该子类中重写run()方法。 class hand extends Thread { public void run() {……} } 5、用Thread类的子类创建多线程的关键性操作 –定义Thread类的子类并实现用户线程操作,即 run()方法的实现

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

半城伤御伤魂 提交于 2020-02-08 00:16:41
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 若有不正之处请多多谅解,并欢迎批评指正。 一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch类只提供了一个构造器: public CountDownLatch(int count) { }; //参数count为计数值 然后下面这3个方法是CountDownLatch类中最重要的方法: public void await() throws InterruptedException { }; //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 public boolean await(long timeout, TimeUnit unit) throws InterruptedException

C++异常机制的分析

岁酱吖の 提交于 2020-02-07 22:02:39
找了很多资料发现这一篇文章写的最好,转载以下: https://blog.csdn.net/cqu20093154/article/details/44020043 ................................................................................................................................................................................... 进程和线程的概念相信各位看官早已耳熟能详。在这里,我只想带大家回忆几点重要概念: 一个进程中可以同时包含多个线程。 我们通常认为线程是操作系统可识别的最小并发执行和调度单位(不要跟俺说还有 Green Thread 或者 Fiber,OS Kernel 不认识也不参与这些物件的调度)。 同一进程中的多个线程共享代码段(代码和常量)、数据段(静态和全局变量)和扩展段(堆存储),但是每个线程有自己的栈段。栈段又叫运行时栈,用来存放所有局部变量和临时变量(参数、返回值、临时构造的变量等)。这一条对下文中的某些概念来说是非常重要的 。但是请注意,这里提到的各个“段”都是逻辑上的说法,在物理上某些硬件架构或者操作系统可能不使用段式存储。不过没关系

RSA签名和验签Util

我怕爱的太早我们不能终老 提交于 2020-02-07 15:39:30
目录 1、DigitalSign类 2、CryptException异常类 3、加签示例 4、验签示例 1、DigitalSign类 import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.security.KeyStore; import java.security.Signature; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.security.interfaces.RSAPrivateCrtKey; import java.security.interfaces.RSAPublicKey; import java.util.Enumeration; import

python的异常

ε祈祈猫儿з 提交于 2020-02-07 12:30:06
异常 了解异常 捕获异常 异常的else 异常的finally 异常的传递 自定义异常 了解异常 当检测到一个错误时,解释器就无法继续进行了,反而出现一些错误的提示,这就是所谓的异常。 例如以r方式打开一个不存在的文件 open ( 'text.txt' , 'r' ) 二异常的写法 2.1语法 try : 可能发生的错误代码 except : 如果出现异常执行的代码 2.2体验 需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开。 try : open ( 'text.txt' , 'r' ) except : open ( 'text.txt' , 'w' ) 2.3捕获指定异常 2.3.1语法 try : 可能发生错误的代码 except 异常类型 : 如果捕获到该异常类型执行的代码 2.3.2体验 """ Traceback (most recent call last): File "E:/pythonProject/code/异常/2exception.py", line 1, in <module> print(num) NameError: name 'num' is not defined """ try : print ( num ) except NameError : print ( '有错误' ) """ 有错误 """ 注意:

分布式事务解决方案之TCC

若如初见. 提交于 2020-02-07 08:57:13
1.什么是TCC TCC 是 Try 、 Confirm 、 Cancel 三个词语的缩写,TCC要求每个分支事务实现三个操作 : 预处理Try 、 确认Confirm 、 撤销Cancel 。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的操作既回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel操作若执行失败, TM 会进行重试。 分支事务失败的情况 : TCC分为三个阶段 : Try阶段是做业务检查(一致性)及资源预留(隔离),此阶段仅是一个初步操作,它和后续的Confirm一起才能真正构成一个完整的业务逻辑。 Confirm阶段是做确认提交,Try阶段所有分支事务执行成功后开始执行Confirm。通常情况下,采用TCC则认为Confirm阶段是不会出错的。即 :只要Try成功,Confirm一定成功。若Confirm阶段真的出错了,需引入重试机制或人工处理。 Cancel阶段是在业务执行错误需要回滚的状态下执行分支事务的业务取消,预留资源释放。通常情况下,采用TCC则认为Cancel阶段也是一定成功的。若Cancel阶段真的出错了

12:I/O流

柔情痞子 提交于 2020-02-07 04:39:51
1.流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。流提供了一条通道程序,可以使用次通道吧源中的字节序列送到目的地。 2.输入流:程序从执行源的输入流中读取源中的数据,源可以是文件,网络,压缩包或其他数据源。 read()方法:从输入流中读取数据的下一个字节。返回0-255范围内的int字节值,如果到达流末尾而没有可用的字节,则返回值位-1。 read(byte[] b):从输入流中读入一定长度的字节,并以证书的形式返回字节数。 mark(int realimit)方法:在输入流的当前位置放置一个标记,readlimit 参数告知此输入流在标记位置失效之前允许读取的字节数。 reset()方法:将输入指针返回到当前所做的标记处 skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。 markSupported()方法:如果当前流支持mark()/reset()操作就返回true。 colse方法:关闭此输入流并释放与该流关联的所有系统资源。 3.输出流:输出流的执行是数据要达到的目的地,程序通过向输出流中写入数据吧信息传递到目的地。输出流的目标可以是文件,网络,压缩包或其他数据源。 write(int b)方法:将指定的字节写入此输出流。 write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。 write(byte[