<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[killsoiler的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/killsoiler</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; killsoiler]]></copyright><item><title><![CDATA[联邦学习FedAvg自编写代码]]></title><link>https://blog.youkuaiyun.com/killsoiler/article/details/113861115</link><guid>https://blog.youkuaiyun.com/killsoiler/article/details/113861115</guid><author>killsoiler</author><pubDate>Fri, 19 Feb 2021 12:16:10 +0800</pubDate><description><![CDATA[联邦学习中，联邦平均算法获得了很大的使用空间，因此常常被用于进行同步训练操作
不多废话了，以下为Fedavg代码
由于使用场景为NonIID场景，因此我使用了别人的一个MNIST数据集自定义的代码（见附录）
FedAvg代码如下，功能具体看注释
工作环境：python3.8.5 + pytorch(无cuda)
# coding: utf-8

# In[1]:


import argparse
import torch
import os
import torch.nn as nn
import tor]]></description><category></category></item><item><title><![CDATA[Ubuntu16.04安装CodeChecker及CodeChecker服务器的配置]]></title><link>https://blog.youkuaiyun.com/killsoiler/article/details/112004785</link><guid>https://blog.youkuaiyun.com/killsoiler/article/details/112004785</guid><author>killsoiler</author><pubDate>Thu, 31 Dec 2020 14:35:13 +0800</pubDate><description><![CDATA[Ubuntu安装CodeChecker
首先环境使用的是Ubuntu16.04发行版
其自带的python版本为3.5，gcc版本为5
CodeChecker需要python版本&gt;=3.6
经过实验，发现Ubuntu版本过低时，如果不能按照如下方法使用apt直接安装python，那么需要使用gcc对python源码进行进行编译安装。此时gcc版本应至少&gt;=5。否则无法对python进行编译安装（至少gcc4.8.1不行）

因此如果需要gcc降级，那么务必在安装CodeChecker安装结束后再]]></description><category></category></item><item><title><![CDATA[STL string容器的深拷贝浅拷贝问题]]></title><link>https://blog.youkuaiyun.com/killsoiler/article/details/108444716</link><guid>https://blog.youkuaiyun.com/killsoiler/article/details/108444716</guid><author>killsoiler</author><pubDate>Mon, 07 Sep 2020 11:29:23 +0800</pubDate><description><![CDATA[STL string容器的深拷贝浅拷贝问题
结论：深拷贝

重载=的赋值构造函数 – 深拷贝

int main()
{
    string t1 = "ABC";
    string t2;
    t2 = t1;
    t2[0] = 'a';
    cout &lt;&lt; t1;
}

ABC


拷贝构造函数 – 深拷贝

    string t1 = "ABC";
    string t2(t1);
    t2[0] = 'a';
    cout &lt;&lt; t1;

]]></description><category></category></item><item><title><![CDATA[面试题目整理-涵盖操作系统、网络、算法、设计模式等]]></title><link>https://blog.youkuaiyun.com/killsoiler/article/details/108142379</link><guid>https://blog.youkuaiyun.com/killsoiler/article/details/108142379</guid><author>killsoiler</author><pubDate>Fri, 21 Aug 2020 10:42:28 +0800</pubDate><description><![CDATA[1. 进程、线程、协程


为什么使用线程：服务器为进程配置的资源太多，且切换开销较大，所以使用线程


进程和线程的区别


进程是操作系统资源分配的最小单位，线程是操作系统调度的最小单位


进程拥有独立的地址空间，在启动时分配，同时包含进程控制块、代码段、数据段、堆、栈
线程的地址空间共享，仅拥有自己的线程栈


通信方式不同，线程共享全局变量、静态变量，共享更方便
进程需要使用信号等等手段


进程间较为独立，进程崩溃一般不会影响其他进程
线程崩溃，该进程的所有线程崩溃，因为线程共享地址空间


进]]></description><category></category></item><item><title><![CDATA[重载等号运算符，返回值类型与析构函数]]></title><link>https://blog.youkuaiyun.com/killsoiler/article/details/107300736</link><guid>https://blog.youkuaiyun.com/killsoiler/article/details/107300736</guid><author>killsoiler</author><pubDate>Sun, 12 Jul 2020 16:02:43 +0800</pubDate><description><![CDATA[重载等号运算符，返回值的理解
背景：等号运算符的重载用于解决指针浅层复制的问题
目的：浅层复制转变为深层复制
首先定义析构函数：
~A()
	{
		cout &lt;&lt; "destruction" &lt;&lt; endl;
	}


按照常规方式进行重载，返回引用值

A&amp; operator=(const A&amp; b)
	{
		time = b.time + 1;
		return *this;
	}

那么在如下的主函数中运行
	A a;
	A b;
	a = b;

析构函数]]></description><category></category></item><item><title><![CDATA[MFC中对话框关闭，进程残留]]></title><link>https://blog.youkuaiyun.com/killsoiler/article/details/105357805</link><guid>https://blog.youkuaiyun.com/killsoiler/article/details/105357805</guid><author>killsoiler</author><pubDate>Tue, 07 Apr 2020 09:48:28 +0800</pubDate><description><![CDATA[MFC中对话框关闭后，进程仍然残留的简便解决方法
##调用cmd指令或者用destroy方法
1.在头文件中添加oncancel处理
afx_msg void OnBnClickedCancel();

2.主文件中加入事件处理方法即可，这里调用taskkill方法，sql_test.exe修改为你的进程名字即可
void login_dlg::OnBnClickedCancel()
{
	Win...]]></description><category></category></item></channel></rss>