自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胖胖的博客

随便写写

  • 博客(26)
  • 收藏
  • 关注

原创 Java锁

锁的种类有:乐观锁与悲观锁、公平锁与非公平锁、独占锁与共享锁、可重入锁、自旋锁等。乐观锁与悲观锁乐观锁与悲观锁原本是数据库的概念,Java中借用了这个思想。悲观锁:指多线程的情况下,每次访问数据一定会被其他线程修改,因此每次访问都要加锁,并在整个数据处理过程中,都要锁定数据,阻塞其他线程。数据库的悲观锁一般借助数据库的锁机制,即加上排他锁。乐观锁:相对于悲观锁认为每次访问数据都要加锁,乐观...

2019-04-14 17:02:24 134

原创 Java内存模型、volatile关键字

Java内存模型Java内存模型规定所有的变量都保存在主内存里,每个线程有自己的工作内存,每次对变量都操作都会将变量拷贝到工作内存,之后同步到主内存。原子性、可见性、有序性原子性:在Java中,对基本数据类型的读取和赋值是原子性操作,即不可拆分,要么一次执行,要么不执行注意 ++操作不是原子操作可见性:一个线程对某个变量的操作可以被其他线程立即可见,可见性需要主内存参与,因为线程每次都...

2019-03-17 17:00:31 161

原创 synchronized

synchronized是Java提供的一个内置锁,可以在任意对象上加锁,具有互斥和可重入的特性。当一个线程进入synchronized修饰的代码块时,会自动获取内部锁,这时其他线程访问该代码块就会被挂起,直至该线程正常结束或异常退出,或者在代码块内部调用wait()释放锁。synchronized的用法:1、修饰实例方法在当前类实例上加锁public synchronized void ...

2019-03-10 16:37:27 124

原创 ThreadLocal

多线程访问同一个共享变量可能出现并发问题,尤其是使用线程写入的时候。为了保证线程安全,往往需要进行加锁,但是加锁操作往往是一件耗时的工作,在有些情况(例如数据库连接、session管理等)可以采取另外的方式,将共享变量存入线程本地解决竞争问题,每个线程只操作本地变量。ThreadLocal就可以做到这件事:创建了一个ThreadLocal变量,就为线程创建了那个共享变量的本地副本。但是这个本地变...

2019-03-09 17:18:21 120

原创 Java死锁

死锁是指在多线程情况下,两个或两个以上线程在执行过程中,因争夺独占资源而出现的互相等待的现象。产生死锁的必要条件1)互斥条件:指线程间竞争的资源具有独占性,一旦被某个线程获取,则其他线程只能等待2)持有并保持:指一个线程获取到了至少一个线程,又要获取其他资源,而该资源正被其他线程持有,此时这个线程只能阻塞,同时又不释放自己已持有的资源。3)不可剥夺:指线程获取到的资源在使用完之前不可以被...

2019-03-03 21:37:15 89

原创 Java线程基础

一、什么是线程线程是进程的一个实体,线程不能够独立存在,进程作为操作系统资源分配的基本单位,线程是进程的一次执行路径,一个进程中可以有多个线程,同一进程的线程可以共享进程的资源。因此线程时实际上是CPU执行调度的基本单位。Java中,main函数就是一个JVM进程。二、创建线程的方式1、继承Thread类1)定义一个类extends Thread类,并重写run()方法,在run()方法...

2019-03-03 09:52:33 82

原创 Head First设计模式笔记

一、设计原则1、找到应用中可能需要变化之处,把它们独立出来,不要和不需要变化的代码混在一起把会变化的部分取出并“封装”起来,好让其他部分不会受到影响。2、针对接口编程,而不是针对实现编程3、多用组合,少用继承4、为了交互对象之间的松耦合设计而努力,将对象间的依赖关系降到最低。未完…二、设计模式1、策略模式策略模式定义了“算法族”,分别封装起来,让它们直接可以相互替换,此模式让算法...

2018-11-15 08:17:39 115

转载 redis 双写一致性

转载自: https://blog.csdn.net/hjm4702192/article/details/80518922 首先,缓存由于其高并发和高性能的特...

2018-08-31 15:54:31 605

转载 epoll详解

转自:https://blog.csdn.net/shenya1314/article/details/73691088 在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程...

2018-08-17 07:49:21 18357 6

转载 HMACSHA1 加密算法

转自:https://blog.csdn.net/z69183787/article/details/78393216 HMACSHA1 是从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码)。 此 ...

2018-08-14 17:49:21 6422 2

转载 Java基础-注解

转自:https://blog.csdn.net/jianjiaqqq001/article/details/73440822 为什么要学习注解?学习注解有什么好处?学完能做什么?1.能够看懂别人的代码,特别是框架相关的代码 2.让编程更加简洁,代码更加清晰要学会自定义注...

2018-08-12 10:53:44 162

转载 Zuul网关

转自:https://blog.csdn.net/zhanglh046/article/details/78651993/一  微服务网关背景及简介不同的微服务一般有不同的网络地址,而外部的客户端可能需要调用多个服务的接口才能完成一个业务需求。比如一...

2018-08-05 10:48:24 2480

转载 Hystrix熔断机制

转自: 熔断机制HYSTRIX 一、问题产生雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程  正常情况下的服务:某一服务出现异常,拖垮...

2018-08-03 17:56:53 1672

原创 Java基础-浅拷贝与深拷贝

假设现有一对象A,新建一个对象B浅拷贝       A与B代表不同的引用,指向相同的内存地址。深拷贝      A与B所指向的内存地址不同,但是里边的内容相同。...

2018-08-01 16:37:43 111

转载 RestTemplate与@LoadBalanced

转自:https://blog.csdn.net/u012702547/article/details/77940838在Spring Cloud中服务的发现与消费一文中首先使用了RestTemplate并且开启了客户端负载均衡功能,开启负载均衡很简单,只需要在RestTemplate的bean上再添加一个@LoadBalanced注解即可,所以本文...

2018-07-31 08:24:14 37843 6

转载 RestTemplate 操作

转自:https://blog.csdn.net/itguangit/article/details/78825505 详解 RestTemplate 操作作为开发人员,我们经常关注于构建伟大的软件来解决业务问题。数据只是软件完成工作时 要处理的原材料。但是如果你问一下业务人员,数据和软件谁更重要的话...

2018-07-31 08:08:02 900

原创 thrift安装(Mac版)

尝试地安装了一下thrift,折腾了好久,简单总结如下。一、最新版可以使用brew安装最新版的thrift,命令:brew install thrift二、安装0.9版本1、安装thrift在终端输入命令(注意需要安装的thrift版本):brew install [email protected]注意:安装时间可能较长,请耐心等待2、安装成功后,修改配置sudo vim ~/....

2018-07-27 17:13:23 4693

原创 Java基础-String、StringBuilder、StringBuffer

String、StringBuilder、StringBuffer虽然都与Java的字符串有关,但是它们之间存在一定地区别。一  String是字符串常量,而StringBuilder、StringBuffer是字符串变量String对象在创建之后时候不可变的,这种不可变造成了在对String实施改变操作时,JVM会重新创建一个String对象。String s="qwe";// 1...

2018-07-21 19:44:29 117

原创 Java基础-拆箱、装箱

    Java语言里有8中基本数据类型,每一种类型都有与之对应的包装类。拆箱、装箱指的就是二者之间的互相转换,在Java 1.5以后编译器可以自动完成这个过程。     以int和Integer为例。    由int整数转换为Integer对象就是装箱,编译器使用valueOf()方法完成;由Integer对象转换成int整数就是拆箱,编译器使用intValue()方法完成。    ...

2018-07-21 18:58:54 103

原创 Pro Git学习笔记(三)

Git 分支    与其他版本控制系统不同,Git保存的不是文件的差异,而是某一时刻文件的快照。Git在提交是会创建一个提交对象,这个提交对象里包含了指向暂存文件快照的指针,也包含作者的姓名、邮箱和提交信息等信息,还有一个指向提交父对象的指针(第一次产生的提交对象没有父对象,而由多个分支合并产生的提交对象有多个父对象)。    假设现在有三个文件准备提交,暂存操作为每一个文件计算校验和,然...

2018-07-21 08:45:08 204

转载 MySQL之前缀索引

转自博客:https://blog.csdn.net/john1337/article/details/71081827有时候需要索引很长的字符列,这会让索引变得大且慢。通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。但这样也会降低索引的选择性。索引的选择性是指不重复...

2018-07-20 15:34:09 287

原创 Java基础-Exception、Error、运行时异常与一般异常

    在Java中,所有的异常对象都派生自Throwable类的一个实例,在这个类下面有两个子类:Error和Exception。    Error类代表的是JVM虚拟机的内部错误和资源耗尽错误,对于这类错误,除了及时地向用户反馈和尽可能安全地结束以外,应用程序什么也做不了,也不应该去尝试抛出或捕获它。    Exception类则是平时关注的异常,它分为两类,一类是RuntimeExc...

2018-07-18 22:24:14 195

原创 Java基础-final, finally, finalize

final    Java中final关键字可以用来修饰类、变量和方法。    当final修饰类时,表示这个类不能被继承,该类的成员变量可以根据需要设置成final,但是类中的方法已经隐式地被添加了final。    当final修饰变量时,如果变量是基本数据类型,则该变量被赋值后不能再更改;如果变量时候引用类型,则该变量的指向不能再改变,即初始化后不能将引用类型指向其他对象。 ...

2018-07-17 22:41:55 86

原创 Java基础-面向对象的特征

面向对象的特征:继承、封装和多态    继承:    封装:    多态:    

2018-07-15 21:11:26 220

原创 Pro Git学习笔记(二)

Git基本命令    git init        执行这个命令后,会在当前目录下建立一个.git的隐藏文件。这个文件下包含了初始化Git仓库的所有文件。具体内容有:        (暂时不知道这些文件的具体含义,留白待更)           执行了这个init命令仅仅是做了一些初始化操作,并没有跟踪任何文件。    git clone        命令格式是:g...

2018-07-15 19:17:51 262

原创 Pro Git学习笔记(一)

留白

2018-07-14 19:37:56 245

空空如也

空空如也

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

TA关注的人

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