自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程编程--08java原子操作的实现原理

这一篇记录java保证原子操作的原理    一、使用循环CAS实现原子操作JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的。自旋CAS实现的基本思路就是循环进行CAS操作直到成功为止;从java1.5开始,JDK的并发包里提供了一些类用来支持原子操作,如AtomicBoolean、AtomicInteger…(主要是数据类型)。这些原...

2019-09-04 16:44:19 143

原创 多线程编程--07处理器原子操作的实现原理

    这篇文章我要做两件事        1、以Intel处理器为例阐述cpu是如何保证原子性操作        2、以及java是如何保证原子性操作的先看一套专业术语定义:缓存行(Cach...

2019-09-04 09:05:50 174

原创 多线程编程--06锁的获取过程

        Synchronized关键字被加到方法上或者代码块上,在JVM规范中可以看到Synchonized在JVM里的实现原理:JVM基于进入和退出Monitor(监视器锁)对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现的,而方...

2019-08-20 08:40:04 332

原创 多线程编程--05CPU和JVM中的多线程原子性、可见性

多线程数据传递的两种方式:1、共享内存;2、消息传递,比如wait/notify等方法那么现在有两个trhead,t1改变一个数据的时候 什么时候同步到主内存呢?既可见性问题当两个T同时去访问同一个数据的时候怎么解决两个T对数据的争抢呢?既原子性问题那么主内存(堆内存)在硬件层面上的映射是什么呢?----对内存映射到普通内存工作内存在硬件层面上的映射又是什么呢?----工作内存映射到...

2019-08-04 15:11:24 137

原创 多线程编程--04CPU高速缓存

CPU高速缓存线程是CPU调度的最小单元,那么CPU在调度线程执行指令的时候,不仅仅是依靠计算机的处理器去完成,处理器依然需要跟内存进行交互,这里就存在IO操作。由此引发了一个问题,这个问题就是CPU的运算速度远比内存要高很多,导致数据读写速度跟不上CPU运算速度;那么解决方案就是在CPU和内存之间存在一个高速缓存叫CPU高速缓存。...

2019-07-28 14:45:09 206

原创 项目管理--01定义及流程

                                               &nb...

2019-07-17 16:53:56 174

原创 多线程编程--02线程的启动和停止

线程的启动和停止不建议使用stop方法太过暴力。1)而是使用interrupt()方法,可以优雅的的停止一个线程。2)通过指令的方式,volatile boolean isStop =false;通过公用的指令来停止线程。...

2019-07-06 20:43:49 119

原创 多线程编程--01线程的状态

线程有哪几种状态?查看java.lang.Thread类的源码可以发现:<ul> * <li>{@link #NEW}<br> * A thread that has not yet started is in this state. * </li> * <li>{@link #...

2019-07-06 20:43:18 131

原创 多线程编程--00基础篇

先看问题,多线程技术的应用?在什么情况下使用多线程,或者在什么情况下应该使用多线程。要解决这个问题我们需要先知道多线程的发展历史:最早的计算机的是为了解决复杂数学计算问题而出现,类似于现今的计算器。用户输入指令,计算器就进行相应的操作;当用户在输入指令的时候,计算机出于阻塞(等待状态),由于计算机没有存储指令的能力,所以在用户输入指令的过程当中,计算机是出于等待状态的;这就导致计算机资源没有被...

2019-07-06 20:42:40 138

原创 多线程编程--03线程安全问题

线程安全性问题总共有以下接种:1、可见性2、原子性3、有序性

2019-07-06 20:41:44 147

原创 经典单例模式(静态内部类)

public class Singleton{//该方法属于懒汉式的一种 也是spring在使用的方式//构造方法私有化 private Singleton(){} //在静态内部类里进行初始化 private static class LazyHolder{ private static final Singleton INSTANCE = new ...

2019-01-31 09:11:46 135

原创 时间装换时获得的数据不准确

场景:发生日期是2019年1月18日17:43:54前端用VUE 后端是springboot 获取的时间是String类型的"2019-02-10 00:00:00"这个格式 需要转化成java.util.Date类型2019-02-10 00:00:00 ;我转化本月的是时间 是正确的 但是如果转化2月的时间 就会变成一个2019-01-04 00:00:00 这样一个固定的日期...

2019-01-18 17:59:12 94

原创 spring cloud +GIT 查看 连接git时都做了些什么

2018-12-20 17:22:41 99

原创 GIT之常用命令

remotefetchpullpushcheckoutlogstashmergerebasetagalias提示git status相当于是一个命令提示,如果不知道该做什么的话可以执行该命令,会有提示你应该做什么。提交文件 这种方式更加快捷$:git ac ‘add 3.txt’$:git push origin masterremote命令:用来把本地项目推送...

2018-12-18 11:31:14 130

原创 mybatis 存储过程

BEGINCREATE TEMPORARY TABLE tmp_table_business_lcu_ids(businessLcuId_x_y VARCHAR(10));IF (rUid IS null) and (businessLcuId IS null) THEN insert INTO tmp_table_business_lcu_ids ( SELECT a.bus...

2018-12-17 12:02:14 136

原创 mybatis中大于小于等于的写法

使用mybatis框架 由于在xml中书写sql语句 有些符号不便直接写上去 就用以下符号代替&lt; &amp;lt; &lt;= &amp;lt;=&gt; &amp;gt; &gt;= &amp;gt;=&amp; &amp;amp;' &amp;apos;" &amp;quot;...

2018-11-13 17:21:02 209 1

原创 @Transactional的粒度控制

org.springframework.transaction.annotation.Transactional;开发时都会用到@Transactional,也都知道是抛出异常的时候会回滚。那么问题来了:异常有很多种我们能不能控制(告诉)发生什么异常的时候才回滚呢? 出现这个问题的原因是我们需要定制异常。答案是肯定的阅读@Transactional源码发现它这里有这样一个东西Class&lt...

2018-11-10 19:20:21 635 1

原创 redis应用之关系型数据库和非关系型数据库数据一致性

说白了 这是两个数据容器之间数据同步问题。既当其中一个容器中数据发生改变另一个怎么做到数据一致。**首先是没有办法保证强一致性的。**截止2018年10月28日20:59:05 位置,还没有听说过在保证相应速度的 前提下做到数据强一致性的方案。**其次强一致性是没有必要的:**因为我们给系统加缓存的目的不是为了保证数据的强一致性,而是提升相应速度。实际上这是一个业务问题既,在效率和准确率之...

2018-11-04 12:22:11 858 2

原创 3.3redis数据持久化方式

redis的数据持久化是把数据写入到硬盘当中。这里来讲讲redis的数据持久化方式1)RDB模式 Redis DataBase2)AOF模式 Append-only file------------------------------------------分割线-----------------------------------------------RDB是一种快照的方式 默认...

2018-11-04 12:21:36 197

原创 3.4redis内存回收策略

这里会涉及到LRU算法这个是为了更好的使用内存,当内存容量不足的时候,为了使得程序继续运行,做了这样一个回收。在redis.conf里面有这样一个配置maxmemory-policy他的默认情况下是noeviction,意思是当内存达到阈值的时候,reids去申请内存会报错。还有另外几种回收策略:allkeys-lru //挑选最少使用的数据进行淘汰allkeys-random /...

2018-11-04 12:21:11 185 2

原创 4.1 Redis主从复制

这是一个从无到有,从简到繁的过程。首先为了保证热点数据的高频访问,我们引入了缓存数据库redis。那么,我们使用一个redis实例。暂时性的解决了或少眉毛的问题。但是单个实例有以下几个弊端:1、故障容忍问题。在产品中如果这个实例发生故障不能为业务提供支持,这对于已经上线的产品来讲是一个巨大的boom。等同于瘫痪,因为我们在redis中做的不仅仅是数据缓存,还会在redis中分布式场景下的ses...

2018-11-04 12:20:33 179

原创 4.3redis-cluster的应用

前言,redis再怎么牛逼也有一个数据量的极限。它不能为我们无底线的存储数据------这时我们就想到了分片。将数据按照一定的规则存放到不同的redis实例上,从而达到数据的高效利用。10:18...

2018-11-04 12:20:07 101 1

原创 5,redis集群在项目当中的应用

前面我们从数据结构开始一路走来,已经比较全面的认识了redis。这篇文章开始分享redis在我们业务当中的使用。开始分享之前我先提两个我听到的问题:1、哨兵模式下,我们的业务端应该连接到哪个redis服务器,既我们应该配置哪些信息?2、集群模式下 ,为什么会有MOVED的错误?redis应用实战(上) 09:14...

2018-11-04 12:19:14 427 1

原创 redis应用之--命中率

redis在实际项目当中必然充当缓存角色,在系统启动的时候。我们把相关热点数据缓存到redis,用来提高访问相应速度。也就是说我们的application server 会先访问redis,如果redis中有这条记录则称之为命中;如果没有则称之为没有命中,没有命中的话我们就到relational database中读取数据并缓存到redis中。由此延伸出一个命中率的概念:命中率=命中请求个数/请求...

2018-11-04 12:17:56 2377 1

原创 redis应用之缓存雪崩

缓存雪崩:缓存命中率很低导致大量的数据请求被分发到数据库,效果就是响应时间变的很长以至于客户端体验感降到了冰点。导致命中率很低的一个重要的原因就是大量的缓存在同一个时间节点失效。另外就是缓存挂掉。那么解决方案呢?1、当我们从缓存中取不到值的时候,则给这个key加锁。是的后续的请求进行排队,在排队的过程当中,从数据库中把数据加载到缓存。2、过期时间的设置,尽量分散,避免在同一个时间节点出现大...

2018-11-04 12:17:29 410

原创 redis应用之缓存穿透

缓存穿透和缓存雪崩有点类似,但是它有一个更重要的原因是恶意攻击所带来的。产生的原因也是缓存命中率很低,使得请求被转到数据库当中,从而导致性能问题。解决方案是:一、那么针对恶意攻击的话,我们可以做ip访问限制。二、对一些空值进行缓存。三、对key设置一些规则,既对key进行管束,如果key不符合一定的规则,就直接返回。因为我们自己操作的key肯定是符合规则的,那么不符合负责的key呢?反正...

2018-11-04 12:16:50 106

原创 3.5Redis的性能问题

1)Redis为单线程,但是为什么性能会很高呢?2)既然是单线程那么它能不能保证线程安全和原子性问题呢?下面看解答:1.1Redis单线程模式不代表所有的客户端请求都会去排队它内部采用的是多路复机制首先我们来了解一下多线程。多线程的好处是可以充分的利用CPU资源,尤其对于多核。但是Redis的性能瓶颈并不是在资源利用方面,那么他的性能瓶颈在什么地方呢?我来告诉你!!!Redis的性...

2018-11-04 12:15:16 261 1

原创 GIT之git和svn的区别

这俩货都是用于版本管理svn:他的整体是这样的。初始化A,B,C三个文件version1,提交一个版本仅对A做了修改version2里保存的是A的增量,并且不会对B和C进行信息保存。git更类似于全民记账的模式(分布式账本):他的过程是这样的:没一个版本都会保存历史信息。(全民记账)每一次存储,如果有变化,会存储一个完整文件;如果没有变化则存储一个指针...

2018-10-29 14:03:37 181 1

原创 SpringBoot-获取参数的方式

这篇文章要分享的是springboot 获取参数的方式;那我就按照请求方式来分类吧;一、GET请求方式**1、**我想用类似传参的方式获取参数?或者说用类似方法调用的方式? 1.1@RequestMapping(&quot;/getParam&quot;) public String getParamThroughGet(String aaa,String bbb){ ...

2018-10-26 16:23:09 896 1

原创 springboot+mybatis 后台报 invalid bound statement (not found)

springboot+mybatis 查询数据时报 invalid bound statement (not found):…(反正后面跟着一串的说明)如果你确定了一下几个内容:1、mapper文件里的namespace路径是正确的2、接口中的方法跟mapper文件中的对应上了其实以上两点最方便的检验方式是在mapper文件中按住CTRL,左键单击路径或id值 如果能打开对应的接口文件 ...

2018-10-24 09:22:35 349 2

原创 3.2Redis发布订阅

redis的pub/sub不常用,但也会用到。所以这我就简单意思意思我印象最深的是在理解sentinel是怎么互相感知这个原理时有用到过 其他地方还没遇到这个功能从redis2.8.0这个版本开始有的 他的功能是可以发布和订阅消息,来完成不同redis相关进程之间的通信。相应的就会出现producer(发布者),channel(通道),consumer(订阅者)者三个角色;实现方式:这个...

2018-10-14 20:09:49 231 1

原创 3.1过期时间设置及其原理

对于一些临时数据 我们会设置超时时间,减少数据维护的工作量在linux命令窗口经常使用的命令有:expire key secondssetex(String key,int second,String value)ttl key 查看key还剩余多少时间persist key 把key的过期时间取消 进行持久化那么数据过期以后就会被删除 ,这个删除有什么讲究呢?redis删除过期...

2018-10-14 19:20:17 421 1

原创 Redis数据结构之map 和 set 和 sortedset

map的结构是典型的字典结构他的命令是H开头的一些命令 hset 、hget 、hexists (用来判断是否存在某个字段 返回值是1 说明存在)用途:可以用来存储类似对象的数据一定要注意value不能 嵌套其他类型了map的数据结构在dict.h 这个文件里有两种:1)hash2)ziplist 数据量小的时候用这个map源码解读在src目录下的dict.h这个文件里...

2018-10-14 16:40:23 738

原创 redis的数据结构之 String 和 list

请允许我拽一句文化词儿工欲善其事必先利其器。这里的器就是我们redis的根本 有什么样的数据结构决定了它适合做什么样的事儿。------------------------------------------------------------分割线-------------------------------------------------------------缓存大致可以分为两类...

2018-10-14 11:52:54 305

原创 CentOS7安装Redis-3.2.8

so easy!!!使用远程登录工具我用的是 Private Shell 我仗义的把资源分享出来了 在这里链接:https://pan.baidu.com/s/1flXl8jx19IGsJ66HbCcFLg提取码:9eux登录自己安装的虚拟机[root@xiaohouye /]# mkdir /usr/local/redis[root@xiaohouye /]# cd /usr/l...

2018-10-13 14:35:32 208

原创 虚拟机安装经验

1、性能好一点的windows系统电脑,好到什么程度呢?。。。。。。这么说吧,可以运行《战地之王》游戏2、我用的vmware 连接在这里 https://pan.baidu.com/s/1F48V0PJ0ss0y8BaC-1Yhvg 提取码: 25k5我尽力让它是长期有效的------------ 请忽略版本问题3、centos7 没什么理由,就是喜欢用它。镜像下载地址:http:/...

2018-10-13 13:38:48 235

原创 centos7重置root密码

VMware Workstation 14 Player 安装CentOs7 使用安装时设置的用户 没有root权限 想使用root用户但是不知道密码一、二、重启过程当中不断按上下方向键...

2018-09-26 12:21:04 255

空空如也

空空如也

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

TA关注的人

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