在不生成列的顺序号前提下对无序列出现的首行进行标注

本文介绍了一种使用SQL在不生成列顺序号的情况下,对重复出现的数据行进行NEW或OLD标记的方法。通过动态SQL和CASE WHEN语句实现了对首次出现记录的识别。

在不生成列的顺序号前提下对无序列出现的首行进行标注

刚才在微软中文论坛逛的时候看到一个题目,其实方法很多,能不能在不生成列的顺序号(如排名函数,生成唯一编号。。。)前提下对无序列出现的首行进行标注呢,

数据准备:

TAmyname varchar(10),nameId varchar(10)

MyName nameId

aaa

aaa

aaa

aaa

bbb

bb

ccc

ccc

bb

要求结果如下:

MyName NameID

aaa new

aaa old

aaa old

aaa old

bbb new

bb new

ccc new

ccc old

bb old

------------------------------------

-- AUTHOR: FLYSTONE

-- VERSION:V1.001

-- DATE:2009-11-05 22:50

------------------------------------

-- TEST DATA: TA

IF OBJECT_ID('TA') IS NOT NULL

DROP TABLE TA

GO

CREATE TABLE TA(MYNAME NVARCHAR(10))

GO

INSERT INTO TA

SELECT 'AAA' UNION ALL

SELECT 'AAA' UNION ALL

SELECT 'AAA' UNION ALL

SELECT 'AAA' UNION ALL

SELECT 'BBB' UNION ALL

SELECT 'BB' UNION ALL

SELECT 'CCC' UNION ALL

SELECT 'CCC' UNION ALL

SELECT 'BB'

GO

--START

ALTER TABLE TA ADD NAMEID VARCHAR(10)

GO

DECLARE @S VARCHAR(10),@S1 VARCHAR(8000)

SET @S1 = '' --这一句不能少,否则狗儿屁

UPDATE A

SET NAMEID = CASE WHEN CHARINDEX( ','+MYNAME +',',','+@S1+',') > 0 THEN 'OLD'

ELSE 'NEW'

END ,

@S1 = CASE WHEN CHARINDEX( ','+CAST(@S+'' AS VARCHAR(10)) +',',','+@S1+',') > 0 THEN @S1

ELSE @S1+','+ISNULL(CAST(@S+'' AS VARCHAR(10)),'')

END ,

@S = MYNAME

FROM TA A

SELECT * FROM TA

--RESULT:

/*

MYNAME NAMEID

---------- ----------

AAA NEW

AAA OLD

AAA OLD

AAA OLD

BBB NEW

BB NEW

CCC NEW

CCC OLD

BB OLD

*/

--END

题目26利用图像滤波算法实现对高椒盐噪声的去噪处理(新算子) 网络寻找具有高椒盐噪声的代表图片,然后进行处理。 要求: 1、掌握椒盐噪声的概率特点; 2、选用适当的滤波方式对图像进行滤波; 3、运用迭代方法提高滤波效果; 4、改进算子,使图像达到标准对照图像效果。1、要求:文档撰写的主要内容包括但限于课题的背景与意义、课题的主要内容、课题的设计过程或思路、源代码及注释、实验结果及分析、结论、参考文献。 2、报告格式:文档采用正规论文的撰写方式,页边距:上—2.5 cm,下—2.0 cm,左—2.0 cm,右—2.0 cm。页码按阿拉伯数字(1,2,3,……)连续编排,页码位于页面底端,采用五号Times New Roman居中书写。 (1)标题(如:××××课程设计),黑体三号。 (2)顺序号及标题(如:一、课程设计目的),宋体小四加粗,缩进2字符、采用自动编号,单独一行。下级顺序号依次采用1.(1)1),缩进2字符,采用自动编号。 (3)正文内容,宋体小四,首行缩进2字符,中文标点;数字、英文采用Times New Roman字体,小四。 (4)全文采用A4页面,页边距和版式采用默认设置,段落1.5倍行距。 (5)表格中的文字,宋体五号,半角字符、英文标点;数字、英文采用Times New Roman字体,五号。 3、公式用公式编辑器统一编写,从(1)开始连续编排,公式字体为Times New Roman体。图从图1开始连续编排,写上图题(如:图1 灰度化图像)。 4、需要设置目录页,包括一级标题、二级标题、三级标题(如果没有二级、三级标题可以写),目录中各级标题的字体字号同正文中标题字体字号。两千字以上% 小波去噪程序 clc; clear; close all; % 清空命令行、工作区并关闭图形窗口 % 模式选择与信号生成 use_real_audio = 0; % 模式1:生成模拟语音信号 if ~use_real_audio fs = 8000; % 采样率(符合语音信号处理的常用标准) t = 0:1/fs:3; % 生成3秒时长的时间序列 % 合成语音信号:包含500Hz正弦波(0.5幅值)和1200Hz余弦波(0.3幅值) clean = 0.5*sin(2*pi*500*t) + 0.3*cos(2*pi*1200*t); noise_intensity = 0.2; % 噪声强度参数(控制高斯噪声幅度) noise = noise_intensity * randn(size(clean)); % 生成高斯白噪声(与信号等长) noisy = clean + noise; % 构建含噪信号(任务书要求的加噪过程) % 模式2:加载真实语音文件 else [clean, fs] = audioread('C:\Users\86155\Downloads\beijing.wav'); % 读取WAV文件 clean = clean(:,1); % 提取单声道 clean = clean / max(abs(clean)); % 信号归一化(幅值范围[-1,1],避免计算溢出) noise = 0.1 * randn(size(clean)); % 添加较低强度噪声 noisy = clean + noise; end % 小波去噪核心处理 level = 3; % 分解层数 wavelets = {'db4', 'haar'}; % 使用的小波类型 denoised_signals = cell(1,2); % 单元格数组存储去噪结果 for i = 1:2 wname = wavelets{i}; % 循环提取小波基名称('db4'和'haar') % 自动获取全局阈值(使用ddencmp函数) [thr, sorh, keepapp] = ddencmp('den', 'wv', noisy); % 参数说明: % 'den'表示去噪任务,'wv'表示小波变换,noisy为输入含噪信号 % thr-全局阈值,sorh-阈值策略('s'软阈值,'h'硬阈值,默认硬阈值) % keepapp-是否保留近似系数(1保留,0保留,默认保留) % 执行全局阈值去噪并重构信号(任务书要求使用wdencmp函数) denoised_signals{i} = wdencmp('gbl', noisy, wname, level, thr, sorh, keepapp); % 参数说明: % 'gbl'-全局阈值模式,使用统一阈值处理所有细节系数 % noisy-输入含噪信号,wname-小波基,level-分解层数 % thr/sorh/keepapp-来自ddencmp的输出参数 end % 信号长度对齐(避免因采样差异导致绘图错位) min_len = min([length(clean), length(denoised_signals{1}), length(denoised_signals{2})]); clean = clean(1:min_len); % 截断原始信号至最小长度 noisy = noisy(1:min_len); % 截断含噪信号至最小长度 denoised_db4 = denoised_signals{1}(1:min_len); % 提取db4去噪结果并截断 denoised_haar = denoised_signals{2}(1:min_len); % 提取Haar去噪结果并截断 % 信噪比(SNR)计算 % 信噪比公式:SNR = 10*log10(信号功率/噪声功率) % 其中:信号功率=clean²的累加和,噪声功率=(含噪信号-clean)²的累加和 snr_noisy = 10*log10(sum(clean.^2)/sum((noisy - clean).^2)); snr_db4 = 10*log10(sum(clean.^2)/sum((denoised_db4 - clean).^2)); snr_haar = 10*log10(sum(clean.^2)/sum((denoised_haar - clean).^2)); % 结果输出与可视化 disp('========== 去噪性能 =========='); fprintf('加噪信号SNR: %.2f dB\n', snr_noisy); % 保留两位小数 fprintf('db4去噪后SNR: %.2f dB\n', snr_db4); fprintf('Haar去噪后SNR: %.2f dB\n', snr_haar); % 时域波形对比图 figure('Position', [100, 100, 800, 600]); % 设置图形窗口位置和大小 subplot(4,1,1); plot(clean); title('原始信号'); xlim([1 min_len]); % 显示原始信号波形 % 说明:xlim限制显示范围,避免因信号截断导致左侧空白 subplot(4,1,2); plot(noisy); title(['加噪信号 (SNR=', num2str(snr_noisy, '%.1f'), 'dB)']); xlim([1 min_len]); % 显示含噪信号波形并标注SNR值 subplot(4,1,3); plot(denoised_db4); title(['db4去噪结果 (SNR=', num2str(snr_db4, '%.1f'), 'dB)']); xlim([1 min_len]); % 显示db4去噪结果波形 subplot(4,1,4); plot(denoised_haar); title(['Haar去噪结果 (SNR=', num2str(snr_haar, '%.1f'), 'dB)']); xlim([1 min_len]); % 显示Haar去噪结果波形 % 频域频谱分析图 figure('Position', [200, 200, 800, 400]); % 新建频谱分析窗口 nfft = 2^nextpow2(min_len); % 计算最小2的幂次长度(优化FFT计算效率) f = fs/2*linspace(0,1,nfft/2+1); % 生成频率轴(0到fs/2的Nyquist频率) subplot(1,2,1); Y_clean = fft(clean, nfft); % 对原始信号进行FFT变换 plot(f, abs(Y_clean(1:nfft/2+1))); % 绘制单边幅度谱(取前半部分) title('原始信号频谱'); xlabel('Frequency (Hz)'); % 标注频谱图 subplot(1,2,2); Y_noisy = fft(noisy, nfft); % 含噪信号FFT Y_denoised = fft(denoised_db4, nfft); % db4去噪信号FFT plot(f, abs(Y_noisy(1:nfft/2+1))); % 绘制含噪信号频谱 hold on; plot(f, abs(Y_denoised(1:nfft/2+1)), 'r'); % 叠加db4去噪频谱(红色曲线) title('去噪前后频谱对比'); legend('加噪信号', 'db4去噪'); 完成报告
06-06
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值