自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 Elasticsearch中的动态DSL解决方案

使用mybatis的动态标签解析功能实现ES的动态dsl查询

2024-02-09 12:06:34 1150

原创 深入理解ES的倒排索引

深入了解倒排索引的底层数据结构和算法

2024-02-08 22:27:08 1904

原创 RedissonClient妙用-分布式布隆过滤器

基于Redisson实现的分布式布隆过滤器在大数据量下文件去重方案介绍

2024-02-08 20:39:01 1924

原创 怎么判断一个链表是否成环?怎么找到成环的起点

环形链表的道

2024-01-31 21:18:53 464

原创 BTC的数据结构Merkle Tree和Hash pointer

BTC的底层数据结构介绍

2024-01-28 13:43:02 480 1

原创 区块链中分叉机制

公有链中的分叉原理介绍

2024-01-26 12:25:19 689

原创 线程池ThreadPoolExecutor中ctl是什么?

先看一下注释,原文如下/***/简单翻译一下,就是 ctl是一个线程安全的int变量,用于存储了两个概念的字段,第一个是当前线程池中的工作线程数,另外一个是当前线程池的状态。通过上面案例的分析,想必大家对线程池中的ctl设计已经有所了解了。不过,在实际的业务开发中,我们还是要尽量避免这种写法,因为这样操作可能减少了变量,但是却增加了业务代码的复杂度,我们要好好思量下,一定要做好权衡!

2023-12-20 14:24:24 249

原创 区块链介绍

初识区块链的概念

2023-11-27 20:04:13 1094

原创 计算机中怎么依据字节数组找到对应的字符

UTF-8编码问题分析

2023-11-11 21:40:22 225

原创 shardingjdbc分库分表数据均衡性讨论

考虑数据扩展性和数据均衡性以及数据库的压力负载,在大数据量下shardingJDBC分库分表的实践

2023-09-23 10:21:47 298

原创 线程池异常日志处理

线程池日志处理策略~

2022-04-30 22:49:39 1372

原创 证明程序会发生指令重排

反证法证明java程序会发生指令重排~

2022-03-16 22:20:31 603

原创 利用位运算实现一个字段表示多个属性

前言在数据库设计中,经常出现这样一种场景,如:某个系统的用户表,现阶段用户存在【是否新手】、【是否风险评测】、【是否实名认证】、【是否投资】等四个并存的属性,那么你会怎么设计表结构呢,在用户表定义四个字段?当然这样肯定是可行的,但是你设想这样一个问题,随着业务的扩展,用户可能会增加其他的属性比如【是否vip】等等属性,那岂不是还需要alter用户表结构,这种修改表结构不仅影响性能同时修改的地方...

2019-09-29 19:54:17 1636 1

原创 springBoot集成swagger2

前言作为一个后台开发人员,写接口文档和接口测试无疑是最令人痛心疾首的事情了,随着业务的繁复,接口文档的维护变得更加困难了,因此,在本章将学习swagger2,有了它以后接口测试将变得更加的方便,最重要的是无需手动维护接口文档了,和前端工程师的合作将变得更加灵活。springBoot集成swagger2添加maven依赖<!--引入swagger2--><dep...

2019-03-11 19:57:47 201

原创 httpClient详解

前言当我们在实际开发中往往需要用到第三方的数据,比如天气数据、彩票中奖信息数据等等,想通过程序抓取对应的数据信息,我们可以用到Apache旗下的httpclient来解决。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。在本篇中httpclient的版本号为4.5.2,将通过如下几个案例来说...

2019-03-03 15:27:13 1354

原创 Linux环境下定位CPU飙高的原因

前言实际开发与维护java项目的时候,经常会遇上cpu消耗过多的情况,导致接口响应迟缓。造成cpu过高的原因很多,比如线程互相等待,线程死锁,网络带宽跟不上等等。本文将通过jdk自带的工具jstack查询日志定位原因。操作步骤查找java进程通过top命令查询消耗cpu最高的java进程,然后shitf+p 倒序,如图:user表示该进程的所属用户,在后续的jstack中需...

2019-02-24 11:18:43 1346

原创 Lambda表达式详解(二)

概要本篇将通过几个案例来说明Lambda和Stream的联合使用,通过本篇你将发现使用Lambda能在一定的场景下大大的简化代码。案例Filter的使用测试案例 @Before public void init() { log.info("begin to init data!"); ruleList = new ArrayLis...

2018-08-11 17:32:17 303

原创 Lambda表达式详解(一)

Lambda表达式是什么Lambda表达式是Java SE 8中一个重要的新特性 lambda表达式允许你通过表达式来代替功能接口 Lambda表达式还增强了集合库Function/Stream使用Lambda表达式的优点简化了匿名委托的使用,让你让代码更加简洁,优雅Lambda表达式应用场景使用ForEach遍历自定义一个beanpackage com.zyxr....

2018-08-11 16:54:16 3348

原创 MongoDB入门教程

全文概要mongoDB是一个基于分布式文件存储的开源数据库系统,是一个比较典型的Nosql数据库。本文主要讲述mongoDB常见的操作。和关系型数据库比较下面通过一张图,来说明mongoDB和关系型数据库的区别:mongoDB插入数据db.Activity_Offer.insert({"activity_id":180518,"available_offer_amount":20,"cost_re...

2018-05-16 18:53:04 600

原创 eclipse集成jad反编译插件

全文概要在开发中可能会需要查看源码,用eclise集成jad反编译插件后,就能方便快捷的查看源码。本文主要介绍eclipse开发工具集成jad反编译插件。操作步骤jad资源准备sourceforge.net/projects/jadclipse/ 下载jad的jarhttp://varaneckas.com/jad/   下载jad的可执行文件与eclipse集成将net.sf.jadclipse...

2018-03-24 21:38:10 3737

原创 阻塞队列BlockingQueue的应用

全文概要本文将介绍java.util.concurrent包下一个重要的接口BlockingQueue,主要内容如下:介绍BlockingQueue常见的API以及他们之间的区别;比较几个常见的BlockingQueue的实现类;阻塞队列经常用于生产者/消费者的场景,通过一个案例来实现。BlockingQueue常见APIBlockingQueue常见的API如下图所示:抛出异常是指当阻塞队列满的...

2018-03-08 16:19:50 283

原创 深入理解ThreadLocal

全文概要本文主要介绍lang包下的ThreadLocal对象,主要内容如下:简单分析下ThreadLocal源码通过一个案例说明ThreadLocal的使用规则和场景ThreadLocal源码分析在ThreadLocal中最重要的就数get()/set()方法了,源码如下:/** * Returns the value in the current thread's copy of th...

2018-03-07 17:54:49 234

原创 ibatis中常见的sql写法和注意事项

全文概要本文主要着手于Apache推出的一种轻量级对象关系映射(ORM)框架--ibatis,介绍一些常见的sql配置写法和注意事项,欢迎补充!本文主要内容如下:insert操作返回主键处理clob大数据类型调用procedure调用function传参为List返回结果为Listinsert操作返回主键ibatis中有针对插入数据返回主键的配置,在实际开发中是很常见的,配置写法如下:<in...

2018-03-05 18:05:15 3212

原创 CountDownLatch和CyclicBarrier和Semaphore应用

全文概要本文将介绍并发库中三个线程辅助类,CountDownLatch、CyclicBarrier和Semaphore。本文主要内容如下:通过一个案例介绍CountDownLatch的用法和使用场景;通过一个案例介绍CyclicBarrier的用法和使用场景;通过一个案例介绍Semaphore的用法和使用场景。CountDownLatchCountDownLatch简介CountDownLatch...

2018-02-28 15:16:53 243

转载 oracle中常见的sql应用

字段添加注释comment on table 表名 is 'xxxxxx'; comment on column 表名.字段名 is 'xxx'; 唯一索引约束create unique index 索引名 on 表名(列); 主键约束alter table 表名 add constraint 约束名 primary key (列) using index 索引名;创建索引create i...

2018-02-28 09:40:16 168

原创 深入理解ReentrantReadWriteLock

全文概要本文将继续讲述线程并发库,ReentrantReadWriteLock是本文的主要介绍对象。顾名思义,ReentrantReadWriteLock为可重入的读写锁。使用时,读取数据的时候上读锁,写数据的时候上写锁。读锁与读锁之间不互斥,写锁与写锁之间互斥,读锁与写锁之间互斥,这样就比synchronized的设计效率更加高明,能够最大限度的利用CPU资源解决问题。本文的主要内容如下:简单介...

2018-02-27 13:06:07 196

原创 深入理解ReentrantLock和Condition

全文概要本篇将着手线程并发库,即java.util.concurrent包中的几个重要类。线程并发库是jdk1.5引入的,并发库的引入使得多线程开发更加的灵活多变,除此之外,因为java是面向对象的语言,线程并发库的引入让java多线程编程更加正统。本文主要内容如下:介绍Lock,Condition接口;通过使用Lock和Condition来模拟生产者/消费者模型,可以和传统线程实现生产者/消费者...

2018-02-24 15:55:17 2895

原创 使用wait()/notify()模拟生产者消费者模型

全文概要在并发性编程中,经常会碰到生产者/消费者模式。本文将通过传统线程来模拟生产者/消费者模型,后续还会使用阻塞队列和Lock等来解决。本文主要内容如下:对生产者/消费者模型的解释和说明;通过wait()/notifyAll()来模拟生产者/消费者模式。生产者/消费者模型说明生产者/消费者模型在多线程中是一个比较经典的问题,涉及的对象包括“仓库”、“生产者”、“消费者”等,他们的关系如下:当仓库...

2018-02-23 17:08:48 560

原创 线程优先级和守护线程

全文概要本文主要介绍线程的优先级和守护线程。创建的线程默认的优先级是5,当然可以自行设置优先级,优先级为[1,10]区间的整数;java中有两种线程,用户线程和守护线程,可以通过isDaemon()来判断,返回true表示守护线程;用户线程一般用来执行用户级任务,而守护线程一般用来执行后台任务,除此之外,守护线程有一个重要的特性:当所有的用户线程全部执行完毕后,无论守护线程的逻辑是否完成,JVM会...

2018-02-22 18:05:14 262

原创 深入理解join()方法

全文概要本文主要介绍Thread中join()方法的使用场景。join()方法介绍代码案例package com.tml.javaCore.thread;/** * <p>Thread类中join()方法 * @author Administrator * */public class JoinDemo { public static void main(String[...

2018-02-22 15:04:40 313

原创 深入理解yield()和sleep()方法

全文概要本文主要介绍Thread类中yield()方法和sleep()方法的使用。包括以下内容:通过一个案例介绍yield()方法的使用;通过一个案例介绍sleep()方法的使用;通过以上案例比较yield()/sleep()/wait()三个方法的区别yield()方法介绍代码案例package com.tml.javaCore.thread;/**

2018-02-07 16:37:23 588

原创 深入理解线程之间的通信

全文概要本文主要介绍wait()/wait(long timeOut)/notify()/notifyAll()的基本使用情况,包括以下内容:wait()和notify()联合使用,完成线程之间的通信交互;通过一个案例说明wait(long timeOut)的用法;通过一个案例说明notifyAll()的用法;总结下notify/wait使用场景wait()/notif

2018-02-04 22:01:40 272

原创 深入理解synchronized关键字

全文概要本文主要介绍JAVA线程中synchronized关键字的用法。对于synchronized关键字主要包含以下几点:当一个线程访问某一个对象synchronized修饰的非静态方法或者代码块时,其他线程不允许访问该对象synchronized修饰的相同的方法或者代码块;当一个线程访问某一个对象synchronized修饰的非静态方法或者代码块时,其他线程不允许访问该对象sy

2018-01-26 17:59:51 227

原创 判断两个区间是否存在交集

全文概要实际开发中经常会遇到诸如同一段时间不能交叉,同一个价格区间不能交叉...等场景,关键点在于判断两个区间是否有交集。本文将分享一个快速判断两个区间是否存在交集的算法。思路分析判断两个区间是否存在交集,情况可能存在多种,一不小心,可能遗漏某一种情况。不妨换个曲线救国的思路,从反面出发,判断两个区间不交叉。可以采用一维数轴分析,如下图所示:这里是两个闭合区间的判断

2018-01-26 15:23:07 6244

原创 深入理解start()和run()方法

全文概要这篇博客主要讲述多线程中start()方法和run()方法的区别。线程中start()/run()方法的区别start():该方法是在当前线程中启动一个新的线程,而新启动的线程会调用run()方法,同时该方法不能重复调用;run()  :该方法和普通的方法一样,可以重复执行,不会创建新的线程。下面以一个小的代码案例来说明:package com.tml.java

2018-01-20 12:47:25 10103 2

原创 深入理解HashMap的存储原理

HashMap是使用频率比较高的集合容器。本文将通过一个简单的案例来挖掘HashMap的存储原理。不足之处,还请谅解!代码案例模拟Entrypackage com.tml.collection.map;import java.util.Map;/** * 模拟map的键值对entry * @author Administrator * */public c

2017-12-30 14:24:13 412

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除