Debian 档案库
软件包管理工具
可以让用户从档案库安装 统一设置 的二进制软件包到系统中
目前 Debian 的软件包管理系统是 高级软件包工具 APT
APT 前端用户程序和后端的不同访问方式
APT 辅助工具
apt-get 和 apt-cache 是最基础的基于 APT 的软件包管理工具,意味快但功能不丰富
apt-get 和 apt-cache 可以使用 /etc/apt/preferences
来管理软件包的多个版本,但这非常繁琐
在成功安装下载的软件包后,apt 将默认删除缓存的 .deb
软件包
对于典型的 HTTP 访问,档案库在 /etc/apt/sources.list
文件
# 源的信息组成 deb/deb-src URL stable/testing/unstable [area ...]
deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free
一行一条
第一个参数
第二个参数 Debian 档案库 的根 URL
第三个参数是发行版名称,这个一般需要查看一下
后面全部参数是 Debian 档案库的有效档案库范围名称
自由软件
下面是一个小脚本可以帮助你添加 第三方档案库,前提是你的默认 /etc/apt/sources.list 没有被破坏并且会 Linux 的 CLI 界面的基本操作,此脚本是根据默认的 sources.list 创建,当然你可以不用脚本用手动编辑 φ(゜▽゜*)♪
第一步,在命令行执行以下内容
# 创建一个文件夹 test 名称随意
mkdir test
# 创建脚本,可以使用 vi, vim, ... 编辑,建议不会对应编辑器可以查询一下用法
vi apt-sources.sh
第二步,编辑 apt-sources.sh
脚本,注意:在进入 vi 编辑模式后 小心 每个操作,如果 不确定 或 有问题,可以按 ESC
进入命令模式再按 u
撤销
按照 i
输入下面内容,只要按 i
就可以进入编辑模式
#!/bin/bash
if [ -r $1 ]; then
while read -r url; do
filename=${url#*.}
grep "^deb.*" /etc/apt/sources.list | sed -E "s~http.*\.[[:lower:]]{2,5}~$url~" > /etc/apt/sources.list.d/${filename%%.*}.list
done < "$1"
apt update
else
echo "文件不存在或无法权限读取"
fi
输入完上面内容,按 Esc
进入命令模式,按 :wq
保存退出 vi 编辑器,如果有问题按照上面警告可以撤销操作按 :q!
退出 vi
注:读不懂脚本,可以在 此处 了解 shell 脚本的基本知识
第三步,编辑第三方档案库信息,vi sources.txt
像第二步一样输入下面内容,当然你可以添加其他你知道的 第三方档案库信息,注意一条地址一行
http://mirrors.ustc.edu.cn
http://mirrors.aliyun.com
第四步,执行脚本
# 赋予脚本执行权
chmod +x apt-sources.sh
# 执行脚本
sudo ./apt-sources.sh sources.txt
# 查看添加是否成功
cd /etc/apt/sources.list.d/ && ls -lh
sudo
进行临时提权,关于 sudo 信息说明:
/etc/apt/sources.list.d/
目录中找到不同第三方档案库进行调整/etc/apt/sources.list.d/
目录中最好一个档案库一个文件/etc/apt/sources.list.d/
是官方为我们准备的不是脚本创建的.list
文件存放在 /etc/apt/sources.list.d/
目录中网上直接复制的源一般存在以下问题
协议问题,一般是 HTTP 协议,部分对 HTTPS 协议不友好需要安装 apt-transport-http
或 ca-certificates
的支持
发行版号不匹配,这个建议查看自己当前系统 uname -a
然后在官网查看,或看看 /etc/apt/sources.list 默认的内容,所以一般别改 /etc/apt/sources.list
deb-src
一般含义此行需要下载大量源码信息,一些不必的可以注释掉,不一定每个仓库需要拉取
GPG error
问题,这个一般是版本问题或安装时是离线安装,导致发行版的元数据文件 Release 不同步出现 GPG 验证错误,或者离线安装没有网络在安装时 apt 自动配置根据 CD/DVD 的数据配置等可能,建议了解 GPG
解决方法是添加上对应的签名即可,两种方法,都需要 wget 这个一般有自带,解决时的两种关于签名的文件 .asc
或 .gpg
直接使用 gpg 程序
确认 gpg 是否安装,没有就安装一下
sudo apt-get install gpg
得到 .gpg
文件,具体名字随便,建议有辨识度,比如阿里云记为 aliyun.gpg
# 根据对应档案库的 Release.gpg 文件下载
wget -qO- http://mirrors.aliyun.com/debian/dists/buster/Release.gpg?spm=a2c6h.25603864.0.0.25864a07v5Lsgz > aliyun.gpg
# 如果是 .asc 文件,使用 gpg --dearmor 转化
wget -qO- http://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
添加 .gpg
文件,两种方法
# 方法一:安装 /etc/apt/keyrings/ 目录
sudo install -D -o root -g root -m 644 aliyun.gpg /etc/apt/keyrings/aliyun.gpg
# 方法二:安装 /etc/apt/trusted.gpg.d/ 目录
sudo install -D -o root -g root -m 644 aliyun.gpg /etc/apt/trusted.gpg.d/aliyun.gpg
方法一需要改变 list 文件,在 deb/deb-src
和 url
之间添加一条信息 [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/aliyun.gpg]
# 这是 /etc/apt/sources.list.d/aliyun.list 文件,其中 ... 是简化的需要根据情况填写,参考默认的 /etc/apt/sources.list
deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/aliyun.gpg] http://mirrors.aliyun.com/debian ...
使用 apt 默认的 apt-key
使用非常方便,首先下载 .asc 或 .gpg 文件,然后使用 apt-key 安装
# 下载
wget http://archive.kali.org/archive-key.asc
wget -qO- http://mirrors.aliyun.com/debian/dists/buster/Release.gpg?spm=a2c6h.25603864.0.0.25864a07v5Lsgz > aliyun.gpg
# 安装
sudo apt-key archive-key.asc
sudo apt-key aliyun.gpg
Release.gpg 文件在每个档案库都有的,比如阿里的访问 http://mirrors.aliyun.com/debian/dists/buster 就可以看到,.asc
文件也差不多在档案库中但位置不定,不同档案库可能不同需要自己查,Debian 官方档案库 的 keys 仓库 地址
/etc/apt/sources.list 不要包含 testing 或 unstable
/etc/apt/sources.list 不要在标准的 Debian 中混合使用其它非 Debian 的档案库
第三方档案库放在 /etc/apt/sources.list.d 分类以 .list
后缀结尾的文件中
不要建立 /etc/apt/preferences
不了解会造成的全部影响,就不要通过配置文件改变软件包管理工具的默认行为
不要使用 dpkg -i random_package
或 dpkg --force-all -i random_package
安装任何软件包
不要删除或修改 /var/lib/dpkg/ 中的文件
不要让从源码直接安装的程序覆盖系统文件
没有在安全的条件下使用你特定的配置进行彻底地测试,就不要从 Debian 安装任何软件包
使用 non-free 和 contrib 中的软件包所需要冒的风险
Debian 系统通过其控制文件字段中的版本化二进制依赖声明机制
Conflicts, Replaces, Provides 定义到一个虚拟的软件包,确保了在任何一个时间只能安装一个提供该虚拟包的真正软件包
更新元数据: apt update, apt-get update, aptitude update
安装软件: apt install ..., apt-get install ..., aptitude install ...
升级软件: apt upgrade/full-upgrade, pt-get upgrade/dist-upgrade, aptitude safe-upgrade/full-upgrade
移除软件: apt remove ..., apt-get remove ..., aptitude remove ...
清除软件: apt purge ..., apt-get purge ..., aptitude purge ...
apt | aptitude | apt-get/apt-cache | 描述 |
---|---|---|---|
apt update | aptitude update | apt-get update | 更新软件包档案库元数据 |
apt install foo | aptitude install foo | apt-get install foo | 安装 foo 软件包的候选版本以及它的依赖 |
apt upgrade | aptitude safe-upgrade | apt-get upgrade | 安装已安装的软件包的候选版本并且不移除任何其它的软件包 |
apt full-upgrade | aptitude full-upgrade | apt-get dist-upgrade | 安装已安装的软件包的候选版本,并且需要的话会移除其它的软件包 |
apt remove foo | aptitude remove foo | apt-get remove foo | 移除 foo 软件包,但留下配置文件 |
apt autoremove | N/A | apt-get autoremove | 移除不再需要的自动安装的软件包 |
apt purge foo | aptitude purge foo | apt-get purge foo | 清除 foo 软件包的配置文件 |
apt clean | aptitude clean | apt-get clean | 完全清除本地仓库的软件包检索文件 |
apt autoclean | aptitude autoclean | apt-get autoclean | 清除本地仓库中过时软件包的软件包检索文件 |
apt show foo | aptitude show foo | apt-cache show foo | 显示 foo 软件包的详细信息 |
apt search regex | aptitude search regex | apt-cache search regex | 搜索匹配 regex 的软件包 |
N/A | aptitude why regex | N/A | 解释匹配 regex 的软件包必须被安装的原因 |
N/A | aptitude why-not regex | N/A | 解释匹配 regex 的软件包不必安装的原因 |
N/A | aptitude search '~i!~M' | apt-mark showmanual | 列出手动安装的软件包 |
注意:
关于 GNU/Linux 的内容
TCP粘包是怎么回事,如何处理?默认情况下,TCP连接会启⽤延迟传送算法(Nagle算法),在数据发送之前缓存他们.如果短时间有多个数据发送,会缓冲到⼀起作⼀次发送(缓冲⼤⼩⻅socket.bufferSize),这样可以减少IO消耗提⾼性能.如果是传输⽂件的话,那么根本不⽤处理粘包的问题,来⼀个包拼⼀个包就好了。但是如果是多条消息,或者是别的⽤途的数据那么就需要处理粘包.下面看⼀个例⼦,连续调⽤两次send分别发送两段数据data1和data2,在接收端有以下⼏种常⻅的情况:A.先接收到data1,然后接收到data2.B.先接收到data1的部分数据,然后接收到data1余下的部分以及data2的全部.C.先接收到了data1的全部数据和data2的部分数据,然后接收到了data2的余下的数据.D.⼀次性接收到了data1和data2的全部数据.其中的BCD就是我们常⻅的粘包的情况.⽽对于处理粘包的问题,常⻅的解决⽅案有:多次发送之前间隔⼀个等待时间:只需要等上⼀段时间再进⾏下⼀次send就好,适⽤于交互频率特别低的场景.缺点也很明显,对于⽐较频繁的场景⽽⾔传输效率实在太低,不过⼏
作者:暮角编辑:数据社全文共2845个字,建议5分钟阅读大家好,我是一哥,今天跟大家分享一下怎么理解建模方法和分层架构?分层架构很容易在各种书籍和文档中去理解,但是把建模方法和分层架构放在一起就会出现很多困惑了。接下来,我会从数据研发与建模的角度,演进一下分层架构的设计原因与层次的意义。01分层的演进之所以会有分层架构,最主要的原因还是要把复杂冗长的数据流程分拆成一些有明确目的意义的层次,这样复杂就被拆解为一些相对简单小的模块。那么分层架构中各层都是怎么产生的呢,我们可以简化看一下。第一个数据加工任务:我要进行第一个数据加工任务,一切平台层次都没有,我只有一个MaxCompute。我该怎么做呢?第一步,我需要自己做一下数据集成,把源系统的数据集成到MaxCompute。第二步,我需要把增量合并全量生成ODS层,这样我就得到了与业务系统一样的表结构和全量的数据。第三步,因为我对业务系统的数据表关联关系有了解,所以,我可以根据业务需求使用ODS的全量表做表关联,加工出我想要的数据结果。第一个数据应用: 如果我不只是做一个业务需求,我是有很多业务需求,这样我就形成了我的第一个数据应用。所以,
晓查发自凹非寺 量子位报道|公众号QbitAICVPR2021本周正式召开啦,作为计算机视觉领域最重要的学术会议,大会的最佳论文自然是领域学者们关注的重要风向标。就在上周,CVPR官方公布了入围的32篇最佳论文候选名单,其中华人一作占据了16篇,国内北大、腾讯、商汤等学校机构上榜。那么最终哪些论文摘得荣誉呢?今天凌晨,也就是大会首日,官方公布了结果:其中最佳论文奖和最佳学生论文奖1篇,最佳学生论文提名3篇,最佳论文提名2篇。在这7篇文章里,有4篇是华人一作,我们还看到了熟悉的大神何恺明的名字。7篇获奖论文最佳论文奖GIRAFFE:RepresentingScenesasCompositionalGenerativeNeuralFeatureFields这篇论文来自德国蒂宾根大学的两位学者。摘要:这篇文章提出,将复合三维场景表示纳入生成模型,会导致更可控的图像合成。将场景表示为复合生成神经特征场,能使我们能够从背景中解开一个或多个对象以及单个对象的形状和外观,同时从非结构化和非定位的图像集合中学习,而无需任何额外的监督。本文将这种场景表示与神经渲染pipeline相结合,可以生成快速逼真
选择“星标”,重磅干货,第一时间送达!复制复制概述Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。mysql支持的复制类型:基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。基于行的复制:把改变的内容复制过去,而不是把命
在做SEO的过程中,你一定会遇到这样的问题,我们会在不同行业中,扮演相同的角色:搜索引擎优化师,但如果对方并没有提供内容团队的话。我们偶尔需要自己去撰写大量的相关性内容,可是我们并不是万能机器,对于一些非专业领域的内容撰写,我们并不擅长。那么,从SEO的角度,如何打造非专业领域内容?根据以往SEO写作的经验,我们将通过如下内容阐述:1、问卷调查让我们从简单开始:对您的客户行业一无所知?在与他们开始电话会议之前,请先设置一份内容调查表,这将帮助您了解有关他们的业务以及他们希望您关注什么的基础知识,提出类似的问题:①您的业务陈述是什么?②客户面临的主要痛点是什么?③用五句话或更少的句子描述您公司的卖点。让我们面对现实吧:内容调查表很简单。2、问问题这听起来似乎很容易,甚至可能使您想打自己的脑袋,而实操的过程中却很难,但向客户提出正确的问题将帮助您为他们创建最佳的内容。请记住,您不是专家,这很正常,但是与专家(客户)会面以获取正确的信息也是您的工作。只需向他们解释:“因为您是专家,您可以在此博客文章中插入一些专业知识吗?”他们通常会乐于承担义务。并给出积极的建议。3、百度一下因为90%的时间
点击开启按钮,会提示选择需要展示的关注组件的公众号,这里以本站的官方微信为例子。在小程序中添加关注组件官方的WIKI很简单,如下所示:official-account 基础库2.3.0开始支持,低版本需做兼容处理。 用户扫码打开小程序时,开发者可在小程序内配置公众号关注组件,方便用户快捷关注公众号,可嵌套在原生组件内。复制Tips:使用组件前,需前往小程序后台,在“设置”->“接口设置”->“公众号关注组件”中设置要展示的公众号。注:设置的公众号需与小程序主体一致。 在一个小程序的生命周期内,只有从以下场景进入小程序,才具有展示引导关注公众号组件的能力: 当小程序从扫二维码场景(场景值1011)打开时 当小程序从扫小程序码场景(场景值1047)打开时 当小程序从聊天顶部场景(场景值1089)中的“最近使用”内打开时,若小程序之前未被销毁,则该组件保持上一次打开小程序时的状态 当从其他小程序返回小程序(场景值1038)时,若小程序之前未被销毁,则该组件保持上一次打开小程序时的状态 每个页面只能配置一个该组件。复制示例:<official-account><
1、原生JavaScript实现字符串长度截取functioncutstr(str,len){ vartemp; varicount=0; varpatrn=/[^\x00-\xff]/; varstrre=""; for(vari=0;i<str.length;i++){ if(icount<len-1){ temp=str.substr(i,1); if(patrn.exec(temp)==null){ icount=icount+1 }else{ icount=icount+2 } strre+=temp }else{ break } } returnstrre+"..." }复制 2、原生JavaScript获取域名主机functiongetHost(url){ varhost="null"; if(typeofurl=="undefined"||null==url){ url=window.location.href; } varregex=/^\w+\:\/\/([^\/]*).*/
前言这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL业务优化与设计”中的MySQL数据类型相关笔记。所有笔记可能不定期更新,发布时不一定为最终版。正文索引查询优化什么是索引索引的意义-快速定位要查找的数据二分查找法B+tree创建及索引单列索引createindexidx_test1ontb_student(name);联合索引createindexidx_test2ontb_student(name,age);索引中现根据name排序,name相同的情况下,根据age排序索引维护索引维护有数据库自动完成插入/修改/删除每一个索引行都编程一个内部封装的事务索引越多,事务越长,代价越高索引越多对标的插入和索引字段修改就越慢。控制表上的索引数量!切忌胡乱添加无用索引如何使用索引依据where查询条件创建索引selecta,bfromtab_awherec-?idx_c(c)selecta,bfromtab_awherec=?andd=?idx_cd(c,d)排序ORDERBY,GROUPBY,DISTINCT字段添加索引select*f
建议阅读时间:5~10分钟 0前言感谢粉丝:疯琴,以下分享是疯琴在学习《Python神经网络》时的笔记,总结得很棒,感谢疯琴的乐于分享精神,相信这篇笔记一定会帮助到大家。1基本概念神经网络也是机器学习的一种实现,可以应用在有监督学习和无监督学习,因为中间可以有较多层,所以属于深度学习方法。神经网络的名字很唬人,其实概念挺朴素的,是由含一个输入层,一个输出层和若干隐藏层构成的有向无环图(这名字也唬人),看图像一目了然。为啥叫隐藏层呢,就是因为和输入输出没关系,看不见,有点儿神秘。每层的每个结点借助生物的概念称为神经元,各层之间神经元相互链接。2神经网络训练过程算法训练包含两个阶段:输入向输出传送叫前向馈送信号;输出向输入传送叫反向误差传播。把输入前馈计算得到输出,把输出与目标值比对,计算误差,把误差反向传播修正链接权重。具体过程:输入层与隐藏层之间的链接权重”与“输入信号”加权求和,“和值”通过神经元函数(比如,阶跃函数,Relu函数,Sigmoid函数等)运算得到隐藏层的结果。用与第一步相同的过程计算出输出层的结果。目标值-输出值=误差。将误差按权重反向传播给隐藏层。用梯度下降法最小化
编码问题在Python中一直是个巨坑。关于Python2的编码问题,之前写过一篇文章:浅谈Python2中的编码问题在Python3中,编码问题得到了改进,str类型直接使用unicode进行存储,不带有编码。但真的就一劳永逸了吗?事实上,虽然填上了一些坑,但也会带来新的坑。尤其结合Windows使用,那酸爽……真是谁用谁知道?。Crossin编程教室的WooDumpling同学在学习中做了一点总结,分享Python3的学习者。相关概念 bytesunicodestr encodedecodebytes相当于Python2中的str类型,从网页上抓取下来的数据流也是该类型的 在Python3中,要得到一个byte类型的变量,可以在字符串内容前面加入b得到,但前提是该字符串的内容是可以完全由ascii码表示的,否则会出现语法错误>>>s1="你好" >>>s1 '你好' >>>type(s1) <class'str'> >>>s2=b'
本文介绍jenkinsX(以下简称jx)相关的背景技术。 jenkinsX简介 JenkinsX是一个高度集成化的CI/CD平台,基于Jenkins和Kubernetes实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发、运行和部署过程。 jx基于gitops,将k8s分为preview、staging、production几个环境, 详细的devops可以查看下图: jx是云原生CICD,devops的一个最佳实践之一,目前在快速的发展成熟中。最近调研了JX,准备写一个jx实践系列,这里为第一篇,介绍jx用到的一些相关组件,作为了解jx的背景知识。 jenkinspipeline jx使用JenkinsPipeline来执行CI流程,JenkinsPipeline是jenkins的一套插件,支持将连续输送Pipeline实施和整合到Jenkins。Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline。 Jenkinsfilepipeline使用Groovy脚本来定义CI流程,来看一个jx
最近在构建一个typescript项目时如下代码在项目框架里vscode报错元素隐式具有"any"类型,因为类型“Shared”没有索引签名;很有意思的是当我们单独的把这段代码里单独写一个a.ts,则vscode不会报错;在搜索网上资料及自己尝试后,找到了几个有意思的解决方法。 classShared{map:any;get(key:string){returnthis['map'][key];}set(key:string,value:any){this['map'][key]=value;}privateroot=__dirname;}复制方法二思考单独的.ts和typescript框架在vscode层的差异,想想只有launch.json和tsconfig.json,一个个属性过去后,发现是tsconfig.json配置项"noImplicitAny":true, 导致的.解释:noImplicitAny:true/false;为false时,如果编译器无法根据变量的使用来判断类型时,将用any类型代替。为true时,进行强类型检查,会报错,很显然
前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 听说过大数据的同学应该都听说过Storm吧?其实我现在负责的系统用的就是Storm,在最开始接手系统的时候,我是完全不了解Storm的(现在其实也是一知半解而已) 由于最近在整理系统,所以顺便花了点时间入门了一下Storm(前几天花了点时间改了一下,上线以后一堆Bug,于是就果断回滚了。) 这篇文章来讲讲简单Storm的简单使用,没有复杂的东西。看完这篇文章,等到接手Storm的代码的时候你们**『大概』『应该』**能看懂Storm的代码。 什么是Storm 我们首先进官方看一下Storm的介绍: ApacheStormisafreeandopensourcedistributedrealtimecomputationsystem Storm是一个分布式的实时计算系统。 分布式:我在之前已经写过挺多的分布式的系统了,比如Kafka/HDFS/Elasticsearch等等。现在看到分布式这个词,三歪第一反应就是「它的存储或者
SocktServer.cpp #include"stdafx.h" #pragmacomment(lib,"ws2_32.lib") #include<Winsock2.h> int_tmain(intargc,_TCHAR*argv[]) { WORDwVersionRequested; WSADATAwsaData; interr; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0){ return0; } if(LOBYTE(wsaData.wVersion)!=1|| HIBYTE(wsaData.wVersion)!=1){ WSACleanup(); return0; } SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_INaddrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin
目录时间复杂度常用数据结构操作与算法的复杂度输入规模较小时的情况引用 博客:blog.shinelee.me|博客园|CSDN 时间复杂度 如何评估一个算法的计算时间? 一个算法的实际运行时间很难评估,当时的输入、CPU主频、内存、数据传输速度、是否有其他程序在抢占资源等等,这些因素都会影响算法的实际运行时间。为了公平地对比不同算法的效率,需要脱离开这些物理条件,抽象出一个数学描述。在所有这些因素中,问题的规模往往是决定算法时间的最主要因素。因此,定义算法的时间复杂度\(T(n)\),用来描述算法的执行时间随着输入规模的增长将如何变化,增长速度是怎样的。 在输入规模较小时,运行时间本来就少,不同算法的差异不大。所以,时间复杂度通常关注的是输入规模\(n\)较大时运行时间的变化趋势,称之为渐进复杂度,采用大O记号,表示渐进上界,对于任意的\(n>>2\),若有常数\(c\)和函数\(f(n)\)满足 \[T(n)\leqc\cdotf(n) \]则记作 \[T(n)=O(f(n)) \]可以简单地认为,\(O(f(n))\)表示运行时间与\(f(n)\)成正比,比如\(O(n
花了两周的时间,我终于做完实训了。 这次用的全是新学的技术,前端框架是angular,组件库是ngzorro的,后端是springboot,数据库是mysql。这次被逼着学习新东西,总算是凑凑合合把这些技术学会了。 先说前端的angular框架,现在我学会了基本的建component,设置路由和其他一些框架的特效,如果以后要用却忘记了,可以去angular官网看英雄教程。 再看后端,spring的框架在今年暑假的时候我就被要求学,可是我初看一头雾水,又没有实际使用的需求,我就一直拖着没学。这次总算学习了一波。 为了让后端能够与数据库连接,先配置resources文件夹中的application.properties文件,如下: server.port=8080 #Hibernate相关配置 ##方言 #hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect ##显示S
一、什么是多态 “多态”是JAVA的一种重要特性,可以理解为事物存在的多种形态。 不过,这只是字面上来理解,等于废话。那么究竟何为多种形态呢,接下来,举一个现实生活中的例子。 比如,动物里有猫和狗。猫摆在面前,你可说它是猫,也可以说它是动物。 说它是猫时,用JAVA语句表示即 猫x=new猫; 说它是动物时,用JAVA语句表示即 动物x=new猫; 这样,实体x即具备猫的类型,也具备动物类型。但必须一个前提,即“猫”必须是“动物”中的一种,如果“狗x=new猫”就不对了。 通过以上的例子,我们可以看出,实体除了具备本类类型,还可以具备其它类型。这种是“多态”。 先看以下代码,这是使用非多态方式编写的 代码如下: packagecom.duotai; publicclassDuoTaiDemo{ publicstaticvoidmain(String[]args){ myFun(newCat()); myFun(newDog()); myFun(newPig()); } //动物“吃”的功能提取出来封装成函数 publicstaticvoidm
一、活动内容:艺术活动——《喜羊羊和灰太狼》(音游) 二、活动目标: 1.能听辨音乐中的长音和停顿,控制好手部动作,跟随音乐玩游戏。 2.能遵守游戏规则,体验游戏的紧张感,享受与同伴两两合作游戏的快乐。 三、活动准备: 1.物质准备:音乐《喜羊羊和灰太狼》 2.资源利用:事先教会一名幼儿与教师协同玩游戏。 四、活动过程: (一)以故事导入活动,引发幼儿的兴趣。 引导语:有一天,喜羊羊出去玩,走着走着,突然看到灰太狼迎面跑来。喜羊羊吓坏了,不由自主地大叫一声“咩——”。灰太狼被吓了一跳,仔细一看,说:“哦,是喜羊羊啊,我的美味午餐!”说完,灰太狼扑向喜羊羊,喜羊羊转身就跑。一个在前面跑,一个在后面追。喜羊羊到底有没有被灰太狼追上?我们一起来听听音乐。 (二)组织幼儿安静倾听音乐《喜羊羊和灰太狼》。 教师在音乐中长音的地方用手指点数,引导幼儿发现并记忆音乐中灰太狼共追了喜羊羊基础,前三次和第四次的音乐有什么不同。 (三)听音乐扮演喜羊羊和灰太狼。 1.情节一:喜羊羊和灰太狼出门。启发幼儿自编能表现喜羊羊和灰太狼走路的动作,跟随音乐节奏原地做走路动作。 2.情节二:喜羊羊和灰太狼