- 博客(14)
- 收藏
- 关注
原创 一些面试题整理
那么为什么添加 synchronized 也能保证变量的可见性呢?因为:线程解锁前,必须把共享变量的最新值刷新到主内存中。线程加锁前,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值。volatile 的可见性都是通过内存屏障(Memnory Barrier)来实现的。synchronized 靠操作系统内核互斥锁实现,相当于 JMM 中的 lock、unlock。退出代码块时刷新变量到主内存。...
2022-02-11 09:31:37
402
1
原创 一些stream流用法
一些stream流用法```java// An highlighted blockdepartmentMap = departmentList.stream().collect(Collectors.toMap(Department::getId, Function.identity(), (key1, key2) -> key2));tables=rset.stream().map(TableInfo::getTableName).collect(Collectors.toList()
2021-07-01 11:05:16
58
原创 2021-06-24
@Accessors(chain=true)链式访问,该注解设置chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。// An highlighted blockpackage com.pollyduan;import lombok.Data;import lombok.experimental.Accessors;@Data@Accessors(chain=true)public class User { private In
2021-06-24 19:10:32
63
原创 Timer的用法以及一些理论
TimeTask是以队列的方式一个一个被顺序执行的,所以执行的时间有可能和预期的时间不一致,因为前面的任务有可能消耗的时间较长,则后面的任务运行的时间也会被延迟。schedule(TimerTask task,Date firstTime,long period)该方法的作用是指在指定的日期后,按指定的间隔周期无限循环的执行某一任务。public class Run { static public class MyTask extends TimerTask { @Override publi
2021-05-13 15:58:51
110
原创 2021-05-13
方法boolean tryLock(long timeout,TimeUnit unit)的作用,如果锁给定等待时间内没有被另一个线程保持,且当前线程未中断,则获取该锁。public ReentrantLock lock = new ReentrantLock(); public void waitMethod() { try { if (lock.tryLock(3, TimeUnit.SECONDS)) { System.out.println(" " + Thread.
2021-05-13 13:38:24
51
原创 thread的一些api
Thread.activeCount():获取当前程序中存活的线程数public Thread[] findAllThread(){ ThreadGroup currentGroup =Thread.currentThread().getThreadGroup(); while (currentGroup.getParent()!=null){ // 返回此线程组的父线程组 currentGroup=currentGroup.getParent();
2021-05-12 10:17:40
49
原创 2021-05-11
可用命令jps来查找当前运行的进程C:\Program Files (x86)\Java\jre6\bin>jps查询堆栈信息jstack -l 3032jstack -l 3032Java stack information for the threads listed above:==================================================="Thread-1": at test.DealThread.run(DealThr
2021-05-11 09:12:58
52
原创 读取配置文件属性工具类
// 读取配置文件工具类public Prop(File file, String encoding) { this.properties = null; if (file == null) { throw new IllegalArgumentException("File can not be null."); } else if (!file.isFile()) { throw new IllegalAr
2021-05-08 15:49:37
105
原创 java中“...“ 用法
java 中"…"是Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Object[]。上测试代码// An highlighted blockpublic class Jctest2 { public static void main(String[] args) { // TODO Auto-generated method stub //测试可变长度的参数列表与数组
2021-05-08 11:06:04
1822
原创 生产常用命令
查看指定端口的进程:# netstat -anp | grep -w 8161tcp6 0 0 :::8161 :::* LISTEN 13012/java # ps -ef | grep 13012指定文件查看配置文件# cat /opt/mysql/etc/.account.cnf |grep mysql:mysql:R70uSjEM查看指定端口的连接情况
2021-05-08 10:36:03
51
原创 @ConditionalOnProperty的作用和用法
在spring boot中有时候需要控制配置类是否生效,可以使用@ConditionalOnProperty注解来控制@Configuration是否生效.@Configuration@ConditionalOnProperty(prefix = "filter",name = "loginFilter",havingValue = "true")public class FilterConfig { //prefix为配置文件中的前缀, //name为配置的名字 //havingValue是与
2021-05-08 10:32:15
133
原创 关于一些注解的含义
关于一些注解的含义1.标记在接口上,“函数式接口”是指仅仅只包含一个抽象方法的接口// An highlighted block@FunctionalInterface2.这其中提到了 @Deprecated 注解,在之前的开发过程中没遇到过这个注解,于是查了下他的功能:简单来讲就是,若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。// An highlighted block@Deprecat
2021-05-08 09:29:13
94
原创 笔记(判空的用法)
笔记// An highlighted block判空新用法public static void validateQueueNameAndMessage(String queueName, Object message) {Assert.notNull(queueName, "queueName can not be null");Assert.notNull(message, "message can not be null");}//三目运算符:嵌套层数深,可读性不好 i
2021-05-08 09:21:28
58
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人