- 博客(14)
- 收藏
- 关注
原创 一些面试题整理
那么为什么添加 synchronized 也能保证变量的可见性呢? 因为: 线程解锁前,必须把共享变量的最新值刷新到主内存中。 线程加锁前,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存 中重新读取最新的值。 volatile 的可见性都是通过内存屏障(Memnory Barrier)来实现的。 synchronized 靠操作系统内核互斥锁实现,相当于 JMM 中的 lock、unlock。退 出代码块时刷新变量到主内存。 ...
2022-02-11 09:31:37
432
1
原创 一些stream流用法
一些stream流用法 ```java // An highlighted block departmentMap = 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
92
原创 2021-06-24
@Accessors(chain=true) 链式访问,该注解设置chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。 // An highlighted block package com.pollyduan; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain=true) public class User { private In
2021-06-24 19:10:32
93
原创 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
144
原创 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
75
原创 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
88
原创 2021-05-11
可用命令jps来查找当前运行的进程 C:\Program Files (x86)\Java\jre6\bin>jps 查询堆栈信息 jstack -l 3032jstack -l 3032 Java stack information for the threads listed above: =================================================== "Thread-1": at test.DealThread.run(DealThr
2021-05-11 09:12:58
71
原创 读取配置文件属性工具类
// 读取配置文件工具类 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
147
原创 java中“...“ 用法
java 中"…"是Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Object[]。 上测试代码 // An highlighted block public class Jctest2 { public static void main(String[] args) { // TODO Auto-generated method stub //测试可变长度的参数列表与数组
2021-05-08 11:06:04
2060
原创 生产常用命令
查看指定端口的进程: # netstat -anp | grep -w 8161 tcp6 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
74
原创 @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
168
原创 关于一些注解的含义
关于一些注解的含义 1.标记在接口上,“函数式接口”是指仅仅只包含一个抽象方法的接口 // An highlighted block @FunctionalInterface 2.这其中提到了 @Deprecated 注解,在之前的开发过程中没遇到过这个注解,于是查了下他的功能: 简单来讲就是,若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。 // An highlighted block @Deprecat
2021-05-08 09:29:13
133
原创 笔记(判空的用法)
笔记 // 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
88
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人