GT

SpringBoot内置的各种Starter是怎样构建的?--SpringBoot源码(六)

风格不统一 提交于 2020-03-23 20:59:11
3 月,跳不动了?>>> 注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 温故而知新 本篇接 外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五) 温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot 外部配置属性值是如何被绑定到XxxProperties类属性上 的相关源码,现将外部属性绑定的重要步骤总结如下: 首先是 @EnableConfigurationProperties 注解 import 了 EnableConfigurationPropertiesImportSelector 后置处理器; EnableConfigurationPropertiesImportSelector 后置处理器又向 Spring 容器中注册了 ConfigurationPropertiesBeanRegistrar 和 ConfigurationPropertiesBindingPostProcessorRegistrar 这两个 bean ; 其中 ConfigurationPropertiesBeanRegistrar 向 Spring 容器中注册了 XxxProperties 类型的 bean ;

本周总结请查收(内附21道前端面试题)

一世执手 提交于 2020-03-23 20:38:02
3 月,跳不动了?>>> 前言 本周发起了一个100天前端进阶计划,每天一个知识点,搞明白背后的原理,这是第一周的总结,请注意查收。 目录 5道笔试题 10道简答题 6道算法题 笔试题 1.下面代码输出什么 // base.js let count = 0 ; setTimeout( () => { console .log( "base.count" , ++count); }, 500 ) module .exports.count = count; // commonjs.js const { count } = require ( './base' ); setTimeout( () => { console .log( "count is" + count + 'in commonjs' ); }, 1000 ) // base1.js let count = 0 ; setTimeout( () => { console .log( "base.count" , ++count); }, 500 ) exports const count = count; // es6.js import { count } from './base1' ; setTimeout( () => { console .log( "count is" + count + 'in es6'

Facebook扩招下,这类面试题难住一片人…

本秂侑毒 提交于 2020-03-23 20:37:07
3 月,跳不动了?>>> 最近,FB依旧招人不断。 然而,有学员分享了自己在Facebook的面试经历,系统设计题没做好的他,现在非常担心已经跟梦想大厂失之交臂。 更惨的是这种现象,已经不是第一次了;我们先来看看Facebook到底考了什么题:题目:负载均衡器 为网站实现一个负载均衡器,提供如下的 3 个功能: 添加一台新的服务器到整个集群中 => add(server_id)。 从集群中删除一个服务器 => remove(server_id)。 在集群中随机(等概率)选择一个有效的服务器 => pick()。 最开始时,集群中一台服务器都没有。每次pick()调用你需要在集群中随机返回一个 server_id。LintCode答案 的确,近年来各大厂对于求职者系统设计能力要求越来越高,相应的面试题出现频率也 逐年上升 。一般来说, 算法轮决定了公司收不收你,系统设计的表现决定了给你title的高低。 系统设计表现不理想的话,通过、加面、凉凉都有可能。为了帮助大家更好地掌握系统设计,本期我们为大家准备了 升级后地《系统设计求职大礼包》。 《系统设计求职大礼包》 领取方式见文末 领的同学一定要认真看噢,之前就有学员领了之后没认真看,活生生错过了谷歌offer! 系统设计的面试误区 滥用关键词 : 在面试时,很多面试者会频繁使用以下关键词,但这种做法很有可能 降低面试官的好感度 。

判断括号是否有效(c++描述)

可紊 提交于 2020-03-23 20:36:22
3 月,跳不动了?>>> 开门见山,假设我们有一大串的由'{', '}', '[', ']', '(', ')' 这些括号构成比如像这样的"{[}][()"符号串,我们肉眼当然能看出它是非法的,那么如何使用代码来判断是否合法呢? 其实我们可以借助栈来判断这些符号串是否非法 : 1.首先我们我需要建立符号的一对一映射,如下所示: 1 map< char , char > mp = {{ ' ) ' , ' ( ' }, { ' } ' , ' { ' }, { ' ] ' , ' [ ' }}; // 映射括号 2.我们对字符串进行遍历 1.如果能通过映射的键找到当前字符str[i],我们就从栈顶弹出一个元素并获取该元素。当然,如果是栈为空的清空的话,我们就为这个字符随便赋个值,比如说赋值为 '@',我们假记该变量为top_element。接下来我们看看是否能从当前字符str[i]映射所对应的值与top_element是否相同,若不同,则可以判断该符号串为非法的。 2.若果找不到该字符str[i]映射的键,则先将其加入栈中。 3. 循环结束 ,若栈为空则表示当前字符串合法,若不为空,则表示当前字符串非法 4. 可能光用语言描述不能只管表达,下面我们来看图示,假设我们输入了"()"字符串,其具体过程如下: 5. 好了看完图,接下来我们C++的代码来描述一下该过程: #include

线性表 王炸篇 上

余生颓废 提交于 2020-03-23 20:35:10
3 月,跳不动了?>>> 一、线性表的定义 1.1 定义 • n个(n ≥ 0)具有相同特性的数据元素的有限序列,L =(a1, a2, … ai-1,ai,ai+1,… an),n是线性表的长度 1.2 特点 • 表中元素个数有限 • 表中元素具有顺序性 • 表中元素数据类型相同 • 表中元素具有抽象性 二、线性表的顺序表示与基本操作 2.1 线性表的顺序表示 • 定义:指的是用一组地址连续的存储单元依次存储线性表中的数据元素 【注意】 线性表的顺序存储又称为顺序表 逻辑上相邻的数据元素,物理上也相邻 顺序表是随机存取的存储结构 若已知表中首元素在存储器中的位置,则可求出线性表中其他元素的存放位置 线性表的起始地址为a1,称作线性表的基地址 2.2 顺序表的类型描述 //no.1 **静态分配** #define MaxSize 50//宏 typedef int ElemType; typedef struct{ ElemType data[MaxSize]; int length; }SqList; SqList L; L.data[0] = 0; L.length = 1; //no.2 **动态分配** #define InitSize 50 typedef int ElemType; typedef struct{ ElemType *data; int length

通过CGAL将一个多边形剖分成Delaunay三角网

情到浓时终转凉″ 提交于 2020-03-23 20:34:51
3 月,跳不动了?>>> 目录 1. 概述 2. 实现 3. 结果 4. 参考 1. 概述 对于平面上的点集,通过Delaunay三角剖分算法能够构建一个具有空圆特性和最大化最小角特性的三角网。空圆特性其实就是对于两个共边的三角形,任意一个三角形的外接圆中都不能包含有另一个三角形的顶点,这种形式的剖分产生的最小角最大。 更进一步的,可以给Delaunay三角网加入一些线段的约束条件,使得构建的Delaunay三角网能够利用这些线段。利用这个特性,可以将一个多边形剖分成Delaunay三角网,开源工具CGAL就正好提供了这个功能。 2. 实现 因为要显示三角网的效果,所以我在 《使用QT绘制一个多边形》 这篇博文提供的QT界面上进行修改,正好这篇文章提供的代码还实现了在QT中绘制多边形的功能。 关于网格化以及三角网剖分,在CGAL中提供了非常详尽繁复的解决方案,我这里选择了CGAL::refine_Delaunay_mesh_2这个接口,这个接口能够将多边形区域构建成一个Delaunay三角网,如果当前的存在三角形不满足Delaunay,就会在其中补充一些点来满足Delaunay的相关特性。主要的实现代码如下(具体代码见文章最后): #include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include

快应用界面跳转

爷,独闯天下 提交于 2020-03-23 20:34:06
3 月,跳不动了?>>> 第一步增加点击事件 <div class="demo-page"> <input class="btn" type="button" value="跳转到详情页" onclick="routeDetail" /> </div> </template> 第二步实现点击事件 import router from '@system.router' export default { routeDetail () { router.push ({ uri: '/DemoDetail' //跳转到另一个页面在manifest.json中注册地址 }) } } </script> 来源: oschina 链接: https://my.oschina.net/u/4280959/blog/3209342

那些初学者实践Flutter最常出现的错误

↘锁芯ラ 提交于 2020-03-23 20:33:51
3 月,跳不动了?>>>   哔哩哔哩漫画APP实践Flutter 也有大半年时间了,我针对线上收集到的错误进行分析,挑选出了一些有一般代表性的错误,列在本文,可供实践 Flutter 的初学者们作为一点参考。   典型错误一:无法掌握的Future   典型错误信息: NoSuchMethodError: The method 'markNeedsBuild' was called on null.   这个错误常出现在异步任务(Future)处理,比如某个页面请求一个网络API数据,根据数据刷新 Widget State。   异步任务结束在页面被pop之后,但没有检查State 是否还是 mounted ,继续调用 setState 就会出现这个错误。   示例代码   一段很常见的获取网络数据的代码,调用 requestApi() ,等待Future从中获取 response ,进而 setState 刷新 Widget:    class AWidgetState extends State { // ... var data; void loadData() async { var response = await requestApi(...); setState((){ this.data = response.data; }) } } 原因分析   

如何使用 bind 设置 DNS 服务器

旧巷老猫 提交于 2020-03-23 20:25:55
3 月,跳不动了?>>> 域名系统Domain Name System,我们更通常称为 DNS 的系统,可以将域名翻译或转换为与该域关联的 IP 地址。DNS 是能够让你通过名称找到自己喜欢的网站而不是在浏览器中输入 IP 地址的原因。本指南将向你展示如何配置一个主 DNS 系统以及客户端。 以下是本文示例中使用的系统细节: dns01.fedora.local (192.168.1.160)- 主 DNS 服务器 client.fedora.local (192.168.1.136)- 客户端 DNS 服务器配置 使用 sudo 安装 bind 包: $ sudo dnf install bind bind-utils -y bind 包提供了 /etc/named.conf 配置文件,来供你配置 DNS 服务器。 编辑 /etc/named.conf 文件: sudo vi /etc/named.conf 查找以下行: listen-on port 53 { 127.0.0.1; }; 添加主 DNS 服务器的 IP 地址,如下所示: listen-on port 53 { 127.0.0.1; 192.168.1.160; }; 查找以下行: allow-query { localhost; }; 添加本地网络范围。该示例系统使用的 IP 地址在 192.168.1.X

Android中获取定位经纬度信息

孤街浪徒 提交于 2020-03-23 20:02:26
3 月,跳不动了?>>> 场景 根据GPS获取经纬度效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 修改页面布局代码activity_main.xml,在页面上添加一个TextView来显示经纬度信息。 <?xml version= " 1.0 " encoding= " utf-8 " ?> <RelativeLayout xmlns:android= " http://schemas.android.com/apk/res/android " xmlns:app = " http://schemas.android.com/apk/res-auto " xmlns:tools = " http://schemas.android.com/tools " android:layout_width = " match_parent " android:layout_height = " match_parent " tools:context = " .MainActivity " > < TextView android:id = " @+id/location " android:layout_width = " wrap_content "