
java
文章平均质量分 82
bobo1356
bboy+程序猿
展开
-
java监听目录或者文件的变化
一、场景我们可能需要监听目录或者文件的变化,做出相应操作。比如 配置文件变化后,需要重新加载配置。二、Java监听目录变化的实现方式参考:https://zq99299.github.io/java-tutorial/essential/io/notification.html#watch-%E6%9C%8D%E5%8A%A1%E6%A6%82%E8%BF%B0三、注意事项1、监听的事件发生时,java应用程序不会实时感知到,而是有一定的间隔。监听程序默认10s检测一次。代码:Pollin原创 2021-09-09 21:26:29 · 2335 阅读 · 1 评论 -
数据库单个插入操作转为批量插入
在业务中,我们常常会遇到很多单行插入的场景,当插入的并发数比较小时,并不会有什么问题。但是一旦插入的速度大大加快时,可能就会遇到数据库插入瓶颈。有人用多线程去并行插入,其实这样不仅没有解决问题,反而比单线程插入的速度更慢,因为多线程插入时,会竞争数据库自增锁。此时我们更应该考虑的是将单个插入操作,改成批量插入操作。这样不仅减少了通信次数,同时也减轻了数据库压力,可以更快地插入。但是很多业务场景就...原创 2020-03-20 17:09:35 · 1104 阅读 · 0 评论 -
ArrayBlockingQueue源码解析
ArrayBlockingQueue源码解析BlockingQueue是阻塞队列,首先是一个循环队列,支持入队出队操作;同时可以在队列满时阻塞入队,在队列空时阻塞出队。(类似一种消费者生产者模式)ArrayBlockingQueue显然是通过数组来实现阻塞队列。那么它是如何通过数组来实现队列呢?又如何实现阻塞入队出队呢?同时它又是线程安全的类,它是如何保证在多线程的情况下依然保证入队出队的正...原创 2020-01-16 22:59:47 · 173 阅读 · 0 评论 -
PriorityQueue源码学习
上个博客学习了堆的基本性质和操作,这次来学习一下java中优先队列(堆)的具体实现。1.定义public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable 2.常量和字段 /** 默认初始容量 11 */ private static fina...原创 2020-01-12 00:52:33 · 255 阅读 · 0 评论 -
LinkedHashMap实现LRU原理探究
LRU(least recently used)最近最少使用,是一种常用的页面置换(缓存淘汰)算法。其他在java中,LinkedHashMap就实现了LRU。那么LinkedHashMap是如何实现的呢?总体来说就是基于 HashMap+链表 ,使用HashMap保证查找效率是O(1),使用链表将所有节点连成一个队列,保证顺序性,也方便头节点删除和尾节点插入,插入或者删除也是O(1)。1...原创 2020-01-10 15:06:40 · 575 阅读 · 0 评论 -
ConcurrentHashMap源码解析
ConcurrentHashMap1. 定义public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable 2.常量和字段常量 /** * 最大容量,32位int型因为有2位用作控制...原创 2020-01-07 16:38:23 · 138 阅读 · 0 评论 -
HashMap源码简单解析
HashMap1.定义public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable2.常量和字段值常量//默认初始容量 16static final int DEFAULT_INITIAL_CAPACITY = ...原创 2020-01-06 21:48:17 · 146 阅读 · 0 评论 -
两个线程交替打印1-100的奇数和偶数
问题定义启动a、b两个线程,由这两个线程打印出1到100共一百个数字。要求:a线程打印1、3、5、7等奇数,b线程打印2、4、6、8等偶数。依次串行打印,即打印完1之后,再打印2,然后是3、4、5…直到100,全部打印完成后,进程能正常结束。解决思路两个线程交替打印,就是要两个线程之间进行同步,走走停停。线程的同步可以使用Object类自带的wait和notify(或者notify...原创 2019-12-05 16:59:06 · 8184 阅读 · 3 评论 -
限流算法与简单实现
一、限流的场景在解释「服务限流」之前,我们来看一下前些时间网上很火的一个段子,说的是新浪微博的一名工程师正在家里办婚礼,突然接到公司的电话要紧急处理线上流量激增的问题,那天应该是某当红明星突然在微博上公布恋情,微博流量突增好几倍,导致系统功能出现不稳定,用户访问不畅。然后这名工程师就只好晾开新娘,在婚礼现场穿着西装打开笔记本调试代码了。通常来说,我们的应用服务器的资源是有限的,可以同时处理的请...原创 2019-03-11 20:45:07 · 737 阅读 · 0 评论 -
java垃圾收集器与内存分配策略(1)
概述让我们先想一想,如果让我们完成垃圾收集(Grabage Collection, GC),我们需要考虑哪些事情? (1)首先肯定需要先知道哪些是垃圾,哪些不是。(2)然后再确定什么时候回收垃圾。(3)最后就是如何去回收。 还需要注意的一点是: 程序计数器,虚拟机栈、本地方法栈都是线程所私有的,它们随线程而生,也随线程而灭。当方法结束或线程结束时,对应的内存自然就跟随着回收了。这三个区域的内存原创 2017-05-30 11:36:15 · 340 阅读 · 0 评论 -
java内存区域
java虚拟机运行时数据区域方法区(Method Area) 堆(Heap) 虚拟机栈(VM Stack) 本地方法栈(Native Method Stack) 程序计数器(Program Counter Register) 其中,方法区和堆为所有线程所共享,其余区域为线程私有。程序计数器作用: 作为当前线程的所执行的字节码的行号指示器。 每个线程都有一个程序计数器。如果线程执行的是原创 2017-05-30 10:23:29 · 323 阅读 · 0 评论 -
JAVA中如何设置图片(图标)自适应Jlable等组件的大小
一、问题:一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小,所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件二、解决这个问题,需要用到两个类:java.awt.Image类javax.swing.ImageIcon类1.java.awt.Image是个抽象类,这个过程中用到的参数和函原创 2016-10-25 01:05:18 · 49603 阅读 · 6 评论 -
用java做一个简单的英文翻译程序
1.功能简介将文本文件中的英文转换为对应的中文词库如下:源文件:翻译后的文件:输入源文件路径,将翻译后的内容输出到result.txt文件中。2.重要技术(1)如何载入词库文件 因为词库文件是 kry=value的形式,所有可以用到Properties类的load函数(2)如何将源文件中的一段英文分理处一个个的单词可以用StringT原创 2016-10-22 15:12:36 · 17892 阅读 · 1 评论 -
java笔记一
使用窗口:: * javax.swing.JFrame 使用最多 * javax.swing.JDialog 特指对话框 * javax.swing.JWindow 没有标题栏 * javax.swing.JOptionPane 消息框,输入框,确认框 控件(组件:Component):javax.swing. * 1.面板:JPanel * 2.按钮原创 2016-05-29 23:04:10 · 368 阅读 · 0 评论