自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疯狂老司机的博客

热爱Web开发,热爱生活!

  • 博客(135)
  • 资源 (3)
  • 收藏
  • 关注

原创 PHP中间件(middleware)解析

简介中间件是一个闭包,而且返回一个闭包。中间件为过滤进入应用的HTTP请求提供了一套便利的机制,可以分为前置中间件和后置中间件。常用于验证用户是否经过认证,添加响应头(跨域),记录请求日志等。编写规范中间件要要满足一定的规范:总是返回一个闭包,闭包中总是传入相同的参数(由主要逻辑决定), 闭包总是返回句柄(handler)的执行结果;如果中间件的逻辑在返回句柄return $handler($name)前完成,就是前置中间件,否则为后置中间件。

2017-09-23 11:40:48 10047

原创 阿里终面:10亿数据如何快速插入MySQL?

要首先确认约束条件,才能设计方案。确定面试官主要想问的方向,例如1T文件如何切割为小文件,虽是难点,然而可能不是面试官想考察的问题。从数据规模看,需要分库分表,大致确定分表的规模。从单库的写入瓶颈分析,判断需要进行分库。考虑到磁盘对并发写的支持力度不同,同一个库多个表写入的并发需要限制。并且支持动态调整,方便在线上环境调试出最优值。存储引擎对写入性能支持不同,也要在线上对比验证数据库批量插入的最佳阈值需要反复测试得出。由于存在并发度限制,所以基于Kafka分离读取任务和写入任务比较困难。

2023-11-07 19:45:41 228

转载 非常详细的Sklearn介绍

​Sklearn(全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

2023-04-15 10:04:34 4267 2

原创 进入Docker容器的两种方法

常见的两种方法:docker exec -it 容器ID /bin/bashdocker attach 容器ID推荐使用第一种方式。

2020-05-19 14:54:18 1252 1

原创 Mac升级自带PHP版本(非Homebrew方式)

一、升级到对应版本升级到PHP 7.3curl -s https://php-osx.liip.ch/install.sh | bash -s 7.3升级到PHP 7.2curl -s https://php-osx.liip.ch/install.sh | bash -s 7.2二、添加环境变量我安装的是7.3.8版本的export PATH=/usr/local/php5-7.3.8-20190811-205217/bin:$PATH三、查看PHP版本php

2020-05-19 14:47:58 1957 1

原创 PHP安装zookeeper扩展(最新基于zookeeper-3.5.8)

PHP安装zookeeper扩展一、安装依赖(已Centos为例)二、安装Cppunit测试库三、安装zookeeper-client四、安装PHP zookeeper扩展刚开始尝试pecl install zookeeper,结果发现找不到zookeeper依赖。网上的编译安装都是基于zookeeper-3.4.12.tar.gz,但是现在zookeeper稳定版本已经是apache-zookeeper-3.5.8,最新版本已经到了3.6,找不到旧的安装包了,新版安装方式有点不一样,在此分享出来给有需要

2020-05-19 14:37:37 1518 4

转载 一夜搞懂 | JVM 字节码执行引擎

学习导图一.为什么要学习字节码执行引擎?#代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步首先,抛出灵魂三问:虚拟机在执行代码的时候,如何找到正确的方法呢? 如何执行方法内的字节码呢? 执行代码时涉及的内存结构有哪些呢?如果你对上述问题理解得还不是特别透彻的话,可以看下这篇文章;如果理解了,你可以关闭网页,打开游戏放松了h...

2020-04-06 15:46:23 360

转载 Linux服务器问题排查思路及常用命令

文章来源:https://www.toutiao.com/i6812494040383095308/http://url.cn/5d9a0qf作为一名合格的开发人员,特别是做后端的同学,经常会遇到各种各样的问题。内存问题free命令用于查看内存的使用情况,在Linux上,很多人会用top显示系统内存,但是不够直观,top通常我们用于查看CPU的占用率。Linux下查看内容的专...

2020-04-06 15:29:46 1451

转载 开源监控系统Prometheus基本介绍及应用展示

Prometheus是一个Google开源的服务监控系统,它通过HTTP协议收集服务数据并存储在本地的时序数据库上。作为新一代的监控系统,Prometheus具有以下特点: 多维数据模型:时间序列由指标名称定义和键/值设置; PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询; 不依赖分布式存储,单节点即可运行; 基于HTTP的Pull...

2020-04-03 23:07:53 734

原创 Canal——阿里巴巴开源的基于binlog的MySQL增量订阅&消费组件

简介canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,应用场景十分丰富。常用场景电商场景下商品、用户实时更新同步到至Elasticsearch、solr等搜索引擎; 价格、库存发生变更实时同步到redis; 数据库异地备份、数据同步; 代替使用轮询数据库方式来监控数据库变更,有效改善轮询耗费数据库资源。工作原理MySQL主备复制原理...

2020-04-02 15:45:58 978

原创 2020年4月份DB-Engines数据库最新排名

2020年4月份最新的DB-Engines数据库排名出来了,截止目前,该网站实时统计了354种数据库的排名指数,其根据来源于Google,Bing 和Yandex搜索引擎及Stack Overflow、DBA Stack Exchange、LinkedIn、twitter等知名开发者社区和职场社交网络。前20名数据如下:变化趋势图:如果说里面的大部分都不...

2020-04-02 15:38:59 2122

原创 goroutine调度原理

goroutine简介golang语言作者Rob Pike说,“Goroutine是一个与其他goroutines 并发运行在同一地址空间的Go函数或方法。一个运行的程序由一个或更多个goroutine组成。它与线程、协程、进程等不同。它是一个goroutine“。goroutine通过通道来通信,而协程通过让出和恢复操作来通信; goroutine 通过Golang 的调度器进...

2020-03-21 14:43:53 575

原创 Linux进程上下文概念详解

一、上下文基本概念进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬...

2020-03-15 18:47:03 1747

原创 史上最好用的云盘 - OneDrive介绍(附带15G推荐链接)

非常重要:先注册账号,再继续往下看注册地址:点我注册使用教程Excel for Office 365Word for Office 365PowerPoint for Office 365Publisher for Office 365通过将文件保存到云,你可以从任何位置进行访问,且可轻松地与家人和朋友进行共享。 若要联机保存文档OneDrive,请登录Office。...

2019-10-31 10:56:00 8859

原创 JavaScript实现PHP urlencode函数

由于接口签名需要,JavaScript encodeURIComponent方法本身标准跟PHP不一致,网上找了很久,居然没有一个完整可用的,决定参考大神的半成品自己写一个。可用标准:1. 特殊符号encode结果一致;2. emoji表情支持;function urlEncode(str) { let strArr = []; let output = '';...

2019-09-29 17:29:15 516

原创 Mac下使用vscode搭建python3开发环境

##Mac下使用vscode搭建python3开发环境1、 安装python插件、code runner插件;2、“Command + ,” 打开settings.json文件,添加以下配置:{ # 输出到终端 "code-runner.runInTerminal": true, # 更换编辑器解析器路径(换成你自己的) "python.pythonPath": "/usr/lo...

2019-07-29 18:03:49 6157

原创 makefile基础及实战

一、什么是makemake 是软件构造工具,make有多个版本,本文将基于GNU make,make会自动搜索当前目录下的makefile, Makefile或者GNUmakefile。二、make核心规则target ... : prerequisites ... commandtarget是目标文件,实际是Object File,或执行文件,以及标签(Label)pre...

2019-07-24 18:44:10 697

原创 gcc -c -o编译过程

gcc编译分步处理一、预处理二、编译三、汇编四、链接一步到位多模块编译一次性编译:独立编译:C源文件到可执行文件共经历了4个过程。在使用GCC编译程序时,编译过程可以被细分为四个阶段,包括预处理、编译、汇编、链接。分步处理一、预处理在预处理阶段,编译器主要作加载头文件、宏替换、条件编译的作用。一般处理带“#”的语句。我们可以通过gcc -E 选项进行查看,如下所示:gcc -E m...

2019-07-19 21:36:30 11708 2

原创 gcc编译优化-O0 -O1 -O2 -O3 -OS解析

gcc提供了近大量优化选项,用来对编译时间,目标文件长度,执行效率三个维度进行不同的取舍和平衡。gnu的官方网站的描述理解起来难度较大,本文仅介绍常用的一些选项。gcc 常用编译选项-c 只编译并生成目标文件。-E 只运行 C 预编译器。-g 生成调试信息。GNU 调试器可利用该信息。-Os 相对语-O2.5。-o FILE 生成指定的输出文件。用在生成可执行文件时。...

2019-07-16 14:29:06 48122 2

原创 PHP利用file_get_contents发送http请求

服务器端模拟 POST/GET 等请求,使用 CURL 很容易办到,那么如果不使用 CURL 库,又该怎么办呢?$data = array( 'test'=>'bar', 'baz'=>'boom', 'site'=>'www.nimip.com', 'name'=>'nimip.com'); $da...

2018-04-24 12:35:29 10981

原创 Golang中string、int、int64互相转换

使用官方的strconv包即可:#string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) #int到string string:=strconv.Itoa(int) #int64到string string:=strconv...

2018-04-24 12:29:41 15465

原创 PHP---引用使用foreach(xxx as &$x)时候的坑。

注意如下一段代码:$data1 = ["1","2","3"];$data2 = ["4","5","6"];$all = 0;foreach($data1 as &$x){ $all += $x}#注意这里$x是$data1最后一个元素的引用$all2 = 0;foreach($data2 as $x=>$y){ $all2 +=

2018-04-22 17:54:37 5010 1

转载 PHP5中foreach对数组指针的影响及原因

问题描述:遍历数组时,改变了数组的值,数组遍历完成后,数组的指针指向了第二个元素,当发生这种情况时,会对后续通过指针遍历数组产生影响。[php] view plain copy<?  $arrD = array('0'=>'a','1'=>'b','2'=>'c');  echo key($arrD)."</br>";  foreach($arrD as $in...

2018-04-22 17:34:17 1159

原创 PHP-用PDO操作MySQL数据库

先建立数据库。复制代码到TXT文件,然后另存为'建立数据库.txt' 最后修改为'建立数据库.sql',最后用navicat运行数据库文件。就建好数据库了。代码如下:CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(25) NOT NULL DEFAULT '', ...

2018-04-22 11:44:41 1856

原创 mysqli 预处理详解

预处理语句及绑定参数预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。预处理语句的工作原理如下:预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出执行:最后,...

2018-04-22 11:38:47 1312

转载 PHP7新特性总结

前言本文是一篇讲座听后+后续研究的总结。 话说当年追时髦,php7一出就给电脑立马装上了,php5和php7共存,也是立马写了个超级耗时间的循环脚本测了一番,确实php7给力很多,然后也是注意了一些新增的特性与一些丢弃掉的用法。 由于php升级乃头等大事,公司近期才打算升级,所以之前一直只能私下欣赏php7带来的快感,负责升级的小伙伴搞了个分享,还挺全的,此处mark一下,当作笔记。主要研究问题:...

2018-04-22 10:54:59 19809 4

转载 Ajax跨域Cookie相关设置

在Web编程中我们经常会遇到跨域的问题。默认情况下,浏览器是不允许跨域访问的。所以说,在这里就有一个概念:CORS(Cross-Origin Resource Sharing)跨域资源共享。在HTML5标准出来之前,CORS是不被允许的。但是为了达到跨域访问资源的目的,出现了很多较麻烦的方式:jsonp、代理文件、地址栏hash等等。随着HTML5的出现,CORS为我们解决了一个大麻烦。CORS的...

2018-04-09 17:27:02 552

原创 TCP的粘包现象

1 什么是粘包现象  TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象  (1)发送方原因  我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。  所以,正是Nagle算法造成了发送方有可能造成粘包...

2018-04-09 11:17:51 892

转载 进程:linux用户态-内核态

用户态:Ring3运行于用户态的代码则要受到处理器的诸多检查,它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务状态段(TSS)中I/O许可位图(I/O Permission Bitmap)中规定的可访问端口进行直接访问。内核态:Ring0在处理器的存储保护中,核心态,或者特权态(与之相对应的是用户态),是操作系统内核所运行的模式。运行在该模式的代码,可以无限制...

2018-04-09 10:41:11 677

转载 Wireshark抓包分析一个耗时20秒的请求

这篇博文分享的是我们针对一个耗时20秒的请求,用Wireshark进行抓包分析的过程。请求的流程是这样的:客户端浏览器 -> SLB(负载均衡) -> ECS(云服务器) -> SLB -> 客户端浏览器。下面是分析的过程:1. 启动Wireshark,针对内网网卡进行抓包。2. 在IIS日志中找出要分析的请求(借助Log Parser Studio)通过c-ip(Clie...

2018-04-08 17:38:08 12931 1

转载 TCP/IP协议栈中的TimeStamp选项

TCP应该是以太网协议族中被应用最为广泛的协议之一,这里就聊一聊TCP协议中的TimeStamp选项。这个选项是由RFC 1323引入的,该C建议提交于1992年,到今天已经足足有20个年头。不过相信大部分程序猿对这个建议还是相当陌生。要理解为啥需要用TimeStamp选项,还需要从TCP协议的几个基本设计说起。TCP协议的几个设计初衷,以及引发的问题:1. 协议规定收端不需要响应每一个收到的数据...

2018-04-08 17:04:47 914

原创 TCP报文中的sackOK含义和作用

一般TCP的ACK过程       在TCP的交互过程中,除了第一个SYN请求报文的ACK标志未置1外,其他的报文的ACK标志都是置1的。当客户端与服务器在交互的过程中,某些数据报被丢弃时,其ACK确认和后续数据交互的过程如下图所示:在上图所示的交互过程中,我们可以清楚的发现,在交互中由于某些未知的不可控的原因导致包含data-2的数据报文丢失。虽然仅有包含data-2的报文丢失,客户端已经收到其...

2018-04-08 16:30:04 5022

转载 wireshark抓包常见提示含义解析

原文转自:http://blog.sina.com.cn/s/blog_987e00020102wq60.html             http://www.cnblogs.com/redsmith/p/5462547.html=========================================================================1.[Packet s...

2018-04-08 14:52:23 1192

转载 GoLang之协程

目前,WebServer几种主流的并发模型:多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求;但在高并发环境下,多线程的开销比较大;基于回调的异步IO,如Nginx服务器使用的epoll模型,这种模式通过事件驱动的方式使用异步IO,使服务器持续运转,但人的思维模式是串行的,大量回调函数会把流程分割,对于问题本身的反应不够自然;协程,不需要抢占式调度,可以有效提高线程的任务并...

2018-04-04 17:24:47 799

转载 C语言实现的数据结构之------哈希表

1 哈希表原理这里不讲高深理论,只说直观感受。哈希表的目的就是为了根据数据的部分内容(关键字),直接计算出存放完整数据的内存地址。试想一下,如果从链表中根据关键字查找一个元素,那么就需要遍历才能得到这个元素的内存地址,如果链表长度很大,查找就需要更多的时间.void* list_find_by_key(list,key){ for(p=list;p!=NULL; p=p->next...

2018-04-03 18:21:48 1613

原创 大量数据去重:Bitmap和布隆过滤器(Bloom Filter)

5TB的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是一些32bit大小的数据该如何解决?如果是64bit的呢?在面试时遇到的问题,问题的解决方案十分典型,但对于海量数据处理接触少的同学可能一时也想不到什么好方案。介绍两个算法,对于空间的利用到达了一种极致,那就是Bitmap和布隆过滤器(Bloom Filter)。Bitmap算法在网上并没有找到Bitmap算法的中文翻译,在《...

2018-04-02 19:45:54 3246

转载 从文件 I/O 看 Linux 的虚拟文件系统

1 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系统。...

2018-03-30 10:53:37 437

原创 在线更改MySQL表结构工具pt-online-schema-change

原文出处:https://blog.youkuaiyun.com/lovelichao12/article/details/73549939总所周知,数据库最昂贵的操作莫过于DDL操作,因为MySQL在修改表期间会阻塞任何读写操作的,基本上你的业务出于瘫痪状态了。对于庞大的可能历时好几个小时才完成,简直就是个恶梦,没法容忍的操作。Percona开发了一系列工具Percona Toolkit包,其中有一工具pt...

2018-03-29 18:35:58 982

转载 详解Nginx中HTTP的keepalive相关配置

这篇文章主要介绍了Nginx中HTTP的keepalive相关配置,以及Nginx的Httpd守护进程相关的keepalive timeout配置,需要的朋友可以参考下。http keepalive在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会 ...

2018-03-29 17:30:26 8002

转载 SCTP协议详解

SCTP (Stream Control Transmission Protocol)是一种传输协议,在TCP/IP协议栈中所处的位置和TCP、UDP类似,兼有TCP/UDP两者特征。SCTP是可以确保数据传输的,和TCP类似,也是通过确认机制来实现的。和TCP不同的是:1. TCP是以字节为单位传输的,SCTP是以数据块为单位传输的TCP接收端确认的是收到的字节数,SCTP接收端确认的是接收到的...

2018-03-29 15:35:38 58971 6

Microsoft Web Application Stress Tool以及msvcp.dll 64 32

Microsoft Web Application Stress Test Tool附带依赖及详细说明; 若安装提示msvcp50.dll问题,则命令行 regsvr32 msvcp50.dll(注意64位系统使用windows/syswow64下的regsvr32)注册,入口问题警告可忽略,再重新安装即可

2018-07-30

geckodriver

geckodriver-v0.17版本,内含linux、mac、win32、win64四个版本,走过路过不要错过,非常值!

2017-07-05

SQLite Expert Professional 破解版

SQLite Expert Professional 破解版

2017-06-21

空空如也

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

TA关注的人

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