java进阶
文章平均质量分 60
java进阶
勤径苦舟
书山有路勤为径,学海无涯苦作舟。只技术分享,非商业行为,我很少看消息,所以你们给我发的消息回的很少。
邮件:920786312@qq.com
微信:zhou920786312
展开
-
动态代理--基础--04--AOP
在Spring中的before织入。负责递归调用所有的拦截的织入。原创 2024-05-01 22:41:32 · 87 阅读 · 1 评论 -
动态代理--基础--03--cglib原理细节
从我们定义的拦截器的intercept方法中可以看到。原创 2024-05-01 22:39:56 · 299 阅读 · 1 评论 -
动态代理--基础--02--jdk原理细节
这是被调用的方法的 Method 对象。它包含了被调用方法的名称、参数类型、返回类型等信息。你可以通过这个对象来获取方法的详细信息,并执行相应的逻辑。是 Java 反射 API 中的一个方法,用于动态地创建一个实现了指定接口的代理类实例。一个带有代理类的指定调用处理程序的代理实例,它由指定的类加载器定义,并实现指定的接口。:是生成字节流的方法,通过native方法生成Class对象。理解:返回一个实现接口的代理类,比如。用于处理代理实例上的方法调用。返回 代理实例方法的执行结果。原创 2024-05-01 22:39:20 · 346 阅读 · 2 评论 -
动态代理--基础--01--jdk和cglib原理和区别
利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。原创 2024-05-01 22:38:43 · 62 阅读 · 0 评论 -
java--进阶--1.2--Dom4j--案例
保存各个xml文件的字段和字段说明。原创 2023-05-25 12:16:57 · 153 阅读 · 0 评论 -
java--进阶--1.1--Dom4j--常用api
【代码】java--进阶--1.1--Dom4j--常用api。原创 2023-05-25 12:14:50 · 237 阅读 · 0 评论 -
Invalid bound statement (not found):.....sysFunctionDao.getSysFunctionsById...<init>(MapperMethod.ja
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.xiniu.core.dao.function.SysFunctionDao.getSysFunctionsById at org.apache.ibatis.binding.MapperMethod$SqlCommand原创 2017-08-09 09:51:01 · 347 阅读 · 0 评论 -
mybatie+spring+mvc使用反射遇到的问题
问题1:使用反射调用*serviceImpl时,使用注解的*Dao对象是空,解决办法在*serviceImpl类中,直接去spring容器获取bean 问题2;在一个类TestServiceImple的方法中(使用事务控制)中调用另外一个类SupplementaryBudgetServiceImpl的方法(事务控制),另外一个类SupplementaryBudgetServiceImpl的方法在数原创 2017-09-17 13:35:43 · 497 阅读 · 0 评论 -
Transaction rolled back because it has been marked as rollback-only
前提:事务嵌套才能存在原因:A事务,调用B事务,B事务抛出异常(transaction被设置为rollback-only了),然后再A中进行了捕获,但是没有抛出该异常,那么A事务结束的时候,事务会执commit操作,但是现在事务已经被设置为 rollback-only了,所以会出现这个错误。...原创 2019-10-22 14:21:53 · 151 阅读 · 0 评论 -
java会话技术--03--Session覆盖问题
因cookie冲突导致session丢失,因为8081和8082使用SESSION会话的名称都是JSESSIONID。同一域名,同一个服务,不同的端口,存在session会话覆盖的问题。为不同的应用,设置自己的会话名称。不使用默认的JSESSIONID。一个新的cookie与一个已存在的cookie比较。可以看到 和 8081是不一样的。可以看到8081服务的会话名称是。可以看到8082服务的会话名称是。启动8081和8082。原创 2023-04-21 11:03:36 · 808 阅读 · 0 评论 -
java会话技术--02--服务器session共享
session共享实现代码与本地session代码共同实现同一个接口,目的是为了未来需要将本地session改为session共享的实现代码,bean那边接口名不需要改,只要改实现类,这样注解 session 接口 实例化就是session共享的对象。该代码只用于项目还没有发布上去,没有实现session共享,开发自己用的本地session。原创 2017-03-31 22:35:04 · 571 阅读 · 1 评论 -
TCP协议接收与发送数据
TCP: 建立连接通道 数据无限制 速度慢 可靠TCP协议发送数据: 1:创建发送端的Socket对象 这一步如果成功,就说明连接已经建立成功了。 2:获取输出流,写数据 3:释放资源 public static void main(String[] args) throws IOException { // 创建发送端的Socket对象原创 2017-04-07 14:30:53 · 4116 阅读 · 2 评论 -
UDP协议接收数据与发送数据
一些需要用到的方法: InetAddress 类: tring getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 String getHostName() 获取此 IP 地址的主机名。 static InetAddress getByName(String host) 在给定主机名的情况下获取主机的 IP 地址对象 //static I原创 2017-04-07 14:24:17 · 961 阅读 · 0 评论 -
CopyOnWriteArrayList源码
package com.roocon.demo;import java.util.*;import java.util.concurrent.locks.ReentrantLock;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.Unary...原创 2019-12-02 19:35:11 · 153 阅读 · 0 评论 -
ConcurrentLinkedQueue源码解析
ConcurrentLinkedQueue一、 类图二、 构造方法 public class ConcurrentLinkedQueue<E> .... { // 头节点, private transient volatile Node<E> head; // 尾节点,尾节点不一定是链表的最后一个节点 private transient v...原创 2019-11-21 23:29:04 · 344 阅读 · 0 评论 -
Fork/Join框架
一 可以充分利用CPU资源将一个任务才分多个任务,最后将结果合并。二 代码 public class Demo extends RecursiveTask<Integer> { private int begin; private int end; public Demo(int begin, int end) {...原创 2019-11-12 00:08:16 · 152 阅读 · 0 评论 -
FutureTask 源码 并发设计模式
一、代码https://www.jianshu.com/p/60f661d95d53 public static void main(String[] args) throws Exception { Callable<String> call = new Callable<String>() { @Override public String...原创 2019-10-24 00:25:34 · 650 阅读 · 1 评论 -
Unsafe学习
一 介绍一个管理内存的类Unsafe类是"final"的,不允许继承。且构造函数是private的使用单列模式模式获取类对象1.1 测试的类public class UnsafeBean { private static int staticInt = 5; private final int finalInt = 5;}二 代码package sun.mis...原创 2019-10-10 09:42:15 · 221 阅读 · 0 评论 -
@CallerSensitive
CallerSensitive学习代码位置(Reflection类)public class Reflection {@CallerSensitivepublic static native Class<?> getCallerClass();权限Reflection.getCallerClass()此方法的调用者必须有权限由bootstrap class loa...原创 2019-09-28 13:49:11 · 769 阅读 · 0 评论 -
Guava Cache
Guava Cache与ConcurrentMap很相似 ConcurrentMap会一直保存所有添加的元素,直到显式地移除。而Guava Cache为了限制内存占用,通常都设定为自动回收元素。 在某些场景下,尽管LoadingCache 不回收元素,它也是很有用的,因为它会自动加载缓存。 在内存中缓存数据,相比较于数据库或redis存储,访问内存中的数据会更加高效下面的这几...原创 2019-09-10 23:43:41 · 119 阅读 · 0 评论 -
BlockingQueue
一BlockingQueue阻塞队列 向队列中添加元素时,队列的长度已满阻塞当前添加线程,直到队列未满或者等待超时; 从队列中获取元素时,队列中元素为空 ,会将获取元素的线程阻塞,直到队列中存在元素 或者等待超时。二方法puts操作add(E e) : 添加成功返回true,失败抛IllegalStateException异常offer(E e) : 成功返回 true,...原创 2019-08-31 18:18:45 · 1432 阅读 · 0 评论 -
CountDownLatch
一CountDownLatchCountDownLatch是JDK 5+里面闭锁的一个实现。 能够使一个或多个线程等待其他线程完成各自的工作后再执行 与CountDownLatch第一次交互是主线程等待其它的线程,主线程必须在启动其它线程后立即调用await方法,这样主线程的操作就会在这个方法上阻塞,直到其他线程完成各自的任务。 其他的N个线程必须引用闭锁对象,因为他们需要通知Coun...原创 2019-08-31 17:18:33 · 124 阅读 · 0 评论 -
CyclicBarrier调试
一CyclicBarrier控制所有线程等待,知道达到某种条件,所有的线程才会继续走下去是一个同步工具类 它允许一组线程互相等待,直到到达某个公共屏障点才停止等待 与CountDownLatch不同的是该barrier(屏障)在释放等待线程后可以重用,所以称它为循环(Cyclic)的屏障(Barrier)。 CyclicBarrier支持一个可选的Runnable命令,在一组线程...原创 2019-08-31 17:00:39 · 219 阅读 · 0 评论 -
Exchanger类调试
一Exchangerjava.util.concurrent包中 只可以用于两个线程之间交换信息。二案例public class ExchangerTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); ...原创 2019-08-31 16:31:06 · 121 阅读 · 0 评论 -
Semaphore调试
一Semaphore通过许可证管理多个线程的执行,有许可证的线程可以执行,没有许可证的线程会等待。二Semaphore方法说明Semaphore(permits):初始化许可证数量的构造函数 Semaphore(permits,fair):初始化许可证数量和是否公平模式的构造函数 isFair():是否公平模式FIFO availablePermits():获取当前可用...原创 2019-08-31 12:02:30 · 421 阅读 · 0 评论 -
Lock锁和Condition条件
Lock的特性:Lock不是Java语言内置的; synchronized是在JVM层面上实现的,如果代码执行出现异常,JVM会自动释放锁,但是Lock不行,要保证锁一定会被释放,就必须将unLock放到finally{}中(手动释放); 在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetarntLock,但是在很激烈的情况下,synchronized的性能会下降...原创 2019-08-30 00:49:18 · 1111 阅读 · 0 评论 -
ReentrantReadWriteLock
一ReentrantReadWriteLock是Lock的另一种实现方式 我们知道ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。相对于排他锁,提高了并发性。 在实际应用中,对共享数据(如缓存)的访问都是读操作远多于写操作,这时ReentrantRe...原创 2019-03-12 20:14:01 · 128 阅读 · 0 评论 -
PropertyDescriptor属性描述类学习
1构造方法通过调用 getFoo 和 setFoo 存取方法,为符合标准 Java 约定的属性构造一个PropertyDescriptor public PropertyDescriptor(String propertyName, Class<?> beanClass) 该构造函数使用简单属性的名称,以及读取和写入属性的方法名称public PropertyDes...原创 2019-01-24 21:50:37 · 1330 阅读 · 0 评论 -
Modifier修饰符工具类
转载https://www.cnblogs.com/baiqiantao/p/7478523.html作用:对类和成员访问修饰符进行解码字段列表public static final int PUBLIC = 0x00000001; public static final int PRIVATE = 0x00000002; public static final int PR...转载 2019-01-16 10:58:48 · 704 阅读 · 0 评论 -
get和post区别
get和post区别 get参数通过url传递,post放在request body中。 get请求在url中传递的参数是有长度限制的,而post没有。 get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。 get请求只能进行url编码,而post支持多种编码方式 get请求会浏览器主动cache,而post支持...原创 2018-11-09 00:28:53 · 168 阅读 · 0 评论 -
Tcp协议中的3次握手与4次挥手过程分析
转载https://blog.csdn.net/u012824097/article/details/52490091客户端与服务端的通信中步骤1建立Tcp连接 3次握手 2再进行数据传输 3数据传输完成后,断开连接。 4次挥手 建立Tcp连接1 Client ---> Server:(员工:老板看到我发的消息没)设置SYN=1,seq=J,并将该数据包...原创 2018-11-08 08:43:22 · 439 阅读 · 0 评论 -
TCP和UDP的区别和优缺点
TCP与UDP区别1连接方式TCP:面向连接UDP:UDP是无连接的,即发送数据之前不需要建立连接 2提供服务TCP:可靠的服务,传送的数据,无差错,不丢失,不重复,且按序到达,通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。UDP:尽最大努力交付,即不保证可靠交付 3实时性TCP:实时性和工作...原创 2018-11-08 07:01:21 · 233 阅读 · 0 评论 -
HashTable与HashMap的区别,数据结构,类文件结构,源码分析
转载https://www.imooc.com/article/details/id/23015与HashMap的区别1 HashMap是非同步的,没有对读写等操作进行锁保护,所以是线程不安全的,在多线程场景下会出现数据不一致的问题。而HashTable是同步的,所有的读写等操作都进行了锁(synchronized)保护,在多线程环境下没有安全问题。但是锁保护也是有代价的,会对读写的效率产...转载 2018-11-08 06:39:44 · 1489 阅读 · 0 评论 -
CopyOnWriteArrayList
CopyOnWriteArrayList介绍它相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和ArrayList不同的时,它具有以下特性:1. 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。2. 它是线程安全的。3. 因为通常需要复制整个基础数组,所以可变操作(add()、set(...原创 2018-11-05 13:40:37 · 266 阅读 · 0 评论 -
ThreadLocal和ThreadLocalMap原理
转载https://www.jianshu.com/p/ee8c9dccc9531线程局部变量ThreadLocal避免共享变量,保证各自线程的变量是独立的为各个线程提供各自的实例在一个线程中首次调用get时,会调用initalValue方法,在此之后,get方法会返回属于当前线程的那个实例 T get() 返回此线程局部变量的当前线程副本中的值。 protected T ...转载 2018-10-31 08:39:55 · 720 阅读 · 0 评论 -
HTTP协议
HTTP1.0和HTTP1.1的区别超文本的传输协议,是基于TCP/UDP协议(底层)HTTP/1.0一次用户请求,服务端响应后,立即断开在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。HTTP/1.1一次用户请求,服务端响应后,会保持一定的时间,在该一定时间后,用户可以再次请求允许客户端与web服务器建立连接后,在一个连接上获取多个web...原创 2018-09-15 20:23:24 · 398 阅读 · 0 评论 -
xpath,sax,DOM解析xml文件(基础)
基础XML解析器有二类,分别是DOM和SAX。DOMDOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。很方便对文档进行遍历 对文档curd也特别方便 xml文档比较大的时候,dom解析占用的内存也会比较大,浪费系统资源。所以dom解析这种方式不适合解析大的xml文档。SAX解析文件速度快,占用资源(内存)少。 sa...原创 2018-09-15 15:34:18 · 953 阅读 · 0 评论