JAVA
炎炎夏日_123
这个作者很懒,什么都没留下…
展开
-
springAOP的切点标志符
前言:AOP概述AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处转载 2022-06-01 09:09:38 · 198 阅读 · 0 评论 -
链表的反转(借助栈的先进后出特点)
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。public class Solution { public ListNode ReverseList(ListNode head) { Stack<ListNode> stack = new Stack<>(); while(head!=null){ stack.push(head);原创 2022-04-06 13:56:41 · 205 阅读 · 0 评论 -
如何将两个有重复字符在内的字符串合并成一个,并且排序
例如:a=”xyaabbbccccdefww”,b=”xxxxyyyyabklmopqwxy”; longest(a,b) => “abcdefklmonpqwxy” 1.import java.util.TreeSetpublic class TowtoOne{ public static String longest(s1,s2){ char[] chars; St原创 2016-01-17 15:35:37 · 3664 阅读 · 0 评论 -
java 字符串截取的几种方式
众所周知,java提供了很多字符串截取的方式。下面就来看看大致有几种。 1.split()+正则表达式来进行截取。 将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。String str = "abc,12,3yy98,0";String[] strs=str.split(",");for(int i=0,len=strs.原创 2016-06-07 16:15:56 · 314003 阅读 · 7 评论 -
使用Fork/Join框架在任务中抛出异常
在java当中,异常一共分为两种。一种是运行时异常,一种是非运行是异常。 非运行时异常:这些异常必须在方法上通过throws子句抛出。或者在方法体内进行try{…}catch{…}来捕获异常。 运行时异常:这些方法不需要在throws子句抛出,也不需要在方法体内进行try{}catch{}操作。在ForkJoin框架中声明的compute()方法不允许在运行是抛出异常,因为这个方法的实现没有包含原创 2016-07-10 14:10:29 · 2324 阅读 · 0 评论 -
java 反射通过类名获取对象
java 提供了Class类来通过类名获取对象。 下面请看示例: 先声明一个Userinfo.java类。public class Userinfo { private String name; private String password; public String getName() { return name; } public原创 2016-07-05 11:41:57 · 20673 阅读 · 0 评论 -
java 反射提供的功能(1)
java 反射提供了以下功能: 1.在运行时判断一个对象所属的类 2.在运行时构造一个类的对象 3.在运行时获取一个类的成员变量和方法 4.创建一个新的类对象 5.在运行时调用一个类对象的方法在使用java 的反射机制时,需要通过Class类对象来获取其他类对象。 java 一共提供了三种方式来获取类的Class对象。Class.forName()Class.getClass()类原创 2016-07-05 13:29:11 · 447 阅读 · 0 评论 -
spring AOP:@AfterReturning 发送用户通知
前言spring aop提供了丰富的切面功能,包括了环绕通知、提前通知、结束通知等,能够满足不同的业务场景,有时候需要在方法成功执行完成之后才提供切面通知。注解@AfterReturning 就能够很好的实现这个功能。具体实现首先需要一个AOP的切面方法。import java.lang.reflect.Method;import java.util.Date;import or...原创 2019-01-23 11:01:16 · 1705 阅读 · 0 评论 -
Redis 分布式锁的正确使用方式
随着业务越来越复杂,应用服务都会朝着分布式、集群方向部署,而分布式CAP原则告诉我们,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。很多场景下,需要通过分布式事务或者是分布式锁来保证数据的最终一致性。分布式锁的实现方式主要有三种,基于数据库的分布式锁基于Zookeeper的分布式锁基于Redi...原创 2019-06-05 15:24:25 · 1680 阅读 · 0 评论 -
java lamdba表达式 list 过滤排序分页使用
jdk1.8提供了Stream 类,极大的方便了开发者使用集合类,大大简化了代码。下面就是一个通过Stream 提供的filter以及sorted对集合列表进行过滤和排序。 List<ServiceOrderingViewDTO> list1 = result.getServiceOrderingViewDTOList().stream...原创 2019-07-12 09:20:28 · 947 阅读 · 0 评论 -
springboot加shiro用户认证集成
1、简介shiro是由apache基金会旗下的强大的安全校验框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,从最小的移动应用程序到最大的网络和企业应用程序。本博客展示一个用户认证的demo,看看用shiro怎么来做用户认证的。2、maven依赖这里的sprigboot的版本是2.1.6.RELEASE <dependency> &...原创 2019-08-04 21:37:53 · 133 阅读 · 0 评论 -
final finally finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。原创 2016-01-17 21:45:33 · 283 阅读 · 0 评论 -
java 选择排序算法
package maoaopaixu;/*选择排序 * 每一趟从待排序的数据元素中选出最小(或最大)的一个元素 * 顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完 * 选择排序是不稳定的排序 */public class selectsort { public static void main(String[] args) { int sort[]={原创 2016-02-17 21:02:14 · 677 阅读 · 0 评论 -
java BigInteger 的使用
import java.math.BigInteger=public class Powers(Long L){ public static BigInteger powers(int[] list ){ return BigInteger.valueOf(2).pow(List.length); }}这里的pow()函数是指数运原创 2016-01-17 14:56:33 · 603 阅读 · 0 评论 -
匹配一个字符串是否在一组字符串中出现过,以及出现过几次
import java.util.regex.Pattern;import java.util.regex.Matcher;public class WallyFinder{ public static int wheresWally(String str){ Matcher m = Pattern.complie("wally\\b").matcher(" "+str)原创 2016-01-17 16:58:14 · 571 阅读 · 0 评论 -
InputStream和OutputStream之间的区别
1.InputStream的数据源包括:字节数组、String对象、文件、管道。OutputStream 的输出对象为字节数组(但不是String )。文件或者管道。2.InputStream的子类有 类别 功能 构造器参数- ByteArrayStream :原创 2016-02-24 15:53:40 · 3646 阅读 · 0 评论 -
java.util.Properties.getProperty()方法实例
此方法获得指定属性列表中的指定键的属性值。import java.util.*;public class PropertiesDemo { public static void main(String[] args) { Properties prop = new Properties(); // add some properties prop.put("He原创 2016-05-27 10:12:53 · 2005 阅读 · 0 评论 -
String toUppercase和toLowerCase
String 中有两个处理大小写转换的函数,一个为toUpperCase(),一个为toLowerCase(). toUpperCase()用来处理将字符串中的小写字母转换成大写,toLowerCase()则是将大写转换成小写。原创 2016-05-27 10:29:05 · 561 阅读 · 0 评论 -
String自带的replaceAll方法和StringUtils的replaceAll的区别
一般情况下,同时使用String自带的replace方法就可以实现字符串的替换功能,但是如果需要替换的字符串种含有正则表达式的符号语言,则只能使用StringUtils提供的replace()方法。因为String自带的replace()方法是通过正则表达式的方式来实现替换,而StringUtils()则是通过循环的方式。以下贴上两种方式实现的源代码: String.relpace();publi原创 2016-05-27 10:51:42 · 4506 阅读 · 0 评论 -
java 如何递归遍历一个文件夹下的所有文件
1.利用File类中的一个listFiles将该文件路径下所有的文件全部列出来,然后通过循环遍历。代码如下:import java.io.File;import java.util.ArrayList;import java.util.List;public class ListDirectory { public static void showDirectory(File file原创 2016-02-26 22:41:15 · 11379 阅读 · 0 评论 -
java 如何实现一个字符串的反转
1.通过jdk自带reverse的方法public class InvertString { public static void main(String[] args) { String a="abcde"; StringBuilder b = new StringBuilder(a); System.out.print(b.reverse(原创 2016-02-26 22:22:52 · 29497 阅读 · 0 评论 -
1.String、Stringbuffer、Stringbuilder之间的区别。
1.String、Stringbuffer、Stringbuilder之间的区别。三者的执行速度为Stringbuilder>Stringbuffer>String。String是字符串常量,是不可变的。Stringbuffer、Stringbuilder是字符串变量。Stringbuffer是线程安全的,而Stringbuilder是非线程安全的。原创 2016-02-24 14:54:01 · 352 阅读 · 0 评论 -
面试题集锦
1.什么是数据库事务? 事务是恢复和并发控制的基本单元。事务由高级数据库编程语言SQL书写的用户级程序引起。 事务的4个基本属性:一致性、隔离性、原子性、持久性。2.存储函数和存储过程的区别: 1.标识符不同。函数的标识符为FUNCTION,过程为PROCEDURE。 2.函数可以有返回值,过程没有返回值。 3.函数可以在select语句中直接使用,而过程不能。例如原创 2016-02-24 14:34:15 · 321 阅读 · 0 评论 -
java Math类
1.Math.abs()取绝对值的方法。 2.Math.BigInteger.signum()返回次对象的正负号。 3.Integer.paseInt(String s,int i)第一个参数代表需要转换的字符串,第二个代表进制。 4.Math.cbrt(double a )返回一个double值的立方根,对于正有限的x,cbrt(-x)=-cbrt(x),也就是说赋值的立方根是负,该值 的大原创 2016-01-17 14:19:53 · 539 阅读 · 0 评论