- 博客(93)
- 收藏
- 关注
原创 python 算法小技巧
key=lambda x: [x[1][0], x[1][1], x[1][2]] 表示按照字典中的元素value的3个值进行升序排序,即 order by 列0,列1,列2 ASC。# 字典排序 dict_res = {1:[1,2,3], 2:[-1,1, 1], 3:[1,2,2]}string = '0' * n # 字符串复制,string为长度为n,内容皆为 '0'组成。# 排序后:res = {2:[-1,1,1], 1:[1,2,3], 3:[1,2,2]}
2024-12-08 03:49:14
236
原创 ES - 面试题剖析 - 1
数据先写入内存 buffer,然后每隔 1s,将数据 refresh 到 os cache,到了 os cache 数据就能被搜索到(所以我们才说 ES 从写入到能被搜索到,中间有 1s 的延迟)。每隔 5s,将数据写入 translog 文件(这样如果机器宕机,内存数据全没,最多会有 5s 的数据丢失),translog 大到一定程度,或者默认每隔 30mins,会触发 commit 操作,将缓冲区的数据都 flush 到 segment file 磁盘文件中。
2024-12-08 03:31:45
446
原创 微服务之限流、熔断、降级
将系统的所有功能服务进行一个分级,当系统出现问题,需要紧急限流时,可将不是那么重要的功能进行降级处理,停止服务,这样可以释放出更多的资源供给核心功能的去用。如果系统是长期有300W的用户来访问,肯定是要做上述升级的,但是常常面临的情况是,系统的日常访问量就是100W,只不过偶尔有一些不可预知的特定原因导致的短时间的流量激增,这个时候,公司往往出于节约成本的考虑,不会为了一个不常见的尖峰来把我们的系统扩容到最大的尺寸。基于这个简单的方法,可以再延伸出一些高级功能,比如阈值可以不是固定值,是动态调整的。
2024-12-08 02:45:22
312
原创 IO多路复用
(1)select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替,但是它是设备就绪时,调用回调函数,把就绪fd放入就绪链表中,并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的CPU时间。这就是回调机制带来的性能提升。
2024-12-08 02:40:20
1010
原创 Yapi安装
官网教程离线安装包环境要求环境搭建安装nodejs安装mongodb安装YApi浏览器访问 ip:3000 yapi接口管理平台默认的管理员为admin@admin.com密码ymfe.org离线安装PM2用pm2启动和重启YApi。
2024-12-08 02:34:16
831
原创 ElasticSearch下载安装
请确保在运行Elasticsearch之前,您有足够的权限,并且没有其他服务占用9200和9300端口。如果您想将Elasticsearch作为服务运行,您可能需要创建一个launchd守护进程或使用其他工具来管理Elasticsearch的自动启动。
2024-12-08 02:18:50
518
原创 Mac 卸载/重装 brew
安装的时候会很慢,可能是因为墙的原因,我是在下午安装,这时候公司网络比较好,因为大家都走了就我一个。3、安装完成之后,输入。4、brew 常用命令。5.2 切换回到官方源。
2024-12-08 02:10:37
1394
原创 supervisor实战-demo
supervisor安装成功后supervisor配置文件: /etc/supervisord.conf; supervisor config file[unix_http_server]file=/var/run/supervisor.sock ; (the path to the socket file)chmod=0755 ; sockef file mode (default 0700)[supervisord]logfile=/v
2021-03-17 16:05:21
353
原创 supervisor安装配置
Linux的后台进程运行有好几种方法,例如nohup,screen等,但如果是一个服务程序要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。而supervisor是Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。安装 - Debian / Ubuntu可以直接通过apt安装# apt-get install supervisor使用 - 编写应用程序...
2021-03-17 11:43:46
163
原创 Python 日期处理工具类
工具类文件名称:Helper.pyimport datetime''' 日期处理工具类'''class DateHelper(object): ''' 获取指定日期范围内的日期列表 ''' def get_date_list(self, date_start, date_end): datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d') date
2021-01-29 10:23:06
315
原创 PHP的pm、pm.max_requests、memory_limit参数说明
php-fpm.conf pm pm是来控制php-fpm的worker进程数到底是一次性产生固定不变(static模式),还是在运行过程中随着需要动态变化(dynamic)。众所周知,worker进程数与服务器的性能息息相关,进程数太少则不能及时处理请求,而太多则会占用过多的内存而拖慢系统。 php-fpm处理请求时会随着处理请求数的增加而占用越来越多的内存,所以static模式下往往不好判断启动多少的进程数能使内存利用达到最大化,所以想到了dynamic模式。 pm...
2020-09-12 21:40:07
1141
转载 DDL是什么
DDL是什么SQL(Structure Query Language)是数据库操作的的核心语言SQL(Structure Query Language)是数据库操作的的核心语言DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE, ALTER, DROP, TRUNCATE, COMMENT, RENAMEDML(Data Manipulation Language)
2020-06-25 17:00:42
4697
原创 Linux 三剑客
sed sed是一种流编编器,它是文本处理中非常中的工具,能够完美的配合正则表达式便用,该功能不同凡响。处理时,它会把当前处理的行存储在临时缓冲区中,称为”模式空间”( pattern space),接着用sed命令处理缓冲区中的内容,处理成功后,把缓冲区的内容送往屏幕显示,接着理下一行,这样不断重复,直到文...
2020-01-04 16:57:50
415
原创 lambda函数
lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 (注意:lambda 函数不能包含命令,它们所包含的表达式不能超过一个)lamda函数的好处(1)lambda函数比较轻便,即用即仍,很适合需要完成一项功能,但是此功能只在此一处使用,连名字都很随意的情况下;(2)匿名函数,一般用来给filter,map这样的函数式编程服务;(3)作为回调函数...
2019-08-14 19:21:57
682
原创 docker run与docker start的区别
docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。docker start的作用是,重新启动已存在的镜像。也就是说,如果使用这个命令,我们必须事先知道这个...
2019-08-05 10:47:17
1303
转载 PHP实现URL长连接转短连接
短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。这样的话其好处为:1、内容需要;2、用户友好;3、便于管理。实现短网址(short URL)系统比较流行的算法有两种自增序列算法、 摘要算法自增序列算法:也叫永不重复算法,设置 id 自增,一个 10进制 id 对应一个 62进制的数值,1对1,也就不会出现重复的情况。这个利用的就是低进制转化为高进制时...
2019-08-05 10:26:47
819
转载 Curl和Socket的区别
Socket PHP使用berkely的socket库来创建他的连接,socket是一个数据结构,你可以通过这个socket来开启服务器和客户端的会话。服务器端一直处于监听状态,当一个客户端连接服务器,他就打开服务器端正在监听的一个端口进行会话。这时服务器端接收客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也可以发送信息给客户端。产生一个sock...
2019-05-13 14:55:32
2806
原创 python 多线程执行脚本
多线程执行:eg.""" 多线程执行"""import datetimefrom time import sleepimport threadingimport sys, getoptclass Test(threading.Thread): # TODO 初始化参数 def __init__(self, times): threadi...
2019-04-29 09:46:51
3417
原创 判断4个点组成矩形
<?php/** * 判断4个点是否组成矩形 * @param [type] $list [description] * @return boolean [description] */function isJuXing($list){ $v = []; $distance = []; for ($i=0; $i < 3 ; $i+...
2019-04-15 16:08:16
1532
原创 组合生成算法
给定一个数组:A、B、C、D,输出长度为N的组合,返回所有的组合的方式<?php/** * 组合:数据集$list,组合的个数:$num * @param $list * @param $m * @return [] */function arrangement($list, $num) { $res = []; $count = count($list...
2019-04-15 16:07:04
883
原创 串联所有单词的子串
给定一个字符串s和一些长度相同的单词words。找出s中恰好可以由words中所有单词串联形成的子串的起始位置。注意子串要与words中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。<?php/** * @param String $s * @param String[] $words * @return Integer...
2019-04-13 18:06:13
675
2
原创 删除排序数组中的重复项
一、删除数组中的重复项【无序】<?php/** * 给定一个数组(无序),你需要在原地删除重复出现的元素,使得每个元素只出现一次, * 返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 * @param array $list * @return array new list */function a...
2019-04-10 15:00:40
210
原创 数组中只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例输入 :[2,2,1]输出 :1示例2输入 :[4,1,2,1,2]输出: :4<?php/** * 求数组中只出现一次的元素 * 其它元素出现的次数为偶数次 */fu...
2019-04-10 14:13:23
152
原创 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2输入:["H"...
2019-04-10 14:01:00
186
原创 买卖股票最大收益
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能...
2019-04-10 11:35:09
1268
1
原创 组合计算——拆分一个整数数为N个
将一个数Number按照拆分成N个在(min, max)范围内的数方法一 基本思想:循环1 ~ N,每次循环,都计算随机范围(min , max),判断是否可以生成N个满足要求的数<?php/** * 将一个数按照拆分成N个在(min, max)范围内的数 * @param [type] $number 待拆分的数 * @param [type] $...
2019-04-03 16:26:24
2340
转载 CGI、FastCGI、PHP-CGI与PHP-FPM的区别
CGI就像翻译机,将PHP语言给服务器解释,便于相互之间的理解和通讯,最后呈现给浏览器查看,哈哈,是不是很有趣呢:转自:http://www.php.cn/php-weizijiaocheng-377248.htmlCGICGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行...
2019-04-01 14:15:25
200
转载 int字节问题说明
今天发现NEON技术中 int类型的字节数是2,感觉很奇怪,最早写51单片机时也是2,后来到了观念转变成了4,现在有遇到了2一、转自 http://www.tuicool.com/articles/6j2uqi2最近在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节。后来,查了The C Programming language这本书,里面有一句话是...
2019-03-25 14:27:02
529
原创 同步、异步与阻塞、非阻塞的理解
同步、异步概念:消息的通知机制解释:涉及到IO通知机制;所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态通知或者回调函数来通知调用者,调用者被动接收结果。阻塞、非阻塞概念:程序等待调用结果时的状态解释:涉及到CPU线程调度;所谓...
2019-03-23 18:00:31
145
转载 cookie被浏览器自动删除机制
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。1.1 Cookie机制在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混...
2019-03-21 15:57:01
14534
转载 快速排序之PHP实现【非递归】
算法过程 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。一趟快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始由后向...
2019-03-21 10:59:21
1843
转载 快速排序之PHP实现【递归】
快速排序的原理找到当前数组中的任意一个元素(一般选择第一个元素)作为标准,新建两个空数组,遍历整个数组元素,如果遍历到的元素比当前的元素要小,那么就放到左边的数组,否则放到右面的数组,然后再对新数组进行同样的操作,不难发现,这里符合递归的原理,所以我们可以用递归来实现。使用递归,则需要找到递归点和递归出口; 递归点:如果数组的元素大于1,就需要再进行分解,所以我们的递归点就是新构造的数组...
2019-03-21 10:12:30
254
原创 设计模式解析之观察者模式
1:观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。2:场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。3:观察者模式实现了低耦合,非侵入式的通知与更新机制。定义一个事件触发抽象类...
2019-03-21 09:39:16
153
转载 设计模式解析之适配器模式
将各种截然不同的函数接口封装成统一的API。PHP中的数据库操作有MySQL,MySQLi,PDO三种,可以用适配器模式统一成一致,使不同的数据库操作,统一成一样的API。类似的场景还有cache适配器,可以将memcache,redis,file,apc等不同的缓存函数,统一成一致。首先定义一个接口(有几个方法,以及相应的参数)。然后,有几种不同的情况,就写几个类实现该接口。将完成相...
2019-03-21 09:36:59
118
转载 设计模式解析之注册模式
注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。<?phpclass Register{ protected static $objects; function set($alias,$object)//将对象注册到全局的树上 ...
2019-03-21 09:17:19
377
转载 设计模式解析之单例模式
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。单例模式有以下3个特点:1.只能有一个实例。2.必须自行创建这个实例。3.必须给其他对象提供这一实例。那么为什么要使用P...
2019-03-21 09:16:16
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人