![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 66
牛八里昂
这个作者很懒,什么都没留下…
展开
-
设计模式OO原则
设计原则和设计模式原则是在模式之下,比模式更抽象(模式是解决方案层面上),原则是一种指导思想,更难理解。SOLD原则1、单一原则一个类只有一个引起变化的原因;职责-设计类时,关注职责;如果多于一个动机去改变这个类,那就不是单一职责。克制一个类中写多个职责软件设计更多关注的是职责和相互分离2、开闭原则ocp功能对修改关闭,多扩展开放原则实现途径:策略模式(横向扩展)、模板模式(纵向扩展)、桥接模式关键是抽象;OOD核心开发人员应该仅仅对程..原创 2021-12-29 22:10:22 · 184 阅读 · 0 评论 -
RPC与HTTP协议理解
其实计算机里面的很多概念都是来源于现实世界的,通过现实里面具体的例子来理解RPC。A:代表一栋大楼(相当于一个大的服务端内网集群),B:代表大楼内的一个个房间(每个房间相当于一个应用框架),C:代表人员管理机构(相当于楼管处或者各级人口管理部门)。首先,在项目架构比较简单的时候,可能一个项目就一个统一的框架,一种语言,这时候我们程序里面的一个方法里面可能会调用N个其他的方法,但因为都是在同一个框架内,都属于框架级的内部调用,这个时候自然用不到RPC,RESTful足以满足当前场景。 但是当你的项目架构越来越原创 2021-01-27 20:59:58 · 280 阅读 · 1 评论 -
简述redis主从同步的过程
参考答案:1.从服务发送一个sync同步命令给主服务要求全量同步。2.主服务接收到从服务的sync同步命令时,会fork一个子进程后台执行bgsave命令(非阻塞)快照保存,生成RDB文件,并将RDB文件发送给从服务。3.从服务再将接收到的RDB文件载入自己的redis内存。4.待从服务将RDB载入完成后,主服务再将缓冲区所有写命令发送给从服务。5.从服务在将主服务所有的写命令载入内存从而实现数据的完整同步。6.从服务下次在需要同步数据时只需要发送自己的offset位置(相当于MySQL bin原创 2020-08-26 14:38:47 · 515 阅读 · 0 评论 -
volatile底层理解
并发编程中,最常用的两种机制:Synchronized和Volatile;Synchronized是共享资源在并发情况下常用方法来保证数据一致。Volatile是java虚拟机提供的最轻量级的同步机制主要适用于读多写少的场景,作用有一、保证共享变量可见性,二、内存屏障禁止指令重排序。volatile可见性说volatile可见性前,需要先了解java的内存模型,也就是JMM;问题如果多个线程同时去内存读取共享变量到各自的私有内存再做处理,那么多个线程彼此是不知道对共享变量做了什么操作的,可能就会导原创 2020-07-19 23:29:46 · 357 阅读 · 0 评论 -
RabbitMQ学习
rabbitmq是MQ中的一种,比较适用于一般的中小型公司。并发量可以达到1.2w+。基础知识:RabbitMQ的发送、接收端口一般为5672,管理接口15672。RabbitMQ用TCP建立通信,但是TCP连接是十分消耗资源的,所以RabbitMQ引入了信道Channel的概念。信道Channel其实是TCP的虚连接,建在TCP之上,相对TCP来讲效率很高,用到了多路复用技术。另外还引入了交换机,可以根据特定的场景选择特定的策略方式,主要由Direct exchange:直连.原创 2020-06-20 23:32:53 · 2846 阅读 · 0 评论 -
Bean从扫描到创建
spring容器的启动*以ClassPathXmlApplicationContext启动spring容器为例:首先,ClassPathXmlApplicationContext(“applicationContext.xml”) 通过父类把”applicationContext.xml”文件设置到configLocations参数上;其次,ClassPathXmlApplicationContext继承自 AbstractXmlApplicationContext,而AbstractXmlAppli原创 2020-06-07 23:30:26 · 144 阅读 · 0 评论 -
mac安装homebrew和redis
1 我们需要安装homebrew(mac的安装神器,有了它以后你下在啥都简单)打开命令输入:/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”只要上面一句话,根据网上 约等待5分钟,可以看到安装完成。安装完成后写上下面的配置,可以关闭hom...转载 2019-06-20 19:25:02 · 100 阅读 · 0 评论 -
单例模式
-------懒汉模式---------单例实例在第一次调用的时候创建public SingleExample{//构造函数设为private,是防止该类使用new SingleExample生成private SingleExample(){};private static SingelExample = instance;public static SingleExample ge...原创 2019-05-19 09:17:50 · 737 阅读 · 0 评论 -
JVM的区域划分以及工作原理
区域划分jvm的区域划分如下所示:大致就是分为:程序计数器,虚拟机栈,堆,方法区,本地方法栈,这几个部分。接下来我们从自己写好的Java代码如何通过JVM来运行的角度,来分析一下JVM里这些区域是如何支撑我们的Java代码跑起来的。程序计数器假设我们有如下的一个类,就是最最基本的一个HelloWorld而已:public class HelloWorld {public stati...转载 2019-04-24 10:28:32 · 309 阅读 · 0 评论 -
StopWatch类
背景有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的Java类,小例一则如...转载 2019-04-06 20:58:52 · 2139 阅读 · 0 评论 -
LocalDate LocalTime java8新的时间日期库及使用示例
java8引入了一套全新的时间日期API,本篇随笔将说明学习java8的这套API。java。time包中的是类是不可变且线程安全的。新的时间及日期API位于java.time中,下面是一些关键类●Instant——它代表的是时间戳●LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。●LocalTime——它代表的是不含日期的...转载 2019-04-01 00:45:02 · 1404 阅读 · 0 评论 -
Spring中单例、多例以及安全性和有状态bean、无状态bean区别
在spring中配置bean,有以下两种情况:<bean id="userService" class = "com.easybike.com.UserService" scope="singleton"><bean id="userService" class = "com.easybike.com.UserService" scope="protoType">当...转载 2019-04-01 00:15:07 · 1394 阅读 · 0 评论