watermark

几种基础的数学算法(二)- 排序

喜欢而已 提交于 2020-08-11 23:21:31
几种基础的数学算法(二)- 排序 说起排序算法,估计所有小伙伴参加面试都或多或少接触过。我们先来了解几个概念。 时间复杂度:算法完成排序的总的操作次数; 空间复杂度:算法在运行时所需存储空间大小; 稳定的算法:一个序列中,如果 a 原本在 b 前面,且 a = b,排序之后在新的有序序列中 a 仍然在 b 的前面。 不稳定的算法:一个序列中,如果 a 原本在b的前面,且 a = b,排序之后在新的有序序列中 a 可能会出现在 b 的后面。 排序算法对比 排序算法的文章很多,这里给大家推荐个链接: "如果天空不死"的博客 简单介绍五种排序方法 冒泡排序 无序序列 R<sub>n</sub> 中排序一趟只确认一个排序位置,最多经过 n 趟排序。 冒泡排序在一趟中每次比较两个相邻的元素,如果不符合排序要求,则交换两个元素,直到一趟排序结束。 def swap(arr: list, i: int, j: int): tmp = arr[i] arr[i] = arr[j] arr[j] = tmp # 冒泡排序 # 递增排序 def bubble_inc(arr: list): print("source array = " + str(arr)) arr_len = len(arr) if arr_len == 0: return for i in range(0, arr_len):

推荐7个Flutter重磅开源项目!

人走茶凉 提交于 2020-08-11 23:07:33
现在跨平台开发技术的发展可谓如火如荼,而跨平台中的双雄则是ReactNative和Flutter。而由Google推出的Flutter目前的发展更可谓是如日中天,大有一统各端开发的架势,以此给大家整理了一个优质的Flutter开源项目,帮助大家学习Flutter开发。 1.Flutter仿携程App (1)应用截图: (2)实现功能及特性 实现首页、搜索、旅拍、我的四大模块; 实现网络图片本地缓存; 旅拍模块实现瀑布流布局; 接口数据抓取携程H5端; 集成友盟数据统计; (3)项目结构: 依赖: azlistview: ^0.1.2 cupertino_icons: ^0.1.2 cached_network_image: ^1.1.1 dio: ^3.0.3 flutter_swiper: ^1.1.6 flutter_staggered_grid_view: ^0.3.0 flutter_splash_screen: ^0.1.0 fluttertoast: ^3.1.3 flutter_webview_plugin: ^0.3.8 lpinyin: ^1.0.7 package_info: ^0.4.0+6 (4)项目地址: Github地址: https://github.com/wkl007/flutter_trip 2.Flutter仿微博客户端 (1)应用截图: (2

PyCharm安装使用教程

大兔子大兔子 提交于 2020-08-11 21:07:48
Pycharm 是目前 Python 语言最好用的集成开发工具。但是由于纯英文的版本,对于英文较差的我们来说还是略有一点门槛。 下载 Pycharm 在 Pycharm 的官网即可下载: 点我进入下载页 下载时有两种版本选择 Professional (专业版,收费)和 Community (社区版,免费) 一般来说,我们使用 Community 版本就够了,除非你需要用 Python 进行 Django 等 Web 开发时才需要用到专业版。 安装 Pycharm 安装过程,第一步直接点击 Next ; 第二步,如果要修改安装路径,就在这里更改: 第三步,需要进行一些设置,如果你无特殊需要按照图中勾选即可: 如果有特殊需要,请按如下描述确定是否勾选设置: 创建快捷方式:根据你当前系统是32位还是64位进行选择; 将 pycharm 的启动目录添加到环境变量(需要重启),如果需要使用命令行操作 pycharm,则勾选该选项; 添加鼠标右键菜单,使用打开项目的方式打开文件夹。如果你经常需要下载一些别人的代码查看,可以勾选此选项,这会增加鼠标右键菜单的选项; 将所有 py 文件关联到 pycharm,也就是你双击你电脑上的 py 文件,会默认使用 pycharm 打开。不建议勾选,pycharm 每次打开的速度会比较慢。你要单独打开 py 文件,建议使用 notepad++ 等文本编辑器

伙伴系统分配内存

为君一笑 提交于 2020-08-11 20:43:55
内核中常用的分配物理内存页面的接口函数是alloc_pages(),用于分配一个或者多个连续的物理页面,分配页面个数只能是2个整数次幂。相比于多次分配离散的物理页面,分配连续的物理页面有利于提高系统内存的碎片化,内存碎片化是一个很让人头疼的问题。alloc_pages()函数有两个,一个是分配gfp_mask,另一个是分配阶数order。 [include/linux/gfp.h] #define alloc_pages(gfp_mask, order) \ alloc_pages_node(numa_node_id(), gfp_mask, order) 分配掩码是非常重要的参数,它同样定义在gfp.h头文件中。 /* Plain integer GFP bitmasks. Do not use this directly. */ #define ___GFP_DMA 0x01u #define ___GFP_HIGHMEM 0x02u #define ___GFP_DMA32 0x04u #define ___GFP_MOVABLE 0x08u #define ___GFP_WAIT 0x10u #define ___GFP_HIGH 0x20u #define ___GFP_IO 0x40u #define ___GFP_FS 0x80u #define ___GFP

无需gas即可归集ERC20的PHP开发包【SmartWallet】

只谈情不闲聊 提交于 2020-08-11 19:29:10
SmartWallet开发包适用于平台方高效完成对用户地址上的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成Ether/ERC20代币的归集。官方下载地址: 以太坊智能钱包PHP开发包 。 1、开发包概述 SmartWallet开发包的主要特点如下: 真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失 无需向用户地址注入Ether即可完成以太币/ERC20代币的归集,流程更简单,效率更高 支持在单一交易内完成多个用户地址的归集 SmartWallet运行于PHP 7.1+环境下,主要类以及其关系如下图所示: SmartWallet的主要代码文件清单见官网说明: http://sc.hubwiz.com/codebag/smartwallet-php/ 2、使用示例代码 2.1 部署工厂合约 SmartWallet开发包利用工厂合约SmartWalletFacotry管理用户地址的生成与归集。因此首先需要部署工厂合约。 示例代码 demo/deploy-contracts.php 展示了如何部署SmartWalletFactory合约以及一个用于演示的ERC20代币合约。 执行如下命令运行示例代码: php deploy-contracts.php 运行结果如下: 2.2 生成用户地址 示例代码 demo/generate-user

微信“拍一拍”功能是产品经理拍脑子想出来的吗?

喜欢而已 提交于 2020-08-11 16:36:46
这两天,你被“拍一拍”了吗? 近日,微信上线了一个新功能“拍一拍”,只要在聊天界面双击别人的头像,对方头像就会抖动,并在聊天界面出现“×××拍了×××”的灰色小字。 甚至还可以拍一拍自己。 刚一出现,就被广大网友玩坏了。 甚至各个沉寂已久的微信群都开始了“拍一拍” 打开微信,仿佛大家在搞什么“仪式”。 虽然欢乐多多,但还是有网友指出这种功能只是图个一时新鲜才会去玩一玩,实际上并没有什么作用。还不如推出删除聊天框不删除消息记录这样实用的功能更令人喜大普奔。 上述这些问题是大家“积怨已久”的,如果实现双向删除好友、可发一分钟以上视频对某些用户来讲肯定会提高使用满意度。 话说回来,微信团队毕竟在做运营,用户的需求与反馈是落实项目的重中之重。但众口难调,一个功能的推出肯定不会让所有人都满意。 “拍一拍”或许真的不只是一时新鲜。首先在刚推出大家就对“拍一拍”十分感兴趣;并且在使用过程中仿佛就是面对面拍了拍对方的肩膀,亲昵度upupup! 没准“拍一拍”也会是一个不错的找话题神器呢!(可能这才是最实用的一点,不是) 不要再死鸭子嘴硬了,亲爱的胖友们,“拍一拍”确实满足了我们某些方面的需求。 其实,每推出一个功能的投入也是很大的,尤其对微信这种体量如此之大的应用。 难道微信团队只是为了博大家一乐才推出“拍一拍”这个功能吗? 显然不是的。 广大网友或许没有注意

突破大小“屏”壁,互联体验升级,全面解读华为Cast+Kit

天大地大妈咪最大 提交于 2020-08-11 15:08:45
  伴随移动终端与通信技术的迅猛发展,手机拥有广阔多元的应用生态,成为我们身边最重要的智能设备。而大屏电视则以大视野和震撼影音,弥补了手里方寸带来的视觉局限。   在手机拥有延伸刚需的大环境下,无线投屏正在逐渐成为观看移动终端内容的主流观看方式,并在影音娱乐、远程教育、在线办公等方面扮演不可或缺的角色。    作为华为EMUI分布式技术的核心能力之一——华为Cast+Kit揉合了大小屏两种设备的强项,实力担当起双系统间的连接纽带,使流媒体在各终端完成无缝流转。   能力上线后,便陆续与国内外各大品牌展开合作,目前长虹D5P/Q7、康佳R3/A5、极米Z8X/Z6X等系列电视和投影仪上都已搭载华为Cast+Kit陆续启动发货。   华为Cast+Kit 合作整体流程 自研超简通信机制 解决流畅与清晰的“跷跷板”难题   在使用投屏的过程中,我们常常遇到由于同网络里的使用的设备多,WiFi环境容易受干扰不稳定,从而导致丢包引起卡顿与花屏的情况发生。而业界在解决这些问题时也会遇到需要牺牲流畅度或清晰度其中一方的困扰,“鱼和熊掌不兼得,流畅清晰难两全”。   华为Cast+Kit基于华为自研流媒体通讯与传输协议,经过3年打磨与迭代,在流媒体的传输层面重新做了算法设计,从而拥有强力抗干扰实力,在面对25%丢包率依然可以最大限度减少卡顿,保障了数据的稳定传输。  

别让算法和数据结构拖你职业生涯的后腿

拈花ヽ惹草 提交于 2020-08-11 14:51:37
  IT行业一直流传着一句名言,“程序设计=算法+数据结构”,这是瑞士计算机科学家Niklaus Wirth于1976年出版的一本书的书名,那么数据结构与算法在程序开发中的重要性也就不言而喻了。还记得刚上大学开始学习数据结构的时候,偶然听到一位编程大佬说数据结构其实是计算机专业基础课里最难的一门,我内心是不认可的,然而后来接触更深入时我才发现是我太年轻,并且也没有意识到它的重要性。   如果说你要修一座房子,那么数据结构就是你的地基,地基不稳,如何建造高楼大厦?数据结构的一般定义是指相互之间存在着一种或多种关系的数据元素的集合,以及该集合中数据元素之间的关系组成。人可以随心所欲的交换这些数据元素,或者查找某个元素,机器可不会,机器需要你明确的指令,那么你所使用的数据结构类型以及算法的设计,就是最为关键的部分。   提到算法,算法是程序的抽象逻辑,是解决某类客观问题的数学过程,数据结构与算法是不可分割的一家人,数据结构解决了数据存储问题,而算法对数据进行处理与分析,听起来虽然是不同的学科,但它们可谓是相辅相成、互利共赢吧。在任何开发过程你都无法避免数据结构与算法,可能你想说现在开发不都是利用已封装好的类库、接口来翻译业务逻辑就好了,这的确是一个非常便捷高效的方法,然而很多第三方框架内部都用到了大量的数据结构与算法的知识,你如何高效的去利用好第三方框架

面试必问之jvm

与世无争的帅哥 提交于 2020-08-11 14:36:50
问题1 说一下jvm内存模型 问题1.1 jvm内存模型 栈区: 栈分为java虚拟机栈和本地方法栈 重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同。 每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等。每个方法从被调用,直到被执行完。对应着一个栈帧在虚拟机中从入栈到出栈的过程。 通常说的栈就是指局部变量表部分,存放编译期间可知的8种基本数据类型,及对象引用和指令地址。局部变量表是在编译期间完成分配,当进入一个方法时,这个栈中的局部变量分配内存大小是确定的。 会有两种异常StackOverFlowError和 OutOfMemoneyError。当线程请求栈深度大于虚拟机所允许的深度就会抛出StackOverFlowError错误;虚拟机栈动态扩展,当扩展无法申请到足够的内存空间时候,抛出OutOfMemoneyError。 本地方法栈为虚拟机使用到本地方法服务(native) 堆区: 堆被所有线程共享区域,在虚拟机启动时创建,唯一目的存放对象实例。 方法区: 被所有线程共享区域,用于存放已被虚拟机加载的类信息,常量,静态变量等数据。被Java虚拟机描述为堆的一个逻辑部分。习惯是也叫它永久代(permanment generation) 垃圾回收很少光顾这个区域,不过也是需要回收的,主要针对常量池回收,类型卸载。

Elasticsearch集群管理之添加、删除节点

て烟熏妆下的殇ゞ 提交于 2020-08-11 13:44:14
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484242&idx=1&sn=8215077417867e3eb6311665589f569c&chksm=eaa82b7adddfa26c97a7c417f0d8cc42e74d5ebd9360ba6013392db3557e89a8ddba8cce1a68&scene=21#wechat_redirect 1、问题抛出 1.1 新增节点问题 我的群集具有黄色运行状况,因为它只有一个节点,因此副本保持未分配状态,我想要添加一个节点,该怎么弄? 1.2 删除节点问题 假设集群中有5个节点,我必须在运行时删除2个节点。 那么如何在不影响指数的情况下完成? 我有接近10 Gb/hour的连续数据流,这些数据正在连续写入并索引化。 重新平衡会对此有所影响吗? 本文就从上面两个问题说起,将相关知识点串起来,内容较长,阅读时间5分钟+。 2、知识点 2.1 Master节点的职责 主节点的主要作用之一是确定将哪些分片分配给哪些节点,以及何时在节点之间移动分片以重新平衡集群。 2.2 分片分配发生的时机 分片分配是将分片分配给节点的过程。 这可能发生在集群初始恢复,副本分配,重新平衡或添加或删除节点期间。 2.3 控制分配/重新平衡分片操作的常见设置 2.3.1