文章字数:111,阅读全文大约需要1分钟
1.自定义类加载器, 实现findClass
方法。loadClass
在找不到类时会调用此方法
1 | public class MyClassLoader extends ClassLoader { |
- 调用
1 | public static void main(String[] args) throws Exception { |
文章字数:111,阅读全文大约需要1分钟
1.自定义类加载器, 实现findClass
方法。loadClass
在找不到类时会调用此方法
1 | public class MyClassLoader extends ClassLoader { |
1 | public static void main(String[] args) throws Exception { |
文章字数:658,阅读全文大约需要2分钟
自旋锁指的是线程在为获取到许可的情况下循环获取许可状态
1 | public class TASLock implements Lock { |
1 | public class TASLockMain { |
不停的设置值会造成不停通知其他芯片值更改,产生缓存一致性风暴
1 |
|
先查看是否可用再设置,少了cas次数。但是在高征用的情况下会导致多次操作才能获取到锁,增加cas次数
1 |
|
获取失败后线程休眠一段时间,减少冲突概率。缺点是休眠时间不好设置,需要根据硬件条件调整参数。
文章字数:201,阅读全文大约需要1分钟
java获取当前时间可以使用 System.currentTimeMillis()获取当前毫秒数,也可以直接new Date()获取当前日期类,date.getTime()获取毫秒数
Date的无参构造方法
1 | public Date() { |
本质上也是调用System.currentTimeMillis(),所以如果需要获取当前毫秒数,System.currentTimeMillis()
比起new Date().getTime()
少了引用及转换,效率更高。
System.currentTimeMillis()
依赖系统底层实现,精确度无法保证。毫秒级别的时间,测量从1970年1月1日0到现在的毫秒数。System.nanoTime
也是依赖系统底层实现,但是精度为纳秒。此方法依赖cpu自身的计时器,所以不同机器返回的时间不同,只能用作计算某一时间内的时间差。
纳秒转换成毫秒
1 | System.nanoTime()/1000000L |
文章字数:416,阅读全文大约需要1分钟
获取服务器ip,之前一直用
request.getHeader("Host")
获取。后来发现本机访问时获取到的是127.0.0.1
这个地址,而我需要的是其它地方也能访问到的地址。
解析HostName
获取,直接InetAddress.getLocalHost().getHostAddress()
遍历网卡的地址(即本机所有ip地址),从中找到符合规则的。
1 | import java.net.Inet4Address; |
文章字数:184,阅读全文大约需要1分钟
注解创建过滤器
1 | package com.xc.common.filter; |
文章字数:192,阅读全文大约需要1分钟
遇到一个无法解决的bug?debug发现代码迷之跳跃?添加了代码重新编译,然而出现迷之错误?请收看大型通关策略类游戏《java从入门到放弃》攻略之—《踩坑终极指南》
1 | spring.jpa.properties.hibernate.hbm2ddl.auto=create |
1 | Redis0:> select 01 //选择数据库 |
到这一步之后重启软件一般因为缓存(spring,redis…)导致的问题都能解决了
此问题一般是端口占用,服务冲突,软件抽了等。。。
怎么可能是我的代码问题?
文章字数:187,阅读全文大约需要1分钟
通过注入一个List
的方法注入多个实现类,然后再循环遍历列表,得出需要使用的实现类。可以作为策略模式的实现之一。
Autowired
默认使用类型装配,找到多个才会根据变量名找Autowired
默认required
为true
即找不到会报错Resource
是先通过名字找,然后才是类型Autowired
是通过类型先匹配的,所以可以匹配到多个类。如果接受的变量刚好是集合,便能把匹配的所有类都赋值给集合。
1 | private List<BaseService> services; |
文章字数:63,阅读全文大约需要1分钟
选择排序就是选出最大的,放在第一个,再选出最大的,放第二个。。。
时间复杂度 o(n^2)
1 | public static void sort(int arr[]){ |