<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Kowlooncen的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Kowlooncen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Kowlooncen]]></copyright><item><title><![CDATA[C++学习笔记 建造者]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/122203418</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/122203418</guid><author>Kowlooncen</author><pubDate>Tue, 28 Dec 2021 21:43:54 +0800</pubDate><description><![CDATA[建造者模式生成的对象有复杂的内部结构，将分步骤的去构建一个复杂的对象，分多少步是确定的，而每一步的实现是不同的，可能经常发生变化；（类比工厂模式）


#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class Builder;

// Product
class Product
{
public:
    void AddPart(const char *info) { m_PartInfoVec.push_b]]></description><category></category></item><item><title><![CDATA[C++学习笔记 单例与原型]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/122202496</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/122202496</guid><author>Kowlooncen</author><pubDate>Tue, 28 Dec 2021 21:30:07 +0800</pubDate><description><![CDATA[一、单例

单例模式是指在整个系统生命周期内，保证一个类只能产生一个实例，确保该类的唯一性。

单例模式分类
单例模式可以分为 懒汉式 和 饿汉式 ，两者之间的区别在于创建实例的时间不同。

懒汉式
系统运行中，实例并不存在，只有当需要使用该实例时，才会去创建并使用实例。这种方式要考虑线程安全（线程争夺资源，加锁等办法）。

饿汉式
系统一运行，就初始化创建实例，当需要时，直接调用即可。这种方式本身就线程安全，没有多线程的线程安全问题。

单例类的特点

构造函数和析构函数为私有类型，目的是禁止外部构造和析]]></description><category></category></item><item><title><![CDATA[C++学习笔记 工厂与策略]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/122127964</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/122127964</guid><author>Kowlooncen</author><pubDate>Tue, 28 Dec 2021 20:48:26 +0800</pubDate><description><![CDATA[一、设计模式的分类C++各类设计模式及实现

1.工厂模式

   工厂模式属于创建型模式，大致可以分为三类，简单工厂模式、工厂方法模式、抽象工厂模式。






enum CTYPE {coreA, coreB};

class SingleCore
{
public:
	virtual void show() = 0;
};

class SingleCoreA : public SingleCore
{
public:
	void show() {
		cout &lt;&lt; "A";
...]]></description><category></category></item><item><title><![CDATA[C++学习笔记 谈谈虚函数与多态]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/122118520</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/122118520</guid><author>Kowlooncen</author><pubDate>Thu, 23 Dec 2021 23:50:43 +0800</pubDate><description><![CDATA[虚函数，虚表指针，虚函数表，动态



什么是动态多态呢？动态多态：显然这和静态多态是一组反义词，它是在程序运行时根据基类的引用（指针）指向的对象来确定自己具体该调用哪一个类的虚函数。

具体代码请参考C++ 之 多态

动态多态的条件：
●基类中必须包含虚函数，并且派生类中一定要对基类中的虚函数进行重写。
●通过基类对象的指针或者引用调用虚函数。





重写 ：
（a）基类中将被重写的函数必须为虚函数
（b）基类和派生类中虚函数的原型必须保持一致（返回值类型，函数名称以及参数列表），协变和析构函...]]></description><category></category></item><item><title><![CDATA[函数编程（Haskell） 学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121782126</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121782126</guid><author>Kowlooncen</author><pubDate>Tue, 21 Dec 2021 21:40:35 +0800</pubDate><description><![CDATA[目录



0. 进入／退出交互模式ghci

1. 简单的运算

2. 简单的函数

3. Haskell的if语句

4. 列表

5. 区间

6. 列表推导式

7. 元组



0. 进入／退出交互模式ghci

安装好Haskell，命令行敲ghci进入交互模式


Code$ ghci
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
Prelude&gt; 
ghci&gt;:q                   .]]></description><category></category></item><item><title><![CDATA[“C++学习笔记“刷题 STL1_Iter]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121781596</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121781596</guid><author>Kowlooncen</author><pubDate>Sat, 11 Dec 2021 16:53:40 +0800</pubDate><description><![CDATA[在 STL1Iter 组的所有任务中，不使用容器进行数据处理：初始集由读取迭代器读取并立即传递给所需的算法，获得的结果立即输出到文件或发送到问题书使用适当的写迭代器。

如果算法需要使用函数对象，那么在支持 C++11 标准的编译器的情况下，应该使用 lambda 表达式。

在大多数情况下，使用不捕获变量的 lambda 表达式就足够了，或者如果编译器不支持 C++11 标准，则使用普通函数就足够了（请参阅 STL1Iter2 的注释）。 更复杂的任务需要使用带有捕获的外部变量或结构的 lambda 表达]]></description><category></category></item><item><title><![CDATA[“C++学习笔记“ 网络编程]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121841844</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121841844</guid><author>Kowlooncen</author><pubDate>Thu, 09 Dec 2021 20:29:13 +0800</pubDate><description><![CDATA[目录

一、C++信号处理

signal() 函数

raise() 函数

二、C++多线程

创建线程

终止线程

向线程传递参数

连接和分离线程

std::thread

三、C++Web 编程





























一、C++信号处理

信号是由操作系统传给进程的中断会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上，可以通过按 Ctrl+C 产生中断。

有些信号不能被程序捕获，但是下表所列信号可以在程序中捕获..]]></description><category></category></item><item><title><![CDATA[数据库（SQLite）学习笔记（四）]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121802929</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121802929</guid><author>Kowlooncen</author><pubDate>Wed, 08 Dec 2021 22:37:20 +0800</pubDate><description><![CDATA[习题实战：


sqlite3 authors.db
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite&gt; .databases
main: /home/kowlooncen/authors.db
sqlite&gt; SELECT tbl_name FROM sqlite_master WHERE type = 'table';
authors
Authors2
author
sqlite&g]]></description><category></category></item><item><title><![CDATA[数据库（SQLite）学习笔记（三）]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121800534</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121800534</guid><author>Kowlooncen</author><pubDate>Wed, 08 Dec 2021 21:33:15 +0800</pubDate><description><![CDATA[一、SQLite创建表

CREATE TABLE 语句的基本语法如下：


CREATE TABLE database_name.table_name
(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

CREATE TABLE 语句后跟着表的唯一的名称或标识。您也可以选择指定带有tab...]]></description><category></category></item><item><title><![CDATA[数据库（SQLite）学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121793859</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121793859</guid><author>Kowlooncen</author><pubDate>Wed, 08 Dec 2021 20:30:08 +0800</pubDate><description><![CDATA[创建数据库
$ sqlite3 DatabaseName.db


$ sqlite3 testDB.db

创建并打开数据库文件


sqlite&gt;.open test.db

检查是否在数据库列表


sqlite&gt;.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db

退出 sqlite .]]></description><category></category></item><item><title><![CDATA[“C++学习笔记“ STL2_容器]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121767040</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121767040</guid><author>Kowlooncen</author><pubDate>Tue, 07 Dec 2021 23:23:35 +0800</pubDate><description><![CDATA[目录

1. 容器的分类与基本函数

顺序容器

关联容器

容器适配器

成员函数

2.容器定义的类型与构造函数参数

interator、const_iterator

reverse_interator、const_reverse_interator

begin()、end()、cbegin()、cend()

rbegin()、rend()、crbegin()、crend()

reference, const_reference

引用（Reference）

常引用（Const Refe..]]></description><category></category></item><item><title><![CDATA[“C++学习笔记“ STL1_迭代器]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121762885</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121762885</guid><author>Kowlooncen</author><pubDate>Tue, 07 Dec 2021 13:26:28 +0800</pubDate><description><![CDATA[定义：C++ STL（标准模板库）是一套功能强大的 C++ 模板类，提供了通用的模板类和函数，这些模板类和函数可以实现多种流行和常用的算法和数据结构，如向量、链表、队列、栈。

C++ 标准模板库的核心包括以下三个组件：


			组件
			
			描述
		容器（Containers）
			容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器，比如 deque、list、vector、map 等。
		算法（Algorithms）
			算法作用于容器。它们提供了执行各种操作的方式，包括对]]></description><category></category></item><item><title><![CDATA[数据库（SQLite）学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/121752753</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/121752753</guid><author>Kowlooncen</author><pubDate>Mon, 06 Dec 2021 18:43:05 +0800</pubDate><description><![CDATA[目录

一、了解SQLite

二、SQLite的命令

三、SQLite的语法

四、SQLite数据类型

一、了解SQLite

SQLite是一个软件库（进程内的库），实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。是一个零配置的数据库，这意味着与其他数据库不一样，您不需要在系统中配置。

二、SQLite的命令

如需获取可用的点命令的清单，可以在任何时候输入 ".help"。例如：
	
sqlite&gt;.help
	
	查看 SQLite 命令提示符的默认设置，尝试使.]]></description><category></category></item><item><title><![CDATA[“C++学习笔记” 关于二叉树：二叉表示树判断算术表达式是否存在错误]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/118291057</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/118291057</guid><author>Kowlooncen</author><pubDate>Mon, 28 Jun 2021 14:20:05 +0800</pubDate><description><![CDATA[输入一个算术表达式，判断该表达式是否合法，若不合法，给出错误信息；若合法，则输出合法表达式的表达式树。

【数据模型】二叉表示树具有以下特点：1.叶子结点一定是操作数 2. 分支结点一定是操作符

【算法分析】表达式不合法有三种情况：①左右括号不匹配；②变量名不合法；③运算符两旁无参与运算的变量或数。

【解题思路】1. 根据运算符的优先顺序，将表达式结合成（左操作符 运算符 右操作符）的形式

2. 由外层括号开始，运算符作为二叉表示树的根结点，左操作数作为左子树，右操作数作为右子树

3. 如果某子..]]></description><category></category></item><item><title><![CDATA[“C++学习笔记” 关于string：把一句话分解成单词，然后排序]]></title><link>https://blog.youkuaiyun.com/Kowlooncen/article/details/118228080</link><guid>https://blog.youkuaiyun.com/Kowlooncen/article/details/118228080</guid><author>Kowlooncen</author><pubDate>Fri, 25 Jun 2021 20:54:25 +0800</pubDate><description><![CDATA[自己的学习笔记，如有错误，还请指正，谢谢。

初代版 ：

    输入字符串直到“**”结束，对字符数组进行排序，再强行用了向量的函数。


#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;

using namespace std;

int main()
{
	string ar...]]></description><category></category></item></channel></rss>