秦军的建设思考

基于Meteoinfo与TrajStat的后向轨迹聚类分析实战:从数据准备到可视化制图 本文详细介绍了基于Meteoinfo与TrajStat进行后向轨迹聚类分析的完整实战流程。从Java环境配置、Meteoinfo软件与TrajStat插件安装,到精准获取NOAA气象数据、设置参数进行批量轨迹计算,再到利用聚类分析提炼主要气流路径,并最终完成专业地图可视化与制图。文章旨在帮助环境与气象研究者快速掌握从数据准备到成果输出的全链路操作。 阅读详情

秦军的建设思考

 

其实这篇文章应该很早就出炉了,因为很多文字已经是几个月前就已经草就了。不过也是因为机缘巧合,在这个下午,我不想太多地关注于冰冷的技术,而且看到自已的博客好久没有更新了,于是把它整理了一下。

    文章的起由是中央电视台放映的《复活的军团》,本来断断续续地看过,前几个月的一个周日正好就买了一张整合的DVD,又重新完整地看了一遍,于是有了写些东东的冲动。

一、铁器时代使用青铜兵器

   铁器在战国末期已经作为农具是大量使用,东边六国也大量使用铁制的兵器,但是为什么秦军依然使用青铜兵器作为他们武器呢。铜矿的开采较易,铜的冶炼也较易。这样的话制作大量兵器的铜矿资源和冶炼人才都较多。经过长期的青铜兵器的使用经验,他们已经熟练掌握铜锡的配比,能够将青铜的性能发挥到极致。

另外,秦人在农业上大量使用铁制农具。这又是为什么呢,因为当时铁制工具解决了青铜工具很多问题。现在的新技术层出不穷,新名词满天飞。

而我们往往盲目追求高新技术,而且这点在程序员中很普遍,看到JAVA火,就改JAVA,看到DOTNET红,就换DOTNET,实际上作为企业而已,应该一方面应该探索新技术,作为技术储备,而在生产应用中,应该尽量地使用成熟技术。我们使用成熟的技术并不是说就不要学习新技术,如果新技术能够简便地解决我们的问题,就可以拿来使用。

二、标准化的大规模生产

这也是秦人超出他们所处在的时代之处。国家通过技术选型将武器的标准用法律的形式固定下来,并进行统一格式的生产,以保证所有的武器性能是一样的。不光是军事工业,在农业方面也是如此,连几时布种,布种量都写入主律法,使国家能够进行宏观指挥调控生产。

企业对于成熟技术的使用应该进行提取,标准化。比如形成企业专用标准库,在所有的程序中进行使用,虽然可能在某个应用上不一定是最好的,但从企业产品线的角度来看,这是最好的方法。另外,标准的编程方式,统一的命名规范也是规模化生产的必要手段。

三、各司其职、各领其责

相邦吕不韦是一名真正意义上的智者,他领导下的大造们制作了大量的战争物资,而且每件都是完全可以找到制作人、归属部门、制作时间,可以想象在那个年代,这是一种什么样的思量。因为专心于一种工序,在这个工序工匠尽力将技术发挥到极致。因为责任到人,所以工匠会尽心尽职。

我们的企业往往不会给程序员太多的专心于一种技术的可能,总是今天做做网页,明天写写数据库,后天搞搞数据通讯,企业是什么赚钱做什么,程序员也是东学学,西看看,结果学了十几年程序,语言学了不少,可什么也不精,最后只会拿个IDE拖拖控件。而且程序写起来都是完工了事,能拿到钱就好。

 

二千年前,秦人正是因为有了统一性能的武器,不管是在草原还是在大漠,或是在南方的丛林,秦人的武器都是一样的锐利,秦人的战斗力一样的强盛,最终能吞并六国,坐拥天下。而现代的中国软件企业就象东边的六国一样,虽然不乏李牧之类的名将,如果再不找出问题所在,终将被西方标准化、大规模化生产的软件企业击溃。

 

 

Open3D KD-tree的使用【2025最新版】 Open3d使用FLANN构建KDTree以便进行快速最近邻检索。博客长期更新,本文最近一次更新时间为:2025年1月1日,代码已同步更新至Open3D 0.18.0版本。 阅读详情

相关推荐

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。还原数据库时把序列取消勾选,选择不还原序列。因为还原表的同时,会自动将自增序列还原上去,此处勾选会导致数据库重复创建序列。点击还原数据库完毕后,可以看到序列仅有一个,没有出现重复序列。但此时的序列当前值是从1开始的,需要重置。点击菜单“其它”-》“序列”,可以看到有多个重复序列。

奋斗鱼 1043

输掉战役赢战争(博弈论的诡计)

千百年来,楚汉相争一直是中国人回昧无穷的历史片断。自司马迁的《史记》把项羽描绘成“力拔山兮气盖世”的英雄以后,历代文人墨客往往崇敬出身将门的项羽。而嘲贬出身平民的刘邦,李清照“生当作人杰,死亦为鬼雄”的诗句更是把这种祟仰推到了极致。 抛开这些感性的评价,很多人也会对项羽兵败感到十分奇怪。项羽从起兵到失败丧生历时七年,多是战绩辉煌,用他自己的话来说就是“身七十余战,所当者破,所击者服”,最后...

weixin_33817333的博客 197

S4HANA - Cost Elements成本要素

SAP这里面的配置逻辑很像,就是先建一个对象,然后不停给这个对象附加一些属性,给一个账户附加编号范围,附加账户组。所有模块的维度都在这个表里,看下图的GL,CO,COPA,AA,ML的都在ACDOCA里。要把这5个类型和六大要素对应,先得把六大要素和账户类型对应下(以下是个人理解,不知道对错):当然那个C是新来的,我觉得放在资产下面也行,就不画图了。S4的嵌入式分析是在业务逻辑都整套嵌入的情况下,预开发了数据模型,所以它能提供的就不仅是原始数据了,它能提供的是包含所有相关联的上下文的信息数据。

weixin_45689053的博客 2394

领导如何轻松驾驭下属

一个组织事业的成败靠的是人,谁有高素质的人才,谁就可以在竞争中获胜。作为组织的领导者,你的任务不是去发现人才,今天培养一个张三,明天考虑一下李四,这样就本末倒置了。领导者的职责应该是建立一个可以出人才的机制,就是营造一个“赛马场”,通过人才机制来发现人才,产生人才。对一个组织来说,领导者建立这种机制,比亲自去发现人才更重要。 能否成为一个成功的领导人,一方面是要有卓越的工作能力和竞争意识,努力使

1273

谷歌学术用publish-or-perish来对引用量排序

用谷歌学术搜索文献的时候发现不能按照引用量高低进行排序,网上提供了这个软件。 下载地址如下:Publish or Perish (harzing.com)https://harzing.com/resources/publish-or-perish 关于软件界面页面和各种指标的介绍,可以参考中科大的这个PPT: 文献分析软件——publish or perish(精品·公开课件).ppt (book118.com)https://max.book118.com/html/2018/1124/813

m0_48878989的博客 1万+

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

《代码大全》解读(完)

《代码大全》解读(完)     每个故事都会有最的一章,本书最后三章阐述了一些编程之外的东西,但是和软件工程有很大的关系。首先第三十一章谈到了《个人性格》。如果是中国人来写这本书,题目应该叫《个人修养》,外国人总爱把心理学扯进来,到了现在可能叫“情商”更加符合所谓后现代的文化。不过不管它叫什么,讲的还是一样的东东。作者认为一个优秀的专家或是大师一定是:1)          一个谦

BlueDog专栏 6470

Python爬虫教程:抓取社交媒体内容(以Facebook和Instagram为例)

为什么抓取社交媒体内容?品牌分析与监测:通过抓取品牌、产品或服务相关的社交媒体数据,可以获得公众对其的评价,识别市场趋势,制定营销策略。情感分析:分析用户在社交平台上的情感倾向,如对某事件、产品、服务的正面或负面情绪。舆情监控:通过抓取大量社交媒体内容,监测公众对热点事件的反应,发现潜在的社会问题。用户行为分析社交媒体的数据类型:帖子和内容:包括用户发布的文本、图片、视频等。用户互动用户信息:包括用户名、粉丝数、关注数等社交信息。社交媒体的反爬虫机制:API限制。

2201_76125261的博客 1340

《代码大全》解读(一)

《代码大全》解读(一) 其实很早就知道这本书,但是我一直望文生义的以为他是一本讲如何具体来实现某些功能的书,所以也就没太在意。直到最近优快云上头版有几篇代码大全第二版的文章,而且最近我也在关注和思考软件工程这方面的东东,因此也就想起要看一看了。在网上转了一圈,只找到第一版的中译电子版,PDF格式的,虽然不如纸质的看起那么爽,但是好的思想不会因为是笔写成的或是激光照排的而有所区别,也就将就

BlueDog专栏 5084

Vulkan入门系列3 - 绘制三角形代码解析(全)

【代码】Vulkan入门系列3 - 绘制三角形完整代码(带详细注释)

GPU全栈博主 1034

卸载python弹框报错:Could not set file security for file ‘D:\Config.Msi\abd5.rbf‘. Error: 5. Verify...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 6491

《代码大全》解读(九)

《代码大全》解读(九) 如果前面的章节是阐述具体创建过程相关事项,那么二十四章《评审》、二十五章《单元测试》、二十六章《调试》更多地是偏重于创建过程的后续阶段。评审没什么好说的,测试可以重点看看。单元测试、功能测试、部分测试、系统测试组成的测试的全部,不过单元测试可能是改善代码质量的最重要部分。一个熟练的工匠在砌墙时总要不断地平水尺和铅锤进行水平和垂直的测量,这也是一种单元测试,这样才

BlueDog专栏 2775

【知识图谱】neo4j安装与配置_社区版_2025(附完整安装软件包)

(经历过各种版本NEO4J,遇见杂七杂八的各种问题,也看过非常多很好的教程,特此来分享一下,为大家排排坑。

知识靠谱的博客 2万+

《代码大全》解读(二)

《代码大全》解读(二) 其实今天我是很不爽的,早上跟同事一起到一个省级单位去看某行业软件演示(因众所周知的原因,恕我不能提起相关的信息)。看完演示,我真的是无语了,又是一个“优秀的政府项目”。自从上周看完了头两章,一直没有时间来静下心来看这本书。今天正好抽点时间看看,于是又有了这篇文字。第三章《软件创建的先决条件》书的头两章其实是形而上的东西居多,这一章在这本以“务虚”为主的书中算

BlueDog专栏 2596

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

《代码大全》解读(三)

《代码大全》解读(三)——第四章的一些想法第四章的标题是《建立子程序的步骤》。我的读后感是“想法是好的,只是暂时没办法实现”,本章就是告诉你在写一个子程序之先最好写一个PDL片断,所谓PDL就一种用英语方式在思维层面上来描述算法或者程序逻辑的语言。其实我觉得不一定要它的标准语法来写,用中文也是可以的,其重要的特点是在思维层面上,而不是具体实现上,比如“分配一块内存”就不要写成 malloc

BlueDog专栏 2594

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

软件工程之向传统产业学习(起篇)

软件工程之向传统产业学习—— 起篇 刚在一直再找Music Heaven的专集,不过网上除了eMule好象还有一点点链接之外,好象都烟消云散了,几张网页提供的链接也是“服务器无法找到”之类的。却意外地下到一张《完美钢琴》的CD,于是我在这音乐的流动之间开始下面的文字。 软件行业的诞生其实也就五十年左右,却出现了很多问题,不管是大拿或是小虾都在思考一个问题,如何快速有效地开发

BlueDog专栏 2536

《代码大全》解读(十)

《代码大全》解读(十)     软件的发布最终日期即将来临,那么代码大全的读者会关注一些什么东东呢,接下来的四章就讲的是这方面的事情,二十七章《系统集成》、二十八章《代码调整》、二十九章《代码调试技术》、三十章节《软件优化》(个人觉得第二十八章的标题有点题不对文,不如用《代码优化》,而二十九章应与三十章合并一起称《重构》更加合理)。系统集成也就是将软件的各个功能子模块集成起来进行联调。

BlueDog专栏 2285

《代码大全》解读(四)

《代码大全》解读(四) 第五章——《高质量子程序的特点》,第六章——《模块化设计》以及第七章——《高级结构化设计》,我觉得这三章其实是讲一个问题,如何写高质量的化码。注意它并不是高效,而是高质量。由于此书成于1993年,因此很多具体的情况有了很大的变化,因此我建议大家要是有钱还是去买第二版的,优快云上是有售的。这三章,我也只是匆匆翻过,因为它的很多思想我想对于一个编程老手来讲是些老生

BlueDog专栏 2220

《代码大全》解读(五)

《代码大全》解读(五) 接下来第八章到第十八章我读起来非常的快,但心中却多了很多感概,如果要是从96年我开始学习编程开始就读到这本书该有多好,可是没有人向我推荐过。这十一章讲的都是有关代码规范的问题,当然时过境迁有些东东已经不太适用,而且对于一些兴新的语言而言,很多已在语言中作了规定。变化是永恒的,但是也有很多不变的思想,如统一的命名约定,比如对于C++以前推荐的命名是匈牙利命名,而对

BlueDog专栏 2122

《代码大全》解读(七)

《代码大全》解读(七) 第二十章所言如其题所示《编程工具》,考虑到书成于1993年,我真的很佩服作者所具有的前瞻性眼光,UNIX系列下的工具我是不熟悉,但是WINDOWS下的工具用过不少,随着硬件技术的飞速发展和编程技术的日益成熟,目前我们已经能够拥有比较能实现作者所言的Cobble编程环境了。我的机器以现在的眼光来看真的太次了,C1 .7/512M跑VS2003还是比较流畅的,不过打开M

BlueDog专栏 2051

《代码大全》解读(八)

《代码大全》解读(八) 接下来的三章分别阐述软件工程管理的三个方面。但是作者并没有给出终极解决方案,即便是2006年的今天也无法对这三个方面给出完美的方案。软件开发虽然类似于建筑工程,但是因为其实施人员可能是地球上最聪明的一类人,而且由于软件本身的特点,导致了传统行业的一些管理方法很难应用到软件开发工程管理上。首先第二十一章简约地用数据介绍了大型和小型软件的资源配置不是一个简单的倍数关

BlueDog专栏 2042

《代码大全》解读(六)

《代码大全》解读(六) 今天花了点时间,又看了两章,第十八章——《文档》,第十九章——《注释》。本来以为会是轻松地看看,边看边觉得自已以前写的很多代码真是有些垃圾,真的有很多bad smell。这两章其实可以说是一个核心问题,如何写好注释,需不需要写注释我想不需要过多讨论,但如何写好注释于我们却是一个问题。作者提出了几点,我归纳了一下:1、         不写无用的注释比如 

BlueDog专栏 1951

C#设计模式乱谈(一)

C#设计模式乱谈(一) 其实很早以前就想仔细看看《设计模式:可复用面向对象软件的基础》这本书,于是到网上下了一本PDF版的,这绝对是一本好书,它的首要原因是太多人提到这本书,其次是我看了几天,还是毫无收获,就象一个人初入武当,师傅也不管他,直接丢了一本《武当心法》给你,然后让你自已去体会,我想他一定会不知所云。我想我也是这样子,应该是我功力太浅,所学甚少的缘故吧,于是最终不了了之了。总算2

BlueDog专栏 1912

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 293

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 350
上一篇: DotNet剖析系列(二)——控件继承
下一篇: Vista之初体验
BlueDog
博客等级 码龄27年 104粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值