自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不经风雨,如何见彩虹

正在努力学习的程序员java——后台开发

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 ThreadLocal一篇将从底层到原理讲清

ThreadLocal1.是什么一个存储结构,可以定义一个变量,每一个线程都可以拥有这个变量的副本,每个线程对于这个变量的修改,都只在本线程内有效,让共享变量不会出现多线程问题2.内部结构底层由一个Entry数组构成,key的类型为弱引用,(弱引用,只能生存到下一次gc前,由次可能发生内存泄漏问题),value为set传入的值。不同的线程会有不同的threadmap,而key的值为当前threadlocal,一个线程有多个threadlocal时,就会根据不同的threadlocal对象的hash

2020-07-01 13:31:53 202

原创 布隆过滤器从底层原理到redis实战一篇讲清

布隆过滤器1.为什么诞生为了高效的插入数据和查询数据现实场景:从上亿数据中判断一条数据是否存在,使用map,set等常规数据结构,导致内存急速膨胀,需要大量空间,需要一种更为巧妙的方式,判断数据是否存在,常见的缓存击穿的问题2.具体构成1,底层由一个bit数组构成,更改bit数组有多个hash函数完成bit数组中由0,1构成,当有一个数据进来时,通过3个不同的hash函数,将其映射在不同的位置,值设定为1例如:baidu被映射到1,4,7位置其他数据进来时也会映射到不同的位置,但由于

2020-07-01 13:25:19 653

原创 ReentrantLock从结构底层到原理一篇讲清

ReentrantLock1.是什么Reetrantlock是一个可以重复获得锁的一个互斥锁,它的加锁与解锁都是需要手动执行,也可以多次加锁,同时它还可以指定是由公平锁还是非公平锁实现。2.内部实现构造方法: public ReentrantLock() { sync = new NonfairSync(); }public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : ne

2020-07-01 11:30:35 1902

原创 elasticsearch看这一篇就够了---入门(1)Elasticsearch&Kibana概念详解,下载安装使用

1. 是什么?(1)Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最 先进、性能最好的、功能最全的搜索引擎库(2)Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜...

2020-01-15 11:24:08 1702

原创 elasticsearch看这一篇就够了---入门(2)Elasticsearch检索文档,DSL语句查询,复杂查询,全文搜索

1.检索文档(没有数据的看上一篇就可以)现在Elasticsearch中已经存储了一些数据,我们可以根据业务需求开始工作了。(1)第一个需求是能够检索单个员工的信息。 这对于Elasticsearch来说非常简单。我们只要执行HTTP GET请求并指出文档的“地址”——索引、类型和ID既可。根据这三部 分信息,我们就可以返回原始JSON文档:GET /albb/employee/1响...

2020-01-15 11:18:03 360

原创 fiverr官网地址:http://www.fiverr.com/s2/95d338afa8

fiverr官网地址:http://www.fiverr.com/s2/95d338afa8可以赚钱的网站!

2019-07-22 21:05:42 24681 2

原创 Spring——Boot

1、快速搭建一个spring MVC项目来开头来个Hello World先吧,  第一步,上官网,进行项目原始jar 包的选取,官网在线搭建地址如下:https://start.spring.io/ 看图:特别说明下:在选择你要的jar 包中,一般包括三部分:web部分–包含 了spring、springboot 等常用的web开发必须jar包;spring提供的访问网页的Thymele...

2019-05-16 18:17:02 196

原创 java并发编程的艺术

1 java并发编程的艺术2.1 volatile的应用 volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 1.volatile的定义与实现原理 缓存行:缓存中可以分配的最小存储单位 0x01a3de1d: movb 0×0,0×1104800(0×0,0×1...

2018-08-27 14:35:09 270

原创 Mybatis总结

一,概述: 就是对jdbc数据库操作进行封装,使用户开发者只用关注sql语句。通过xml或者注解的方式,将要执行的各种sql语句配置起来,并通过Java对象和statement中的sql语句映射生成最终的sql语句,最后由mybatis框架执行sql语句,并将结果映射成Java对象返回。 二. 工作原理: 1,分层: a,接口层:接口层一接收到调用请求就会调用数据处理层来完成具...

2018-08-27 14:31:19 1925

原创 String,stringBuffer,StringBuilder总结

一,String 底层是char数组(1)如:直接赋值:String s1 = "HelloWorld"通过new关键字来创建:String s3 = new String("HelloWorld") 上面的两种赋值方式必然是不同,如s1它这种赋值方式会让s1引用指向jvm中的方法区的常量池中的“HelloWorld”,而s3则是在堆空间中new String(”HelloWorld“...

2018-07-26 22:03:59 296

原创 Java中关键字(abstract,static,final,this,super)

1,abstract:可以修饰类和方法。修饰后就变成了抽象方法,抽象类(1)如果修饰类的话,此类必须被继承使用,abstrcat最大程度的将子类的共性抽出来。abstract虽然不能生成对象,但可以声明,作为编译时类型,final与abstract不能同时出现。(2)一个有抽象方法的类,一定是抽象类,但一个抽象类的不一定有抽象方法。(3)抽象类不可创建对象,但可以有构造函数(子类可以继...

2018-07-26 22:00:59 1687

原创 Object源码详解

(1)private static native void registerNatives();一个本地方法,在static块中类加载时自动调用(本地修饰)。完整名字(2) public final native Class<?> getClass();一个返回object的运行时类,类的完整名字(3)public native int hashCode();  返...

2018-07-24 12:02:48 600

原创 java中this和super的区别

super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名    super.成员函数据名(实参)this:它代表当前对象名(在程序中易产生二义性之处...

2018-06-09 13:43:09 766

原创 基本数据类和包装类的区别

(1)声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间; (2)存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用; (3)初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null (4)使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collec...

2018-06-06 19:41:29 793

原创 进程和线程

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线程...

2018-06-06 19:40:43 118

原创 异常的注意事项

try、catch和finally这三个关键字不能单独使用,否则编译出错。(2)try语句块后既可以只使用catch语句块,也可以只使用finally语句块。当与catch语句块一起使用时,可以存在多个catch语句块,而对于finally语句块只能存在一个。当catch与finally同时存在时,finally必须放在catch后面。(3)try只与finally语句块使用时,可以使程序在发生异...

2018-06-06 19:40:07 240

原创 线程的五种状态

(1) 新建:新创建了一个线程对象。(2)可运行:线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。(3) 运行:可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。(4) 阻塞:阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu ti...

2018-06-06 19:38:44 203

原创 接口和抽象类的区别

(1)多继承:一个类可以实现多个接口,一个类只能继承一个抽象类。(2)默认实现:接口只包含接口签名,抽象类可以提供默认实现,子类可以重载抽象类方法。(3)访问修饰符:接口默认所有的方法均为public, 抽象类可以包含protected修饰符。(4)属性与常量:接口中不允许定义任何属性,抽象类中允许定义属性和常量。...

2018-06-06 19:35:06 130

原创 使用运算符“==”和equals()方法的区别

(1)==操作符只能用于判断两个比较对象是否属于同一个引用,如果属于同一个引用则返回true,如果不是则返回false,而在equals方法中除了可以判断两个比较对象是否属于同一个引用之外还可以对equals方法进行重载。(2)其次,在对String类型的对象进行比较时,如果采取==操作符,则只有两个变量属于同一对象的引用时才会返回true,而equals方法的比较原理则是只要两个变量的内容相同则...

2018-06-06 19:34:43 1280

原创 String和StringBuffer的区别

(1)String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String 是final类,即不能被继承(2)StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象。它只能通过构造函数来建立对象被建立以后,在内存中就会分配内存空间,并初始保存一个nul...

2018-06-06 19:34:02 22947

原创 StringBuffer和StringBuilder的区别

(1)在执行效率方面比较:stringbuilder > stringbuffer(2)在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。(3)使用方面来讲:.单线程操作字符串 下操作大量数据 用stringBuilder。多线程操作字符串 下操作大量数据 用stringBuffer...

2018-06-06 19:33:27 113

原创 同步代码块和同步函数的区别

(1)同步代码块可以绑定任意对象,而同步函数只能绑定该类对象this,static同步函数只能绑定字节码类名.class(2)如果多个线程使用同一个锁的话,那么两者均可以使用,如果存在多个锁的话,只能使用同步代码块...

2018-06-06 19:32:18 1065

原创 局部变量和成员变量的区别

(1)成员变量:在类体内定义的变量,可以不显式初始化,可以在类加载时初始化,存于堆内存中。(2)局部变量:在方法内定义的变量,形参,代码块中定义的变量,必须设定初始化值,存于栈内存空间中。...

2018-06-06 19:31:40 143

原创 wait()和sleep()的区别

(1)wait()来自object类,sleep()来自Tread类(2)sleep()没有释放锁,而Wait()方法释放了锁,使得其他线程可通过同步控制块或者方法。(3)Sleep()可以在任何地方使用,而wait()只能在同步控制方法或者同步控制块中使用。(4)Sleep()必需捕获异常,因为在sleep的过程中过程中有可能被其他对象调用它的interrupt(),产生InterruptedE...

2018-04-20 01:49:08 302

原创 什么是多态,多态的好处和弊端

(1)多态:允许将子类型的指针赋给父类类型的指针,子类类型对象转变为父类类型对象。(2)好处:隐藏了子类类型,提高了代码的可扩展性。(3)弊端:只能使用父类的功能,无法使用子类的特有的功能,功能有限制。...

2018-04-20 01:31:11 3470

原创 final finally finalize区别

(1)final用于修饰类,成员变量和成员方法,final修饰的类不能被继承,其中所有的方法不能被重写,也即abstract与final不能同时用。final修饰的方法不能被重写,但子类可以用父类的final方法。Final修饰的成员变量是不可变得,初始化后其中的值或引用不可变。(2)Finally通常与try catch一起使用,保证在有误异常的情况下,这一步都能被执行。(3)Finalize ...

2018-04-20 01:11:26 188

原创 类与类,类与接口,接口与接口的关系

(1)类与类:继承关系,单继承,可以多层继承。(2)类与接口:实现关系,非抽象类实现接口时,必须将接口中的方法实现。抽象类实现接口时,可以实现也可以不实现方法。(3)接口与接口:继承关系,一个接口可以继承多个接口。...

2018-04-20 01:10:03 604

原创 Static的特点

(1)它随着类的加载而加载,随着类的消失而消失(2)优先于对象存在(3)静态变量数据存储在方法区的静态区(4)被所有对象共享(5)可以被类名直接调用...

2018-04-20 01:08:16 215

原创 Abstract与哪些关键字不能共存,为什么?

  Finally:abstract修饰的类继承后,该类的方法需要重写,而finally修饰的类不能继承,也不能有子类,方法更不能重写,相互冲突。Private:方法子类的方法不能被继承,就不能被重写,而abstract就是要方法重写。相互冲突。Static:static能被实例化可直接调用,abstract是不能被实例化,相互冲突。...

2018-04-20 01:06:52 1698

原创 面向对象三大特性和含义

(1)封装:将客观事物抽象封装成类,并且对自己的数据实行访问控制,并且可以对私有数据进行隐藏。(2)多态:允许将子类型的指针赋给父类类型的指针实现多态有两个方式:a. 覆盖:在子类中重写父类中的方法,在子类的引用类调用此方发时,调用子类的方法。b. 重载:在同一个类中有几个方法方法名相同,但方法的参数列表不同,在调用时根据调用方法是的参数列表不同来调用不同的方法。(3)继承:可以使用现有类的所有功...

2018-04-20 01:04:37 319

原创 折纸问题

折纸,每次都是将纸从右向左对折,凹痕为 0,凸痕为 1,求折 n 次的后,将纸展开所得折痕组成的 01 序列。代码如下:        public class zhezhiHeng { public static String s=""; public static void main(String[] args) { // TODO Auto-generated method stub f...

2018-04-15 21:32:49 452

SPRING技术内幕:深入解析SPRING架构与设计原理

这本为SPRING技术内幕:深入解析SPRING架构与设计原理的压缩包,可以更快的下载

2018-09-23

空空如也

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

TA关注的人

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