摩登三1960_HOLTEK新推出HT32F61355/61356/61357 32通道音乐M0+ MCU

Holtek针对音乐应用领域,推出32-bit Arm® Cortex®-M0+ 为核心的SoC Flash MCU–HT32F61355/HT32F61356/HT32F61357。基于32位CPU的高性能且高质量的音乐/语音处理器,可实现音场/音效功能,适用高阶语音/音乐智能玩具、电子合成乐器以及各类智能创意产品等领域。 HT32F6135x内建16-bit高性能立体声DAC输出、MIDI引擎在48MHz最高系统频率时,可支持32通道的音乐合成(Music Synthesis)。内含USART/UART/SPI/I²C等标准通信接口,容易连接各类传感器、无线模块等,增加应用的灵活性。 HT32F6135x系列内建32/64/128 Mbits SPI Flash数据存储器用来储存音色/语音/音效等数据,客户不需分开采购MCU和SPI Flash数据存储器,备料方便而且可缩小PCB尺寸。Audio Workshop开发平台可协助客户开发产品。

摩登3登录网站_适合具备C语言基础的C++教程(四)

前言 在上一则教程中,我们讲述了重载运算符中前 ++和后++的重载函数的实现,阐述了在 C++中可以将运算符进行重载的方法,这种方法大大地便利了程序员编写代码,在接下来地叙述中,我们将着重讲述运算符重载时地一些更为细致地内容,其中就包括当重载地运算符返回值为引用和非引用两种状态时,代码执行效率地高低以及采用在类内实现运算符重载函数的方法。 返回值为引用和非引用的区别 在上述所示的类当中,增加一部分代码,加入析构函数以及拷贝构造函数,代码如下所示: class Point{private:    int x;    int y;public:    Point()     {        cout<<"Point()"<<endl;    }    Point(int x, int y) : x(x), y(y)     {        cout<<"Point(int x, int y)"<<endl;    }    Point(const Point& p)    {        cout<<"Point(const Point& p)"<<endl;        x = p.x;        y = p.y;    }    ~Point()     {        cout<<"~Point()"<<endl;    }    friend Point operator++(Point &p);    friend Point operator++(Point &p, int a);    void printInfo()    {        cout<<"("< ", "< ")"<< endl;     } }; 在上述的代码中,我们在构造函数以及拷贝构造函数析构函数都加入了打印信息,其中,运算符重载函数前++和后++函数沿用之前的一样,返回值不是引用,与此同时,我们在前 ++和后 ++函数中也加入打印信息的代码,代码如下所示: /* ++p */Point operator++(Point &p){    cout << "++p" << endl;    p.x += 1;    p.y += 1;    return p;}/* p++ */Point operator++(Point &p, int a){    cout << "p++" << endl;    Point n;    n = p;    p.x += 1;    p.y += 1;    return n;} 上述便是前 ++和 后 ++的重载函数,紧接着,书写主函数的代码,观察当返回值为非引用的时候,代码的运行效果,主函数代码如下所示: int main(int argc, char **argv){    Point p1(1, 2);    cout<<"begin"<<endl;    ++p1;    cout << "******************"<<endl;    p1++;    cout<<"end"<<endl;    return 0;} 上述代码的运行结果如下所示: lhp7d3H1crAE9u2 依据运行结果我们分析一下,第一条输出信息 Point(int x, int y)是因为执行了 Point p1(1,2);语句而调用的构造函数,++p这条输出信息同样也是因为执行了 ++p;而调用的构造函数,那紧接着的两条输出信息是如何产生的呢,我们回过头去看看++p的函数,可以看到 ++p的函数是一个返回值为 Point类型的函数,而上述中的输出语句 Point(const Point& p)和 ~Point()就是在创建这个返回值对象时调用的构造函数以及当返回值返回后调用的析构函数;而紧接着的输出信息是 p++和 Point()以及~Point(),p++这个输出信息自然是因为调用的后 ++重载运算符函数的构造函数而输出的打印信息,那紧接着的 Point()和 ~Point()是因为在后 ++重载运算符函数中,创建的局部变量 Point n,进而调用了 Point()函数,以及函数退出之后,局部变量销毁,调用了析构函数。 上述详细地分析了各个打印信息输出的原因,通过上述的打印信息我们可以清楚知道程序在什么地方调用了构造函数,在什么地方调用了析构函数,再次回顾上述的函数调用过程,可以看出来其实调用的Point(const Point& p)和~Point()是多余的,那要如何改进代码呢,我们只需要将前 ++运算符重载函数的返回值类型改为引用就行,这样就不会创建临时的变量,同时也就不会在调用构造函数和析构函数,改动之后的代码如下所示: Point& operator++(Point &p){    cout<<"++p"<<endl;    p.x += 1;    p.y += 1;    return p;} 那么上述代码的运行结果是什么呢?在主函数不变的情况下,输出结果如下所示: M4QzImA1uYxnBK9 可以看到上述结果中,之前在 ++p后输出的两条信息现在因为将返回值设置为引用之后就消失了,说明这样的方法避免了调用构造函数和析构函数,节省了程序运行的空间,那如果将后++重载函数设置为引用可不可行呢,很显然,如果返回的是 n的引用,那么这在语法中就是错误的,因为n是局部变量,局部变量在函数调用结束就销毁了,是不能作为引用对象的。如果返回的是 p呢,那么函数的运行结果将发生改变,换句话说就是不是实现的后 ++这个功能了。 最后,总结一下,对于一个函数来说,函数的返回结果如果作为值返回,那么代码的执行效率较低;如果作为引用返回,那么代码的执行效率较高,但是会存在一个问题,引用返回可能会导致函数运行出错,所以,在保证函数运行没有错误的前提下,为了提高效率应该使用的是引用返回。 紧接着,我们知道我们在使用 C++进行编码的时候,基本不会再采用 C语言中的语法 printf这个语句,随之替代的是 cout这个语句,我们也知道我们使用 cout进行输出的时候,往往采用的是下面这样的输出方式: cout << "m=" << m << endl; /* 此时 m 不是一个实例化对象 */ 但是如果说此时 m 是一个实例化的对象,那么像上述这样输出就是存在问题的,这个时候,就需要对 <<运算符进行重载,重载的代码如下所示: ostream& operator<<(ostream &o, Point p){    cout<<"("< ", "< ")";      return o; } 稍微对上述代码进行一下解释, 这里为什么返回值是ostream&呢,是因为对于 cout来说,它是ostream类的实例化对象,在使用 cout进行输出的时候,它所遵循的一个输出格式是 cout <<,因此,这里的返回值是 ostream。为什么返回值是引用呢,是为了满足下面所示代码的运行,同时输出了 m和 p1,结合上述代码,我们来编写主函数,主函数代码如下所示: int main(int argc, char **argv){    Point p1(1,2);    Point m;    m = p1++;    cout << "m =" << m << "p1 =" << p1 << endl; } 上述代码的运行结果如下所示: 1cGujg7yqZSIfpK 可以看到在重载了运算符 <<之后,输出实例化的对象也是可行的。 类内实现运算符重载函数 在上述代码中我们实现的 +运算符重载函数以及前 ++运算符重载函数和后++运算符重载函数,都是在类外实现的,那么如果要在类内实现以上几个运算符重载函数,应该如何写呢,我们先回顾一下,在类外面实现的+运算符重载函数的函数声明如下所示: friend Point operator+(Point &p1, Point &p2); /* 因为在类外要能够访问类里面的数据成员,因此这里使用的是友元 */ 上述是在类外实现运算符重载函数时的函数原型,那么如果函数的定义就是在类里面实现的,函数又该如何编写呢?首先,如果是在类里面实现,那么当前使用这个类进行实例化的对象本身就可以使用 *this来表征一个对象,这个时候,如果要重载 +运算符函数,那么就只需要一个Point类的形参就行,代码如下所示: class Point{private:    int x;    int y;public:    /* 省略相关构造函数的代码,可以结合前文补全 */    Point operator+(Point &p)    {        cout<<"operator+"<<endl;        Point n;        n.x = this->x + p.x;        n.y = this->y + p.y;        return n;    }} 对比上述在类外面实现的代码,对于重载的运算符 +来说,只有一个形参了,而与其相加的另一个对象使用的是this来替代。依据这样的一种思路,我们继续将前 ++和后 ++重载的运算符函数进行改写,改写之后的代码如下所示: class Point{private:    int x;    int y;public:    /* Point p(1,2); ++p */    Point& operator++(void)    {        cout<<"operator++(void)"<<endl;        this->x += 1;        this->y += 1;        return *this;    }    /* Point p(1,2); p++; */    Point operator++(int a)    {        cout<<"operator++(int a)"<<endl;        Point n;        n = *this;        this->x += 1;        this->y += 1;        return n;       }}; 结合上述的代码,我们再来编写主函数,主函数的代码如下所示: int main(int argc, char ** argv){    Point p1(1,2);    Point p2(2,3);    Point m;    Point n;    cout << "begin" << endl;    m = ++p1;    /* m = p1.operator++(); */    cout << "m =" << m << "p1 =" << p1 << endl;    cout << "*********************" << endl;    n = p2++;    /* n = p2.operator++(0); */    cout << "n =" << n << "p2 =" << p2 << endl;    return 0;} 上述代码中,注释掉的代码和没注释的代码前后是等价的,只是说注释掉的代码看起来更加直观,更加容易理解其背后的原理,而注释前的代码则更加简洁。这里额外说一点,<<的重载函数是不能够放到类内实现的,因为这个重载函数的形参不是 Point类的,所以其只能在类外才能实现。 上述中,叙述了在类内实现的重载运算符函数,接下来叙述一下 =运算符在类内实现的重载函数,我们以之前所说的 Person类来实现这个功能,Person类的代码实现如下所示: class Person{private:    char *name;    int age;    char *work;public:    Person()    {        name = NULL;        work = NULL;    }   Person(char *name, int age, char *work)   {       this->age = age;       this->name = new char[strlen(name) + 1];       strcpy(this->name,name);       this->work = new char[strlen(work) + 1];       strcpy(this->work, work);   }   /* 拷贝构造函数 */    Person(Person &p)   {       this->age = p.age;       this->name = new char[strlen(p.name) + 1];       strcpy(this->name,p.name);       this->work = new char[strlen(p.work) + 1];       strcpy(this->work, p.work);   }   ~Person()   {       if (this->name)           delete this->name;       if (this->work)           delete this->work;   }   void PrintInfo(void)    {       cout << "name =" << name << "age =" << age << "work =" << work << endl;   }} 基于上述的代码,我们可以书写如下的主函数代码: int main(int argc, char **argv){    Person p1("zhangsan", 18, "doctor");    Person p2;    p2 = p1;} 上述中,我们还没有将 =运算符进行重载,就使用了 =实现了实例化对象的运算,这样会存在一个什么问题呢,我们从源头来进行分析,=运算符执行的是值拷贝,那么在执行了上述语句之后,p2和p1之间的关系是这样的: ywhv3zYKCaRjrXx 通过上述所示的图片可以看出,如果不将 =进行重载,那么会让 p1和 p2的name 和 work指向同一块内存,这会造成什么问题呢,如果此时已经将 p1的内存释放掉了,而这个时候又要释放 p2的内存,这种情形就会出错,同一块内存不能够释放两次。 因此,就需要对 =运算符进行重载,重载的代码如下所示:    /* 注意此处的代码是在类里面实现的成员函数,这里省略的一部分代码 */   Person& operator=(Person &p)   {       if (this == &p)           return *this;       this->age = p.age;       if (this->name)           delete this->name;       if (this->work)           delete this->work;       this->name = new char[strlen(p.name) + 1];       strcpy(this->name, p.name);       this->work = new char[strlen(p.work) + 1];       strcpy(this->work, p.work);   } 这样子就会避免上述情况的出现,我们现在继续来书写主函数: int main(int argc, char **argv){    Person p1("zhangsan", 18, "doctor");    cout<<"Person p2 = p1" <<endl;    Person p2 = p1;    Person p3;    cout<<"p3=p1"<<endl;    p3 = p1;    cout<<"end"<<endl;    p1.PrintInfo();    p2.PrintInfo();    p3.PrintInfo();    return 0;} 上述主函数运行的结果如下所示: 2kiKb8NEfYynTdo 通过上述代码我们看到,实际上代码 Person p2 = p1的运行并不是调用的 = 的重载函数,而是调用的拷贝构造函数,只有 p3= p1才是调用的 =的重载函数。 在本章节的最后,额外补充一点,刚刚提到了拷贝构造函数,实际上拷贝构造函数的形参大多数都是加了const修饰符的,也就是像如下所示的这样子: Person& operator=(const Person &p) 而这个时候,如果我们定义的 Person p1也是 const的,也就是像这样: const Person p1("zhangsan", 18, "doctor"); 那这个时候在使用 p1.PrintInfo()的时候就会出错,因为此时必须把该成员函数也表明为 const的才行,代码如下所示:    /* 类内成员函数,省略部分代码 */   void PrintInfo(void)    {        <<  << name <<  << age <<  << work << ;   } 总结一下也就是说: 上述就是本期教程分享的内容,到本期教程截至,C++相对于 C语言不同的一些语法特性就到此结束了。下期教程将介绍 C++如何实现面向对象的方法。本期教程所涉及到的代码可以通过百度云链接的方式获取到。 链接:https://pan.baidu.com/s/1BC55_QH-iV23-ON0v1OGSA 提取码:iyf7 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3测速代理_适合具备C语言基础的C++教程(三)

前言 在上一则教程中,着重地阐述了构造函数以及析构函数的相关概念,这也是C++中非常重要的两个概念之一。在今天的教程中,笔者将继续叙述 C++相对于 C语言来说不同的点,将详细叙述命名空间,静态成员,友元函数以及运算符重载这几个知识点。 C++ 命名空间 命名空间的存在是为了区分不同库的相同的函数名,用一个简单的例子来说明这个问题就是在 windows的文件系统中,不同文件夹下可以有相同名字的文件,相同文件夹下因为这相同文件处在不同的范围内,用 C++ 说白了也就是处在不同的命名空间中。文件系统的一个结构图: 文件系统框图 定义命名空间 命名空间的定义使用的是关键字 namespace,后跟命名空间的名称,如下所示: namespace namespace_name{    // 代码声明} 为了调用带有命名空间的函数或者变量,需要在前面加上命名空间的名称,如下所示: name::code   // code 可以是变量或者是函数 例子 下面通过一个例子来说明命名空间的概念,首先,我们具有两个类,一个是 Dog ,一个是 Person,而这个时候,有两个函数具有相同的名字,都要输出不同的信息,这个时候,就有必要使用到命名空间的概念。首先,我们在 dog.h 里面定义一个 dog 类,代码如下所示: #ifndef __DOG_H__#define __DOG_H__namespace C{class Dog{private:    char *name;    int age;public:    void setName(char *name);    int setAge(int age);    void printInfo(void);};void printVersion(void);}#endif 然后,紧接着来看 dog.cpp 里面的内容。代码如下所示: #include "dog.h"namespace C{    void Dog::setName(char *name)    {        this->name = name;    }    int Dog::setAge(int age)    {        if (age < 0 || age > 20)        {            this->age = 0;            return -1;        }        this->age = age;        return 0;    }    void Dog::printInfo(void)    {        printf("name = %s, age = %d\n",name,age);    }    void printersion(void)    {        printf("Dog v1");    }} OK ,看完了 Dog 的代码,我们紧接着来看 Person 的代码,代码如下所示: #ifndef __PERSON_H__#define __PERSON_H__namespace A{class Person{private:    char *name;    int age;    char *work;public:    void setName(char *name);    int setAge(int age);    void printInfo(void);    };    void printfVersion(void);}#endif 紧接着就是 Person.cpp 的代码,具体的代码如下所示: namespace A {void Person::setName(char *name){    this->name = name;}int Person::setAge(int age){    if (age < 0 || age > 150)    {        this->age = 0;        return -1;    }    this->age = age;    return 0;}void Person::printInfo(void){    printf("name = %s, age = %d, work = %s\n", name, age, work); }void printVersion(void){    printf("Person v1\n");}} 上述就是 所定义的两个类,我们紧接着来看 main.cpp 的代码: int main(int argc, char **argv){    A::Person per;    per.setName("zhangsan");    per.setAge(16);    per.printInfo();    C::Dog dog;    dog.setName("wangcai");    dog.setAge(1);    dog.printInfo();    A::printVersion();    C::printVersion();    return 0} 在最后的倒数第二行和倒数第三行,我们可以看到如果这个时候,没有命名空间的存在,那么就完全不能够分辨 printVersion这个函数,加上了命名空间之后,就能够分辨出来了。 静态成员 在上述代码的基础上,我们在主函数定义了如何几个变量,代码如下所示: #include  int main(int argc, char **argv){    Person per1;    Person per2;    Person per3;    Person per4;    Person *per5 = new Person[10];} 那我们要如何知道我们定义几个 Person 对象呢,可以这样去做,我们创建一个 cnt变量,然后在每个构造函数执行的过程中让 cnt加一,代码如下所示: #include  #include  #include  class Person{private:    int cnt;    char *name;    int age;    char *work;public:    Person()    {        name = NULL;        work = NULL;        cnt++;    }    Person(char *name)    {        this->name = new char[strlen(name) + 1];        strcpy(this->name, name);        this->work = NULL;        cnt++;    }    Person(char *name, int age, char *work = "none")    {        this->name = new char[strlen(name) + 1];        strcpy(this->name, name);        this->work = new char[strlen(work) + 1];        strcpy(this->work, work);        cnt++;    }    ~Person()    {        if (this->name)        {            cout << "name is:" << name << endl;            delete this->name;        }        if (this->work)        {             cout << "work is:" << work << endl;            delete this->work;        }    }}; 但是如果这么写的话存在一个问题,就是我们想要实现的功能是看有几个实例化 Person 对象,那么这个计数量cnt应该是属于 Person类的,具体的关系如下图所示: image-20210125140524739 但是上述的代码中,cnt是属于 Person的实例化对象的,那要如何做才能使得 cnt属于 Person类的实例化对象呢,这个时候,我们需要将 cnt定义为 static类的,这样子,cnt就是属于 Person类的了,定义的代码如下所示: class Person{private:    char *name;    int age;    char *work;    static int cnt;}; 那么我们要如何得到 cnt 的值呢,可以编写一个函数,但是同样的,我们编写的函数要是属于整个 Person类的,那应该如何去做呢,同样的办法,我们在前面加上 static,代码如下所示: #include  #include  class Person{private:    char *name;    int age;    char *work;    static int cnt;public:    static int getcount(void)    {        return cnt;    }}; 有了 getcount函数,我们就可以调用它,然后将其打印出来,方法如下所示: #include  int main(int argc, char *argv){    Person per1;    Person per2;    Person *per5 = new Person[10];    count << "person number = " << Person:getcount() << endl;} 最后,还存在一个问题,因为我们在 cnt上加了 static,那么当前的 cnt就是属于 Person类的,这样一来,那么就是说 cnt的值还没有分配空间,那么要如何分配空间呢,我们需要在主函数开始之前对 cnt进行定义和初始化,代码如下所示: int Person::cnt = 0;     /* 定义*/ 这样的话,就可以知道 cnt的值了,下面是运行的结果: image-20210125143702110 这样,就知道了 Person 类的实例化次数。那为什么要把 int Person::cnt = 0放在 main函数的最开始呢,这是因为要在 main所有实例化对象定义之前就要将其初始化完成。 友元函数 首先,我们有这样一个需求,需要实现两个类的相加,下面是写出来的代码: #include  #include  #include  using namespace std;class Point{private:    int x;    int y;public:    Point(){}    Point(int x, int y) : x(x), y(y) {}    void setX(int x)    {        this->x = x;    }    void setY(int y)    {        this->y = y;    }    int getX(void)    {        return x;    }    int getY(void)    {        return y;    }};Point add(Point &p1, Point &p2){    Point n;    n.setX(p1.getX() + p2.getX());    n.setY(p1.getY() + p2.getY());     return n;}int main(int argc, char **argv){    Point p1(1, 2);    Point p2(2, 4);    Point result = add(p1,p2);    cout << "the result is:" << "(" << result.getX() << "," << result.getY() << ")"<< endl;    return 0;} 上述代码中存在一个缺点就是说,我们在进行 add()函数编写的时候,用到了两次 getX()和 getY(),这样就显得代码看起来十分的臃肿,所以也就有了如下的更改方式,我们可以将 Point add(Point &p1, Point &p2)函数设置成友元,那么在这样的基础上,就可以直接访问到 p1和 p2里面的成员,换句通俗的话来将,就是说,我把你当做朋友,你就获得了一些权限,更改的代码如下所示: class Point{private:    int x;    int y;public:  Point(){}  Point(int x, int y) : x(x),y(y){}  friend Point add(Point &p1, Point &p2);  };Point add(Point &p1, Point &p2){    Point n;    n.x = p1.x + p2.x;    n.y = p2.x + p2.y;    return n;} 声明成友元之后,在函数里就可以访问到类里面的私有数据成员,大大简化了代码量。 运算符重载 上述介绍友元的时候,我们将两个实例化的对象进行相加,使用的是 C 语言的思路,但是对于 C++来说,其具备运算符重载的特性,也就是能够重载一个+号运算符用于类的相加。为了展开这个知识点,依旧先从之前学习 C语言时的角度去看这个问题,我们之前学习 C语言的时候,我们会接触到这样一个概念,就是++p 和 p++,比如有如下所示的代码: int a = 1;int b;b = ++a; 上述代码的意思分解一下是这样子的: int a = 1;int b;a = a + 1;b = a; 这样一来,b的结果就是 2。但是如果像下面这样子的代码: int a = 1;int b;b = a++; 上面的代码分解一下,就是下面这样子的: int a = 1;int b;b = a;a = a++; 这样子,运行后 b的结果是 1。 现在我们要来实现这个前 ++和后 ++的运算符重载,实现类里面成员的++,继续沿用上述的代码,基于 Point类,我们来编写重载的函数,代码如下所示: Point operator++(Point &p) /* 引用节省内存 */{    p.x = p.x + 1;    p.y = p.y + 1;    return p;} 前 ++和后 ++的运算符一致,然而在重载函数中,是通过形参的不同来进行重载函数的,因此,我们在编写后 ++的重载函数的时候,需要新增一个参数,比如下面的代码: Point operator++(Point &p, int a){    Point n;    n = p;    p.x = p.x + 1;    p.y = p.y + 1;    return n;} 上述的重载函数,因为都操作了类里面的私有数据成员,因此,必须将其声明为友元。下面是代码实现: class Point{private:    int x;    int y;public:  Point(){}  Point(int x, int y) : x(x), y(y){}  friend Point operator++(Point &p);  friend Point operator++(Point &p, int a);  void printfInfo(void)  {      cout << "(" << x << "," << y << ")" << endl;  }}; 需要注意的一点是,上述的形参里面使用的是 p的引用,为什么要使用引用是因为引用传入的是地址,占四个字节的大小,但是如果传入的不是引用,那么就要占用整个类那么大的大小。这样做也就节省了存储空间。 紧接着,我们来编写主函数的代码: int main(int argc, char **argv){    Point p1(1, 2);    Point p2;    Point n;    n = ++p1;    n.printfInfo();     <<  << ;    Point n2;    n2 = p2++;    n2.printfInfo();} 下面是代码的运行结果: image-20210126132545161 通过运行结果可以知道,我们实现了前 ++和 后++的效果。 上述便是本次教程分享的内容,其中提到了运算符重载这一知识点还包含很多的应用,本次只是简单地用一个例子进行了介绍,下期教程将详细介绍运算符重载地其他内容,本次的分享到这里就结束咯~ 本节教程所涉及的代码可以通过百度云链接的方式获取到 链接:https://pan.baidu.com/s/1tzqw1dVJBMHT4Lbr_-NwSg 提取码:5ugr 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3主管554258:_中兴通讯重磅发布全屋光纤组网系列新品

近日,中兴通讯发布了新一代全屋光纤组网系列产品——全光网关F4606P/F7606P及光路由器Z6620,其在网络速度、Wi-Fi覆盖以及造型设计等方面均有显著提升。该系列新品的发布标志着中兴通讯在全屋光纤商用领域取得又一重要突破,将全面助力全光家庭部署。 不同于传统家庭组网方案,全屋光纤组网将传输介质由网线替换为光纤,全光网关和光路由器之间通过光纤连接,实现“光速”对话。与网线相比,光纤具有寿命长、价格低廉、传输距离远、传输速率无上限等优势,一步到位解决家庭网络布线瓶颈。此外,新一代全屋光纤组网设备进一步升级,全光网关支持万兆接入,F4606P上行接口为10G EPON,F7606P为XG PON,下行均搭载3个GE光网口及1个GE光电Combo网口,为用户提供充分选择。全光网关和光路由器均支持160MHz频宽Wi-Fi 6技术,实测有线及Wi-Fi速率达千兆,通过EasyMesh组网,实现全屋1张网和毫秒级智能漫游,为在线游戏、实时直播、网络课堂等高带宽、低时延应用提供充分保障,满足全屋“真千兆”需求。同时,该系列新品支持多穿1堵墙的超广室内覆盖,运用ER+DCM技术,穿墙能力大幅提升,让每个房间都能稳定接收Wi-Fi信号。 2020年12月,中国联通聊城市分公司与中兴通讯携手发布全屋光纤组网商用技术方案和套餐,向山东聊城宽带用户发起限量体验邀请,实现“光纤到家”服务向“光纤在家+全屋Wi-Fi+全屋智能体验”的升级,让光纤到达家庭的每个房间,让Wi-Fi在家庭无处不在。目前,全屋光纤组网方案已在十多个省份进行了试点和商用,具备规模部署能力。今后,中兴通讯将在全屋光纤领域持续积极探索,广泛携手行业合作伙伴推进全屋光纤组网方案商用,构建智慧家庭的全新未来。

摩登3内部554258_共赴科技创新的星辰大海 首届CTIS线上交流沙龙圆满举办

2021年1月26日(中国,上海)1月22日,由消费者科技及创新展览会(Consumer Technology & Innovation Show,简称:CTIS)打造的线上交流沙龙成功举办。此次交流沙龙以“后疫情时代,科技创新的星辰大海”为主题,通过线上直播形式汇聚了CTIS主办方、指导单位,以及来自科技创新领域的行业翘楚,围绕2021科技行业发展趋势预测、后疫情时代的新常态新技术新发展等重点内容展开深入探讨,吸引了全球近300位参展商、买家社群、媒体及观众注册观看。 首届消费者科技及创新展览会线上交流沙龙 作为科技消费行业发展趋势、创新前沿思想的风向标,CTIS致力于以科技带动产业创新,以贸易促进产业发展,构建“立足中国,面向全球”的创新型多元消费者科技生态圈。CTIS特别举办了此次线上交流沙龙,邀请消费科技行业知名专家、以及科创领域的业界精英分享5G、人工智能(AI)和扩展现实(XR)等前沿技术在实际生活中的创新应用,共同探讨后疫情时代的科技创新发展新趋势。未来, CTIS将陆续举办涵盖更多主题的行业交流和专业研讨,成为科创行业先锋科技和前沿思想的聚集地。 在历时一个半小时的线上交流沙龙中,环球资源战略合作总经理陈健、上海市科技工作党委副书记王宇、中国产业发展促进会副会长李小军先后发表致辞。来自益普索中国消费科技研究院的周启群院长进行了主题演讲,分享了2021年科技行业发展趋势预测。随后,在周启群院长的主持下,竹间智能创新业务总经理丁峥、灵犀微光商务副总裁陈飞、云天励飞市场方案总监莫若龙和居然之家尚屋智慧家业务总经理宿妍娜开展了圆桌讨论和问答环节,业内专家和领军企业的精彩碰撞,带来了一场兼具思想性、前瞻性和创新性的行业研讨。活动的最后,环球资源新业务开发副总裁张牧致总结辞并分享了CTIS的最新筹备进展。 响应“双循环”号召 知识互享预热CTIS 值得一提的是,上海市科技工作党委,与国家发改委旗下中国产业发展促进会、工信部国际经济技术交流中心一起,成为首届CTIS的联合指导单位,携手扶持科创企业参展,推动科创项目落地,促成科技革命向产业革命渗透,在“双循环”背景下助力中国企业提高国际竞争力。上海市科技工作党委副书记王宇在致辞中表达了对交流会的支持和对CTIS的期待,他谈到,“上海致力于打造具有全球影响力的科技创新中心,正需要一个具有全球影响力的科创展。我相信,CTIS正是这样一个具有广泛影响力的科技展览盛会。2021年6月,欢迎大家来上海,欢迎大家参加CTIS 消费者科技及创新展览会!” 同时,环球资源新业务开发副总裁张牧在总结辞中说道:“环球资源顺应国内国际双循环的形势,希望不断推动科技、创新与贸易有机融合,帮助更多科技企业、尤其是大量中小型制造型企业加快转型升级,提升产业附加值,形成企业发展正循环,成长为世界品牌。此次线上沙龙是我们将于6月举行的首届展览会的一个预热,我们希望以此加强行业间关于科技知识、尖端技术、专业见解和可靠实践的交流。并吸引更多的行业翘楚来到CTIS展示成果、分享创意、敲定商机,共同打造出一个消费者科技领域极具影响力的年度盛会。” 在2021电子科技信息产业发展的主题演讲中,益普索中国消费科技研究院院长周启群与大家探讨了后疫情时代,消费变革驱动下的科技创新,如何造就“新常态、新技术、新发展”。在分享中,他提到:“消费结构的变化正驱动零售市场纵深向产业上游的技术改变延伸。未来,以新基建为雄厚的底层基础,全面发展信创产业及5G数字化赋能,进而实现我国智慧社会顶层设计的建设,成为未来科技创新的重要前提和环境保障。同时,5G的推广将改变许多产业的生态结构并撬动原有的市场结构,实现各行业的数字化协同转型,在转型中实现创新,例如5G将重塑媒体生态,并强大赋能企业的政务项目和助农项目等。” 随后,周启群院长与来自竹间智能、灵犀微光、云天励飞、居然之家等AI、XR技术领军企业的嘉宾代表开展圆桌讨论,沟通后疫情时代5G如何与大AI、XR等新技术赋能相结合,引爆全新的应用场景和商业模式。同时,嘉宾们也探讨了新技术将如何带动产业创新,具有生态主导力的产业链主企业和中小企业将如何互动及和谐共生,从而创造更多发展机会和经济增长的乘法效应。 圆桌讨论上,竹间智能创新业务总经理丁峥介绍了情感机器人的发展在数字医疗、智慧金融、智能办公、智慧终端服务等众多垂直行业革新中面临的挑战和积极实践;灵犀微光商务副总裁陈飞特别分享了公司在光波导领域的消费级AR核心显示技术和光学解决方案上的研发突破,以及在当今AR发展周期里将轻量化的光学检测技术与5G搭配来促进产业链良性循环的发展方向;云天励飞市场方案总监莫若龙则介绍了云天励飞“算法芯片化”的核心能力,以及云天励飞如何用“端云协同”的技术路线,打造众多面向数字城市和人居生活的解决方案;居然之家尚屋智慧家业务总经理宿妍娜分享了涉及科技和地产等不同行业的尚屋智慧家,在激烈竞争中的业务聚焦点和实现持续高速发展的商业策略,为观众带来诸多启示。 首届CTIS将于2021年6月9至11日期间在上海新国际博览中心举行,自去年8月份立项以来, 招展持续火热,过半展位已售罄。同时,各地行业协会及政府组团也已经全面开启,近50个来自华东、华北、华南等区域的专业买家团已确定出席。目前CTIS已全面启动观众预登记服务,可继续通过访问CTIS官方网站或者扫描下方二维码,关注CTIS官方微信完成在线预登记,与科技创新领域全球领军企业和消费电子领域优秀制造企业一起,共赴2021年度消费者科技盛宴。

摩登3平台首页_帕特·基辛格履新英特尔公司 CEO

英特尔公司 2 月 15 日正式完成 CEO 过渡,帕特·基辛格上任成为英特尔公司创立以来第八任 CEO。基辛格是一位成就卓著的 CEO 和业界资深人士,拥有四十余年的技术资历和领导经验,包括他从业以来在英特尔服务的 30 年。 对于回归领导英特尔,基辛格表示:“作为新任 CEO 我非常兴奋,因为我们有机会让英特尔这一伟大形象再放光彩,英特尔对于方方面面的技术都至关重要,并将继续引领未来。因为我相信英特尔拥有宝库般的技术专家和技术资源,而最终它的核心 DNA 将使英特尔成为未来的技术领导者。作为一名技术专家,同时内心也是一名极客,我很高兴能在领导岗位上,助力将这家伟大公司所拥有的激情、历史和机遇带到前所未有的高度。我们最美好的日子就在前方。”

摩登3注册网址_英特尔 CEO 帕特·基辛格(Pat Gelsinger)致员工的一封信

帕特·基辛格于 2021 年 2 月 15 日正式担任英特尔首席执行官,他向所有员工发送了以下这封信: 大家好! 今天,我很高兴以英特尔这一标志性企业的 CEO 身份写这封信。自 50 多年前创立以来,英特尔一直是创新的引擎。在很多方面,它就像我的家一样。我常说,我就是在这里长大的,充满着壮志雄心和坚定信念,相信科技的力量能造福地球上每个人。在戈登·摩尔、罗伯特·诺伊斯和安迪·格鲁夫的领导和启迪下,我很兴奋能在这里开启我梦想的事业。 于是,我们走到一起。今天,我们的产业正在飞速发展。技术对人类的重要性前所未有。一切都在数字化,四个关键的超级力量:也就是云、5G 驱动的移动性、人工智能和智能边缘,它们将超越并改变整个世界。英特尔是唯一一家在智能芯片、平台、软件、架构、设计、制造和规模化方面,均拥有广泛而深厚实力的半导体公司,我们的客户需要充分抓住这些机遇来驱动其下一代创新。 我坚信,我们能够在这个风云变幻的环境中成为世界领先的半导体公司,并为创新和技术引领的新时代开辟航道。要抓住这一巨大机遇,我们必须重点做好四方面工作: ●在我们所竞争的每一个业务领域都成为引领者。我们必须走在客户需求的前面,在激烈的市场竞争中行动更加敏捷,并证明我们的产品、路线图和制造能力所带来的差异化价值。 完美地履行我们的承诺。客户在开发未来的产品和制定未来战略时,必须能够倚赖英特尔。我们必须积极进取去设定目标,再次赢取市场和行业领导地位,这些目标必须能够达成,且必须以最高的质量来完成。 大胆、快速、充满激情地创新。通过我们无可比拟的知识产权、工程人才以及对新一代计算架构的研究,我们将成为整个行业持续创新之源。 重新焕发我们的文化活力,以吸引并激励全球最优秀的工程师和技术专家。英特尔必须是全球最优秀的人才实现梦想的地方。我们需要用一种充满活力、包容开放的文化,来释放我们的巨大能量和潜力。我们需要恢复一些格鲁夫式的纪律,推动直接、透明、数据驱动的决策以及负责制。 能与才华横溢的全球员工合作,我备感兴奋和荣幸,我期待着与你们所有人交流。我已经在持续努力加快熟悉业务情况,并将在接下来的几周里继续优先安排我的大部分时间来倾听和学习。我会在这个过程中持续更新、经常分享,敬请期待。 我深知,英特尔最好的时光就在前方。让我们共同奋进前行!

摩登3内部554258_贸泽开售Laird Connectivity Sterling-LWB5+ Wi-Fi与蓝牙模块,适用于下一代物联网应用

2021年2月18日 – 专注于引入新品的全球电子元器件授权分销商贸泽电子 (Mouser Electronics) 即日起备货Laird Connectivity新款产品Sterling-LWB5+模块。该模块可为下一代物联网 (IoT) 设备提供Wi-Fi 5 (802.11ac) 和蓝牙5.1通信,这些设备包括电池供电的医疗设备、工业物联网传感器、耐用型手持设备以及其他多种连接解决方案。 贸泽电子分销的Laird Connectivity Sterling-LWB5+模块采用英飞凌CYW4373E解决方案,可支持工业物联网场景中的可靠性和安全性需求。该模块非常适合用于恶劣环境,其焊入式模块外形能够尽可能减轻振动和冲击带来的影响,并且其工业额定温度范围达到了−40°C至85°C。Sterling-LWB5+系列提供了多种可选装集成式预认证外部天线的小型PCB模块,以及数种能让设计人员的Linux平台更加灵活地与主机集成的M.2尺寸解决方案。 为了实现更好的集成,Laird Connectivity还生产并认证了一系列内部和外部天线,以及专门用于Sterling-LWB5+模块的反极性SMA电缆组件。这些天线产品包括成熟的FlexPIFA、Nanoblade和Mini Nanoblade Flex内部天线以及外部偶极天线。 Sterling-LWB5+模块支持WPA3安全新标准。即使在复杂的射频环境中,这些器件集成的功率放大器和低噪声放大器 (LNA) 仍可确保可靠连接。Sterling-LWB5+有多种天线可供选择,并且通过了FCC、IC、CE、MIC、AS/NZ和蓝牙技术联盟的认证。

摩登3测速登陆_美国电价疯涨近200倍,这三大原因扎心了……

据美国有线电视新闻网报道,连日侵袭全美多州的冬季风暴,目前已经造成了至少33人死亡,数百万家庭和商户持续停电,水和天然气供应也受到很大影响。 数据显示,尽管冬季风暴造成的停电问题有所缓解,但截至当地时间2月17日,全美各州仍有超过310万家庭和商户停电,其中在得克萨斯州就有260万家庭和商户停电。 在供需的极端不平衡下,得州电价疯狂飙升。根据管理当地电网的得州电力可靠性委员会发布的数据显示,本周早些时候,得州批发电价一度突破了1万美元/兆瓦时,相当于每千瓦时超过10美元,相当于65元人民币一度电,与平日电价相比增长近200倍。 (相关报道视频截图) 之所以造成这种情况,央视网也是给出了三个原因:首先,当地电网设施老旧。根据美国能源部(DOE)的统计显示,当下美国70%的输电线路和变压器运行年限超过25年,60%的断路器运行年限超过30年,陈旧的电网设施面临保障供电可靠性的巨大挑战。

摩登3娱乐登录地址_Mohawk Industries任命James F. Brunk为首席财务官

美国佐治亚州卡尔霍恩, Feb. 12, 2021 (GLOBE NEWSWIRE) — Mohawk Industries, Inc.今天宣布任命James F. Brunk为首席财务官,2021年4月1日起生效。 Mohawk董事长兼首席执行官Jeff Lorberbaum表示:“我与Jim已经共事多年,相信他作为我们的首席财务官将会做得非常出色。他对我们的全球运营有着深入了解,将为我们的绩效带来积极影响。他在财务规划和分析、合并和收购、会计和投资者关系方面的专业知识在30年的职业生涯中得到了展现。” 现年55岁的Brunk自2009年5月以来担任Mohawk的公司主计长兼首席会计官。他于2006年加入公司,担任Mohawk Home分部首席财务官。加入本公司前,Brunk曾在大型制造企业担任财务和运营职务并屡获晋升。 “能够担任Mohawk首席财务官让我深感荣幸,过去15年间,我在这里获得了个人和专业发展的机会,” Brunk说道, “我有幸与众多专业中才华出众的专家所组成的财务团队合作,专注于为企业保护和交付业务成果。我期待着领导我们的财务团队,并与管理团队和董事会合作,共同确定加强公司实力的新举措。” 自2020年4月重返Mohawk担任首席财务官以来,Frank H. Boykin与 Brunk密切合作以确保顺利过渡,他将按计划于今年4月退休。Boykin此前曾于2005年1月就任Mohawk首席财务官。