JAVA
JAVA相关记录
卖琴的
这个作者很懒,什么都没留下…
展开
-
浅谈Callable与Future
Callablejava5引入java.util.concurrent包,其中包含了locks包、atomic包、线程池(Executors)、阻塞队列(BlockingQueue)、Callable、Future等相关多线程解决方案。Callable的出现解决Runable没有返回值,无法抛出异常的问题。同时先线程池Executors 提供了许多方法,可以操控 Callable 在线程池中运行。FutureExecutors 执行 Callable 时会返回一个 Future 对象。使用 Futu原创 2020-11-05 18:18:18 · 258 阅读 · 0 评论 -
Java的引用机制
java引用机制对于Java中这几种引用的理解,有助于理解JVM的回收内存的机制。先说下在JVM执行垃圾回收时,如何处理它们所引用的对象:1)强引用,任何时候都不会被垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError。2)软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收。3)弱引用,只要垃圾回收器运行,就肯定会被回收,不管还有没有可用内存。4)虚引用,虚引用等于没有引用,任何时候都有可能被垃圾回收。强引用(Strong Refer原创 2020-10-29 16:25:50 · 253 阅读 · 0 评论 -
在静态方法和非静态方法上加 Synchronized的区别
Synchronzied 修饰非静态方法==》对象锁Synchronzied 修饰静态方法==》其实是类锁,因为是静态方法,它把整个类锁起来了;情况1:同一个对象在两个线程中分别访问该对象的两个同步方法结果:会产生互斥。解释:因为锁针对的是对象,当对象调用一个synchronized方法时,其他同步方法需要等待其执行结束并释放锁后才能执行。情况2:不同对象在两个线程中调用同一个同步方法结果:不会产生互斥。解释:因为是两个对象,锁针对的是对象,并不是方法,所以可以并发执行,不会互斥。形象的来说就原创 2020-09-07 19:25:56 · 523 阅读 · 0 评论 -
线程的生命周期
线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。新建:就是刚使用new方法,new出来的线程;就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调原创 2020-09-07 19:16:49 · 410 阅读 · 0 评论 -
java为什么是单继承
Java是从C++语言上优化而来,而C++也是面向对象的, c++是多继承,经常出问题。 假设说Java是可以多继承的,比方说,我现在有一个A类,我又编写了两个类B类和C类,并且B类和C类分别继承了A类,并且对A类的同一个方法进行了重写。接下来,我再写了一个D类,并且D类以多继承的方式同时集成了B类和C类,那么D类也会继承B类和C类从A类中重写的方法,那么问题来了,D类也开始犯迷糊了,我到底应该哪个继承哪个类中的方法呢,因为类是结构性的,这样就会造成结构上的混乱。这就是多继承的菱形继承问题。原创 2020-09-07 19:09:16 · 375 阅读 · 0 评论 -
java内存泄漏的原因
静态集合类各种连接,如数据库连接、网络连接和IO连接等变量不合理的作用域:一般而言,一个变量的定义的作用范围大于其使用范围,很有可能会造成内存泄漏。另一方面,如果没有及时地把对象设置为null,很有可能导致内存泄漏的发生。内部类持有外部类:改变哈希值缓存泄漏监听器和回调内存泄漏八种原因总结...原创 2020-09-07 19:07:24 · 115 阅读 · 0 评论 -
阻塞队列
什么是阻塞队列?java.util.concurrentpublic interface BlockingQueue extends Queue阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。方法\处理方式原创 2020-08-31 20:44:03 · 155 阅读 · 0 评论 -
CountDownLatch
简单易懂的文章转载 2020-08-31 20:01:45 · 113 阅读 · 0 评论 -
JAVA线程池ExecutorService
线程池的优势降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。提供更强大的功能,延时定时线程池。线程池主要参数public ThreadPoolExecutor(int corePoolSi原创 2020-08-31 17:33:24 · 256 阅读 · 1 评论 -
WeakHashMap
java引用机制对于Java中这几种引用的理解,有助于理解JVM的回收内存的机制。先说下在JVM执行垃圾回收时,如何处理它们所引用的对象:1)强引用,任何时候都不会被垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError。2)软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收。3)弱引用,只要垃圾回收器运行,就肯定会被回收,不管还有没有可用内存。4)虚引用,虚引用等于没有引用,任何时候都有可能被垃圾回收。强引用(Strong Refer原创 2020-08-29 10:08:31 · 229 阅读 · 1 评论 -
JAVA面试题2020
Springcloud 主要组件请分别说明适合使用容器和虚拟机的场景请描述微服务架构的特点和适用场景清楚描述常见的23种java设计模式(中的三种)请说明CMS或G1垃圾回收器的特点和优化思路描述HDFS客户端向服务器端写入文件的过程当节点故障时,HBase节点如何保证数据不丢失Web开发考虑哪几个方面的安全问题请说明关系数据库几种事务等级的级别Linux系统通过应用的端口获取应用的内存和cpu使用情况为保证关系型数据库的性能,需要在数据库结构设计时考虑哪些因素举例3种java并发集.原创 2020-08-12 10:32:25 · 2021 阅读 · 1 评论 -
SpringBoot配置文件读取、环境切换
面试机试:做一个根据路径动态读取propertis文件的Demo可以下通过两种方式实现:1.使用java.util.Properties通过反射将配置文件读取到实体类中2.通过SpringBoot的ConfigurationProperties自动读取文件,然后在pom文件中配置profiles,通过profiles切换Spring配置文件与properties文件第一种方法比较古老了工具类代码public static <T> T readPropertiesToObject(Cl原创 2020-05-15 16:41:25 · 446 阅读 · 0 评论 -
java通过反射修改变量的值
修改带有将带有annotation的变量需要setAccessible(true)后才能修改变量的值public BaseCrawlerRequest convertToCrawlerBean(BaseCrawlerRequest bean) throws Exception { Field nameField = getNameField(bean.getClass());...原创 2020-05-07 16:44:47 · 1647 阅读 · 1 评论 -
Springboot上传下载文件,poi解析文件
上传Excel模板在controller中使用MultipartFile接收文件 /** * @Description: 通过Excel批量添加微信号 * @return: String * @Author: xpWang * @Date: 2019-12-11 */ @PostMapping("/addWeixinByExcel")...原创 2020-04-09 16:53:19 · 463 阅读 · 0 评论 -
Jvm加载顺序
爱的色放aasdf s原创 2020-04-04 10:58:37 · 236 阅读 · 0 评论 -
dom4j操作 xml文件
父类:public class BaseXMLConfig { public static final Logger logger = LogManager.getLogger(BaseXMLConfig.class); public static void store(Document doc,File xmlConfig) throws IOException{原创 2017-01-05 15:37:21 · 282 阅读 · 0 评论 -
树列表查询JAVA+MYSQL
项目中用到的服务器返回给前端树列表代码实现使用sql将根节点下所有子节点都查询出来返回给Java端,只根据parentId查询,没有Level等级的需求select node_id,parent_id,ischild from ( select t1.node_id, parent_id, if(find_in_set(parent_id, @pids) > 0, @p...原创 2020-01-15 16:57:04 · 1276 阅读 · 0 评论 -
java程序调用wget.exe下载文件
wget命令e:\wget -r -c --limit-rate=1M -t 10 -T 60 -o d:\wgetlog\result.txt -O E:\projectTest/rhq-agent-update.log http://xxxx:8280/../opt/app/install/rhq-agent-update.log程序关键代码String cmd = wgetPath+"原创 2017-01-10 11:00:51 · 2785 阅读 · 0 评论