- 博客(27)
- 资源 (25)
- 收藏
- 关注

原创 一、搜索引擎篇-揭开es神秘的面纱
一、为什么需要搜索引擎?数据库适合结构化数据的精确查询,而不适合半结构化、 非结构化数据的模糊查询及灵活搜索(特别是数据量大时),无法提供想要的实时性。结构化数据:用表、字段表示的数据半结构化数据: xml、html非结构化数据: 文本、 文档、 图片、 音频、 视频等二、搜索引擎如何做到?1、为什么称为倒排索引?原名Inverted index, 失败地翻译成了倒排索...
2020-05-05 10:15:10
40379
1
原创 服务宕机及优化
一、现象: 16点30分左右,某服务飘红,重启之后,内存很快又爆掉,扩充实例到8台之后仍然不行,请运维临时调大最大堆和最小堆到3g,暂时抗住。二、原因分析: 历史遗留问题,1年前某开发写代码时将,所有数据拼成一条sql去存储,随着数据量变大14w数据用一条sql怼到数据库导致服务宕机。 三、Kibana日志:四、线上服务器配置:-xms2g -xmx2g 年轻代1G 老年代1G...
2020-10-15 11:10:41
400
原创 三、搜索引擎篇-lucene入门代码示例
一、lucene是什么?最受欢迎的java开源全文搜索引擎开发工具包。 提供了完整的查询引擎和索引引擎, 部分文本分词引擎。 Lucene的目的是为软件开发人员提供一个简单易用的工具包, 以方便在目标系统中实现全文检索功能, 或者是以此为基础建立起完整的全文检索引擎。二、lucene代码示例:package com.javaxiaobang.es.lucene;import co...
2020-05-04 21:12:26
9569
原创 二、搜索引擎篇-搭建es环境
一、添加es用户:[root@javaxiaobang ~]# useradd es[root@javaxiaobang ~]# passwd es二、修改centos配置:1、[root@javaxiaobang ~]# vim /etc/sysctl.conf#在文件最后面添加内容:vm.max_map_count=262144[root@javaxiaobang ~...
2020-05-04 17:17:57
18373
原创 kafka安装(一)
一、下载地址:链接:https://pan.baidu.com/s/18vp_qCGZgZNjtaewOCc3Uw 密码:54jh二、启动zookeeper:[root@javaxiaobang kafka]# bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log &[1]...
2020-03-20 22:55:48
9222
1
原创 jvm命令行工具(四)
一、jps (Java Virtual Machine Process Status Tool)查看java进程[root@javaxiaobang ~]# jps -l #输出jar包全名20656 sun.tools.jps.Jps3952 clientapp-0.0.1.jar4196 hystrixapp-0.0.1.jar3604 eurekaserver-0.0.1.j...
2020-03-11 18:38:01
28337
原创 Netty复习-走进Netty(一)
一、Netty是什么?本质:网络应用程序框架实现:异步、事件驱动特性:高性能、可维护、快速开发用途:开发服务器和客户端二、Netty优势?支持常用应用层协议解决粘包、半包的传输问题完善的异常处理机制三、JDK NIO的缺点?epoll 空轮询bug :异常唤醒空转导致 CPU 100%API不友好,功能薄弱粘包、半包需要自己去处理需要自己去解决遇...
2020-02-27 17:20:52
9176
原创 counter计数器
一、为什么要做计数器:在唯品会的工作的时候,为了更好的推动系统向智慧供应链发展,理性分析供应商和商助对产品的使用频率,于是,开发了一款轻量级计数器,供各团队使用。二、难点:1、数据量大2、各团队需要保证极端情况下,计数器服务不可用时,不影响各团队业务正常运行3、需要使用简单4、个别需要统一业务日志5、不能有额外的定时器一直轮询三、优势:1、简单 @LogCo...
2019-12-02 18:16:46
19700
原创 百万用户消息处理
场景: 每条消息内容假设占内存1KB(约512个汉字),100W用户的消息同时放入内存约占976.56MB。-----大消息每条消息内容假设占内存0.12KB(约58个汉字),100W用户的消息同时放入内存约占107.56MB。-----本次需求消息(温馨提示:上课提醒有助于养成良好学习习惯哦~\r\n同时为了避免干扰\r\n上课消息提醒只会在每周一、三、五推送哦~) 服务器相关...
2019-11-22 11:12:36
28455
原创 阿里云redis5.0.6集群搭建
一、引言:去年买的阿里云上周到期了,昨晚看到双11新用户有优惠活动,赶紧偷摸的用媳妇手机,花800块买了3年阿里云(2核4G),好了,搭建新环境吧!注:需要打开阿里云的安全组端口(https://oneinstack.com/docs/securitygroup/)二、redis集群搭建:1.CentOs命令如下:wget http://download.re...
2019-11-03 17:46:47
10048
原创 ZAB协议(Zookeeper Atomic Broadcast)
一、简语:ZAB协议是Paxos算法的经典实现二、ZAB协议的两种模式:1.崩溃恢复:1.每个server都有一张选票(myid,zxid),选票投给自己2.收集所有server的投票3.比较投票(逻辑:优先比较zxid,选出zxid最大的,其次比较myid)4.改变服务器状态(崩溃恢复->消息广播 或 崩溃恢复->数据同步)2.消息广播:1.lea...
2019-02-28 19:17:26
17935
原创 mysql之重要命令(三)
一、引言人脑记录的知识,往往会遗忘,还是记录到博客放心点二、命令-- 查看版本show variables like '%version%';-- 支持哪些存储引擎show engines;-- 默认存储引擎show variables like '%storage_engine%';-- 默认隔离级别show variables like 'transaction_i...
2018-12-05 20:34:02
18086
原创 mysql之explain(二)
一、引言最近订阅了极客时间mysql的专栏,感觉讲的还不错,在此之前也看过一些mysql的知识,但是不太系统,故而经常性的用过即忘,趁着对这块感兴趣,赶紧把这块知识记录下来!二、准备工作CREATE TABLE `order_detail` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `...
2018-12-05 16:54:27
17960
原创 多线程处理容器ExecutorCompletionService使用
一、多线程的好处:接口调用,往往离不开多线程,可以减少响应时间二、场景:1、业务A有1W个条形码需要调用第三方(商品服务)获取商品信息接口2、第三方(商品服务)获取商品信息接口, 单次只允许传入10个条形码来查询三、代码:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springfr...
2018-12-04 20:32:40
21690
原创 手写redis客户端
一、RESP通信协议 RedisSerialization Protocol (Redis序列化协议). 特点:容易实现、解析快、可读性强 以\r\n分割数据.二、撸代码package com.dongnao.demo;import java.io.IOException;import java.io.InputStream...
2018-08-27 22:00:57
10347
5
原创 分布式一致性协议-2PC与3PC(三)
一、分布式一致性一个事务需要跨多个分布式节点,又要保持事务的ACID特性,需要引入协调者来统一调度所有分布式节点的执行逻辑,被调度的节点称为参与者。协调者负责调用参与者,并决定最终是否提交事务。基于这个思想,衍生出2PC和3PC两种协议二、2PC协议(Two phase commit)二阶段提交:将事务分成了投票和执行两个阶段。优点:原理简单缺点:单点问题、同步阻塞、...
2018-05-16 22:03:03
18241
原创 分布式架构(二)
一、从单机到分布式:二、分布式常见问题:三、ACID事务的四大特性:原子性:一次执行过程中,要么都成功,要么都失败一致性:从一个一致性状态到另一个一致性状态隔离性:事务之间互不干扰持久性:一旦事务成功结束,它所做的操作会永久保存下来四、CAP理论一致性(Consistency):在分布式环境中,数据在多个节点之间是否能保持一致性可用性(Availa...
2018-05-07 20:37:21
17866
原创 缓存雪崩
缓存服务器挂了或大量缓存集中在一段时间内失效,请求全部转发到数据库上,造成数据库瞬时压力过大雪崩!失效的几种情况:1、缓存服务器挂了2、高峰期缓存局部失效3、热点缓存失效解决方案:1、避免缓存集中失效,不同的key设置不同的超时时间2、增加互斥锁,控制数据库请求,重建缓存3、提高缓存的HA,如:redis集群我的博客园地址...
2018-04-16 21:59:19
9200
原创 秒杀系统如何设计
近来听到关于秒杀的话题,想起N年前去某当面试,好像有类似设计题,觉得挺有意思,整理了下,供大家临时应急使用!秒杀场景:10W真实用户参与秒杀,仅有100人可以成功购买商品。考虑到码农的特殊手段,接口流量咱们按20W去算.思路如下:1、前端控制 技术控制,置灰按钮、防止重复提交 2、后端负载均衡、分散流量单机理论极限并发约6W,20W流量需要4台服务,去分散流量3、用户频率限制用户手脚不停的...
2018-04-16 21:49:37
37021
原创 redis资源未释放引发的问题
一、redis资源未释放的起因:N年前,在修改一个古老程序时,不小心把redis释放的这块给干掉了, if (jedis != null) { if (!isInProcess) { jedis.del(currentPageRunControlRedisKey); } JedisUtil.getInstance().closeJedis(j...
2018-04-16 21:47:57
11376
原创 Zookeeper简介和安装(一)
一、简介:Zookeeper是一个分布式协调服务,提供的服务如下:命名服务:类似于DNS,但仅对于节点配置管理:服务配置信息的管理集群管理:Dubbo使用Zookeeper实现服务治理分布式锁:选举一个leader,这样某一时刻只有一个服务在干活,当leader出问题时释放锁,立即切到另一个服务二、下载:点这里三、三种安装模式: 单机、真分布集群模式、伪分布集群模式四、伪分布式集群搭建:1...
2018-04-16 21:45:32
17890
原创 jvm内存结构(一)
学习之余,整理了下JVM的资料堆:需要重点关注的一块区域,涉及到内存的分配与回收方法区:用于存储已经被虚拟机加载的类信息、常量、静态变量等数据,也叫永久区常量池:用于存放编译期生成的各种字面量和符号引用(JDK6在方法区、JDK7在堆中)虚拟机栈:栈里面存放着基本数据类型和对象的引用方法执行时会创建一个栈帧(存储局部变量表、操作数栈、动态链接、方法出口等...
2018-04-12 14:12:48
17846
原创 AQS分析(AbstractQueuedSynchronizer)(三)
1、AQS是什么 AQS同步器是Java并发编程的基础,从资源共享的角度分成独占和共享两种模式,像ReentrantLock、ThreadPoolExecutor、CountDownLatch等都是基于AQS来实现的,如图:2、AQS同步队列的基本结构 AQS维护了一个头节点(head)和一个尾节点(tail)结构的双向链表,当一个线程获取锁失败时,会将该线程打包成一个Node节点,挂到同步队...
2018-04-12 10:59:30
43665
原创 原子操作(二)
一、什么是原子操作不可被中断的一个或一系列操作二、Java中如何实现原子操作通过锁和循环CAS(自旋)的方式来实现三、什么是CAS(Compare And Swap)CPU的原子锁技术,由CPU提供的CMPXCHG指令保证//AtomicInteger的计数是典型的CASpublic final int incrementAndGet() { for (;;) { ...
2018-04-12 10:55:16
17875
原创 线程基础知识(一)
一、线程是什么? 程序执行流的最小单元,也叫轻量级进程二、线程的5种状态 1、新建(NEW)新建了一个线程 2、就绪(RUNNABLE)调用start方法,处于待命阶段,只要得到军令(获得CPU时间片),立即执行命令(执行run方法) 3、运行(RUNNING)拥有CPU时间片这段时间内,执行具体命令 4、阻塞(BLOCKED)线程因为...
2018-04-12 10:52:23
17910
lucene入门代码示例
2020-05-04
强悍文本编辑器 - Notepad++ v5.3 Final 多国语言版
2009-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人