答紫一文

博客指出数据结构虽研究较透,但对训练程序员思维仍有帮助。在系统设计上,对于保密传输问题,有人倾向先表达数据关系,作者认为应先找概念形成对象,抽象出行为,再定义数据,让数据结构实现趋于简单化。
紫兄
    不能不说数据结构已经变得不是那么重要了.原因嘛
不是它没用了,而是它研究的比较透了.基本上翻翻书就可以
得到一个明确,成熟的解决方法.
    不过数据结构做为训练程序员的思维方式还是很有帮助
的.基本上可以说,没有详细了解过数据结构的人就不能成为
程序员.做为基础,它的重要性我同意的你的观点.
   我要说的问题是在系统设计上数据结构的重要性.
就你举出的保密传输的问题而言.你似乎倾向于先表达系统的
数据关系,而不是系统的行为特征.我猜测你分析时首先找出
的一定是系统中用到的数据.而后形成一个数据网络(数据字典)
而后根据数据内聚性来定义操作,形成对象.
   而在我看来,这个过程应反过来才比较合理.先找出问题中
的概念,具此形成对象;根据问题中概念的外延抽象出行为(操作);
最后将行为对数据的需要定义数据.
   依此顺序最后数据的定义取决于行为(操作)的实现.自然会
选择最简单的结构,能用数组不会有人用链表.HashMap就不会用
RB-Tree Map.数据结构在系统中的地位不再是决定一切的关键.
其实现也趋于简单化,规则化,模型化.
   希望对你有所启示.
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> %mt_track%mt_artist</title> <style> body { margin: 0; overflow: hidden; background: black; /* 设置背景为黑色 */ } canvas { display: block; filter: blur(0.3px); box-shadow: 0 0 20px rgba(0, 255, 255, 0.5); background: transparent; } </style> </head> <body> <canvas id="matrixRain"></canvas> <script> const canvas = document.getElementById('matrixRain'); const ctx = canvas.getContext('2d'); function setCanvasSize() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; } setCanvasSize(); const track = '%mt_track'; const artist = '%mt_artist'; const matrixTrack = track.split(''); const matrixArtist = artist.split(''); const fontSizeTrack = 40; const fontSizeArtist = 20; const columns = Math.max(matrixTrack.length, matrixArtist.length); const dropPositionsTrack = []; const dropPositionsArtist = []; const charJumpsTrack = []; const charJumpsArtist = []; const horizontalOffsetsTrack = []; const rainbowColors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']; const bigCharColors = ['red', 'blue', 'white']; function initDropPositions() { for (let i = 0; i < columns; ++i) { dropPositionsTrack[i] = canvas.height / 2; dropPositionsArtist[i] = -fontSizeTrack - fontSizeArtist; charJumpsTrack[i] = 0; charJumpsArtist[i] = 0; horizontalOffsetsTrack[i] = -fontSizeTrack; } } initDropPositions(); function draw() { ctx.fillStyle = 'black'; // 设置填充颜色为黑色 ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.font = `bold ${fontSizeTrack}px 'Consolas', monospace`; ctx.textAlign = 'center'; for (let i = 0; i < matrixTrack.length; ++i) { const char = matrixTrack[i]; const randomColorIndex = Math.floor(Math.random() * bigCharColors.length); ctx.fillStyle = bigCharColors[randomColorIndex]; if (Math.random() > 0.7) { ctx.globalAlpha = 0.2; } else { ctx.globalAlpha = 1; } if (Math.random() > 0.95) { charJumpsTrack[i] = (Math.random() - 0.5) * 10; } else { charJumpsTrack[i] *= 0.9; } const x = horizontalOffsetsTrack[i] + i * fontSizeTrack + fontSizeTrack / 2; const y = dropPositionsTrack[i] + fontSizeTrack + charJumpsTrack[i]; ctx.fillText(char, x, y); if (horizontalOffsetsTrack[i] > canvas.width + 50 && Math.random() > 0.98) { horizontalOffsetsTrack[i] = -fontSizeTrack; } horizontalOffsetsTrack[i] += 0.5; } ctx.font = `bold ${fontSizeArtist}px 'Consolas', monospace`; ctx.textAlign = 'center'; for (let i = 0; i < matrixArtist.length; ++i) { const char = matrixArtist[i]; const rainbowColorIndex = i % rainbowColors.length; ctx.fillStyle = rainbowColors[rainbowColorIndex]; if (Math.random() > 0.9) { ctx.globalAlpha = 0.2; } else { ctx.globalAlpha = 1; } if (Math.random() > 0.95) { charJumpsArtist[i] = (Math.random() - 0.5) * 10; } else { charJumpsArtist[i] *= 0.9; } const x = i * fontSizeArtist + fontSizeArtist / 2; const y = dropPositionsArtist[i] + fontSizeTrack + fontSizeArtist + charJumpsArtist[i]; ctx.fillText(char, x, y); if (dropPositionsArtist[i] > canvas.height + 50 && Math.random() > 0.98) { dropPositionsArtist[i] = -fontSizeTrack - fontSizeArtist; } dropPositionsArtist[i] += 0.5; } requestAnimationFrame(draw); } draw(); window.addEventListener('resize', () => { setCanvasSize(); initDropPositions(); }); </script> </body> </html>把大字改成一红一白一紫一粉一黄一绿一七彩
11-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值