让你看看什么是真正的设计!

Discuz!论坛专用图标设计与应用解析 板块标志是论坛内各个讨论区的代表性视觉元素,它们不仅起到区分板块的作用,还能传递板块的主题和氛围。 阅读详情

作者:Shantnu

翻译:码农翻身

程序员X在一个IT咨询公司工作,这一天他的Slack收到了来自老板的一条消息,可是这个经常使用200G内存的软件又一次崩溃了,他看不到老板在说什么,于是就直接去找老板。

他打开了老板办公室的门,看到老板慌忙地把浏览器关掉, 问道:“有什么事吗?我正在工作。”

“我的Slack崩溃了,看不到你发的消息。”

“奥,是这样,” 老板说,“下星期是我外甥女的7岁生日,我姐姐想让我给她做一个庆祝生日的网站,你能帮忙吗?”

“当然,没问题!”

程序员回到了座位上,预定了第二天的会议。

“老板吩咐我们给他的外甥女做一个网站,怎么开始呢?”

“那当然得先选技术栈啊!” 另外一个程序员说到。

他们花了两周的时间来讨论用什么技术栈,最终确定了一个列表, 这里仅仅是前端列表:

“不错,不错,我们有前端技术了,让我们开始吧!”

三个月以后

老板坐在办公室吃三明治,这时候他想起了一件事情。

“X, 3个月前我让你给我的外甥女建一个网站,现在网站到底在哪儿?”

“先生,我们正在开发前端,我们写了测试,并且创建了后端的Mock,我们很快就会完成了!”

“什么?你在开玩笑吗?滚出去!”

程序员X知道老板为什么发火,因为老板知道他们不应该使用Fad.js,他们应该使用Even-More-Fad.js。

项目启动6个月以后

前端完成了, 可是他们还需要一个后端, 于是程序员X又举办了一个会议。

“好了, 朋友们,我们得开始写后端了, 对于用什么框架,欢迎各抒己见!”

20个程序员给了20个建议,基本上,每个人都选择了自己最喜欢的,能让自己获得更好工作的框架。

经过了一周的争论,他们发现了一个新的编程语言,由Google和Facebook联合推出,新的语言叫做“顽皮小脚本”。

于是每个人都同意用这个新语言。

程序员X幻想着这个项目完成以后,他就可以到Face-oogle去工作了。

项目开始1年以后

项目进展不顺利,程序员X的头上开始冒汗了。

“顽皮小脚本” 有很多的Bug,他们不知疲倦地Fix,实际上是为Google和Facebook提供免费劳动力。

虽然他们还没有开始一行代码的编写,但是X知道再努力一下,成功就在不远处。

这个时候老板把他叫进了办公室。

“X,你这个白痴,一年前我让你给我的外甥女建个网站,你到底在干什么?”

“先生,马上就做完了,再给我两周就行!”

“算了吧。去年我外甥女自学了一点HTML和Javascript, 她自己就把网站建起来了!”

程序员X震惊了!

一个HTML网站!到底是谁做的!

“这太荒谬了,  她怎么去测试呢?她写测试用例了吗?”

“她打开浏览器,这儿点点,那儿点点不就行了?”

“但是她是怎么Mock后端数据库的?怎么集成微信、微博、QQ的?缓存呢?负载均衡呢?如果CDN挂掉了怎么办?如果她想把网站改成SPA该怎么办?!”

“滚出去,你这个白痴!”

程序员X回到了座位上,他到知乎上写了一个很长的文章,抱怨这些刚进入编程领域的孩子们不讲究任何标准,他们这样会毁掉软件产业。

文章得到了一千个赞同,每个人都同意现在入门编程的标准确实降低了。

原文链接: 

https://www.pythonforengineers.com/the-attack-of-the-over-engineering-cowboy-programmers/

后记:这个小品文生动地诠释了什么是过度设计和过度工程,程序员X在没有搞清楚真正需求的情况下就贸然开始设计,选择了复杂的前端和后端,尝试了各种热门的东西,这样的项目必败无疑。

你的项目中有没有过度设计和过度工程?欢迎留言交流。

微服务把我坑了

如何降低程序员的工资?

程序员,你得选准跑路的时间!

两年,我学会了所有的编程语言!

一直CRUD,一直996,我烦透了,我要转型

字节码万岁!

上帝托梦给我说:一切皆文件

Javascript: 一个屌丝的逆袭

Node.js :我只需要一个店小二

我是一个线程

TCP/IP之大明邮差

一个故事讲完Https

CPU 阿甘

Discuz! 论坛毕业级模板设计实战 模板变量是模板中用于输出数据的占位符。通过修改模板文件中的变量,可以轻松地改变输出的内容。例如,论坛名称、版权信息、页脚信息等都可以通过修改对应的模板变量来实现个性化定制。以index.html为例,其中包含输出论坛名称的模板变量:要修改论坛标题,只需将替换为希望显示的标题即可。在Discuz!中,许多页面元素都可以通过这种方式进行自定义,以适应不同的设计需求。响应式设计是现代网页设计的核心概念之一,它确保网站能够在不同尺寸的设备上提供良好的用户体验。 阅读详情

相关推荐

Discuz! X社区论坛诛仙主题模板设计

Discuz!X是一款由康盛创想(北京)科技有限公司开发的社区论坛软件。它基于PHP语言编写,搭配MySQL数据库使用,提供了丰富的功能模块,如用户管理、帖子管理、版块设置等,支持二次开发和定制化需求。

weixin_29717341的博客 820

Discuz!NT 缓存设计简析 [代震军原创]

Discuz!NT 缓存设计简析 [原创]        作为一个社区类型软件,大并发支持和高效稳定运行永远是“硬道理”,而有效安全的使用缓存恰恰能起到事倍功半的效果。而.NET本身所提供的缓存机制又显得过于“单薄”,比如说订制不太灵活方便, 缓存对象之间层次感不强, 使用时缺乏统一的管理等等。             Discuz!NT缓存产生背景:         在去年五月份我加

ulark的专栏 872

动漫二次元风格Discuz!论坛模板设计

htmltable {th, td {th {pre {简介:本模板为动漫二次元爱好者设计,集成了Discuz!的社区论坛功能,通过独特的动漫风格元素和视觉设计,为用户提供一个沉浸式的讨论与分享平台。模板提供了丰富的自定义选项,包括色彩、图标、背景等,以及对SEO和响应式设计的支持,确保用户可以获得优质的社区体验。

weixin_42513928的博客 1109

《Apple 设计奖 2014》出炉,还无辜的《Threes!》一个公道了

图、文/苹果仁苹果的 WWDC 开发者大会除了第一天的发表会外,还有一连串的活动,而今天,苹果公布了 2014 年的《苹果设计奖》得主,精选了从 iOS 到 mac、从实用工具到游戏的优质 app。而这些被 Apple 精选出来的 app,都必须在功能、游戏性以及设计上符合苹果严苛的要求,恭喜以下软体以及他们的开发者!为什幺要特别恭喜这些软体的开发者呢?因为里面有款 app 在去年可以说是受尽

u016420459的专栏 470

Discuz! 淡淡香草味:清新论坛主题模板设计与实战

Discuz!是一款基于PHP和MySQL的开源论坛软件,由康盛创想(北京)科技有限公司开发。自2001年发布以来,它因其易于安装、丰富的插件支持以及良好的社区服务而受到广泛欢迎。Discuz!支持网站社区构建,提供多种功能模块,包括但不限于用户管理、帖子管理、主题分类、权限控制等。开源软件(Open Source Software)是一种源代码公开的软件,允许用户自由地使用、修改和共享。这种模式自1980年代晚期起就存在,但直到1998年,开源软件运动才正式得名并开始盛行。

weixin_31938351的博客 655

【Nature Communications】超高介电常数材料 Hf0.5Zr0.5O2(HZO)

复旦大学AnQuanJiang团队在《NatureCommunications》发表研究,通过原子层沉积技术制备Hf0.5Zr0.5O2(HZO)薄膜电容器,结合等离子体处理获得突破性性能:介电常数达921,储能密度584J/cm³,效率近100%。研究揭示了铁电性消失后氧空位有序排列产生超高介电常数的机制,并通过同步辐射衍射和STEM分析证实了微观结构转变。该材料在85-300K温度范围内保持稳定,经1万亿次循环后仍能维持100μC/cm²电荷密度,为高密度DRAM和CMOS器件集成提供了新方案。

荷塘阅色 2457

FREE!ship Plus船舶设计软件:从零开始掌握专业设计技术

面对船舶设计这一传统上需要专业软件和高昂费用的领域,许多初学者和中小型船厂都感到无从下手。FREE!ship Plus作为基于Lazarus环境开发的开源船舶设计解决方案,彻底改变了这一现状。这款软件不仅功能全面,更重要的是操作界面直观易懂,让没有任何专业背景的用户也能快速上手,完成从概念设计到工程图纸的全过程。 ## 常见设计难题与解决方案 ### 问题一:如何快速创建基础船体模型? 许多用

gitblog_00063的博客 449

ATE测试基础——直流参数测试

芯片测试在发展过程中诞生了许多术语,初次接触的人大部分都会被绕晕。因此为方便广大读者理解,在开始介绍测试项之前,需要对测试领域的名词进行解释。还有部分较为抽象的内容,需要略作展开。DUT——Device Under Test,正在被测试的器件Pin——器件引脚,信号引脚分为输入,输出,三态和双向四类,负责与外界进行信息交互;电源引脚分为电源和地两类,结构与信号引脚不同,负责给器件内部运行和外部输出提供电平。输入:在外部信号和器件内部逻辑之间起缓冲作用的信号输入通道;

你骄傲地飞远的博客 1万+

FREE!ship Plus船舶设计软件终极使用指南:从入门到精通

想要掌握专业的船舶设计技术但预算有限?FREE!ship Plus作为一款基于Lazarus环境开发的开源船舶设计软件,为您提供完整的解决方案。这款软件不仅完全免费,而且功能全面,能够满足从简单游艇到复杂货轮的各种设计需求。 ## 为什么选择FREE!ship Plus进行船舶设计? **完全开源免费** - 无需支付昂贵的许可费用,即可获得专业级船舶设计能力。软件基于GPLv3协议发布,您可

gitblog_00512的博客 976

小红书x-mini签名逆向实战:Frida动态Hook与算法还原

在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位

weixin_31264565的博客 457

DaVinci Configurator BswM模块配置

BswM是AUTOSAR(Automotive Open System Architecture)系统架构中的模块之一,它是基础软件模块(BSW)之一。BswM全称为Basic Software Module Manager(基础软件模块管理器),它负责管理和协调其他BSW模块的行为和交互,以实现整个系统的功能。BswM可以被看作是一个状态机,通过监控系统的状态和事件触发,来控制其他BSW模块的运行状态和互相配合,以达到整个系统的预期行为。

qq_59258431的博客 3947

LayoutIt! 设计Bootstrap页面

LayoutIt!是一个拖动式的设计Bootstrap工具 对于不想做任何美化却也怕丑的程序员来说 这个真是个东西 这就拖动就好 然后导出 记得引入CDN

more time 2302

OBS技术深度剖析:从开源直播工具到专业制作引擎的进化之路

本文深入剖析了开源直播软件OBS的技术架构与发展历程。从2012年诞生至今,OBS已成长为直播领域的事实标准,其成功源于模块化设计和开源协作模式。文章详细解析了OBS的核心技术:1) 分层架构与插件系统,2) GPU加速的渲染管线,3) 智能音频处理,4) 多平台编码优化。同时探讨了虚拟摄像头、浏览器源等高级功能的实现原理,并提供了性能优化方案和硬件配置建议。随着AI、WebRTC等新技术发展,OBS将持续引领实时内容创作工具的创新,为开发者和创作者提供更强大的技术支持。

程序猿老樊的博客 326

CopyU!新版将会重新设计UI

CopyU!下一版将启用新的UI

kflizcst的图形世界 749

STM32 烧录报错Invalid ROM Table

STM32 烧录报错Invalid ROM Table

热爱科技,物联,程序开发等 1733

GD32 I2C中断通信实战:主机与从机高效数据交换方案

本文详细解析了GD32微控制器I2C中断通信的实战方案,通过配置I2C0为主机、I2C1为从机,实现高效的双向数据交换。文章深入剖析了中断服务程序(ISR)的核心配置、关键状态标志位处理以及事件驱动机制,帮助开发者避免常见陷阱,提升系统响应速度与资源利用率,适用于传感器连接、多机通信等嵌入式场景。

cream的博客 846

免费船舶设计软件FREE!ship Plus:从零开始设计专业船型的完整指南

你是否梦想设计自己的船舶,但被昂贵的专业软件所困扰?FREE!ship Plus为你提供了完美的解决方案——这是一款基于Lazarus/Free Pascal开发的开源船舶设计软件,完全免费且功能强大,能够满足从初学者到专业设计师的各种需求。无论你是船舶工程学生、业余造船爱好者,还是专业船舶设计师,这款软件都能帮助你快速创建、分析和优化船舶设计,让你轻松实现船舶设计梦想。 ## 🚢 为什么选择

gitblog_00121的博客 610

YOLOv11 快速入门指南 | 10分钟吃透网络结构与新特性

2024 年 9 月 30 日,Ultralytics 发布了 YOLOv11,这是继 YOLOv8、v9、v10 之后的最新一代实时目标检测模型。 与前几代相比,YOLOv11 在保持“单阶段、实时、端到端”三大基因的同时,带来了两大核心升级:一句话总结:YOLOv11 = 更快 + 更准 + 更少参数。 2.2 微观单元:C3k2 与 C2PSA 2.2.1 C3k2 模块 作用:替换 YOLOv8 的 C2f,做跨阶段局部特征融合。 核心代码(ultralytics/nn/modules/block

shrgegrb的博客 1407

FREE!ship Plus:专业船舶设计软件的完整使用指南

作为一款基于Lazarus环境开发的免费开源船舶设计工具,FREE!ship Plus为船舶设计师和爱好者提供了从概念设计到工程分析的完整解决方案。这款软件不仅具备商业级CAD系统的功能特性,还以其直观的操作界面和丰富的功能模块赢得了用户的广泛认可。 ## 🚀 软件快速入门指南 ### 环境配置与安装步骤 开始使用FREE!ship Plus前,首先需要获取软件源码并完成环境配置: ```

gitblog_00446的博客 747

深度学习工具包 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")

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

FREE!ship Plus船舶设计软件终极指南:开源工具完整教程

还在为昂贵的船舶设计软件发愁吗?想要一款既专业又免费的船舶设计工具?今天我要向你推荐这款完全开源的FREE!ship Plus船舶设计软件,它将彻底改变你对船舶设计的认知。作为基于Lazarus/Free Pascal开发的跨平台解决方案,这款工具让船舶设计变得触手可及。 ## 🤔 为什么你需要这款船舶设计软件? ### 传统船舶设计软件的痛点 - **高昂的费用**:商业船舶设计软件动辄数

gitblog_00545的博客 491

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Discuz!NT 缓存设计简析 [原创](转)

Discuz!NT 缓存设计简析 [原创] 作为一个社区类型软件,大并发支持和高效稳定运行永远是“硬道理”,而有效安全的使用缓存恰恰能起到事倍功半的效果。而.NET本身所提供的缓存机制又显得过于“单薄”,比如说订制不太灵活方便, 缓存对象之间层次感不强, 使用时缺乏统一的管理等等。 Discuz!NT缓存产生背景: 在去年五月...

weixin_30260399的博客 137

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Discuz!NT 缓存设计简析 [原创]

作为一个社区类型软件,大并发支持和高效稳定运行永远是“硬道理”,而有效安全的使用缓存恰恰能起到事倍功半的效果。而.NET本身所提供的缓存机制又显得过于“单薄”,比如说订制不太灵活方便,

wcqlwyt的博客 163

CopyU!打包插件完成了框架的设计

CopyU!的首个增强功能插件——Packer打包插件,完成了框架结构的设计,即将融入实际的功能代码的设计。        1、 插件的设置窗口         2、插件的关于窗口:

kflizcst的图形世界 567

在Joomla!的组件里创建web service - 03: Joomla!自身的Component设计

我想我还是回到Joomla!原本的组件的MVC设计中。 以JoomSport为例,它的模块入口为:/components/com_joomsport/joomsport.php。打开它来看看它都做了哪些事: <?php // no direct access defined('_JEXEC') or die('Restricted access'); // Require spe

Vincent's Tech Blog 695

FREE!ship Plus:船舶设计的终极免费解决方案

想要轻松设计专业的船舶模型却苦于复杂昂贵的商业软件?FREE!ship Plus作为基于Lazarus环境开发的免费开源船舶设计工具,让普通用户也能快速掌握船舶设计技术。这款功能强大的软件不仅提供了完整的船舶设计解决方案,而且拥有直观友好的操作界面,是船舶爱好者和专业设计师的理想选择。 ## 🚢 软件安装与环境配置 开始使用FREE!ship Plus之前,你需要完成软件的安装配置。项目提供

gitblog_00488的博客 1019

邮电社完成了《Joomla!建站步步通》封面设计稿,请大家选择

邮电社完成了《Joomla!建站步步通》封面设计稿,请大家选择!哈哈,书籍快出版了,终于可以不辜负大家期盼呢。 选择您最喜爱的Joomla!建站步步通封面http://www.4fbbs.cn/bbs/viewthread.php?tid=49714&extra=page%3D1

joomlaer的专栏 819
上一篇: 坑人的“杀手”组织
下一篇: 阿里第一,腾讯第二,谁是中国的第三朵云?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值