- 博客(122)
- 资源 (50)
- 收藏
- 关注
原创 jQuery的简单模拟实现
<div>demo element</div><script type="text/javascript">function jQuery(selecor) { let doms = document.querySelectorAll(selecor); for (var i = 0; i < doms.length; i++) { this[i] = doms[i]; } this.length = doms.length;}funct
2021-08-16 09:42:13 229
原创 B树和B+树简介
B树特性B树,又称多路平衡查找树,B树中所有节点的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树,或为满足如下特性的m叉树:树中每个节点至多有m棵子树,即至多含有m-1个关键字。若根节点不是终端节点,则至少有两棵子树。除根节点外的所有非叶节点至少有ceil(m/2)棵子树,即至少含有ceil(m/2)-1个关键字。所有非叶节点的结构如下:|n|P0|K1|P1|K2|P2|…|Kn|Pn|其中,Ki(i=1,2,…,n)为节点的关键字,且满足K1 < K2 <
2021-08-04 17:39:01 301
原创 平衡二叉树及PHP实现~
性质平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),除了具有二叉查找树的性质,还具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树也是平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。平衡因子一个节点的平衡因子就是该节点左子树的高度减
2021-08-04 15:07:11 281 1
原创 KMP算法及PHP实现
简介模式匹配(Pattern Matching) 即子串定位运算(Index函数)。算法目的:确定主串中所含子串第一次出现的位置(定位) ——即如何实现 Index(S,T,pos)函;初始条件:串S和T存在,T是非空串,1≤pos≤StrLength(s) 操作结果:若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置;否则函数值为0。注:S称为被匹配的串,T称为模式串。若S包含串T,则称“匹配成功”。否则称 “匹配不成功” 。对于KMP算法,看代码比看各种介
2021-07-24 08:52:40 352 5
原创 霍夫曼树分析及PHP实现
概念路径:树中一个结点到另一个结点之间的分支序列构成两个结点间的路径路径长度:路径上的分支数目树的路径长度:树根到每个结点的路径长度的和结点带权路径长度:结点到树根的路径长度与结点的权的乘积树的带权路径长度:树的带权路径长度为树中所有叶子节点的带权路径长度之和,通常记作WPL=∑WkLk。假设有n个权值{w1,w1,…wn},试构造一棵有n个叶子节点的二叉树,每个叶子节点带权为wi,则其中带权路径长度WPL最小的二叉树称作最优二叉树或霍夫曼树。前缀编码:设计长短不等的编码,必须是任一字符的编
2021-07-23 20:04:06 330 3
原创 掌握了数据存储方式基本上就掌握了数据结构
线性表顺序存储// 静态分配typedef struct{ ElemType data[MaxSize]; int length;} SqList;// 动态分配typedef struct{ ElemType *data; // 存储空间基址 int MaxSize; // 当前分配的存储容量 int length; // 当前长度} SqlList;链式存储// 单链表typedef struct LNode{ ElemType data; struct LNod
2021-07-21 10:31:29 114
原创 红黑树原理分析及PHP实现
简介红黑树二叉搜索树中的一种,可以保证在最坏情况下基本动态集合操作(SEARCH、PREDECESSOR、SUCCESSOR、MINIMUM、MAXIMUM、INSERT、INSERT)的时间复杂度为O(log n)。红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。红黑树的应用比较广泛,主要是用它来存储有序的数
2021-06-23 00:26:05 468 1
原创 一句话解释:闭包
闭包可以理解成“定义在一个函数内部的函数“。该函数作为返回值返回,该函数可以调用所在函数体的变量。所以说在本质上,闭包是将函数内部和函数外部连接起来的桥梁。由于调用该函数一直没有被释放,所以其所调用的变量也不被释放。...
2021-05-23 11:11:15 166
原创 一句话解释:协程与普通线程有何不同?
协程与普通线程不同之处在于,在同一时间可以有多个线程处于运行状态,但对于协程来说只能有一个,其它的协程都会处于暂停的状态。此外,普通线程是抢占式的,哪个线程能得到资源由操作系统决定,而协程是协作式的,执行权由用户态自行分配。补充注释:1.协程:协程是一种轻量级的线程,由用户代码来调度和管理,而不是由操作系统内核来进行调度,也就是在用户态进行。可以直接的理解为就是一个非标准的线程实现,但什么时候切换由用户自己来实现,而不是由操作系统分配 CPU 时间决定。...
2021-04-15 14:53:33 189
原创 咱重新过一下几个专业基础概念吧
1.程序程序是指令和数据的集合。2.算法算法就是求解问题的方法和步骤。算法的五大特性:输入: 算法具有0个或多个输入输出: 算法至少有1个或多个输出有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成确定性: 算法中的每一步都有确定的含义,不会出现二义性可行性: 算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成3.数据结构数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。4.面向对
2021-04-06 13:58:16 88
原创 看山是山,看山不是山,看山还是山--技术经验需要不断实践、学习、总结
刚开始学习计算机的时候感觉计算机是个神奇的东西。在大学里学东西也感觉理论性太强,不切实际,有的东西感觉可能一辈子都用不上。特别是计算机组成原理、操作系统、计算机网络、数据结构、编译原理等,感觉都是没用的东西,唯有java编程能在工作上用到。后来开始接触业务,刚开始更多的工作也是配置开发环境,写出"Hello, world!", 然后做一些crud业务编程,感觉软件开发不过如此。随着对业务慢慢熟悉,业务操作越来越复杂,慢慢地开始用到了一些计算机网络协议分析(特别是http协议),一些简单算法和开发技巧。
2021-03-04 11:53:52 214 3
原创 重构,重构
有些工作,看似你没有专门腾出时间来着手处理,实际上你可能已经默默完成了(特别是你对代码一直在追求完美的情况下)。这个工作就是代码重构。重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。软件产品最初制造出来,是经过精心的设计,具有良好架构的。但是随着时间的发展、需求的变化,必须不断的修改原有的功能、追加新的功能,还免不了有一些缺陷需要修改。为了实现变更,不可避免的要违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔了
2021-03-03 14:57:24 121 1
原创 3大类型、23种设计模式简要介绍
设计模式3大类型一、创建型模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。简单工厂模式(Simple Factory Pattern):就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。分三种:普通简单工厂–通过对参数进行条件判断返回不同实例对象、多方法简单工厂–提供多个工厂方法,分别创建对象、静态方法简单工厂–将多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。工厂模式(Factory Pattern):定义一个创建对象的接口
2021-02-24 16:27:24 216
原创 python模拟请求代码最简示例
import requests,json url = 'url'params = {'key1': 'value1', 'key2': 'value2'}headers = {'key1': 'value1', 'key2': 'value2'}# r =requests.post(url, params=json.dumps(params), headers=headers)r =requests.post(url, json=params, headers=headers)# pr
2021-02-21 17:44:16 158
原创 手有点生了,写个javascript类吧
super关键字用于访问和调用一个对象的父对象上的函数,注意其位置。class Person{ constructor(name, gender) { this.name = name; this.gender = gender; } sayName() { console.log(this.name); } set age(newAge) { this._age = newAge; } get age() { return this._age; }}
2021-02-21 17:15:23 84
原创 好用的async/await、generator/yield
async/awaitasync函数是使用async关键字声明的函数。 async函数是AsyncFunction构造函数的实例, 并且其中允许使用await关键字。async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise。await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。代码示例:function resolveAfterManySeconds(duration) {.
2021-02-21 16:50:53 130
原创 CentOS下安装pdf转图片的imagick扩展,附示例
sudo yum -y install ImageMagicksudo yum -y install ImageMagick-develsudo yum -y install ghostscriptsudo wget http://pecl.php.net/get/imagick-3.4.3.tgzsudo pecl install imagick-3.4.3.tgz #imagick-3.4.3.tgz是下载后的压缩包在php.ini添加 extension=imagick.so关键代码.
2021-02-21 15:56:51 262
原创 什么是软件工程化?什么是“前端工程化“?
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。软件工程包括两方面内容:软件开发技术和软件项目管理。软件开发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。软件工程是指将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件过程。【参考】百度知道...
2021-01-19 17:04:34 2396
原创 javascript整理(二)
由于浏览器会先解析完不使用defer属性的<script>元素中的代码,然后再解析后面的内容,所以一般应该把<script>元素放在页面最后,即主要内容后面,<body>前面。使用defer属性可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定它们的顺序执行。使用async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚本按照它们在页面中出现的顺序执行。由于不存在函数签名的特性,ECMAScript函数不能重载。一个函数由这么几部分组.
2020-12-16 00:15:25 102
原创 javascript整理(一)
不通过var声明的变量叫隐式声明变量,隐式变量是全局变量,即使是在函数内部隐式声明的变量也属于全局变量。对常量进行赋值,常量的值不会改变。匿名函数表达式是一种表达式,所以也可以在表达式内使用。javascript中函数也是一种对象。javascript对象可以定义为属性的集合。作为对象属性的函数也可以称为一种方法。在对象中,如果给不存在的属性进行赋值,则将新建该属性并赋值。对象的属性可以用点号和中括号两种方式进行访问。在new之后写函数名的话,就会把该函数作为构造函数进行调用。javascri.
2020-12-14 04:45:49 251
原创 CSS开发整理
请始终将正斜杠添加到子文件夹。假如这样书写链接:href=“https://www.runoob.com/html”,就会向服务器产生两次 HTTP 请求。这是因为服务器会添加正斜杠到这个地址,然后创建一个新的请求,就像这样:href=“https://www.runoob.com/html/”。...
2020-12-08 21:13:07 189
原创 前端学习中比较少注意到的地方
使用 可以 定义页面中所有链接默认的链接目标地址。<head><base href="http://www.runoob.com/images/" target="_blank"></head>可以使用 标签应对不支持脚本或禁用脚本的浏览器。<script>document.write("Hello World!")</script><noscript>抱歉,你的浏览器不支持 JavaScript!<.
2020-12-08 15:12:55 79
原创 Javascript的柯里化代码示例
函数柯里化(Function Currying)又称部分求值。一个currying的函数首先会接受一些参数,接受了这些参数后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包里被保存起来。待到函数真正需要求值的时候,之前传入的参数都会被一次性用于求值。代码:<script type="text/javascript">var curry = function(fn){ var args = []; return function(){ if(0 =
2020-11-22 07:58:12 106
原创 通过一个示例了解this、call、apply
为了更直观地了解this、call、apply,这边直接给出一个示例。代码:<script type="text/javascript">var name = 'world';var obj = { name:'hawking', func:function(){ return 'here,'+this.name; }};var func = function(a='a', b){ console.log('welcome,'+this.name); this.na
2020-11-22 07:02:26 65
原创 面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)代码示例
封装变化点。隔离变化点的好处在于,将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。很多设计模式的意图中都明显地指出了其对问题的解决方案,学习设计模式的要点是发现其解决方案中封装的变化点。代码:<?php// 动物abstract class Animal{ // 封装变化,就是把不变的部分提取出来,所有的动物都会叫 abstract public function cry();}// 变化部分,不同的动物,叫声不一样class Dog extend.
2020-11-22 06:25:50 812
原创 PHP学习中比较少注意到的地方
php-dev是用来开发PHP扩展的包,如果php源码中没有phpize,可以安装对应版本的php-dev包sapi(server abstraction api,服务器抽象化程序接口)提供一个接口,使得php可以和其他应用进行数据交互,php能跟其他程序(如apache)交互,就是这个接口起的作用...
2020-11-17 00:23:25 132
原创 PHP项目开发经验整理
遵守PSR规范,详细参考Accepted部分以数据表为单位设计“微服务”,详细参考为了维护方便,同一模块对接不同平台的情况下(处理逻辑有不一样的地方)按平台名称(建议使用拼音首字母缩写)划分文件夹,如需要对两个渠道A和B的订单进行处理,则处理的分别为路径为A/OrderService.php、B/OrderService.php,避免在一个OrderService.php里面使用两个方法 public function generateOrderA($params)、 public function .
2020-11-12 20:32:53 457
原创 以数据表为单位设计“微服务”
以数据表为单位设计“微服务”,以数据表为单位进行数据拼接,进行真正的“模块化/分子化设计”所有关联数据通过映射关系拼接,避免进行联表查询,比如需要获取多个订单关联的商品数据,则通过goods_ids(多个商品id数组)获取商品数据,并对订单列表遍历一遍拼接到订单数据那边(需要联表查询的字段进行冗余存储,避免联表,如需要按商品的价格查询订单,则商品价格也存储到订单表)包含关系的表增加关联字段,如套餐增加所包含的商品字段(goods_ids),取消关联表,减少读取数据库的环节,编辑或修改、删除商品则对套餐
2020-11-11 15:18:25 273
原创 Linux之crontab,如果使用类似laravel框架,操作就很简单了
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minute hour day month week command其中:minute: 表示分钟,可以是从0到59之间的任何整数。hour:表示小时,可以是从0到23之间的任何整数。day:表示日期,可以是从1到31之间的任何整数。month:表示月份,可以是从1到12之间的任何整数。week:表示星期
2020-11-11 00:13:19 135
原创 Linux之系统环境变量与个人环境变量的配置文件
系统环境变量/etc/profile:这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等等。/etc/bashrc:这个文件主要预设umasky以及PS1。这个PS1就是我们在输入命令时,前面的那串字符。例如阿铭的Linux系统的PS1就是“[root@localhost ~]”,我们不妨看一下PS1的值,如下所示:#echo $PS1[\u@\h \W]$其中,\u指用户,\h指主机名,\W指当前.
2020-11-11 00:02:54 291
原创 Linux之/etc/passwd 和/etc/shadow
/etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户root可读。这使破译口令更困难,以此增加系统的安全性。/etc/passwd文件中各个字段的顺序和含义如下:<注册名>:<口令>:<用户标识号>:<组标识号>:<用户名>
2020-11-09 23:31:38 218
原创 谈谈什么是产品思维
关于“产品思维”这个概念,不同的人有不同的看法,今天我也来谈谈自己的看法。通过分析,我产品思维必须包含三个点:洞察用户、快速迭代产品、商业价值、不断学习。洞察用户将用户放到第一位没有用户就无所谓产品,没有产品就无所谓产品思维。任何新产品的出现都是为了解决之前的产品无法满足的需求或者之前没有满足需求的产品空缺。一个好的产品容易引起“自传播”,不断带来新的用户。但如果连用户的基本需求都无法满足,那就谈不上将用户放在第一位了。所以,一定要了解用户的需求,或者说选定产品的用户群。了解用户的“痛点”才能
2020-11-05 11:04:08 1159 1
原创 Linux之关机、重启命令
shutdownSHUTDOWN(8) BSD System Manager’s Manual SHUTDOWN(8)NAMEshutdown – close down the system at a given timeSYNOPSISshutdown [-] [-h [-u] | -r | -s | -k] [-o [-n]] time[warning-message …]DESCRIPTIONThe shutdown utility
2020-10-31 01:13:08 440
原创 Linux之命令行快捷键
Ctrl+C:取消或终止当前命令Tab:实现自动补全Ctrl+D:退出当前终端,同exit命令Ctrl+Z:暂停当前进程,暂停后可以使用fg命令恢复该进程Ctrl+L:清屏,使光标移动到屏幕的第一行Ctrl+A:让光标移动到命令的最前面Ctrl+E:让光标移动到命令的最后面...
2020-10-31 00:55:33 89
原创 烂笔头之Java Web基础
JDK(Java Development Kit)为java程序开发提供了编译和运行环境,使用JDK可以将java程序编译成字节码文件(.class文件)。JDK有三个版本:J2SE标准版,主要用于开发桌面应用程序J2EE企业版,主要用来开发企业级应用,如电子商务网站、ERP系统J2ME微缩版,主要用来开发移动设备、嵌入式设备上的java应用JDK安装后包括的几个主要文件夹介绍如下:bin:开发工具,包含了开发、执行、调试Java程序所用的工具和实用程序以及开发工具所需要的类库和支持文.
2020-10-25 02:08:40 187
原创 烂笔头之C语言基础
如何提高C语言的编程效率以空间换时间,充分利用内存使用高效的算法,如使用高斯算法求1至100的和使用使用位操作嵌入汇编使用typdef可以定义新的类型(其实就是别名),如typedef int INTEGER;使用auto声明的自动变量属于局部变量,关键字auto可以省略用static关键字声明外部变量,会得到静态全局变量,或者称为静态外部变量,该变量只限于本文件内使用。用register关键字定义的变量(只有局部变量可以这么定义)只是提示编译器将变量定义为寄存器变量,但不是必须将.
2020-10-21 23:53:43 364 2
原创 laravel框架中防止伪造IP或使用代理IP进行curl攻击的代码示例
use Illuminate\Support\Facades\Cache;/*** $throttle, set defaut value to be 5 for test*/ function guardShortMsgAttack($throttle){ $HTTP_X_FORWARDED_FOR=isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:null; $seconds=6
2020-10-16 00:42:12 409
五子棋AI python实现
2020-04-30
学生成绩管理系统(完善版)
2020-04-09
visual studio 2017全透明主题_目前最完整的无bug版本 放心食用
2020-04-07
ntp离线安装rpm包
2020-04-01
智慧校园设计方案
2020-03-26
2018数学建模国赛所参考代码
2020-03-22
Intel Fortran 11.1 lic 文件过期问题解决方案及lic生成器
2020-06-05
LSI-2008 下载
2020-05-25
php168 v6 最新完美版
2020-05-24
DISCUZ 3.4 当开启分类信息对应的模板修改文件
2020-05-22
热传导方程openGL实时求解
2020-05-14
JPG、PNG、GIF等图像格式转换为SVG矢量图的C代码
2020-05-13
聚合直播盒子H5网页源码
2020-05-11
C#写的简易网页浏览器(源码)
2020-05-10
FICO 零售评分卡决策引擎培训
2020-05-08
yum源,系统版本:Red Hat Enterprise Linux Server release 6.8 (Santiago)
2020-05-06
网络安全协议基础介绍
2020-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人