您的 Mac 是否突然无故重启?您外出回来时,突然发现您的 Mac 正在神秘地关闭并重新启动,这非常令人生气。如果重新启动问题变得更加严重,您的 MacBook可能根本无法使用。小编将为您带来循环重启问题的常见原因,以及您应该如何解决这些问题。MacOS 未更新有时,错过的MacOS 更新或更新问题可能会导致 Mac 设置和更新过程出现问题。这会使您的 Mac 感到困惑,并可能导致重复重启。
解决这些问题的最简单方法是安装 与您的 Mac 兼容的所有可用更新。如果您的更新滞后,您可能需要重新启动几次——没关系!只是您的 Mac 按顺序完成所有重要的软件更改。
如果您因为 Mac 太旧而无法安装最新的 MacOS 软件,那么您应该考虑升级以获得更好的性能和稳定性。
您的软件错误导致有时,您安装的应用程序可能会导致问题。该代码发出操作系统和/或底层硬件不期望的请求,迫使 MacOS 重新启动并解决冲突。
这称为“内核恐慌”,它会在重新启动时显示一条消息,指出“您的计算机因问题而重新启动。” 内核恐慌并不总是意味着您的 Mac 出现了不可挽回的错误,但这确实意味着您可能需要进行更改。如果最近的软件导致了问题,则尤其如此。
首先,查看弹出消息,看看是否有更多信息按钮。这并不总是告诉普通用户太多,但有时报告会显示导致问题的软件的名称,以便您知道在哪里查看。
手动更新任何第三方软件,因为有时这就是解决问题所需的全部内容。如果这不起作用,请尝试删除最近的第三方软件并重新启动。如果删除软件解决了问题,那么在开发人员更新之前避免下载该特定应用程序。从好的方面来说,删除不需要的软件是加快 Mac 速度的好方法。
您的外围设备导致故障内核崩溃的另一个常见原因是附件或外围设备无法正常工作。它可能会在启动时立即或在启动 Mac 后几分钟内导致内核崩溃。
幸运的是,这是一个很容易诊断的问题。只需移除连接到 Mac 的所有物品,包括鼠标、键盘、驱动器等。如果您可以成功重启并且您的 Mac 继续正常运行,那么您就知道其中一个外围设备可能有问题。一个接一个地重新连接每个外围设备,直到您发现重犯。
您的设置需要重置有时,您的 Mac 本身没有任何问题,但最近的更改会导致启动时出现问题,从而引发内核恐慌。发生这种情况时,您的 Mac 可能会在加载时尝试重新启动。它甚至可能不允许您访问登录屏幕以外的任何内容。
您通常可以通过重置 Mac 硬件设置来解决此问题。这将恢复您所做的任何更改,例如屏幕或电池行为。但是,它也可以解决您的问题。
首先,重置您的 NVRAM 或 PRAM。最简单的方法是在 Mac 重新打开时同时按下Option + Command + P + R键。按住这些键约 20 秒。
其次,重置您的系统管理控制器或 SMC。根据您的 Mac 型号,有几种不同的方法可以执行此操作,因此请查看每种情况的具体说明。
如果这些重置解决了您的问题,那么您的 Mac 应该可以正常使用了。
苹果今日向开发人员发布了macOS Big Sur 11.5 RC (20G71) 候选版本,该版本离上次 macOS Big Sur 11.5 RC(20G70)候选版本发布有一周的时间。▪macOS Big Sur 11.5 RC 2 候选版本没有新的更新内容,与上一个 RC 版本相同。该版本对播客应用程序进行了更新,允许“播客库”选项卡显示所有节目或仅显示关注的节目。该版本还解决了可能导致音乐无法更新库中的播放次数和上次播放日期的问题,以及导致智能卡在 M1 Mac 电脑上无法使用的错误。
▪用户可通过“系统偏好设置”中的“软件更新”下载最新版本。
PMP®和软考同时考怎么样?
PMP是美国项目管理协会发起的项目管理专业人士资格认证。PMP认证是国际通用证书,含金量比较高。在计算机信息技术相关的工程领域,PMP的热度很高。软考是计算机软件技术资格水平考试,软考中的高级资格有信息系统项目管理师,也是计算机项目管理从业者考取的。那么有朋友问:PMP和软考同时考取怎么样?下面我们给大家介绍一下。
首先我们给大家介绍PMP与信息系统项目管理师的区别。
1. PMP是项目管理资格认证,信息系统项目管理师是信息系统项目管理师职业证书;
2. 项目管理资格认证是不分行业的,学习的内容都是专业的项目管理知识。在其他行业的项目管理中也可以使用。信息系统项目管理师是计算机软件和相近行业的项目管理知识,仅能在单一领域使用;
3. PMP的官方管理单位是美国项目管理协会;信息系统项目管理师有我国人力资源和社会保障部以及工业和信息化部颁发;
4. PMP证书考试一年有四场,每个季度一次;信息系统项目管理师一年有两场。
5. PMP的考试题型为200道单选题;信息系统项目管理师有客观题(单选题)和主管题以及论述题;
6. PMP的通过率在国内达到92%以上;信息系统项目管理师须要同时通过所有科目,通过率比较低;
7. PMP的考试条件有一定的学历和项目管理经验要求,软考没有条件限制;
以上就是为大家介绍的PMP与信息系统项目管理师的基本区别。如果想要同时备考两个证书,也需要在备考上面多下功夫。光环有PMP和软考套餐培训,如果想要同时考的话,是可以的。
文章目录 Kafka1.Kafka是什么?2.Kafka的使用场景3.Kafka的基本概念4.Kafka的基本操作5.Kafka配置文件server.properties核心配置详解:6.单播消息与多播消息,消费多个主题6.1 单播消息6.2 多播消息6.3 消费多个主题 7.Topic 和消息日志Log8.总结 Kafka 1.Kafka是什么? Kafka 是一个分布式、支持分区(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统。最大的特点就是可以实时处理大量的数据以满足各种需求场景。
2.Kafka的使用场景 消息系统:生产者和消费者解耦,缓存消息。日志收集:公司可以用Kafka收集各种服务的log,通过Kafka以统一接口服务的方式开发给各种consumer,例如hadoop,Hbase,Solr等。用户活动跟踪::Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这
些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到
hadoop、数据仓库中做离线分析和挖掘。运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反
馈,比如报警和报告。 3.Kafka的基本概念 名称解释Broker消息中间件处理节点,一个kafka节点就是一个broker,一个或者多个broker 可以组成一个kafka集群,需要注意的是kafka集群并不是以broder来做单位,就是说多个broder可能会在同时的工作,不分主备TopicKafka 根据topic 对消息进行归类,发布到Kafka 集群的每条消息都需要制定一个topic,是一个抽象的概念。Producer消息生产者,向Broder 发送消息的客户端Consumer消息消费者,从Broder 读取消息的客户端ConsumerGroup每个Consumer属于一个特定的Consumer Group,一条消息可以被多个不同的ConsumerGroup消费,但是一个ConsumerGroup中只能有一个Consumer能够消费该消息Partition物理上的概念,一个topic可以分为多个partition,默认是一个,每个partition内部消息是有序的 因此,从一个较高的层面上来看,producer通过网络发送消息到Kafka集群,然后consumer来进行消费。
服务端(Brokers)和客户端(producer,consumer)之间通信通过TCP协议来完成。
4.Kafka的基本操作 此处下载步骤省略了。
启动服务
首先第一步启动zookeeper,然后在启动kafka。
bin/zookeeper-server-start.sh config/zookeeper.properties // 此处启动zookeeper,因为kafka是基于zookeeper的 bin/kafka-server-start.sh config/server.properties // 在启动kafka,后面的参数是配置文件 创建一个topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test // --zookeeper localhost:2181 是用于连接zookeeper用到的。 // --replication-factor 1 是副本,后续会讲 // --partitions 1 是分区。一个topic可以对应多个分区。 // --topic test 是我们主题的名称。 生产消息(Producer)
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test This is a message This is another message // --broker-list 是用于连接kafka的服务。 // --topic 是表示往哪个topic发送消息 消费消息(Consumer)
最近在完成web端在线绘图功能时,需要开发一个从左侧拖拽一种图标到画布中。调研了非常多种现在做拖拽布局的组件,调研的地址是:https://vuejsexamples.com/tag/drag/
经过比较,选择了一款优秀的可拖拽框架,vue-grid-layout。
npm安装
npm install vue-grid-layout --save 使用demo
<grid-layout :layout.sync="layout" :col-num="12" :row-height="30" :is-draggable="true" :is-resizable="true" :is-mirrored="false" :vertical-compact="true" :margin="[10, 10]" :use-css-transforms="true" > <grid-item v-for="item in layout" :x="item.x" :y="item.y" :w="item.w" :h="item.h" :i="item.i" :key="item.i"> {{item.i}} </grid-item> </grid-layout> layout: [ {"x":0,"y":0,"w":2,"h":2,"i":"0"}, {"x":2,"y":0,"w":2,"h":4,"i":"1"}, {"x":4,"y":0,"w":2,"h":5,"i":"2"}, {"x":6,"y":0,"w":2,"h":3,"i":"3"}, ], 参数说明
layout: 选择组件的列表,Array类型。数组中的每个项目必须有i,x,y,w和h属性。
responsiveLayouts: 响应式布局,非必须。
colNum:指明画布中一共多少列,默认为12列。
rowHeight: 一行所占的高度,单位为像素。
maxRows:最大的行数,默认为无限。
margin:项目的空白值,默认为[10, 10]。
isDraggable: 是否可拖拽。
isResizable: 是否可以变换尺寸。
isMirrored:默认从左到右排序,开启以后从右到左。
autoSize: 根据组件里的内容,自适应高度。
verticalCompact: 垂直方向上是否受影响,如果关闭的话,组件可以有空缺。
preventCollision: 避免碰撞,默认为false。
useCssTransforms
responsive
breakpoints
cols: 总的列数。
useStyleCursor:未知。
griditem的参数 i: 每个组件的唯一id,这个参数是必须的。
Pyecharts Geo在地图上添加坐标点 添加坐标点输入坐标点将坐标点添加入系列并配置系列加一点点小细节给图片美化一下让坐标点不显示value调整图例位置,向右靠拢改变图例选中与非选中时候的颜色色系 在上一篇文章已经实现了创建一个中国地区的地图 创建地图: https://blog.csdn.net/weixin_41955254/article/details/118896870?spm=1001.2014.3001.5502 这篇文章将介绍怎么在地图上添加坐标点 添加坐标点 输入坐标点 想要给图片输入坐标点,我们必须知道坐标点是由哪几个属性组成的
属性名属性值格式坐标点名称字符型(具有唯一性)坐标点经度10进制数字坐标点维度10进制数字 提供一个好用的网站可以批量将度分秒转换成10进制的网站
https://www.opengps.cn/Map/Tools/GPSConvert.aspx
名称确定坐标点的唯一性,经纬度确定位置
在了解清楚之后我们可以用Geo的内置函数add_coordinate添加坐标点
def add_coordinate( # 坐标地点名称 name: str, # 经度 longitude: Numeric, # 纬度 latitude: Numeric, ) 具体代码如下
#g是上篇文章创建的地图,默认已经配置好了,大家可以到上一篇文章里粘贴一下最后的代码再使用 g.add_coordinate("第一个坐标点",114.9175,36.3622222) g.add_coordinate("第二个坐标点",121.7825,31.1705555) #添加两个坐标点是为了方便后面 将坐标点添加入系列并配置系列 但是当大家运行程序后会发现地图上并没有多什么东西,因为这里添加的是坐标点,我们并没有给坐标点添加一个系列也没有给坐标点附加图形样式,所以在地图上并不会显示,但这两个点确确实实添加了上去
不慌,因为这样我们可以对这些点进行分类,还能让不同类的坐标点以不同的形式展现
def add( # 系列名称,用于 tooltip 的显示,legend 的图例筛选。 series_name: str, # 数据项 (坐标点名称,坐标点值) data_pair: Sequence, # Geo 图类型,有 scatter, effectScatter, heatmap, lines 4 种,建议使用 # from pyecharts.globals import GeoType # GeoType.GeoType.EFFECT_SCATTER,GeoType.HEATMAP,GeoType.LINES type_: str = "
关注+星标公众号,不错过精彩内容
编排 | strongerHuang
微信公众号 | 嵌入式专栏
示波器的原理简单来说就是一个ADC转换,然后根据采集的不同电压在屏幕上显示出来。
今天就是说说示波器采样率到底是怎么回事。
举例描述采样率
1.存储深度
想象一下一张照片要怎么样才能清晰?当然是像素点越多,照片包含的原始信息就越接近真实,自然看起来也就越清晰。
我们从示波器上看到的波形其实也可以理解成一张照片,那么这张照片包含的点越多,自然也就越接近真实的样子。
示波器的存储深度就是表达了示波器最多能存储多少个数据点。比如28Mpts的存储深度,说明示波器最多可以存储两千八百万个采样点。
对于拍摄一张静止的照片,照相机拍照时间的快慢关系并不大,因为结果并不会改变。
2.采样率
但是由于信号是不断变化的,因此对示波器而言更像是在不停拍摄运动的照片,并且是超高速的运动,这个时候除了采样点数量以外,采样点采集的速度也就至关重要了。
示波器重建一个信号不仅仅取决于有多少个数据点,采集数据点的速度也很关键。示波器的采样率就是示波器每秒能采集多少个数据点的能力。如果示波器的采样率不足,那么我们就无法准确地看到信号的真实样子。
输入示波器的信号在时间轴和电压轴上也都是连续变化的,由于计算机只能处理离散的数字信号,像这样的信号是无法用数字的方法进行描述和处理,因此还需要用高速ADC对信号进行采样和量化,也就是数字化的过程。经过模数转换(ADC)后,在时间和电压上连续变化的波形就变为一个个连续变化的数字化的采样点。
在进行采样或者进行数字量化的过程中,如果要尽可能真实地重建波形,最关键的问题就是在时间轴上的采样点是否足够密集以及在垂直方向的电压的量化级数。水平方向采样点的间隔取决于示波器的ADC的采样率,而垂直方向的电压量化级数则取决于ADC的位数。
示波器的运作过程
示波器的运作过程大概是这样的:
我们通过探头给示波器输入一个信号,被测信号经过示波器前端的放大/衰减等信号调理电路后,然后高速ADC模数转换器进行信号采样和数字量化,示波器的采样率就是对输入信号进行模数转换时采样时钟的频率,通俗的讲就是采样间隔,每个采样间隔采集一个采样点。
比如1GSa/s的采样率,代表示波器具备每秒钟采集10亿个采样点的能力,此时其采样间隔就是1纳秒。
对于实时示波器来说,目前普遍采用的是实时采样方式。所谓实时采样,就是对被测的波形信号进行等间隔的一次连续的高速采样,然后根据这些连续采样的样点重构或恢复波形。在实时采样过程中,很关键的一点是要保证示波器的采样率要比被测信号的变化快很多。
那么究竟要快多少呢?可以参考数字信号处理中的奈奎斯特(Nyquist)定律。Nyquist定律说, 如果被测信号带宽是有限的,那么在对信号进行采样和量化时,如果采样率是被测信号带宽的2倍以上,就可以完全重建或恢复出信号中承载的信息而不会产生混叠。
如下图就是采样率不足导致的信号混叠,可以看到采集到的信号和原始信号相比,频率变小了很多。
多种采样模式
大多数示波器会提供几种采样模式供用户选择,常见的有正常采样、平均采样、峰值采样和包络采样。
正常采样模式下,示波器按相等的时间间隔对信号采样以重建波形。此模式可对大部分波形产生最佳显示效果。
在峰值采样模式中,当水平时基设置较低时,将保留最小采样值和最大采样值,以捕获罕见事件和窄事件(在扩大任何噪声的前提下)。该模式将显示至少与采样周期一样宽的所有脉冲。峰值采样模式可用于更方便地查看毛刺或窄脉冲。在峰值采样模式中,窄毛刺和跳变沿比“正常”采样模式中显示得更亮,使它们更容易被看到。应用峰值采样方式可以避免信号的混淆,但也会显示更多的实际噪声。
使用平均采样模式可平均多个采集结果,以减少所显示信号中的随机或无关噪声。平均多个采样结果需要稳定的触发。平均的数目可在平均采样模式后的选择框内进行设定,平均数目越高,显示的波形对波形变化的响应就越慢。必须在波形对变化的响应速度与信号上所显示噪声的降低程度之间进行折衷。
使用包络采样模式可以看到数次采样到的波形的叠加效果,在指定的N个采样数据中捕获一个信号的最大值和最小值,可设置波形叠加次数,如下图为一个包络采样模式下波形叠加次数为32的调幅信号。
无论选择了哪种采样方式,都要记住保证采样率至少是被测信号带宽的2倍以上,事实上我们更建议是3-5倍以上,这样更容易捕获的波形的异常信息。
最后一件事值得注意的是,示波器的采样率同示波器的带宽不同,当你打开多通道的时候,采样率会被每个通道平均分配。因此如果你打开了多个通道,一定要再次确认下采样率是否依然满足条件。
来源地址:
https://zhuanlan.zhihu.com/p/195535528
免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
------------ END ------------
后台回复『科普知识』『单片机』阅读更多相关文章。
欢迎关注我的公众号,回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
欢迎关注我的视频号:
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。
参考链接
1. YARN的资源调度 YARN是对应用进行资源分配,应用是指applicatoin master,用来处理job的YARN的应用进程。
(1)MapReduce采用的模型是一个用户作业对应一个应用。
(2)Spark采用的是作业的每个工作流或每个用户的对话对应一个应用。效率比第一种高。
(3)多个用户共享一个长期运行的应用。
2. FIFO调度器(FIFO Scheduler) Hadoop最初设计时的调度器,为单队列调度器,无法充分利用硬件资源。先进先出队列,先为第一个应用请求资源,第一个满足后再依次为队列下一个提供服务,不适合共享集群。
3. 容器调度器(Capacity Scheduler) Capacity Schedulere是Yahoo!开发的多用户调度器,它以队列为单位划分资源,每个队列可设定一定比例的资源最低保证和使用上限,同时,每个用户也可设定一定的资源使用上限以防止资源滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。总之,Capacity Scheduler主要有以下几个特点:
容量保证。管理员可为每个队列设置资源最低保证和资源使用上限,而所有提交到该队列的应用程序共享这些资源。灵活性。如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列释放的资源会归还给该队列。相比于HOD调度器,这种资源灵活分配的方式可明显提高资源利用率。多重租赁。支持多用户共享集群和多应用程序同时运行。为防止单个应用程序、用户或者队列独占集群中的资源,管理员可为之增加多重约束(比如单个应用程序同时运行的任务数等)。接口安全保证。每个队列有严格的ACL列表规定它的访问用户,每个用户可指定哪些用户允许查看自己应用程序的运行状态或者控制应用程序(比如杀死应用程序)。此外,管理员可指定队列管理员和集群系统管理员。动态更新配置文件。管理员可根据需要动态修改各种配置参数,以实现在线集群管理。 容器调度器允许多个组织共享整个hadoop集群,每个组织被配置一个专门的队列,每个队列分配整个集群资源的一部分,队列内部采用FIFO队列。
队列中作业太多导致资源不够用,容量调度可能会将空余的资源分配给队列中的作业。这叫“弹性队列”。但是,容量调度器不会强队列释放资源,当一个队列资源不够时,必须等其他队列资源释放后,才能获取资源,可以为队列设置一个最大资源使用量,以免占用太多的资源,导致其他队列不能使用空闲资,这就是弹性队列需要权衡的地方。
4. 公平调度器(Fair Scheduler) Fair Scheduler是Facebook开发的多用户调度器,同Capacity Scheduler类似,它以队列为单位划分资源,每个队列可设定一定比例的资源最低保证和使用上限,同时,每个用户也可设定一定的资源使用上限以防止资源滥用;当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。当然,Fair Scheduler也存在很多与Capacity Scheduler不同之处,这主要体现在以下几个方面:
资源公平共享。在每个队列中,Fair Scheduler 可选择按照FIFO、Fair或DRF策略为应用程序分配资源。其中,Fair策略是一种基于最大最小公平算法9实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源;如果三个应用程序同时运行,则每个应用程序可得到1/3的资源。
支持资源抢占。当某个队列中有剩余资源时,调度器会将这些资源共享给其他队列,而当该队列中有新的应用程序提交时,调度器要为它回收资源。为了尽可能降低不必要的计算浪费,调度器采用了先等待再强制回收的策略,即如果等待一段时间后尚有未归还的资源,则会进行资源抢占:从那些超额使用资源的队列中杀死一部分任务,进而释放资源。
负载均衡。Fair Scheduler提供了一个基于任务数目的负载均衡机制,该机制尽可能将系统中的任务均匀分配到各个节点上。此外,用户也可以根据自己的需要设计负载均衡机制。
口调度策略配置灵活。Fair Scheduler允许管理员为每个队列单独设置调度策略(当前支持FIFO、Fair或DRF三种)。
提高小应用程序响应时间。由于采用了最大最小公平算法,小作业可以快速获取资源并运行完成。
强调多用户公平地使用资源,并且会动态调整应用程序的资源分配。比如:当一个大job提交时,只有这一个job在运行时,此时这个应用将获得所有的集群资源;当第二个job提交时,公平调度器会从第一个job资源中分配一半给第二个job,可能会存在延时,因为要等待第一个job的资源释放。
公平调度器将应用程序支持以队列的方式组织,队列之间公平地共享资源。
如图所示,每个用户的资源各占一半,每个用户队列内部资源再分配。
5. 调度器的选择 对并发度要求比较高的场景,CPU比较大,选择公平调度器,一般为大公司。
对并发度要求不高,选择容器调度器,一般为中小型企业。
重装系统后c盘文件会不会消失?C盘会被清理吗?电脑重装系统是很常见的一件事,C盘是操作系统所在位置,重装系统是针对C盘进行的操作。那么重装系统C盘东西还在不在?绝大多数重装系统方法都会格式化C盘,也就是说C盘文件都被清理了,但是还是有一些方法会保留C盘文件,并不会清空C盘文件,下面系统城小编就跟大家简要介绍下。
相关教程:
相关说明:
1、重装系统方法有很多,有硬盘安装、在线安装、U盘安装、光盘安装等4种方法
2、安装ghost系统是肯定会格式化C盘,即使你之前没有手动格式化,安装过程也会对磁盘进行格式化
3、原版系统硬盘解压安装,不借助其他工具,是不会格式化c盘的,此时旧系统文件会保留在C盘
4、原版系统升级过程也不会格式化C盘,比如win7通过原版镜像升级win10,旧系统文件同样会保留
5、虽然下面的方法不会删除C盘文件,但是小编不敢保证你不会手滑,所以建议不管用什么方法来重装系统,都要备份C盘(包括桌面)所有重要文件
重装系统C盘文件还在的安装方法有三种:
1、硬盘解压安装原版系统,这种方法会保留旧系统文件,在windows.old里面,详细图文:硬盘直接安装原版win7系统步骤
2、硬盘解压升级原版系统,比如win7升级win10,是无损升级,原来文件都完好无损,详细图文:win7/win8.1怎么用镜像升级win10系统
3、装双系统的情况,C盘原系统,D盘装第二个系统,此时C盘不受影响,C盘文件都是原封不动的,但是D盘会被格式化,详细图文:win7系统下安装win10双系统方法
重装系统C盘文件会消失,因为大多数重装系统过程会格式化C盘,但是上面的几种方法会保留C盘的文件,大家可以了解下。
-- Process 6 terminated with the following error: Traceback (most recent call last): File "/media/home/intern/anaconda3/envs/torch17/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 19, in _wrap fn(i, *args) File "/media/home/intern/anaconda3/envs/torch17/lib/python3.7/site-packages/detectron2/engine/launch.py", line 108, in _distributed_worker raise e File "/media/home/intern/anaconda3/envs/torch17/lib/python3.7/site-packages/detectron2/engine/launch.py", line 103, in _distributed_worker timeout=timeout, File "/media/home/intern/anaconda3/envs/torch17/lib/python3.7/site-packages/torch/distributed/distributed_c10d.py", line 455, in init_process_group barrier() File "/media/home/intern/anaconda3/envs/torch17/lib/python3.7/site-packages/torch/distributed/distributed_c10d.py", line 1960, in barrier work = _default_pg.barrier() RuntimeError: NCCL error in: /pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:784, invalid usage, NCCL version 2.7.8 代码中要求用8张GPU运行,而机器只有两张卡。
所以把代码设置为两张卡运行。
原标题:软考高级职称在事业单位可以聘用吗
很多考生报名软考高级考试是为了评职称,职称分不同的级别,那么软考高级能不能评副高职称呢?
软考高级是不是副高职称?对于软考与职称的关系很多考生还不太清楚,大部分人都知道软考与职称有关,但是却不清楚两者之间到底是怎样的一种关系。希盛泰鼎盛小编就来跟大家说说软考高级与副高职称的关系。
软考高级是副高职称吗?
有了软考证书是可以申请评职称的,因为有了软考证书就有了评职称的资格,但是软考高级并不代表就是副高职称,职称是需要评聘的,而评职称需要具备相应的资格,有了软考证书则有了评职称的资格,所在单位可以根据工作需要从获得证书的人员中择优聘任相应专业技术职务。
软考高级能不能评副高职称?
考取了软考高级资格证书可以评副高级职称,如果所在单位有相应的空余专业技术职务,自身符合对应的要求,就可以进行申请。需要注意的是,并不是所有单位都可以评职称,职称一般是在国企或者事业单位等企业才能进行评聘,而一些私人单位一般是没有的,现在很多想要评职称的考生通常是在国企或者事业单位上班。
所以,如果现在在国企或者事业单位上班,或者以后想要考进这些单位,想要评高级职称,就可以报名软考高级资格考试,考取软考高级资格证书。取得软考高级资格可聘任高级工程师职务,也就是我们常说的高级职称,当所在单位有空余的相应专业技术职务的时候,自身符合相应的要求,就可以申请评聘。返回搜狐,查看更多
责任编辑:
点击NavicationBar的时候,上角有个+-的按钮,就会出现最后的选择按钮。 Main menu里面的Navication
step 1:生成镜像文件
编译quartus工程得到sof文件,build nios工程得到elf文件;
step 2:利用镜像文件生成hex文件
原理为,将sof文件转为hw.flash文件,将elf文件转为sw.flash文件;将sw.flash文件粘贴到hw.flash后,合成一个hw_sw.flash文件;将hw_sw.flash文件转换为hw_sw.hex文件;
辅以小工具的操作方法为,
打开工具,点击“文件”,分别选择sof和elf文件,然后点击“开始转换”;此时工具所在的文件夹中生成了make_hex.sh文件;打开nios ii command shell,进入make_hex.sh所在的目录,运行make_hex.sh命令,生成hw_sw.hex文件。如下图所示:
step 3:将hex文件转换为jic文件
如上图,打开QII>File>Convert Programming Files,选择要转换的文件类型,选JIC,选择要配置的器件类型,点击flash loader添加相应FPGA器件,点击Add hex data选绝对地址Absolute address加载hex文件,把SOF Data给Remove掉,然后点Generate到相应路径拿到生成的jic;
BTW:此方法还可以生成dat文件,用以摆脱jtag线而下载到flash中,下载功能需要自行开发。使用工具操作如下图:
打开文件选择step2中生成的hex文件,然后点击“开始转换”,选择dat文件的名称和路径,即可。
引言 1. 什么是神经网络2. 神经网络的监督学习3. 为什么深度学习会兴起 1. 什么是神经网络 我们从一个房价预测的例子开始讲起。
假设你有一个数据集,它包含了六栋房子的信息。所以,你知道房屋的面积是多少平方英尺或者平方米,并且知道房屋价格。这时,你想要拟合一个根据房屋面积预测房价的函数。如下图所示。
我们知道价格永远不会是负数的。所以我们应用一个新的函数来拟合这组数据。该函数从趋近于零开始,然后变成一条直线。这个函数被称作ReLU激活函数,它的全称是Rectified Linear Unit。
而下面的这一部分,我们就可以将其是做神经网络的一个基本单元。
接着将问题进一步引申——站在购买者的立场之上,基于房屋面积和卧室数量,可以估算家庭人口;基于邮编,可以估测步行化程度;基于邮编和所在地的富裕程度,可以估计学校的教学质量质量等等。
在图上每一个画的小圆圈都可以是ReLU的一部分,也就是指修正线性单元,或者其它稍微非线性的函数。
但是,神经网络的一部分神奇之处在于,当你实现它之后,你要做的只是输入,就能得到输出。因为它可以自己计算你训练集中样本的数目以及所有的中间过程。
这就是一个基础的神经网络。你可能发现你自己的神经网络在监督学习的环境下是如此的有效和强大,也就是说你只要尝试输入一个x,即可把它映射成y,好像我们在刚才房价预测的例子中看到的效果,神经网络非常擅长计算从到的精准映射函数。
2. 神经网络的监督学习 关于神经网络也有很多的种类,考虑到它们的使用效果,有些使用起来恰到好处,但事实表明,到目前几乎所有由神经网络创造的经济价值,本质上都离不开监督学习。
分类(classification)这种机器学习算法就是一种监督学习。对于分类,输入的训练数据有特征(feature),有标签(label)。也就是我们前面文章中的输入x和输出y。每一个x样本都对应着一个y(输出)标签。所谓的学习,其本质就是找到特征和标签间的关系(mapping),也就是找规律。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据标签,即根据新数据进行预测。
例如广告预测,这可能是最有利可图的人工智能应用了,它也许不是最鼓舞人心的,但肯定是非常有利可图的,通过输入一些关于用户的信息x,神经网络就能预测你是否会点击某个广告(给出输出y来指示某个广告),所以当你看到你朋友,或男朋友,或女朋友手机电脑上面都是些购物广告时,你基本上可以断定TA是喜欢购物的,并且你能观察出TA近期的“购物取向”。
另外再补充些知识点。神经网络除了按监督学习和非监督学习来分类外,还按结构来分类。不同结构的神经网络被用于不同的应用程序中。
例如,在之前看到的房价预测应用中,我们使用的是标准的神经网络结构(SNN,Standard Neural Network),广告预测也是一个相对标准的神经网络。对于图像应用程序,我们经常使用卷积神经网络(CNN,Convolutional Neural Network)。对于序列数据应用程序一般使用递归神经网络(RNN,Recurrent Neural Network)(例如音频就属于序列数据,是随着时间一段一段表述的,例如英语、汉语都是随着时间一个字一个单词来表述的)。对于更复杂的应用,比如自动驾驶,里面有图像所以需要CNN卷积神经网络,而雷达信息则需要其它类型的神经网络,这就导致了混合的神经网络架构。
下图中分别给出了各种不同神经网络的结构图。依次是,标准神经网络SNN, 卷积神经网络CNN,递归神经网络RNN。
除此之外,在机器学习中将数据分为结构化数据和非结构化数据。结构化数据,意味着每个特征,如房子的大小,卧室的数量或用户的年龄,是具有非常明确的含义的,结构化数据主要表示数据库数据。相比之下,非结构化数据指的是音频,图像。这里的特征可能是图像中的像素值或文本中的单个单词,没有明确的含义。
3. 为什么深度学习会兴起 根据图像可以发现,如果你把一个传统机器学习算法的性能画出来,作为数据量的一个函数,你可能得到一个弯曲的线,就像图中这样,它的性能一开始在增加更多数据时会上升,但是一段变化后它的性能就会像一个平原一样。
因为它们不知道如何处理规模巨大的数据,并且在过去十年的社会里,我们遇到的很多问题只有相对较少的数据量。
由于数字化社会的来临,现在的数据量都非常巨大,我们也相较容易获取更多的数据,远超过机器学习算法能够高效发挥它们优势的规模。
神经网络展现出的是,如果你训练一个小型的神经网络,那么这个性能可能会像下图黄色曲线表示那样;如果你训练一个稍微大一点的神经网络,比如说一个中等规模的神经网络(下图蓝色曲线),它在某些数据上面的性能也会更好一些;如果你训练一个非常大的神经网络,它就会变成下图绿色曲线那样,并且保持变得越来越好。
因此可以注意到两点:如果你想要获得较高的性能体现,那么你有两个条件要完成,第一个是你需要训练一个规模足够大的神经网络,以发挥数据规模量巨大的优点,另外你需要很多的数据。
在大数据的规模下,算法驱动深度学习的进程。
平台概述 GB/T28181即《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由公安部科技信息化局提出,公安部一所等多家单位共同起草的一部安防监控领域的国家标准。该标准规定了安防监控系统中信息传输、交换、控制的协议细节和实现要求,解决了监控设备的远程接入、管理、视频调取和平台间互联的问题。该标准于2012年6月1日正式发布实施,在全国范围内的平安城市项目建设中被普遍推广应用。GB/T28181-2011标准自发布以来,受到了各大视频监控厂商的积极响应,云视睿博是较早进行协议研究和适配开发的科技企业之一。
GB28181平台是依照GB28181协议实现的软硬件平台,通常包括信令服务器和视频服务器(流媒体服务器)。信令服务器实现平台与监控设备(摄像头、NVR、云台等)之间的控制指令交换,包括设备注册、设备配置管理、云台控制、视频播放控制等指令,双方会话采用的是SIP协议。视频服务器实现监控视频流的接收和转发,即接收监控设备发送的视频流,然后进行转发,业务平台预览监控视频,就是从视频服务器上调取转发的视频。监控设备向视频服务器发送视频流采用的是RTP协议,下层可以通过UDP或TCP协议传输。
有的平台会进行更细致的功能分解,如包括终端设备管理系统等。云视睿博GB28181平台是一个规范、成熟、稳定的监控接入平台,包含信令服务器、流媒体服务器等子系统,流媒体服务器中包含了对终端设备的管理和视频流预览、转发功能,该平台适合安防、消防、城建、交通、农业等行业领域进行远程监控视频的接入、管理和集成。
平台优势 在GB28181协议出现之前,要想从外网远程访问局域网内的监控设备是一个比较繁琐的工作,通常要采用网络映射的方式将设备映射出来,或者为设备配置独立的IP地址才能访问,配置起来比较麻烦,稳定性和可操作性也无法保障。GB28181协议推出以后,远程、跨网访问监控设备变得非常容易,将GB28181平台部署到外网后,监控设备只要注册到服务器上,就可以被远程访问、管理和调取视频。当前,主流的监控厂商都已经支持GB28181协议,大部分2016年以后出厂的设备都可以接入28181平台,但也有少数例外,在选用监控设备时可以通过设备参数来查看是否支持。
下图以云视睿博GB28181监控平台为例,展示了GB28181平台和监控设备的组网方式。图中的GB28181平台包括信令服务器和流媒体服务器两个组成部分,用于远程接入监控摄像头和NVR设备,实现对监控视频的远程调取和管理。接入流媒体服务器的监控视频,通过多种协议进行分发,用于视频预览和集成到其他业务系统中。
除了通用的信令交换和视频接入功能,该平台还具有如下特点:
1、视频远程接入和调取
摄像头和NVR不需要有外网IP,可以直接通过GB28181协议连接到外网平台上,不需要任何中转和代理。
2、短延迟、秒开流畅 远程调取摄像头视频,延迟在1秒以内,视频秒开,流畅不卡顿。
3、转发和集成
接入的监控视频可以通过RTMP、RTP、HLS、HTTP等多种协议进行转发,方便预览和集成。
4、视频录制和回看 自动录制监控视频,按时间点进行查询和回看,录像保留时长可以自定义。
5、高性能、大并发 一台设备可以接入数百个摄像头,并提供上千并发观看。可以进行集群部署,支撑更大数量的接入和观看。
在Costmap_2d里面插入Prohibition_layer(禁止区域层)
简介
costmap_2d在navigaition里面是一个很重要的板块,通常默认的是三层地图(静态/障碍/膨胀层)叠加在一起,构成整个完整的代价地图,但是我们也可以插入一些自定义的图层,然后实现自己定制化的功能,基础的教程大家可以参考costmap_2d中插入自定义层。本文的主要目的是来告诉大家如何在代价地图中插入Prohibition_layer(禁止层),然后在已经建好的地图中设立禁止通行区域,关于prohibition_layer具体的作用大家可以参照roswiki上的解释。
具体实现步骤
1 代码下载与编译
之前我们学习插入simple_layer的时候是在自己的工作空间(catkin_ws)中建立一个pakage,然后再去自己创建.cpp文件和.h头文件,再去改cmakelist,添加.xml文件,在这个教程中我们不需要这么麻烦,我们可以直接在github上把prohibition_layer的包下载下来(源码下载地址戳这里).,解压后放在自己的工作空间中的 src 文件夹里面,然后在终端输入:
$ cd catkin_ws("catkin_ws"替换成你的工作空间名称)
$ catkin_make
编译完成以后在终端中输入:
rospack plugins --attrib=plugin costmap_2d
当你发现终端中输出:
这就表明prohibition_layer已经是一个可供使用的地图插件了. 2 在代价地图中插入prohibition_layer
完成步骤1后说明prohibition_layer已经可以供costmap使用了,现在我们要做的就是把prohibition_layer插入到costmap中去.
我们在自己的代价地图参数配置文件夹中找到 global_costmap_params.yaml 和 local_costmap_params.yaml ,打开这两个文档,分别在两个文档的末尾做修改,修改后应该是下面的内容:
plugins:
- {name: static_map, type: "costmap_2d::StaticLayer"}
- {name: obstacles, type: "costmap_2d::VoxelLayer"}
- {name: costmap_prohibition_layer, type: "costmap_prohibition_layer_namespace::CostmapProhibitionLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"}
3 修改launch文件
完成插入地图后我们还需要修改自己的launch文件,我是在自己的move_base.launch 中插入的,这个大家根据自己的需求,你用的carlike就修改carlike的launch文件.打开自己的launch文件中插入如下内容:
<rosparam file="$(find turtlebot3_navigation)/param/prohibition_areas.yaml" command="load" ns="global_costmap/costmap_prohibition_layer" />
<rosparam file="$(find turtlebot3_navigation)/param/prohibition_areas.yaml" command="load" ns="local_costmap/costmap_prohibition_layer" />
1
2
其中的"turtlebot3_navigation"需要根据自己的情况修改,你打开自己的launch文件对照上下文就知道怎么更改了.
在Windows中,可以通过添加打印机向导来添加新的打印机,该打印机可以是连接在本地计算机中,也可以是连接在局域网或Intemet中。使用添加打印机向导可以方便地帮助用户安装合适的打印机。下面学习啦小编给大家介绍一下word添加本地打印机的方法,有需要的朋友可以来看看哦。
添加本地打印机的步骤如下:
步骤一:依次选择“开始”—“控制面板”—“打印机”,双击“添加打印机”图标,打开“添加打印机”窗口,如图1所示:
图1
步骤二:图中有“添加本地打印机”和“添加网络、无线或 Bluetooth 打印机”,如果打印机是连在自己的电脑上,则选择“添加本地打印机”;如果打印机是连在局域网中某一台电脑,则选择“添加网络、无线或 Bluetooth 打印机”。
步骤三:以添加本地打印机为例,选择它之后出现“选择打印机端口”窗口,如图2所示:
图2
步骤四:选择一种打印机的端口,如果没有就要选择“创建新端口”。一般 LPT1 连电脑的都是25针的,COM 连电脑的都是9针的(类似金手指)。
步骤五:打印机通常使用 LPT1 端口,也就是默认的,直接单击“下一步”,显示“安装打印机驱动程序”窗口,如图3所示:
图3
步骤六:左边是打印机的生产厂商,右边是型号;查看自己打印机的厂商和型号,然后选择,比如选择 HP(厂商)和 hp business inkjet 1200(型号),单击“下一步”开始安装驱动程序,如果之前已经安装,则不会重复安装。
步骤七:由于我之前安装了驱动程序,所以显示“选择要使用的驱动程序版本”窗口,如图4所示:
图4
步骤八:保持默认,单击“下一步”,显示“键入打印机名称”窗口,如图5所示:
图5
步骤九:可以保持默认名称,也可以另外输入一个新的名称,如果勾选“设置为默认打印机”,则所添加的打印机会成为默认打印机。
步骤十:单击“下一步”,显示“打印共享”窗口,如图6所示:
图6
步骤十一:若共享,保持默认值;若不共享,选择“不共享这台打印机”。单击“下一步”,显示“完成”窗口,想测试,可以单击“打印测试页”测试,最后单击“完成”,添加成功。
看了“在word中如何添加本地打印机”此文的人还看了:
“百年大计,教育为本”,教育对于家庭和国家而言都非常重要,而随着社会的发展和技术的进步,教育也不仅仅是简单的粉笔黑板或多媒体教室,还使用了更加先进的虚拟仿真教学系统。
所谓虚拟仿真系统是指,以计算机的方式将教学中不易呈现的教学内容、实操实验等,通过三维立体模型的方式更直观地展示。学生通过该系统可以更加深入的了解教学知识,同时也可进行模拟实操,从而有更好的实操效果和教学体验。尤其是解决培训与演练中“三高”(高危险、高成本、高污染)与“四难”(难看到、难动作、难进入、难再现)问题。国家大力发展虚拟仿真教学也是因为其直观的视听触觉等多种体验,对于学生和培训有更加直接的效果。无论是中小学教学还是职业教育、高等教育或者各种具有职业培训的企业,都在尽可能的建设自己的虚拟仿真系统。
从技术角度来说,目前虚拟仿真教学课件,一般都是基于Unity、UE4等游戏引擎进行建模。最早的方式,通常是直接将课件的exe程序发送给学生安装,或者在专门的教室中使用专门的电脑提前安装好,学生通过电脑直接打开。但这类课件体积比较大,对电脑的GPU和运行计算能力有较高要求,这种方式也不方便,因为电脑兼容性的问题,在安装中可能会出现各种问题。因此,为了让用户更方便的观看,网页的方式会简单很多,学生通过手机、电脑,打开网址就能操作体验。在当前,虚拟仿真教学的网页化技术,主要有两种方式:最早大部分采用WebGL的技术方案;以及近几年兴起的云流化/云渲染的技术方案。
Web模式的三维仿真,虽然是网页化观看了。但对于电脑硬件参数要求还是有一定的要求,这和该项技术本身的特点有关。
WebGL是Web Graphics Library的缩写,它是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样就可以借助电脑系统显卡来在浏览器里更流畅地展示3D场景和模型了。 WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。简单来说webgl是网页上的3D绘图标准,从其技术特点可以看出,其渲染和场景模型的展示需要借助电脑硬件本身的显卡,并且将需要的内容下载到电脑本地完成操作指令。因此对电脑性能有一定的要求是其技术特点决定的,这对于用户在使用中来说,体现是打开运用了这种技术的虚拟仿真教学系统,加载时间比较长(需要所有内容都下载到本地),而且如果电脑硬件参数不够的话,会出现卡顿或者渲染时间长等问题。对于内容提供者来说,webgl需要把内容下载到用户本地,内容被盗用、破解、非法传输的风险会增加。
而随着计算机技术的发展,以及5G的普及,近几年,云流化(也称为:云渲染、像素流等)技术也在虚拟仿真部署中得到了越来越多的应用。简单来说云流化或者像素流技术是指将Unity3D、UE4等制作好的exe,直接跑在云端(云端或者局域网服务器均可)运行,画面实时传输到用户的网页浏览器端,浏览器以类似观看视频的方式呈现内容,鼠标键盘的操作指令实时控制云端的EXE,实现类似远程桌面(但比远程桌面更流畅,比如点量云流化或者腾讯云游戏等技术,可将延迟控制在几十毫秒)的效果。这种方案解决了WebGL必须下载内容到本地,以及加载时间长的问题。而且还支持在手机、电脑等终端打开仿真程序,兼容性和通用性更好一些。通过下图表格可以有更直观的对比,更多关于云流化在虚拟仿真教学中的应用欢迎随时交流。
技术方案
WebGL
云流化
本地安装EXE
否
否
打开方式
网页
网页
加载时间
长
短
内容下载
是
否
支持终端
电脑和部分手机
电脑+手机+电视大屏等
内容安全性
低
高
硬件参数要求
高
能看视频即可
参考:https://github.com/fuqiuai/sklearn-feature-engineering from sklearn.feature_selection import SelectFromModel from sklearn.linear_model import LogisticRegression from sklearn.feature_selection import RFE from sklearn.feature_selection import chi2 from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import VarianceThreshold from sklearn.preprocessing import FunctionTransformer from numpy import log1p from sklearn.preprocessing import PolynomialFeatures from sklearn.impute import SimpleImputer as Imputer from numpy import vstack, array, nan from sklearn.preprocessing import OneHotEncoder from sklearn.preprocessing import Binarizer from sklearn.preprocessing import Normalizer from sklearn.preprocessing import MinMaxScaler from sklearn.preprocessing import StandardScaler from sklearn.
Pyecharts.Geo创建中国可视化地图 安装需要的模块安装pyecharts安装中国地图库 绘制出地图第一步:导入中国地图第二步:进阶教学(干货满满!!!) Pyecharts做出来的图u1s1,挺好看的 ,而且配置起来真的方便。
安装需要的模块 安装pyecharts 我使用的IDE是PyCharm2021
安装模块有两种方法
方法一: 在PyCharm-Terminal中输入pip指令并回车
$ pip install pyecharts 方法二: 在PyCharm-File-Settings-Project-Package-+号
搜索pyecharts选择版本1.9.0(目前最新版本)下载
安装中国地图库 同样的方法安装
$ pip install echarts-countries-pypkg $ pip install echarts-china-provinces-pypkg $ pip install echarts-china-cities-pypkg $ pip install echarts-china-counties-pypkg $ pip install echarts-china-misc-pypkg $ pip install echarts-united-kingdom-pypkg 绘制出地图 第一步:导入中国地图 这一步其实很简单,从pyecharts.charts里面导入Geo,然后确定地区区域
from pyecharts.charts import Geo g = (Geo().add_schema(maptype="china")) g.render()#会在你py文件同目录下生成一个html文件,也可在括号内输入保存路径,用浏览器打开html文件可以查看 能生成一个空白的中国地图
第二步:进阶教学(干货满满!!!) 大家需要个性化制作表格的时候
肯定希望能更改地图的各种属性,比如给地图换颜色、添加主副标题,或者添加超链接等等
这个时候不得不向大家介绍pyecharts.option这个模块的强大
在花费了3天3夜看完了pyecharts官网里面的描述后
了解到必须通过设置全局配置项和系列配置项来更改地图的属性
class Geo( # 初始化配置项,参考 `global_options.InitOpts` init_opts: opts.InitOpts = opts.
原标题:5本超火的诸天万界流小说,剧情高能,值得细细品味
第一本:《诸天仙武》作者:亘古孤寂2
龙蛇阳神,大唐双龙,破碎虚空,覆雨翻云,诛仙蜀山,完美遮天,雪中悍刀,风云霹雳,天子神兵,仙剑西游,洪荒封神,仙逆求魔,永生莽荒,吞噬星空……一切因神秘的诸天宝鉴开始。上一世凡人之躯,老迈垂死;这一生定要问鼎巅峰,长生不死!试问苍天,可有永恒?穿梭于诸天,行遍在万界,寻觅那永恒之道!
第二本:《浪迹在诸天》作者:巴下客
末法时代,历经无量量劫,修炼纪元即将终结,最后的气运结合遁去的一演化至宝诸天棋盘,被末法时代最后一个修行之人得到,开启了一段浪迹诸天的传奇。
第三本:《从封神开始的诸天之旅》作者:冬日之阳
封神世界,仙神妖魔纵横。大劫降临,避无可避。
风云执掌大千神镜,遨游混沌万界。凝聚气数,积攒实力,逆天改命。凤鸣岐山,终不敌人道真龙。从封神世界开始的诸天神话。
第四本:《星临诸天》作者:暗狱领主
凭借来自星海深处的神秘战舰,拥有穿梭时空能力的平凡主角,谨小慎微、默默经营,构建起横跨现世与诸天的庞大帝国。
第五本:《我以妖格担保》作者:公天下
开局一条蛇,进化全靠吃,迟早有一天,俺要变成十凶大真龙。无限流诸天万界:九州大陆,白蛇缘起,风语咒,狐妖小红娘,斗气大陆,宝莲灯前传,遮天,大主宰,完美世界,后续待定。
小说介绍完了,喜欢记得点赞收藏!欢迎大家分享评论留言点赞,感谢大家的阅读我们下期见!返回搜狐,查看更多
责任编辑:
文章目录 anaconda navigator使用命令行创建踩坑点CondaHTTPError: HTTP 000 CONNECTION FAILED for urlconda activate py364 失败 anaconda navigator使用 anaconda提供了一个可视化GUI来管理anaconda环境(可用来管理python等工具版本)和虚拟环境Environments(主要用来管理pip包)。
anaconda的默认环境名为base。
命令行创建 使用以下命令创建新环境:
conda create -n env_name list of packages 其中
-n 代表 name,env_name 是需要创建的环境名称,例如-n python364list of packages 则是列出在新环境中需要安装的工具包,例如python=3.6 例如,现在,我的anaconda默认的python是3.8版本,但是我想安装一个python 3.6的环境,则命令行运行:
conda create -n py364 python=3.6.4 踩坑点 CondaHTTPError: HTTP 000 CONNECTION FAILED for url 解决方法
在Anaconda Prompt 中使用该命令。 更换anaconda源 win打开C:\Users\用户名\.condarc,linux则找到~/.condarc,修改内容如下:
channels: - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ - http://mirrors.ustc.edu.cn/anaconda/pkgs/main/ - http://mirrors.ustc.edu.cn/anaconda/pkgs/free/ - http://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ ssl_verify: true show_channel_urls: true conda activate py364 失败 解决方法:
文章目录 Redis常见问题1. 缓存雪崩2. 缓存穿透3. 缓存击穿4. 缓存一致性问题4.1 先删除缓存,再操作数据库,等下次再来查询的时候,写入到缓存中。4.2 先更新数据库再删除缓存,等下次再来查询的时候,写入到缓存中。4.3 基于阿里巴巴的开源canal框架,实现redis数据一致性。 5. 布隆过滤器(Bloom filter) Redis常见问题 redis通常是被做为缓存来使用的,既然做为缓存来使用,就可能会出现缓存雪崩,缓存击穿,缓存穿透,数据一致性等问题。
1. 缓存雪崩 缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机,终究还是数据库发生的问题。
这个在我们编码的时候就应该考虑到。
解决方案:
针对缓存区设置随机过期时间,可以范围性的随机。比如说 ,当前缓存过期时间24小时,我们可以在23到24小时设置个随机值。防止同时时间大量数据过期现象发生。根据业务来设置过期时间,尽量不要在业务最大情况并发情况让数据过期。比如说抢购,是在一个点发生的,这个点的时候,不要让大量的数据过期。 2. 缓存穿透 缓存击穿是指缓存在数据库中都没有数据,而用户不断发送请求,由于缓存是不命中时被动写的,并且处于容错考虑,正常从存储层差不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。
在流量大,可能DB就挂掉了,或者说有人估计攻击系统。
解决办法:
接口层增加校验,针对查询的值,数据库中大概率是有一个范围的,比如ID,ID基本上是不会小于0的,这样我们在接口层就可以拦截了。从缓存取不到数据,在数据库中也没有找到,这时可以将key-value 写成key-null 。缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没办使用)。这样就可以防止攻击用户反复用一个id暴力攻击。 3. 缓存击穿 缓存击穿指的是,某一个数据在某一时刻失效(一般是过期时间到了),这时由于并发用户特别多,同时读取缓存没读取到数据,又同时去数据库取数据,引起数据库压力瞬间增大,造成过大压力。
解决方案:
布隆过滤器。bloomFilter类似于一个hash set,用于快速判断某个元素是否在于集合中,其典型的应用场景就是快速判断一个key是否在于某个容器中。不存在就直接返回。布隆过滤器的关键就在于hash算法和容器大小。针对redis数据的过期时间进行优化接口限流与熔断,降级。重要的接口一定要做好限流策略,防止用户恶意刷接口,同时要降级准备,当接口中的某些服务不可以用的时候,进行熔断,失败快速返回机制。给查询接口加一个分布式互斥锁。保护数据库。 4. 缓存一致性问题 如何去保证mysql的数据和redis的数据保证一致性?
4.1 先删除缓存,再操作数据库,等下次再来查询的时候,写入到缓存中。 当更改操作来的时候,先去删除缓存,再去更新数据库,等下次再来查询的时候,再写入缓存。
当然存在缓存被删除了,数据库的信息还没有更改完成,数据会出现问题。
解决方案:
如果都是单机系统,针对数据库操作加一个读写锁。如果是分布式缓存,针对数据库的操作加一个分布式锁。 4.2 先更新数据库再删除缓存,等下次再来查询的时候,写入到缓存中。 当更改操作来的时候,先去更新数据库,再去更新缓存。
存在数据更新完,但是还没来得及刷新缓存,数据依然会出现问题。
解决方案:
单机系统, 通过CAS 算法,针对查询的操作加一个标识,如果查询过程中发现标识是有人修改数据库了,就直接去数据库中查询。等修改数据库的改完并且回写到缓存中,再次对标识符进行修改。分布式缓存,在redis中设置一个表示符号,同以上的操作。 4.3 基于阿里巴巴的开源canal框架,实现redis数据一致性。 后续进行研究。
5. 布隆过滤器(Bloom filter) Bloom filter 是一种空间效率很高的随机数据结构,它利用位数组很简洁的表示了一个集合,并能判断一个元素是否属于这个集合。判断的时候会有误差。
空间效率高的概率型数据结构,用来检查一个元素是否在一个集合中。对于一个元素检测是否存在的调用,BloomFilter会告诉调用者两个结果之一:可能存在或者一定不存在。 原理分析:
初始状态下,布隆过滤器是一个包含M为的位数组,每一位置为0。
插入数据:
当我们需要把数据插入到布隆过滤器中的时候,会通过多个hash算法,进行计算。每一个hash算法都会计算出一个hash值,然后将数据中索引对应的下标的值改为1。
检查数据:
如果数据不都为1,说明数据一定不存在。如果数据全部为1,说明数据可能存在,因为采用hash算法,此数据对应的位置可能被其他字符串所记录过。 Delete操作:
第一次java编程 文章目录 第一次java编程一、输出二、三种输入方式 一、输出 1、创立一个文本文档并修改文件名为first.java/注意删去原来的后缀.txt
2、输入以下代码
public class first{ public static void main(String[] args){ System.out.println("hello!Java!"); } } 3、使用javac命令将source code 编译为bytecode(可以被jvm识别的字节码)
若无报错,即编译成功。
可以看到原目录下出现一个first.class文件(里面存的是编译过后的bytecode)
使用命令java first即可将hello!Java!打印在控制台上,好耶!
二、三种输入方式 1、console输入
代码如下:
import java.util.Scanner; public class first { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int num1,num2; num1= sc.nextInt(); num2= sc.nextInt(); System.out.println("The final result is:"+(num1+num2)); } } 输入后运行结果:
2、文件输入
首先将源码稍作改动:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class first { public static void main(String[] args) throws FileNotFoundException { Scanner sc=new Scanner(new FileInputStream("
PHP使用GRPC 前言下载Protoc编写proto文件代码实现准备服务端服务实现客户端请求实现 前言 在上节已经介绍了GRPC,不了解GRPC的可以先看下。
本文将讲述PHP如何使用GRPC
下载Protoc 上节讲了GPRC使用协议缓冲区,需要使用protoc特殊的 gRPC 插件从您的 proto 文件生成代码。
点击 下载地址 选择对应的平台。
我本机是windows10 x64,对应的下载链接
将下载的压缩包解压,bin文件路径加入到系统环境变量Path中
打开命令行运行
protoc --version 查看protoc版本是否运行成功
编写proto文件 万事开头say hello,下面写一个helloworld.proto。proto3语言指南
// Copyright 2015 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "
python 解析数据,error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x87 in position 10: invalid continuation byte
在和vs的程序交互时,python去读取vs写的文件,报错。
vs用的unicode字符集
解决方法,在vs写数据的时候,把unicode转换成utf-8就ok了
int Unicode2Utf8(wchar_t *unicode, char* utf8, int nBuffSize) { if (!unicode || !wcslen(unicode)) { return 0; } int len; len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL); if (len > nBuffSize) { return 0; } WideCharToMultiByte(CP_UTF8, 0, unicode, -1, utf8, len, NULL,NULL); return len; } int WideCharToMultiByte(
UINT CodePage, //指定执行转换的代码页,一般ANSI和UTF-8
文章目录 一、同步和异步通讯1. 同步通讯2. 异步通讯 二、RabbitMQ1. MessageQueue对比2. RabbitMQ快速入门【1】安装与启动【2】基本结构3. 五种消息模型介绍【1】入门案例1)publisher实现2)consumer实现 4. SpringAMQP实现【1】Basic Queue 基本消息队列1)消息发送2)消息接收3)测试 【2】WorkQueue工作消息队列1)消息发送2)消息接收3)测试4)prefetch提前获取 【3】发布订阅三种模式1)Fanout[1] 声明队列和交换机[2] 消息发送[3] 消息接收总结 2)Direct[1] 基于注解声明队列和交换机[2] 消息发送总结 3)Topic1)消息发送2)消息接收总结 【4】消息转换器1)测试默认转换器2)配置JSON转换器 一、同步和异步通讯 微服务间通讯有同步和异步两种方式:
同步通讯:就像打电话,需要实时响应。
异步通讯:就像发邮件,不需要马上回复。
两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。
1. 同步通讯 我们之前学习的Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题:
同步调用的优点:
时效性较强,可以立即得到结果 同步调用的问题:
耦合度高性能和吞吐能力下降有额外的资源消耗有级联失败问题 2. 异步通讯 异步调用则可以避免上述问题:
我们以购买商品为例,用户支付后需要调用订单服务完成订单状态修改,调用物流服务,从仓库分配响应的库存并准备发货。
在事件模式中,支付服务是事件发布者(publisher),在支付完成后只需要发布一个支付成功的事件(event),事件中带上订单id。
订单服务和物流服务是事件订阅者(Consumer),订阅支付成功的事件,监听到事件后完成自己业务即可。
为了解除事件发布者与订阅者之间的耦合,两者并不是直接通信,而是有一个中间人(Broker)。发布者发布事件到Broker,不关心谁来订阅事件。订阅者从Broker订阅事件,不关心谁发来的消息。
Broker 是一个像数据总线一样的东西,所有的服务要接收数据和发送数据都发到这个总线上,这个总线就像协议一样,让服务间的通讯变得标准和可控。
好处:
吞吐量提升:无需等待订阅者处理完成,响应更快速
故障隔离:服务没有直接调用,不存在级联失败问题
调用间没有阻塞,不会造成无效的资源占用
耦合度极低,每个服务都可以灵活插拔,可替换
流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件
缺点:
架构复杂了,业务没有明显的流程线,不好管理需要依赖于Broker的可靠、安全、性能 二、RabbitMQ 1. MessageQueue对比 MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。
比较常见的MQ实现:
RabbitMQActiveMQRocketMQKafka公司/社区RabbitApache阿里Apache开发语言ErlangJavaJavaScala&Java协议支持AMQP,XMPP,SMTP,STOMPOpenWire,STOMP,REST,XMPP,AMQP自定义协议自定义协议可用性高一般高高单机吞吐量一般差高非常高消息延迟微秒级毫秒级毫秒级毫秒以内消息可靠性高一般高一般 追求可用性:Kafka、 RocketMQ 、RabbitMQ
追求可靠性:RabbitMQ、RocketMQ
追求吞吐能力:RocketMQ、Kafka
追求消息低延迟:RabbitMQ、Kafka
2. RabbitMQ快速入门 【1】安装与启动 在liunx环境下安装
在线拉取: docker pull rabbitmq:3.
目录
一、前言
二、硬件部分
(一)、L298N芯片部分介绍
(二)、L298N接线
三、软件部分 四、手机端设置
五、总结
(一)、问题总结
一、前言 献给大家看看这次的效果图
这次小车是在上一次蓝牙小车的基础上增加了调速功能,希望能帮助大家学习51小车。
二、硬件部分 (一)、L298N芯片部分介绍 1.主电源正极接12v,主电源负极接GND。
2.先将5V的跳线帽短接,这样不用额外通过5V输入端外加电源在给单片机供电,可直接有5V输入端连接导线直接给单片机供电,如不将跳线帽短接,则5V输入端输出的电压为12V,连接单片机会导致单片机烧毁(作者亲自体验过...)。
3.A相使能,B相使能是对输入1.2.3.4的控制,如果使能A和使能B加上跳线帽的话,则只需要通过控制输入1.2(一个电机),3.4(另外一个电机)分别给两个电机的两端0和1实现正反转,都给0或者都给1则电机不会转,如果使能A和使能B不加上跳线帽的话,当AB为低电平时,输入1.2.3.4都不会工作,所以可以通过控制使能A和使能B的开和关的周期来控制产生PWM波。
(二)、L298N接线 1.将5V跳线帽短接,由此可以通过5V输入给单片机供电
2.将使能A和使能B的跳线帽取下,将输入1.2.3.4连接IO口的P10,P11,P12,P13口,将使能端AB的与输入端1.2.3.4并列的接口连接到单片机的P26和P27接口
3.OUT1.2.3.4端口和蓝牙连接可以看我的《蓝牙小车》的文章
4.本次使用到的端口在程序中会标明出来
三、软件部分 代码有多个文件,不想一个一个复制的同学可以在本文末尾下载这个工程
main.c
#include <REGX52.H> #include "UART.h" #include "Timer0.h" #include "Nixie.h" #include "Delay.h" sbit IN1 = P1^0; // 左上 sbit IN2 = P1^1; // 左下 sbit IN3 = P1^2; // 右上 sbit IN4 = P1^3; // 右上 sbit ENA = P2^6; //使能A sbit ENB = P2^7; //使能B unsigned char PWM; //PWM波 static unsigned char speed = 100; //设置速度初始值 void stop() // 停 { IN1=0; IN2=0; IN3=0; IN4=0; } void forward() // 向前 { IN1=1; IN2=0; IN3=1; IN4=0; } void back() // 向后 { IN1=0; IN2=1; IN3=0; IN4=1; } void left() // 向左 { IN1=1; IN2=0; IN3=1; IN4=1; } void right() // 向右 { IN1=1; IN2=1; IN3=1; IN4=0; } void increase(void)//加速 { speed += 5; // 每次增加5 if(speed >= 100) // 上限是100 { speed = 100; } } void reduce(void)//减速 { speed -= 5; // 每次减少5 if(speed <= 25) // 下限是25 { speed = 25; } } //串口中断 void Time_Int () interrupt 4 { unsigned char date; if(RI == 1) // RI为1时软件置0 { RI = 0; // 清除接受标志 date = SBUF; // 接收数据缓存在date中 switch (date) { case ('1'): { forward(); break; } case ('2'): { back(); break; } case ('3'): { left(); break; } case ('4'): { right(); break; } case ('0'): { stop(); break; } case ('5'): { increase(); break; } case ('6'): { reduce(); break; } } } } //定时器0 void time_control() interrupt 1 { TL0 = 0x66; //设置定时初值 TH0 = 0xFC; //设置定时初值 PWM++; if (PWM == 100) { PWM = 0; } if(PWM <= speed)//大于PWM波则打开使能 { ENA = 1; ENB = 1; } if(PWM > speed)//小于PWM波则关闭使能 { ENA = 0; ENB = 0; } } void main () { UsartConfiguration(); // 串口初始化 Timer0Init();//定时器0初始化 while(1) { //在数码管可以看到当前的速度是多少 Nixie(1, speed/100); Delay(5); Nixie(2, (speed/10)%10); Delay(5); Nixie(3, speed%10); Delay(5); } } UART.
在使用电脑的过程中,我们经常都会遇到一些奇怪的问题,比如说当你想要关机时,点击关机键却没有一点反应,压根无法关机,这让用户们都很是焦急。这该怎么办呢?这很有可能是电脑被禁止关机了,那么这该如何是好呢?下面,小编就给大家介绍解决电脑关机关不了的操作方法。
很多时候我们都会遇到电脑不能关机的情况,但是如果遇到这个问题不知道怎么解决的话该怎么办呢?不慌不慌,这个问题好解决,不算什么大问题,这里小编就给到家演示一下解决电脑关不了机的操作方法。
方法一:
1,按下键盘“win+r”快捷键,打开运行然后输入“gpedit.msc”回车键
关机关不了示例1
2,然后找到“计算机配置”,然后鼠标双击
关机关不了示例2
3,然后在“名称”下面找到“管理模板”双击打开
关机关不了示例3
4,找到“系统”,双击打开,接着找到“关机选项”
关机关不了示例4
电脑示例5
5,然后鼠标双击如下如所示,被圈出的文字。
关机关不了示例6
6,点进去之后,按下图所示勾选设置即可完成。
电脑关机关不了示例7
方法二:
1,点击关机命令后依然无法关机,有很大可能性是由于电脑中存在进程的干扰,在任务栏上右击鼠标,点击“任务管理器”,选择“进程”。
关机关不了示例8
2,在进程中可以观察到电脑运行的所有进程,点击“CPU”,这时占用率最高的进程会出现在最上方,这就是未关闭的进程,选择点击“结束进程”。
电脑关机关不了示例9
3,在进程中查找是否存在“rundll32”类的进程,这种进程往往会阻碍电脑关机,选择点击“结束进程”,然后重新关机。
电脑关机关不了示例10
以上两种就是相关于怎么解决电脑关机关不了的操作方法啦~不知你们学会了吗~
原标题:水冷电脑流动的是什么“水”
水冷散热器到底要不要加水呢?这个问题看似很简单,既然是水冷散热器难道还不加水么?实际上并非如此。那么我们在回答这个问题之前,首先来了解一下散热器在水冷系统中的作用。
水冷系统采用的是液体流带动热量的方法,散去CPU或者显卡散热出的热量。一套典型的水冷散热系统必须具有以下部件:水冷块、循环液、水泵、管道、水箱和换热器。水冷块是一个内部留有水道的金属块,由铜或铝制成,与CPU接触并将吸收CPU的热量。循环液由水泵的作用在循环的管路中流动,吸收了CPU热量的液体就会从CPU上的水冷块中流走,而新的低温的循环液将继续吸收CPU的热量。水管连接水泵、水冷块、水箱和散热器,其作用是让循环液在一个密闭的通道中循环流动而不外漏,让液冷散热系统正常工作。水箱用来存储循环液,换热器就是一个类似散热片的装置,循环液将热量传递给具有大表面积的散热片,散热片上的风扇则加强空气流速将散热器表面的热量带走。
了解了水冷系统的工作原理,很显然在整个水冷系统中循环液的作用是转移热量,将核心部件散发的热量转移至整个水冷系统。那么循环液只要热量传递畅通即可,从这个方面来讲,水冷散热器不一定要加水,因为循环液不一定是水,水也非最佳的循环液。
然而在实际工作中,我们还要有另一方面的考量:循环液中不能含有杂质。因为不管是显卡冷头还是CPU冷头,其为了快速散热,微水道的设计绝不允许任何杂质的堵塞。因此自来水并不可取,推荐使用专用导热液。
一大部分人使用蒸馏水作为导热液。其实蒸馏水稍微有点杂质就会导电,用之前必须用蒸馏水彻底清洗水路,确保干净。蒸馏水用久了会滋生细菌和藻类导电更严重,有人在里面加银片杀菌降低导电但是持久性不强。虽然蒸馏水很便宜,但是不推荐使用。
专用导热液更是如此,不仅具有极强的导热能力,并且导电率极差,防止防止漏液通电,挥发缓慢,免去经常加液的烦恼。返回搜狐,查看更多
责任编辑:
前些时候刚开发了原生的H5电商系统,从控制器、页面、页面样式、jQuery等开始写,花费了不少的时间很精力。后面开发移动端APP和小程序,使用现在比较流行的uniapp混合开发模式,开始学习需要些时间,可是越写越喜欢,越写越简单。随着APP、小程序功能的增加,再也无法再原生H5版本上重新写一次了。直接uniapp生成,调兼容性,非常的方便。下面分享使用uniapp开发H5的一些感受吧。
现在APP、微信小程序、头条小程序等流行起来了,H5商城渐渐没落了,除了公众号和一些用不上APP且微信受限等因素不得不选择H5外,使用场景还真的比较少了。但有时候又不得不有,比较鸡肋。uniapp开发H5有些天然优势,用上uniapp还真没有太大必要去写原生的H5版了。
Uni版开发的主要优势
多端功能同步。 一套源码生成多端,iOS、Android、H5、微信小程序、头条小程序等用户端,实现多端功能同步。当然也需要测试不同场景的兼容性问题,比如说支付、登录、分享等接口在各端的兼容和支持情况,以及一些链接配置和导航条等显示的兼容性问题。双向数据绑定,异步更新。 Vue采用MVVM 模式,数据双向绑定,减少了 DOM 操作,彻底放弃了传统前端开发使用jquery操作文档的模式,将更多精力放在数据和业务逻辑上。
标签简化,布局更加容易。 Uni开发采用view标签取代了html中传统的div、p、span等标签,化繁为简。采用flex布局取代了css中的定位和浮动,对浏览器的兼容性更加友好。丰富的组件选择。 Uniapp有较多的原生组件,例如对话框、地区选择、日期选择等原生组件,调用时传参给组件即可,非常方便。也可以自己制作组件,多页面重复应用。同时DCloud平台也有非常多优秀的开发者,分享各种优秀的组件。组件的使用使得开发变得简单方便。采用最新的Vue.js库。 Vue.js是非常轻巧、高性能的库,拥有非常容易上手的 API,响应和运行非常快速。
最后看下项目,不同的开发模式,样式差不多。但uniapp开发的H5花的时间和精力确是少了太多。所有说直接选择uni开发H5,wap版商城会更理想些。
uni版H5商城:https://h5.shopwind.net
原生版H5商城:http://m.test.shopwind.net
preview:运行时数据区中由虚拟机栈,栈内部有多个线程,每个线程的基本结构是栈帧,栈帧和方法是对应的。
栈帧内部有:
局部变量表操作数栈动态链接方法返回地址一些附加信息 在方法区里面有一个运行常量池,包含变量和方法,class文件所有的变量和引用作为符号引用,保存在class文件的常量池中。
描述一个方法调用了其他的方法的时候就是通过常量池中指向方法的符号引用来表示。那么动态连接的作用就是将这些符号引用转化成调用方法的直接引用
所以动态链接:将对方法的符号引用 链接成 对调用方法的直接引用
动态链接(虚方法)发生在运行时,静态链接发生在编译时(private\static\final)
重载是静态绑定
重写是动态绑定
目录 profile与level简介H264的profile维基百科原文H.264 ProfilesH.264 Levels H.264 Profile、Level、Encoder关系图 profile与level简介 profile在NAL Header之后的RBSP中解析得出
Profile是对视频压缩特性的描述(CABAC呀、颜色采样数等等)。
Level是对视频本身特性的描述(码率、分辨率、fps)。
简单来说,Profile越高,就说明采用了越高级的压缩特性。
Level越高,视频的码率、分辨率、fps越高。
一些移动设备(手机、游戏机、PMP)由于性能有限,不支持全部高级视频压缩特性和高分辨率图像,只支持基础压缩特性和分辨率低一些的图像。
为了让这个限制更加清晰明了,H264从低到高划分了很多Profile和Level,设备只需要标出所支持的Profile和Level就可以让用户和开发者一看既知。
具体哪些Profile和Level对应哪些特性,可以参考下面给出的维基百科。我记得PSP是支持到MainProfile的Level 2.1。
这个解释也不能说错,只是个人觉得不够准确,profile主要是定义了编码工具的集合,不同的profile,包含了不同的编码技术;而level主要是对码流的关键参数的取值范围作了限定,与解码器的处理能力和存储能力相关联
H264的profile Baseline
(最低Profile)级别支持I/P 帧,只支持无交错(Progressive)和CAVLC,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等;
profile_idc = 66Extended
EP-Extended profile:进阶画质,是后来才加入的。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC
profile_idc = 88Main
(主要Profile)级别提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),同样提供对于CAVLC 和CABAC 的支持,用于主流消费类电子产品规格如低解码(相对而言)的mp4、便携的视频播放器、PSP和Ipod等;
profile_idc = 77High
(高端Profile,也叫FRExt)级别在Main的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4),用于广播及视频碟片存储(蓝光影片),高清电视的应用。
profile_idc = 100 H264 的profile主要是针对兼容性的,不同的规格能在相同级别上的平台应用。
至于Baseline@L x.x、Main@L x.x、High@L x.x形式则是在不同级别下的码流级别,数值越大码流就越大,更耗费资源。所以就码流而言High@L3.0<High@L4.0<High@L5.1。
H.264 Baseline profile、Extended profile和Main profile都是针对8位样本数据、4:2:0格式的视频序列High profile将其扩展到8~12位样本数据,视频格式可以为4:2:0、4:2:2、4:4:4
设立了High profile(HP)、High 10 profile(Hi10P)、High 4:2:2 profile(Hi422P)、High 4:4:4 profile(Hi444P) 4个profile,这4个profile都以Main profile为基础。 在相同配置情况下,High profile(HP)可以比Main profile(MP)节省10%的码流量,比MPEG-2
文章目录 Redis1. 常见数据类型1.1 测试一下 2. Redis持久化2.1 RDB (Redis DataBase)快照2.1 AOF (Append-only file)文件命令 3. Redis的过期键的删除策略3. 1 定时删除3. 2 惰性删除3. 3 定期删除 4. Redis的内存淘汰策略 Redis 1. 常见数据类型 常见的数据类型,一共有5种。
String: 标准的key、value类型。给Key取名字的时候比较关键,这样我们直接判断缓存中有没有值,没有值就查库。
Hash: Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
List: Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
set: Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。类似于java的set集合。
zset: 有序集合和集合一样也是string类型的元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数,redis 正是通过分数来集合中的成员进行从小到大的排序,有序集合的成员是唯一的,但分数(score)却可以重复。
1.1 测试一下 首先开启redis的server。找到redis的安装目录,运行redis-server 脚本,启动redis服务。
redis-server 在Springboot工程中配置redis的配置,依赖此处不展示。
server: port: 8080 spring: datasource: password: 123 username: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.
目录: 实验过程及内容(实验思路,代码实现过程以及运行并测试结果):实验结论: 实验过程及内容(实验思路,代码实现过程以及运行并测试结果): 编写 GUI 程序,如图所示,显示 10个随机颜色的球并放置在随机位置,按Display 键更新球颜色和位置。
【解题思路】
利用tkinter进行GUI页面可视化;
在中心定义画布与按钮以显示小球以及刷新按钮;
对于每个小球,可以利用随机数,随机生成各个小球的位置与小球的颜色;
每次生成新的小球后,需要删除原先的小球。
【编程实现】
# 引入头文件 from tkinter import * from random import * # 定义回调函数 def DisplayBall(): # 清除画布上原有小球 canvas.delete('all') # 利用循环生成10个小球 for i in range(10): # 随机生成小球圆心坐标 Pos_x = randint(50, 450) Pos_y = randint(50, 250) # 定义小球的半径 radius = 7 # 获取随机颜色 r = lambda: randint(0, 255) color = "#%02x%02x%02x" % (r(), r(), r()) # 将小球添加到画布上 canvas.create_oval(Pos_x, Pos_y, Pos_x + radius, Pos_y + radius, fill=color, outline="
关于总线平均传输速率的分析 做王道有感,如果您遇到了同样的问题并且在我这里能得到一点点收获,我将十分荣幸。本文采用了公式推导,有些繁琐,如果您觉得浪费了您的时间,请轻喷😂
2.2 某总线支持耳机Cache块传输方式,若每块6个字,每个字长4字节,时钟频率为100MHz。
(1) 读操作时,第一个时钟周期接收地址,第二、三个为延时周期,另用4个周期传送一个块。读操作的总线传输速率为多少?
343MB/s
(2)写操作时,第一个时钟周期接收地址,第二个为延时周期,另用4个周期传送一个块。写操作的总线传输速率是多少?
400MB/s
(3)设在全部的传输中,70%用于读,30%用于写,该总线在本次传输中的平均传输速率是多少?
难道是 343 × 70 % + 400 × 30 % = 360.1 M B / s 343\times 70\% + 400 \times 30\% = 360.1MB/s 343×70%+400×30%=360.1MB/s?
我们先假设读写了10次,其中七次为读,三次为写,那么总周期数为7*7+3*6 = 67周期,总传输数据为240B
总时间为 67 × 1 100 M 67\times \frac{1}{100M} 67×100M1
所以,平均传输速率为 240 B 67 × 1 100 M = 240 B × 100 M 67 = 358.21 M B / s \frac{240B}{67\times \frac{1}{100M}} = \frac{240B \times 100M}{67} = 358.
转录组分析是目前应用最广的高通量测序分析技术之一。常见设计是不同样品之间比较,寻找差异基因、标志基因、协同变化基因、差异剪接和新转录本,并进行结果可视化、功能注释和网络分析等。
转录组的测序分析也相对成熟,从RNA提取、构建文库、上机测序再到结果解析既可以自己完成,又可以在专业公司进行。
概括来看转录组的分析流程比较简单,序列比对-转录本拼接 (可选)-表达定量-差异基因-功能富集-定制分析。整个环节清晰流畅,可以作为最开始接触高通量测序学习最合适的技术之一。
但重点和难点在于理解这些过程都是怎么做的,有什么需要注意的,结果怎么解读,后续分析怎么做。这些只有自己动手操作过,才可能有理解。而理解了一个,再去做其它类型分析,也会轻松很多。
实验设计这块重要的是对照和至少3个生物学重复,并选择合适的测序通量。ENCODE要求重复之间的Spearman correlation值大于0.9 (遗传背景不一致的生物重复相关系数要大于0.8)。定量基因表达和评估转录图谱相似性只需要中等测序深度;而研究新转录本和可变剪接则需要更深的测序;一般来讲长RNA-seq文库测序深度满足可用reads在20-30 million (如果测PE150,换算成碱基数为6G-9G)。
另外一个需要注意的是测序的批次效应,保证自己的样品同时处理、RNA同时提取、同时构建文库和上机测序。这些环节虽然不能总受我们控制,但记录下对应的操作时间和批次,最后在绘制表达图谱时与实验相关参数进行关联展示 (利用我们介绍的热图简化或高颜值免费在线绘图工具升级版来了~~~),从而保证结果没有受到试验中处理批次的影响。ENCODE计划有一篇文章在比较人和小鼠不同组织的表达谱相似度时得到的结果是样品按物种而非组织聚在一起,这与之前认为的发育通路的保守性不符。后来发现是测序批次捣的鬼,做了批次效应矫正后,表达图谱按组织而非物种聚在一起了(高通量数据中批次效应的鉴定和处理 - 系列总结和更新)。
测序环节通常不需要自己操作,测序公司都很成熟,但测序的原理需要知道。这会影响到后续分析时参数的选择,比如知道什么是插入片段大小,什么是链特异性测序,什么情况会有接头序列,双端测序如何测等。
获得数据后,就涉及到数据的传输和质量评估(也包括如何从公共数据库下载数据)和文件格式的转换。FASTQ格式解释和质量评估中有些提及。质量评估的意义在于从测序质量角度评价建库和测序的成功与否,指导接头和低质量碱基的去除。这一步参数控制的严格与否对后续的比对会有影响,同时也会受到后续分析选择的工具的影响。对Linux系统一定程度的了解,是进行这些工作的基础。
39个转录组分析工具,120种组合评估(转录组分析工具哪家强)中讲述了如何选择、评估合适的比对工具,序列拼装工具,定量工具和差异分析工具。值得我们在进入正式的分析之前,仔细阅读。另外类似的评估文章,还有几篇,都可以一并读一下,这样在后期分析时对工具的选择和使用才更得心应手。
工具比较类文章一般只告诉你做了什么,不告诉你这么做的原因是什么,而且每一步细分开来又有很多小细节需要注意,比如在比对环节就会涉及到:不同的样本如何选择合适的基因组和注释文件,什么样的软件支持Junction reads的比对,什么样的比对率是合适的,比对质量怎样,测序中RNA有无降解或选择偏好性,测序饱和度如何等。
这些可能都不会体现在最终的结果中,但都是确保后期结果可靠性所必须要做的事情。2002年诺贝尔奖得主Sydney Brenner曾对数据分析做过提醒Garbage in, Garbage out。软件是死的,提供了格式正确的输入,就可以得到输出,但输出正确与否,就得靠人的经验来判断了。
在后面的差异基因鉴定阶段,还存在把FPKM值转换为整数再提交给DESeq2做分析的,软件不报错,但结果不对。或者能顺着教程运行DEseq2分析,但换成自己的数据就不知道如何下手的 (DESeq2差异基因分析和批次效应移除)。这些问题都需要在实践过程中持续不断的试错、阅读更多的文章和教程来步步矫正。
做下测试题看看了解多少?
120分的转录组试题(第一份答案)
120分的转录组试题(第二份答案)
120分的转录组试题(第三份答案)
这当然是一个耗时耗力的过程,那么有没有一个更好的方式呢?
那就是第十四期高级转录组分析和R数据可视化
(部分视频可在B站空间免费查看:https://www.bilibili.com/video/BV1rD4y1272a)
基于以往13次转录组培训,转录组课程内容成熟,可以在最短的时间学会最多的知识。
之前的培训重点都在前面的流程分析,这次做了调整,流程分析整理一个清晰的输入、输出框架,包装好的流程脚本和参数注意,快速实战操作从源头。重点调整到后续的定制分析和绘图,涉及常见GO分析、单细胞转录组的聚类分析、配对样品和时间序列样品的GSEA富集分析、结合motif预测和转录因子ChIP的调控网络分析、定制化图形绘制、Cytoscape进行富集分析、调控网络、通路的可视化,目标基因筛选和可视化, WGCNA加权共表达网络分析,机器学习,ceRNA网络。
每部分都提供清晰的思维导图方便理解输入、输出、命令、参数和注意事项。
后续在我们的培训群也会提供长期的免费图形绘制合作服务,跟大家分享绘图代码,一起学习。
第十四期高级转录组分析和R数据可视化在于2021年7月30日在线开班,将系统讲述基于和不基于比对的转录组分析流程,从原始数据到表达矩阵、差异基因、可变剪接、富集分析、加权共表达网络、通路分析、可视化绘图,ceRNA,机器学习等一系列常见操作,理论和实践兼备。
课程大纲 请详细阅读课程简介,如果以下内容您全精通,不必参加此培训。
每节课1小时一个主题,理论结合实战,学懂原理,实战实操,全是老司机多年经验、流程和代码的无私分享,手把手带您快速入门、节约宝贵的时间,助力科研成果早日产出。
下面是课程安排,本课程一共3天,每天6节课,共18节课,全部课程均理论与实战结合(只要课上讲的都是可以学会并自己实现的分析)。如11代表第一天第一节课,26代表第二天第六节课,41为两周后的不定期线上集中视频答疑和后续的讨论群永久答疑。
该课程为第13期,经过12次迭代更新,整个过程都比较成熟,可以在最短时间学习最多知识。3天时间,老司机带您完成自学需要3个月甚至是1年的崎岖之路,助力您真正玩转转录组分析,并根据自己课题的背景优化分析方案。
编号内容简介01视频学习Linux基础预付后提供学习视频02视频学习R基础预付后提供学习视频03软件安装预付后提供安装视频04支付全款提供全部视频用作预习11转录组概述转录组设计、应用、批次效应等12转录组分析流程简介基于/不基于比对的分析流程讲演13Salmon定量实战不基于比对直接定量基因和转录本的表达14差异基因分析DESeq2多组差异基因分析、热图、火山图15GO富集分析和可视化泡泡图、热图、网络图、弦图16GSEA富集分析和可视化分组和时间序列GSEA21二代三代测序原理介绍建库测序过程及注意事项22原始数据比对回基因组STAR比对和定量23基于count的差异基因批次效应鉴定和移除24Linux下转录组环境配置Conda软件安装、配置25基因组浏览器数据可视化IGV呈现reeads比对、峰图、Sashimiplot26转录本拼装StringTie可变剪接分析rMATS31文章常见图表绘制和解读Illustrator制作CNS标准图版32WGCNA基因加权共表达网络分析和性状关联33非编码lncRNA鉴定ceRNA分析 (miRNA-lncRNA-gene调控)34无参转录组分析Trinity组装 eggnog注释35转录调控分析转录调控网络36Marker基因鉴定PCA,随机森林41答疑-线上答疑、考试内容串讲 教程内容简介如下:
转录组分析平台搭建 服务器平台:没有软件的计算机只是一堆废铁,没有转录组分析系统的服务器也和你的数据分析没有半毛钱关系。想要搭建整套的转录组分析流程,网上的资源即零散、又稀少。易生信团队将分享多年经验摸索优秀软件和布置技巧,并分享全部源代码,让你在主流Linux服务器系统(Ubuntu 16/18.04,CentOS7等主流发行版)上快速布置专注组分析流程依赖的几十款常用软件、几百个依赖的R和Python包,轻松拥有专业分析平台。
个人计算机平台:高通量测序所谓的大数据,都是在原始数据和分析过程中体量大,计算资源需求多,但结果文件不大。通常转录组分析会获得样品基因表达表、新转录本和非编码基因,这些表格是下游分析、高级分析以及个性分析的起点,绝大部分工作在我们的笔记本上是可以搞定的,只是很多人并不知道如何入手。
其实你的个人电脑就是数据表(丰度矩阵)统计分析的利器。易生信团队独创实现了跨平台的分析流程,在大家的Windows笔记本上可以轻松实现转录组统计、可视化的绝大多数分析,课程带你轻松在自己的本本上搭建数据表统计分析与可视化平台,基于目前最主流的Win10进行优化和测试,让笔记本秒变数据分析可视化平台。
生信基础知识 有了生信分析平台,如何灵活运用还是要学点独门绝学的。21世纪最重要的是人才,人才最好掌握三门语言,将让你人生立于不败之地,在任何团队中都是不可或缺的人才。这三门语言就是中文、英文和计算机语言。中文每天都在用在学,英文对于博士也至少接触了10年以上并能应用于阅读和写作文献,而编程语言大家大学阶段都学过Visual Basic、Visual Foxpro、或C语言,但能在工作中应用的绝对凤毛麟角。更何况这些语言在生命科学领域是非常低效的,不提倡学习。
生信中最常用的三类语言是·Shell + R + Python/Perl·,前两门是基础,生物学家必要掌握的Shell和R语言基础知识,保证你完成项目分析。我们在课上将同时讲解生物学家必要掌握的Shell和R语言基础知识,保证你高效、稳定的使用转录组分析平台、保证大数据分析和后期可视化至发表阶段所需的技能。我们在文后提供了学习视频供提前预习。
当你利用几个小时,走进大数据分析和可视化的大门后,你将发现一个全新的世界。很多人会感觉相见恨晚,爱上分析,从此走向人生的快车道。即使你对编程不感兴趣,这里面用到的理念也定能让你受益终身,在今后相关分析中事半功倍,比别人更胜一筹。再说现在连小学生都学Python了,再不会,孩子都带不好了。
(如果基础薄弱,报名付款成功后,可免费领取基础程序课,做好准备工作, 让程序成为我们的得力工具而不是学习新知识的绊脚石。)
图表解读和绘制专题 针对很多老师缺少系统的生信背景,看不懂分析文章图表,更对绘制各式图表手足无措的情况,在培训时,我们将结合发表的高水平文章,进一步讲解16种常用分析图的原理和使用范围,让你不仅读懂图,更知道如何应用于自己的研究,并亲自轻松完成绘图。
针对大家使用R语言绘图学习时间成本较高的问题,易生信团队针对常用16种图开发了免费绘图网站,一键出图,更可鼠标点选参数修改图形的个性样式。
成果发表是科研过程中不可缺的一部分,发表成果又少不了图形展示。文章图表排版是否整齐规范、协调一致、重点突出对一篇文章的发表也是有不少贡献的。之前推出的文章发表图的修改和排版讲演了部分图形编辑和排版操作,本次培训也会实践从原始图形、到细节修饰再到排版发表的整个过程和注意事项。
大家对U盘应该都非常熟悉吧,经常会用它来存储文件或安装系统,可是近日有笔记本用户却遇到将U盘插入电脑的时候不识别,这该怎么办呢?为了帮助到大家,win7之家小编给大家整理了笔记本电脑不读U盘的详细解决方法,有一样问题的随小编一起来看看吧。
具体步骤如下:
1、首先确认是不是U盘损坏了,可以把U盘插到其他电脑上去,看看能否读出。如果仍然都不出再进行下一步。
2、然后点击笔记本右下角的状态栏部分,看看有没有类似一个小U盘的标志。
3、然后点击这个U盘图标,查看并记下“弹出”下面的名字。
4、右键点击桌面的计算机/电脑,打开 管理,找到设备管理器,打开如下界面。
5、一次点击右侧的各种驱动器、控制器、设备,查找是否有第三步的所记下的那个名字。着重找一下便携设备、磁盘驱动器、存储控制器、键盘等,因为有可能你的U盘被识别成了其他设备。
6、找到之后,右键点击卸载,然后拔下U盘重新插一次就可以了。
关于笔记本不识别u盘的详细解决步骤就给大家讲述到这边了,有遇到相同情况的用户们可以尝试上面的方法步骤来解决看看吧。
我要分享到:
有些使用win10系统的用户,发现自己的笔记本电脑无法识别U盘,想存放资料,复制资料也不行,尝试过网上的一些方法,但是用处都不是很大,所以这篇文章就是PE吧给大家的解决方法,希望能帮助到大家。
方法/步骤:
换台电脑,试一下在别的电脑能不能够识别U盘,如果U盘可以识别,说明U盘并没有损坏;
U盘无法被识别的原因有好多,也有可能是系统将其识别成了其他设备或者USB驱动没有安装成功,
右键点击此电脑,在打开的菜单项中选择管理;
计算机管理中,在左侧找到设备管理器;
查看便携设备、磁盘驱动器、键盘等,是否有出现U盘,要是没有,再看看其他设备;
找到U盘,然后点击右键,在打开的菜单项中,选择卸载设备;
最后,拔出U盘,再重新插入电脑,这时候系统应该能成功识别U盘;
以上这篇文章的方法,如果在操作过程中失败了,可以检查USB驱动是否有问题,尝试更新驱动解决问题。希望本篇教程对大家有所帮助,要想了解更多windows资讯,请继续关注PE吧。
经常有朋友问windows7之家小编为什么笔记本电脑识别不了u盘,其实这个问题小编早就想给大家解决了,但是一拖再拖,直到现在还没有解决掉。今天刚好比较有空,就整理了一篇教程,下面就让小编告诉你为什么笔记本电脑识别不了u盘吧。
一、如果是有盘符而没有显示出来的,解决方法:
右击我的电脑/管理/存储/磁盘管理,然后右击“可移动磁盘”图标” 单击快捷菜单中
的“更改驱动器和路径”选项,并在随后的界面中单击“添加”按钮,接下来选中“指派驱动器号”,同时从该选项旁边的下拉列表中选择合适的盘符,在单击确定
即可。最后打开我的电脑,就能看到移动硬盘的盘符了。
二、USB不被电脑识别,如果是系统或系统自带的驱动的原因,可以按下面方法修复一下:
1、开机按F8进入安全模式后在退出,选重启或关机在开机,就可以进入正常模式(修复注册表)。
2、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW
回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。
3、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。
4、如果故障依旧,请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(如果正常模式恢复失败,请开机按F8进入到安全模式中使用系统还原)。
5、如果故障依旧,建议重装系统。
三、USB接口供电不足,可能是USB接口连接的外设太多造成供电不足:
建议使用带电的USBHUB或者使用USB转PS/2的转接头。还有可能
WindowsXP默认开启了节电模式,致使USB接口供电不足,使USB接口间歇性失灵。右击我的电脑/属性/硬件/设备管理器,双击“通用串行总线控
制器”会到好几个“USB Root
Hub”双击任意一个,打开属性对话框,切换到“电源管理”选项卡,去除“允许计算机关闭这个设备以节约电源”前的勾选,点击确定返回,依次将每个USB
RootHub的属性都修改完后重新启动电脑。USB设备就能恢复稳定运行了,频率尽量设低一些。
至此为什么笔记本电脑识别不了u盘的问题就被我们解决啦,大家看完这篇几哦啊还曾之后一定早就已经跃跃欲试了吧?小编只能建议大家赶紧去试试吧,电脑出问题了可不是什么轻松的事情哦,这可是需要大家辛辛苦苦去解决的!推荐阅读:windows764旗舰版。
朴素贝叶斯 朴素贝叶斯高斯朴素贝叶斯中的参数高斯朴素贝叶斯的使用模型评估指标布里尔分数对数似然 高斯朴素贝叶斯对不同数据集的效果不同样本量对于高斯朴素贝叶斯的影响 朴素贝叶斯 贝叶斯模型同样是流行的十大挖掘算法之一,属于有监督的学习算法,是专门用于解决分类问题的模型,该模型的数学理论并不复杂,只需要具备概率论和数理统计的部分知识,该分类器的实现思想非常简单,即通过已知类别的训练数据及计算样本先验概率,然后利用贝叶斯公式测算未知类别样本属于某个类别的后验概率,最终以最大的后验概率所对应的类别作为样本的预测值。
朴素贝叶斯模型,在对于未知类别的样本进行预测时,有几大优点:
首先算法在运算过程中简单而且高效其次算法拥有古典概型的理论支撑分类效率稳定最后算法对于缺失数据和异常数据不太敏感 同时缺点也是存在的:
模型的判断结果依赖于先验概率,所以分类结果存在一定的错误率对于输入的自变量X要求具有相同的特征模型的前提假设在实际应用中很难得满足。 由于该模型只用到数理统计中的朴素贝叶斯公式,所以在这里就不再赘述,相信大家也都有所了解朴素贝叶斯。
高斯朴素贝叶斯中的参数 GaussianNB(priors=None) # 没错,它的主要参数就这一个。 该参数用于指定因变量各类别的先验概率,默认以数据集中的类别频率作为先验概率 所以通常情况下,我们不对高斯普速被淹死,做任何参数的调整。 高斯朴素贝叶斯的使用 from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix as CM from sklearn.datasets import load_digits digits=load_digits() x,y=digits.data,digits.target x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=10) gnb=GaussianNB().fit(x_train,y_train) gnb.score(x_train,y_train) gnb.predict_proba(x_test).sum(axis=1).shape y_pro=gnb.predict(x_test) CM(y_test,y_pro) 模型评估指标 布里尔分数 from sklearn.metrics import brier_score_loss brier_score_loss(y_true # 真实标签 , y_prob # 标签正概率 , pos_label=None # 填写正样本标签 ) 需要注意的是布里尔分数只能用于二分类,不能用于多分类。 他返回的是一个浮点类型的数据,表示的是模型丢失数据的比例。所以越小越好。 对数似然 from sklearn.metrics import log_loss log_loss(y_true# 真是标签结果 , y_prede # 预测结果,predict_proba返回的值,不是predict返回的值 ) 返回的是损失值,因此对数自然函数的取值越小,证明概率估计越准确。 高斯朴素贝叶斯对不同数据集的效果 from sklearn.
1、删除表空间报错
SQL> drop tablespace UNDOTBS1 including contents and datafiles; drop tablespace UNDOTBS1 including contents and datafiles * ERROR at line 1: ORA-01561: failed to remove all objects in the tablespace specified 2、查询表空间对应的段类型
SQL> select ts# from ts$ where name ='UNDOTBS1'; TS# ---------- 2 SQL> select count(*) from seg$ where ts#=2; COUNT(*) ---------- 12 SQL> SQL> select file#,type# from seg$ where ts#=2; FILE# TYPE# ---------- ---------- 3 10 3 3 3 3 3 3 3 3 3 10 3 3 3 3 3 3 3 3 3 3 3 3 12 rows selected.
思源黑体是由谷歌和Adobe推出的一款针对中文、日文、韩文的开源字体,支持简体中文、繁体中文、日语、韩语、希腊字母、拉丁字母以及西里尔字母,包括65535个象形文字,也是目前东亚文字最大的字体之一,该字体设计优雅,显示效果优秀,非常适用于设计、开发人员下载使用,可以满足不同场景下的文字显示需求。而此次小编带来的是全套思源黑体合集(含ttf/ttc版/行高修正版),其中包含了ttf、ttc版、行高修正版,以及可变版,此版本支持了单个字重维度的形态变化,即在系统或软件的支持下字体粗细可以随意调节,有别于过往固定的七个字重,非常实用。除可变字体之外,思源黑体VF笔画还可以拆分,在AI中对字体进行扩展就可以得到各个笔画,可以应用于广告设计、名片设计、包装印刷、产品设计等应用,欢迎有需要的朋友们前来本站下载收藏。
获取地址:http://www.ddooo.com/softdown/204015.htm 字体家族: Adobe: Source Han Sans CN-简体中文版
Adobe: Source Han Sans TWHK-港台版
Adobe: Source Han Sans JP-日文版
Adobe: Source Han Sans KR-韩文版
Adobe: Source Han Sans- 源ノ角ゴシック
Google: Noto Sans CJK-google自有版本
字体介绍 增加思源黑体TTF版
注:据称,官方没有,也不会发布TTF版本,但根据开源协议,大家可以自行转换。此次更新的思源黑体TTF 版即来自字体爱好者转换而成!
思源黑体的TTF版,OTF字体文件在Office中字间距有问题,换成TTF版的就好用了。
同时提供了思源黑体ttc版本,ttc是microsoft开发的新一代字体格式标准,但在旧版本系统上可能出现无法安装的情况,如果你无法安装TTC版,可考虑使用思源黑体ttf版,或者利用UniteTTC-TTC字体分解合并小软件 解决。
增加思源黑体行高修正版
思源黑体的早期字型行高有问题,导致在PS中排版起来很头疼,现更新为思源黑体行高修正版,解决行高问题!
思源黑体可变版
思源黑体更新到了v2.003版本。此次的更新支持了单个字重维度的形态变化,即在系统或软件的支持下,字体粗细可以随意调节,有别于过往固定的七个字重。也就是所谓的可变字体。
除可变字体之外,思源黑体VF笔画还可以拆分,在AI中对字体进行扩展,就可以得到各个笔画。
提示:可变字体需要系统及软件的支持,并不是任意软件都支持可变字体的。目前PS/AI 2018以上的版本都支持可变字体。
并且,目前可变字体无法直接安装于windows系统,如需在PS\AI中使用,需要将字体文件拖入Adobe字体文件夹,如:\Illustrator XX\Support Files\Required\Fonts中,然后在AI/PS中选择字体时,字体上标有“VAR”的字体即为可变字体。
思源黑体如何导入ps 目前可变字体无法直接安装于windows系统,如需在PS\AI中使用,可将字体文件拖入Adobe字体文件夹,默认路径:
Adobe\Illustrator CC\Support Files\Required\Fonts
其中带有上图红框中下标“VAR”的字体即可变字体,VF字体文件会比普通OTF版体积要小得多可能VF字体也会是以后的一种趋势吧。
win系统字体安装方法 字体是 zip 压缩包,您只要解压后就能看到两个文件,一个后缀名为 .ttf .otf 或 .ttc 格式的字体文件,一个 .txt 的版权说明文件。
方法一:控制面板/字体/文件/安装新字体。
方法二:在计算机地址栏上直接拷贝“C:\Windows\Fonts”路径,回车即可打开 Windows 字体文件夹。
如何将站长统计放在网站最底部的中间位置
这个div如果位置在所有div的后面,那么只要前面的div 的高度够高的话,它的位置就会在页面的页面的底部的,一般想你这种说的要让他在页面底部的话都是页面高度太小,占不了满屏,导致页面底部部分下面有空白,你可以给这个div 前面的大的div 一个最小高度,让它撑起来。
还有一种方法是给body相对定位,给这个div 定位到底部
html里如何设置底层并居中
1、想要让文字在底部,需要用到 position:fixed; bottom:0px; left:0px;
2、想要让文字居中,需要用到 text-align:center;
3、具体代码
©2017-2018
.div_foot {
position: absolute;
height: 50px;
text-align: center;
line-height: 50px;
width: 100%;
扩展资料
HTML的编辑器
1、基本文本、文档编辑软件,使用微软自带的记事本或写字板都可以编写,当然,如果你用WPS来编写,也可以。不过存盘时请使用.htm或.html作为扩展名,这样就方便浏览器认出直接解释执行了。
2、半所见即所得软件,
如:FCK-Editer、E-webediter等在线网页编辑器;
3、所见即所得软件,使用最广泛的编辑器,完全可以一点不懂HTML的知识就可以做出网页,如:
AMAYA(出品单位:万维网联盟);
FRONTPAGE(出品单位:微软);
Dreamweaver(出品单位:Adobe)。
百度百科-HTML
html css怎么让文字在页面底部居中
想要让文字在底部,需要用到 position:fixed; bottom:0px; left:0px;
想要让文字居中,需要用到 text-align:center;
示例的截图
示例的代码
文字底部居中
*{margin:0px; padding:0px;} /*这行是为了清除代码默认的样式,不用拷贝*/
.botCenter{width:100%; height:35px; line-height:35px; background:#ccc; position:fixed; bottom:0px; left:0px; font-size:14px; color:#000; text-align:center;}
就是一个在底部显示的文字
prestashop如何修改底部版权信息||版权信息居中显...
想要让文字在底部,需要用到 position:fixed; bottom:0px; left:0px;
想要让文字居中,需要用到 text-align:center;
树的直径的定义 设树上任意两点x, y之间的距离为dis(x, y),那么树的直径就是求这棵树中的Max {dis(x,y)}
方法介绍: 1.树形dp
优点:代码简单,可以求出以当前节点为根时的最长链,O(N)时间复杂度
缺点:不能求出最长链的路径
2.两次bfs(或dfs)
优点:可以求出路径,每次使用path数组存其前驱节点即可。
缺点:时间复杂度O(2N), 在负权边中无法使用。
两次bfs的思路: 首先需要知道的一个知识是:求某个树的最长路径的方式就是, 先随便选一个点,求这个点到其他任意一个节点中,距离最远的点u. 然后在通过u找距离u最远距离的点v。 则u->v的长度就是其中一条最长路径。(也就是u一定为某一个最远距离的起点。)
证明:
结论:所以随便一个点A,离A距离最远的点U必定为树中其中某一条最长路径的端点。 知道了这个知道可以了解到为什么需要两次bfs或者dfs了。 先随机选择一个点,通过bfs/dfs找到离这个点最远距离的点。确定这个点之后,在通过这个最远距离的点,通过bfs/dfs找到离它最远距离的点,这两个点之间的距离就是树的直径了了。边权为非负数才行。
树型DP: 则是通过集合的思想求其直径:边权可正可负。
其思想是,遍历所有的点,将当前所遍历到的点都当作挂钩,求经过这个挂钩但是不经过父结点的最长路径。(因为此树型dp依旧使用到了dfs的思想, 为了防止死循环,如:一直A->B,B->A...... 所以不能让其dfs能够回父结点.) 思路: 1.如果全部为正权边的时候 随机选择一个点:
但是要注意未必包含了A的就是最长路径,除非此树皆为正权边,无负权边,才满足。
证明:如果边全为正权边,为什么这样的思路是正确的?
假设u到v1的距离最大为d1, u到v2的距离第二大,d2. 而此树的一条最长路径为x->y.
1.如果最长路径x->y经过u点。
则x->y的路径就是 x -> u -> y 。
而u-> x 的路径d3, u -> y的路径d4
一定d1 + d2 >= d3 + d4. 所以如上所说,求u的子树的两个最大值相加成立。
2.如果最长路径x -> y 不经过u点。
由于边全为正权边。 x -> k(某个中间点) -> y 。 而又是一个连通图, 所以 k 实际上一定可以到u.
打开老毛子固件设置如下
参考教程如下:http://www.360doc.cn/mip/965709188.html?ivk_sa=1024320u
第一步:
第二步:
第三步:保存重启
在办公室经常要用到打印机,而一般都是大家共用一台打印机,它的连接方式属于共享打印机,而有时候我们会遇到共享打印机拒绝访问,这又是什么原因呢?其实原因很简单,那就是共享的权限问题,我们只需要简单的设置一下就可以解决,也不需要安装其他软件和去折腾打印机本身。下面就教给大家。
方法一、
1、首先,在桌面开始菜单点击右键,在打开的菜单栏当中点击“控制面板”。
2、然后把查看方式修改为“大图标”,找到“设备和打印机”点击进入。
3、在共享的打印机上单机右键,选择“属性”。
4、进入属性,切换到“共享”选项卡,在共享名字中输入正确的共享名字,
5、在打印机属性界面点击“安全”选项卡,点击“高级”。
6、点击“立即查找”,在搜索的结果框中双击“everyone”。
7、在“选择用户或组”中点击确定,
8、接着回到打印机属性界面“安全”选项卡中,在“组合用户名”下面选中“everyone”,在下面权限框中把所有的选项卡都勾选“允许”,点击应用并确定,重启计算机即可。
方法二、如果还是没有解决,用下面的方案:
1、点击“我的电脑”→ “右键”→ “管理”。
2、在弹出的对话框左面,点击“本地用户和组”。
3、然后双击“本地用户和组”下面的“用户”。
4、在界面右面找到Guest,右键“Guest”→“属性”。
5、在弹出的对话框里把“账户已禁用”前面的勾去掉,问题就解决了。
所以共享打印机拒绝访问的关键是用户组的权限问题,你的电脑没有开发用户权限所以就无法使用访客组的共享打印机了,解决方案就是开放权限即可,所以设置几下就解决了,根本没难度。
计算机通俗来讲就是电脑,又分为台式机和笔记本。当然,两种产品各有优缺点,台式机在同等价位配置更高,能够做更多的工作,并且容易换配件,但是缺点就是不便于携带;笔记本可以更好的携带,适用于广大的办公人群,但是由于其集成度太高,配件不容易更换,当然,除了硬盘和内存,其他硬件基本没有自行更换的可能。
那么计算机配置中硬件有哪些?又要如何选择呢?
①cpu:计算机cpu是计算机的处理中心,目前CPU品牌分为英特尔和AMD两种。并且有i3,i5,i7,i9四个代数,代数越好越好,但是不是绝对的。按照品牌英特尔接口型号分为LGA 1156、LGA 1155(Sandy Bridge)、LGA 1366、LGA 775。AMD接口型号分为Socket AM3、Socket AM2+、Socket AM2。按系列分,英特尔分为赛扬、奔腾、灵动、酷睿,AMD分为速龙、羿龙。
②主板:主板是计算机的核心,没有主板就没有计算机的产生,主板结构分为 AT、 Baby-AT、 ATX、 Micro ATX、LPX、 NLX、 Flex ATX、EATX、WATX以及 BTX等结构。提及主板,不得不提的是主板上有很多接口,例如pcie , HDMI可用于外接显示器等等,usb接口用于鼠标键盘和u盘等usb设备,有usb3.0和usb2.0之分,区别在于传输速度,3.0更快,不过用于鼠标键盘就无所谓了,2.0完全没问题,当然还有网口,用于连接宽带。主板上还有一个重要模块,那就是主板bios,也就是开机引导用的,不要轻易刷bios,刷坏了电脑也就坏了,不容易恢复。
③显卡:显卡是可以使显示器显示的重要配件,没有显卡就不可以显示,他是图形核心对于喜欢玩游戏的朋友来说,显得特别重要。目前,桌面显卡市场常见的品牌主要是AMD和NVIDIA两家,也就是我们常说的A卡和N卡。显卡又分为独立显卡和集成显卡,当然,现在独立显卡使用较多,因为其性能会比集成显卡好很多,并且集成显卡会占用大量内存资源,影响性能。
④内存:电脑内存用于数据交换,也就是在开机或者运行时存储暂时性的缓存文件和后台进程,为什么都有了硬盘还需要内存呢?因为内存读写速度远远高于硬盘,而电脑运行文件很多,硬盘速度可能不够,这时候就需要内存作为中转站,防止卡顿。下面是内存类型,有三类数据:第一是代数,第二是频率,第三是容量,例如ddr3 1600 4G,也就是3代内存,1600的频率,4G容量。现代内存有代数ddr1,ddr2,ddr3,ddr3l,ddr4,频率就不详细说明了,容量有1G,2G,4G,8G,16G之分,看自己需要购买。
⑤硬盘:硬盘是数据存储中心,计算机数据几乎全部保存在硬盘中。需要时cpu运算将其调出经过内存再传输回去,所以硬盘的速度几乎决定了电脑的运行速度。按种类分为固态硬盘和机械硬盘,固态硬盘拥有较高的传输速率,大约是机械硬盘的4倍,最高每秒1G都可以,使用需要分区,并且对齐4k,否则会影响性能,机械硬盘分为5400r和7200r,转数决定速度,较大的厂商有希捷和西数等等。按照接口类型分可分为scsi,IDE,sata2,sata3,m.2几种,其中m.2传输速率最快。理论值3G/S,当然现在主流硬盘还是sata3,具体用什么样的要根据自己电脑配置而言。
⑥cpu散热风扇:注意,这个部件至关重要。是在涂完cpu散热硅脂之后安装的散热部件,没有他,电脑将会因为cpu温度过高而停止运行,但是可选择性较大,看自己要求。
⑦其他:电源:这个是相对于台式机而言的,台式机需要独立电源,并且要一直接着电源,可选择性也比较大,就看自己而言了。
总结:讲了这么多硬件,大家应该有所了解了,如果说想要自己配电脑,请咨询专业人士。可能会有错误或者遗漏。欢迎补充。
举报/反馈
在计算机中cpu指的是中央处理器,也叫中央处理单元,即执行计算机内部大部分处理的单元,它是计算机的核心和大脑。
本文操作环境:Windows7系统、Dell G3电脑。
在计算机中cpu指的是中央处理器,也叫中央处理单元,即执行计算机内部大部分处理的单元,它是计算机的核心和大脑。
CPU有两个组件:
● 控制单元:从存储器中提取指令并解码并执行它们
● 算术逻辑单元(ALU):处理算术和逻辑运算
● 寄存器:代表内部存储器单元,是临时存储器位置;它保存二进制数据并存储ALU信息处理中使用的数据,指令,计数器和地址。
● 总线:它在存储器和寄存器之间传输数据。用于与内部高速缓冲存储器通信,称为背面总线;用于与CPU,内存,芯片组和AGP插槽之间进行数据传输的主总线称为前端总线。
为了正常工作,CPU依赖于系统时钟,存储器,辅助存储器以及数据和地址总线。
CPU操作的4个步骤
CPU用于接收数据输入,执行指令和处理数据信息。它与输入/输出(I / O)设备通信,输入/输出(I / O)设备向CPU发送数据和从CPU接收数据。
大多数CPU分4个阶段处理数据:取,解码,执行和写回。
取:
该过程的第一步是实际获取要处理的指令,这涉及CPU查询系统的内存以检索二进制数据(0和1)。
解码:
该阶段涉及CPU对指令进行解码并将其分成与其每个组件相关的部分(见下文)。
执行:
这就是CPU的所有组件齐声结合在一起的地方。例如,如果收到的指令是一个简单的数学方程式,那么CPU将调用ALU(见下文)来执行计算。
写回:
最后一个阶段涉及CPU将指令的结果(在我们的示例中为简单求和的结果)写入存储器中的特定位置。根据指令,可将此结果写入CPU自身的寄存器以进行进一步处理,或者在某些情况下直接写入系统的主存储器。某些指令的结果可能要求CPU改变标志寄存器中的数据状态,或者,在所谓的跳转中,递增或递减程序计数器。
计算机上的处理器
一些计算机使用两个或更多的处理器。它们由在同一块板上或单独板上并排放置的独立物理CPU组成。每个CPU都有一个独立的接口,独立的缓存以及到系统前端总线的各个路径。多处理器是需要多任务处理的密集并行任务的理想选择。多核CPU也很常见,其中单个芯片包含多个CPU。
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!
一、开启命令 supervisor的服务器端部分启动命令:
sudo unlink /var/run/supervisor.sock
supervisord -c /etc/supervisor/supervisord.conf
此时默认开启了所有服务
supervisor的客户端部分命令:
supervisorctl status 查看进程运行状态
supervisorctl start 进程名 启动进程
supervisorctl stop 进程名 关闭进程
supervisorctl restart 进程名 重启进程
supervisorctl update 重新载入配置文件
supervisorctl shutdown 关闭supervisord
supervisorctl clear 进程名 清空进程日志
supervisorctl 进入到交互模式下。使用help查看所有命令。
start stop restart + all 表示启动,关闭,重启所有进程。
二、关闭命令 supervisorctl stop all先关闭supervisor服务
之后再关闭supervisord服务
kill -9 pid
systemctl status nginx.service #查看日志
sudo apt-get install nginx #安装
/etc/init.d/nginx start #启动
/etc/init.d/nginx stop #关闭
/etc/init.d/nginx restart #重启
基本上这几个日常就够用了。
最近需要使用Simscape搭建逆变器主电路,于是自己就研究了一下(参考了部分博主文章,链接见文章最后)
软件版本:R2021a
进入Simulink,打开Library Browser
找到Simscape库,做电力电子相关仿真的话一般用图中红框所选的库。
然后找到自己需要的元件,按照电路拓扑搭建好仿真模型。
需要注意的有以下几点:
1、传感器测量电流电压需要用到PS-Simulink Converter(物理模型信号->仿真模型信号转换),该元件位于Simscape的下级目录Utilities目录下,下面的Solver Configuration模块也位于此;同样,如果需要将仿真模型信号转换为物理信号,则需要用到Simulink-PS Converter;
2、对于这种电路一定要接地,不然运行会报错,提示无法完成微分方程求解之类的;
3、所有基于Simscape建立的模型都要连接Solver Configuration模块(如上图所示),把这个模块的唯一输出端连接到电路的任一处即可。
一般求解器参数只需要用默认的即可(如下图所示),如有错误再修改其中的部分选项。
部分参数含义:
start simulation from steady state:意思是从稳态开始仿真;
Consistency tolerance:容忍度,如果模型运行报错提示不收敛,可以试着把这个值改大些;
Use local solver:使用本地的求解器;
在Simscape模型中,MathWorks建议通过继续使用全局可变步长求解器并通过每个网络求解器配置块将模型内的物理网络切换到本地固定步长求解器来实现固定步长求解。本地求解器的选择是:
Backward Euler趋向于抑制振荡,但更稳定,尤其是在增加时间步长的情况下。
Trapezoidal可以更好地捕获振荡,但不稳定。
Partitioning使您可以通过将与Simscape网络相对应的整个方程组划分为一系列较小的方程组,从而提高实时仿真速度。并非所有网络都可以分区。但是,当可以对系统进行分区时,此求解器可以大大提高实时仿真速度。
Sample time:采样时间;
Partition method:分区方法;
Robust simulation — 提高仿真鲁棒性。
Fast simulation — 提高仿真性能。
余下的参数待理解后再更新,具体可参考Solver Configuration模块的Help。
MATLAB R2021a安装包百度网盘链接:MATLAB R2021a_免费高速下载|百度网盘-分享无限制 (baidu.com) 提取码:85jf
参考:
Simulink Simscape基础仿真电路_ouening的博客-CSDN博客_simulink电路仿真
Simscape仿真的求解器研究_RedSheep的博客-CSDN博客
view 能够水平居中 不用设置固定宽和高 width : auto height : auto margin : 20rpx 注意:需要给盒子添加背景色,才能看到效果
枚举类型 : 描述一种事物的所有情况|所有可能|所有实例
1.通过enum关键字定义枚举类型
2.枚举的成员,字段都作为当前枚举类型的实例存在,默认被public static final修饰
3.定义的枚举类型都会隐式的继承自java.lang.Enum 这是所有Java语言枚举类型的公共基类。
4.在枚举类型中构造器默认私有
public class Class001_Enum { public static void main(String[] args) { System.out.println(WeekDays.SUN); //使用枚举类型的实例 WeekDays sun = WeekDays.SUN; System.out.println(sun.getName()); //name() 获取枚举类型实例的字段名 System.out.println(sun.name()); //获取枚举对象在枚举类的字段列表中的索引值 System.out.println(sun.ordinal()); //values() 获取当前枚举类型的所有实例 WeekDays[] arr = sun.values(); System.out.println(Arrays.toString(arr)); sun = WeekDays.MON; //switch()中jdk5新增对枚举的支持 switch (sun){ case MON: System.out.println("星期一"); break; case TUES: System.out.println("星期二"); break; case SUN: System.out.println("星期天"); break; } } } //一周的中的天数 周1~周7 enum WeekDays{ //枚举字段|当前枚举类型的实例 MON,TUES,SUN("星期天"); // public static final WeekDay MON = new WeekDay(); //成员变量 private String name; //构造器 private WeekDays(){} private WeekDays(String name){ this.
一、博客背景 本篇博客仅作为工作记录使用,记录自己解决问题的过程,同样,本篇博客中介绍的方法不适合所有的人解决冲突。
二、分支介绍 master分支
test分支
dev-wuzhu分支(自己开发的分支)
dev-xiali分支(同事开发的分支)
分支使用前提:我现在所在的公司的发布流程是,先将自己的分支合并到test上,如果test分支发布且测试没问题后,合并到master分支发布生产环境,且不允许将test分支往自己的分支上合并,因为这样会存在将在test分支上,尚未测试通过的分支合并到本地分支时,在往master分支合并时,发布到生产环境
三、遇到问题 某天,同事和我同步修改了一个A.java文件,且同事先提交的代码,在我往test分支合并代码时出现了冲突。
四、解决方案 在自己的dev-wuzhu分支的基础上,在新建一个分支dev-wuzhu-2,然后再将test分支上的代码合并到dev-wuzhu-2的分支上,在本地解决冲突后,再将dev-wuzhu-2的分支合并到test分支上,这样test分支上就已经有了自己的功能代码,也有了同事的功能代码。然后再将dev-wzhu-2这个临时解决冲突的分支删除。最后发布生产环境时,将自己的dev-wuzhu的分支合并到master上去,也不会包含同事的分支代码
当然如果你们公司允许直接在测试分支上改代码的话,那么你可以在开发工具上,将测试分支拉取下来,然后将你的开发分支合并到测试分支,然后解决冲入并直接push到远程
目录 windows-exporter部署手册来源说明兼容性 部署方式自定义配置使用配置文件 windows-exporter部署手册 来源 https://github.com/prometheus-community/windows_exporter
说明 适用于 Windows 机器的 Prometheus 导出器。
兼容性 windows_exporter 支持 Windows Server 版本 2008R2 和更高版本,以及桌面 Windows 版本 7 和更高版本。
部署方式 下载exporter:
https://github.com/prometheus-community/windows_exporter/releases/download/v0.16.0/windows_exporter-0.16.0-amd64.exe
可直接执行.exe文件,也可自定义方式启动,直接启动将使用默认配置:
自定义配置 Flags: -h, --help Show context-sensitive help (also try --help-long and --help-man). --collectors.dfsr.sources-enabled="connection,folder,volume" Comma-seperated list of DFSR Perflib sources to use. --collectors.exchange.list List the collectors along with their perflib object name/ids --collectors.exchange.enabled="" Comma-separated list of collectors to use. Defaults to all, if not specified.
1.mysql, 其条件执行顺序是 从左往右,自上而下
where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个
2. SQL server、orcale, 其条件执行顺序是从右往左,自下而上;
由于解析是从BOTTOM到TOP进行的,因此应该先编写表联接,然后再执行WHERE子句的任何条件,并在联接完成后将筛选出最大记录的条件放在最后。
1.连接D455到Jetson Nano的USB接口上 2.系统右上角“About this Computer”,查看系统的Ubuntu版本号(第四步会用到) 3.注册public key(照抄即可)
sudo apt-key adv --keyserver keys.gnupg.net --recv-key 6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE 4.添加服务地址到资源列表中(根据第二步获取的系统版本号,选择不同的命令)
Ubuntu 16: sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo xenial main" -u Ubuntu 18: sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u 5.更新资源列表
sudo apt-get update 6.运行软件,观看效果 sudo realsense-viewer
在我们用word或wps编辑文档的时候,有时会出现空白页。通常我们会使用Delete键或Bacspace键来进行删除,但当我们删除完时,可能会使整个文档的页面布局排版错误,这就会变得很麻烦。因此下面,我将告诉大家这个问题的解决办法。
鼠标放在空白页,选择页面布局,点击页面布局右下角的图标。如下图弹出“页面设置”对话框,找到“板式”,将节点起始位置由“新建页”,选择为“持续本页”。如下图 上面是word中的解决办法,同样在wps中也可以找到它的设置。
目录 rabbitmq-exporter部署方式来源说明部署方式docker部署:配置文件配置 扩展的 RabbitMQ 功能 rabbitmq-exporter部署方式 来源 https://github.com/kbudde/rabbitmq_exporter/
说明 RabbitMQ 指标的 Prometheus 导出器。数据由prometheus 抓取。
请注意这是一个非官方插件。还有一个来自RabbitMQ.com的官方插件。查看与官方出口商的比较
部署方式 docker部署: rabbitmq_exporter 与 rabbitmq 容器共享网络接口 -> 可以使用 localhost 和默认用户/密码(guest)。
启动rabbitMQ docker run -d -e RABBITMQ_NODENAME=my-rabbit --name my-rabbit -p 9419:9419 rabbitmq:3-management 在容器中启动 rabbitmq_exporter docker run -d --net=container:my-rabbit kbudde/rabbitmq-exporter 现在您的指标通过http://host:9419/metrics公开
配置文件配置 文件下载:
https://github.com/kbudde/rabbitmq_exporter/releases/download/v1.0.0-RC8/rabbitmq_exporter-1.0.0-RC8.linux-amd64.tar.gz
解压后进入目录;
Rabbitmq_exporter 可以使用 json 配置文件或环境变量进行配置。
Rabbitmq_exporter 需要“conf/rabbitmq.conf”中的配置文件。如果您在容器 (docker/kubernetes) 中运行导出器,则配置必须在“/conf/rabbitmq.conf”中。文件名可以用标志覆盖:
./rabbitmq_exporter -config-file config.example.json 具体格式如下:
{ "rabbit_url": "http://127.0.0.1:15672", "rabbit_user": "guest", "rabbit_pass": "guest", "publish_port": "9419", "
目录 postgres-exporter部署书册来源说明兼容性部署方式docker部署:二进制文件部署: postgres-exporter部署书册 来源 https://github.com/prometheus-community/postgres_exporter
说明 用于 PostgreSQL 服务器指标的 Prometheus 导出器。
兼容性 PostgreSQL 可用版本:9.4, 9.5, 9.6, 10, 11, 12,13
部署方式 docker部署: Start an example database:
docker run --net=host -it --rm -e POSTGRES_PASSWORD=password postgres Connect to it:
docker run --net=host -e DATA_SOURCE_NAME="postgresql://postgres:password@localhost:5432/postgres?sslmode=disable" quay.io/prometheuscommunity/postgres-exporter 二进制文件部署: 使用环境变量运行:
export DATA_SOURCE_NAME="user=postgres_exporter host=192.168.12.50 password=123456a? port=9999 dbname=postgres sslmode=disable" ./postgres_exporter <flags> 注:
PostgreSQL 服务器的数据源名称 必须通过DATA_SOURCE_NAME环境变量设置。
解压进入目录执行./postgres_exporter --help可查看具体配置项:
usage: postgres_exporter [<flags>] Flags: --help Show context-sensitive help (also try --help-long and --help-man).
BIOS,Basic Input Output System,即基本输入输出系统,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自举程序。如果设置稍有不当,电脑就无法正常启动,有时候电脑出现故障时,也可以选择恢复出厂设置来解决问题,那么如何才能恢复BIOS的出厂设置呢?让高手来告诉你吧。
快速还原BIOS出厂设置的步骤:
方法一:
1、开机,待电脑第一屏幕信息出现时,根据屏幕下方的信息提示,如“Press DEl Enter Bios”、“Press F1 to Run Setup”之类信息时,按相应的键进入BIOS程序界面。
2、在BIOS界面中,将光标移动到“Load Optimized Default”项,并按回车键。
3、然后在弹出的窗口中选择“OK”并按回车键来实现恢复出厂设置。
方法二:
1、就是将主板上的纽扣电池拆下,并保持15钞以上,再安装上去,即可消除BIOS信息,使其恢复出厂设置。
2、当然,有的主板上还配置有“硬跳线”,只需要按提示用跳线帽将“2”和“3”引脚短接一下,即可实现消除BIOS信息功能。
以上就是高手教给大家的两种恢复BIOS出厂设置的简单步骤,如果你是要装系统,还是电脑遇到故障时,就可以通过上述的步骤轻松恢复BIOS出厂设置,重新设置BIOS。
实验8-1-1 利用指针找最大值 (10 分)
本题要求实现一个简单函数,找出两个数中的最大值。
函数接口定义: void findmax( int *px, int *py, int *pmax ); 其中px和py是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。
裁判测试程序样例: #include <stdio.h> void findmax( int *px, int *py, int *pmax ); int main() { int max, x, y; scanf("%d %d", &x, &y); findmax( &x, &y, &max ); printf("%d\n", max); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 3 5 输出样例: 5 作者
张泳
单位
浙大城市学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
git 修改远程分支名称
1、 git branch -m 旧分支名 新分支名
2、 git push --delete origin 旧分支名
3、将新分支名推上去 :
git push origin 新分支名 4、将新本地分支和远程相连 :
git branch --set-upstream-to origin/新分支名
准备工作 MySQL 该版本下载地址:
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
mysql_install-v1.0.sh脚本如下:
#!/bin/bash # MySQL 安装日志信息 log=/var/log/mysql_install.log # MySQL压缩包路径 MySQLPath=/root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz # sql 文件 sqlfile=/root/test.sql # 卸载系统⾃带的MARIADB rpm -qa|grep mariadb |xargs yum remove -y > /dev/null # 解压MYSQL安装包 echo '====================================' echo 'Unzip....' tar -zxf $MySQLPath -C /usr/local/ mv /usr/local/mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql if [ $? -ne 0 ];then echo 'MySQL unzip failed!!!' exit else echo '====================================' echo 'Unpack the success!' fi # 创建MYSQL⽤户和⽤户组 groupadd mysql useradd -g mysql mysql mkdir /usr/local/mysql/data chown -R mysql:mysql /usr/local/mysql echo '====================================' echo 'User created successfully!
目录 oracledb-exporter部署手册来源说明部署方式docker部署:二进制文件安装设置开机自启 关于与数据库的 TLS 连接 oracledb-exporter部署手册 来源 https://github.com/iamseth/oracledb_exporter
说明 一款模仿 MySQL 导出器的 Oracle的Prometheus导出器。
目前已公开的指标:
oracledb_exporter_last_scrape_duration_secondsoracledb_exporter_last_scrape_errororacledb_exporter_scrapes_totaloracledb_uporacledb_activity_execute_countoracledb_activity_parse_count_totaloracledb_activity_user_commitsoracledb_activity_user_rollbacksoracledb_sessions_activityoracledb_wait_time_applicationoracledb_wait_time_commitoracledb_wait_time_concurrencyoracledb_wait_time_configurationoracledb_wait_time_networkoracledb_wait_time_otheroracledb_wait_time_scheduleroracledb_wait_time_system_iooracledb_wait_time_user_iooracledb_tablespace_bytesoracledb_tablespace_max_bytesoracledb_tablespace_freeoracledb_process_countoracledb_resource_current_utilizationoracledb_resource_limit_value 部署方式 docker部署: docker run -d --name oracle -p 1521:1521 wnameless/oracle-xe-11g-r2:18.04-apex docker run -d --name oracledb_exporter --link=oracle -p 9161:9161 -e DATA_SOURCE_NAME=system/oracle@oracle/xe iamseth/oracledb_exporter 注:
配置项解释–link=oracle与容器名为oracle的数据库建立连接-p 9161:9161对外开放的端口-e DATA_SOURCE_NAME=system/oracle@oracle/xe数据源配置信息(管理员账号/密码@数据库/库名)iamseth/oracledb_exporter镜像名 二进制文件安装 注:
确保在启动前正确设置环境变量 DATA_SOURCE_NAME。DATA_SOURCE_NAME 应采用 Oracle EZCONNECT 格式:
https://docs.oracle.com/en/database/oracle/oracle-database/19/netag/configuring-naming-methods.html#GUID-B0437826-43C1-49EC-A94D- B650B6A4A6EE
19c Oracle 客户端支持增强型 EZCONNECT,您可以故障转移到备用数据库或从活动备用数据库收集一些重要指标并指定一些附加参数。在 19c 客户端中,您也可以连接 12c 主/备用数据库 😃
例如:
# export Oracle location: export DATA_SOURCE_NAME=system/password@oracle-sid # or using a complete url: export DATA_SOURCE_NAME=user/password@//myhost:1521/service # 19c client for primary/standby configuration export DATA_SOURCE_NAME=user/password@//primaryhost:1521,standbyhost:1521/service # 19c client for primary/standby configuration with options export DATA_SOURCE_NAME=user/password@//primaryhost:1521,standbyhost:1521/service?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.AIDA32
这是一个综合性的系统检测分析工具,功能强大,易于上手。它可以详细的显示出PC每一个方面的信息。支持上千种(3400+)主板,支持上百种(360+)显卡,支持对并口/串口/U##这些PNP设备的检测,支持对各式各样的处理器的侦测。目前AIDA32已经有多语言的支持并且加入了病毒检测功能。AIDA32拥有数十种测试项目,主要包括CPU、主板、内存、传感器、GPU、显示器、多媒体、逻辑驱动器、光驱、ASPI、SMART、网络、DirectX、基准测试等等,支持的平台包括了Intel、AMD、VIA、nVIDIA、SIS等。
注意:AIDA32有一个小BUG,它显示的nVIDIA的FX系列GPU的核心频率为其2D频率,目前还不能正确显示其3D频率。
http://file.mydrivers.com/tools/tweak/AIDA323935.zip
Everest ultimate(原名AIDA32)2.81.621版For Win9x/ME/NT4/2000/XP(2006年6月22日发布)Everest ultimate是一个测试软硬件系统信息的工具,它可以详细的显示出PC每一个方面的信息。支持上千种(3400+)主板,支持上百种(360+)显卡,支持对并口/串口/USB这些PNP设备的检测,支持对各式各样的处理器的侦测。目前Everest Home已经能支持包括中文在内的30种语言,让你轻松使用。而且经过几次大的更新,现在的Everest已经具备了一定的硬件测试能力,让您对自己电脑的性能有个只管的认识。最新版本更新如下:1.修正了Intel i940/945/955/975/E7230芯片组信息显示方面的错误。2.增加对Ageia物理卡的支持。3.修正了Geforce 6800XT显卡信息显示方面的错误
http://count.mydrivers.com/downl ... t_ultimate_0621.zip
http://count.mydrivers.com/downl ... t_ultimate_0621.zip
2.SiSoftware Sandra 2005
SiSoftware Sandra Pro 2005 SR3 1069版For 2000/XP(2005年12月30日新增)SiSoftware Sandra 一套功能强大的系统分析、诊断、测试和报告工具,2005个人版包括超过75 种以上的分析与测试模组,主要有:能连接到远程系统、数据库、PDA和SmartPhone等数据来源进行远程分析、诊断和测试;支持(IPX/SPX, TCP/IP)网络协议/支持(ADO, OLEDB, ODBC)数据库;支持(SCSI, SATA, ATA, ATAPI)存储器和可移动存储器;支持多种桌面/服务器平台(Win32 x86, Win64 x64, Win64 IA64);两种专用internet带宽/速度基准测试(Internet/ISP Connection和Peerage Benchmarks);支持WindowsXP SP2和2003 SP1安全中心;为Windows2000, XP和2003设计的本地UNICODE码应用;关键应用程序列表(地址簿、杀毒软件、邮件客户端、防火墙、即时通讯软件、java虚拟机、媒体播放器、新闻组阅读器、网络浏览器等); 支持多线程、多核心、多处理器系统;系统应用软件和程序库完全列表;环境监视向导功能(实时监视温度、风扇转速、电压、电源和热阻)
HTTP下载1
http://file.mydrivers.com/tools/tweak/sanpro2005.SR3-1069-JOK.exe
HTTP下载2
http://file2.mydrivers.com/tools ... 05.SR3-1069-JOK.exe
3.HWiNFO32
HWiNFO32 1.54版For Win9x/NT4/2000/Me/XP(2005年6月27日发布)电脑硬件检测软件。它主要可以显示出处理器、主板芯片组、PCMCIA接口、BIOS版本、内存等信息,另外HWiNFO还提供了对处理器、硬盘以及CD-ROM的性能测试功能。每个月都要出现许多我们知道或者不知道的电脑硬件,因此建议大家要经常下载这款测试软件的新版本。新版本增加了对nVidia nForce4 Intel Edition的支持;增加了对AMD Secure Virtual Machine feature (Pacifica)的支持;增加了对VIA K8M890和P4M800CE芯片组的支持,加入了对nVidia GeForce 7800 GTX和Quadro FX 4500的检测能力,增强了对nVidia G70的支持……。推荐朋友们下载使用
**
版本:VS2019 设置 cl 环境变量(加入系统环境变量(PATH)) **
步骤:
1.找到cl.exe的所在路径,一般都在:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.28610\bin\Hostx64\x64(盘符可能不同,14.29.28610 可能不同)
2.在系统环境变量PATH中添加C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.28610\bin\Hostx64\x64 (此时是cl.exe的所在文件夹)
3.在系统环境变量PATH中再添加C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.28610\bin\Hostx64\x64\cl.exe(此时是cl.exe的完整路径)
4.在DOS窗口输入 cl 看看有没有相关信息出现,有就成功。没有的话关闭当前DOS窗口,打开新的DOS窗口在输入 cl ,祝君成功!
现在使用win10电脑的用户越来越多,但很多问题可能还不太懂怎么解决,例如像是内存不足的情况就让很多人苦恼,下面是学习啦小编整理的一些关于win10电脑提示内存不足的解决方法,供您参考。
win10电脑提示内存不足的解决方法
一、任务管理器关闭无用进程和程序
当你的win10系统内存占用率过高的时候,按下Ctrl + Alt +Delete打开任务管理器,找到其中无用的闲置的进程。
关闭的方法是选中该进程,按下快捷键Alt + E可以快速关闭进程,也可以右击关闭。
二、设置win10虚拟内存
当你的windows 10系统开启程序太多,几乎内存溢出的时候,会有提示:您的电脑虚拟内存不足或设置太低,影响电脑性能。这时候就需要设置虚拟内存来弥补电脑内存RAM不足。首先,点击win10任务栏的小白花,点击【我的电脑】。
在【此电脑】右击,选择【属性】。
点击【高级系统设置】。
点击【高级】——【设置】。如下图。
点击【高级】——【更改】。
点击剩余存储空间比较大的磁盘,比如我的E盘,然后勾选【自定义大小】,将初始大小和最大值大小都设置为2048,然后点击【设置】。如下图。
然后点击【确定】。重启电脑,改动生效。
三、利用msconfig关闭开机自启动程序
按下windows+R键,打开运行,输入【msconfig】,然后找到【启动】,将里面开机自启动的程序关闭,然后点击【应用】——【确定】,重启电脑生效。
>>>下一页更多精彩“解决win10开机内存和cpu占用的方法”
主板报警声大全_主板一直滴滴滴短响含义详解
在电脑使用过程中,有时我们会听到电脑主板发出类似报警的声音,这时候说明可能电脑主板出现了一定的问题,电脑主板报警的原因有很多,我们可以从报警的声音去区分到底哪里出现了问题,然后做出相应的处理。下面,小编给大家讲解电脑主板报警声的含义。
电脑主板报警声的含义介绍
【主板报警】主板警报声代表什么 电脑报警声含义大全
BIOS自检响铃含义
电脑电脑图解-1
一、Award BIOS自检响铃含义:
1短:系统正常启动。恭喜,你的机器没有任何问题。
2短:常规错误,请进入CMOS Setup,重新设置不正确的选项。
1长1短:RAM或主板出错。换一条内存试试,若还是不行,只好更换主板。
1长2短:显示器或显示卡错误。
1长3短: 键盘 控制器错误。检查主板。
1长9短:主板Flash RAM或EPROM错误,BIOS损坏。换块Flash RAM试。
不断地响(长声):内存条未插紧或损坏。重插内存条,若还是不行,只有更换一条内存。
不停地响:电源、 显示器 未和显示卡连接好。检查一下所有的插头。
重复短响:电源有问题。
无声音无显示:电源有问题。
主板报警电脑图解-2
二、AMI BIOS自检响铃含义:
1短:内存刷新失败。更换内存条。
2短:内存ECC较验错误。在CMOS Setup中将内存关于ECC校验的选项设为Disabled就可以解决,不过最根本的解决办法还是更换一条内存。
3短:系统基本内存(第1个64kB)检查失败。换内存。
4短:系统时钟出错。
5短:中央处理器(CPU)错误。
6短:键盘控制器错误。
7短:系统实模式错误,不能切换到保护模式。
8短:显示内存错误。显示内存有问题,更换显卡试试。
电脑电脑图解-3
9短:ROM BIOS检验和错误。
1长3短:内存错误。内存损坏,更换即可。
1.中文自然语言处理的一般流程 图片发自简书App
中文NLP一般流程
1. 获取语料
语料,是NLP任务所研究的内容
通常用一个文本集合作为语料库(Corpus)
来源:
已有语料
积累的文档
下载语料
搜狗语料、人民日报语料
抓取语料
2. 语料预处理
1.语料清洗
留下有用的,删掉噪音数据
常见的数据清洗方式 :
人工去重、对齐、删除和标注等,或者规则提取内容、正则表达式匹配、根据词性和命名实体提取、编写脚本或者代码批处理等。
2.分词
将文本分成词语
常见的分词算法 :
基于字符串匹配的分词方法、基于理解的分词方法、基于统计的分词方法和基于规则的分词方法
3.词性标注
给词语打词类标签,如形容词、动词、名词等
在情感分析、知识推理等任务中需要
常见的词性标注方法
基于规则
基于统计
如基于最大熵的词性标注、基于统计最大概率输出词性和基于 HMM 的词性标注。
4.去停用词
去掉对文本特征没有任何贡献作用的字词,比如标点符号、语气、人称等
3.特征工程
把分词表示成计算机能够计算的类型,一般为向量
常用的表示模型 :
词袋模型(Bag of Word, BOW)
TF-IDF 词向量
One-hot Word2Vec 4. 特征选择
选择合适的、表达能力强的特征
常见的特征选择方法 :
有 DF、 MI、 IG、 CHI、WLLR、WFO
5. 模型训练
机器学习模型 :
KNN、SVM、Naive Bayes、决策树、GBDT、K-means 等
深度学习模型
CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN
注意过拟合、欠拟合问题
读取本地EXCEL数据 import pandas as pd df = pd.read_excel('/home/kesci/input/pandas1206855/pandas120.xlsx') 保存成CSV文件 df.to_csv('normal.csv',index=False,sep=',') 将字典创建为DataFrame data = {"grammer":["Python","C","Java","GO",np.nan,"SQL","PHP","Python"], "score":[1,2,np.nan,4,5,6,7,10]} df = pd.DataFrame(data) df out:
提取含有字符串"Python"的行 #方法一 df[df['grammer'] == 'Python'] #方法二 results = df['grammer'].str.contains("Python") results.fillna(value=False,inplace = True) df[results] out:
提取popularity列满足某条件的行 提取popularity列中值大于3的行
df[df['popularity'] > 3] 提取popularity列值大于3小于7的行
df[(df['popularity'] > 3) & (df['popularity'] < 7)] 删除指定行/指定列 删除指定行
new_df = df.drop(index=‘行索引’)new_df = df.drop(‘行索引’, axis=‘index’)new_df = df.drop(‘行索引’, axis=0) 删除指定的多行
new_df = df.drop(index=[‘行索引1’, ‘行索引2’])new_df = df.drop([‘行索引1’,‘行索引2’], axis=‘index’)new_df = df.drop([‘行索引1’, ‘行索引2’], axis=0) 删除指定列
目录 一、配置External Tools二、在项目中安装PyQt5包三、新建ui文件四、结束语 一、配置External Tools 由于PyCharm与anaconda基本已经是绑定组合了,因此在装好的anaconda的base环境下是含有pyqt5的,我们可以先把External Tools配置好,这样在以后的其他项目中,就无需再配置它了:
打开自己的任一项目,在File目录下打开设置Settings:
在Tools一栏下找到External Tools,点击“+”,出现Create Tool界面:
分别添加“Pyqt designer”和“PyUIC”:
“Pyqt designer”参数:
Name:Pyqt designer
Description:for the realization of image visualization
Program: Anaconda3目录下的Library\bin\designer.exe
Working directory:$FileDir$
“PyUIC”参数:
Name:PyUIC
Description:File of .ui to .py
Program: Anaconda3目录下的python.exe
Arguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$
二、在项目中安装PyQt5包 对第一步做一下解释:我们只是在配置External Tools时用到了conda的base环境中自带的pyqt5包,这么做的原因是因为在自己的项目中安装pyqt5之后,有可能出现文件不齐全的情况,虽然不影响码代码环节,但却十分影响配置External Tools的环节。
接下来,在自己的项目中安装pyqt5包,在自己的项目环境下执行命令:
pip install PyQt5
或
conda install PyQt5
三、新建ui文件 我们通过External Tools中的Pyqt designer新建界面:
在项目目录下的任意位置通过右键菜单栏找到我们之前配置好的Pyqt designer:
出现界面:
接下来,就可以使用Pyqt,制作想要的界面了,具体的教程大家可以自行搜索一下,或者找一些具体案例自行研究,例如用Pyqt制作的计算器。下图是我根据自己的需要制作的一个界面,保存之后就可以在项目目录下看到它:
在ui文件上通过右键菜单栏找到PyUIC,将其转换为py文件:
点开新生成的py文件,我们的可视化界面已经被转换为代码形式,贴上根据我的ui文件所生成的py文件的代码: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'xysy_jieba_Homework_Mainwindow.
目录 kafka-exporter部署手册来源说明兼容性部署方式:docker方式二进制文件方式 具体配置描述 kafka-exporter部署手册 来源 https://github.com/danielqsj/kafka_exporter
说明 Prometheus 的 Kafka 导出器。有关 Kafka 的其他指标,请查看 JMX 导出器JMX 导出器。
兼容性 Apache Kafka 版本 0.10.1.0及以上。
部署方式: docker方式 docker pull danielqsj/kafka-exporter:latest 二进制文件方式 下载地址:
https://github.com/danielqsj/kafka_exporter/releases/download/v1.3.1/kafka_exporter-1.3.1.linux-amd64.tar.gz
解压进入当前项目目录后执行 ./kafka_exporter --help 可查看具体配置方式:
usage: kafka_exporter [<flags>] Flags: -h, --help Show context-sensitive help (also try --help-long and --help-man). --web.listen-address=":9308" Address to listen on for web interface and telemetry. --web.telemetry-path="/metrics" Path under which to expose metrics. --topic.filter=".*" Regex that determines which topics to collect.
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。
1 程序功能简介 主要是通过实战 理解双重纹理。上图中的纹理由下面两张纹理混合各50%构成,如下:
2 程序代码-双重纹理 2.1 核心源码 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream> #include <learnopengl/filesystem.h> #include <cmath> #include <stb_image.h> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/type_ptr.hpp> //===================macro & header process start=================== //triangle draw test #include <learnopengl/shader_s.h> //===================macro & header process end=================== #define SHADER_ROOT_DIR "/Users/wangdaosheng/Desktop/X-Project/AGS_Repository/OpenGL/OpenGL-demo/openGLtest1/shader/" void framebuffer_size_callback(GLFWwindow* window, int width, int height); void processInput(GLFWwindow *window); // settings const unsigned int SCR_WIDTH = 800; const unsigned int SCR_HEIGHT = 600; int main() { // @1.
1、dfs深度优先搜索 dfs很讲究很执着,一条路不走到头不会回来,往树深处搜基于栈空间复杂度:o(h)树高第一次搜到的点:不具有最短性dfs就是递归不用区分,有些题需要剪枝,脑子里有回溯过程,dfs就很简单next_permutation的底层实现 #include<iostream> using namespace std; int n; int path[7]; bool st[7]; void dfs(int u) { for(int i=1;i<=n;i++) { if(u==n) { for(int i=0;i<n;i++) cout<<path[i]<<' '; cout<<endl; return; } else { if(!st[i]) { path[u]=i; st[i]=true; dfs(u+1); st[i]=false;//恢复战场 } } } return; } //回溯但不仅仅是回溯和循环有关,递归回溯模拟就是一条路走到黑 int main() { cin>>n; dfs(0); return 0; } //2021-07-15/09:02 为3的循环dfs模拟,先1 2 3走到黑,然后回溯到1 2,3被释放,遇见return就是删掉当前的dfs也就是回溯到上一步,放进去3又把2释放得以1开始的两个字典序1 2 3,1 3 2剩余类似经典n皇后问题 #include<iostream> using namespace std; int n; char a[10][10]; bool hang[10],zdj[10],fdj[10]; void dfs(int u) { if(u==n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(a[i][j]=='Q') cout<<a[i][j]; else cout<<'.
场景:
本地启动springweb项目和react项目,域名都是localhost,springweb项目根路径/demo,react项目路径/react/index, react使用middlewareproxy代理接口(代理地址/api)请求到springweb项目上
springweb项目jsp页面(/demo/abc),iframe内嵌同域名下的react前端页面(/react/index),jsp跳转到内嵌的react页面时默认会携带cookie(因为同一个域名下),当react页面内调用spring项目接口时该页面发送请求携带的cookie存在缺失。
如:spring的web项目下有cookie: namevaluepathc1v1/c2v2/demo react页面发送请求时,只携带了c1的cookie,导致调用spring项目接口缺少必要的参数。
原因:
react页面和springweb项目虽然是同一个域名,但是当react的proxy设置的接口跟转发根路径与springweb项目不同时,默认发送的请求只会带有域名根路径 / 下的cookie,/demo下的cookie不会携带,所以丢失参数。
解决方式:
react的proxy设置代理路径为/demo,保持和springweb项目路径一致,就可以把c2的cookie也带上了。
对于电脑,大伙都熟悉吧,它是我们身边最常见的办公、娱乐工具,但在使用时,总会出现这样那样的问题, 比如:电脑认不到硬盘,那么,电脑认不到硬盘怎么回事呢?下面我们就来详细介绍一下:电脑认不到硬盘怎么回事以及电脑开机认不到硬盘处理方法?希望可以给大家一些帮助和启示!
电脑认不到硬盘怎么回事:
1:开机之后系统没有找到或者是不能识别出硬盘
这类情况会导致系统法识别出硬盘,而它的处理方法非常简单,因为,硬盘和主板之间一般不会有兼容性的问题,所以,有可能是硬盘和主板之间的连线出现了问题,因此,不妨更换硬盘和主板之间的连线。若不是连线问题的话,那则要看硬盘主从线是否设置正确,若不正确,则要及时纠正,这样才能读取到硬盘。
2:BIOS设置不当导致硬盘出问题
以上这类情况并不是用户导致的,因为,如今的主板都有自动检测硬盘分类、型号的功能,所以,一般不会作出改变,因此,可能是部分主板在运行是出现了硬盘识别错误,导致系统无法找到硬盘。
此外,在BIOS中还能以选择硬盘的运行模式,不过,在设置时,一定要根据硬盘情况进行设置,以免出现其他错误。因此,若是BIOS设置不当而导致硬盘出问题的话,只要按照主板硬盘出问题和硬盘情况进行正确设置即可。
3:有主引导程序却无法启动硬盘
若出现以上这类情况,那么在处理时,只要在DOS模式下输入FDISK/MBR命令就可以了。因为,在FDISK命令文件中本身就包含了一个硬盘的主引导程序,这样可以很快的解决问题。
4:bios里能识别,但是系统无法识别
若出现以上这类情况,那么除了要跳线、设置主从盘之外,还要在设备管理器的控制器”—选择 “主要IDC通道”或“次要IDC通道”的属性,将“高级设置”――设备0――设备类型,如果是“无”,请改为“自动检测”,然后重启即可。
文章总结:电脑认不到硬盘怎么回事以及电脑开机认不到硬盘处理方法的相关知识就介绍到这里了,在电脑认不到硬盘时,要先看看是什么问题,然后在对症下药,这样才能起到事半功倍的效果。
什么,装修还用自己的钱?!齐家装修分期,超低年利率3.55%起,最高可贷100万。立即申请享受优惠
实现排序,并将null记录放在前面或者最后,
oracle直接使用 nulls first 、nulls last即可,
mysql实现的话,以下两种方式都可以
方式一
nulls first:
order by IF(ISNULL(field),0,1); nulls last:
order by IF(ISNULL(field),1,0); 方式二
nulls first:
order by NOT ISNULL(field); nulls last:
order by ISNULL(field); 另外,上面方式非null记录是没有进行排序的,直接在后面加上该字段即可实现,即:
order by ISNULL(field), field ASC|DESC;
order by IF(ISNULL(field),1,0),field ASC|DESC; ————————————————
版权声明:本文为CSDN博主「打不死的小强lee」的原创文章,遵循CC 4.0 BY-SA版权协议
原文链接:https://blog.csdn.net/wenqiangluyao/article/details/94432665
仅供自学使用
测试类
public class SampleClass { public String test(String input){ return "hello world"; } } 用cglib对代码进行增强
public static void main(String[] args) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(SampleClass.class); enhancer.setCallback(new FixedValue() { @Override public Object loadObject() throws Exception { return "Hello cglib"; } }); SampleClass proxy = (SampleClass) enhancer.create(); System.out.println(proxy.test(null)); //拦截test,输出Hello cglib System.out.println(proxy.toString()); System.out.println(proxy.getClass()); System.out.println(proxy.hashCode()); } 测试结果输出
Hello cglib Hello cglib class com.zeus.cglib.SampleClass$$EnhancerByCGLIB$$e3ea9b7 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number at com.
Idea springboot应用,启动报错:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputExcept
就很奇怪 出现这样的问题,确保你没有在yml文件中有空格,那么有可能就是编码格式的问题
解决办法
一
将yml中的中文注释全部去掉,这个时候重启就可以了
二
第一种方法虽然行得通,但是没有注释,很多东西不太通俗行啊
1、在idea中的setting中设置编码格式,全部设置为UTF-8
以上应用之后,再启动!!!
如果还是不行请继续下面操作
2、将你现有的yml文件备份到桌面上,然后把idea中的yml文件全部删除,然后再一个个重新手动创建,将内容再copy进去
启动springboot程序
3、如果还是报错,再重复步骤1,反正就是将你path下所有显示的文件设置成UTF-8编码格式就好了,然后apply,启动应用
键扫描码ScanCode是由Linux的Input驱动框架定义的整数类型。键扫描码ScanCode经过一次转化后,形成按键的标签KeycodeLabel,是一个字符串的表示形式。按键的标签KeycodeLabel经过转换后,再次形成整数型的按键码keycode。在Android应用程序层,主要使用按键码keycode来区分。
按键上报流程及其转化 1.当底层Kernel驱动完成后,可以使用adb shell getevent查看上报事件
C:\Users\Admin>adb shell getevent add device 1: /dev/input/event4 name: "trinket-idp-snd-card Button Jack" add device 2: /dev/input/event3 name: "trinket-idp-snd-card Headset Jack" add device 3: /dev/input/event1 name: "goodix-ts" add device 4: /dev/input/event0 name: "qpnp_pon" add device 5: /dev/input/event2 name: "gpio-keys" /dev/input/event1: 0001 009e 00000001 /dev/input/event1: 0000 0000 00000000 /dev/input/event1: 0001 009e 00000000 /dev/input/event1: 0000 0000 00000000 2.查看上层映射表kl,如frameworks/base/data/keyboards/Generic.kl,对应于rom目录下/system/usr/keylayout/Generic.kl
kl文件是有设备专属的文件,系统提供了常规按键布局文件Generic.kl,当无匹配时使用Generic.kl
十六进制0x9e转化为十进制为158,如:key 158 BACK
3.驱动按键绑定Keycode
frameworks/native/include/input/InputEventLabels.h DEFINE_KEYCODE(BACK) 4.二次转化参照
frameworks/base/include/ui/KeycodeLabels.h external/replicaisland/res/values/arrays.xml 5.
case when a.DiningPlan =1 then '早餐' when a.DiningPlan =2 then '午餐' when a.DiningPlan =3 then '晚餐' when a.DiningPlan =4 then '其他' end , select b.ClaimNo, a.Department,a.Master,a.TreatTime, case when a.DiningPlan =1 then '早餐' when a.DiningPlan =2 then '午餐' when a.DiningPlan =3 then '晚餐' when a.DiningPlan =4 then '其他' end , a.OtherDiningPlan, case when a.TreatType =1 then '商务招待' when a.TreatType =2 then '外事招待' when a.TreatType =3 then '其他公务招待' end , a.Guest,a.TreatCause,a.TotalCost,a.DiningPlace,a.PeopleNumber,a.NBPeopleNumber,a.PerMoney,a.DrinksCost,a.SpecialNote from dbo.
在stm32 IAP例程中,跳转到APP区的时候,都会检查栈顶地址是否合法,以及reset地址是否正确等信息,那么这些判断具体依据什么原理???
以stm32H743为例说明↓↓↓↓
检查栈顶是否合法代码如下: #define STM32_APP_BASE 0x08020000 // APP flash start address void iap_jumpapp(void) { // 检查栈顶是否合法,,确保栈顶落在0x24000000-0x24FFFFFF 之间,刚好在stm32h7的RAM范围内 if (((*(uint32_t*)(STM32_APP_BASE)) & 0xff000000 ) == 0x24000000 ) { // 检查reset入口是否正确 if (((*(uint32_t*)(STM32_APP_BASE + 4)) & 0x0fff0000 ) == 0x08020000 ) { JumpToApp = (pfunction)((*(uint32_t*)(STM32_APP_BASE + 4))); MSR_MSP(*(uint32_t*)STM32_APP_BASE); JumpToApp(); } } else { ... } } 栈顶地址 和 reset入口地址具体是什么??? 从startup_stm32h743xx.s中可以看出,程序第一个地址存放的是__initial_sp,紧接着第二个地址存放的是Reset_Handler;这两个正是所谓的栈顶地址 reset 入口
__Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved 代码说明备注__initial_sp栈顶地址程序占用的最大RAM地址,占用RAM大小=RW-data + ZI-dataReset_Handlerreset入口程序上电后,第一个运行的函数地址 结合map文件和bin文件进行分析 生成map文件中,__initial_sp = 0x2400f2a8 .
1、位/比特:
位是计算机存储的最小单位,简称:bit,比特。计算机中用二进制0和1来表示数据。一个0或者一个1就表示一位。
2、字节:Byte
是计算机存储容量的一种计量单位,通常情况下一个字节=8位。
3、字符:
字符是表示计算机自然数据单位的术语。一个字符= 2个字节。
4、码表
计算机中无论任何数据的传输、存储、持久化都是以二进制的形式体现的。(0,1),当我们需要存储一个字符时需要持久化为二进制,但是计算机展示的时候并不是二进制展示出来,这就是码表的作用。
5、码表作用:
码表就是一个字符和对应的二进制相互映射的一张表。这张表规定了字符和二进制的映射关系。计算机存储字符时将字符查询码表,然后存储对应的二进制,计算机取出存储字符时将二进制查询码表,然后转换成对应的字符显示。
任务管理器是电脑中自带的管理程序,无论是电脑中自动开启的程序还是我们手动运行的,都可以在该程序的运行界面中找到。很多时候电脑出现卡机之后我们就会打开任务管理器界面,将没有响应的程序结束运行,这样就可以解决电脑卡顿的问题了。近日有用户在win10中使用任务管理器的时候都发现自己电脑中的任务管理器打开之后会闪退,遇到这样的状况我们该如何才能够修复呢?
方法步骤:
方法一:
1、进入电脑中的安全模式,由于大家的系统和电脑不同,请大家使用自己电脑对应的方法进入安全模式
2、进入安全模式之后接着再次打开任务管理器,若是此时任务管理器也会出现闪退的情况,那么我们可以这样操作:
使用win+r进入运行界面中,接着在运行窗口中输入命令:msconfig,按下回车键之后就额可以进入系统配置界面了!
3、调出下图中的界面之后将服务一栏打开,然后将下方的“隐藏所有mircrosoft服务”勾选上之后,点击右侧的全部禁用!
4、保存以上的设置之后再次进入任务管理器,然后在启动选项卡中将所有的启动项都禁用!
5、完成所有步骤之后重新启动电脑,系统会自动退出安全模式,进入正常使用模式,此时任务管理器就不会再闪退了!
方法二:
1、按下win+r进入运行界面中,接着键入:regedit并按下回车键,这样就可以进入注册表编辑器界面了!
2、在编辑器设置界面左侧打开下面的这些文件夹:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies。
3、找到“Policies”文件夹之后单击展开它,使用鼠标单击其中的任意一个文件夹,选择“新建”-“项”,将这个新建的向命名为“system”。
4、新建成功之后接着使用鼠标单击展开system文件夹,在该文件的右侧空白处点击右键新建一个字符串值
5、建好之后右键出现命名为:“DisableTaskMgr”,修改好了名字之后双击该项目,将它的数值数据设置为:0就可以了!
关于在win10中任务管理器闪退问题的解决方法小编就介绍完了,大家可以将上述步骤中的两种方法都试一试,一定有一种最适合你的,希望能够帮助你顺利的解决这个问题!
湖北师范大学2020年硕士研究生招生考试复试工作已经结束,现根据各专业考生总成绩(初试成绩和复试成绩加权)排名拟录取隋亚楠等478名考生为我校2020年全日制硕士研究生(非全日制拟录取名单和退役大学生士兵专项计划拟录取名单另行公示),公示时间6月22日-7月6日,如有异议,可于公示期内向学校反映。拟录取名单详见附件。
联系方式:
湖北师范大学研招办及监督部门联系方式:
研究生招生办:0714-6570761,296394592@qq.com;
纪委、监察处:0714-6573766,jiwei20060302@163.com。
说明:
1.拟录取名单由招生学院确定,考生如对拟录取结果有疑问,可向招生学院咨询和反映。
2.正式录取名单由学校审核后,报湖北省高等学校招生委员会办公室和教育部,经录取检查通过后确定。在录取检查过程中发现不合格者,由招生学院告知考生。
3.拟录取的考生要按照本网站关于办理拟录取手续的通知要求办理拟录取手续。
湖北师范大学研究生招生办公室
2020年6月22日
【凹凸 & 法线贴图 & 圆角】
凹凸可以模拟表面的磨损,如纹理
添加节点:bump 节点,输出到几何体法线;noise 增加嗓波节点,绽放20,20,20,可以看到物体光滑表面有了效果。
添加image 为贴图:
添加法线贴图:normal_map
注意normal法线贴图可以设置切线空间,允许法线贴图进行XYZ等方式 的调整,如果贴入的法线贴图未正常工作,可以尝试此项调整。
【多种贴图的结合】
如下图,法线贴图normal_map连接几何体的法线,噪波连入了bump map,另一张黑白图连接到了噪波节点的法线,最终将效果叠加到了几何体上。
【圆角】
round_corners 添加此节点到几何体法线即可。
【置换:细分&置换】
细分:“创建- Arnold - surface - utility” 将shade mode 改为 Lambert,叠加模式Overlay Mode 改为polywire,可以在渲染中看到几何体的边缘,可以帮助我们更好的理解细分参数。
右键cube "C4DtoA - Arnold parameters",添加Arnold参数标签,然后转到细分选项卡Subdivision
细分类型改为Cat clark后,马上得到一个球体,利用细分算法生成光滑的曲面。 Adaptive metic 设置项可以根据视图远近自动生成网格,远时,网格不生成,近时,网格生成。
【置换】
节点image、displacement ,同时注意增加阿诺德标签,对对象进行细分参数的设置。见下图画红框处。 注意置换的参数设置有两处。
置换参数中有两个设置项:常规置换和向量置换,区别在于前者只有上下两个方向 ,而后者可以设置多个方向,使用的贴图也有所不同
原题地址:https://leetcode-cn.com/leetbook/read/queue-stack/kbcqv/
该题是位于,队列、广度优先搜索的学习下的题。
原题如下: 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
示例 1:
输入:grid = [
[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
]
输出:1
示例 2:
输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 300
grid[i][j] 的值为 ‘0’ 或 ‘1’
虽然刚学了队列、广度优先搜索、树的层序遍历等基础算法,但看到这个题还是懵了。毫无思路,尝试了很久之后,看了解答的思路,确定看懂了思路,然后没有看他的解题代码,自己尝试按照这个思路去写代码。
写出的代码如下:
class Solution { public int numIslands(char[][] grid) { int count=0; for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ char curRoot=grid[i][j]; if(curRoot=='1') { Queue<Integer> ijQueue=new LinkedList<>(); ijQueue.
目录
一、第1问
1.1 单因素方差分析MATLAB程序
1.2 置信区间长度MATLAB程序
1.3 Q-Q图MATLAB程序
二、第2问
2.1 主成分分析——成分个数MATLAB程序
2.2 主成分分析——相关系数MATLAB程序
2.3 主成分分析——评价指标MATLAB程序
三、第3问
3.1逐步回归MATLAB程序
四、第4问
4.1 计算葡萄酒外观香气口感评分MATLAB程序
4.2 逐步回归MATLAB程序
4.3 白葡萄加入芳香物质逐步回归MATLAB程序
一、第1问 本问主要用到了:单因素方差分析、求置信区间长度、绘制Q-Q图
1.1 单因素方差分析MATLAB程序 从EXCEL(尚未排序的评分平均值)种读取数据,并将其组合成A、B两个矩阵,通过anova1函数对样本数据执行单向方差分析,并返回p值。
m=xlsread('1t检验样本数据.xlsx','红','A2:A29') ; n=xlsread('1t检验样本数据.xlsx','红','B2:B29') ; o=xlsread('1t检验样本数据.xlsx','白','A2:A29') ; p=xlsread('1t检验样本数据.xlsx','白','B2:B29') ; A=[m,n]; B=[o,p]; anova1(A)%对样本数据y执行单向方差分析,并返回p值 anova1(B) 代码运行效果如图所示 (部分):
1.2 置信区间长度MATLAB程序 从EXCEL(排序后的评分平均值)读取数据,通过normfit函数计算其置信区间,并通过矩阵的运算得出置信区间的长度。
a=xlsread('1酒样品分布.xlsx','红葡萄酒','B2:K28'); a=a'; [mu1,sigma1,muci1,sigmaci1]=normfit(a,0.05); b=xlsread('1酒样品分布.xlsx','红葡萄酒','M2:V28'); b=b'; [mu2,sigma2,muci2,sigmaci2]=normfit(b,0.05); c=xlsread('1酒样品分布.xlsx','白葡萄酒','B2:K29'); c=c'; [mu3,sigma3,muci3,sigmaci3]=normfit(c,0.05); d=xlsread('1酒样品分布.xlsx','白葡萄酒','M2:V29'); d=d'; [mu4,sigma4,muci4,sigmaci4]=normfit(d,0.05); lengthmuci1=muci1(2,:)-muci1(1,:); lengthmuci2=muci2(2,:)-muci2(1,:); lengthmuci3=muci3(2,:)-muci3(1,:); lengthmuci4=muci4(2,:)-muci4(1,:); 1.3 Q-Q图MATLAB程序 从EXCEL(排序后的评分平均值)读取数据,通过qqplot函数绘制样本数据与标准正态的Q-Q图。 a1=xlsread('1酒样品分布.xlsx','红葡萄酒','L2:L28'); a2=xlsread('1酒样品分布.xlsx','红葡萄酒','W2:W28'); b1=xlsread('1酒样品分布.xlsx','白葡萄酒','L2:L29'); b2=xlsread('1酒样品分布.xlsx','白葡萄酒','W2:W29'); %% qqplot(a1) %% qqplot(a2) %% qqplot(b1) %% qqplot(b2) 代码运行效果如图所示(部分): 二、第2问 本问主要用到了:主成分分析——成分个数、主成分分析——相关系数、主成分分析——评价指标
本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。
输入格式: 输入在一行中给出精度eps,可以使用以下语句来读输入:
scanf("%le", &eps); 输出格式: 在一行内,按照以下格式输出π的近似值(保留小数点后5位):
PI = 近似值 输入样例: 1E-5 输出样例: PI = 3.14158 代码一: #include<stdio.h> #include<math.h> int main() { int i=1; double eps,n=1,m=1,t=1,sum=1; scanf("%le", &eps); while(n>eps) { m=m*i; t=t*(2*i+1); n=m/t; sum=sum+n; i++; } printf("PI = %.5lf",sum*2); return 0; } 代码二: #include <stdio.h> double f(int n) { if(n==0) return 1; double x=1,y=1; for(int i=1;i<=n;i++) { x *=i; y *= 2*i+1; } return x/y; } int main() { double eps; scanf("
原标题:事业单位,专技岗晋升容易吗?
江苏事业单位统考报名开始了,很多大四的小伙伴问我:信哥,事业单位是不是很难晋升啊?技术岗是不是晋升更难啊?
从招录的情况看,今年技术岗又是招人最多的岗位,所以,信哥认为有必要给大家科普一下技术岗的晋升之路。
相信你看了,心里会更有底。
技术岗分级
真正的体制内是分等级的,不管你是公务员还是事业人员,哪怕工勤人员都是分等级。这并不是制造阶级,而是工作的需要,也是一种非常有效的激励措施。
对于管理岗而言,等级很简单,从10级到1级,就是一条直线。而技术岗走的是评职称的路子,所以要复杂上很多,一般人真的不是很清楚。
从大方面看,技术岗可以分为初级、中级、高级,如果再从细部看,又可以从13级一路晋级到1级。大家可以先看一下技术岗等级划分表:
大家可以看到,高级可以分成正高和副高,而初级13级是技术岗最低的员级。正是因为技术岗的等级更多,所以我们晋升的空间才越大。
大晋升
所谓的大晋升,其实指的是不同职称之间的晋级。比如从初级晋升到中级,从中级晋升到副高,从副高晋升到正高,这种跨职称的晋升,就是我们常说的大晋级。
一般来说,考上事业单位转正后,只要取得了专业技术资格就可以立即定为初级职称了,这一关很简单。
从初级升级到中级并不是那么简单,最基本的条件是需要在助理级岗位上干满3年或以上。
由于技术岗涉及的专业特别多,不同专业具体的晋升条件也不一样,比如有的岗位仅需要通过专业技术考试就可以,有的岗位不仅需要考专业知识,还要考英语、计算机等。更让人痛苦的是,有的岗位还需要发表论文!
而由中级升至高级,那更不必说了,根本就不是一场考试就能决定的。大多数评审高级职称的时候,会采用答辩与综合评分的方式来进行。
小晋升
说完了大晋升,咱们再来看看小晋升。正如上图中大家看到的那样,各个层级的职称内部也是有层次的。
初级里面是13至11级,中级是10到8级,高级是7到1级,高级又可以分为副高和正高。这种多层次的级别划分,更有利于增加个人的发展空间。12级晋升11级,大多需要在12级岗位工作2年以上。
中级职称岗位内部等级晋升,由10级晋升9级或者由专技9级晋升8级,都需要在上一个专技岗干满3年以上。
副高职称岗位内部等级晋升,一般要求在上一个专技岗任满3年以上。
正高职称岗位内部等级的晋升,要求在上一个岗位任职满4年以上。
晋升其他条件
满足了所有条件就能晋升吗?完全不是!
职称晋升有一个原则,即:由当地人社部门统筹管理,实施总量控制原则。绝大部分的地方,都是采用比例方式来确定事业单位里各个等级职称的人数。
所以说,不是满足了硬性条件就一定可以晋升,还受到人数、职位数量的限制。
其实,现在很多地方在职称评定上,出现了只有大晋升、少见小晋升的情况。比如有很多人都是直接由初级的12级直接晋升为中级的10级。
这种方式有利有弊,但对于初入体制的我们来说,还是利大于弊!
前景风光无限美,等待大家的或许只是一场拼搏了!
距离统考笔试还有不到40天,科学利用好,再提10分很轻松!加油!
信哥给小伙伴们准备了《江苏事业单位统考真题及答案》,用真题,效果才更好~
责任编辑:
引言 听说公司上批员工入职培训有这么一个小demo
之前分布式这块接触比较少,于是尝试做了一下
这边技术选型springcloud,kafka,mysql,docker,quartz
思路分析 首先描述下我这边的场景,也是很常见的一个异步调用场景:
即将服务A假设为某电商用户模块,服务B假设为电商活动模块。
我这边呢,假设用户支付多少钱,就返多少钱的一个代金券
一致性解决
梳理一下流程,上面这一版有一个致命的问题!如下所示
事务开始
(1)给alili账户扣10元
(2)给alili账户发10元代金券封装为消息,发送给消息队列
事务结束
那么来了,如何保证第一步和第二步是在同一个事务里完成的。换句话说,第一步操作的是数据库,第二步操作的是一个消息队列,你如何保证这两步之间的一致性?
记住了,任何涉及到数据库和中间件之间的业务逻辑操作,都需要考虑二者之间的一致性。比如,你先操作了数据库,再操作缓存,数据库和缓存之间一致性如何解决?
改变思路,加一张事务表,如下图所示
注意了,此时事务的内容为
事务开始
(1)给账户alili,扣10元
(2)给事件表插入一条记录
事务结束
此时是对同一数据库的两张表操作,因此可以用数据库的事务进行保证。
另外,起一个定时程序,定时扫描事务表,发现一个状态为'UNFINISHED'的事件,就进行封装为消息,发送到消息中间件,然后将状态改为'FINISHED'.
幂等性解决
注意了,这一版还存在一个幂等性问题!
仔细看,定时程序做了如下三个操作
(1)定时扫描事务表,发现一个状态为'UNFINISHED'的事件
(2)将事件信息,封装为消息,发送到消息中间件
(3)将事件状态改为'FINISHED'
假设在步骤(2)的时候,发送完消息体,还未执行步骤(3),定时程序阵亡了!然后重启定时程序,发现刚那个事务的状态依然为'UNFINISHED',因此重新发送。这样,就会出现重复消费问题。因此,幂等性也是需要保证的!
给代金券表添加事务id字段,如果一旦出现重复消费,则在事务里直接报出唯一约束冲突错误,从而保证了幂等性!
是不是觉得到这里就完了?hiahia, 消费者确定消费
仔细想,我这边消息队列是给消费者消息了,然后是不是就这个消息会在队列中清除了,
是的,这就是消息队列默认的自动ack机制,ack简单说就是个确认信息,
也就是说我消费者拿到这条信息就告诉队列我已经拿到了,你可以删除了,那这边又出现了一个问题,消费者怎么能确定自己手上这条信息在流程中不会出问题呢,按道理我们是要消费者做完事情在告诉队列去删除,我出问题了你下次再给我重发我再次消费,所以这里我们要开启手动ack在执行完业务逻辑后手动提交,以此来保证整个流程的数据一致性。
内容 搭建nacos docker环境安装略。。
安装dokcer 镜像
docker pull nacos/nacos-server 启动nacos
docker run -d --env MODE=standalone -p 8848:8848 --name nacos nacos/nacos-server 访问页面
http://192.168.10.11:8848/nacos 账号密码:nacos,nacos
搭建mysql 略
我这边采用mysql5.7
讲一下nacos持久化
进入nacos容器,进入conf,拷贝sql文件,建库建表
同目录
vim application.properties
修改数据库配置,退出容器exit,docker restart
runloop runloop是用来处理事件的循环。NSRunloop是CFRunloop的封装,CFRunloop是一套C接口,源码地址。
runloop处理消息的流程是“接收消息->恢复活跃->处理消息->进入休眠”。
runloop作用 保持程序持续运行,程序一启动就会开一个主线程,主线程一开起来就会跑一个主线程对应的RunLoop,RunLoop保证主线程不会被销毁,也就保证了程序的持续运行处理App中的各种事件(比如:触摸事件,定时器事件,Selector事件等) 节省CPU资源,提高程序性能,程序运行起来时,当什么操作都没有做的时候,RunLoop就告诉CPU,现在没有事情做,我要去休息,这时CPU就会将其资源释放出来去做其他的事情,当有事情做的时候RunLoop就会立马起来去做事情。
runloop的构成 CFRunLoopRef //runloop对象 CFRunLoopModeRef//运行模式 CFRunLoopSourceRefCFRunLoopTimerRefCFRunLoopObserverRef 它的结构关系如下
struct __CFRunLoop { pthread_t _pthread;//线程 CFMutableSetRef _commonModes; // commonModes下的两个mode(kCFRunloopDefaultMode和UITrackingMode) CFMutableSetRef _commonModeItems; // 在commonModes状态下运行的对象(例如Timer) CFMutableSetRef _modes; // 运行的所有模式(CFRunloopModeRef类) CFRunLoopModeRef _currentMode; //在当前loop下运行的mode ... } struct __CFRunLoopMode { CFStringRef _name; // Mode Name, 例如 @"kCFRunLoopDefaultMode" CFMutableSetRef _sources0; // Set CFMutableSetRef _sources1; // Set CFMutableArrayRef _observers; // Array CFMutableArrayRef _timers; // Array ... } CFRunLoopModeRef 一个RunLoop包含了多个Mode,每个Mode又包含了若干个Source/Timer/Observer。每次调用 RunLoop的主函数时,只能指定其中一个Mode,这个Mode被称作CurrentMode。如果需要切换 Mode,只能退出Loop,再重新指定一个Mode进入。这样做主要是为了分隔开不同Mode中的Source/Timer/Observer,让其互不影响。下面是5种Mode。
kCFDefaultRunLoopMode App的默认Mode,通常主线程是在这个Mode下运行
UITrackingRunLoopMode 界面跟踪Mode,用于ScrollView追踪触摸滑动,保证界面滑动时不受其他Mode影响
win7配置更新35%不动了怎么办?一些用户想将win7升级一下没想到卡住不动了,不知道怎么处理很是苦恼。可能很多用户都遇到过这样的情况,所以今天小编为大家分享的就是关于win7配置更新35%不动的详细解决方法啦。
解决方法如下:
1、重新启动电脑不断按f8,到了高级启动选项,选择“安全模式”进入。
2、如果安全模式下进入还是显示配置windows update失败,等待一会看能配置成功,这个时候可能会等上少则15分钟多则几小时。
3、配置完成之后,正常启动会跳过显示配置windows update失败并进入桌面。
4、然后打开控制面板,在图标查看方式下,点击“Windows Update”。
5、点击左上角的“更改设置”。
6、把重要更新改为检查更新,但是选择是否下载和安装更新,然后点确定就可以了。
关于win7配置更新35%不动的详细解决方法就为大家分享到这里啦,有出现同样情况的可以按照上面的方法来解决哦。
流程放在网盘里,需要的朋友可以看一下,亲测无数有效。
链接: https://pan.baidu.com/s/1t7i7qTy4B9YVNBj4ZF_Yuw
提取码: 9vyb
这道题需要注意符号是中文还是英文 为了方便 我这里都用的英文符号,原题是要求用中文符号的 需要的改一下就行了
package java_class; import java.util.*; import java.lang.*; import java.io.*; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String line = sc.nextLine(); int ans=0; String []book = line.split("; "); for(int i=0;i<book.length;i++) { String []b = book[i].split(": "); System.out.println(b[0]+"--"+b[1]); ans+=Integer.parseInt(b[1]); } System.out.println("总价格--"+ans); sc.close(); } }
【7版本】
在root用户权限下:
查看当前启动模式
systemctl get-default
更改模式命令:
systemctl set-default graphical.target由命令行模式更改为图形界面模式
systemctl set-default multi-user.target由图形界面模式更改为命令行模式
跟以前使用的linux版本一样,编辑 vi /etc/inittab 文件,修改系统初始化方式
【6版本】
直接设置这里的数字(3—命令行,5—图形化)就ok:
曾经遇到根据上述的方法,还是无法转为图形化界面
需要执行如下命令
yum groupinstall “GNOME Desktop” 1 内容参考https://blog.csdn.net/prophet10086/article/details/78501019
命令行界面—>图形界面
执行startx命令
图形界面—>命令行界面
Ctrl+Alt+F2
双击盘符时出现“无法访问 X:文件或目录损坏且无法读取。”的错误信息,不能打开盘符。
解决方法如下:
1、Windows键+R打开运行,输入cmd敲回车,打开命令提示符程序。
2、输入chkdsk 盘符: /f ,例如:“chkdsk d: /f”,等命令运行完即可。
注意:冒号后面要空一格。