obj文件

C++ 线程池实现原理

若如初见. 提交于 2019-12-07 21:31:18
背景 多线程编程是C++开发者的一个基本功, 但是很多开发者都是直接使用公司给包装好的线程池库, 没有去了解具体实现,有些实现也都因为高度优化而写得讳莫如深,让初学者看得吃力。 所以写这篇文章主要是想以非常简单的方式讲讲实现原理, 希望初学者看完之后不是觉得「不明觉厉」,而是觉得「原来如此」。 面朝代码 首先先来一段超级简单(注释丰富)的代码展示多线程编程的经典写法。 注: 该段代码和完整运行示例请见 limonp-thread-pool-programming-example , 可以通过以下命令跑通示例代码和输出结果,建议尝试以下。当然记得前提是该机器的网络可以访问 GitHub 的情况下。 可能因为在中国访问 GitHub 并不是很稳定,不是每次都能成功,所以如果卡住的话就多make几次。有兴趣一起交流学习c/c++的小伙伴可以加群:941636044,里面有大神会给予解答,也会有许多的资源可以供大家学习分享,欢迎大家前来一起学习进步! git clone https://github.com/yanyiwu/practice cd practice/cpp/limonp-v0.5.1-demo make #include "limonp/ThreadPool.hpp" #include "limonp/StdExtension.hpp" using namespace

基于ManagedDataAccess开发的OracleDBHelpe工具集伸手党的福音

风流意气都作罢 提交于 2019-12-06 15:55:02
在使用前先加入ManagedDataAccessDLL文件方可使用 添加方法:右键项目。点击管理NuGet程序包,点击浏览,在输入框内输入 ManagedDataAccess,再点击安装即可 OracleDBHelper代码如下(Copy直接用) /// <summary> ///基於.net( 向下兼容4.0)開發 OracleDBHelper工具類 ///<para>作者: 害羞的青蛙</para> ///<para>時間: 2019-12-6</para> /// </summary> public static class OracleDBHelper { /// <summary> /// 執行SQL語句返回DataTable /// </summary> /// <param name="SQL">SQL語句</param> /// <param name="DBUrl">數據庫鏈接地址</param> /// <returns></returns> public static DataTable GetDataTableBySQL(string SQL,string DBUrl) { // 获取与数据库的连接对象並且绑定连接字符串 OracleConnection conn = new OracleConnection(DBUrl); conn.Open();/

.Net Core 使用 NPOI 导入Excel

亡梦爱人 提交于 2019-12-06 14:57:51
由于之前在网上查阅一些资料发现总是不能编译通过,不能正常使用,现把能正常使用的代码贴出: /// <summary> /// Excel导入帮助类 /// </summary> public class ImportExcelUtil<T> where T : new() { //合法文件扩展名 private static List<string> extName = new List<string>() { ".xls", ".xlsx" }; /// <summary> /// 导入Excel内容读取到List<T>中 /// </summary> /// <param name="file">导入Execl文件</param> /// <param name="sheetName">指定读取excel工作薄sheet的名称</param> /// <returns>List<T></returns> public static List<T> InputExcel(IFormFile file, string sheetName = null) { //获取文件后缀名 string type = Path.GetExtension(file.FileName); //判断是否导入合法文件 if(!extName.Contains(type)) { return null;

面向对象 - 总结

我们两清 提交于 2019-12-06 13:01:57
对扩展性要求高的可以使用面向对象方式 1.对象是特征(属性)和技能(方法)的结合体2.类是一系列具有相似特征和技能的对象的结合体3.类在定义阶段就会执行类体代码,生成类的名称空间 类实例化时发生的事情 1.产生一个空对象2.触发__init__方法,将空对象和需要的参数传入,为空对象的名称空间赋值 类中定义的函数本质都是绑定给对象使用的 1.不同对象就是不同绑定方法2.绑定给谁,就应该由谁来调用,谁来调用就会把谁当做第一个参数传给对应的函数 继承 URL 一种新建类的方式,子类会继承父类的属性,可以减少代码的冗余 什么是什么的关系 python2新式类:继承object类的类,以及该类的子类经典类:没有继承object的类 python3类默认都继承object,所以python3中都是新式类,没有经典类 obj. mro() 可以查看类的查找顺序 属性查找 obj -> 父类 -> 父父类经典类: 深度优先新式类: 广度优先 引用父类中的属性 super() 专门用来引用父类的属性,依赖于继承,即使没有直接继承也会按照MRO继续查找 super(自己类名,self).__init__() 可以把super()看做是一个特殊的对象,这个对象调用__init__默认传入self, 所以往__init__()中传参时,不用写self super 严格按照mro表查找方法 指明道姓

Form组件 钩子方法

拜拜、爱过 提交于 2019-12-06 12:57:26
Form和ModeForm Form组件 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把他们包起来. 同时我们在好多场景下都需要对用户进行校验,比如校验用户是否输入,输入的长度和格式等正不正确,如果用户输入的内容有错误就需要在页面上相应的位置显示对相应的错误信息 总结: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通方式注册功能 Views.py def register(request): error = '' if request.method=='POST': uname=request.POST.get('uname') pwd=request.POST.get('pwd') #对注册进行校验 if len(uname)<6: error='用户长度不能小于6位' else: #将用户名和密码写入数据库中 user_obj=models.User.objects.create( unme=uname, pwd = pwd ) user_obj.save() return HttpResponse('注册成功') return render(request, "register.html", {"error_msg": error_msg}) 使用form组件实现注册功能 views

Django 09

。_饼干妹妹 提交于 2019-12-06 11:06:08
目录 多对多三种创建方式 全自动 纯手撸 半自动(推荐) form组件 校验数据 渲染标签 展示错误信息 validators校验器 钩子函数 补充 多对多三种创建方式 全自动 ManyToManyField(to=) 优点: 无须自己创建多对多关系表, 支持orm跨表查询, 支持add, set, remove, clear方法 不足: 表的扩展性较差 class Book(models.Model): name = models.CharField(max_length=255) # 自动创建多对多关系表 authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=255) 纯手撸 优点: 字段完全由自己定义 不足: 不支持orm跨表查询, 不支持add, set, remove, clear方法 class Book(models.Model): name = models.CharField(max_length=255) class Author(models.Model): name = models.CharField(max_length=255) # 手动创建多对多关系表 class Book2Author

Django之Form应用Bootstrap样式

冷暖自知 提交于 2019-12-06 10:59:22
应用Bootstrap样式示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> <title>login</title> </head> <body> <div class="container"> <div class="row"> <form action="/login2/" method="post" novalidate class="form-horizontal"> {% csrf_token %} <div class="form-group"> <label for="{{ form_obj.username.id_for_label }}" class="col-md-2 control-label">{{ form_obj.username.label }}</label> <div class=

1203

你。 提交于 2019-12-06 10:54:00
目录 一、多对多创建的三种方式 1.全自动 2.半自动 3.纯手动 二、from组件 1. forms组件的3大作用 2. 渲染标签 (1)前端渲染标签的3种方式 (2)后端写法 (3)forms基本使用实例: 3. 校验数据 4. 展示错误信息 三、forms组件的约束条件和错误信息 1. 约束条件和错误信息的书写 2. 其他约束数据的方式 (1) HOOK (钩子函数) (2)选择类的input框 一、多对多创建的三种方式 1.全自动 当表数据不复杂,一般情况下可以使用全自动,即Django会自动创建第三张关系表。 优点:全部是orm自动操作的,可以跨表查询并且内置了四个操作方法,add、remove、set、clear 缺点:自动创建的第三张表无法扩展修改字段,表的扩展性差 class Book(models.Model): name = models.CharField(max_length=32) # 使用ManyToManyField自动创建多对多关系 authors = models.ManyToManyField(to='Authors') class Authors(models.Model): name = models.CharField(max_length=32) 2.半自动 需要对第三张表做一定扩展时,推荐使用该方法创建多对多关系

SpringBoot 2.1.6 启动原理解析(一)

元气小坏坏 提交于 2019-12-06 10:15:22
小白第一次写博客,如果有不足之处烦请各位大佬指正。 用了好久的SpringBoot了,一直不清楚它内部的一些启动原理,如何加载yml文件、如何初始化bean的,今天就记录一下,新建了一个springboot2.1.6的项目,就从一开始启动类中的SpringApplication.run方法开始,这一部分先看看SpringApplication的构造方法 项目名称: DemoAppication SpringApploication.run 进入SpringApplication.run(DemoApplication.class, args);之后,是一个静态run方法的重载方法,后面如果方法中也是一个重载方法的话就不贴代码了。 public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) { return run(new Class<?>[] { primarySource }, args); } 进入这个重载的run方法以后,它创建一个SpringApplication的对象并调用了run方法返回 public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[]

php websoket 通讯

百般思念 提交于 2019-12-06 08:08:09
server <?php /** * websorket 即时通讯服务器 */ class Websocket { private $_serv; private $_pdo; public function __construct($host='0.0.0.0',$port=9501) { $this->_serv=new swoole_websocket_server($host, $port, SWOOLE_BASE); $this->_pdo=new PDO("mysql:host=*********;dbname=leocms", "*****","*****"); //初始化一个PDO对象$this->_serv->set( ['websocket_compression' => true,] ); $this->_serv->on('handshake',[$this,'on_handshake']); $this->_serv->on('open',[$this,'on_open']); $this->_serv->on('message',[$this,'on_message']); $this->_serv->on('close',[$this,'on_close']); } /** * 退出登录 */ public function on_close