选择排序算法简介选择排序大致的思路是找到数据结构中的最小值并将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。Python 代码示例def findSmallest(arr): smallest = arr[0] // 存储最小的值 smallest_index = 0 // 存储最小元素的索引 for i in range(1, len(arr)): if arr[i] smallest: smallest = arr[i] smallest_index = i return smallest_index de
admin 2023-11-17 其他 350
冒泡排序的英文是bubble sort,它是一种基础的交换排序。正是因为这种排序算法的每一个元素都可以像水中的小气泡一样,根据自身大小,一点一点地向着数组的一侧移动。有8个数字组成一个无序数列 [7, 5, 2, 3, 1],希望按照从小到大的顺序对其进行排序。按照冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时,交换它们的位置,当一个元素小于或等于右侧相邻元素时,位置不变。代码实现:function sort(arr){ for(let i=0; i arr.length; i++){ for(let j=0; j arr.length-i-1; j++)
admin 2023-11-02 其他 240
一,简单的权限模型有个访问权限列表如下:用户1 -- 查看文件 用户1 -- 编辑文件 用户2 -- 查看文件 用户2 -- 编辑文件 ... 每个用户的每个权限,都保存在该表中,这种直接将权限绑定在用户上的方式就叫做基于用户的权限管理,ACL(Access Control List)。ACL的优点是简单易用、易于理解。缺点是系统逐渐复杂以后,用户和权限直接挂钩,授予权限时比较分散、不能集中管理,增加了复杂性。这时,人们就设计了基于角色的访问控制 RBAC(Role Based Access Control)。二,RBAC 基于角色的访问控制通过角色关联用户,角色关联权限的方式间接
admin 2023-11-01 Node.js 其他 312
二分查找法 Python 实现:def binary_search(list, item): low = 0 high = len(list)—1 while low = high: mid = (low + high) guess = list[mid] if guess == item: return mid if guess item: high = mid - 1 else: low = mid + 1 return None my_list = [1, 3, 5, 7, 9]
admin 2023-10-23 其他 221
在 JavaScript 中直接输出 0.1 + 0.2 结果是 0.30000000000000004。原因如下:JavaScript 使用 Number类型表示数字(整数和浮点数),计算机遵循IEEE 754标准,所有语言都会有这个问题。通常用64位来表示一个数字:第0位:符号位,0表示正数,1表示负数(s);第1位到第11位:储存指数部分(e);第12位到第63位:储存小数部分(即有效数字)f。十进制转换为二进制方法是,小数本身乘以2,取整数位作为二进制表示位,然后取其小数位参与计算(乘以2),如此循环往复,只至小数位乘以2的结果为零。结果0.1和0.2的二进制,后面无限循环多余的数将会
admin 2023-07-17 JavaScript 545
在浏览器中 RESTful API 执行 delete 返回204无法获取 Body,也就是说执行成功后,只能返回空的。无法获取到返回的 Body 内容。使用 restclient 可以获取到 body。大多数人都认为204是成功删除的良好响应代码,因为通常没有充分的理由在删除某些内容后返回响应正文。所以,如果 delete 操作成功且响应主体为空,则返回204。如果 delete 操作成功且响应主体为非空,则返回200。
admin 2023-05-10 其他 编程开发 663
\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下匹配中文字符的正则表达式: [\u4e00-\u9fa5]或许你也需要匹配双字节字符,中文也是双字节的字符匹配双字节字符(包括汉字在内):[^\x00-\xff]注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)更多常用正则表达式匹配规则:英文字母:[a-zA-Z]数字:[0-9]匹配中文,英文字母和数字及_:^[\u4e00-\u9fa5_a-zA-Z0-9]+$同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}^[\w\u4E00-\u9FA5\uF900-\u
admin 2021-12-23 其他 568
进制 (system of numeration)进制也就是进位制。进行加法运算时逢X进一(满X进一),进行减法运算时借一当X,这就是X进制,这种进制也就包含X个数字,基数为X。十进制有 0~9 共10个数字,基数为10,在加减法运算中,逢十进一,借一当十。十进制(Decimalism)使用的数字都是由 0~9 共十个数字组成的,逢十进一,也因为只有 0~9 共十个数字,所以叫做十进制。 人类算数采用十进制,可能跟人类有十根手指有关。 数位有一定的意义,从右往左分别表示个位、十位、百位、千位……二进制(Binary)从十进制计数法类推,使用的数字只有 0、1两种,这就是二进制。例如,数字 0、
admin 2021-12-23 其他 561
依赖注入(DI)和控制反转(Ioc) 是从两个不同角度描述的同一个概念。当某个对象(调用者)需要调用另一个对象(被调用者,即被依赖对象)时,调用者通常会采用“new 被调用者”的代码方式来创建对象.在使用某些框架之后,对象的实例不再由调用者来创建,而是由容器来创建,容器负责控制程序之间的关系,控制权由应用代码转移到了框架,被称为“控制反转”。从框架的角度来看,框架负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是“依赖注入”。容器,字面上理解就是装东西的东西。在这里容器容纳的是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,可以实现 “依赖注入(
admin 2021-11-13 其他 609
简介03 年 Eric Evans 的 Domain Driven Design 一书,以及后续 Vaughn Vernon 的 Implementing DDD , Uncle Bob 的 Clean Architecture 等书,真正的从业务的角度出发,为全世界绝大部分做纯业务的开发提供了一整套的架构思路。 POP,OOP,DDD是如何解决问题面向过程编程(POP),接触到需求第一步考虑把需求自顶向下分解成一个一个函数。并且在这个过程中考虑分层,模块化等具体的组织方式,从而分解软件的复杂度。当软件的复杂度不是很大,POP也能得到很好的效果。 面向对象编程(OOP),接触到需求第一步考虑
admin 2021-11-11 其他 723
通用HTTP身份验证有几种身份验证模式,每种模式在安全强度不同,在客户机或服务器软件中的可用性方面可能有所不同。最常见的认证方案是“基本”认证方案,下面将详细介绍它。参考:https://javascript.net.cn/article?id=628IANA维护着一个认证方案列表,但是主机服务也提供了其他的认证方案,比如Amazon AWS。常见的认证方案包括:BasicSee RFC 7617, base64-encoded credentials. More information below.https://tools.ietf.org/html/rfc7617BearerSee RF
admin 2021-01-29 其他 1083
Content-Disposition 通常作用于两种情况中,“作为消息主体中的消息头”或“作为multipart body中的消息头”作为消息主体中的消息头一般情况下,Content-Disposition 响应头指示返回的内容,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。Content-Disposition: inline默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示Content-Disposition: attachment表示消息体应该被下载到本地;Content-Disposition: attachment; filename=
admin 2021-01-28 其他 1126
一,简介我们做一个大项目会把项目分解成很多不不同的模块(Module),通常分为 Controller,Service,Model,Dao 和 Utils。有没有其实都可以,叫不叫这些名字也无妨,你要把Service的内容全写在Controller里也没问题,你要把Utils的工具函数分散在所有需要用的文件也Ok。但是久而久之,一堆人做一件事做的多了,就会形成这些约定俗成的部分,就好比形成了人行道,车行道,形成了红绿灯,当然这些终归还没有加进标准里去,所以你遵不遵守,都靠你自己。所以,项目中是否包含这些模块或者单词,和你的项目结构是否完善一毛钱关系没有。但是当你的项目结构相对完善的时候,你会发
admin 2020-06-27 其他 1981
1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容。2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明:中国大陆个人手机号码显示为:137****0969,隐藏中间 4 位,防止隐私泄露。3. 【强制】用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入, 禁止字符串拼接 SQL 访问数据库。反例:某系统签名大量被恶意修改,即是因为对于危险字符 # --没有进行转义,导致数据库更新时,where 后边的信息被注释掉,对全库进行更新。4. 【强制
admin 2020-04-27 其他 927
诞生50多年之后,函数式编程(functional programming)开始获得越来越多的关注。不仅最古老的函数式语言Lisp重获青春,而且新的函数式语言层出不穷,比如Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。越来越多的迹象表明,函数式编程已经不再是学术界的最爱,开始大踏步地在业界投入实用。也许继"面向对象编程"之后,"函数式编程"会成为下一个编程的主流范式(paradigm)。未来的程序员恐怕或多或少都必须懂一点。但
admin 2020-04-24 其他 838
今天,写篇文章介绍一下 RESTful API 中的动词覆盖吧。在开发各种小程序的时候,总是会遇到不能正常支持 HTTP 请求的平台,比如支付宝小程序只支持 GET 和 POST 请求,这时候充分利用 HTTP 请求方法的 RESTful API 就会遇到问题,不支持 PUT, PATCH, DELETE 请求,该怎么办呢?嗯,使用动词覆盖。什么是动词覆盖我最初遇到不支持全部 HTTP 请求的时候,解决方案是修改 API 路径,比如 DELETE /user/:id 时,我的方案是 POST /user/:id/delete。后来看了阮一峰的《RESTful API 最佳实践实践 》,才明白有
admin 2020-04-09 其他 1157
1,为什么要画流程图很多人拿到需求就火急火燎的开始画原型,然后画着画着觉得有些地方没有考虑到,又回头去改,如果在画原型之前,你能将自己的业务流程想好,用户的操作流程想好,页面跳转想清楚,你就能少做很多无用功,达到事半功倍的效果。2,什么是流程图流程图是表示算法、工作流或流程的一种框图表示,它以不同类型的框代表不同种类的步骤,每两个步骤之间则以箭头连接。这种表示方法便于说明解决已知问题的方法。流程图在分析、设计、记录及操控许多领域的流程或程序都有广泛应用。3,流程图常用元素定义4,一般流程图有三种结构:顺序结构、选择结构、循环结构5,常用的三种流程图产品中设计的流程图主要有三种,业务路程图(泳道
admin 2020-03-13 其他 1857
写好代码,阿里专家沉淀了一套“如何写复杂业务代码”的方法论,在此分享给大家,相信同样的方法论可以复制到大部分复杂业务场景。一文教会你如何写复杂业务代码了解我的人都知道,我一直在致力于应用架构和代码复杂度的治理。这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。结合实际的业务场景,我沉淀了一套“如何写复杂业务代码”的方法论,在此分享给大家。我相信,同样的方法论可以复制到大部分复杂业务场景。一个复杂业务的处理过程业务背景简单的介绍下业务背景,零售通是给线下小店供货的B2B模式,我们希望通过数字化重构传统
admin 2020-03-11 其他 861
一、简介在HTTP中,基本认证(Basic access authentication)是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。最明显的特征是,Basic Auth 就是在请求的时候在headers中设置 Authorization: "Basic 用户名和密码的base64加密字符串"。JWT Token 认证,建议把 Token 保存在 Authorization Bearer中。二、访问形式1、使用浏览器在使用浏览器访问设置了 HTTP Basic Auth 的服务器时,会弹出对话框,输入用户名和密码即可。2、使用 HTTP Cl
admin 2019-08-18 其他 1585
1,令牌桶算法(Token Bucket)令牌桶算法(Token Bucket) 随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入Token,如果桶已经满了就不再加了。新请求来临时,会各自拿走一个Token,如果没有Token可拿了就阻塞或者拒绝服务。令牌桶的另外一个好处是可以方便的改变速度。 一旦需要提高速率,则按需提高放入桶中的令牌的速率。 一般会定时(比如100毫秒)往桶中增加一定数量的令牌, 有些变种算法则实时的计算应该增加的令牌的数量。2,算法实现对于每个 Bucket 设置一个定时器,而一个定时器就是一条线程。那么在你的服务器上,光是分
admin 2019-08-06 其他 1203
随机推荐
阿里云内容安全 API 签名机制
MySQL 删除逗号分隔字段中的某一个值
用 JavaScript 实现数字增加滚动动画
MySQL DATETIME 时间查询和转换
WordPress 文章排序
get_categories() 获取所有分类
Linux apt 命令
WordPress 实现自定义 Ajax 请求