合适的地方使用合适的技术

在合适的地方使用合适的技术,我想这一点没有人会反对。而且大多数人都会觉得做到这一点极端简单,无需乎强调。大家可能会觉得问题倒是在于怎么断定什么是合适的技术这个问题。

但其实这两个问题(1、使用合适的技术,2、判定技术是否合适)并没有明确的分界线。因为显然如果不能判定技术是否合适,我们就不能使用合适的技术。

现在说一下我判断技术是否合适的基本原则。1、要经过时间的考验。2、要有比较严密的理论基础。3、技术本身的流行度高。

看看软件开发过程中涉及到的问题。1、理解问题域。这个过程叫做什么业务建模也罢,叫做什么需求分析也罢,主要的目的就是理解问题域。2、设定解决方案。 这个区间承上启下,是一个关键环节。它一方面影响到问题的解决,一方面也反过来影响到问题的理解。因为解决方案是一个人对问题理解和知识结构做输入产生的 输出,而知识结构跟问题理解是一个扯不清的互相关联的参数。3、实际的解决问题。好多人认为,这个环节比较简单,其实不然,这个环节要把一个世界里的东西 投射到另一个世界里(从现实世界到计算机世界),这里面就会涉及到如何投射的问题,而如何投射显然依赖于:问题模型、计算机模型。大多数人会认为这两个中 前一个已经完成了,而后一个很简单,所以投射不会很复杂,可事实上绝对不是如此,原因是:我们一般并不会把问题模型直接投射到裸的(原始的)计算机模型, 而是投射到被各种装备大大增强了的计算机模型上,比如,我们不会直接处理硬盘的数据读写,而可能是考虑把数据放入数据库系统等等。显然,这个投射过程严重 依赖于我们对于目标机器的设想和假定。也依赖于我们个人占有的信息量或者叫做知识量。4、各种偶发事件的处理。这里面主要包括信息的翻译失真,投射的不匹 配导致的困难,经济压力和时间压力等等。

所以,我们一定要在合适的地方使用合适的技术,才能满足在特定性价比的情况下制造出产品——软件系统。

关于问题与和解决方案,属于特定的领域的专业知识,有其特殊性,我大体上不涉及,我只关注实际的解决问题这个环节。我们知道,工作主要来源于投射,而投射的工作量依赖于问题域和解空间的差异性的大小。差异越小,同质化越强,投射越简单,反之亦反。

这就要求我们引出一个概念叫做DSL。这个概念的引入主要是想弥补我们的翻译(投射)的巨大鸿沟,通过一个或者多个中间翻译站,我们可以比较自然和直观的在人脑复杂度承受范围之内解决复杂问题。

到现在为止,我们都在说形而上的理论,现在我们从形而下的实践开始,两头逼近,搞出个结论。

对于任何软件系统,都会牵扯到:输入输出、处理、状态(或数据)存储(或者叫做永久化)。处理各不相同,可重用的一些方面也已经被总结出来了,比如:事 务,身份认证和安全,冗余备份和分布,处理过程(或者运行轨迹)的记录等等,这些是处理中可以重用的部分,总体来说,处理可以重用的比输入输出和状态存储 少的多。

对于输入输出,根据其对象不同,可以分为:跟人类的交互,跟机器(网络节点、别的进程等等)的交互两大类。根据其内容的不同,可以分为实体信息的交互和控 制信息的交互。我们对于实体信息,总结的和可重用的东西比较多,比如:实体信息包括数字、字符(串)、图形图像、声音、视频以及混合信息,它们的传输、存 储、解析翻译(Codec)和获取生成都是可以重用的部件。而对于控制信息,其定义就有点杂乱,投射到人类交互这个层面,会有好多称作Control的可 重用部件用来表达人和软件系统交换的控制信息,投射到机器交互这个层面,显然就是我们不同的【网络】通信协议了,它们主要是维持和管理控制实体信息交互而 采用的,一般称作信令。

对于状态存储,现在比较自然和流行的包括三类,二进制内存存储, 二进制或者文本的【xml】文件存储,二进制的数据库存储。其实(文本可以认为是一种特化的二进制)。对于这些实体信息或者叫做状态,它们的操纵和处理可重用的地方非常大。

上面简要分析了最低层次的(相对而言)的Domain,对于这些Domain,我们有没有对应的DSL呢?

有的,显然,数据领域是SQL、XQuery,处理领域有无数种计算机编程语言,它们都比较合格,尤其是提供了OO能力和Aspect能力以后,用来描述 处理一般没有什么困难,而表现领域(输入输出领域)呢?我认为还是有的,比如:适合图形表现的SVG,适合控制表现的XForms,适合多种实体信息表现 的XHTML2(注意其中的object),适合视频表现的Flash,这些都是该领域的特定语言,可以非常自然高效的表达希望表达的信息。

从这个低层次的分析我们就发现,我们现在把问题空间投射到解空间的方法并不是最好,甚至可以说是相当的差,而近来有些公司已经意识到这一点,比如 Microsoft,Adobe,Sun,它们分别推出了XAML,MXML,JavaFX,用来为输入输出层提高生产率。问题不在于它们的技术,而在 于:1、它们都期望绑定程序员,2、它们的技术都有一定的壁垒,3、现在它们还都不够流行。所以,我个人认为如果提供一个基于标准(XHTML、 XForms、SVG+Other)的表现层运行时,会有很大的竞争力。当然,我的市场敏感度极低,大家自己分辨吧。

有些程序员总是固守着自己的那一块小地盘,期待着所有的事情都用一个办法搞定,这不是不行,只是不够好而已。采用多种DSL构造Application, 一个潜在的问题是这些不同的DSL定义的部件组装在一起的问题。ORM部分的解决了数据领域和业务领域的组装问题,而新出现的表现层Runtime期待着 解决业务领域和输入输出领域的组装。

软件开发的前途看来还是比较光明的。
深入解析Java中的本地方法编程 本地方法允许Java程序调用用其他编程语言编写的方法,从而实现与底层系统和外部库的交互。通过声明本地方法、生成本地方法的头文件、实现本地方法的代码、编译生成共享库以及在Java程序中加载和调用本地方法,可以充分利用底层系统的功能和性能优势。在Java编程中,本地方法是一种特殊的方法,它使用非Java语言编写并在Java程序中调用。本地方法提供了一种与底层系统和外部库进行交互的方式,从而扩展了Java的功能和灵活性。通过调用本地方法,可以轻松地集成和使用C、C++等编程语言的库,从而扩展Java的功能。 阅读详情

相关推荐

告别商业软件?实测用gnina(CNN打分版)做分子对接:从安装到跑通第一个案例

本文详细介绍了基于卷积神经网络(CNN)的开源分子对接工具gnina的安装与实战应用。从环境配置、编译安装到运行第一个COVID-19主蛋白酶抑制剂对接案例,全面解析了这款替代商业软件的强大功能,特别适合预算有限的研究团队进行药物发现和虚拟筛选。

weixin_42522320的博客 255

【ClickHouse 技术系列】- 使用新的 TTL move,将数据存储在合适的地方

译者何源(荆杭),阿里云计算平台事业部高级产品专家前言本文翻译自 Altinity 针对 ClickHouse 的系列技术文章。面向联机分析处理(OLAP)的开源分析引擎 ClickHou...

weixin_45906054的博客 1011

2023电赛B题实战解析:基于立创天空星开发板的同轴线缆长度与负载测量系统

本文详细解析了2023年全国大学生电子设计竞赛B题的实战方案,重点介绍了基于立创EDA天空星开发板(STM32F103)的同轴线缆长度与负载测量系统。文章深入剖析了两种核心测量方案,并推荐了更稳定易实现的NE555测电容法,提供了从硬件选型、电路设计到软件编程、参数标定的完整“施工图”,实测精度可达厘米级和皮法级,为电赛复现与高精度测量学习提供了清晰指导。

weixin_36303305的博客 232

《在合适的地方使用设计模式》

90年代,互联网还没有普及,用户量有限,机器资源有限,开发人员的培养成本高,所以通过设计模式,增加开发一致性,可扩展性和代码复用,降低开发、维护成本,是企业推崇的。而设计模式的目标是,将开发过程标准化,降低项目需要投入的开发、维护人员。基于这个背景,我们不难理解为什么一部分设计模式,以牺牲性能的代价,换取程序的扩展性。各行各业的历史经验告诉我们,没有一劳永逸,一成不变的模式,而软件系统的设计模式也一样。最后,如何在开发中,特别是项目0->1的时候,发现不用设计模式,想不到有什么明显的问题,就建议先不用,

ly52352148的博客 956

HFSS本征模求解:谐振特性分析与工程实践

本征模求解是电磁仿真中的基础技术,用于分析无源谐振系统的固有特性。其核心原理是通过求解麦克斯韦方程组的特征值问题,获得谐振频率、品质因数(Q值)及电磁场分布等关键参数。在5G滤波器设计、雷达谐振腔优化等高频场景中,精确的本征模分析能有效避免模式干扰,提升器件性能。HFSS作为行业标准工具,提供了完整的本征模求解工作流,涵盖边界条件设置、模式识别、场分布可视化等关键环节。针对多模耦合、模式纯度评估等工程难题,结合参数化扫描和场重叠积分等高级技巧,可显著提升微波器件设计效率。

weixin_27918373的博客 336

CANoe从入门到精通“保姆级”教程(二)- 堪称全网“最全”系列

CANoe各功能区介绍;

车载控制器AutoSAR软件开发工程师 2万+

[转载]EJB 最佳实践: 数据验证出现在什么地方最合适

EJB 最佳实践: 数据验证出现在什么地方最合适尽管数据验证是所有企业应用程序的必需组件,但人们对数据验证过程的理解通常很肤浅,并且不能很好地执行。在这篇 EJB 最佳实践专栏文章中,Brett McL...

congji3817的博客 190

Coze离线部署实战:从镜像拉取到服务启动的完整避坑指南

本文提供了一份详尽的Coze平台离线部署实战指南。针对无外网的生产环境,详细讲解了从Docker镜像拉取、打包传输到内网服务器加载的完整流程,并重点剖析了使用docker-compose启动服务时常见的配置错误与权限问题,如文件挂载缺失、网络绑定错误等,提供了经过验证的避坑解决方案,旨在帮助运维和开发人员一次性成功部署。

weixin_29310605的博客 328

什么是地方门户系统

地方门户系统是构建智慧城市的重要组成部分,可以有效地整合本地信息资源,为居民提供便捷服务,促进地方经济社会发展。随着互联网技术的不断发展,地方门户系统也将朝着更加智能化、个性化、服务化的方向发展。是一种基于互联网的平台,旨在为特定地区的居民提供信息、服务和互动渠道。它整合了当地的新闻、活动、商家、政府信息等资源,为用户提供一站式的本地信息服务。

2401_83908395的博客 538

一文搞懂电流、电压的有效值 RMS

交流电有正半周、负半周,直接平均可能抵消成 0,但负半周一样会发热。这个交流电如果换成直流电,能产生同样发热功率时,对应的直流电压或电流”,电容耐压通常不能按 220V 选,常见会选 400V 或更高余量。所以做硬件时,220VAC 整流滤波后电容上会接近。电压/电流的有效值,也叫。如果它加在电阻上,发热按。

qq_52293640的博客 452

YOLO11改进-注意力-引入级联组注意力机制(Cascaded Group Attention, CGA)

输入特征拆分:输入特征进入 CGA 模块后,被均匀拆分为个部分,每个部分作为一个注意力头的输入,这样每个头关注输入特征的不同部分,实现特征的并行处理,同时为提高注意力多样性奠定基础。注意力头计算单元:每个注意力头包含三个线性投影层、、用于将输入特征映射到不同子空间,以及计算自注意力的单元。在计算过程中,通过注意力头之间的级联操作,前一个头的输出会累加到下一个头的输入上,实现特征的逐步细化。

qq_64693987的博客 2490

[转载]EJB中数据验证出现在什么地方最合适

EJB中数据验证出现在什么地方最合适我们将讨论数据验证逻辑应该出现在 EJB 应用程序代码的什么位置,而不是专注于验证过程(Java 技术专区的其它地方对此进行了很好的讨论)。在本系列先前的技巧文章中,我们了解了很多组成基于 ...

congji3817的博客 138

Python爬虫实战:抓取全球船舶AIS定位数据的全流程指南

AIS(Automatic Identification System)自动识别系统是目前全球航运中用于实时跟踪船只位置的主要技术。名称、MMSI编号、呼号实时经纬度船速、航向吃水、目的港状态(航行/停泊/锚泊)航线信息等🛰️海上运输监控:追踪航线,预估到港时间;🛳️船舶管理系统:为物流、港口运营提供决策依据;🌊研究分析:如海洋运输碳排放研究、船只拥堵热力图等;🧠人工智能训练数据集:用于轨迹预测、碰撞预警模型。

2201_76125261的博客 1364

找个合适的地方写博

转了好多地方,最后还是觉得优快云安家比较好,毕竟是大本营,还可以和很多同行交流。 个人对博客的几个要求:   1.原创。  2.言必有物。  3.注意格式,不要错别字。 希望能有机会跟众多博友、同行交流。 写于 2008.11.21

Man1231的空间 390

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

本地方法执行

在Java层调用本地方法后,控制权转移到C/C++编写的音频HAL实现中,音频HAL根据具体的硬件实现执行相应的音频处理逻辑。这一过程涉及参数处理、调用音频HAL接口、执行音频处理逻辑以及与硬件的交互。通过合理的设计和实现,开发者可以构建出高效、低延迟的音频处理功能。本地方法是Java与其他编程语言(如C/C++)之间的桥梁,允许Java程序调用底层系统功能和硬件资源。通过JNI,开发者可以实现高性能的应用程序,同时保持Java的跨平台特性。合理使用本地方法可以显著提升应用程序的性能和功能。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 834

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

来往邮件中‘顺颂商祺’使用地方以及解释

请安语是否合适、是否礼貌,要根据请安语的意思、语言表达习惯和写信的对象及场合等综合判断,具体问题具体分析。

qq_33704273的博客 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

如何选择合适的地方学习PHP培训课程

如何选择合适的地方学习PHP培训课程 PHP已经成为世界上增长最快的脚本语言。 IT巨头如IBM已经投资了Zend公司 PHP的公司,它清楚地显示了这一新的脚本语言的潜力。当您选择合适的位置,以便使在PHP中你的职业生涯是很容易的。 谁应该学什么? 课程是最适合清新谁在寻找工作或有人在非IT领域的工作,并希望扩大他们的技能集是一个PHP的Web开发人员。这当然也适用于谁希望从其他脚本语言,如asp

goljzz0的专栏 513

JVM学习笔记六:本地方法接口和本地方法栈

简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗。该方法的实现由非Java语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在C中,你可以用 extern “c” 告知c编译器去调用一个c的函数。在定义一个 native method 时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非 Java 语言在外面实现的。本地接口的作用是融合不同的编程语言为Java所用,它的初衷是。

种花途 211

找到合适的地方

在阅读Doug的文章时,我想知道拉请求是否是记录更改的正确位置。 我同意需要记录这些内容,但我不同意这个地方。 拉取请求不应在您的团队进行讨论的地方! 当拉取请求打开时,进行基本更改为时已晚。 在快速发展的团队中,拉取请求在团队的大多数人甚至没有看到之前就被合并了。 如果您对拉取请求进行了长时间的讨论,这意味着您的拉取请求将保持打开状态的时间过长。 这违反了引用的程序员的誓言 :#4:制作增量...

编程故事的地方 109

地方性门户网站推广

目前国内网站经历网络泡沫后的今天,如雨后春笋一般的冒着出来,网民消费能力也日益成熟,网络实现经济化的时代已经慢慢来临。最简单的比喻,目前是2007年,现在一个27岁的青年在7年前开始上网(比如说我吧),在2000年的时候20岁的小青年基本没有什么消费能力,也不可能在网络上购买个什么。伴随着个人消费能力的增强,再加上7年左右的上网史,对网络的依赖已经是越来越严重,在网络消费的可能性也就越来越高,互联

qh_online的专栏 1209

什么是地方门户网站系统

地方门户网站系统是一种基于互联网的平台,旨在为特定地区的居民提供信息和服务和互动渠道,它整合了当地的新闻、活动、商家、政府信息等资源,为用户提供一站式的本地信息服务。新闻资讯:发布当地的新闻资讯,包括时政、民生、经济、文化等方面的内容。便民服务:提供本地生活服务,如查询公交、缴费、预约等,方便用户生活。互动交流:提供社区论坛、社交功能等,方便用户交流互动。宣传推介:帮助地方政府、企业宣传推介,提升知名度和影响力。经济效益:可以通过广告、电商等方式创收,实现经济效益。

2401_83908395的博客 800

地方性论坛的建设、盈利、推广

随着互联网的普及,越来越多的人都加入了互联网行列,现有的互联网平台初步满足不了一些用户的需求,附近商家促销打折、当地购买二手车等。虽然有一些公司在做,但是有很多地方的局限。所以做地方门户是很有潜力的行业。到现在来说已经做的初步成熟了,下面我来给大家分享一下怎么做好地方门户网站。   一、首先选择一个好的域名,大家尽量选择com的域名,域名要方便记住,考虑下你的门户的主要用户就是当地的人吧,所以尽...

互联网 356

ClearCase Trigger指南(2) Trigger不是万能的,要以合适的方式用在合适的地方

前言:本部分我写的很不满意,目前正在修改,先上传草稿,准备这一两周修改。再次声明:本文欢迎非商业用途转载,如果象某些网站对用户收费则谢绝转载,如若转载,请标明转载,原作者与出处,不要象我以前的一些文章,有人直接当做自己写的发表去赚稿费了。 如何更好的应用Trigger-Trigger不是万能的,要将合适的Trigger用在合适的地方应用rmelem_check这个Trig

自得其乐的崔秉正 3486

deepseek调用本地方法----本地方法该怎么执行

另一点,AI返回值是有一定随机性的,这时候要么严格规定AI(提示词),要么就微调AI参数(需要一定的数据和资源)。建议通过加提示词的方式来规定AI(或者多试几次),至于微调AI,如果各位有需求的话,可以私信我,出一期AI微调教程。接下来我们给AI一点提示词:告诉AI只能在我们提供的字典中选择函数,不要自己乱写,没有就告诉我们没有对应的方法。首先我们先明白一点,AI没有执行代码的能力,所以他只能告诉我们该执行哪个函数,但是函数的执行还是由我们来控制。很好,AI已经给我们返回了需要调用的函数名,以及参数列表。

xixixi_1160的博客 867

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

a bit 201
上一篇: 依赖顺序是罪恶
下一篇: 一点实用代码
lifeNet
博客等级 码龄20年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值