作用:
@Configuration
public class MyThymeLeafConfig {
@Resource
private ApplicationContext applicationContext;
/** 自定义的bean(默认)
* @return SpringTemplateEngine
* @Primary :<li>作用:指定使用名为“myTemplateEngine”的bean作为默认bean。</li>
* <li>这样,当您在需要使用SpringTemplateEngine的地方没有指定@Qualifier注释时,Spring将使用该默认bean。</li>
* <li>使用@Resource时,可直接设置名字。不用使用@Qualifier注释</li>
*/
@Bean(name = "myTemplateEngine")
@Primary
public SpringTemplateEngine myTemplateEngine(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
//----------------------------------------------
/** 自定义的bean2
* @return SpringTemplateEngine
*/
@Bean(name = "myTemplateEngine2")
public SpringTemplateEngine myTemplateEngine2(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
}
@Resource(name = "myTemplateEngine")
private SpringTemplateEngine springTemplateEngine1Html;
@Resource(name = "myTemplateEngine2")
private SpringTemplateEngine springTemplateEngine2Xml;
字符终端文本编辑器补充说明nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方式来处理某些文件可能会带来问题,比如Linux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成系统不灵了。因此,如果你想避免这种情况出现,就加上-w选项吧。语法nano[选项][[+行,列]文件名]...复制选项-h,-?--help显示此信息 +行,列从所指列数与行数开始 -A--smarthome启用智能HOME键 -B--backup储存既有文件的备份 -C<目录>--backupdir=<目录>用以储存独一备份文件的目录 -D--boldtext用粗体替代颜色反转 -E--tabstospaces将已输入的制表符转换为空白 -F--multibuffer启用多重文件缓冲区功能 -H--historylog记录与读取搜
通常情况下,不管是使用云服务器,还是物理服务器,根目录不会设置太大,很多docker使用者会遇到一个问题,就是默认所有的资源存储在/var/lib/docker下面,使用一段时间后,就会发现磁盘空间不足,主要是容器的日志文件、下载的镜像等所以在必须将docker的默认存储位置改成比较大的盘,才能满足日常使用场景,下面介绍几种方法来修改docker默认存储位置配置文件修改首先第一种,也是最推荐的一种,就是修改配置文件,这里分两种情况,一种是你首次安装docker,还没启动的情况下,可以直接在配置文件中指定存储位置,我这里用的docker-ce19版本的,配置文件默认没有,在/etc/docker/下创建daemon.json配置文件,通过graph指定路径接着,启动docker服务就可以,如果是原先启动了,但是现在要迁移,那么你最好先停docker服务,备份下整个docker目录,或者直接整个复制到你要迁移到的目录,然后再启动docker,接着查看dockerinfo迁移完成后,测试没有问题/var/lib/docker目录就可以删除了启动文件修改同样是配置参数,还有一种方法是在容器启动
共识机制是区块链的核心基石,是区块链系统安全性的重要保障。区块链是一个去中心化的系统,共识机制通过数学的方式,让分散在全球各地成千上万的节点就区块的创建达成一致的意见。共识机制中还包含了促使区块链系统有效运转的激励机制,是区块链建立信任的基础。区块链公链常用的共识机制有POW、POS、DPOS、BFT以及多种机制混合而成的共识机制等。共识是指系统节点达成一致的过程,而分布式系统的一致性体现在三个方面:◼最终性(Termination):所有进程最终会在有限步数中结束并选取一个值,算法不会无尽执行下去。◼统一性(Agreement):所有进程必须同意同一个值。◼合法性(Validity):输出内容是输入内容按照系统规则生成的,且输出内容合法。最终性衡量了达成共识的效率,在一些对交易确认的实时性要求高的场景显得非常重要,而统一性和合法性表征了共识的安全性。在区块链系统中,去中心化程度表征了分布式系统的大规模协作程度。因此,我们从效率、安全性和去中心化程度这三个维度去评价各种共识机制,也就是长铗提出的著名的“不可能三角”理论。1.POW共识机制比特币采用的POW工作量证明共识机制,在生成区块
大半年没有打Codeforces,昨天开始恢复打Codeforces,简直是,欲语泪先流啊。手残到爆的写错了范围,手残的数漏了条件,简直不能直视,最坑爹的是,E题没时间写代码了。题目链接Problem_A: 题意: 给n个数,每个数可以用无限次,求用这些数的和表示不出来的最小的正整数,没有则输出-1.思路: 如果这n个数里面有1,那么一定可以表示所有数,没有1的话,最小的正整数就是1代码:1#include<cmath> 2#include<cstdio> 3#include<cstring> 4#include<cstdlib> 5#include<ctime> 6#include<set> 7#include<map> 8#include<list> 9#include<queue> 10#include<string> 11#include<vector> 12#include<fstream> 13#include<ite
大数据技术之_29_MySQL高級面试重点串讲_02_Mysql简介+Linux版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制先完成再完美,先功能再性能。 大胆假设,小心求证。第1章Mysql简介1.1概述 MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。 MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL是开源的,所以你不需要支付额外的费用。 MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 MySQL使用标准的SQL数据语言形式。 MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 MySQL对PHP有很好的支持,PHP是目前最流行的Web开发语言。 MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为
版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。https://jerry.blog.csdn.net/article/details/79825632代码的环复杂度(Cyclomaticcomplexity,有的地方又翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由ThomasJ.McCabe,Sr.提出。在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可能质量低且难于测试和维护。计算公式环复杂度=E−N+2E=程序控制流图中边的个数N=程序控制流图中点的个数看个具体的例子。下面这段ABAP代码的环复杂度根据公式计算为3.DATA:lv_valueTYPEiVALUE1. IFlv_value=1. WRITE:/'alwayshappend'. ELSEIFlv_value=2. WRITE:/'notpossible'. ELSE. WRITE:/'evennotpossible'. ENDIF
编译:chux出品:ATYUN订阅号MagicLeap展示了Mica的演示,这是一种外形如同真人的AI,可以在公司的增强现实眼镜MagicLeapOneCreatorEdition中观看。我观看了Mica的演示,她留着短发,虽然她不会说话,但与观众交流的方式很暖。我把AR眼镜放在头上,仔细查看指示,看现实世界中的虚拟叠加层。然后我觉得这是MagicLeap展示过的最好的东西。当我注意到她是多么专注时,我抬起头,看着她的眼睛。她做了同样的事情,回看着我。我把头转回去,她也把头往后移了。她正在模仿她看到我做的一些动作。她现在无法说话,但将来会的。今天在MagicLeapLEAP活动的舞台上,MagicLeap的AI负责人AndrewRabinovich和以人为中心AI的负责人JohnMonos谈到他们如何看待数字人类和基于AI的虚拟头像在未来几年变为现实在MagicLeap平台上。这些头像将会像亚马逊Alexa智能音箱一样。当你想知道去年在PinkFloyd音乐会上你非常喜欢这首歌的时候,在MagicLeap的舞台演讲中被称为Aya的虚拟人物会回答曲名为“AnotherBrickinthe
《破风》非常燃,看完之后就想骑着单车冲上公路。这部影片中出现了大量有趣的数据,下面我们就逐个数理一下:1、到底有多快公路赛一般时速超过50公里,最快时速可以达到80至100公里。2、一个车队有几个破风手一个车队通常有3个以上的破分手,是一个小组,而不是孤军奋战。3、破风手的价值是什么自行车公路赛,是一项“速度越快,风阻越大;风阻越大,越耗体力”的极限运动。为了让冲刺手保持体力用来最后冲刺,需要有团队来保护他,让他的风阻尽量减少。自行车在空气中的阻力和速度的平方成正比。测试表明,当车速度上升到每秒11米时,空气阻力便占前进总阻力的80%。统计显示,一路跟着破风手,在冲线之前,冲线手能够节省20%的体力。2009年环法比赛的哥伦比亚HTC车队,冲刺王MarkCavendish(马克·卡文迪)最终以70公里/小时的速度冲过终点。这个惊人的速度背后,是世界知名的破风手MarkRenshaw(马克·兰肖)一路的保驾护航。直到最后两百米,兰肖让出位置,自己滑行过线,卡文迪火力全开,为全队赢得第六次环法总冠军。4、心率水平能代表选手比赛水平吗?理论上,正常人能够达到的最大心率是“220-年龄”,通过
1.斜体和粗体代码:1.*斜体*或_斜体_ 2.**粗体** 3.***加粗斜体*** 4.~~删除线~~复制显示效果:这是一段斜体这是一段粗体这是一段加粗体这是一段删除线2.分级标题第一中写法:1.这是一个一级标题 2.============================ 3. 4.这是一个二级标题 5.--------------------------------------------------复制第二种写法:1.#一级标题 2.##二级标题 3.###三级标题 4.####四级标题 5.#####五级标题 6.######六级标题复制3.超链接Markdown支持两种形式的链接语法:行内式和参考式两种形式,行内式使用较多3.1行内式语法说明:[]里写链接文字,()里写链接地址,()中的”“中可以为链接指定title属性,title属性可加可不加。title属性的效果是鼠标悬停在链接上会出现指定的title文字。[链接文字](链接地址"链接标题")这样的形式。链接地址与链接标题前有一个空格。代码1.欢迎来到[SuperXCR](https://liqu
制作winpe的软件很多,我自己已经习惯用WimBuilder2,网上制作Win11PE的资料很少很少,这个完全是我摸索出来的,分享给有缘人。下载地址:https://slore.lanzoui.com/b00z5zy6b下载地址:https://lanzoux.com/b00z5zy6b2月3日那个有bug,用9月4日更新的WimBuilder2-Full.v2022-02-02_updated.7z解压后双击WimBuilder.cmd不喜欢背景雪花的,可以如下图修改准备好win11.iso,准备原版的,不要乱七八糟的比如我的.iso双击后盘符是W:,我选的企业版2008R2是第一个没有32位版本的Server系统Windows11是第一个没有32位版本的PC系统我都选了什么,就不一一截图了,直接贴上配置文件E:\WimBuilder2-Full.v2022-02-02_updated\AppData\Projects\WIN10XPE\_Assets_\preset\2022.11.19_update4.js.zip你解压后放到原路径,打开后选择我那个配置即可一直next直到下图
写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西。然而,学以致用,无用则无为。学了的东西必须反复的去用,去实践,方能有真知。这篇文章记录了我在redis学习过程中的笔记、理解和实践,仅供参考。 本章介绍redis基础中的基础,常用命令的使用和效果。 如果你已经很厉害了,不需要看基础命令,你可以跳转: 【redis】redis应用场景,缓存的各种问题解析 【redis】分布式锁实现,与分布式定时任务 string string类型是redis中最常见的类型了,通过简单的set、get命令就可以对这个数据结构做增删操作,应该也是redis最大众的类型之一,存json、存自增数值、甚至缓存图片。string的底层是redis作者自定义的一个叫SDS的struct。长下面这样: redis是使用c语言实现的 typedefchar*sds; //省略 struct__attribute__((__packed__))sdshdr64{ uint64_tlen;/*used*/ uint64_talloc;/*excludingthehe
安装# python3-mpipinstallmotor复制 创建客户端# 指定主机和端口号 importmotor.motor_asyncio client=motor.motor_asyncio.AsyncIOMotorClient('localhost',27017)复制 使用用户名和密码 motor.motor_asyncio.AsyncIOMotorClient('mongodb://root:123456@localhost:27017')复制 获取数据库# MongoDB的单个实例可以支持多个独立的数据库。在开放式客户端中,您可以使用点表示法或括号表示法来获取对特定数据库的引用: db=client.test_database db=client['test_database']复制 创建对数据库的引用不会执行I/O,也不需要 await 表达式。 获取集合# 一个集合是一组存储在MongoDB中的文档,并且可以被认为是大致在关系数据库中的表的当量。获取Motor中的集合与获取数据库的工作方式相
1、什么是内核模块? 内核模块是Linux提供的一种机制,允许在内核运行时动态加载进内核中,具有两个特点: 1)内核模块本身不编译入内核映像,有效控制缩减内核镜像大小 2)内核模块一旦被加载,他就和内核中的其他部分完全一样 2、为什么需要内核模块? 如果在内核编译时把所有的功能都编译进去,就会导致内核很大,而且要往内核中添加或删除功能时必须重新编译内核 比如在Ubuntu在通用PC平台上,预先无法知道需要什么设备,就不知道预先编译什么驱动。 3、内核模块和应用程序的区别 工作模式 工作性质 层次 权限 影响 竞态 运行方式 应用程序 USR模式 策略性 用户层 低 局部 局部 主动 内核模块 SVC模式 功能性 内核层 高 全局 全局 被挡  
27.RemoveElement Givenanarrayandavalue,removeallinstancesofthatvalueinplaceandreturnthenewlength. Donotallocateextraspaceforanotherarray,youmustdothisinplacewithconstantmemory. Theorderofelementscanbechanged.Itdoesn'tmatterwhatyouleavebeyondthenewlength. Example:Giveninputarray nums = [3,2,2,3], val = 3 Yourfunctionshouldreturnlength=2,withthefirsttwoelementsof nums being2. 给定一个数组和一个val值,找出数组中与val值相同的数并且删除,最后返回新数组的长度。 java代码: publicclassSolution{ publicin
题目大意: 给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值。 思路: 整体二分(二分答案),对于每个国家,如果在m次事件后到达目标则放在左边,否则放在右边(用下标映射)。区间加用树状数组维护。 反思: 整体二分不熟练。二分计算时算到mid,now表示当前已经经历了几次事件(可进可退)。快速排序用的也是整体二分。 代码: 1#include<cstdio> 2#definelllonglong 3constintM=300005; 4intn,m,i,k,now,a[M],p[M],s[M],e[M],id[M],di[M],nex[M],fir[M],ans[M]; 5llc[M];//now表示当前已经经历了几次事件 6 7intread() 8{ 9intx=0;charch=getchar(); 10while(ch<48||ch>57)ch=getchar(); 11while(ch>47&&ch<58)x=(x&
@Transactional的使用 这个事务注解可以用在类上,也可以用在方法上: 事务注解标记到服务组件类级别,相当于为该服务组件的每个服务方法都应用了这个注解 事务注解应用在方法级别,是更细粒度的一种事务注解方式 如果某个方法和该方法所属类上都有事务注解属性,优先使用方法上的事务注解属性 另外,Spring支持三个不同的事务注解: Spring事务注解org.springframework.transaction.annotation.Transactional(官方推荐) JTA事务注解javax.transaction.Transactional EJB3事务注解javax.ejb.TransactionAttribute @Transactional注解参数 @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public@interfaceTransactional{ /** *value和transacti
【数字图像处理】BilateralFilters https://www.yuque.com/lart/idh721/bf 简单介绍 双边滤波是一种非线性的可以模糊图像并且能保留一定的边缘信息的技术。 它能够将图像分解成不同的尺度,而不会在修改后产生光晕(haloes),这使得它在计算摄影应用中无处不在(ubiquitous),例如调色,风格转换,重调光照,去噪(tonemapping,styletransfer,relighting,anddenoising)。 双边滤波的成功主要有以下一些: 它的公式很简单:每个像素被它的邻居的加权平均值代替。这方面很重要,因为很容易获得关于其行为的直观理解,从而适应特定于应用程序的需求并实现它。 它只依赖于两个参数,这两个参数表示要保留的特征的大小和对比度。 它可以以非迭代的方式使用。这使得参数很容易设置,因为它们的影响不是通过多次迭代累积的。 由于高效的数值策略,以及,甚至在图形硬件可用的情况下,它可以以交互速度在大的图像上进行计算。 具体表达 双边滤波和一般的高斯滤波(卷积)有着密切的关联。 GaussianConvolution
王者“520”法则: 当5日线走平,股指站稳5日线两天,短线客首仓进场;当20日线走平,股指站稳20日线两天,中线客进场,出局倒过来。 你可以把你入市以来的所有操作和5.20均线操盘法则对照一下,看你错在哪里,同时用5.20均线操盘法则分析一下这两年的大盘,看看用5.20均线操盘法则是否可防止踏空和套牢! 当然法则虽简单,难的是克服主观臆测,长期按5.20均线操盘法则机械操作!! 三线止损法: 将股票分三份,破5日线卖三分之一,破10日线卖三分之一,破20日线清仓。那么很明显,王者最多的帐户剩三分之一股票,也就是不破20日线不清仓。 三线止损法和王者5.20操盘法则是一脉相通的,是王者多年操盘的心得,用三根线或两根线将股票网住,三线在下持股,三线在上卖出,绝不犹豫!!过滤了风险,剩下的就剩赚了!
1,区分大小写 要理解的第一个概念就是ECMAScript中的一切(变量,函数名和操作符)都是区分大小写的,比如test哈Test分别表示不同的变量,而函数名不能使用typeof,因为它是一个关键字(所有的关键字都不能当作自定义变量名,后面再讲),但是typeOf可以当作一个有效的函数名; 2,标示符 所谓的标示符,就是指变量、函数、属性的名字,或者函数的参数。标示符可以是按照下列格式规则组合起来的一个或多个字符: *第一个字符必须是一个字母、下划线_或者是一个美元符号$; *其他字符可以是字母、下划线、美元符号或者数字。 *按照惯例,标示符采用驼峰带下写格式,也就是第一个字母小写,剩下的每个单词的首字母大写; 3,注释 包含单行注释和块级注释; //标示单行注释; /* *表示块级注释 */ 4,严格模式 ES5引入了严格模式的概念,严格模式是为js定义了一种不同的解析与执行模型,在严格模式下,ES3中的一些不确定的行为将得到处理,而且对某些不安全的操作
1、数据库范式作用:尽可能减少数据冗余、保证数据完整性、 识别出实体、关系以及表的缺失第一范式:字段都为单一属性,且属性为基础类型 第二范式:属性必须完全依赖关键字 第三范式:非主键属性不能依赖其他的非主键属性 mysql的学习,在学校里我对mysql已有了初步的了解。指导老 师教我要灵活多变,什么时候要用到临时表,嵌套查询,存储过程用 的地方等,叫我多看几个例子,并敲下代码运行下,体会里面的数据 生成,查询出自己要的数据等。然后再根据这些数据写出语句,生成 需要的流程,这就是数据挖掘的精髓!那么存储过程与一般的SQL语句 有什么区别呢? 存储过程的优点: 1.存储过程只在创造时实行编译,以后每次执行存储过程都不需 再重新编译,而一般sql语句每执行一次就编译一次,所以使用存储过 程可提升数据库执行速度。 2.当对数据库实行复杂操作时(如对多个表实行 Update,Insert,Query,Delete时),可将此复杂操作用存储过程封 装起来与数据库提供的事务处理结合一起使用。 3.存储过程能够重复使用,可减少数据库开发人员的工作量 从中我学到了:存储过程是数据在存储到数据库的过程中,
AggregateReport是 JMeter 常用的一个Listener,中文被翻译为“聚合报告”。今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在AggregateReport中,会显示一行数据,共有10个字段,含义分别如下。Label:每个JMeter的element(例如HTTPRequest)都有一个Name属性,这里显示的就是Name属性的值#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100Average:平均响应时间——默认情况下是单个Request的平均响应时间,当使用了TransactionController时,也可以以Transaction为单位显示平均响应时间Median:中位数,也就是50%用户的响应时间90%Line:90%用户的响应时间Note:关于50%和90%并发用户数的含义,请参考下文http://www.cnblogs.com/jackei/archive/200