详细可见后面附录的分析。
定义Tsu:建立时间,时钟沿 前数据需保持稳定的最短时间。(时钟沿采样输入数据时)
定义Th:保持时间,时钟沿 后数据需要保持稳定的最短时间。
定义Tco:响应时间,时钟沿 后到Q稳定输出数据最短时间。
定义Tcomp:组合逻辑延迟。
(1)组合逻辑延迟范围:
注意定义各种时间时,时钟沿标粗:
上图中:Tco(数据从D1输出)+Tcomp(组合逻辑延时)+Tsu,刚好一个周期T = T+Tskew
所以T+Tskew(如果时钟偏斜,DFF2时钟延迟)>=Tco+Tcomp+Tsu
即Tcomp<=T-Tco-Tsu+(Tskew)
上图中,Th<=Tco+Tcomb-(Tskew)(采样高电平所需保持时间)
即Tcomb>=Th-Tco+(Tskew)
所以最终组合逻辑延迟的范围: Th-Tco+(Tskew)
(2)时序分析:!!!!!!
分析最长路径——>最大工作时钟
分析最短路径——>是否满足建立要求
(两个触发器之间) 很重要!!!!!!
Tmin = Tco+Tcomp+Tsu-(Tskew)
Th<=Tco+Tcomb-(Tskew) 验证是否满足
https://www.cnblogs.com/mikewolf2002/p/10200660.html
一、概念
在实际电路中,必须考虑传输延迟的影响。比如 D 锁存器,在时钟信号从 1 变成 0 时,它把当前输出的值储存在锁存器中。如果输入 D 稳定,则电路可以稳定工作,如果在时钟跳变时候 D 的内容也正好发生变化,则可能产生不可预知的结果。所以电路设计者必须保证时钟信号跳变时后,输入信号是稳定的。
下图中标示了一些关键时间区间,这些区间和工艺有关。集成电路制造厂家都会提供这个参数。
建立时间( Tsu : set up time ): 是指在 触发器的时钟信号上升沿到来以前 ,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器, Tsu 就是指这个最小的稳定时间。
保持时间( Th : hold time ): 是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器, Th 就是指这个最小的保持时间。
如果电路中使用的触发器没有没有遵循建立和保持要求,则电路会进入 “ 亚稳态 ” 的不稳定状态。
输出响应时间( Tco 或者 TcQ )
触发器输出的响应时间, 也就是触发器的输出在 clk 时钟上升沿到来之后多长的时间内发生变化 ,也即触发器的输出延时。一般的, Q 值从 1 到 0 和从 0 到 1 的延时并不完全一样,但为了简化,通常假定他们是相等的。对于商业芯片,通常会给出两个 Tco/TcQ 的值,分别代表实际上可能产生的最大延时和最小延时。指定一个范围是评估一个芯片延时的常见做法,因为芯片制造过程中存在许多延迟变化的来源。
二、数字系统设计常见与之有关的问题
1 、问题提出
数字系统设计常见的电路图,这里需要保证数据能够正确的在这两个触发器上进行传输,由此确定中间组合逻辑电路的传输延时的范围。
Tcomb: 组合逻辑电路的传输延时
2 、第二个触发器要满足建立时间的约束条件
时序图如下,假设 D1 的输入为图中的蓝线所示
时序解释:
在第一个时钟上升沿,前边的触发器采集 D1 信号,将高电平打入触发器,经过 Tco 的触发器输出延时到达组合逻辑电路。又经过组合逻辑电路的延时 Tcomb (我们假定组合逻辑电路此时没有改变信号的高低,可以把它假定为一个缓冲器)送到了 D2 接口上。在第二个时钟上升沿到来之前, D2 数据线上的信号要满足稳定时间 > 触发器的建立时间 Tsu 。
Tclk - Tco - Tcomb > Tsu
考虑最坏的情况:触发器的输出延时最大,组合逻辑电路的延时也最大,可得:
Tclk - Tco-max - Tcomb-max > Tsu
所以最小的 Tclk-min = Tco-max + Tcomb-bmax +Tsu;
根据这个公式,我们可以计算出该电路最大的始终频率 Fmax = 1/Tclk-min
3 、第二个触发器要满足保持时间的约束条件
时序图如下,假设 D1 的输入为图中的蓝线所示
时序解释:
接着之前的时序图继续,在第二个时钟上升沿前边触发器采集到 D1 上的低电平,经过 Tco 的延时在 Q1 上得到表达。这个低电平在经过组合电路延时 Tcomb 到达 D2 。现在的问题是经过这么 Tco+Tcomb 的延时, D2 上原本的高电平在第二个时钟上升沿到来之后的稳定时间 > 第二个触发器的保持时间。满足了这个条件,后边的触发器才能稳定的接收到最初由 D1 传过来的高电平。
Tco + Tcomb > Th
考虑到最坏的情况:触发器的输出延时最小,组合逻辑电路的延时也最小
Tco-min + Tcomb-min > Th
通常时序分析中,我们要检查这个不等式,来确定电路中是否有时间违背。
4 、问题的答案
我们得到中间组合逻辑电路的输出延时范围为:
(Tclk - Tco-max - Tsu) > Tcomb > (Th - Tco-min)
5 、两个时序分析例子
假设触发器时间参数: Tsu = 0.6ns, Th = 0.4ns 以及 0.8ns<= Tco <= 1.0ns , 通常我们可以假设逻辑门的延时为 1 +0.1k ,其中 k 为逻辑门输入端的个数 。比如对于非门,只有一个输入端,则为 1+1*0.1=1.1ns 。
我们来计算下面电路的时钟最小周期:
Tclk-min = Tco-max + Tcomb-max + Tsu = 1.0 + 1.1 + 0.6 = 2.7ns
所以最高时钟周期 Fmax = 1/Tclk-min = 370.37MHz
下面我们看一个复杂一点的例子, 4 位计数器电路。电路图如下图所示:
电路中有很多路径可以使触发器开始或结束,其中最长的路径开始于触发器 Q0 结束于 Q3 。 电路中这种最长的路径称为关键路径 。如下图中红色线所示路径,包括触发器 Q0 的时钟信号输出至 Q 的延时 Tco , 3 个与门, 1 个异或门以及建立时间 Tsu ,所以有
Tclk-min = Tco + 3Tand + Txor +Tsu = 1.0 + 3*1.2+1.2+0.6=6.4ns
Fmax = 1/6.4ns = 156.25MHz
电路的最短路径是每个触发器经过一个异或门到它自身,每条这样的路径的最小延时为 Tco+Txor=0.8+1.2=2.0ns> T h=0.4ns, 所以电路中不存在时间违背。
6 、时钟偏斜的时序分析
上面 4 位寄存器的例子中,我们假设 4 个触发器的时钟信号是同一时刻到达的。现在我们仍然假设时钟信号同一时刻到达 Q0 、 Q1 、 Q2 ,但到达 Q3 存在一个延时。这种 时钟信号达到触发器的时间偏离称为时钟偏斜 。 时钟偏斜可能由多种因素引起的。
关键路径是从触发器 Q0 到 Q3 ,然而 Q3 的时钟偏斜具有减小延迟的作用。原因在于数据加载到触发器之前提供了额外的时间。将时钟偏斜1 .5ns 计算在内,从Q 0 到Q3的的路径延时为: Tco+3Tand+Txor+Tsu-Tskew=6.4-1.5=4.9ns ,此时从Q 0 到Q 2 的线路径成为关键路径:
Tclk-min = Tco + 2 Tand + Txor +Tsu = 1.0 + 2 *1.2+1.2+0.6=5 . 2 ns
Fmax = 1/5.2ns = 192.31MHz
在这种情况下,时钟偏斜会提高时钟频率,但如果时钟偏斜是负的,则会降低时钟频率。
由于时钟偏斜的存在,数据加载到Q 3 会被延迟,对于所有开始于 Q0,Q1,Q2 而结束于Q 3 的路径,加载的延时会提高触发器维持时间的要求 (Th+Tskew) ,其中最短的路径是从Q 2 到Q 3 ,延迟为 Tco + Tand + Txor = 0 . 8 + 1.2+1.2= 3 . 2 ns > Th+Tskew=1.9ns, 所以不存在时间违背。
对于时钟偏斜值 Tskew >= 2.8ns 情况,可以看出存在时间违背,此时不论时钟频率多少,该电路都不可能可靠的工作 。
我们再看下面这个例子,在这个电路中有一条路径开始于触发器 Q1, 经过一些逻辑门网络,在触发器Q 2 的D端结束。由图可知,时钟信号到达触发器前存在不同的延迟。假设触发器Q 1 和Q 2 的时钟信号延迟分别为 t1 和 t2 ,这两个触发器之间的时间偏斜可定义为 Tskew= t2-t1, 假设电路中通过逻辑门路径的最长延迟为 TL, 则这两个触发器的最小时钟周期为 Tclk-min=Tco+TL+Tsu-Tskew , 因此如果 t2-t1>0 ,则时钟频率会提升,否则时钟偏斜会降低频率。
为了计算触发器Q 2 是否存在时间违背,需要确定触发器的最短路径。如果电路中通过逻辑门的最小延迟为 Tl, 且 Tl+Tco
将会产生时间违背。如果 t2-t1>0, 维持时间的限制将更难以满足,而如果 t2-t1<0, 则较易满足。
你可能感兴趣的:(FPGA逻辑)
如何在一行代码中初始化各种AI模型
qahaj
人工智能 python 深度学习
技术背景介绍在开发大语言模型(LLM)应用时,用户有时需要选择不同的模型提供商和具体模型。这通常需要一定的逻辑来根据用户配置初始化不同的聊天模型。为了简化这一过程,init_chat_model()方法被引入,让开发者能够轻松地初始化多种模型集成,而无需担心导入路径和类名。核心原理解析init_chat_model()方法通过传入模型名称及其提供商,自动推断并实例化对应的聊天模型。该功能在lang
Tree of Thought Prompting(思维树提示)
大数据追光猿
大模型 人工智能 大数据 深度学习 语言模型 计算机视觉
TreeofThoughtPrompting(思维树提示)是一种新兴的提示工程技术,旨在通过模拟人类解决问题时的多步推理过程,提升大型语言模型(LLM)在复杂任务中的表现。与传统的线性提示方法不同,思维树提示将问题分解为多个可能的推理路径,并以树状结构探索这些路径,从而找到最优解或生成更高质量的结果。这种方法特别适用于需要多步推理的任务,例如数学问题求解、逻辑推理、规划和创造性写作等场景。它结合了
如何创建自定义回调处理器
bBADAS
python 开发语言
在现代AI开发中,回调是一个强大的工具,它允许我们在特定事件触发时执行自定义逻辑。本文将深入探讨如何为LangChain创建自定义的回调处理器,从而实现更加灵活的模型交互。技术背景介绍在使用AI模型时,尤其是在处理自然语言生成任务时,可能需要对生成的每个标记(token)进行处理。LangChain提供了一些内置的回调处理器,但为了满足特定的需求,创建自定义回调处理器是非常有必要的。核心原理解析创
Julia语言的饼图
尤宸翎
包罗万象 golang 开发语言 后端
Julia语言的饼图:全面剖析与实战指南引言在数据可视化的领域中,饼图作为一种经典的可视化工具,广泛用于展示各个分类在总体中的占比关系。尽管饼图在一些数据分析师中被视为相对简单和直观的图形,但它在实际运用中依然扮演着重要角色。本文将重点探讨如何使用Julia语言实现饼图的绘制,分析其背后的逻辑,并通过实例帮助读者掌握这一基本技能。Julia语言简介Julia是一种高性能、高级别的编程语言,适用于数
AI编程工具领域:深度理解项目架构篇
xinxiyinhe
AI编程 python 人工智能 AI编程 人工智能
AI编程工具领域:深度理解项目架构篇在AI编程工具领域,能够读取项目目录并深度理解项目架构的工具主要通过代码索引、上下文感知和智能问答等功能实现。以下是基于最新信息的工具评估与分析:1.通义灵码(阿里云)核心能力:@workspace功能:基于RAG技术,支持本地代码库的索引和深度感知,可分析项目完整结构,生成文件解释、代码逻辑查询和整体修改建议。多语言支持:覆盖200+编程语言,兼容VSCode
82.RadioButton的选中处理逻辑 C#例子 WPF例子
军训猫猫头
c# 开发语言 wpf
privatevoidRadioButton_Click(objectsender,RoutedEventArgse){//确保sender是RadioButton类型if(senderisRadioButtonradioButton&&radioButton.IsChecked==true){//获取RadioButton的内容if(radioButton.Contentisstringcont
AXI总线之相关应用
逾越TAO
fpga开发 硬件工程 笔记
AXI总线作为现代SoC设计的核心互连协议,其应用场景极为广泛,覆盖移动设备、AI加速器、FPGA、存储控制器等多个领域。以下是AXI在不同应用中的关键角色及具体实现案例:一、移动处理器与SoC应用场景:智能手机、平板电脑的SoC(如高通骁龙、苹果A系列、华为麒麟)中,AXI用于连接多核CPU、GPU、ISP(图像信号处理器)、DDR控制器等模块。典型案例:ARMCortex-A系列多核集群:AX
【FPGA教程案例31】通信案例1——基于FPGA的ASK调制信号产生
fpga和matlab
★教程2:fpga入门100例 fpga开发 FPGA教程 ASK调制 verilog
FPGA教程目录MATLAB教程目录---------------------------------------------------------------------------------------目录1.软件版本2.ASK调制原理3.ASK调制过程的FPGA实现4.操作步骤与仿真结论5.参考文献1.软件版本vivado2019.22.ASK调制原理幅度键控(Amplitude-Shi
flink从kafka读取数据写入clickhouse本地表的实现
Breatrice_li
kafka flink 分布式 大数据
实现功能因为直接写clickhouse的分布式表在数据量比较大的时候会有各种问题,所以做了一个flink读取kafka数据然后路由写入到相应的本地表节点,并且关于不同的表的配置信息可以随时更改并设置生效时间。实现流程首先从kafka将数据读取过来然后进行相应的处理及逻辑判断写入到对应的clickhouse表格中最后根据CDC读取来的配置信息进行相应节点的hash路由,直接写入本地表读取kafka数
Spring Boot 中使用 @Transactional 注解配置事务管理
m0_74823434
面试 学习路线 阿里巴巴 spring boot 数据库 sql
事务管理是应用系统开发中必不可少的一部分。Spring为事务管理提供了丰富的功能支持。Spring事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染,因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Transa
AIGC时代品牌突围战:10招玩转DeepSeek内容推荐(深度扩展版)
白雪讲堂
人工智能 大数据 机器学习
一、认知革命:从SEO到GEO的生死迭代案例对比:传统SEO困境:某家电品牌2023年投入200万SEO优化,关键词排名TOP3但流量下降42%(SEMrush数据)GEO突破案例:某母婴品牌通过结构化数据改造,AI推荐量从日均300次飙升至1.2万次(来源:DeepSeek官方案例库)实战要点:内容形态改造:将产品参数表升级为JSON-LD格式(某手机品牌实现参数类问题100%引用)流量分配逻辑
HTML音频、视频--课后作业实践
Heetun
html5
浅学了web一段时间,用浅显的知识做了一个小小的实践,各位大佬们多多包涵,指正。主要知识重现:标记语法:src:设置媒体文件的路径width、height:设置媒体文件的宽度、高度autostart:逻辑值,true为自动播放;false为不自动播放loop:逻辑值,true自动循环播放;false不循环播放2.CSS的内部样式表选择器1{属性1:属性值1;属性2:属性值2;......}选择器2
每日实战:python爬虫之网页跳转-以某博为例
代码CC
python爬虫 python 爬虫 pandas 开发语言
一、项目背景与核心需求通过逆向分析微博热榜接口,实现实时热搜数据抓取,重点解决:话题跳转链接参数缺失问题页面数据清洗规范化处理多维度数据采集存储二、网页跳转爬虫实现原理2.1跳转链接生成逻辑原始热搜词→"雷军刚知道柯洁定了SU7Ultra"处理流程:1.添加话题标识→#雷军刚知道柯洁定了SU7Ultra#2.URL编码→%23雷军刚知道柯洁定了SU7Ultra%233.添加搜索参数→&t=31生成
数据库 + Spring Boot + Vue 全栈交互逻辑详解
代码CC
Java项目-开发 spring boot vue.js mysql 数据库 开发语言
目录整体架构概述技术栈说明数据库设计规范SpringBoot后端架构Vue前端架构完整交互流程关键技术实现细节安全与性能优化异常处理机制整体架构概述graphTDA[Vue前端]-->|HTTP请求|B(SpringBoot后端)B-->|JDBC/ORM|C[(数据库)]C-->|返回数据|BB-->|JSON响应|AA-->|状态管理|D[VuexStore]B-->|缓存|E[Redis]B
Deepseek的本地化部署软件工具包
哈拉少12
人工智能
选择模型版本参数规模硬件要求(最低)适用场景1.5B/7B8GB内存,无专用GPU文本处理、简单问答14B16GB内存+12GB显存代码生成、逻辑推理32B/70B24GB显存+32GB内存企业级复杂任务执行命令:ollamarundeepseek-r1:14b(以14B为例)。配置环境变量新增用户变量:OLLAMA_HOST=0.0.0.0OLLAMA_ORIGINS=*重启Ollama服务使配
成为编程大佬!!----->数据结构与算法(2)——顺序表!!
Elnaij
算法 数据结构 c语言
前言:线性表是数据结构与算法的重中之重,所有具有线性逻辑结构的数据结构,都能称为线性表。这篇文章我们先来讨论线性表中的顺序表,顺序表和线性表都是后续实现栈,树,串和图等等结构的重要基础。目录❀简单介绍线性表❀顺序表❀顺序表的存储❀动态存储❀静态存储❀静态存储与动态存储的优缺点❀顺序表操作❀1.初始化顺序表❀2.销毁顺序表❀3.插入数据❀插入数据之判断已满否❀插入操作之尾插❀插入操作之头插❀插入数据
芯片:CPU和GPU有什么区别?
InnoLink_1024
AGI 人工智能 人工智能 ai agi gpu算力
CPU(中央处理器)和GPU(图形处理单元)是计算机系统中两种非常重要的处理器,它们各自有不同的设计理念、架构特点以及应用领域。下面是它们之间的一些主要差异:1.设计目的与应用领域CPU:设计目的是为了处理广泛的计算任务,包括操作系统管理、应用程序运行和基本的输入输出处理等。它处理的是复杂的、通用的计算任务,通常包括控制逻辑、内存管理等。GPU:设计目的是为了处理图形和并行计算任务。最初是为图形渲
【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现跨平台二维码扫描应用
金枝玉叶9
程序员知识储备1 程序员知识储备2 程序员知识储备3 rust 开发语言 后端
《一起学Rust|Tauri2.0框架》是一个结合Rust语言与Tauri框架开发跨平台应用的教程。Tauri2.0是一个非常适合构建跨平台桌面应用的框架,它让开发者可以使用Web技术(如HTML、CSS、JavaScript)来创建前端,同时利用Rust编写后端逻辑,确保应用运行高效且轻量。在这个教程中,开发者可以学习如何使用Rust与Tauri2.0框架实现一个跨平台二维码扫描应用。具体步骤可
【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现生物识别(指纹识别)应用
广龙宇
Tauri2应用开发 一起学Rust rust 开发语言 后端
前言Tauri,作为一个新兴的跨平台应用开发框架,允许开发者使用Web前端技术构建界面,并利用Rust的高性能和安全性编写后端逻辑。这种架构巧妙地结合了Web的灵活性和原生应用的性能,为开发者提供了一种构建高效、跨平台应用的全新选择。而生物识别技术,如指纹识别、面部识别等,则为应用安全提供了更高级别的保障。将生物识别技术集成到Tauri应用中,可以提升用户体验,增强应用安全性。试想一下,用户只需轻
B/S架构(Browser/Server)与C/S架构(Client/Server)
张太行_
服务器 运维
基本概念B/S架构(Browser/Server):即浏览器/服务器架构。在这种架构中,用户通过浏览器(如Chrome、Firefox、Safari等)访问服务器上的应用程序。服务器端负责处理业务逻辑、存储数据等核心功能,浏览器主要用于向用户展示数据和接收用户输入。例如,一个在线邮箱系统,用户在浏览器中输入邮箱网址,登录后就可以收发邮件。服务器会处理邮件的发送、接收、存储等操作,而浏览器则将邮件的
嵌入式程序软件架构
zhuimeng_1234
编程语言
1.线性架构:一种最简单的程序设计结构;2.模块化架构:模块化架构是一种将程序分解为独立模块的设计方法,每个模块执行特定的任务。3.层次化架构:层次化架构是一种将系统分解为多个层次的设计方法,每个层次负责不同的功能。4.事件驱动架构:事件驱动架构是一种编程范式,其中程序的执行流程由事件触发。5.状态机架构:在单片机开发中,状态机常用于处理复杂的逻辑和事件序列,如用户界面管理、协议解析等。6.面向对
Spring常见面试题
风清扬,夏邑
Spring spring java 后端
1.Spring框架中的单例bean是线程安全的吗?不是线程安全的,当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这时多个线程会并发执行该请求对应的业务逻辑(成员方法),如果该处理逻辑中有对该单列状态的修改(体现为该单例的成员属性),则必须考虑线程同步问题。Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。比如:我
使用AI python实现将前端angularjs工程转换成vue工程案例
银行金融科技
前端 人工智能 python
以下是一个结合Python和AI技术实现AngularJS到Vue工程迁移的完整案例,包含关键转换策略和代码实现:案例背景目标:将使用AngularJS1.x的电商后台管理系统转换为Vue3工程,主要转换以下部分:模板语法控制器逻辑服务依赖路由配置状态管理原始AngularJS代码片段:javascript//app.jsangular.module('app',['ui.router']).co
一段注释。
dont__cry
c语言
以下是添加了详细注释后的代码解析,方便你更好地理解这段ARM宏汇编代码的功能和逻辑:;********************(C)COPYRIGHT2011STMicroelectronics********************;*FileName:startup_stm32f10x_hd.s;*Author:MCDApplicationTeam;*Version:V3.5.0;*Date:
低代码平台未来发展趋势有哪些?
低代码
低代码平台的未来发展趋势呈现出多维度的创新与深化,以下结合JNPF快速开发平台的特性,为您分析其未来的发展方向:1.智能化与AI深度融合低代码平台将与人工智能技术深度融合,实现开发流程的智能化升级。例如,JNPF平台有望通过自然语言处理技术,让开发者仅需用自然语言描述需求,平台即可自动生成初步的应用架构和代码逻辑。此外,AI技术还将用于智能推荐、代码自动生成、流程自动化等功能,进一步提升开发效率。
Linux 权限详解(带实战案例)
可问 可问春风
Linux从新手到入门 linux 运维 服务器
Linux权限是系统安全的核心机制,本文通过权限模型分解+20个实战案例,带你彻底掌握文件权限的控制逻辑。一、Linux权限基础模型权限三要素:user(u):文件所有者group(g):所属用户组others(o):其他用户权限类型:r(read)读权限→4w(write)写权限→2x(execute)执行权限→1二、查看文件权限#查看详细信息(第一个字符为文件类型,后续9个字符为权限)$ls-
Windows 图形显示驱动开发-WDDM 3.0功能- IOMMU DMA 重新映射(二)
程序员王马
windows图形显示驱动开发 驱动开发
地址描述符列表为了同时支持物理和逻辑访问模式,并在运行时无缝切换这两种模式,Dxgkrnl提供了一个描述地址描述符列表(ADL)的DXGK_ADL结构。此数据结构类似于MDL,但描述了一个可以是物理或逻辑的页面数组。由于这些页可以是逻辑页,因此不能将ADL描述的地址映射到虚拟地址以直接访问CPU。DxgkddiBuildpagingbuffer的DXGK_OPERATION_MAP_APERTUR
同事的前端代码,我真的改不动了!!痛哭~~~
前端程序员javascript
在日常开发中,我们经常会遇到需要修改同事代码的情况。有时可能会花费很长时间却只改动了几行代码,而且改完后还可能引发新的bug。我们聊聊导致代码难以维护的常见原因,以及相应的解决方案。常见问题及解决方案单文件代码过长问题描述:单个文件动辄几千行代码包含大量DOM结构、JS逻辑和样式需要花费大量时间才能理解代码结构解决方案:将大文件拆分成多个小模块,每个模块负责独立的功能。以一个品牌官网为例,可以这样
大型语言模型:让Python更聪明的秘密武器
qq_39605374
语言模型 python 数据库 Python
Python是一种广泛使用的编程语言,而大型语言模型则为Python开发者提供了一个强大的工具。大型语言模型可以理解人类语言,并生成具有逻辑和连贯性的文本。它能够回答用户的问题、提供解决方案,并帮助开发者提高他们的编程技能。让我们来探索一下如何使用大型语言模型作为Python编程的秘密武器。大型语言模型可以通过使用Python编写的API进行访问。下面是一个简单的示例,演示了如何使用Python与
【优化选址】基于多目标遗传NSGAII、多目标免疫遗传算法求解考虑成本、救援时间和可靠性的海上救援选址多目标优化问题研究(Matlab代码实现)
荔枝科研社
matlab 数据结构 算法
欢迎来到本博客❤️❤️博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。本文目录如下:目录⛳️赠与读者1概述基于多目标遗传NSGAII、多目标免疫遗传算法求解考虑成本、救援时间和可靠性的海上救援选址多目标优化问题研究一、引言二、海上救援选址多目标优化问题分析(一)成本因素(二)救援时间因素(三)可靠性因素三、多目标遗传NSGAII算法(一)算法原理(二)在
log4j对象改变日志级别
3213213333332132
java log4j level log4j对象名称 日志级别
log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。
log4j配置文件:
log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION
#log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE=org.apache.l
elk+redis 搭建nginx日志分析平台
ronin47
elasticsearch kibana logstash
elk+redis 搭建nginx日志分析平台
logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的l
Yii2设置时区
dcj3sjt126com
PHP timezone yii2
时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。有一些常规方法,是大家目前都在采用的1、php.ini中的设置,这个就不谈了,2、程序中公用文件里设置,date_default_timezone_set一下时区3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较
js实现前台动态添加文本框,后台获取文本框内容
171815164
文本框
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w
持续集成工具
g21121
持续集成
持续集成是什么?我们为什么需要持续集成?持续集成带来的好处是什么?什么样的项目需要持续集成?... 持续集成(Continuous integration ,简称CI),所谓集成可以理解为将互相依赖的工程或模块合并成一个能单独运行
数据结构哈希表(hash)总结
永夜-极光
数据结构
1.什么是hash
来源于百度百科:
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
乱七八糟
程序员是怎么炼成的
eclipse中的jvm字节码查看插件地址:
http://andrei.gmxhome.de/eclipse/
安装该地址的outline 插件 后重启,打开window下的view下的bytecode视图
http://andrei.gmxhome.de/eclipse/
jvm博客:
http://yunshen0909.iteye.com/blog/2
职场人伤害了“上司” 怎样弥补
aijuans
职场
由于工作中的失误,或者平时不注意自己的言行“伤害”、“得罪”了自己的上司,怎么办呢?
在职业生涯中这种问题尽量不要发生。下面提供了一些解决问题的建议:
一、利用一些轻松的场合表示对他的尊重
即使是开明的上司也很注重自己的权威,都希望得到下属的尊重,所以当你与上司冲突后,最好让不愉快成为过去,你不妨在一些轻松的场合,比如会餐、联谊活动等,向上司问个好,敬下酒,表示你对对方的尊重,
深入浅出url编码
antonyup_2006
应用服务器 浏览器 servlet weblogic IE
出处:http://blog.csdn.net/yzhz 杨争
http://blog.csdn.net/yzhz/archive/2007/07/03/1676796.aspx
一、问题:
编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的
建表后创建表的约束关系和增加表的字段
百合不是茶
标的约束关系 增加表的字段
下面所有的操作都是在表建立后操作的,主要目的就是熟悉sql的约束,约束语句的万能公式
1,增加字段(student表中增加 姓名字段)
alter table 增加字段的表名 add 增加的字段名 增加字段的数据类型
alter table student add name varchar2(10);
&nb
Uploadify 3.2 参数属性、事件、方法函数详解
bijian1013
JavaScript uploadify
一.属性
属性名称
默认值
说明
auto
true
设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传。
buttonClass
”
按钮样式
buttonCursor
‘hand’
鼠标指针悬停在按钮上的样子
buttonImage
null
浏览按钮的图片的路
精通Oracle10编程SQL(16)使用LOB对象
bijian1013
oracle 数据库 plsql
/*
*使用LOB对象
*/
--LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节
--CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针
/*
*综合实例
*/
--建立表空间
--#指定区尺寸为128k,如不指定,区尺寸默认为64k
CR
【Resin一】Resin服务器部署web应用
bit1129
resin
工作中,在Resin服务器上部署web应用,通常有如下三种方式:
配置多个web-app
配置多个http id
为每个应用配置一个propeties、xml以及sh脚本文件
配置多个web-app
在resin.xml中,可以为一个host配置多个web-app
<cluster id="app&q
red5简介及基础知识
白糖_
基础
简介
Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正
angular.fromJson
boyitech
AngularJS AngularJS 官方API AngularJS API
angular.fromJson 描述: 把Json字符串转为对象 使用方法: angular.fromJson(json); 参数详解: Param Type Details json
string
JSON 字符串 返回值: 对象, 数组, 字符串 或者是一个数字 示例:
<!DOCTYPE HTML>
<h
java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I
bylijinnan
java
public class ReverseWords {
/**
* 题目:颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.词以空格分隔。
* 要求:
* 1.实现速度最快,移动最少
* 2.不能使用String的方法如split,indexOf等等。
* 解答:两次翻转。
*/
publ
web实时通讯
Chen.H
Web 浏览器 socket 脚本
关于web实时通讯,做一些监控软件。
由web服务器组件从消息服务器订阅实时数据,并建立消息服务器到所述web服务器之间的连接,web浏览器利用从所述web服务器下载到web页面的客户端代理与web服务器组件之间的socket连接,建立web浏览器与web服务器之间的持久连接;利用所述客户端代理与web浏览器页面之间的信息交互实现页面本地更新,建立一条从消息服务器到web浏览器页面之间的消息通路
[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?
comsci
生物
大家仅仅把我说的事情当作一个IT行业的笑话来听吧..没有其它更多的意思
如果我们把大自然看成是一位伟大的程序员,专门为地球上的生态系统编制基因代码,并创造出各种不同的生物来,那么6500万年前的程序员开发的代码,是否兼容现代派的程序员的代码和架构呢?
oracle 外部表
daizj
oracle 外部表 external tables
oracle外部表是只允许只读访问,不能进行DML操作,不能创建索引,可以对外部表进行的查询,连接,排序,创建视图和创建同义词操作。
you can select, join, or sort external table data. You can also create views and synonyms for external tables. Ho
aop相关的概念及配置
daysinsun
AOP
切面(Aspect):
通常在目标方法执行前后需要执行的方法(如事务、日志、权限),这些方法我们封装到一个类里面,这个类就叫切面。
连接点(joinpoint)
spring里面的连接点指需要切入的方法,通常这个joinpoint可以作为一个参数传入到切面的方法里面(非常有用的一个东西)。
通知(Advice)
通知就是切面里面方法的具体实现,分为前置、后置、最终、异常环
初一上学期难记忆单词背诵第二课
dcj3sjt126com
english word
middle 中间的,中级的
well 喔,那么;好吧
phone 电话,电话机
policeman 警察
ask 问
take 拿到;带到
address 地址
glad 高兴的,乐意的
why 为什么
China 中国
family 家庭
grandmother (外)祖母
grandfather (外)祖父
wife 妻子
husband 丈夫
da
Linux日志分析常用命令
dcj3sjt126com
linux log
1.查看文件内容
cat
-n 显示行号 2.分页显示
more
Enter 显示下一行
空格 显示下一页
F 显示下一屏
B 显示上一屏
less
/get 查询"get"字符串并高亮显示 3.显示文件尾
tail
-f 不退出持续显示
-n 显示文件最后n行 4.显示头文件
head
-n 显示文件开始n行 5.内容排序
sort
-n 按照
JSONP 原理分析
fantasy2005
JavaScript jsonp jsonp 跨域
转自 http://www.nowamagic.net/librarys/veda/detail/224
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的
使用connect by进行级联查询
234390216
oracle 查询 父子 Connect by 级联
使用connect by进行级联查询
connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。
来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:
一个不错的能将HTML表格导出为excel,pdf等的jquery插件
jackyrong
jquery插件
发现一个老外写的不错的jquery插件,可以实现将HTML
表格导出为excel,pdf等格式,
地址在:
https://github.com/kayalshri/
下面看个例子,实现导出表格到excel,pdf
<html>
<head>
<title>Export html table to excel an
UI设计中我们为什么需要设计动效
lampcy
UI UI设计
关于Unity3D中的Shader的知识
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,
如何禁止页面缓存
nannan408
html jsp cache
禁止页面使用缓存~
------------------------------------------------
jsp:页面no cache:
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cach
以代码的方式管理quartz定时任务的暂停、重启、删除、添加等
Everyday都不同
定时任务管理 spring-quartz
【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的 “暂停” 呢?暂停之后又要在某个时间点 “重启” 该定时任务呢?或者说直接 “删除” 该定时任务呢?要改变某定时任务的触发时间呢? “添加” 一个定时任务对于系统的使用者而言,是不太现实的,因为一个定时任务的处理逻辑他是不
EXT实例
tntxia
ext
(1) 增加一个按钮
JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
Stri
数学学习在计算机研究领域的作用和重要性
xjnine
Math
最近一直有师弟师妹和朋友问我数学和研究的关系,研一要去学什么数学课。毕竟在清华,衡量一个研究生最重要的指标之一就是paper,而没有数学,是肯定上不了世界顶级的期刊和会议的,这在计算机学界尤其重要!你会发现,不论哪个领域有价值的东西,都一定离不开数学!在这样一个信息时代,当google已经让世界没有秘密的时候,一种卓越的数学思维,绝对可以成为你的核心竞争力. 无奈本人实在见地