Shadow

函数计算进阶-IP查询工具开发

旧时模样 提交于 2020-11-09 17:12:07
场景介绍 场景介绍如何使用函数计算服务开发一个IP查询工具。 背景知识 什么是Serverless 自2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次提出“云计算”(Cloud Computing)的概念之后,云计算的发展可以用日新月异这个词来形容。那么究竟什么才是Serverless呢? 简单来说,Serverless可以说是一种架构,一种云计算发展的产物,至于具体说什么是Serverless,可能没有谁能给他一个明确的概念,如果非要说一个可以稍微容易理解一些的概念,那或许可以参考Martin Fowler在《Serverless Architectures》中对Serverless这样定义:Serverless=BaaS + FaaS Serverless架构和传统的项目的区别 首先,我们以一个常见的Web服务为例: 在这个图中,服务器中可能涉及路由规则、鉴权逻辑以及其他各类复杂的业务代码。同时,开发团队要付出很大的精力在这个服务器的运维上面,例如要时刻关注以下问题: 客户量突然增多时是否需要扩容服务器。 服务器上的脚本和业务代码等是否还在健康运行。 是否有黑客在不断地对服务器发起攻击。 当我们把这个思路切换到Serverless的逻辑之后,变成了这样: 可以认为

ThinkPHP门面源码解析

好久不见. 提交于 2020-11-09 10:35:51
本文主要描述了门面的使用和实现过程以及源码的深度解析。 @ TOC 前言 使用框架的伙伴应该都知道在5.1时框架新增了一个特性那就是本文将编写的门面,也就是facade这个特性。 使用过这个特性的都明白其中的好处,那就是方法调用可以直接静态进行调用,不用再使用关键字static来定义。 接下来咔咔将会从以下几个方面带着大家探索属于门面的故事。 一、简单认识一下在框架中的门面的好处 在之前有写过配置文件加载一文,在那一文中的最后提到过配置信息获取的几种方式。 其中有一种方式就是Config::get(),到这篇文章应该都知道使用Config获取配置信息时,必须先得引入 use think\facade\Config ,又因为在系统中注册了别名,所以直接使用 use Config 即可。 虽说我们使用的是 use think\facade\Config ,但是实际调用的方法却是 thinkphp/library/think/Facade.php 中的 __callStatic 方法。 然后会执行同文件的 createFacade 方法。 虽说现在还没有看源码,看着知道就好了,在调用 createFacade 方法时是直接从容器类里边获取的。 在学习容器时我们都知道容器是使用了注册树模式,需要使用对应对象实例的时候就可以直接获取,这样就避免了一个类反复的创建。这就是其中的一个优点

看动画学算法之:排序-基数排序

北慕城南 提交于 2020-11-08 15:22:58
简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过大,使用count排序是不现实的,其时间复杂度会膨胀。 而解决大范围的元素排序的办法就是基数排序。 基数排序的例子 什么是基数排序呢? 考虑一下,虽然我们不能直接将所有范围内的数字都使用count数组进行排序,但是我们可以考虑按数字的位数来进行n轮count排序,每一轮都只对数字的某一位进行排序。 最终仍然可以得到结果,并且还可以摆脱count数组大小的限制,这就是基数排序。 假如我们现在数组的元素是:1221, 15, 20, 3681, 277, 5420, 71, 1522, 4793。 先看动画,看下最直观的基数排序的过程: 在上面的例子中,我们先对个位进行count排序,然后对十位进行count排序,然后是百位和千位。 最后生成最终的排序结果。 基数排序的java代码实现 因为基数排序实际上是分别按位数的count排序。所以我们可以重用之前写的count排序的代码,只是需要进行一些改造。 doCountingSort方法除了传入数组外,还需要传入排序的位数digit,我们用1,10,100,1000来表示。 看一下改造过后的doCountingSort方法: public void doRadixSort(int[] array, int digit){

震惊!Tomcat的Response对象竟然不能同时使用PrintWriter与SevletOutputStream

帅比萌擦擦* 提交于 2020-11-08 11:10:06
1、背景 前几天项目上线,就是把MVC框架由 Spring MVC换成Restlet ,然后客户说原有的TXT文件导出功能报500了,而且生产上没有报错日志,而后面更有客户说某些的TXT文件导出功能是可行的。经过场景复现,最终推导出这个TXT功能 大文件导出是正常的,而小文件就会失败 。 针对这种场景,当时就猜测是由于小文件在写入缓冲区后到响应给浏览器时出现了异常,最终经过层层的堆栈分析,发现Restlet框架是用的 ServletOutputStream对象 去写信息,而TXT导出的功能类用的是 PrintWriter对象 去写出,而在Response对象的定义中,只能用一种方式去进行写出响应信息。而为什么这样定义,这是因为ServletOutputStream用的是 OutputBuffer对象的字节流bb数组 ,而PrintWriter用的是 OutputBuffer对象的cb数组 ,所以这两种方式不能同时使用。 2、原因查找 2.1 小文件失败 我们先来看Response对象获取PrintWriter与ServletOutputStream的两个方法 可以看出,这两个方法是互斥的,同时从上面两个方法可以看出,他们具体的数据处理都委托给了 OutputBuffer对象,具体细节我们可以看看CoyoteOutputStream与CoyoteWriter的write方法。

二进制安装MySQL5.6 MySQL5.7

随声附和 提交于 2020-11-08 09:02:55
1:系统版本 [root@vhost1 ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) 2:添加用户和组 chattr -i /etc/shadow /etc/group /etc/gshadow /etc/passwd /usr/sbin/groupadd -g 200 mysql /usr/sbin/useradd mysql -u200 -g mysql -s /sbin/nologin 3:启动文件、my.cnf文件、创建MySQL软件目录 /opt/source #软件解压目录 basedir=/usr/local/mysql #软件安装目录 datadir=/mysqldata #数据目录 解压软件到安装目录下 #tar zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql 在软件目录/opt/source下解压 tar zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz mysql 建立软连接,便于日后版本升级 ln -r /opt

13 张图解 Java 中的内存模型

夙愿已清 提交于 2020-11-08 07:27:19
前言 了解Java中的对象、变量等存放的内存区域十分重要 本文将全面讲解Java虚拟机中的内存模型 & 分区,希望你们会喜欢 目录 1.内存模型 & 分区 Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区 在运行时数据区里,会根据用途进行划分: Java虚拟机栈(栈区) 本地方法栈 Java堆(堆区) 方法区 程序计数器 下面,我将详细介绍每个内存模型分区 2.Java堆 简介 3. Java虚拟机栈 简介 4. 本地方法栈 简介:十分类似Java虚拟机栈,与Java虚拟机区别在于:服务对象,即Java虚拟机栈为执行 Java 方法服务;本地方法栈为执行 Native方法服务 5.方法区 简介 注:其内部包含一个运行时常量池,具体介绍如下: 6.程序计数器 简介 7. 额外知识:直接内存 定义:NIO类(JDK1.4引入)中基于通道和缓冲区的I/O方式 通过使用Native函数库 直接分配 的堆外内存 特点:不受堆大小限制 不属于虚拟机运行时数据区的一部分 & 不在堆中分配 应用场景:适用于频繁调用的场景 通过一个 存储在Java堆中的DirectByteBuffer对象 作为这块内存的引用 进行操作,从而避免在 Java 堆和 Native堆之间来回复制数据,提高使用性能 抛出的异常:OutOfMemoryError,即与其他内存区域的总和 大于

前端高频面试题 CSS篇

坚强是说给别人听的谎言 提交于 2020-11-07 10:14:41
通过从网上看到的面经,总结的一些高频的前端CSS面试题,有很多不会,于是找资料,并通过代码实现,自己提供了一些参考答案。 ####目录 1.怎样会产生浮动? 2.如何清除浮动? 3.盒子模型,以及IE和其他浏览器的却别? 4.CSS3新特性有哪些? 5.em 和 rem 的区别? 6.重排和重绘? 7.行元素和块元素? 8.border-box 和 content-box 的区别? 9.伪元素和伪类? 10.unset? 11.CSS选择器优先级? 12.水平垂直居中布局? 13.两列等高布局? ####1.怎样会产生浮动? 某一个元素的float属性设置为left或者right,这个元素就会脱离文档流,左右浮动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。当一个元素浮动之后,不会影响到块级框的布局而只会影响内联框(通常是文本)的排列,文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会自动伸高来闭合浮动元素(“高度塌陷”现象)。 ###2.如何清除浮动? 方法比较多,这里介绍三种典型的方法: a.在与浮动元素的同级元素中加一个空的div,并将其css属性设置为 .clear1 { clear: both; } 优点:通俗易懂,容易掌握 缺点:添加了太多空标签,有违结构与表现的分离,在后期维护中将是噩梦,这是坚决不能忍受的

项目实战:医疗流式细胞术数据文件(.fcs)导出excel表工具

安稳与你 提交于 2020-11-05 00:22:11
若该文为原创文章,转载请注明原文出处 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/109473140 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门) Qt开发专栏:项目实战(点击传送门) <br> 需求    解析医疗实验室数据文件*.fcs。 <br> Demo导出数据 <br> 医疗流式细胞术数据文件标准(.fcs)   流式细胞术数据文件标准于1984年发布,以促进流式细胞术数据分析软件与在不同类型的流式细胞术仪器上获取的数据的互操作性。   该标准在1990年修订为FCS 2.0,在1997年修订为FCS 3.0,在2010年修订为FCS 3.1。2020年9月3日Spidlen J等人在Cytometry A杂志上提出了FCS 3.2,该修订版满足了一些新需求和建议,并结合了十年来整个细胞仪领域的进步。   FCS 3.2规范完整版可以下载(全英文): http://flowcyt.sf.net/fcs/fcs32.pdf   原始输入文件如下:      解析出来meta元数据如下:     

HDC 2020:华为分析助力开发者高效数据分析和业务增长

喜你入骨 提交于 2020-11-03 05:29:50
  在刚刚结束的华为开发者大会2020(Together)上,HMS Core的华为分析(Analytics Kit)重磅亮相,引起了广大开发者的关注。作为面向移动应用和Web开发者的跨平台、多设备的一站式分析平台,华为分析已经过多个版本的迭代,服务能力持续升级,为全球开发者带来了更加优质的服务。 应用服务分论坛——华为分析主题演讲   9月11日当天,在热门的应用服务分论坛现场,华为分析产品总监向全球开发者介绍了HMS Core华为分析能力。华为分析简单的SDK集成、智能的产品分析、灵活的事件分析,自动生成数十种多维分析报告,帮助开发者和产品、运营人员轻松理解用户行为方式,实现数据驱动的精细化运营,打造应用的“最强大脑”! 一站式多平台免费服务   主题演讲中,最大的亮点就是华为分析支持跨平台、多设备分析,可实现Android、iOS、Web产品的统一分析。产品、运营人员可查看多平台、多设备的统一分析报告或某一平台、设备的细分分析报告,全面洞察用户在应用中的行为特征。 丰富的分析模型,灵活的事件分析   华为分析支持自动采集多达30多种关键事件,如应用崩溃、安装、卸载、更新、应用内购买、广告点击 等,此外,同时支持超过500 种自定义事件生成数十种多维分析报告,开发者可以自定义与业务本身相关的事件,方便全面衡量应用的数据表现。 灵活的受众细分,助力精准营销  

LeetCode 287. 寻找重复数 | Python

泪湿孤枕 提交于 2020-11-02 07:36:23
287. 寻找重复数 题目来源:力扣(LeetCode) https://leetcode-cn.com/problems/find-the-duplicate-number 题目 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4,2] 输出: 3 说明: 不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度小于 O(n2) 。 数组中只有一个重复的数字,但它可能不止重复出现一次。 解题思路 思路:二分查找 这里需要注意,题意中 说明 ,有 4 个提示。这里会限制一些方法,例如: 对数组排序,重复数相邻,根据这个就可以找到重复数(这里违背【不能更改原数组】) 使用哈希表,(这里违背【只能使用额外的 O(1) 算法】) ... 上面的方法,在没有限制的情况下,可以使用,但是在这里,由于题目给出了限制,所以暂不考虑。 先看本题,【给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n)】,这是题目中给定的前提。 根据这个前提,这里二分法的思路是先定一个数值(这里同样定 [left, right]