DCC

Spring 源码中设计模式?这样回答面试官.才能显得你技高一筹.

时光毁灭记忆、已成空白 提交于 2020-08-10 19:53:55
一:简单工厂模式 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 如下配置,就是在 HelloItxxz 类中创建一个 itxxzBean。 二:工厂方法模式 通常由应用程序直接使用new创建新的对象,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象。 一般情况下,应用程序有自己的工厂对象来创建bean.如果将应用程序自己的工厂对象交给Spring管理,那么Spring管理的就不是普通的bean,而是工厂Bean。 就以工厂方法中的静态方法为例讲解一下: 建一个config.xm配置文件,将其纳入Spring容器来管理,需要通过factory-method指定静态方法名称: 三:单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。spring中的单例模式完成了后半句话,即提供了全局的访问点BeanFactory。但没有从构造器级别去控制单例,这是因为spring管理的是是任意的java对象。 核心提示点

【js】数组中是否包含公共项

六眼飞鱼酱① 提交于 2020-08-10 08:15:55
快速找出数组中是否包含公共项 要求 : 两个数组中是否包含公共项,包含返回true,不包含返回false 方法一: 1.使用内置ES6函数some()遍历第一个数组每个元素测试 2.第二个数组使用内置函数includes来检查元素是否存在第一个数组中 //第一种 function findCommonElements3(arr1,arr2){ return arr1.some(item => arr2.includes(item)) } var a = findCommonElements3(arr1,arr2); console.log(a) //false 方法二: 1.利用对象 function findCommonElements2(arr1,arr2){ let obj = {}; for(let i =0;i<arr1.length;i++){ if(!obj[arr1[i]]){ const elem = arr1[i]; obj[elem] = true } } for(let j = 0;j<arr2.length;j++){ if(obj[arr2[j]]){ return true ; } } return false ; } var b = findCommonElements2(arr1,arr2); console.log(b) //false

大数据

你说的曾经没有我的故事 提交于 2020-08-10 05:40:04
MapReduce 主要内容 ① MapReduce概述 1.1 MapReduce定义 1.2 优缺点 优点: 缺点: 1.3 MR核心编程思想 MR进程: ② MR框架原理 2.1 MapReduce工作流程 Map Task工作机制: 具体过程: Read阶段 :从文本中一行一行的读取数据,并返回一个个的k,v数据,并将数据交给map函数处理; Map阶段 :用map函数处理读取到的k,v数据,并得到新的k,v数据; Collect收集阶段 :将map函数处理的结果存储到环形内存缓存区中; Spill溢写阶段 :当环形缓存区达到阈值时,就会将数据溢写到磁盘上。溢写前要对数据进行排序、合并等操作;(溢写阶段详情见文档) Combine合并阶段 :当所有数据处理完以后,对磁盘上的所有数据进行一次归并排序,合并成一个文件;(详情见文档) Reduce Task工作机制: 具体流程: Copy阶段 :当Map Task任务结束以后,Reduce Task从各个Map Task上去拷贝数据,放到内存或者磁盘中; Merge阶段 :对内存和磁盘上拷贝过来的数据进行合并,防止内存和磁盘被占用过多; Sort 阶段: 和Merge阶段一起工作,在合并的同时使用归并排序进行排序; Reduce 阶段 : reduce() 函数将计算结果写到 HDFS 上。 MR整体流程图: 2.2

原创 Spring Boot 2.3 新特性分层JAR

谁说胖子不能爱 提交于 2020-08-08 19:10:31
背景 在我们实际生产容器化部署过程中,往往会遇到 Docker 镜像很大,部署发布很慢的情况 影响 docker 镜像大小的因素,主要有以下三个方面: 基础镜像的大小 。尽量选择 aphine 作为基础镜像 减少操作系统内置软件 Dockerfile 指令层数。 这就要求我们优化 Dockerfile 能合并在一行的尽量合并等 应用 jar 的大小。这是今天要分享的重点内容 helloworld 镜像 我们先来基于 spring boot 2.3.0 构建一个最简单的 web helloworld,然后构建镜像。 FROM adoptopenjdk:11-jre-hotspot as builder WORKDIR application ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} application.jar ENTRYPOINT ["java", "-jar application.jar"] docker build --build-arg JAR_FILE=./demo-layer-0.0.1-SNAPSHOT.jar . -t demo:v1.0 查看镜像分层信息 我们通过 docker inspect demo:v1.0 来看下此镜像的每层的散列值 // demo:v1.0 版本镜像分层信息摘要 "Layers": [

OSChina 周一乱弹 —— 必成大器!

安稳与你 提交于 2020-08-08 14:17:20
Osc乱弹歌单(2020)请戳( 这里 ) 【今日歌曲】 @ watergood :是时候分享一波我的这张纯音乐歌单了,过去的五年多时间里,我陆陆续续地把听到的好听的纯音乐添加了进去,目前一共65首,相信总有那么一首会带给你好心情。 《Coming Back to See the Sea (Original Mix)》- Ibiza Sunset 手机党少年们想听歌,请使劲儿戳( 这里 ) @ fineDD :发现有小孩会一大早专门来华为体验店玩平板,机智啊 我小时候就没这么机智, 还自己花钱买游戏机呢, 哎…… 被发现了, 因为这事又挨了爹的一顿打, 反正被打的原因太多了, 反正爹带孩子也是不靠谱! 不过能和爸爸斗智斗勇也是一种幸运, @ 巴拉迪维 : #感恩父亲# 父亲离开快25年,一直都认为早已习惯了没有父爱的人生,可是这两年无数次想过他还健在会如何。真希望再听听他的声音,和他来一次 man to man 的畅谈,我实在有太多疑问想问他,可惜不能开口。今天是父亲节,希望还有机会的你们,千万不要错过。祝全天下的父亲,节日快乐! 说说父母的那些神操作, 这个节日快乐很难说出口啊! @ fineDD :我爸和我都是那种不善世故的人,发个红包说声节日快乐我俩都贼尬。。 等父亲老了, 就该你撑起来这个家了, 努力赚钱去吧。 @ 河马宝宝 :你永远无法赚到在你认知能力之外的钱

PDF怎么新增文本?上班一族都在用的PDF编辑器

大兔子大兔子 提交于 2020-08-08 09:06:10
在PDF文件中,怎么新增文本?这款PDF编辑器,上班一族都有在用哦。很多时候,我们需要在PDF文件中新增一些文本内容,这时候应该怎么操作呢?有没有小伙伴知道这个问题的答案? 其实,想要解决这个问题十分简单——需要在PDF文件中新增一些文本内容,选择这款上班一族都有在用的PDF编辑器就可以了哦。“迅捷PDF编辑器”可以对PDF文件的原文内容进行重新编辑、排版,还可以在PDF文件的原文中加入新图文、形状、链接、注释、图章、音乐等。 那么,下面小编便给大家说说,怎么使用这款编辑器在PDF文件中新增文本内容的。 在电脑百度上搜索“迅捷PDF编辑器”,进入软件官网就可以免费获取。等待软件下载、安装好后,双击运行软件。 第一步:在弹出的软件主页上,点击【文件】、【打开】或【打开更多文件】字样的按钮进行文件添加,就可以在迅捷PDF编辑器内打开PDF文件然后进行新增文本内容了。 第二步:添加文件后,我们需要在PDF文件中新增文本内容,可以点击页面上方工具框中【新增文本工具】的工具图标,点击使用。 第三步:在PDF文件中的任意位置,通过鼠标点击插入文本框。在插入的文本框中进行新增文本即可,十分方便快速。 第四步:新增文本后,找到【选取】工具图标,将文本框拖动到需要放置文本框的位置。或者,我们可以直接使用鼠标把文本框拖动到其它位置。最后,点击页面左上方【文件】,对编辑后的PDF文件进行保存即可。

5分钟轻松搞定,Python开发之turtle库的基本操作

若如初见. 提交于 2020-08-07 07:05:52
文源网络,仅供学习之用,如有侵权请联系删除。 基础总结 turtle库是python标准库之一,入门级绘图库。import turtle之后即可使用。 turtle绘图原理:有一只海龟,其实在窗体正中心,在画布上游, 走过的轨迹形成了绘制的图形,海龟由程序控制,可以变换 颜色、改变宽度等。 1、绘图窗口设置命令 turtle.setup(400,300,200,100):参数以此(宽,高,距离屏幕左边距离,距离屏幕上方距离),屏幕左上角原点,单位像素。 2、运动命令 turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,向右为x轴,向上为y轴。 turtle.fd(d)、turtle.forward(d):以当前方向,往前行进d像素。 turtle.bk(d)、turtle.backword(d):保持当前方向不变,往后退行d像素。 turtle.circle(r,angle):从当前位置以r为半径圆的angle角度旋转。 3、方向设置命令 turtle.seth(angle):以x轴方向为起点将方向偏转为angle度,逆时针为正。只改变行进方向但不行进。 turtle.left(angle):在当前行进方向的基础上,向左旋转angle度。 turtle.right(angle):在当前行进方向的基础上,向右旋转angle度。 4、画笔控制命令

游戏开发中的多语言处理

偶尔善良 提交于 2020-08-07 04:24:05
前言 之前我写过一遍《数据表的使用》的文章,今天继续用文本处理为例讲解一下数据表导出工具的使用和多语言的使用方式。 编写数据表 我们先定义一个UI文本表,写好表头,添加几个测试用对本文,注意类型使用lang。 使用工具导出 打开build.bat文件,修改数据表和项目路径,双击运行,这时候如果不出问题你的项目下就会出现对应的数据和枚举文件 为了减少配置数据的大小,所有数据才用数组形式,所以生成了枚举文件,使用枚举索引对应的数值。 使用数据 添加数据到数据管理器,如果不是合并的表需要给一个key,我通常使用文件名。 所有的数据都归XlsxDataManager负责管理,不过这个XlsxDataManager可以分模块,如果游戏中数据始终不清理,可以使用一个就行。 2. 将语言文件添加到语言管理器。 语言文本管理器的处理方式与creator官方插件i18n处理方式一样,也可以处理文本替换。 3. 定义一个UI文本管理类 4. 定义UI文本组件 在界面中拖入一个label,挂上UI文本组件,填好我们在数据表中定义的ID 运行查看效果即可 如何切换语言? 执行另一个脚本,这个脚本每次都会添加zh中新添加的字段,不会替换已有字段。 如果不出问题,导出目录会多出一个语言文本,可以拿给负责翻译的人员。 为了测试自己简单翻译一下。 更改语言为en 运行看效果 结语 此套方案可以用于同时支持多种语言

记一次内存泄漏DUMP分析

荒凉一梦 提交于 2020-08-05 18:31:11
自从进入一家创业公司以后,逐渐忙成狗,却无所收获,感觉自身的技术能力用武之地很少,工作生活都在业务逻辑中颠倒。 前些天线上服务内存吃紧,让运维把DUMP拿下来,分析一下聊以自慰。 先来统计一下大对象信息 0:000> !dumpheap -min 85000 -stat Statistics: MT Count TotalSize Class Name 000007feec34c168 7 57734750 System.Char[] 000007feec34aee0 14 115469904 System.String 00000000013032d0 101 621925414 Free Total 122 objects Fragmented blocks larger than 0.5 MB: Addr Size Followed by 000000010d382018 2.8MB 000000010d645e90 System.String 000000010d971aa8 1.8MB 000000010db43530 System.Random 000000010db70bd0 1.1MB 000000010dc8e238 System.String 000000010dd2f6a8 0.7MB 000000010ddd9160 System.Random

创龙基于TI AM437x ARM Cortex-A9 CPU性价比高开发板USB OTG/USB HUB接口

谁说胖子不能爱 提交于 2020-08-05 10:35:52
处理器 TI AM437x是 一款 高性能 嵌入式 32位工业级Cortex-A9 处理器。 拥有多种工业接口资源, 以下是 AM437x CPU资源框图: USB OTG/USB HUB 接口 CON 11为 Micro USB 2.0 接口,应用于各种不同的移动设备间的 连 接,进行数据交换 ,传输 速度高达480Mbps。CON 12、CON13 是2个双层USB接口,共4个A型USB H OST 1.1,理论速度12Mbps,它和普通PC的USB接口是一样的,可以接USB摄像头、USB键盘、USB鼠标、U盘等常见的USB外设。这4个USB HOST是由一个USB Hub芯片扩展得到的。对应引脚定义如下图: 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/4287053