Nokia官方培训(Symbian 4300)笔记 -- 第四篇Symbian OS Basic

Symbian C++ 基础类型与规范
本文介绍了Symbian OS中的C++基础类型定义及其使用规范,包括整型、浮点型、布尔型等,并详细阐述了Symbian特有的TAny、T类、C类等概念及变量命名、函数命名等编码约定。

Basic Types

 在Symbian中,很多C++基本类型都被重新定义了,最好使用Symbian的,理由如下:

  • 所有Symbian API都是用的Symbianc重定义的
  • 将来Symbian OS由32位转为64位时,支持性更好
  • 这本身就是Symbian C++ Coding Standards所要求的
 Integers

    typedef signed int TInt;  C++中的signed int,32位,基本用法类似。

    typedef unsigned int TUint;  一般用于计数器(Counter)或者标记(Flags)。

其他Int类型:TInt64, TInt32, TInt16,TInt8; 同时有一份TUint的版本。

Text

 text类型在Symbian编程中基本不用,而一般采用描述符(descriptor)。TText默认是16位的。

Boolean 

    typedef int TBool; 有两个枚举值:ETrue和EFalse。TBool变量最好不要直接和ETure和EFalse比较。如下:

TBool flag = ETrue;
if (flag)  // if (!flag)

    flag = EFalse; 
}

 Floating Point

    对浮点数的支持视处理器而定,如果没有FPU,效率非常低,所以最好是不要用浮点数。 如果一定要用,尽量转化为整数操作。

typedef float TReal32;  typedef double TReal64; typedef double TReal;

TAny

    typedef void TAny;

TAny一般只用作指针,其他情况下用void比较好。

TAny* MyFunction();     void MyOtherFn();

TAny* 在很多Symbian API中都用到了,如:

static TUint8* Copy( TAny* aTrg, const TAny* aSrc, TInt aLength);

Enumerations

enum TState {EOff, Eon, EInit};

Enumeration类型应该以T开头,而枚举值应该以E开头。

TState  state = GetState();
if (state == EOn)
{
   //Do something here

Coding Conventions

    T类:只包含值,而不包含指针以及外部的资源,在栈上分配空间。

TVersion osVersion = User::Version();

    C类:所有需要分配内存的类都必须从CBase继承并且以C开头。

class CExample : public CBase
{
private:
   CDesCArrayFlat* iArray;
}    

CExample* example = new (ELeave) CExample;

    R类:包含指向某个资源的handler。

RTimer timer;
timer.CreateLocal();

    M类:定义一个接口,一般只包含纯虚函数,不包含成员数据,减少类之间的依赖,用来接受回调消息。

class MEikStatusPaneObserver
{
   public:
        virtual void HandleStatusPaneSizeChange() = 0;
}

任何实现MEikStatusPaneObserver接口的类都必须实现HandleStatusPaneSizeChange()函数。

Variable Naming Conventions

  •     成员变量以“i”开头
  •     参数以“a”开头
  •     动态变量随便,以小写字母开头
  •     常量以“K”开头
  •     尽量不要使用全局变量,不能使用全局静态变量。

Functions

  •     函数以大写字母开头,如AddFileNameL();
  •     以D结尾表示deletion of an object
  •     以L结尾表示函数可能leave
  •     以C结尾表示一个item被放到cleanup stack

Casting

    Casting用于在类(classes)和类型(types)之间作转化,Symbian中仍然可以使用C中语法。

    dynamic_cast:不支持,Symbian中没有RTTI。

    static_cast:把一个基类转化为一个继承类。 

TInt intValue = 0xff;
TUint8 byteValue = static_cast<TUint8>(intValue);

    reinterpret_cast:把一个指针类型转化为另外一个指针类型,如integer转化为point类型或者相反。

TUint32 fourBytes = 0;
TUint8* bytePtr = reinterpret_cast<TUint8*> (&fourBytes);
bytePtr++;
*bytePtr = 0xFF; 

    const_cast:移除一个类的const属性。


读后感

Symbian编程中基础的基础,属于每天都会碰到的东西。

最后部分的casting有点难懂,其他的看习惯了也就好了。

入乡随俗,既然选择了Symbian,就用Symbian的惯例去写程序吧。 
 
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值