自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (3)
  • 收藏
  • 关注

原创 redis系列-对象

redis对象redis对象系统包含字符串对象,列表对象,哈希对象,集合对象和有序集合对象,通过这5种对象,redis在执行命令时,用来判断一个对象是否可以执行给定的命令。redis使用对象来表示数据库中的键和值,当创建一个新的键值对,会创建两个对象,一个是键,一个是值。对象类型和编码redis对象结构typedf struct redisObject{ unsigned type:4; unsigned encoding:4 void *ptr;}robj;类型redisObje

2020-10-27 23:06:56 167

原创 redis系列-整数集合

整数集合整数集合是redis中用来保存整数数值的集合抽象数据结构,d当一个集合中只包括整数值元素,并且这个集合的元素数量不多,redis会采用整数集合作为集合键实现,结构体如下typedef struct intset { uint32_t encoding;//编码方式 uint32_t length;//集合包含的元素数量 int8_t contents[];//保存元素的数组} intset;encoding 编码有三种:1.INTSET_ENC_INT16,当为这种时,con

2020-10-13 22:42:43 187

原创 redis系列-跳跃表

跳跃表什么是跳跃表:跳跃表是一种有序集合,可以通过在每个节点中维持多个指向其他节点的指针,快速定位到节点所在位置1.比如我们有一个有序链表集合:1-7,如果我们想找出7的位置,则需要比较7次2.如果我们采用跳跃表方式,利用类似索引的方式,提取出关键点,如下图,我们搜索7的位置就会快很多。这样多层链表结构就是我们称为跳跃表redis中使用的跳跃表redis中使用跳跃表作为有序集合键的底层实现,如果一个有序集合包含的元素数量比较多,或者元素成员是长字符串,redis底层就会采用跳跃表来实现.

2020-10-09 23:02:04 240

原创 redis系列-字典

字典字典:字典称为符号表,关联数组,用来保存键值对的抽象数据结构redis字典redis的字典使用哈希表作为底层实现,一个哈希表中有多个哈希表节点,每个哈希表节点保存了字典中的一个键值对哈希表与哈希节点结构如下1.在redis中,哈希表结构体定义为...

2020-09-22 22:55:18 166

原创 Consul 入门

1.什么是consulConsul是一个支持多数据中心,分布式高可用,服务发现和配置共享,支持健康检查和允许存储键值对的一个服务管理软件‘’每个consul 都运行一个consul Agent,agent与一个和多个Consul Server 进行交互.Consul Server 用于存放和复制数据.server自行选举一个领袖.虽然Consul可以运行在一台server , 但是建议使用3到5台来避免失败情况下数据的丢失.每个数据中心建议配置一个server集群.Consul采用一致性Raft算法保

2020-06-30 23:10:28 275

原创 分布式技术

分布式模式单机模式:所有有用程序和数据均部署在一台电脑或服务器上,由一台计算机完成所有的处理缺点:单个计算机的处理能力取决于cpu和内存,而且存在性能首先,单点失效问题优点:功能,代码和数据集中,便于维护,管理和执行数据分布式模式:利用多台计算机并行处理多个请求,在相同的时间内完成更多的请求,解决单机效率瓶颈问题。多集群出现的问题如下不同服务器,如何均匀的转发到不同的应用服务器上。请求量较大时,对数据库的频繁读写操作,数据库IO访问的瓶颈当有些数据成为热点数据时,导致数据库访问频繁,

2020-05-13 15:43:37 365

原创 java虚拟机之-即时编译,类的加载,和方法的桥接

jvm hostSpot内置多个即时编译器:C1,C2,Graal(java10)C1 称为client编译器,面向client端它采用的优化编译比较简单C2 称为server编译器,面向性能要求比较高的服务端程序,优化复杂,编译时间长,但是执行效率更高分层编译:java7开始,hostspot虚拟机采用了分层编译,热点方法会首先采用C1编译,然后热点方法中的热点会采用C2编...

2020-04-28 15:37:54 184

原创 java基本原理-虚拟机怎么运行java字节码,java基本类型,加载java类

java 虚拟机结构java虚拟机结构:java虚拟机加载java类后,会被存放与方法区java虚拟机会将栈细分为面向java方法的java栈,面向本地(native)方法栈,存放线程执行位置的pc寄存器运行流程在运行过程中,当调用一个java方法是,java虚拟机会在当前线程的java方法栈中生成一个栈帧当退出当前执行的方法时,java虚拟机会弹出当前线程的当前栈帧当...

2020-03-27 17:47:28 188

原创 netty-安全增强,防止OOM,空闲检测,黑白名单设置

netty防止出现OOMnetty oom出现原因:根源在于读的速度大于写的速度netty 防止oom对策:设置netty高低水位线启动流量整形时考虑:1.maxwrite(默认4m) 2.maxGlobalWriteSize(默认400M) 3.maxWriteDelay(默认4s)修改程序:在handler里面写之前判断是否可写,如果不可写就做另外处理pu...

2020-02-20 22:00:21 1211

原创 netty优化使用-增强写数据功能,流量整形,不同平台开启naive

netty增强写数据功能一般我们发送数据会采用如下方法进行发送数据- `public class BussinessProcessHandler extends SimpleChannelInboundHandler<Object> { protected void channelRead0(ChannelHandlerContext ctx, Object o) th...

2020-02-18 21:30:24 2427

原创 netty优化使用-内存泄漏检测,注解,线程模型

netty内存泄漏是什么原因:忘记release调用ByteBuf buffer=ctx.alloc().buffer();导致:堆外内存未free和堆内池化内存未归还,占用的资源未释放,导致OOM。netty内存检测方法:1.引用计数(buffer.reCnt()), ByteBuf buffer=ctx.alloc().buffer(),引用计数+1,buffer.releas...

2020-02-13 21:20:58 449

原创 netty-启动流程

netty启动流程启动实例:public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); ...

2020-01-17 18:12:32 206

原创 netty-经典三种IO模式

经典三种IO模式BIO模式(阻塞I/o)NIO模式(非阻塞IO)AIO模式(异步模式)阻塞与非阻塞,同步与异步阻塞非阻塞同步异步BIO与NIO比较BIO代码简单特定场景:连接数少,并发度低,BIO性能不低于NIOnetty对BIO的支持netty对reactor的支持什么是reactor:reactorshi...

2019-12-24 15:45:49 678

原创 mysql-索引篇

什么是索引索引出现是为了提高查询效率,就比如寻找一本书中的某个知识点,目录就相当于书的索引,对于数据库来说,索引相当于书的目录索引实现方式- 哈希表 哈希表是以key-value存储的数据结构,通过输入key,查找对应的value,存储方式为,用一个哈希函数将key换算成数组中的一个位置,然后将value存入数组中的该位置,当发生key冲突的时候,即不同的key换算成的值在数组中的位置一样...

2019-09-17 21:38:07 97

原创 mysql 事务隔离

mysql 事务隔离级别读未提交:事务A修改了t 表字段 k =2,未提交事务,事务B 查询 表t ,查询到k值为2,在该事务隔离状态下,事务B获取到的k值为修改后的值读提交:事务A 修改t表字段k=2,原值为1 未提交事务,事务B查询表t,查询到k 值为1,事务A 提交事务,此时事务B查询k值为2可重复读:事务A 开启事务时刻 t a1 ,修改t表字段 k=2 时刻t a2 ,提交事务...

2019-08-07 22:12:37 84

原创 mysql语句执行

查询语句执行mysql基本架构图连接器:负责客户端建立连接,获取权限,管理连接,可以通过 show processlist 查看此时系统的连接状态 。查询缓存:mysql 执行查询请求时,会去查询缓存中,查询是否有缓存,如果有缓存,直接将缓存值返回。值得注意一点的是,表的更新,会将该表上的所有查询缓存清空。mysql8.0中,将查询缓存功能删除了分析器:分析器主要处理对sql语句的解析...

2019-07-09 16:39:18 135

原创 字符串匹配算法

字符串匹配算法BF 算法bf算法又叫做暴力匹配算法,核心思想为:主串中,检查起始位置分别为0,1,2,3,…n-m 且长度为m的n-m+1个子串,看有没有跟模式串匹配的,(比如 在字符串A中查找字符串B,那么A为主串,B为模式串)匹配规则时间复杂度:比如模式串长度为m,主串长度为n,每次都要比对m个字符,要比对n-m+1次,所以最坏情况下时间复杂度为o(n*m)RK 算法RK算法...

2019-06-13 15:27:47 217

原创 数据结构-排序算法(一)

冒泡排序冒泡排序法:每次比较相连的两个数据,查看是否满足大小关系,如果不满足,则选择互换,重复n次,排序完成图解实例:代码实例:public class BubbleSort { public int [] sort(){ int[] a={5,1,3,2,4}; int lastExchangeIndex=0; int sor...

2019-05-10 19:07:50 115

原创 java内存分配与垃圾回收策略

java内存分配java对象分配主要分配在堆上的新生代Eden区域,如果启动了本地线程分配缓存,将会优先分配在TLAB上,少数情况下将会分配在老年代中。对象优先在Eden分配:大多数情况下,会优先在Eden区域分配,当Eden区域不足时,虚拟机将会发起一次Minor GC老年代分配:大对象直接进入老年代...

2019-04-17 23:05:03 99

原创 java垃圾收集器和内存分配

java垃圾收集器

2019-04-16 22:21:22 129

原创 java内存模块

java 虚拟机内存模块java虚拟机在执行java程序时将java管理的内存分为不同的区域,主要是:1.方法区,2.虚拟机栈,3.本地方法栈,4.堆,5程序计数器程序计数器程序计数器为当前线程所执行的字节码的行号指示器,如果当前线程执行的是一个java方法,那么计数器记录的是正在执行的虚拟机字节码指令的地址,如果执行的是native方法,那么这个值就为空,此内存区域不会产生内存溢出问题j...

2019-04-01 21:45:21 269

原创 Paxos 算法 (解决分布式系统中多个节点之间一致性通信协议)

Paxos 算法 百科Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。这个算法被认为是类似算法中最有效的。Paxos 算法作用在分布式系统中,一致性问题是在节点宕机、消息无序等场景可能出现的情况下,相互独立的节点之间如何达成决议的问题,作为解决一致性问题的协议,Paxos的核心...

2018-12-19 14:51:28 1628

原创 构建docker 镜像 Dockerfile 构建

构建docker 镜像 Dockerfile 构建docker build -f /path/to/a/Dockerfile .-f 指定Dockerfile 文件目录 .代表当前目录-t 指定构建镜像仓库和标签Dockerfile 构建规则- FROM 首行指定基础镜像信息(FROM 或 FROM:或FROM:)- MAINTAINER 维护者信息- RUN 镜像操作指令 (she...

2018-12-18 10:21:12 148

原创 java 并发包同步 CountDownLatch, CyclicBarrier, Semaphore

java 线程并发包通常为java.util.concurrent 下的包线程包提供的同步结构主要有三个CountDownLatchCyclicBarrierSemaphoreCountDownLatchCountDownLatch 允许一个线程或多个线程等待某些操作完成,一般用于等待事件的促发实例:/** * @Author: gsonp * @Date: 20...

2018-10-31 20:42:04 165

原创 基于Netty的websocket client 和server

websocket简介websocket时h5时期提供的在单个TCP链接上进行全双工的通讯协议,使客户端和服务器端能够实时通信基于netty 的websocket server 端服务启动public class ServerMain { public static void main(String[] args) throws Exception{ ...

2018-07-27 10:23:38 23173 14

原创 springCloud版本(Finchley.RC1)-服务注册与发现2(注册服务)

一.简介上篇写了eureka 注册中心的启动: https://blog.csdn.net/u010939285/article/details/80426844 这篇主要是如何将服务注册到eureka上二.服务注册2.1 创建项目 eurekaClient添加pom依赖: &lt;dependency&gt; &lt;groupId&g...

2018-06-12 14:06:08 841

原创 springCloud版本(Finchley.RC1)-服务注册与发现

一.spring cloud 简介spring cloud 基于spring boot 为开发人员简化分布式系统基础设施的开发,它提供了一系列的组件 比如:服务注册和发现,负载均衡,断路器,restful风格的客户端,请求路由,消息总线等二.服务注册中心eurekaspring cloud eureka 是spring colud netflix 微服务套件中的一部分,它是基于Netf...

2018-05-28 19:49:27 4365

原创 基于时间轮的定时器方案设计

基于时间轮的定时器方案设计一.时间轮简介: 时间轮简介:时间轮方案将现实生活中的时钟概念引入到软件设计中,主要思路是定义一个时钟周期(比如时钟的12小时)和步长(比如时钟的一秒走一次),当指针每走一步的时候,会获取当前时钟刻度上挂载的任务并执行:二.设计方案: 1.单层时间轮设计:如图 以上图为例,假设一个格子为1秒,整个一圈表示的时间为12秒,此时需要添加5秒后执行的任务,则此...

2018-04-23 13:42:08 4551

转载 让你不再害怕指针——C指针详解(经典,非常详细)

前言:复杂类型说明&nbsp;&nbsp;&nbsp; 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一...

2018-03-23 15:08:37 157

原创 java 注解- 入门篇

java 注解java 注解的作用当创建一个描述符性质的类或接口时,其中包含重复性的工作时,可以考虑使用注解来简化该过程。例如:spring中使用了大量注解来简化bean的转载和实例化过程java注解组成和定义元注解:元注解的作用是负责注解其他注解:简单的说就是负责其他注解说明,和给其他注解限制作用,java中定义的元注解有4种:@Target@Retentio...

2018-03-21 11:41:46 179

原创 ElasticSearch 安装和运行

ElasticSearch简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。它比solr更容易使用安装Elas...

2018-02-26 20:49:57 738

转载 ffmpeg 基本命令备注

关闭MoreSpeech的博客 目录视图 摘要视图 订阅 ffmpeg 常用命令备份 2017-03-29 17:42 130人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。decode g729ffmpeg -acodec g729 -f g729 -i 1.g729 out.wavdecode g723ffmpeg -

2018-01-19 20:50:02 454

原创 java多线程-CompletionService

compeltionService 使用原因:在并发任务时,如果需要获取并发任务执行后 返回结果,可以这样像ExecutorService提交Callable 任务,然后保留每个任务关联的Future对象,不断的轮询get方法,来获取结果,这是其中一种方法,不过java 提供了更好的api (compeltionService),来完成这些功能CompletionService :Com

2018-01-15 19:42:18 358

原创 java多线程任务-ExecutorService

ExecutorService 使用原因使用原因:Executor框架使用Runnalbe作为其基本的任务表示形式,但是runnable并不能返回一个值或抛出一个异常,使用ExecutorService,提交一个携带结果的任务Callable Callable:该接口call方法将返回一个值,并可能抛出一个异常Future:在ExecutorService 中 所有submit方法将返回Fu

2018-01-13 19:44:28 217

原创 solr控制脚本命令

solr控制脚本命令可以使用bin/solr 的脚本 将允许solr安装或集群上执行许多常见的操作,可以启动或体质solr,创建和删除集合或内核,在zk上执行操作,并检查solr和配置的分片的状态启动和通知solrbin/solr start/restart使用restart命令是,必须传递您在启动solr时最初传递的所有参数启动参数bin/solr脚本提供许多参数如:-a “String” 表

2017-12-16 16:08:34 703

原创 solr核心组成

solr核心组成solr的实例类似于关系数据库找那个的表结构,核心配置文件为 managed-schemamanaged-schema 文件主要包含三部分:字段(Field),字段类型(FieldType) ,唯一键(uniqueKey)solr采用的是一种反向索引,就是重关键字到文档的映射过程,保存这种映射这种信息的所以称为反向索引使用分词组件将文档分成一个个单独的单词,去除标点符号,去除停

2017-12-15 14:02:53 539

原创 protobuf 和 intellij 配置使用

protobuf intellij 使用简介Protocol Buffer 简称 ProtoBuf 是用于结构化数据串行化的灵活、高效、自动的方法,又如 XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构安装intellij 安装 使用protobuf在intellij file-> set

2017-11-15 11:22:08 12612 2

原创 java jdk动态代理

java jdk动态代理为什么要使用动态代理:什么是代理:在设计模式中这样说的—–代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能代理分类:java代理总共分为三类:a.静态代理,b.java jdk动态代理,c.CGLib 动态代理静态代理 例:接口:IUserD

2017-10-14 17:39:23 267

转载 MySQL数据库设计规范

MySQL数据库设计规范一、命名规范[数据库环境介绍]通常来讲,各个互联网公司的数据库分为5个数据库环境:dev : 开发环境, 开发可读写,可修改表结构; 常用的163的数据库表; 开发人员可以修改表结构, 可以随意修改其中的数据; 但是需要保证不影响其他开发同事; qa : 测试环境, 开发可读写, 开发人员可以通过工具修改表结构; sim: 模拟环境, 开发可读写, 通过web平台;发起上

2017-09-19 14:34:55 474

原创 开放封闭原则(ocp)

一.开放封闭原则(ocp)1.软件实体(类,函数)应该是可以扩展的,但是不可修改- “对于扩展是开放的”行为是可以扩展的,当应用的需求改变时,可以对模块进行扩展,使其具有满足那些改变的新行为,可以改变模块的功能- “对于更改是封闭的”对模块行为进行扩展时,不必改动模块的源代码,2.ocp的手段:抽象化: 3.ocp实现:a.封装变化 -什么会变化?封装1.数据库模式2.硬件变化3.数据

2017-08-12 18:16:56 589

java 时间轮的定时器,多轮和单轮实现

此为根据时间轮定时器的算法实现的 java时间轮的定时器,多轮和单轮实现

2018-04-23

java时间轮的定时器,多轮和单轮实现

此为根据时间轮定时器的算法实现的 java时间轮的定时器,多轮和单轮实现

2018-04-23

python-dbutils 简单封装

python dbutils 简单封装

2017-05-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除