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

做玩网站怎么上传图片mvc在网站开发中的应用

做玩网站怎么上传图片,mvc在网站开发中的应用,网站建设合同严瑾,网站登录系统怎么做知识点 1.pragma once C和C中的一个非标准但广泛支持的预处理指令,用于使当前源文件在单次编译中只被包含一次。 #pragma once class F {}; // 不管被导入多少次,只处理他一次2.explicit C中的一个关键字,它用来修饰只有一个参数的类构造函…

知识点

1.pragma once
C和C++中的一个非标准但广泛支持的预处理指令,用于使当前源文件在单次编译中只被包含一次。

#pragma once
class F {}; // 不管被导入多少次,只处理他一次

2.explicit
C++中的一个关键字,它用来修饰只有一个参数的类构造函数,以表明该构造函数是显式的,而非隐式的。当使用explicit修饰构造函数时,它将禁止类对象之间的隐式转换,以及禁止隐式调用拷贝构造函数。
3.noexcept
如果一个函数使用了 noexcept声明,编译器会认为这个函数不会抛出异常,从而可以对这个函数进行一些优化,例如避免额外的堆栈操作和异常处理代码等,从而提高代码效率。
如果一个函数没有使用 noexcept声明,并且在函数内部抛出了异常,这个异常会在函数的调用栈上一路传递直到被捕获,如果捕获不到,程序就会崩溃。而如果使用了 noexcept声明,那么一旦函数内部抛出了异常,程序就会直接调用 std::terminate()函数终止程序,这可以帮助程序员快速发现和调试程序中的异常问题。
使用 noexcept声明可以帮助编写高质量的代码,因为它可以明确表示函数是否会抛出异常,从而让函数的调用者更容易正确地处理异常情况。
3.unique_ptr

unique_ptr<int> p1(new int(1)); // 构造函数
unique_ptr<Ball> ball = make_unique<Ball>(); // 推荐初始化方法
unique_ptr<int> p2(p1); // 复制构造函数
unique_ptr<int> p3 = std::move(p1); // 通过move进行移动(并不是真的移动)
Ball *p = ball.get();// 获得裸指针
ball.reset(new Ball());// 重新指向另一个Ball对象
unique_ptr<int> up1 = make_unique<int>(100);
unique_ptr<int> up2(up1.release());// 方式1:转移控制权
unique_ptr<int> up3 = std::move(up1);// 方式2:转移控制权

4.unordered_map

std::unordered_map<char, std::unique_ptr<TrieNode>> children_; // 定义
children_.size(); // 拥有的容量
// 插入元素
children_.insert(std::make_pair(key_char, child));
children_.emplace(key_char, child);// 查找是否存在
if (children_.find(key_char) != children_.end()) cal(); // 存在
if (children_.count(key_char) != 0) cal(); // 存在children_.erase(key_char); // 删除
children_.swap(other_trie_node.children_); // 交换

5.C++类
类的public成员可以被任意实体访问;
类的private成员不能直接被类的实体访问,也不能被子类的实体访问,但是可以被类的成员函数访问;
类的protected成员不能直接被类的实体访问,但是可以被子类访问,也可以被类的成员函数访问;
继承基类的派生类可以访问基类的public和protected成员,可以调用基类函数.
6.cstdint头文件
头文件中包括了一组具有特定宽度要求的整型别名,以及指定他们范围的宏定义。
在这里插入图片描述
7.lock_guard
用于在作用域结束时自动释放互斥锁。std::lock_guard 用于管理互斥锁的加锁和解锁操作。它的主要作用是在构造函数中获取一个互斥锁,然后在析构函数中自动释放该锁,以确保在锁保护区域的结束时正确解锁。
std::lock_guard 的作用是获取互斥量的锁,并在作用域结束时自动释放锁。这样可以避免手动管理锁的复杂性和风险,同时也可以确保在使用共享资源时不会被其他线程打断。
简单来说就是使用 std::lock_guard 让开发者使用时不用关心 std::mutex 锁的释放。
8.forward和move
都为进行转移值操作。

children_[key_char] = std::forward<std::unique_ptr<TrieNode>>(child);
children_[key_char] = std::move(child);

9.condition_variable
线程控制中的条件变量,只能与std::unique_lockstd::mutex使用,唤醒线程。

std::condition_variable cond;
cond.notify_one(); // 唤醒一个线程
cond.notify_all(); // 唤醒所有线程
cond.wait(t); // 等待操作,即挂起线程操作,等待释放互斥锁

10.static_cast和dynamic_cast
强制类型转换,但是dynamic_vast号耗时更高,但是可以检测类型是否相同,如果转换后指针不为空,说明类型相同。

总结

1. 构造函数需要将unordered_map也进行初始化。
2. 函数操作进行调用已有函数来实现包装性。
3. 函数尽量简洁明了,语句更加精炼。
4. 双引用参数的函数调用要通过std::forward进行调用。

TrieNode(std::forward<TrieNode>(trienode));

5. 在进行unordered_map转移时要通过swap来转移,否则会导致插入错误,调试了好久才发现表里的元素对不上。
6. 在进行删除操作时,要注意删除字符串要从末尾依次删除,在删除过程中如果遇到了其他的尾节点,那么就不能够再删除。

http://www.yayakq.cn/news/433250/

相关文章:

  • 做类似美团的网站吗怎么做网站快捷方式
  • 泉州网站建设平台做网站哪家专业
  • 家庭宽带怎么做网站wordpress做微商城
  • 织梦网站织梦做英文版的沈阳做网站的地方
  • 更改wordpress程序站点网址千山科技做网站好不好
  • 云南网站备案系统国际新闻最新消息今天新闻
  • 做网站用备案吗电脑上怎么建设网站
  • 锡盟网站建设设备管理系统下载
  • 个人建设门户网站 如何备案wordpress通过.htaccess实现缓存压缩
  • 会网站建设如何找工作wordpress免费媒体库管理
  • 网络营销电子版教材西安企业seo外包服务公司
  • 网站建设维护岗位职责网站运营维护工作内容
  • mui做浏览器网站跳转自己做网站切入地图
  • 如何提高网站点击量h5网站价格方案
  • 个人网站域名名字html代码自动生成
  • 最专业的做网站公司有哪些惠民网站建设
  • 来年做那个网站致富seo外包公司接单
  • 网站开发项目的里程碑谷歌排名查询
  • 酒水销售网站模板游戏网站免费入口
  • 网站建设上线流程烟台网站排名优化价格
  • 百度网站优化排名青岛胶南做网站的有多少
  • 鲜花网站数据库建设分析中信建设有限责任公司四川分公司
  • 电商网站设计培训家具营销策划方案
  • 金属材料网站建设艾艺公司团队定制
  • 公司做网站的招标书折页彩页设计
  • 网站代码500汾阳网架公司
  • 小挑可以做网站吗银川做网站最好的公司
  • 桃城区网站制作公司ppt超级市场
  • 祁阳网站建设123网络之家主页
  • 东莞网站建设熊掌号中国建筑第八工程局有限公司