随笔分类 - 读书笔记
摘要:RabbitMQ简介 生产者 首先与rabbitmq服务器建立一个连接,然后在这个连接的基础上创建一个信道(Channel), 之后建立一个交换器(Exchange),和一个队列(Queue),并通过路由键进行绑定,然后发送一条信息,然后关闭连接 public class RabbitProduce
阅读全文
摘要:mybatis主要工作 将包含 if等标签的复杂数据库操作语句解析为纯粹的 SQL语句。 将数据库操作节点和映射接口中的抽象方法进行绑定,在抽象方法被调用时执行数据库操作。 将输入参数对象转化为数据库操作语句中的参数。 将数据库操作语句的返回结果转化为对象。 在初始化阶段,MyBatis 主要进行了
阅读全文
摘要:秒杀的主要问题是热点数据的大并发读/写操作 尽管我们可以通过分布式缓存来提升系统的QPS,但是缓存系统的单点容量还是存在上限的,一旦超过临界水位,分布式缓存容易被瞬间击穿。 而热点数据的大并发写操作,势必会下潜至数据库,那么这就会引起大量的线程相互竞争InnoDB的行锁,并发越大时,等待的线程就越多
阅读全文
摘要:JMH是Java Micro Benchmark Harness的简写,是专门用于代码微基准测试的工具集 用JMH进行微基准测试 引入依赖 ## 简单测试ArrayList和LinkedList @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(Tim
阅读全文
摘要:并发级别: 阻塞、无饥饿、无障碍、无锁、无等待 阻塞: 一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行 当我们使用synchronized关键字或者重入锁时,我们得到的就是阻塞的线程 无饥饿: 对于非公平锁来说,系统允许高优先级的线程插队。这样有可能导致低优先级线程产生饥饿。 但
阅读全文
摘要:第一章 单一职责原则 单一职责原则:要求一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情 完美的设计: 一个类实现了两个接口,把两个职责融合在一个类中。 不好的设计: 好的设计: 接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化 第二章 里氏替换原则 如
阅读全文
摘要:外网DNS应该用于全局负载均衡进行流量调度,将用户费配到离他最近的服务器上以提升体验 为了提升吞吐量,一般会在DNS和nginx之间引入接入层,如LVS,F5做四层负载均衡 负载轮询算法 TCP心跳检查 HTTP心跳检查 Consul 动态注册upstream到Nginx上 限流算法 令牌桶算法 u
阅读全文
摘要:service是分布式集群架构的核心 每个服务进程都有一个独立的EndPoint(IP+PORT)访问点,k8s能够让我们通过虚拟ip+端口连接到指定的service上 每个服务进程包装到相应的POD中,使其成为POd中运行的一个容器 Master Node Pod
阅读全文
摘要:mysqld_safe mysqld_safe是一个启动脚本,它会间接的调用mysqld,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启 它。另外,使用mysqld_safe启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志
阅读全文
摘要:系统默认表 mysql远程连接方法: mysql -u root -p 123456 -P 3306 -h 192.168.20.6 用户权限:分为root和其他用户,root用户要避免web连接 query cache:生产中建议关闭,因为只缓存静态数据,如果数据经常读写作用不大 SHOW VAR
阅读全文
摘要:开始分析beans源码 XmlBeanFactory继承自DefaultListableBeanFactory, 而DefaultListableBeanFactory是整个bean加载的核心部分, 是Spring注册及加载bean的默认实现, 而对于XmlBeanFactory与DefaultLi
阅读全文
摘要:第一章 springboot的依赖和自动配置 spring-boot-starter-web引入了下面的包 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-
阅读全文
摘要:第一章 初探java虚拟机 系统虚拟机: Visual Box Vmware 程序虚拟机: JVM 类加载子系统: 负责从文件系统或者网络加载Class信息,加载的类信息放在了方法区,方法区还会存一些运行时的常量信息,包括字符串常量和数字常量 java堆: 虚拟机启动时建立,是java程序最主要的工
阅读全文
摘要:第六章 CompletionService的使用 接口CompletionService的功能是以异步的方式一边生产新的任务,一边处理已完成任务的结果,这样可以将执行任务与处理任务分离开来进行处理。使用submit执行任务,使用take取得已完成的任务,并按照完成这些任务的时间顺序处理它们的结果。
阅读全文
摘要:zookeeper的基本概念和基础 使⽤ZooKeeper来设计应⽤时,最好将应⽤数据和协同数据独⽴开。⽐如,⽹络邮箱服务的⽤户对⾃⼰邮箱中的内容感兴趣,但是并不关⼼由哪台服务器来处理特定邮箱的请求。在这个例⼦中,邮箱内容就是应⽤数据,⽽从邮箱到某⼀台邮箱服务器之间的映射关系就是协同数据(或称元数据
阅读全文
摘要:Semaphore的使用 单词Semaphore[' seməf 😦r)]的中文含义是信号、信号系统。此类的主要作用就是限制线程并发的数量,如果不限制线程并发的数量,则CPU的资源很快就被耗尽,每个线程执行的任务是相当缓慢,因为CPU要把时间片分配给不同的线程对象,而且上下文切换也要耗时,最终造成
阅读全文

浙公网安备 33010602011771号