3 luu_一只程序猿

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

说起java的线程同步,还算优秀的我总是忘的明明白白

实现多线程同步,java提供了多种方式,比如Synchronized、Lock、Volatile关键字等。但是他们的区别是什么呢,至今对这些东西我还是很懵懂的,所以是时候要对这些东西做一些了结了,不然每次看过就忘Volatile关键字volatile通常被比喻成"轻量级的synchronized",也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。volatile关键字的作用:保证了变量的.

2020-05-13 18:14:20

面试官每次问我关于线程间通信方法,我都回答的很糟糕

线程的生命周期废话不多写。首先我们先回顾回顾,理解下线程的生命周期,以及不同的阶段的区别:新建状态(NEW)当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值就绪状态(RUNNABLE)当线程对象调用了 start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行。运行状态(RUNNING)如果处于就绪状态的线程获得了 CPU,开始执行run()方法的线程执行体,

2020-05-12 16:59:01

对redis相关知识的总结

之前对redis的知识已经做过一些了解了,今天主要做一个总结,梳理下相关的知识。redis的基本数据类型:string、是redis中最基本的数据类型,一个key对应一个value。String类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。如数字,字符串,jpg图片或者序列化的对象。hash、包含键值对的无序散列表。value 只能是字符串,不能嵌套其他类型。list、List 说白了就是链表(redis 使用双端链表实现的 List),是有序的,value可以

2020-05-11 18:00:13

作为合格的程序猿,当面试官问我线程池我怎么也得扯上两分钟

作为一个面试经验不算丰富的程序员,在这行业摸爬滚打几年。我立志要征服个大公司的面试官。原则就是小厂我随便虐,大厂随便虐我。所以在去面试之前,java基础还是要恶补一番的。java线程池作为一个面试官常常问的东西,我是必须得熟悉的。四种线程池Java通过Executors提供四种线程池,分别为:1、newSingleThreadExecutorExecutors.newSingleThreadExecutor()返回一个线程池(这个线程池只有一个线程),保证所有任务按照指定顺序(FIFO, L

2020-05-11 17:51:36

理解redis的分布式高可用

还是老话,直入主题。今天就是再次熟悉和理解下redis的高可用,啥是高可用呢,不废话了大家应该都知道。所以再说直白点,前两篇我们了解了redis的基础数据结构和一些高级特性,所以今天,就是来理解redis的主从复制、哨兵模式已经redis cluster这三种模式的。好了,让我们开始主从复制主从复制配置在salve配置文件redis.conf中配置 slaveof 192.16...

2020-04-21 11:01:12

对redis基础知识记录

首先直入主题,理解下非关系型数据库的特点:1、存储非结构化的数据,比如文本、图片、音频、视频。 2、表与表之间没有关联,可扩展性强。 3、保证数据的最终一致性。遵循 BASE理论。 Basically Available(基本 可用); Soft-state(软状态); Eventually Consistent(最终一致性)。 4、支持海量数据的存储和高并发的高效读写。 5、支持...

2020-04-15 17:30:36

论多数据源(读写分离)的实现方案

好的,作为一个合格的bug生产者,我们直接进入主题,多数据源和读写分离实现方案。首先多数据源和读写分离什么时候我们才需要呢?多数据源:一个单体项目过于复杂,需要操作多个业务库的时候,就需要多数据源操作不同的数据读写分离:数据库压力较大时,我们考虑读写分离,主库写,从库读,减少数据库的压力。多个库数据是一样的。理解完使用场景后,再入主题,怎么实现呢?这里说三种实现方式...

2020-04-14 23:12:28

Druid连接池的使用以及注意事项

Druid连接池其实在网上一找一大堆文章,讲实话这里也只是作为自己记录下使用如何使用这个连接池。好的,废话不多说。什么是Druid连接池?Druid首先是一个数据库连接池。Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。内置了StatFilter功能,能采集非常完备的连接池执行信息,Druid连接池内置了一个监控页面,提...

2020-04-14 23:08:31

论内存溢出的排查过程

作为一个没有感情的代码杀手,写代码的时候难免写出一个死循环啥的,或者动不动造成内存泄漏直到内存溢出,那也是难免并且情有可原的。但是我们不能只是做一个简单的代码复制工具人,我们写的bug,我们当然也要直到怎么去解决它咯。好的,今天就来记录下,如果解决内存溢出的问题。制造一起内存溢出事故机智的我当然不可能故意拿着实际项目来弄一个内存溢出的事故咯,这样做了怕是见不到明天的太阳了。所以这里写一...

2020-04-13 17:14:00

论线上如何排查一次CPU100%的情况

记录如何排查CPU100%问题。当我们把服务发布到服务器器,可能会因为一些问题造成我们的服务器CPU被打满甚至超过100%,那如果我们想知道到底上在做什么操作导致CPU持续过高呢?因为在线上,我们只能通过日志看问题,或者排查到哪个进程或者哪个线程持续占用CPU。然后才能找到具体问题在哪里才能进行解决。所以这里我们模拟一个死循环导致CPU过高的情况,然后如何快速的找到问题在哪。问题代码案...

2020-04-13 14:46:49

我的JVM总结

目前总结是jvm相关的一些知识体系,虽然不是很深,但是也让自己对jvm有了一个比较总体的认知。1.jvm的内存结构,主要对堆、栈的理解和使用2. 垃圾回收机制,对垃圾回收器和垃圾回收算法的理解。如何判断垃圾。分代思想和分区思想3. 类的加载机制,类的加载过程是怎样?分别做了什么事情。还有类加载器的了解。以及什么是双亲委派模式4.内存的分配策略,内存分配到堆是遵循什么策略5...

2020-04-11 17:58:58

GC优化和JVM优化指南

GC优化内存被使用了之后,难免会有不够用或者达到设定值的时候,就需要对内存空间进行垃圾回收。并且垃圾回收有不同的回收器,所以针对哪个回收器更好,其实我们可以分别试一下做一次比较。分别去分析不同的回收器的吞吐量和回收时间。选择最优的一个垃圾回收器。垃圾收集发生的时机一般以下几种情况会发生垃圾回收当Eden区或者S区不够用了老年代空间不够用了方法区空间不够用了System....

2020-04-11 16:41:16

JVM参数以及工具分析使用

首先,我们对于jvm的一些知识已经都有了一些了解。从内存结构到内存分配的策略,再到类的加载机制,然后就是对于垃圾回收机制的理解,虽然还有很多细节的地方我们不是很了解,但是细节不是一天两天就能完全记住了,要靠我们后面再实践中不断的总结和发现问题。所以我们现在就开始了解下jvm的一些工具的使用,方便我们对jvm进行优化。JVM参数首先还是先来看看jvm提供的一些参数,我们有对堆、栈的一些命令有...

2020-04-10 15:52:03

理解JVM 垃圾回收机制

对于jvm的内存结构,其实就是对堆,栈的了解。然后也了解了jvm的内存分配的规则:优先分配Eden区域、大对象直接进入老年代、到达一定年龄(长期存活对象)进入老年代、动态对象年龄判断、空间分配担保。对于这些有了了解之后,我们也了解了类加载机制:加载、校验、准备、解析、初始化等等,重要是在准备和初始化阶段,经常笔试会做到一些关于类加载的问题。接下来我们了解下垃圾回收机制。什么是垃圾?在jav...

2020-04-08 14:01:42

理解JVM 类加载机制

什么是类的加载机制虚拟机把类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这既是虚拟机的类加载机制类加载的过程(生命周期)类从被加载到虚拟机内存开始,到卸载为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Init...

2020-04-07 16:32:33

理解JVM内存分配策略

对于JVM的内存结构已经有了一些了解,接下来我们了解下在我们创建对象的过程中,JVM在内存分配方面的一些规则。对象优先在Eden分配大多情况,对象在新生代Eden区分配。当Eden区没有足够空间进行分配时,虚拟机将进行一次Minor GC。虚拟机提供了参数 -XX:+PrintGCDetails ,在虚拟机发生垃圾收集行为时打印内存回收日志。新生代Minor GC 事例定义了4个字...

2020-04-07 11:23:10

dubbo设计架构理解

首先让我们来看一张图,这张图思从dubbo官网拿过来的。基于RPC调用架构设计,我们可以看一下他们之间调用的关系。图中一共有5个重要模块:注册中心registry:服务注册与发现服务提供者provider:暴露服务服务消费者consumer:调用远程服务监控中心monitor:统计服务的调用次数和调用时间容器container:服务允许容器我们已...

2020-03-31 17:04:39

基于Redis实现消息队列典型方案

概述消息队列,Message Queue,常用于解决并发系统中的资源一致性问题,提升峰值的处理能力,同时保证消息的顺序性、可恢复性、必送达性,对应用进行解耦,或者实现异步通讯等。市面上的 MQ应用有很多(例如:Kafka,RabbitMQ,Disque),同时也可以基于 Redis 来实现,比较典型的方案有:基于List的 LPUSH+BRPOP 的实现 PUB/SUB,订阅/发布模式...

2020-01-08 15:08:26

redis的五种常用数据结构、Pub/Sub数据结构、Stream数据结构

目录Redis五种数据结构如下:1.String 字符串类型Redis 字符串命令实战场景:2.Hash (哈希)Redis hash 命令实战场景:3.链表 listRedis 列表命令实战场景:4.Set 集合Redis 集合命令实战场景;5.zset 有序集合Redis 有序集合命令实战场景:6-Redis 发布订阅...

2019-12-02 10:04:39

Redis事务深入解析和WATCH使用

目录1.前言2.事务基本使用1)开启事务2)命令入列3)执行事务/放弃事务3.事务错误&回滚1)执行时错误2)入列错误不会导致事务结束3)入列错误会导致事务结束4)为什么不支持事务回滚?4.监控watch5.事务在程序中使用6.小结作为关系型数据库中一项非常重要的基础功能——事务,在 Redis 中是如何处理并使用的?1.前言...

2019-11-28 00:35:00

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。