自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM锁机制

感情不顺,事业不顺,咱们来搞学习啊。一、列举锁的分类(一)偏向锁其实在大部分情况下,一个同步方法其实只会被一个线程占用,而同一个线程是不会存在并发的,所以也不需要过多的维护并发的线程切换信息。因此偏向锁认为,只要一个锁只被一个线程占用,那么就不需要做过多的处理。(二)轻量级锁在偏向锁的基础上,如果出现并发了,那么就会如何呢?轻量级锁的设计便是针对这种情况,实际上大部分情况下,一个锁即使被多个线程使用,但是大部分情况下都不会出现一个线程等待另一个线程释放锁的情况。所..

2020-08-10 01:02:29 429 1

原创 如何实现分布式搜索(二)简单实现倒排索引表与数据导入

在上一节中,我们使用了HashMap来模拟trie字典树,通过使用字典树,我们就能够将一段字符串中的关键词给提取出来。那么现在我们要实现两件事情即可:一、数据导入问题所在:所谓巧妇难为无米之炊,虽然我不是巧妇,也不会做饭,但我会吃啊~回归正题,既然是做搜索,那你至少得有数据,有人会说:直接用数据库不就好了?显然这样是不行得,数据库封装得太好了,因此你根本无法修改它的内部结构...

2020-03-18 19:31:45 597 2

原创 JDK源码由浅入深(二)从源码分析ArrayList和FastList

上一期分析了Object,这一期分析ArrayList,也是用的最多的List。当然有人会问,FastList是什么?FastList是由SpringBoot提供的默认数据库连接池----->hikari连接池util包下的集合类,起名字叫做FastList可以看出来这个List有多快。。本人膨胀的表示我能手写ArrayList,虽然人家手写的叫做FastList,但是我也不赖啊...

2020-03-18 11:52:01 374 1

原创 JDK源码解读由浅入深(一) 从源码分析equals和==

好久没写代码,也不知为何,上一趟csdn,难的看不懂,简单的不屑看,眼高手低说的就是我了。。也不知道从什么地方提高自己,对我来说,什么东西似乎都能说上一点,但是再往后,知识储备就不足了,再继续写下去也怕误人子弟。也许有生之年,我能补完自己之前埋下的坑呢?。。这次准备长期写下去的就是源码解读,有一说一,我不喜欢像某些csdn的5年,10年的账号一样,一天到晚发一些基础知识,啃老本,我甚至怀疑...

2020-03-14 19:34:43 272

原创 如何实现分布式搜索(一)实现简单的分词器

今年作为本命年,开头就是一路辛酸史,不知道疫情啥时候结束,先给大家拜个年~作为一个懒鬼,都闲的更新博客了,我还能说啥????这次更新的主题是对搜索模块的分析,希望在我写完时,疫情结束~一、搜索功能分析搜索可以说是咱们生活中非常常见的一个功能了,基本上只要是个互联网公司都离不开搜索模块,但是实现它的方案却有点麻烦。众所周知,咱们的数据都是从数据库来的,因此一讲到搜索,我们就会想能...

2020-02-04 18:33:11 798

原创 单例模式——线程同步与线程安全分析

说起单例模式,大家都不会陌生,就拿懒汉式单例模式做介绍,最简单的写法如下:public class Single { private static Single single; private Single(){ } public static Single getInstance(){ if(single==null){ ...

2019-10-08 17:45:08 447 2

原创 HashMap底层源码解析

目录一、分析HashMap的数据结构1.使用数组存储,加快访问速度2.数组中的链表,解决hash冲突3.使用红黑树优化链表,防止大量hash冲突二、HashMap主要源码解读三、总结一、分析HashMap的数据结构在看源码之前,了解一下它的数据结构和运行过程,才能更快更加有效率的读懂源码。1.使用数组存储,加快访问速度HashMap实际存储...

2019-09-16 16:29:04 886 2

原创 多线程(二)源码分析1,线程和任务的创建

在上一节线程池使用中总结了线程池的一些常用的构造和基本的使用,其中也有大部分知识点,比如Java提供的四个基本的线程池配置,线程的特性,volatile,synchronized等关键字并没有提到。整个Java多线程的使用需要学习的东西真的很多,懒人博主不想写博客.jpg。多线程的简单实现相信大部分人在读懂线程池的构造,明白部分设计模式后都可以手写出来,但是本着对于源码怀着敬畏之心的想法,还...

2019-09-15 15:29:44 196

原创 多线程(一) 线程池的原理和构造

一、线程池概述线程经常用来同时处理一个程序的多个任务,但是在并发任务非常多并且处理时间短的情况下,使用线程就需要面临一个问题,假设我们把线程创建的时间看做T1,线程执行任务的时间看做T2,线程销毁的时间看做T3,学过小学数学的都知道,只有当T2的时间足够大时,这个线程才能执行更多的任务,而不是把时间花费在创建和销毁上。然而实际开发中,很少能人为控制T2的时间,因此,如何缩减T1和T3的时间...

2019-09-12 17:35:38 254

原创 JDBC中Class.forName()的作用以及实现jdbc驱动

Class.forName()的作用仅仅是加载一个类,并且返回该类对应的一个class对象。原本是用来做反射时使用的类和方法,但是在jdbc中为什么需要使用呢?这个不得不提到jdbc的机制,jdbc本身仅仅是一套接口,接口中是没有实现数据库的连接的,同时,jdbc使用DriverManager类来代理真正的Driver类,真正的连接的实现需要依靠数据库厂商提供的jdbc驱动包。当...

2019-07-22 16:08:07 2875 8

原创 代理模式——用法与动态代理底层详解

代理模式作为框架中经常使用的设计模式,它对代码的拓展性提升可以说是相当高,从aop的实现,到单元测试,再到Mybatis的Mapper接口实现类,都有代理模式的影子。本篇主要讲解代理模式的使用,动态代理的功能和JVM底层如何处理动态代理。目录一、静态代理的实现1.实现一个房东2.实现黑中介3.租房试一试4.静态代理如何玩出花来?二、动态代理的实现1.黑中介生成器...

2019-06-28 09:50:54 503

原创 通过反射实现Mybatis注解开发@Select

在mybatis中,可以通过注解@Select(sql语句)对接口进行注释,并且实现开发,那么,如何自己实现呢?首先需要对注解和反射机制具有一定的了解。这些属于基础知识,这里不赘述。一、测试项目目录结构使用的测试数据库是Oracle数据库,使用的表是scott用户下的dept表。(这里使用什么数据库并没有什么意义)Dept.java:这是用来保存实体数据的类,查询的数据最终...

2019-06-27 17:43:05 1113 1

原创 SQL六大约束

一、六大约束条件1.1 not null非空约束该字段的值不能为空。1.2 default默认值约束如果插入数据时,该字段没有赋值,则为默认值。1.3 primary key主键约束该字段不能重复,且不能为空。比如学号。一个表中只能有一个主键约束。通过表级约束对两个字段设置联合主键:1.4 unique唯一约束该字段值不能重复,可以为空,...

2019-06-17 12:41:49 4569

原创 SQL高级查询(三)——Oracle分页查询

分页查询(rownum关键字)Oracle在查询数据的时候对每一条记录进行编号并且命名为rownum,我们可以对rownum进行筛选,选择我们需要的部位,就达到了分页查询的效果。更高效查询:--效率更高SELECT * FROM(SELECT emp.*,ROWNUM rowno FROM emp ...

2019-06-10 14:58:33 237

原创 SQL高级查询(二)——连接查询

连接查询(join on关键字)注意: 可以多个表连接一、 连接条件(等值连接和非等值连接)1.等值连接2.非等值连接二、 自连接注意: 由于自连接两张表的列名和表明都一模一样,所以需要给表起别名用来区 分前后两张表三、 内连接(inner join …… on)查询的结果只有两张表的连接条件对应值均不为...

2019-06-10 14:38:04 180

原创 SQL高级查询(一)

ORACLE语句中SQL语句的写法如下:2.1 查询表结构2.1.1 desc关键字注意: 如果在PL\SQL执行,需要在COMMOND WINDOW下执行,而不是SQL WINDOW2.2 拼接查询结果2.2.1 SQL中+号运算符的作用SELECT 100 + 90 =190 : 当两个操作数都为数值型,则做加法运算S...

2019-05-27 16:41:36 310

原创 PL\SQL developer 连接Oracle数据库配置

大佬们在使用PLSQL developer连接Oracle的时候经常出现一些小问题导致数据库连接失败,小弟我给大佬们总结一下连接数据库的配置流程一、配置相关配置文件1.数据文件的路径pl\sql developer主要有两个文件需要配置。其路径在Oracle安装路径\product\11.2.0\dbhome_1\NETWORK\ADMIN下,分别是tnsnames.ora和...

2019-05-20 16:40:55 837 1

空空如也

空空如也

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

TA关注的人

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