心情随发--学习wince的路程

startup_gd32f10x_md.s中汇编语法 下面把这个启动文件里常见的汇编符号,按“它像 C 里什么”来归类成一个速查表。这样你以后读启动文件就不会只看一大堆符号名了。相当于:uint32_t __Vectors[] = { ... };它不是“执行指令”,而是“存一份地址值”。while(1) { }或者一个死循环。全局函数或全局变量,允许别的文件引用。在数组中放一个 32 位常量值。全局符号定义 / 对外暴露。它是启动代码里最重要的函数。HardFault入口。不让异常时跑到随机地址。宏定义 / 常量定义。“定义一个段/区块” 阅读详情

    到今天为止,接触到ARM都有5个月了,以前是放着,没怎么学,想想从公司实习回来,只是学习了基本的流程,至于驱动什么的根本不懂,那天第一次听到老总说什么用EVC边个界面程序,天啦,我黑了,什么事EVC啊,呵呵,不会啊,羞涩的拒绝了,之前没弄过VC,慢慢以后的工作中知道怎么下载程序了,不过还是不知道怎么学习。

   很快,请假的时间到了,要回学校了,回到学校后,我就慢慢的看了,记得这时候都10月中旬了,PB软件的没安装好,呵呵,很多都不会,可悲的是烧写NK。的时候,烧错了,板子用不了了,没办法,返回厂家给弄好。

   总之,,,过程很曲折,不过到现在心情还是很不错,呵呵,已经搞懂了2个驱动  GPIO+按键中断,虽然说是按照厂家BSP包里卖弄修改的,不过流程怎么写还是很清楚,可以说流式驱动基本入门了,感觉C++,VC也学知道怎么用了,很开心,好像到了开始学习单片机的那时候,呵呵···

   过程很累,看着周围的室友天天游戏 玩着,也挺羡慕的,大四了,过着高3的生活,呵呵,标准的宅男!

   好好的努力,为了明天会更好!!

   很感谢优快云上兄弟,姐妹们。该过年了,祝大家新的一年都取得自己心中满意的成绩!

   展望未来:

          下面在假期里面掌握 触摸屏和串口驱动,好好在看看C++的知识,自己太差了。

          自己还不会,汇编,感觉在学习bootloarder的时候,好好学习下,这个,呵呵  等到工作吧!!!!

        

         

汇编 I/O 与中断:端口读写、中断向量表与 ISR 本文详解x86架构下I/O端口与中断机制,涵盖端口映射、IN/OUT指令、中断向量表(IVT)结构及中断处理流程。通过实模式下的键盘、定时器等硬件示例,揭示操作系统如何通过中断实现硬件管理,并演示自定义中断服务程序的安装与正确调用方式,强调保护现场、读取扫描码、避免重入等关键细节,为理解操作系统底层交互提供坚实基础。 阅读详情

相关推荐

C 与汇编混合编程:符号链接、调用约定与参数传递

本文详解汇编与C语言混合编程的实现原理,涵盖PUBLIC与EXTERN指令的使用、32位调用约定(参数从右往左压栈、调用者清栈)、栈帧布局及寄存器保护规则。通过实例展示C调用汇编函数与汇编调用C库(如printf)的写法,并对比32位与64位(Windows x64)在参数传递、返回值和栈对齐上的差异。强调边界清晰的重要性,确保跨模块调用稳定可靠,适用于性能优化、硬件操作及学习底层机制场景。

软件工程师文艺 319

WinCE自学一周心得体会(Wince蓝牙连接打印机打印一维码和Vin码)

WinCE自学一周心得体会(WinCE蓝牙连接打印机)                   各位大神们,看见小弟写的博客可不要笑话,小弟也是第一次写博客,初来乍到多多指教,本人也是还没毕业的学生,在一家公司进行实习,实习5个月了,公司主要是做管理系统,跟硬件也有一些接触,一个星期以前老板安排让我做一个WinCE的系统,扫描枪用蓝牙连接打印机打印一维码和Vin码,当时一听这个任务就给我吓蒙圈了,还

qq_34082295的博客 2519

【SOC估计】基于EKF与二阶RC等效电路模型的锂电池SOC在线估计算法实现与仿真分析

本文详细介绍了基于扩展卡尔曼滤波(EKF)与二阶RC等效电路模型的锂电池SOC在线估计算法。通过Matlab仿真分析,展示了该算法如何实现高精度SOC估计,相比传统方法显著提升估计精度与鲁棒性,适用于电动汽车、储能系统等关键领域。

1094

零基础学习WinCE开发

“零基础”学习WinCE开发 作者:一点一滴的Beer http://beer.cnblogs.com/ 在接触WinCE时候的基础: 软件语言基础:C/C++/C#。我不是计算机专业的,所以这些语言基础也是比较业余的。经验不丰富,遇到问题就是查MSDN或者到网上查找相关解决方案即可,程序就有这点好处,很多东西都是成熟的技术,到网上甚至连源码都能找到的。 硬件平台基础:用的是广州致远的...

weixin_34409703的博客 1259

【STM32】IEC60730 Class B软件安全实现 Part2:自检库实战指南

本文是STM32 IEC60730 Class B软件安全实现的实战指南,详细介绍了如何将X-CUBE-CLASSB自检库集成到用户项目中。内容涵盖软件包解构、内存划分、启动与运行时自检的集成步骤、关键代码示例及调试技巧,并阐述了为最终通过安全认证所需的文档与流程准备,帮助开发者高效实现MCU功能安全。

weixin_29185167的博客 89

SAP ABAP VL09 BAPI VL 216

ls_batch_item-fact_unit_denom = ls_lips_split-umvkn. "销售数量转换为 SKU 的值(分母)ls_batch_item-fact_unit_nom = ls_lips_split-umvkz. "销售数量转换成SKU的分子(因子)ls_batch_item-sales_unit_iso = ls_lips_split-meins. "被拆分DN基本单位。

ChampaignWolf的专栏 2299

汇编调试实战:DEBUG、Turbo Debugger、GDB 与 IDA

本文系统讲解汇编调试技巧,涵盖 DEBUG.exe 基础使用(寄存器查看、单步执行、内存操作)、Turbo Debugger 图形化调试,以及 GDB(32位Linux)和逆向工具(IDA/Ghidra)的高级应用。重点解析寄存器管理、断点设置、栈平衡检查与常见错误排查,如死循环、内存越界、栈崩溃等,强调静态分析识别函数边界、动态分析验证逻辑流程。掌握这些方法可高效定位底层缺陷,提升汇编开发能力。

软件工程师文艺 227

深入解析设计规则检查约束:set_max_transition与set_max_capacitance的实战应用

本文深入解析了芯片设计中的关键设计规则检查约束set_max_transition与set_max_capacitance。通过剖析信号转换时间与负载电容的原理,结合实战案例,阐述了如何设置约束以保障信号完整性、控制功耗与时序,并提供了在综合与布局布线阶段的应用策略与修复方法。

weixin_29233857的博客 173

ARM 汇编调试入门:MOV、LDR 和 STR

掌握,最重要的是看清数据移动的方向。

ccddvvv的博客 176

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 323

华为OD机试真题2025双机位A卷 Java&Go 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 1257

10个完整汇编实例:排序、字符串与递归算法

本文提供10个16位实模式下可运行的汇编程序,涵盖冒泡排序、字符串反转、进制转换、阶乘与斐波那契计算等经典算法,附逐行解析。重点讲解寄存器使用、循环控制、栈操作、除法清零、符号比较、字符处理等核心技巧,揭示如PUSH/POP CX保全计数器、DIV前清DX、ASCII转换、溢出处理等关键细节。通过实践掌握底层逻辑,提升汇编编程能力。

软件工程师文艺 222

Puchem化合物数据批量抓取采集_宝典_教程_Python爬虫

本文共计6500字,导出到PDF达42页(含代码)。从0教你如何抓取Pubchem化合物数据。 1、 Pubchem介绍 ​ Pubchem是美国国立卫生研究院(NIH)的开放式化学数据库,自2004年推出以来,pubchem已成为科学家、学生和公众的重要化学信息资源。其专门针对化学结构搜索,是网络药理学研究经常用到的数据库之一,不仅使用方便而且免费。 ​ PubChem主要包含小分子,但也包含较大的分子,例如核苷酸,碳水化合物,脂质,肽和化学修饰的大分子。收集有关化学结构,标识符,化学和物理性..

qq_34843422的博客 6073

汇编子程序设计:参数传递、局部变量与调用约定

汇编代码模块化核心在于子程序设计。通过PROC/ENDP定义函数,结合栈帧管理(PUSH BP/MOV BP, SP)实现局部变量隔离与递归支持。参数传递可选寄存器(高效)或栈(多参适用),配合调用约定(如C、Pascal)规范参数入栈顺序与栈清理责任。掌握这些模式,便能编写结构清晰、可复用的汇编代码,迈向工程化开发。

软件工程师文艺 225

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6229

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

四级 Linux 应用与开发工程师笔记:8086 汇编、存储器、接口芯片和操作系统计算题整理

计算机四级 Linux 应用与开发工程师备考笔记:这门考的不是 Linux 命令,而是操作系统原理和计算机组成与接口两门课。组成与接口部分重点整理 8086 寻址方式、常考汇编指令和读程序题、存储器位扩展和字扩展、流水线时空图,接口芯片和中断按做题方法整理;操作系统部分整理高响应比优先、Clock 置换、两级页表、生产者消费者等考点,配真题讲解。

qq_39121450的博客 226

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C 语言:编译 → 汇编 → 链接 → 加载运行

C程序从源码到执行经历预处理、编译、汇编、链接四阶段,生成ELF可执行文件,由操作系统加载至内存并由CPU执行。关键点包括:交叉编译生成ARM指令;链接分静态与动态;入口为_start而非main;动态库需-fPIC保证位置无关性;嵌入式环境下可能跳过OS直接运行。

嵌入式开发,ARM Linux开发 399

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

汇编分支与循环:JMP/LOOP/条件跳转的结构化编程

本文详解如何用汇编的JMP与条件跳转实现if/else、for、while等高级控制流。通过循环计数、嵌套循环及复杂判断的典型模式,展示底层指令如何构建逻辑结构。掌握LOOP指令与跳转组合,即可在无高级语法环境下实现高效、精准的程序控制,体现汇编语言的简洁与性能优势。

软件工程师文艺 250

直接操作 VGA 显存:用汇编控制文本显示

本文详解VGA文本模式下直接操作显存的原理与实践:通过段寄存器B800h访问显存,每字符占2字节(ASCII+属性),利用偏移公式(n×80+m)×2定位输出。属性字节控制颜色与闪烁,如1Ch为蓝底亮红字。使用MOV ES:[DI], AX结合REP STOSW可高效清屏,配合INT 10h实现光标重置与滚动窗口。深入理解显存映射,是掌握图形底层逻辑的关键。

软件工程师文艺 197

本地生活服务系统:试单和正式开业的单为什么会进同一本账

本地生活服务系统应将试营业与正式运营的订单统一记入同一账本,通过“试单标记”区分,而非分设两本账。单号连续、信息唯一,避免重复或遗漏。正式账单仅提取“非试单且已付款”的记录,确保财务核算准确。过程查询则可查所有单据,便于客服追溯。关键在写入时即标注试单状态,开业日调整取出条件,不修改历史标记,保障数据可审计、可复原。

2509_93184100的博客 87

从零开始的C++生活——第八讲——01

这个和之前学的二叉树的层序遍历区别在于,这个要求将二叉树每一层的数据分别插入最后返回的数组中,这就需要进行一个思考,之前常规思路实现层序遍历时是队列出一个进来他的孩子,但是这种方式必然会造成不同层元素之间的混淆,我采用的方法是再用一个队列,专门用来存储本层元素,当每次出原队列元素时都需要在新队列中记录一份,此外,还需要一个变量计算此时原数列中本层元素个数,其实就是当前的元素个数,因为是一层一层进去的。相信在写完这三道题后,你一定对栈和队列的基本使用有了了解,下一节就是栈和队列的模拟实现。

dshswra的博客 171

从零开始的C++生活——第八讲——02

当你想要获取第i个元素的时候,你需要拿到两个下标,一个是中控数组的下标,你需要知道它存放在哪个数组中,另一个是当前数组的下标,ptr[x][y]即是该元素,x的计算其实是用i/N,其中N是每个数组的大小,每个数组大小必须都是N,不然你计算会混乱。y的计算则是i%N。针对vector,它解决了扩容频繁以及空间浪费的问题,你一个数组存不下了,紧接着扩下一个数组就好,不会一下扩很多,而且vector在扩容时是需要大规模的拷贝数据的,deque也解决了这个问题,至于第二个缺点我一会再说。

dshswra的博客 205

从零开始的C++生活——第七讲——02

关于迭代器,由于你要进行操作符重载,所以我选择封装一个迭代器类,从底层的角度思考,你拿到任意一个类型的迭代器一般都是要访问迭代器所指向的空间的成员,所以我们其实应该拿到迭代器所指向节点的值,因此这也是一个模板类,而且,我们要对迭代器的解引用操作符和->操作符进行重载,重载即是分别拿到对应的值以及对应值的地址,除此之外,在遍历过程中我们需要对迭代器进行比较,因此需要重载==!增加的模板参数一个传T的引用,一个传T的地址,而const类型的迭代器则是传const T&和const T*。

dshswra的博客 74

生活服务小程序开发案例:按行业接单、虚拟拨号与原服务人员复购

一次生活服务完成后,用户再次产生需求时,可能希望由熟悉情况的服务人员继续提供服务。平台需要处理的,不只是“再次下单”,还包括原服务人员是否愿意接单、拒绝后订单如何继续流转,以及服务完成后的评价和收益结算。围绕某公司的生活服务业务需求,海拔网络开展了一套微信小程序的定制开发,将服务预约、人员认证、行业接单、虚拟拨号、用户确认开始服务、评价和复购连接起来。本项目同时考虑首次预约与再次预约。普通订单进入接单大厅,由对应行业的服务人员承接;

haibawangluo的博客 191

豆包工作接入抖音生活服务经营等官方插件,AI从给建议到深入经营

商户完成相应账户授权后,无需在多个后台之间切换,通过自然语言对话即可查询数据、对比经营表现,并获得复盘报告与投放调整建议,部分场景还可由豆包工作直接创建广告、调整投放,不用再拿着建议回到后台逐项操作。此次三款插件的接入,让 AI 不再只停留在给建议,而是能跟着商家走完看数据、做复盘、调投放的完整经营流程。在门店经营环节,通过抖音生活服务经营插件授权登录后,通过读取成交、曝光等经营数据,豆包工作可以辅助商家按门店和时间周期进行同口径对比,并可生成含图表的复盘报告和行动建议。抖音生活服务经营插件页面。

大力财经 157

设计模式与生活⑬:你坐几号线,谁来运营是另一回事

一到周五,小王的心情就会好一点。倒不是工作少了,而是想到这一天忙完,后面接着双休,心里就有盼头。地铁上,他抬头看标识,发现一件平时没留意的事:5 号线、10 号线常见的是“北京地铁”,4 号线却写着“京港地铁”。再想想,北京的机场也各有各的名字:首都机场、大兴机场。可在成都坐地铁,日常看到的统一称谓就是“成都地铁”。都是出行,名称和背后的主体并不完全一样。对乘客来说,常做的事还是那几样:查线路、进站、上车、到站下车。坐几号线是一条信息,谁来运营是另一条信息,不必揉成一团。同样是在北京坐地铁,线路和运营方并不

工一木子 217
上一篇: GPIO的驱动注册表
下一篇: 流式驱动的几个小问题
EmbeddedLong
博客等级 码龄16年 79粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值