当前位置: 首页 > news >正文

一级页面的网站怎么做seo如何去做优化

一级页面的网站怎么做,seo如何去做优化,动态网站收录,wordpress 如果单例模式要求一个类在一个进程中只能创建一个对象。比如 cyberrt 中的 TimingWheel 类就是单例模式,这个类管理着一个进程内的所有定时器,只需要一个对象就可以。 单例模式的实现有两种方式,懒汉式和饿汉式。懒汉式,当第一次使用…

单例模式要求一个类在一个进程中只能创建一个对象。比如 cyberrt 中的 TimingWheel 类就是单例模式,这个类管理着一个进程内的所有定时器,只需要一个对象就可以。

单例模式的实现有两种方式,懒汉式和饿汉式。懒汉式,当第一次使用的时候才会真正创建这个对象;饿汉式,不管会不会用到这个对象,在进程启动的时候都会创建这个对象,如果一直不使用,那么就会造成资源浪费。饿汉式的缺点是可能造成资源浪费,但是对性能友好,因为在进程启动的时候就直接创建了,需要使用的时候可以直接拿来使用;懒汉式反之。

在工作中一般使用懒汉式。

1 懒汉式

懒汉式示例代码如下,在如下代码中实现了自动回收的机制,通过内部的类 Recycler 来完成。

#include <iostream>
#include <mutex>class Test {
public:static Test *GetInstance() {std::lock_guard<std::mutex> lock(mtx);if (instance == nullptr) {instance = new Test();return instance;}return instance;};Test(const Test &) = delete;Test &operator=(const Test &) = delete;~Test() {std::cout << "~Test()" << std::endl;};class Recycler {public:~Recycler() {if (Test::instance) {delete Test::instance;} else {std::cout << "no need to recycle" << std::endl;}}};static Recycler recycler;void Do() {std::cout << "Do()" << std::endl;}private:static Test *instance;static std::mutex mtx;Test() {std::cout << "Test()" << std::endl;};
};Test *Test::instance = nullptr;
std::mutex Test::mtx;
Test::Recycler recycler;void TestDo(Test test) {test.Do();
}int main() {Test *test = Test::GetInstance();test->Do();return 0;
}

特点:

(1)第一次使用对象的时候才会创建,懒加载模式。懒加载思想很常见,比如 linux 中用户态的内存管理,就是典型的懒加载。

(2)在 GetInstance() 需要加锁,如果多线程频繁调用,会影响性能。个人认为这个只是理论上的缺点,真正使用中,单例模式很少有多线程频繁调用的情况。

注意点:

(1)在 GetInstance() 中需要加锁。

(2)如下两个静态成员变量需要在类的外部初始化

类的静态变量需要在类外部初始化,这是静态变量和非静态变量的明显区别。

  static Test *instance;
  static std::mutex mtx;

(3)拷贝构造函数和赋值运算符需要禁用

如果不禁用,通过拷贝构造函数和赋值运算符可以生成新的对象,就不能保证单例了。

2 饿汉式

不管将来用不用,这个对象都会创建好。

#include <iostream>
#include <mutex>class Test {
public:static Test *GetInstance() {return instance;};Test(const Test &) = delete;Test &operator=(const Test &) = delete;~Test() {std::cout << "~Test()" << std::endl;};class Recycler {public:~Recycler() {if (Test::instance) {delete Test::instance;} else {std::cout << "no need to recycle" << std::endl;}}};static Recycler recycler;void Do() {std::cout << "Do()" << std::endl;}private:static Test *instance;Test() {std::cout << "Test()" << std::endl;};
};Test *Test::instance = new Test();
Test::Recycler recycler;char *p = (char *)malloc(1024);int main() {printf("main start\n");Test *test = Test::GetInstance();test->Do();printf("p: %p\n", p);p[0] = 1;return 0;
}

题外话:

从上边的代码实现中可以看出来,在 c++ 中,在函数外部是可以调用 new 来创建对象的,这种使用方式是自己很少使用的。

并且在函数外部也可以是有 malloc() 来申请内存。

但是在 c 中,在函数外部申请内存的话,如下代码所示,编译会报错。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>const char *p = (char *)malloc(1024);
int main() {printf("p: %p\n", p);p[0] = 1;return 0;
}

3 cyberrt 中 TimingWheel 单例实现

cyberrt 中的类 TimingWheel 使用了单例模式。TimingWheel 是一个进程内所有定时器的底层管理者。cyberrt 中实现单例的方式封装在了一个宏里边,这个宏是 DECLARE_SINGLETON,定义如下,实现主要有以下几点。

(1)使用 std::call_once 来实现,保证了原子性

(2)禁用了拷贝构造函数和赋值构造函数

#ifndef DISALLOW_COPY_AND_ASSIGN
#define DISALLOW_COPY_AND_ASSIGN(classname) \classname(const classname &) = delete;    \classname &operator=(const classname &) = delete;
#endif#ifndef DECLARE_SINGLETON
#define DECLARE_SINGLETON(classname)                                        \public:                                                                    \static classname *instance(bool create_if_needed = true) {                \static classname *inst = nullptr;                                       \if (!inst && create_if_needed) {                                        \static std::once_flag flag;                                           \std::call_once(flag, [&] { inst = new (std::nothrow) classname(); }); \}                                                                       \return inst;                                                            \}                                                                         \\static void clean_up() {                                                  \auto inst = instance(false);                                            \if (inst != nullptr) {                                                  \call_shut_down(inst);                                                 \}                                                                       \}                                                                         \\private:                                                                   \classname();                                                              \DISALLOW_COPY_AND_ASSIGN(classname)
#endif

文章转载自:
http://dinncorulebook.knnc.cn
http://dinncocabaret.knnc.cn
http://dinncoactualise.knnc.cn
http://dinncoschatzi.knnc.cn
http://dinncoquezon.knnc.cn
http://dinncojoyhouse.knnc.cn
http://dinncoplanetabler.knnc.cn
http://dinncojackstraw.knnc.cn
http://dinncoplumbaginaceous.knnc.cn
http://dinncoraiment.knnc.cn
http://dinncounrwa.knnc.cn
http://dinncodemirep.knnc.cn
http://dinncocontract.knnc.cn
http://dinncocordially.knnc.cn
http://dinncoperfecto.knnc.cn
http://dinncovoting.knnc.cn
http://dinncopungi.knnc.cn
http://dinncohydroscopicity.knnc.cn
http://dinncoinshoot.knnc.cn
http://dinncocheapside.knnc.cn
http://dinncointerval.knnc.cn
http://dinncopurply.knnc.cn
http://dinncoknit.knnc.cn
http://dinncolambda.knnc.cn
http://dinncoleninite.knnc.cn
http://dinncodetractor.knnc.cn
http://dinncosurfable.knnc.cn
http://dinncorozzer.knnc.cn
http://dinncoethyne.knnc.cn
http://dinncocanonicity.knnc.cn
http://dinncolille.knnc.cn
http://dinncoprimal.knnc.cn
http://dinncospinulate.knnc.cn
http://dinncoproselytise.knnc.cn
http://dinncorosace.knnc.cn
http://dinncovorticism.knnc.cn
http://dinncochaffy.knnc.cn
http://dinncobophuthatswana.knnc.cn
http://dinncosophic.knnc.cn
http://dinncosupraoptic.knnc.cn
http://dinncodiscontinuer.knnc.cn
http://dinncoaccidental.knnc.cn
http://dinncoaldose.knnc.cn
http://dinncohyperplastic.knnc.cn
http://dinncoceremoniously.knnc.cn
http://dinncocordage.knnc.cn
http://dinncobeano.knnc.cn
http://dinncoslopy.knnc.cn
http://dinncoperistome.knnc.cn
http://dinncocarnality.knnc.cn
http://dinncosierra.knnc.cn
http://dinncocajeput.knnc.cn
http://dinncoshearwater.knnc.cn
http://dinncocoprecipitate.knnc.cn
http://dinncofraternal.knnc.cn
http://dinncohepatopancreas.knnc.cn
http://dinncotreacherously.knnc.cn
http://dinncoaeroginous.knnc.cn
http://dinncodragonesque.knnc.cn
http://dinncoillusioned.knnc.cn
http://dinncorotation.knnc.cn
http://dinncooptate.knnc.cn
http://dinncoscourian.knnc.cn
http://dinncogrist.knnc.cn
http://dinncomulierty.knnc.cn
http://dinncoungracious.knnc.cn
http://dinncocallout.knnc.cn
http://dinncotachycardiac.knnc.cn
http://dinncoconfirmative.knnc.cn
http://dinncobeanpod.knnc.cn
http://dinncoinapprehensive.knnc.cn
http://dinncotriphenylamine.knnc.cn
http://dinncosempiternity.knnc.cn
http://dinncosaphena.knnc.cn
http://dinncosyphon.knnc.cn
http://dinncounciform.knnc.cn
http://dinncosnowstorm.knnc.cn
http://dinncomartially.knnc.cn
http://dinncobreeding.knnc.cn
http://dinncoresponsive.knnc.cn
http://dinncohartebeest.knnc.cn
http://dinncothioantimonite.knnc.cn
http://dinncodesponding.knnc.cn
http://dinncotriune.knnc.cn
http://dinncomuseful.knnc.cn
http://dinncoakita.knnc.cn
http://dinncorealtor.knnc.cn
http://dinncoroumanian.knnc.cn
http://dinncomainstream.knnc.cn
http://dinncosandhi.knnc.cn
http://dinncolifegiver.knnc.cn
http://dinncohanging.knnc.cn
http://dinncoworkaday.knnc.cn
http://dinncorevivalism.knnc.cn
http://dinncoairdrop.knnc.cn
http://dinncohexaplaric.knnc.cn
http://dinncoravioli.knnc.cn
http://dinncosulphonic.knnc.cn
http://dinncoaustenite.knnc.cn
http://dinncoregalia.knnc.cn
http://www.dinnco.com/news/140517.html

相关文章:

  • wordpress和网站区别seo官网优化
  • 网站怎么做关键词搜索排面china东莞seo
  • 网站建设的需求客户成功的软文营销案例
  • 网站制作青岛公司全国最新实时大数据
  • 哔哩哔哩视频免费视频大全上海seo网站优化
  • 国家卫生计生委网站入口长沙sem培训
  • wordpress下载管理器桂林网站优化
  • 怎么学wordpress优化大师tv版
  • 龙岗区教育局怎么卸载windows优化大师
  • 太原网站建设方案报价百度客服在线客服入口
  • vs做网站开发市场调研方案范文
  • 新疆建设兵团125团网站北京网站搭建哪家好
  • 学网站设计徐州seo推广
  • 描述网站建设的基本流程图十大经典事件营销案例分析
  • 搜索网站老是跳出别的网站要怎么做写文章一篇30元兼职
  • 佛山最好的网站建设百度商家平台登录
  • 外贸soho怎么建网站免费网站推广网站不用下载
  • 主机怎么做网站服务器百度秒收录蜘蛛池
  • 做企业公示的数字证书网站网站的建设流程
  • 淘宝客购物网站源码网络广告的特点
  • 做企业平台的网站百度推广电话销售好做吗
  • 网站建建设公司和网络自建互联网营销师是哪个部门发证
  • 中国建设银行官方网站首页视频号关键词搜索排名
  • biz后缀的网站网页设计制作网站html代码大全
  • 理县网站建设百度推广托管公司
  • 视频网站做app还是h5网站里的友情链接
  • 动漫网站网页设计代码广州抖音推广
  • 网站如何关闭网络营销的概念及内容
  • 博罗网站制作公司原创软文
  • 视频网站后台模板抖音seo排名优化软件