<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[flannery023的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/flannery023</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; flannery023]]></copyright><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第十一章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/119085758</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/119085758</guid><author>flannery023</author><pubDate>Sun, 25 Jul 2021 18:56:33 +0800</pubDate><description><![CDATA[第一题：
vector.h


#ifndef VECTOR_H_
#define VECTOR_H_

#include &lt;vector&gt;
namespace VECTOR
{
    class Vector
    {
        public:
          enum Mode {RECT, POL};
        private:
          double x;
          double y;
          double mag;
         ]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第十章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/118254247</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/118254247</guid><author>flannery023</author><pubDate>Sat, 26 Jun 2021 20:52:34 +0800</pubDate><description><![CDATA[10_1.h


#ifndef _10_1_H_
#define _10_1_H_
#include &lt;string&gt;

class BankAccount {
 public:
  BankAccount(const std::string&amp; client,
              const std::string&amp; num,
              double bal = 0.0);
  void show() const;
  void deposit (d.]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第九章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/116175993</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/116175993</guid><author>flannery023</author><pubDate>Mon, 26 Apr 2021 22:32:41 +0800</pubDate><description><![CDATA[9.1

9_1.cpp文件：


#include "golf.h"

int main()
{
    golf golfs[3];
    for(int i=0; i&lt;3; ++i) {
        if (setgolf(golfs[i]))
            showgolf(golfs[i]);
        else
            break;
    }
}

golf.h:


const int Len = 40;
struct golf {
    cha]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第八章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/114697694</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/114697694</guid><author>flannery023</author><pubDate>Fri, 12 Mar 2021 17:14:58 +0800</pubDate><description><![CDATA[8.1


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

void p1(const string &amp;str, const int times=0)
{
    static int called = 0;
    int repeat = times&gt;0 ? called : 0;
    do
    {
        cout &lt;&lt; str &lt;&lt; endl;
    } while (repeat--);
   ]]></description><category></category></item><item><title><![CDATA[关于Redis你应该知道的]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/111754266</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/111754266</guid><author>flannery023</author><pubDate>Sun, 27 Dec 2020 15:58:26 +0800</pubDate><description><![CDATA[redis常见的数据类型：string，list，set，hash，sorted set
redis使用SDS（simple dynamic string）作为默认字符串表示。

	
structsdshdr{
//记录buf数组中已使用字节的数量
//等于SDS保存字符串的长度
intlen；
//记录buf数组中未使用字节的数量
intfree；
//字节数组，用于保存字符串
charbuf[]；
}

	它不会出现字符串变更造成的内存溢出；获取字符串时间复杂度为1；二进制...]]></description><category></category></item><item><title><![CDATA[Leetcode 53. Maximum Subarray 最大子序和（C++）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/111090508</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/111090508</guid><author>flannery023</author><pubDate>Sun, 13 Dec 2020 11:53:11 +0800</pubDate><description><![CDATA[题目描述：

给定一个整数数组 nums，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释:连续子数组[4,-1,2,1] 的和最大，为6。



思路：

    这是动态规划中一道非常经典的题目，虽然LeetCode上把这道题目难度定位Easy，但是我认为弄懂解决这道问题背后的思路，很多medium甚至hard都会迎刃而解。

    首先最容易想到的依然是暴力法，两层...]]></description><category></category></item><item><title><![CDATA[LeetCode Longest Palindromic Substring 最长回文子串问题（C++）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/111060659</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/111060659</guid><author>flannery023</author><pubDate>Sat, 12 Dec 2020 15:04:28 +0800</pubDate><description><![CDATA[题目描述：

Given a strings, returnthe longest palindromic substringins.

Example :


Input: s = "babad"
Output: "bab"
Note: "aba" is also a valid answer

Input: s = "cbbd"
Output: "bb"

Input: s = "a"
Output: "a"

Input: s = "ac"
Output: "a"



思路：

这是一道经典...]]></description><category></category></item><item><title><![CDATA[一个简单的批量修改、下载、上传xml内图片链接的脚本（Python3）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/110400065</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/110400065</guid><author>flannery023</author><pubDate>Tue, 01 Dec 2020 13:03:41 +0800</pubDate><description><![CDATA[写这个脚本是因为业务需求，需要批量检测死链并人工替换，为了给运营同学减轻人工替换负担写的脚本，功能就是批量检测xml内图片链接，并且自动下载到本机，并且还支持图片上传到远程ftp后，修改xml的图片对应地址。

  这是github地址：

 https://github.com/flannery0/picture_replace

图片下载与替换：


#!/bin/python
#coding=utf-8

import urllib.request  
from xml.dom im...]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第七章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/105617390</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/105617390</guid><author>flannery023</author><pubDate>Sun, 19 Apr 2020 16:51:56 +0800</pubDate><description><![CDATA[C++ Primer Plus 第六版（第七章）的课后习题答案，在main函数中把题号换掉就可以跑不同的程序，第九题单独在这个文章里：

https://blog.youkuaiyun.com/flannery023/article/details/105617355


#include &lt;iostream&gt;

using namespace std;
double Harmean(doubl...]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第七章第九题）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/105617355</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/105617355</guid><author>flannery023</author><pubDate>Sun, 19 Apr 2020 16:26:13 +0800</pubDate><description><![CDATA[为了不破坏原题结构，第九题单独列出来：


#include &lt;iostream&gt;
using namespace std;
const int SLEN = 30;
struct student{
    char fullname[SLEN];
    char hobby[SLEN];
    int ooplevel;
};
int getinfo(student pa[], ...]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第六章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/105346449</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/105346449</guid><author>flannery023</author><pubDate>Mon, 06 Apr 2020 16:46:32 +0800</pubDate><description><![CDATA[C++ Primer Plus 第六版（第六章）的课后习题答案，在main函数中把题号换掉就可以跑不同的程序，第九题的用例在附件中：


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

void p1()...]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第五章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/104941016</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/104941016</guid><author>flannery023</author><pubDate>Wed, 18 Mar 2020 11:36:01 +0800</pubDate><description><![CDATA[把main函数里面的函数名字替换成不同的数字就可以看到不同的题目的效果了。


#include &lt;iostream&gt;
#include &lt;array&gt;
#include &lt;cstring&gt;

using namespace std;
void p1()
{
    int low,high;
    int sum = 0;
    cout &lt;&lt;...]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第四章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/104873345</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/104873345</guid><author>flannery023</author><pubDate>Sun, 15 Mar 2020 09:24:19 +0800</pubDate><description><![CDATA[最近在读这本C++经典之经典，把一些课后习题发出来给大家参考：


#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstring&gt;
#include &lt;array&gt;
using namespace std;

void p1()
{
    char first_name[20],last_name[...]]></description><category></category></item><item><title><![CDATA[C++ Primer Plus 第六版课后习题答案（第三章）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/104595800</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/104595800</guid><author>flannery023</author><pubDate>Sun, 01 Mar 2020 17:16:00 +0800</pubDate><description><![CDATA[最近在读这本C++经典之经典，把一些课后习题发出来给大家参考：


#include &lt;iostream&gt;
using namespace std;
void p_1()
{
    int height;
    const int c = 12;
    cout &lt;&lt; "Enter your height(in):"&lt;&lt;endl;
    cin &gt;...]]></description><category></category></item><item><title><![CDATA[使用C++操作Redis5.0新特性Stream实现发布订阅]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/103546911</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/103546911</guid><author>flannery023</author><pubDate>Sun, 15 Dec 2019 11:45:53 +0800</pubDate><description><![CDATA[关于Redis5.0新出的这个stream数据结构的用法与介绍，可以看我上一篇关于Python操作Redis的client的介绍。

借助这个发送订阅平台，我重构了公司的摇号短信发送的平台。通过合作方提供格式化的摇号中签信息，一次抓取之后便可以实现对于中签者发布摇号成功消息，对于未中签者发布摇号失败通知。涉及公司隐私，这里并不展开讲摇号订阅发送的代码逻辑，只分享使用的Redis client。

...]]></description><category></category></item><item><title><![CDATA[使用Python操作Redis5.0新特性Stream实现订阅发布功能]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/100821880</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/100821880</guid><author>flannery023</author><pubDate>Sun, 15 Sep 2019 11:02:25 +0800</pubDate><description><![CDATA[　　本文完整代码下载：github链接

　　目前在做的工作有一部门是搭建一个可供公司内部使用的推送平台，用的中间件是redis，于是就自然的想用redis5.0版本的新特性来实现这个功能，网上的demo比较少，且大多是终端操作的命令行，写了一个Python的类和大家分享。

在介绍具体实现之前，先大致介绍一下背景。

在Redis5.0版本发布之前，redis也有一个发布、订阅功能，但功能非常简...]]></description><category></category></item><item><title><![CDATA[关于数据库你应该知道的]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/82346977</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/82346977</guid><author>flannery023</author><pubDate>Tue, 04 Sep 2018 20:11:01 +0800</pubDate><description><![CDATA[1.事务四大特性（ACID）

原子性：指包含事务的事件要么全部成功，要么全部失败回滚。
	一致性：事务必须使数据库从一个一致性状态变化到另一个一致性状态。
	隔离性：指多个用户并发访问数据库时，数据库为每一个用户开启的事务不能被另一个用户操作的事务所干扰。
	持久性：一个事务一旦提交，数据库对数据的改变就是永久性的。
2.数据库隔离级别，每个级别会引发什么问题，mysql默认是哪个级别

MyS...]]></description><category></category></item><item><title><![CDATA[反转列表（Python）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/81085795</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/81085795</guid><author>flannery023</author><pubDate>Tue, 17 Jul 2018 18:06:20 +0800</pubDate><description><![CDATA[题目描述：

输入一个链表，反转链表后，输出新链表的表头。

思路：

不构造新的链表，原地反转。需要指针个数为4：1、保留当前节点的下一节点防止链表断裂 ， 2、指向当前节点，3、指向当前节点的下一节点，4、指向当前节点的前一节点

代码：


Class solution:
    def ReverseList(self, pHead):
        pre = None
       ...]]></description><category></category></item><item><title><![CDATA[调整数组顺序使奇数位于偶数前面(python)]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/81078955</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/81078955</guid><author>flannery023</author><pubDate>Tue, 17 Jul 2018 14:59:11 +0800</pubDate><description><![CDATA[题目描述

输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，所有的偶数位于位于数组的后半部分，并保证奇数和奇数，偶数和偶数之间的相对位置不变。

思路:

两个指针：even和odd，even从数组前往后找，找到第一个偶数，odd从这个偶数之后开始找，定位第一个奇数，将这个奇数插入到第一个偶数前面，这样才能保持相对位置不变。（注意：每一个循环都要判断指针是...]]></description><category></category></item><item><title><![CDATA[二进制中1的个数（Python）]]></title><link>https://blog.youkuaiyun.com/flannery023/article/details/80988964</link><guid>https://blog.youkuaiyun.com/flannery023/article/details/80988964</guid><author>flannery023</author><pubDate>Tue, 10 Jul 2018 17:19:54 +0800</pubDate><description><![CDATA[题目描述输入一个整数，输出该数二进制表示中1的个数。其中负数用补码表示。思路：这里涉及到一个巧妙的算法，就是对于一个二进制整数，将它减一和它本身相与，会把这个整数最右边的1变为零，直到全为0为止，有多少1就可以循环多少次。对于负数，将最高位的符号位取反就可以获得补码，通常我们采用和0x7FFFFFFF相与来得到。ps：第一次接触这种题目的话不要要求自己主动想到，记住就好了。代码：class Sol...]]></description><category></category></item></channel></rss>