自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 laravel生命周期之初识Container

提到laravel框架,我的脑海中最先浮现的是什么呢?那一定是,依赖注入、控制反转。作为后来居上的框架,laravel能取得如此的成绩,优秀的思想也贡献了很大一部分力量。什么是Container?定义:那么在提到依赖注入之前我们就不得不先说一说一切的根本:容器Container。所谓容器,听名字就知道,是一个仓库,装东西用的,所以,container所有的功能,都围绕一个主题:管理类。工作流程:首先,生成一个数组绑定列表,用自定义名称作为主键,然后键值是闭包(输入的可能是闭包或者实体类,但是,在存

2021-11-18 18:24:14 286

原创 生产者消息分区原理概述

我们在使用 Apache Kafka 生产和消费消息的时候,肯定是希望能够将数据均匀地分配到所有服务器上。比如很多公司使用 Kafka 收集应用服务器的日志数据,这种数据都是很多的,特别是对于那种大批量机器组成的集群环境,每分钟产生的日志量都能以 GB 数,因此如何将这么大的数据量均匀地分配到 Kafka 的各个 Broker 上,就成为一个非常重要的问题。今天我就来和你说说 Kafka 生产者如何实现这个需求,我会以 Java API 为例进行分析,但实际上其他语言的实现逻辑也是类似的。为什么分区?

2021-11-16 16:30:55 159

原创 kafka集群参数配置(下)

今天我们继续来聊那些重要的 Kafka 集群配置,下半部分主要是 Topic 级别参数、JVM 参数以及操作系统参数的设置。在上一期中,我们讨论了 Broker 端参数设置的一些法则,但其实 Kafka 也支持为不同的 Topic 设置不同的参数值。当前最新的 2.2 版本总共提供了大约 25 个 Topic 级别的参数,当然我们也不必全部了解它们的作用,这里我挑出了一些最关键的参数,你一定要把它们掌握清楚。除了 Topic 级别的参数,我今天还会给出一些重要的 JVM 参数和操作系统参数,正确设置这些参

2021-10-29 11:34:53 572

原创 Kafka集群参数配置(上)

Broker 端参数目前 Kafka Broker 提供了近 200 个参数,这其中绝大部分参数都不用你亲自过问。当谈及这些参数的用法时,网上的文章多是罗列出一些常见的参数然后一个一个地给出它们的定义,事实上我以前写文章时也是这么做的。不过今天我打算换个方法,按照大的用途类别一组一组地介绍它们,希望可以更有针对性,也更方便你记忆。首先 Broker 是需要配置存储信息的,即 Broker 使用哪些磁盘。那么针对存储信息的重要参数有以下这么几个:**log.dirs:**这是非常重要的参数,指定了 Br

2021-10-21 16:26:34 1059

原创 redis数据结构之链表

1.1简介作为一种常用的数据结构,链表提供了高效的节点重排能力,以及搞笑的书序访问能力,同时可以通过增删节点调整长度。1.2链表构成redis中每个链表节点使用一个adlist.h/listNode结构表示;typedef struct listNode{ // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode;多个listNode通过n

2021-10-14 19:17:37 81

原创 redis数据结构之简单动态字符串

1.1简介Redis没有直接使用C语言的字符串表示(以空字符结尾的字符数组),而是自己创建了一种名为简单动态字符串的结构,并标识未SDS。为什么Redis不直接使用C字符串而要自己创建新结构呢?这就不得不介绍下SDS的组成。1.2SDS组成1.len属性,标识这个SDS当前保存的字节长度。2.free属性,标识这个SDS未使用的字节长度。3.buf属性,标识字节数组,字符串的值保存在此属性当中,以一个‘\0’结尾。SDS遵循了C字符串以空字符结尾的习惯,这使得,SDS可以直接重用一部分C字

2021-10-13 19:37:19 62

原创 JAVA面试八股文

Java 知识总结手册链接:https://pan.baidu.com/s/1P-jPY0_Yi7b2aYsEPZ8PjA密码:1cknJava 生态知识体系/面试必看资料链接: https://pan.baidu.com/s/1z_gLfJoueXFRwcSYRKaTug提取码: 3vkeJava-华山版手册链接:https://pan.baidu.com/s/16MeBAzVjYWy740VhDkpH7g密码:6i2wJava 面试手册链接:https://pan.baidu.com

2021-10-12 18:46:19 442 1

原创 带你吃透二叉树对称性递归算法

前言leetcode上有非常多的二叉树相关的算法题,而这类题目,大多可以使用递归的方式解决,不知道大家发现没有,应用于二叉树算法中的递归,大多具有对称性,也就是对称性递归(symmetric recursion)。实战题型分析二叉树问题中的判断类问题大多可以使用对称性递归解决,具体可分为以下两种:1.不需要构造函数(直接递归方法本身即可解决问题)这类题目大多为单树问题,只需对树本身进行处理,力扣题目举例:100. 相同的树226. 翻转二叉树104. 二叉树的最大深度110. 平衡二叉树

2021-08-19 15:25:33 168

原创 什么是死锁?

定义指的是多个进程在执行过程中,抢占资源和通信时产生的阻塞现象,此时若无外力作用,它们都将无法继续执行。死锁原因(1)多个进程执行顺序不当(例如:p1进行需要先运行R1,再运行R2,而p2进程需要运行R2,再运行R1,当p1运行到R1,获取R2时发现R2已被占用,p2运行到R2,获取R1发现R1被p1占用,此时就出现了死锁)(2)相互抢占资源(例如进程A抢占了不可剥夺的资源C,进程B想要使用资源C,只能够等待进程A主动释放)死锁产生的必要条件(1)互斥条件:资源每次只能被一个进程所占用。(2

2021-08-11 15:30:03 57

原创 进程和线程的区别(一)

简介进程(Process) 进程是程序的实体,是系统进行资源调度的基本单位,同时进程也是线程的容器。线程(thread) 是操作系统能够进行运算调度的最小单位,它存在于进程之中,一个进程可以包含多个线程, 每条线程可以执行不同的任务。结构进程构成(线程+内存+文件/网络句柄)线程(栈+PC+TLS)通信进程间的通信共有七种方式:1.管道pipe,管道是一种半双工的通信方式,有固定的读端和写端,只能应用于父子进程和兄弟进程。2.fifo命名管道,和pipe类似,区别点在于它允许任何进程

2021-08-10 21:56:39 69

原创 java面试题(一)

java基础1.string和stringbuffer和stringbuilder的区别?string是字符串常量,每次操作会重新开辟新的内存空间;stringbuffer是字符串变量,每次操作使用初次开辟的内存空间(类似于java的string,存在一个字符串缓冲区;同时它是线程安全的)stringbuilde是字符串变量,使用方法和buffer类似,但是非线程安全。2.sleep() 区间wait()区间有什么区别?sleep属于thread,不释放锁;wait属于object,释放锁和次线

2021-08-10 11:40:15 71

原创 java赋值和New String()区别

java中对于字符串,有两种存储方式:1.字符串对象存储在常量池中(stringtable);2.字符串存储在堆内存中。一.常量池字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能。JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化为字符串开辟一个字符串常量池,类似于缓存区创建字符串常量时,首先查询字符串常量池是否存在该字符串存在该字符串,返回引用实例,不存在,实例化该字符串并放入池中。二.字符串的三

2021-08-09 21:01:11 77

原创 每日一题:求解两数之和PHP篇

题目如下两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]笔者第一反应想是这还不简单,写两个循环,两数之和等于target就完事了,一顿操作,目的是达到了,但是效率确差

2020-12-04 19:47:48 300

原创 手把手教你java程序调试

编辑器: intelliJIDEA版本:java1.8调试快捷键:F8:下一行F9:下一个断点F7:进入方法接下来调试开始第一步:构建方法nowFormatDate第二步:构建单元测试方法testString4Date,构建假数据调用调试方法nowFormatDate第三步:构建单元测试testString4Date在代码行号之后空白处点击左键,出现红色圆点标识断点成功第四步:在nowFormatDate方法中增加断点第五步:鼠标放置在testString4Date方法名上

2020-09-10 18:49:44 1057

原创 curl错误码大全curl_errno

CURLE_UNSUPPORTED_PROTOCOL(1)你的URL传递给libcurl的使用协议,这libcurl的不支持。支持可能是你没有使用一个编译时的选项,它可以是一个拼写错的协议字符串,或者只是一个协议的libcurl没有代码。CURLE_FAILED_INIT(2)非常早期的初始化代码失败。这可能是内部错误或问题,资源问题,一些基本的东西可能无法完成初始化时间。CURLE_URL_MALFORMAT(3)该网址的格式不正确。CURLE_NOT_BUILT_IN(4)libcurl的

2020-09-10 17:51:58 4461

原创 mysql45讲学习之事务隔离

提到事务,你一定很熟悉,在平日工作中,我们或多或少都会用到mysql的事务,比如你的账号里有100元钱,你要给小明转账100元,转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 100 块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了...

2020-02-06 23:55:56 117

原创 mysql45讲学习之日志模块

今天我们主要讨论的是mysql的两个日志模块redo log(重做日志)不知道你还记不记得《孔乙己》这篇文章,酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。如果有人要赊账或者还账的话,掌柜一般有两种做法:1.一种做法是直接把账本翻出来,把这次赊的账加...

2020-02-05 20:00:22 163

原创 【Redis源码学习】Redis命令set学习(一)

前言:该篇内容为我对redis的学习记录,欢迎指正批评。文中只是放了部分调试内容,完整的可以根据流程图跟踪。redis版本:4.0.0调试工具:lldb一.redis set命令调用流程二.源码分析(1)源码解析服务端对命令的解析是绑定在server.c中的redisCommandTable全局参数中,redisCommandTable为一个结构体数组。结构体redisComma...

2020-02-05 19:36:36 125

原创 PHP7】底层设计与源码分析(一)

一.前言本系列文章主要是《PHP7底层设计与源码实现》的学习笔记,一方面是为了记录知识点,另一方面是将文章以自己的想法重新梳理一遍,并且争取该系列文章每周1~2篇,欢迎大家的批评与指正。本篇文章会简单介绍 PHP 7 的新特性,初步了解 PHP 7 执行原理,内核架构,简单介绍了ext、main、sapi、TSRM、Zend各自的功能。二.PHP 7 新特性PHP 7 除了性能方面有极大提...

2020-02-04 22:13:44 1525

原创 mysql45讲学习之一条查询语句的实现过程

首先我们来看这样一条查询语句:mysql> select * from T where ID=10;这是一条我们平日开发中经常使用的查询语句,我们都知道它可以返回查询结果,却不知道他是如何执行的,所以今天我们就对mysql进行具体的拆解,来了解查询背后的来龙去脉上面是一张MySQL的逻辑架构图,我们可以很清晰的看出,mysql主要分为两大部分,存储引擎和服务层,服务层包括查询缓存,...

2020-02-04 21:52:51 135

空空如也

空空如也

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

TA关注的人

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