throws

设计模式之代理模式(Java)

心不动则不痛 提交于 2019-12-04 04:05:11
简介 代理模式出场率真的相当的高,几乎所有框架中无一例外都用到了代理模式,所以了解一下收益还是很高的。 代理模式是什么 如果用一句话来描述代理模式: 代理模式就是为其他对象提供一种代理以控制对被代理对象的访问,也就是我们常说的中介 在开发以及生活中经常听到正向代理,反向代理这样的词,举例说明 正向代理 由于网络原因我们访问不了谷歌,这时候我们就需要找个梯子,替我们去访问谷歌,并且把我们需要的信息返回,这个梯子代理 反向代理 作为服务端为了安全,我们不想把实际服务器的信息暴露出去,已防止不法分子的攻击,这时候我们我需要一个代理统一接受用户的请求,并且帮助用户请求后端用户返回给用户 代理模式的作用 一言以蔽之就是解耦合,创建一个没法访问对象的代理供我们使用,同时我们又可以在代理对象中加入一些补充的功能,这样完全不会破坏封装,满足开闭原则 UML 动物有一个睡觉行为,大多数人都没法见到北极熊(RealSubject),我们只能通过动物世界节目组的摄影师(Proxy)去北极拍摄,从传回的画面中我们看到一只北极熊在洞里睡觉,并且画面上还加上了字幕“快看这里有只冬眠的北极熊!” 实践 代理模式的实现有多种方式主要分为静态代理和动态代理 静态代理 Subject public interface LifeService { String sleep(); } RealSubject public

SpringSecurity笔记2-自定义认证

无人久伴 提交于 2019-12-04 01:43:25
自定义用户 说明 用户名和密码一般存储于数据库中,表单输入的用户名和密码与数据库查询出来的用户名和密码进行比对 以下例子为SpringSecurity5.x 实现UserDetailsService接口 @Service public class UserService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //此处根据用户名在数据库中查找,这里不再查找,直接返回一个org.springframework.security.core.userdetails.User对象(如果是自定义的User类,需要实现UserDetails接口) return new User(username,new BCryptPasswordEncoder().encode("123456"), AuthorityUtils.commaSeparatedStringToAuthorityList("admin")); } } AuthorityUtils.commaSeparatedStringToAuthorityList() 方法模拟一个admin的权限

Should I put throws IllegalArgumentException at the function?

天涯浪子 提交于 2019-12-03 23:30:26
I'm building a scientific software with lots of calculations and of course arguments can have wrong lengths etc... So I used IllegalArgumentException class as it seemed right name for the issue, but should I put the throws IllegalArgumentException at the function definition ? I am asking this because after I wrote it, the Eclipse Editor didn't ask me to surround the function with try and catch. I thought this is how try and catch were enforced. I've read the Exception handling tutorial at Java.com yet I'm not sure I understood the part regarding my question right though. ILMTitan

Java异常学习

霸气de小男生 提交于 2019-12-03 21:22:18
异常体系结构 异常的概述和分类 异常的基类: Throwable 严重问题: Error 不予处理,因为这种问题一般是很严重的问题,比如: 内存溢出 非严重问题: Exception 编译时异常: 非RuntimeException 运行时异常: RuntimeException Throwable的几个常见方法 Throwable的几个常见方法 1:getMessage(): 获取异常信息,返回字符串。 2:toString(): 获取异常类名和异常信息,返回字符串。 3:printStackTrace(): 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。 throws的方式处理异常 1.throws的方式处理异常 定义功能方法时,需要把出现的问题暴露出来让调用者去处理。 那么就通过throws在方法上标识。 2.案例演示 举例分别演示编译时异常和运行时异常的抛出 throw的概述以及和throws的区别 throw的概述: 在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。 throws和throw的区别 1:throws 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表示抛出异常,由该方法的调用者来处理 throws表示出现异常的一种可能性,并不一定会发生这些异常 2:throw 用在方法体内

不能抛出更大的异常(案例)

帅比萌擦擦* 提交于 2019-12-03 17:31:40
1.写一个父类Dad类 import java.io.IOException; public class Dad { public void show()throws IOException { // Dad类的show()方法,抛出一个 IOException异常 System.out.println("Dad类中的show()方法"); } } 2.观察子类Son类的代码 2.1 import java.io.IOException; public class Son extends Dad { @Override public void show()throws Exception { // 报错 子类重写父类的show()方法的同时,抛出了一个Exception类型的异常 System.out.println("Son类重写的方法"); } } 2.2 import java.io.IOException; public class Son extends Dad { @Override public void show ()throws IOException { System.out.println("Son类重写的方法"); // 通过,子类重写show()方法,且抛出了一个 和 父类一致的IOException异常 } } 2.3 public class Son

servlet线程安全问题

余生颓废 提交于 2019-12-03 13:32:57
1、 像这样的话,对于打印出来的i每次都是1,因为每一次调用这个函数都会先对i初始化之后再打印 像这样的话i每次打印结果就是1,2,3...递增的了,因为这个是覆盖HttpServlet而实现的类,而且servlet类只会创建一个对象。那么可以说每次访问都用的同一个对象,而且i只有刚创建对象的时候才初始化。所以这个时候就是这个结果· 此外,线程安全问题就是对一些类的静态变量(static修饰),因为每一个类刚开始使用之前就会被加载到内存中,之后如果程序不结束类就一直在内存中,那么每一次创建对象都是都不会重新加载类。那么static变量也是只会执行初始化代码一次 2、 正确的解决方法: 这样把有线程安全的代码放到synchronized这个里面就可以了,但是这样的话此web资源只能单线程访问 抛出异常: 一下来源于: 脚本之家 1 //1、系统自动抛出异常 2 public static void main(String[] args) { 3 int a = 5; 4 int b = 0; 5 System.out.println( a / b); 6 } 7 //运行结果,系统会自动抛出ArithmeticException异常Exception in thread "main" java.lang.ArithmeticException: / by zero 8 // at

Is there a throws keyword in C# like in Java? [duplicate]

纵饮孤独 提交于 2019-12-03 10:21:02
问题 This question already has answers here : Closed 8 years ago . Possible Duplicate: how to use Java-style throws keyword in C#? i have a function where an exception occurs say for example private void functionName() throws Exception { // some code that might throw an exception } thanks! 回答1: No, because there are no checked exceptions in C# If you are trying to document exceptions that are thrown, use the standard xml documentation /// <exception cref="InvalidOperationException">Why it's thrown

第十周课程总结

半城伤御伤魂 提交于 2019-12-03 10:15:19
一、io流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流 二、inputstream的基本方法: int read() throws ioexception 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾 void close() throws ioexception 关闭流释放内存资源 long skip(long n) throws ioexception 跳过n个字节不读 outputstream的基本方法: void write(int b) throws ioexception 向输出流写入一个字节数据 void flush() throws ioexception 将输出流中缓冲的数据全部写出到目的地 三、io流的四大抽象类: 字符流: reader writer 字节流:inputstream(读数据) outputstream(写数据) 四、writer的基本方法 : void write(int c) throws ioexception 向输出流写入一个字符数据 void write(string str) throws ioexception 将一个字符串中的字符写入到输出流 void write(string str,int offset,int length)

第十周课程总结

Deadly 提交于 2019-12-03 10:12:17
一.字节流与字符流基本操作 在java.io 包中流的操作主要有字节 流和字符流两大类,两类都有输入和输出操作。 在字节流中输出数据主要使用 OutputStream类完成,输入使的是InputStream类, 在字符流中输出主要是使用Writer类完成,输入主要是使用Reader类完成。 在 Java 中 IO 操作也是有相应步骤的,以文件的操作为例,主要的操作流程如下: (1)使用File类打开一个文件。 (2)通过字节流或字符流的子类指定输出的位置。 (3)进行读/写操作。 (4)关闭输入/输出。 1.字节流 字节流主要是操作byte类型数据, 以byte数组为准,主要操作类就是 OutpuStream 类和 InputStream类。 1.字节输出流:OutputStream OutputStream是整个IO包中字节输出流的最大父类,此类的定义如下: public abstract class OutputStream extends Object implements Closeable, Flushable 从以上的定义中可以发现,此类是一个抽象类,如果要想使用此类的话,首先必须通过 子类实例化对象。如果现在要操作的是一个文件,则可以使用FileOutputStream类, 通过向上转型后,可以为OutputStream实例化

第十周课程总结

萝らか妹 提交于 2019-12-03 10:07:42
第十周课程总结 Java I/O: 在IO中涉及的设备文件包括文件、控制台、网络链接等,这其中又根据流的方向可以将两端的设备文件分为数据源对象和接收端对象: 数据源对象:有能力产出数据 接收端对象:有能力接收数据 而IO流实际上屏蔽了在实际设备中的处理数据的细节,这些处理方式也叫通信方式可以包括顺序、随机存取、缓冲、二进制、按字符、按字节、按行等。 一、io流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流 三.字节流与字符流 一.操作主要方法 (1)使用File类打开一个文件 (2)通过字节流或字符流的子类指定输出的位置 (3)进行读/写操作 (4)关闭输入/输出 outputString类常用方法 方法或常量 类型 描述 public void close() throws IOException 普通 关闭输出流 public void flush() throws IOException 普通 刷新缓存区 public void write(byte[] b)throws IOException 普通 将一个byte数组写入数据流 public void write(byte[] b,int off,int len throws) IOException 普通