java
文章平均质量分 86
行走在江湖
喜欢探索的程序员
展开
-
Java魔法类-Unsafe的使用原理
java中Unsafe是什么原理原创 2023-03-19 21:37:00 · 328 阅读 · 0 评论 -
浅析重入锁ReentrantLock与读写锁ReadWriteLock
1 Lock接口1.1 Lock与synchronized在Lock接口出现之前,Java程序是靠synchronized关键字用来实现锁功能,使用时隐式地获取和释放锁,但是它将锁的获取和释放固化了。所以,如果占有锁的线程由于要等待I/O或者其他原因(比如调用sleep方法)被阻塞了,其他线程就会只能一直等待,直到占有锁的线程释放掉锁,释放锁有以下几种情况:(1)获取锁的线程执行完了该代码块,然后会自动释放锁。(2)执行线程发生了异常,JVM会自动释放掉线程的锁。(3)占有锁的线程进原创 2022-03-18 23:22:21 · 168 阅读 · 0 评论 -
Java设计模式之策略模式和模板方法模式
前言本篇来学习下行为型模式的两个模式,策略模式(Strategy Pattern)和模板模式(Template Pattern)。策略模式简介策略模式(Strategy Pattern)属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。其主要目的是通过定义相似的算法,替换if else 语句写法,并且可以随时相互替换。策略模式主要由这三个角色组成,环境角色(Conte原创 2021-06-22 19:15:53 · 336 阅读 · 0 评论 -
阿里 Sentinel 源码解析
回首页阿里 Sentinel 源码解析总体来说,Sentinel 的源码比较简单,复杂的部分在于它的模型对于初学者来说不好理解。虽然本文不是很长,最后两节还和主流程无关,但是,本文对于源码分析已经非常细致了。阅读建议:在阅读本文前,你应该至少了解过 Sentinel 是什么,如果使用过 Sentinel 或已经阅读过部分源码那就更好了。另外,本文不涉及到集群流控。由于很多读者也没使用过 Hystrix,所以本文也不做任何对比。更新 2019-12-11:更新了滑动窗口秒级数据统计.原创 2021-06-14 11:24:16 · 469 阅读 · 0 评论 -
mysql慢查询及优化
背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。本人从2013年7月份起,一直在美团原创 2022-02-13 21:52:33 · 887 阅读 · 0 评论 -
zookeeper-实战篇
1、启动服务,客户端进行连接:2、查看节点:ls -R(递归遍历)3、创建默认节点,增删改查:顺序节点:临时节点:临时顺序节点:容器节点:原创 2021-02-07 15:50:45 · 349 阅读 · 0 评论 -
zookeeper基础篇
1、什么是zookeeper文档 https://zookeeper.apache.org/官方文档上这么解释zookeeper,它是一个分布式协调框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。zookeeper的两个核心概念:文件系统数据结构 + 监听通知机制1.1、文件系统数据结构每个子目录项都被称作为 znode(目录节点),和文件系统类似,我们能够自.原创 2020-12-05 15:41:56 · 323 阅读 · 0 评论 -
【mysql InnoDB的B+树分析】
InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块...原创 2019-08-19 14:40:35 · 1945 阅读 · 0 评论 -
【一文让你深入学习quartz】
前言 我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据,发送通知等等。换句话说就是在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活。 这种情况下使用Qu...原创 2019-07-19 18:08:37 · 534 阅读 · 1 评论 -
最全的Redis工具类
RedisUtil介绍 最全的Java操作Redis的工具类,封装了对Redis五种基本类型的各种操作,力求符合Redis的原生操作,使用StringRedisTemplate实现!快速导航:key命令操作 | String数据操作 | Hash数据操作 | List数据操作 | Set数据操作 | zSet数据操作相关知识:Redis基础知识补充 | Spring集成Redis | ...原创 2019-07-12 09:31:00 · 3709 阅读 · 3 评论 -
concurrentHashMap解析这篇文章就够了
实现原理ConcurrentHashMap使用分段锁技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。如下图是ConcurrentHashMap的内部结构图:从图中可以看到,ConcurrentHashMap内部分为很多个Segment,每一个Segment拥有一把锁,然后每个Se...原创 2019-07-04 17:30:39 · 1529 阅读 · 1 评论 -
文件的分割和合并
文件的操作文件的分割public static void Split(String SrcFilePath,int SingleGoalFileSize,String GoalFileDirectory){ //SingleGoalFileSize 单位:MB ,校验路径和目录 if("".equals(SrcFilePath) || SrcFilePath...原创 2019-07-12 19:49:39 · 631 阅读 · 1 评论 -
javacv之视频抽帧
视频抽帧可以做一些处理,比如水印,去水印等操作,然后再合成视频。下面直接上代码:引入maven步骤看javacv去水印的文章:https://blog.csdn.net/weixin_38008100/article/details/89216936这里直接上关键操作: /** * 视频文件指定时间段的帧截取 * @param file * @param ...原创 2019-04-11 19:02:14 · 3471 阅读 · 0 评论 -
javacv实现图片去水印
最近工作需求要做图片去水印的功能,研究了一段时间发现javacv能做这个功能,然后总结了一下。首先导入maven<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> ...原创 2019-04-11 18:12:22 · 3861 阅读 · 4 评论 -
解决tomcat启动慢的问题
阿里云下的服务器安装jdk1.8和tomcat之后出现了一个问题,初次运行tomcat没有问题,可以正常访问tomcat首页,但是关闭之后再重启就发现tomcat首页刷不出来。而且再次关闭之后还报错了。针对tomcat启动慢的问题,有以下解决方案: 报错信息上显示Tomcat may not be running,说明tomcat还没有启动,说明之前开启tomcat就出现问题了。方案一:...原创 2018-08-10 21:15:43 · 10087 阅读 · 0 评论 -
使用java在项目完成手机短信登录
手机号登录在现在的项目中用的场景非常多,实现起来也不难,今天我们就一起来通过演示实现登录过程。 <1>首先需要注册个第三方的账户,比如秒嘀科技等,然后拿到三个参数值:QUERAY_PATH ACCOUNT_SID AUTH_TOKEN <2>编写获取验证码类getMessage.javaprivate static final String QUER...原创 2019-06-19 14:01:42 · 28431 阅读 · 128 评论 -
java面试题总结(1)
1、介绍Collection框架的结构Collection的两个主要实现类:list 、set 。list 元素是有序的、可重复。List接口中常用类 :Vector: 线程安全,但速度慢,已被ArrayList替代。底层数据结构是数组结构ArrayList:线程不安全,查询速度快。 底层数据结构是数组结构LinkedList:线程不安全。增删速度快。 底层数据结构是列表结构set 元...原创 2018-09-29 11:57:46 · 206 阅读 · 0 评论 -
java解析xml的四种方式分析
一、介绍及优缺点分析DOM(Document Object Model)DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。【优点】①允许应用程序对数据和结构...原创 2018-11-29 10:45:08 · 250 阅读 · 0 评论 -
STS快捷键总结
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)...原创 2018-12-02 21:18:12 · 6097 阅读 · 3 评论 -
java8日期类
java8的日期处理优势:java.util.Date 和 SimpleDateFormatter 都不是线程安全的,而 LocalDate 和 LocalTime 和最基本的 String 一样,是不变类型,不但线程安全,而且不能修改。java.util.Date 月份从0开始,一月是0,十二月是11。java.time.LocalDate 月份和星期都改成了 enum ,就不可能再用错了...原创 2018-12-20 10:50:42 · 3958 阅读 · 0 评论 -
Idea 常用的配置
IntelliJ IDEA 自动导入包 关闭重复代码提示第一个是自动优化导包,第二个是去掉没用的包。原创 2019-01-04 09:32:18 · 402 阅读 · 0 评论 -
BeanUtils.copyProperties()的有效使用
BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。1、字段不统一的情况如果User和UserActionForm 间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,...原创 2019-01-13 23:09:17 · 1708 阅读 · 0 评论 -
Idea 快捷键使用
1、常使用的Ctrl + E 最近打开的文件Ctrl + W 最大化窗口Shift+ Click 可以关闭文件Alt+Insert 可以生成构造器/Getter/Setter等Alt + Shift + R 动...原创 2019-02-28 18:06:19 · 384 阅读 · 0 评论 -
ConcurrentHashMap详解
HashMap非线程安全的,HashTable是线程安全的,所有涉及到多线程操作的都加上了synchronized关键字来锁住整个table,这就意味着所有的线程都在竞争一把锁,在多线程的环境下,它是安全的,但是无疑效率低下的。ConcurrentHashMap(JDK1.7)在JDK1.7中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成的...原创 2019-03-08 17:50:01 · 881 阅读 · 0 评论 -
Java中的23种设计模式详解
Java开发中的23种设计模式详解(转) 设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都...转载 2018-07-26 17:09:36 · 422 阅读 · 0 评论