1.实现方案 对需要进行数据权限的请求添加自定义注解,通过拦截器对请求进行拦截,判断是否需要进行数据权限验证和执行数据权限验证的逻辑。(GET请求没问题,POST请求因为HttpRequest的流getReader只能读取一次,如果在拦截器处理后,进入Handler会抛异常。此问题后面单独说) 2.
1 package com.test.pic.crawler; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.OutputStream; ...
1. 类加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Jav
1. 安装EGit插件 2. 导入git项目 选择Import: 选择“Clone URI” 输入想要导入的git项目地址和用户名密码: 选择代码分支: 一路点击next完成导入github项目即可。 3. 开启命令行 下载安装git 选择 “Run -> External Tools -> Ext
近期项目中需要
根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大类: ①创建型模式(Creational
JDK 监控和故障处理工具总结 1. HotSpot虚拟机的垃圾收集器(图中两个收集器之间有连线,说明它们可以配合使用) Serial收集器:新生代收集器,使用停止复制算法,使用一个线程进行GC,串行,其它工作线程暂停。使用-XX:+UseSerialGC可以使用Serial+Serial Old模
1. HashMap 标准链地址法实现(下图)。数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,
java的内存区域划分 根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分: 程序计数器(Program Counter Register)、 虚拟机栈(VM Stack)、 本地方法栈(Native Method Stack)、 方法区(Method Area)、 堆(Heap)。
1. 连接到 redis 服务 2. Redis Java String(字符串) 实例 3. Redis Java List(列表) 实例 4. Redis Java Keys 实例
在JDK1.2之后,Java将引用分为强引用( Strong Reference )、软引用( Soft Reference )、弱引用( Weak Reference )、虚引用( Phantom Reference )四种,这四种引用强度依次逐渐减弱: 强引用就是指在程序代码之中普遍存在的,类似
CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch类只
+ ReentrantLock类的使用 + ReentrantReadWriteLock类的使用 1. 使用ReentrantLock类 ReentrantLock类能够实现线程之间同步互斥,并且在扩展功能上更加强大,例如嗅探技术、多路分支通知等功能,在使用上比synchronized更加灵活。Re
参考Javassist tutorial 1、读取和输出字节码 这里可以看出,Javassist的加载是依靠ClassPool类,输出方式支持三种。 2、新增Class 从上面可以看出,对Class的修改主要是依赖于CtClass 类。API也比较清楚和简单。 3、冻结Class 当CtCl
测试环境通过agent了部分代码,其中包括几个Timer. 在通过启动脚本重启tomcat时,会一直有一个stop进程卡住,导致tomcat无法正常重启,进程卡住不动。 通过jstack tomcat进程,发现没有死锁进程,只有两个进程是TIMED_WAITING,这两个进程是通过agent
1、基础篇 1.1、Java基础 • 面向对象的特征:继承、封装和多态• final, finally, finalize 的区别• Exception、Error、运行时异常与一般异常有何异同• 请写出5种常见到的runtime exception • int 和 Integer 有什么区别,In
一分钟系列: 读懂GC日志 ArrayList插入1000w条数据之后,我怀疑了jvm... Java JIT性能调优 Java性能优化指南系列(三):理解JIT编译器 准备:调试程序加入VM Options: -XX:+PrintGCDetails -XX:+PrintGCDateStamps 1
ADB,即 Android Debug Bridge,它是Android开发/测试人员不可替代的强大工具. 1.下载ADB后,将以下四个文件放到某个文件夹下即可.因为打开Cmd默认路径是 C:\Users\{user}路径,所以我本地放在了 C:\Users\admin 路径下. 2.验证ADB.在
1.Predicate java.util.function.Predicate<T>接口定义了一个名叫 test 的抽象方法,它接受泛型 T对象,并返回一个 boolean 。 在需要表示一个涉及类型T的布尔表达式时,就可以使用这个接口。 比如,可以定义一个接受 String对象的 Lambda表
引至【想不到!面试官问我:Redis 内存满了怎么办?】,本文只关注其中的LRU算法 LRU(Least Recently Used),即最近最少使用,是一种缓存置换算法。在使用内存作为缓存的时候,缓存的大小一般是固定的。当缓存被占满,这个时候继续往缓存里面添加数据,就需要淘汰一部分老的数据,释放内
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号