自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟

学习

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

原创 Redis之分布式锁

有的时候,我们需要保证一个方法在同一时间内只能被同一个线程执行。在单机环境中,Java 提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案:1、基于数据库实现分布式锁 2、基于缓存实现分布式锁 3、基于Zookeeper实现分布式锁一、锁的基本概念锁的性能优化:1、...

2019-01-30 13:01:27 201

原创 Redis之bitmap

Redis对数据保存时,通过redisObject对象来存储redisObject属性:type(数据类型)、encoding(编码方式)1、String的编码方式最常用的是int;2、还有EMString(固定编码方式)初始化长度小于44,内存分配以及回收只需一次,效率较高;3、raw字符串,动态分配,大于44的字符串一般用rawRedis会根据保存的数据类型,状态,动态的选举最合...

2019-01-28 23:43:15 9535

原创 HashMap的底层实现

默认长度16,加载因子0.75,空间换时间JDK1.8时,当链表长度超过8,链表会转变为红黑树扩容的性能是很低的,要选择合适的容量HashMap存储结构图HashMap接口public interface MyMap<K, V> { //向集合中插入值 public V put(K k,V v); //根据Key获取集合中的值 public V get(K k)...

2019-01-27 18:09:09 166

原创 Spring Boot简单介绍

一、四大核心机制起步依赖机制通过起步依赖机制 - Stater,简化Jar包的引用,解决Jar版本冲突的问题自动配置实现自动配置,甚至是零配置,就可以实现快速搭建框架SpringBoot CLI一种命令行工具,可以帮助做spring boot的初始化命令Acuator是一个监控器,可以监控Spring应用程序上下文中的Bean、查看自动配置映射、Controller...

2019-01-26 17:43:36 605

原创 负载均衡

当业务量逐渐增长时,单机应用程序无法很好的满足业务需求,出现了响应时间长和单点故障两大问题,这时候就需要通过集群来增强业务的处理能力。一、负载均衡负载均衡是用于将请求分发的技术。可以是软件,诸如Nginx、Apache也可以是硬件,如F5Nginx一直在抢占Apache的市场份额。优点:安装配置简单、占用内存较小、并发处理能力强3w+ 优化后可以达到10w+缺点:工作在第七层,支持...

2019-01-22 19:22:17 199

原创 SpringClude核心组件之Eureka

通过代码来实现一个案例:搭建一个Eureka Server首先通过Idea的Spring Initializr插件创建一个SpringBoot项目依赖选择为web和Eureka Server项目创建完成之后进去到启动类,添加注解@EnableEurekaServer开启注册中心。在application.properties文件中添加配置信息在hosts文件中添加一行启...

2019-01-21 20:29:12 438

原创 Java并发编程(五)Java中的锁

一、Lock接口锁是用来控制多个线程访问共享资源的方式。一般来说,一个锁能防止多个线程同时访问共享资源(有些锁允许多个线程并发访问共享资源,比如读写锁)。Lock接口提供了与synchronized关键字类似的同步功能,只是在使用时需要显示地获取和释放锁。虽然它缺少了隐式获取释放锁的便捷性,但是缺拥有了获取和释放锁的可操作性、可中断性的获取锁及超时获取锁等多种synchronized关键字所...

2019-01-14 19:12:19 187

原创 Java并发编程(四)Java并发编程基础

一、线程什么是线程现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,系统就会创建一个Java进程。现代操作系统调度的最小单位是线程。一个进程里可以创建多个线程,这些线程都有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。通过Java代码来查看一个普通的Java程序包含哪些线程:public class MultiThread{ publi...

2019-01-13 18:05:23 162

原创 Java线程间通信之管道输入/输出流

管道输入/输出流用于线程之间的数据传输,传输的媒介为内存。4种具体实现:PipedOutputStream、PipedInputStream、PipedReader、PipedWriter前两种面向字节,后两种面向字符。创建printThread,它用来接受main线程的输入,任何main线程的输入均通过PipedWriter写入,而printThread在另一端通过PipedReader将内...

2019-01-13 17:27:40 553

原创 Java线程中的等待/通知机制

创建了两个线程——WaitThread和NotifyThread,前者检查flag值是否为false,如果符合要求,进行后续操作,否则在lock上等待,后者在睡眠了一段时间后对lock进行通知package thread;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent....

2019-01-13 17:04:39 137

原创 Java并发编程(三)Java内存模型的基础

Java内存模型的基础1.1 并发编程模型的两个关键问题 :线程之间如何通信及线程之间如何同步在命令式编程中。线程之间的通信机制有两种:共享内存和消息传递。同步是指程序中用于控制不同线程间操作发生相对顺序的机制。在共享内存并发模型里,同步是显示进行的。程序员必须指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。...

2019-01-09 16:12:43 121

原创 Java并发编程(二) Java并发机制的底层实现原理

Java代码在编译后会编程Java字节码,字节码被类加载器加载到JVM里,JVM执行字节吗,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU指令。一、volatitlevolatitle的应用volatitle是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。当一个线程修改一个共享变量时,另外一个线程能读到这个修改...

2019-01-08 18:07:21 203

原创 Java并发编程(一)

​ 并发编程的目的是为了使得程序运行的更快,但是并不是启动更多的线程就能让程序最大程度的并发执行。在进行并发编程时,需要考虑上下文切换、死锁的问题,以及受限于硬件和软件资源限制的问题。上下文切换:执行多线程代码时,cpu通过给每个线程分配CPU时间片来实现。时间片是CPU分配给各个线程的时间,时间片非常短,cpu通过不停切换线程执行,来达到多线程执行。上下文切换,会影响多线程的执...

2019-01-08 15:55:54 126

address.js

vue全国省市区编码转换

2019-06-25

空空如也

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

TA关注的人

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