摘要:
1、 socket并不是一个协议,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,提供一套调用TCP/IP协议的API。 当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖 阅读全文
摘要:
1、 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 SYN:同步序列编号(Synchronize Sequence Numbers) 2、 第二次握手:Server收到数据包后由标 阅读全文
摘要:
一、 Consul 1、 对服务方提供服务注册、并对注册的服务做心跳检查,然后对调用方提供服务地址集合,客户端自由选择要调用的服务。 2、 consul集群中的consul节点有两种模式,一种是client:内存模式,保存的服务集合放在内存里,不会持久化。另一种是server:服务集合最后会保存在硬 阅读全文
摘要:
1、 伪静态:把前端请求动态页面如api/good?id=1,改成api/good1.html。api/good1.html经过nginx时可以rewrite成api/good/1。这样的好处是对搜索引擎友好(seo) 2、 静态化: A、 第一次请求时从数据库取出数据,拼装成html页面,存进静态 阅读全文
摘要:
1、 创建一个新容器(不占用当前窗口):docker run -d –name 容器名字 镜像 2、 查看容器日志:docker logs 容器id 3、 进入容器内部:docker exec -it 容器 /bin/bash 4、 暴力删除容器:docker rm -f 容器id 5、 查看容器信 阅读全文
摘要:
mysql分区属于水平切分,如果有主键必须使用主键来分区,查询结果如果跨分区会自动合并 A、 range分区: 必须使用主键来分区,数据分配不均匀 alter table user partition by range(id) ( partition p1 values less than (1), 阅读全文
摘要:
一、索引优化技巧 A、 复合索引中,范围查找之后的索引会失效(select id from u where a=1 and b>2 and c=3,这条sql语句中,如果有(a,b,c)的复合索引,c的索引失效) B、 一张表最好不要创建超过5个索引,尽量用复合索引 C、 左连接将索引创建在右表上合 阅读全文
摘要:
可以分析sql语句的类型、有没有使用到索引、分区 A、 id字段:id相同:id越靠前的表越先执行;id不同:id越大的表越先执行 B、 select_type 字段: simple: 简单的 select 查询,查询中不包含子查询或者 union primary:查询条件中包含有子查询时最外层的表 阅读全文
摘要:
1、 聚集索引:其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字。 阅读全文
摘要:
1、前端: 点击按钮后设置为不可用,提交成功后跳转到其他页面 2、后端: A、 在方法前弄一个action filter,对请求ip、传入参数、user-agent这些信息MD5成一个摘要,然后存redis里,设置几秒后过期。拒绝过期前这段时间过来的相同摘要的请求 B、当客户端要展示表单页面数据的接 阅读全文
摘要:
1、 互斥锁 当有一个线程要访问共享资源(临界资源)之前,会对线程访问的这段代码(临界区)进行加锁。如果在加锁之后没释放锁之前其他线程要对临界资源进行访问,则这些线程会被阻塞睡眠,直到解锁,如果解锁时有一个或者多个线程阻塞,那么这些锁上的线程就会变成就绪状态,然后第一个变为就绪状态的线程就会获取资源 阅读全文
摘要:
一、数据库4大隔离级别 为了解决并发事务存在的脏读(读到了其他事务已修改还未提交的数据)、不可重复读(一个事务里两次读同一个数据,但数据不一样,因为这个数据在两次读的间隔里,有其他事务修改了这个数据并提交了)、幻读(a事务读取表的记录数为x,然后有其他事务对这个表进行了新增或删除行,a事务再读取该表 阅读全文
摘要:
1、 跨域请求、源、同源 同源策略是浏览器的的安全策略,为了保护浏览器。 源:协议(http、https)+ip(域名)+端口 同源:协议(http、https)+ip(域名)+端口都相同 如果不同源,发起的请求可以到服务器,服务器也会正常响应,但是浏览器不允许使用响应的结果。 解决方法 A、 后台 阅读全文
摘要:
1、 强一致性:2pc提交,会锁定涉及到事务的资源,造成堵塞。 TransactionScope(.net framework有,core没有,限制在windows)是其中一种实现方法 2、 弱一致性: tcc(try-confirm-cancel):一个接口变三个接口,try接口、提交接口、取消接 阅读全文
摘要:
1、 数据库自增id 1)不同数据库语法和实现不同,数据库迁移的时候或多数据库版本支持的时候需要处理。 2)在单个数据库或读写分离或一主多从的情况下,只有一个主库可以生成。有单点故障的风险。 3)在性能达不到要求的情况下,比较难于扩展。 4)如果遇见多个系统需要合并或者涉及到数据迁移会相当痛苦。 5 阅读全文
摘要:
1、 redis阻塞锁:stackexchange客户端有实现AcquireLock(key,timeout)方法,key就是标识,timeout表示拿到锁之后可以占用多久,或者没拿到锁等待多久。 缺点是timeout参数不好把握 2、 redis非阻塞锁:如果没有拿到锁,给用户返回失败,代码不自动 阅读全文
摘要:
1、 分布式关系型数据库,newsql,结合了关系型数据库和nosql数据库的优点,高并发、支持在线扩容缩容、可以关联查找。 2、 三大模块 A、 Tidb集群:相当于客户端连接池,负责接待客户端连接,分析sql语句,与PD集群通信,找出相关数据保存的kv键值对在哪个tikv集群的节点里,然后再去t 阅读全文
摘要:
一、 Elasticsearch(数据库) 需要全文检索时,需要模糊搜索时,需要分布式海量日志时使用 1、 基本结构:索引(数据库),类型(表),文档(行),字段(列) 2、 Text和keyword都是字符串类型,但是text会被分词(拆开),keyword不会被分词 3、 Es非常吃内存,并且有 阅读全文
摘要:
1、 Producer: 生产者,生产数据,就是我们客户端代码,写数据的 2、 Consumer:消费者:负责处理kafka服务里面消息 3、 Consumer Group/Consumers:消费者组:就是kafka独特处理轮询还是广播。 轮询:消费者每一个处理一条,轮排 广播:一条信息,多个消费 阅读全文
摘要:
1、 简单队列模式simple:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列。也称为点对点模式。一条消息只能一个消费者消费。 2、 工作队列work:一个消息生产者,一个交换器,一个消息队列,多个消费者。同样也称为点对点模式。一条消息只能一个消费者消费。 3、 发布订阅publis 阅读全文