
java
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ideal 中 main 方法启动找不到 错误: 找不到或无法加载主类
ideal main 方法启动 报错 错误: 找不到或无法加载主类原创 2022-06-06 18:23:10 · 860 阅读 · 0 评论 -
Method.isBridge() 桥接方法
桥接方法 在 java1.5 引入泛型之后 为了实现向前 兼容 1.5之前的不带泛型的代码 编译器会自动生成一个不带泛型的方法 即桥接方法,该方法在字节码中桥接方法会被标记为ACC_BRIDGE和ACC_SYNTHETIC,其中ACC_BRIDGE用于说明这个方法是由编译生成的桥接方法,ACC_SYNTHETIC说明这个方法是由编译器生成,并且不会在源代码中出现。1. java 中泛型实现一个泛型接口 在继承关系中 父类是带有泛型的类 在子类中 具体实现泛型 就会生成 对应的桥接方法静态方法不.原创 2021-03-01 11:40:09 · 270 阅读 · 0 评论 -
es安全认证-search-guard
REST级别的典型HTTP Basic标头如下所示:Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1lBasic之后的部分是Base64的表示Aladdin:OpenSesame使用传输客户端时,您需要将它们添加到ThreadContext标头,而不是将基本身份验证凭据添加到HTTP请求:TransportClient client = ...client.threadPool().getThreadContext().putHe...原创 2021-02-26 12:00:05 · 3655 阅读 · 0 评论 -
2021-JVM 知识点重温
1.Hotspot jvm 运行时数据区可划分为5区域 堆、方法区,虚拟机栈、本地方法栈、程序计数器 (1) 线程共享区: 堆 、 方法区 > 堆:存储系统创建的对象 > 方法区:常量、静态变量、编译后的类的元信息 (2) 线程私有区: 虚拟机栈、本地方法栈、程序计数器 > java虚拟机栈:每个线程的运行产生一个虚拟机栈,虚拟机栈中存放的是一个个栈帧(方法),一个方法生成一个栈帧 > 栈.原创 2021-01-06 09:28:34 · 220 阅读 · 1 评论 -
equals() 方法重写 hashcode() 必须重写
在JAVA中所有的类都是 Object 类的子类,定义了 native 方法 equals() / hashCode() / wait() / notify() / notifyAll()重写 equals 方法未重写原创 2021-01-04 11:50:57 · 117 阅读 · 0 评论 -
重温 - spring 源码 - ConfigurationClassPostProcessor(@Configuration和@Component的区别)
概要:ConfigurationClassPostProcessor 是 spring 中极为重要的一个类尤其是在 springboot 广泛应用的背景下,ConfigurationClassPostProcessor 类 在spring 容器启动流程之初 收集 @Configuration 注解的类以及 @Component @ComponentScan @Import @ImportResource 和 @Bean 将其封装成BeanDefinition 注册到spring registry...原创 2020-12-28 18:39:51 · 208 阅读 · 0 评论 -
intellij idea maven spring mvc 项目tomcat 启动 报错 加载不到spring 的类问题
1. 首先检查 file -> Project Structure -> Artifacts 选择发布的web项目如果不存在则进行如下操作 put into Output Root 重启tomcat 即可原创 2020-11-04 15:23:19 · 508 阅读 · 0 评论 -
springmvc 启动成功 访问请求路径 404 Not_FOUND 问题
1、首先查看 配置文件是否加载正确配置没有问题 查看 context:component-scan 标签是否配置正确 如果没有配置 basepackage 则相当于没有将 bean 托管给spring 导致没有加载,请求也就 404 找不到2、mvc:annotation-driven 标签是否配置 该标签会自动创建添加两个mvc 需要的bean RequestMappingHandlerMapping{InitailizingBean . afterPropertiesSet()...原创 2020-11-04 14:12:34 · 1435 阅读 · 0 评论 -
eclipse 报错 Dynamic web model 3.0 requires 1.6 or newer
1. 首先确认 window -> preferences -> Java -> install JRE 是否是java 环境的 JRE运行时环境路径 不是替换2. 如果是 项目名右键 preferences java build paths 设置 Libraries JRE System Libraries 为 1.83. 设置 java compiler 为当前的java 版本4. 如果使用的 是 maven 依赖build 标签 添加如下 然后更新 mave...原创 2020-11-04 10:40:21 · 211 阅读 · 0 评论 -
mybatis查询异常 Mapper中: Type handler was null on parameter mapping for property ‘__frch_a_0‘
1. 检查Mapper 中的 Sql 是否有 foreach 遍历 某个对象时直接取属性的值而不是通过 ” item .属性名 “ 方式获取2. 传递的参数 是否类型不匹配导致 List<Integer> params 实际传递的参数确实 List<UserInfo> 导致java.lang.IllegalStateException: Type handler was null on parameter mapping for property '__f...原创 2020-09-30 13:51:07 · 8364 阅读 · 0 评论 -
JIT 编译优化措施
1. 方法内联 线程执行会创建java虚拟机栈,调用方法的是以栈帧的形式进行入栈和出栈的,如果被调用方法方法体很简单,jvm编译器会做方法内联的优化将被调用方法植入到调用方法,减少出栈入栈提高性能。ReservedCodeCacheSize2. 锁消除 当我们使用线程安全的类的时候,如果jvm判断出这个线程安全的类创建的对象如果没有跳出当前方法,就不存在并发安全的问题,jvm就会进行 锁的消除,jdk 8中 锁消除 开关是默认打开的3. 标量替换 ...原创 2020-08-21 13:42:49 · 277 阅读 · 0 评论 -
javap -v 字节码指令全集(收藏)
常见的引用类型的指令:创建类实便: new创建新数组: newarray,anewarray,multianwarray访问类的域和类实例域: getfield,putfield,getstatic,putstatic把数据装载到操作数栈: baload,caload,saload,iaload,laload,faload,daload,aaload从操作数栈存存储到数组: bastore,castore,sastore,iastore,lastore,fastore,dastore,a原创 2020-05-28 10:46:34 · 2820 阅读 · 0 评论 -
ReentrantLock之源码解析
实现锁同步机制,我们一般可以通过 (1) 自旋死循环实现缺点也很明显 空耗cpu (2) 通过自旋加 当前线程调用yied() 释放cpu进入就绪状态,当然这样当下次仍有可能会被选择执行 (3) 通过自旋加 sleep() 让当前线程进入休眠状态 释放cpu , 这样似乎很完美,但是由于持有锁的线程执行时间不确定,可能造成当前线程的频繁唤醒 (4) 通过...原创 2020-04-15 18:31:20 · 434 阅读 · 0 评论 -
com.danga.memcached jar
memcached_2.6.6.jar,打包命令如下:mvn install:install-file -DgroupId=com.danga -DartifactId=memcached -Dversion=2.6.6 -Dpackaging=jar -Dfile=D:/memcached_2.6.6.jar原创 2019-11-25 09:35:14 · 1412 阅读 · 1 评论 -
离线安装,Btrace;Btrace在线生产问题排查,无需重启服务
在线安装https://visualvm.github.io/pluginscenters.html查找对应版本的Btrace如:JDK 8 Update 40 - 121 /JDK 7 Update 79 - 80 使用:https://visualvm.github.io/archive/uc/8u40/updates.xml.gzJDK 8 Update 131 - 2...原创 2019-10-22 17:36:36 · 170 阅读 · 0 评论 -
@EnableXxxx类型的注解解释
@EnableXxxx 类型的注解是通过 @Import收集和注册特定场景相关的bean定义。如: @EnableScheduling 是通过 @Import (SchedulingConfiguration.class)将调度框架相关的bean加载到 ioc 容器 @EnableMBeanExport 是通过 @Import(MBeanExportC...原创 2019-10-18 14:05:55 · 527 阅读 · 0 评论 -
并发编程之ThreadLocal-内存泄露和线程不安全
ThreadLocal在整个线程的生命周期内有效,为每个线程创建一个变量的副本,从而保证变量的隔离性。 在每个线程内都会维护一个ThreadLocalMap,这个Map内存存放的是一个个Entry(ThreadLocal中定义个一个内部类Entry<key, value>) 他的key是ThreadLocal的弱引用(生命周期仅能存在到下一次垃圾回收之...原创 2019-08-14 11:43:14 · 213 阅读 · 0 评论 -
springboot项目启动成功后加载配置项 ApplicationRunner
往往我们会遇到这样的需求在项目启动后,通过查询数据库或者远程服务调用来初始化一些配置信息,这个时候我们可以使用ApplicationRunner 来完成。通过自定义实现类重写 run方法来进行配置信息的初始化。@Component: 用于托管该类@Order启动顺序当有多个类时按顺序启动,value值越小优先级越高。@Component@Order(value = 100)...原创 2019-09-10 16:41:59 · 2646 阅读 · 1 评论 -
HandlerInterceptor拦截器搭配注解实现web请求的增强处理
自定义实现HandlerInterceptor的实现类,同时自定义WebMvcConfigurationSupport的实现类,重写其addIntecepters方法注册改拦截器。@Configurationpublic class SpringWebConfig extends WebMvcConfigurationSupport { @Be...原创 2019-09-10 16:52:23 · 801 阅读 · 0 评论 -
装饰器模式
装饰器模式是用于进行功能增强 * 装饰器会持有一个构件对象的实例 * 不同的装饰器装饰,在业务各自的业务方法中进行装饰增强 * 装饰器可以嵌套 * SupperCar car = new BiyadiCar(new HafouCar(new SupperCarImpl())); * 不同的矿泉水品牌 柠檬口味,纯净,苹果味...原创 2019-09-10 17:30:56 · 109 阅读 · 0 评论 -
@sun.misc.Contended 伪共享
Java8中已经提供了官方的解决方案,Java8中新增了一个注解:@sun.misc.Contended。加上这个注解的类会自动补齐缓存行,需要注意的是此注解默认是无效的,需要在jvm启动时设置-XX:-RestrictContended才会生效。 jdk7以前版本为了避免由于false sharing 导致CacheLine从L1,L2,L3到主存之间重复载入,...原创 2019-09-17 10:07:46 · 210 阅读 · 0 评论 -
String和包装类是引用传递还是值传递?
String和包装类 都是final类型不能被继承。创建这种类型的对象也是在堆上对其分配内存的。所以他们变量属于是引用传递,但是由于value的final类型的特点,使得我们在使用的时候常常表明看起来他们是值传递,其实他们是引用传递 String存放值的 value 是一个final类型的字符数组,所以当String变量赋值后就是不可变的,值一旦发生改变其实是新建了一个Strin...原创 2019-09-26 16:43:20 · 613 阅读 · 1 评论 -
并发编程 wait()/yield() notify()/notifyAll()
wait() 是对象的方法,当线程获取到改对象的琐时由于条件不满足调用 - object.wait() - 阻塞起来并且释放掉持有的锁yield() Thread中的public static native void yield(); 不会释放锁,由于时间片到了而让出cpu资源,进入就绪状态,并且仍可能获取下一个cpu时间sleep() 不会释放锁,让自身休眠一段时间,当唤醒时继续执行...原创 2019-09-27 14:54:11 · 123 阅读 · 0 评论 -
ForkJoin 分而治之思想
ForkJoin 分而治之思想类属于分而治之的算法有:快速排序算法,归并排序,二分法排序,这个三种算法属于分而治之 分而治之将一个大任务拆分成不可再分的小任务,这些小任务相互没有关联可以独立执行 ForkJoinPool.invoke(task)同步等待 ForkJoinPool.submit(task)异步非阻塞有返回值 ForkJoinPool.execut...原创 2019-09-27 16:19:25 · 166 阅读 · 0 评论 -
ThreadLocal 详解
ThreadLocal 为每个线程提供一个共享变量的副本 spring中的事务,用ThreadLocal保存一个数据库的连接,执行一次完整的数据库操作。 ThreadLocal内部实现原理:每个线程内部维护一个ThreadLocalMap,元素则是一个个的Entry<key:threadLocal实例,value:共享变量的值>的数组 ...原创 2019-09-27 16:21:23 · 109 阅读 · 0 评论 -
显示锁和synchronized的区别
这两种锁都是可重入锁。synchronized内置锁是一种非公平平锁排它锁,是jdk1.8对它做了大量的优化(偏向锁->轻量级锁->重量级锁),所以在没有特殊用途的情况下建议使用synchronized关键字(java语言内置的,加锁释放锁都是已经固化好的我们不需要处理,显示锁是语法层面的锁,有一个固定的范式)。 显示锁有一个固定的结构jdk源码给出的示例...原创 2019-10-08 09:54:33 · 184 阅读 · 0 评论 -
Dynamic Web Module 3.1 requires Java 1.7 or newer.
Eclipse 构建web 项目时报错,可以设置 对应的jdk版本1、java Compiler 的编译器版本为1.82、project Facets java 版本 1.83. java build Path -> JRE System Library (1.8)如果还不行,<pluginManagement> <plugin...原创 2019-10-08 17:27:58 · 161 阅读 · 0 评论 -
ThreadPoolExecutor 自定义线程池
int corePoolSize:核心线程数 线程空闲时也不会被回收int maximumPoolSize, 最大线程数long keepAliveTime, 存活时间TimeUnit unit, 活跃时间单位BlockingQueue<Runnable> workQueue, 阻塞队列ThreadFactory threadFactory, RejectedExe...原创 2019-09-10 11:43:17 · 178 阅读 · 0 评论 -
JVM 性能调优参数 -Xms -Xmx -Xss
-Xss256k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆 栈大小为1M,以前每个线程堆栈大小为256K。根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一 个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内...原创 2019-09-10 11:08:37 · 536 阅读 · 0 评论 -
synchronized 与显示锁 Lock的区别或优缺点
synchronized 和 Lock接口是jdk提供两种实现代码同步的方式,jdk1.8对synchronized 做了大量的优化,比如锁消除,锁粗化,使用偏向锁,轻量级锁、重量级锁、锁自旋等来提高同步的性能。 synchronized 又称为内置锁,支持可重入的非公平锁,使用起来方便也是推荐使用的同步方式。Lock是一个接口,有不同的实现类,基于AbstractQ...原创 2019-08-15 10:26:34 · 373 阅读 · 0 评论 -
重写equals方法必须重写hashcode方法
首先判断两个对象实例是否相等,需要知道的前提:如果两个对象相等,那么他们的hashcode值一定相同;如果两个对象不相等,那么他们的hashcode值一定不相同。反之,如果两个对象的hashcode值相等,那么这两个对象不一定相同;两个对象的hashcode值不相同那么对象也肯定不相等。 如果重写了equals方法而没有重写hashcode方法,当两个对象...原创 2019-08-15 10:12:16 · 162 阅读 · 0 评论 -
java中形参和实参
形参在方法调用时才会对其进行分配空间,例如方法 public void compare(Integera, Integer b){......},那么 这里的a和b就称为形式参数,我们在进行方法调用是传递的不管是常量,数值,表达式,字符串 compare(12, 35),12,35就是实参。...原创 2019-08-15 10:01:09 · 222 阅读 · 0 评论 -
CAS 指令导致ABA问题 及 Atomic解决方法 AtomicStampedReference
ABA问题产生本质原因是线程的CAS操作只进行了内容的比较判断而忽视了过程,所以解决ABA问题除了比较内容同时还需要添加版本号的验证(version或者时间戳) 当A线程对正在执行CAS操作时进行比较并且交换操作时,由于时间片时间到了让出CPU,此时B线程获得CPU也执行CAS操作(例如:取出a = 500; a = a + 100; b = a; a = a -10...原创 2019-08-14 15:56:16 · 271 阅读 · 0 评论 -
mybatis 中 # 和 $区别
1、#{}是把参数用占位符进行替代,而${}知识进行简单的字符创替换并且加上引号(sql注入)2、在使用${}进行参数传递是,切记把关键字拼进去 where pid= '19878 order by cid desc' 导致语法失效...原创 2019-08-14 15:45:31 · 135 阅读 · 0 评论 -
java基础 - synchronized神来之笔(偏向锁 轻量级锁 重量级锁)
synchronized修饰的同步代码块是通过在代码块前后加入moniterenter和moniterout两条字节码指令实现。当执行moniterenter,获取该对象的moniter使用权,当执行moniterout释放该对象的moniter使用权。 同步方法是通过Class文件的方法表中将该方法的的access_flags字段中的synchronized标识...原创 2019-08-14 14:10:43 · 182 阅读 · 0 评论 -
双亲委派模型-类加载流程(加载、验证、准备、解析、初始化)
双亲委派模式是java的类加载机制,确保类的层次关系,当类收到类加载请求时,该类会委派给器父类进行加载,当父类反馈不能加载时,才会又子类来完成加载。当父类加载过某个类后,子类是不会再次加载,从而防止重复加载。 双亲委派模型可以保证java核心类库的安全性,同时防止类被重复加载。 类加载过程包括加载、验证、准备、解析、初始化。 首先类的...原创 2019-08-19 10:03:02 · 208 阅读 · 0 评论 -
countdownlantch闭锁和cyclicbarrirer栅栏和semaphore信号量
1、CountdownLatch又叫闭锁 首先CountdownLatch 是一次性的锁。使用后锁状态就消失。 允许一个或多个线程阻塞,等待前置线程执行完后后,即计数器减为零时,阻塞的线程才继续执行。调用await()方法的线程进行阻塞,前置线程调用countDown()计数器减一。2、CyclicBarrier 栅栏锁 CyclicBarrier...原创 2019-08-13 18:09:16 · 437 阅读 · 0 评论 -
java中的同步关键字synchronized
synchronized 是jvm提供的一种多线程环境下的同步互斥机制,是一种可重入的锁,基于悲观锁实现,当修饰代码块儿时,代码在编译时编译器会生成两条字节码指令 moniterenter 和 moniterexit 插入代码块儿的前后,当执行moniterenter时如果对象没有锁定或当前线程已经持有改对象的锁,则对象计数器加1 (+1),执行moniterexit 指...原创 2019-07-24 13:15:11 · 147 阅读 · 0 评论 -
java和javac cmd执行 javap 查看字节码文件
错误找不到主类或无法载入类别 Test这个的原因主要是因为 package 引起的可以使用 javac -d . Test.java 生成字节码class文件然后 java test/Test 执行class文件javap -c TargetClass...原创 2019-07-24 11:44:34 · 520 阅读 · 1 评论 -
javap -c 文件名 查看字节码文件内容
javap 命令查看java文件编译后的class文件内容javap -c UserBalance.classCompiled from "UserBalance.java"public class com.hebi.study.thread.pool.synchronize.UserBalance { static {}; Code: 0: ldc ...原创 2019-07-24 11:41:20 · 201 阅读 · 0 评论