Solace Blog

Thinking will not overcome fear but action will.

消息队列(mq)

MQ MQ的作用 解耦:将各个系统解耦,降低各系统之间的耦合性。 异步:之前的一个业务操作可能需要整个操作完成后返回一个结果,整个操作完成很耗时。使用mq后可以将请求放到队列中,让消费者去队列消费对应的消息。对于用户来说提升了用户体验。 削峰:高峰期大量操作涌入系统会导致数据库崩溃,使用mq后可以将大量请求放入队列中,让系统从队列中根据最高可操作的请求数量来拉取请求来处理,...

Http请求方法区别

概念 副作用 当发送完一个请求后,网站上的资源状态没有发生修改,即认为这个请求是无副作用的。 幂等性 一个请求无论发送多少次,服务器上资源的状态最终是一致的。 request body 请求可传输的数据量 http method 区别 method 副...

分库分表相关问题

分库分表相关问题 实际项目中的拆分情况? 水平拆分,所有表结构都一样,一般拆分有两种,一种是按照range来分,比如时间,但是这样会导致最新的数据落在某个表,压力不均匀;另一种是hash分法,利用取模来划分数据表,这样的好处是所有表的压力会均匀分配,但是后期如果扩容需要数据迁移。 分库分表中间件 sharding-jdbc:当当网开源插件,在客户端使用,不需要单独部署,运维成本低,就...

Redis

Redis 数据类型 string: list:有序列表,比如微博大V粉丝,lrange可以实现分页 hash:比如存对象 set:无序,自动去重,微博大V共同粉丝 sorted set(zset):有序,自动去重,可排序,排行榜 问题 redis和memcached区别 redis更丰富的数据结构,更强大的数据操作;redis官方是支持cluster模式,...

Mysql优化

MySQL优化 如果明确知道查询结果只有一条记录,建议使用 limit 1 来提高效率,可以让数据库停止游标的移动 select name from user where id=6105281991******** limit 1 索引(index): 对于记录较多的表在使用时可以提高检索速度,分为单列索引和组合索引。 普通索引:create index index_name on...

线程2

线程 - 并发容器 马士兵老师线程示例代码;concurrent文件为源码 ConcurrentLinkedQueue /** * 有N张火车票,每张票都有一个编号 * 同时有10个窗口对外售票 * 请写一个模拟程序 * * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? * * 使用Vector或者Collections.synchronizedXX...

线程1

线程 马士兵老师线程示例代码;concurrent文件为源码 前言 什么是线程 如何创建一个线程 线程同步的概念 synchronized关键字 当要保证一个代码块在多线程执行时,使用synchronized关键字加锁来实现,一般的方法可以对成员变量加锁,或者也可以对this自身来加锁。 public void m() { synchr...

数据库概念

PostgreSQL 数据类型 整数类型: SMALLINT INT 任意精度浮点数类型 REAL NUMERIC(m, n) m位数保留n位 时间类型 TIME 10:05:00 DATE 1989-10-01 TIMESTAMP 2019-01-14 21:52:10 RDBMS: A: Atomicity(原子性)事务中执行...

异常

异常 异常顶层类Throwable Error:大多数此类错误都是异常情况,程序无法触及的错误,不用处理 Exception:Exception和他所有非RuntimeException子类的异常都属于checked exception,这些异常都必须进行处理,throws或者try catch; RuntimeExcept...

Jvm调优

JVM调优 主要调整两块:堆内存参数的调整、垃圾回收器的调整 JVM参数 -:标准参数,所有JVM都支持 -X:非标准参数,每个JVM实现都不同 -XX:不稳定参数,下一个版本可能会取消 内存溢出问题定位 -XX:HeapDumpOnOutOfMemoryError:把堆内存信息dump出来 -XX:HeapDumpPath=*** :demp到哪个文件里面...