<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_42226134的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/weixin_42226134</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; weixin_42226134]]></copyright><item><title><![CDATA[WebSocket协议源码文档分析七]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110874381</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110874381</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 15:43:45 +0800</pubDate><description><![CDATA[WebSocket Protocol Stack in chrome/net
目的
我们想提出在chrome / net中添加WebSocket网络堆栈以实现以下两个目标：

在代理解析，代理身份验证，建立SSL连接和HTTP事务等领域，删除SocketStream和其他net /代码的重复代码。
准备通过SPDY实现WebSocket多重扩展和WebSocket。

本文档重点介绍chrome / net下的类的设计。
背景
当前设计
当前，WebSocket协议栈基本上位于WebCore的WebSock]]></description><category></category></item><item><title><![CDATA[WebSocket协议源码文档分析六]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110874206</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110874206</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 15:27:49 +0800</pubDate><description><![CDATA[Per-renderer WebSocket throttling
每个渲染器WebSocket节流
目的
防止行为不当的Javascript导致浏览器占用所有可用内存。
使WebSocket作为执行端口扫描的方法的吸引力降低。
背景
与HTTP不同，WebSocket协议具有内置的DoS保护，其形式为一次仅允许每个ip：port进行一次握手。这使得浏览器中对DoS保护的需求不那么明显。但是，如果浏览器接受来自渲染器的无限制WebSocket请求，它将用尽所有CPU和内存来处理这些请求。
原则上，WebSo]]></description><category></category></item><item><title><![CDATA[WebSocket协议源码文档分析五]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110873918</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110873918</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 15:19:42 +0800</pubDate><description><![CDATA[WebSocket HTTP Auth Design
目的
支持WebSocket握手的HTTP身份验证。
背景
自从黎明起，HTTP协议就使用401“未经授权”状态代码，WWW-Authenticate响应标头和授权请求标头支持认证机制。
由于安全性差，缺乏标准的会话超时和注销功能以及不良的UI体验，此机制尚未在公共Internet站点上广泛使用。但是，由于易于实现，它被广泛用于路由器等家庭网络设备以及某些公司环境中。
共有三种类型：

“基本”-用户名和密码以混淆的纯文本格式发送
“摘要”-密码以随机数]]></description><category></category></item><item><title><![CDATA[WebSocket协议源码文档分析四]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110872997</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110872997</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 15:07:04 +0800</pubDate><description><![CDATA[WebSocket + Network Service + WebRequest API
本文档介绍了在启用网络服务的情况下如何在WebSocket上支持WebRequest API。
当前状态
WebSocket + WebRequest API（无网络服务）
禁用网络服务后，我们将（child_id，render_frame_id）附加到content :: WebSocketManager中的net :: URLRequest。 附件中的信息在extensions :: WebRequest :: W]]></description><category></category></item><item><title><![CDATA[WebSocket协议源码文档分析三]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110872792</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110872792</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 14:40:20 +0800</pubDate><description><![CDATA[WebSockets over HTTP/2 Chromium Design Document
一页概述
概要
根据规范，在Chromium中通过HTTP / 2实现对WebSockets的支持，请参阅https://tools.ietf.org/html/draft-ietf-httpbis-h2-websockets-07上的最新草案。仅当服务器已经通过规范中定义的HTTP / 2 SETTINGS参数通过HTTP / 2公布了对WebSockets的支持时，这仅用于安全的WebSockets请求。在其]]></description><category></category></item><item><title><![CDATA[WebSocket协议源码文档分析二]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110872244</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110872244</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 14:26:40 +0800</pubDate><description><![CDATA[WebSocket节流设计
目的
在net /中为新的WebSocket堆栈实现符合RFC6455的限制。
通过SPDY或HTTP / 2传输进行多路复用的WebSocket在本文档的范围之外（通过SPDY代理隧道传输的WebSocket除外，从WebSocket的角度来看，这只是一个普通的代理）。
背景
新的WebSocket堆栈重新使用HTTP堆栈进行握手。不幸的是，HTTP和WebSockets之间的连接限制语义不同：
对于HTTP，浏览器将自身限制为每对（主机名，端口）对6个连接。
对于WebSoc]]></description><category></category></item><item><title><![CDATA[WebSocket协议源码文档分析一]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/110862256</link><guid>https://blog.csdn.net/weixin_42226134/article/details/110862256</guid><author>weixin_42226134</author><pubDate>Tue, 08 Dec 2020 14:09:20 +0800</pubDate><description><![CDATA[WebSocketBasicHandshakeStream
目的
将用于处理WebSocket HTTP升级握手和其余WebSocket协议的代码尽可能合理地分开。
只需最少的更改，即可将Chrome的现有HTTP实现重用于握手。
背景
WebSocket连接包含两个不同的阶段：握手（使用HTTP语义并借用HTTP机制进行身份验证和cookie）以及WebSocket协议本身（作为双向TCP / IP薄层的二进制或文本消息流）。
Chrome中WebSockets的出厂实现基于Blink内部完整协议的实现，]]></description><category></category></item><item><title><![CDATA[三数之和]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/107380758</link><guid>https://blog.csdn.net/weixin_42226134/article/details/107380758</guid><author>weixin_42226134</author><pubDate>Thu, 16 Jul 2020 13:04:13 +0800</pubDate><description><![CDATA[题目描述
给定一个包含 n 个整数的数组 nums，判断 nums 中是否存在三个元素 a，b，c ，使得 a + b + c = 0 ？找出所有满足条件且不重复的三元组。
注意：答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4]，
满足要求的三元组集合为：
[
  [-1, 0, 1],
  [-1, -1, 2]
]


思路
先对数组排序。O（nlogn）
使用两个循环，外层循环用于控制每次必须存在的数。内层循环用于寻找两外两个元素，使得和为0。]]></description><category></category></item><item><title><![CDATA[数据交互xml、json、protobuf格式比较]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/107185102</link><guid>https://blog.csdn.net/weixin_42226134/article/details/107185102</guid><author>weixin_42226134</author><pubDate>Tue, 07 Jul 2020 16:52:46 +0800</pubDate><description><![CDATA[数据交互xml、json、protobuf格式比较
1、json: 一般的web项目中，最流行的主要还是json。因为浏览器对于json数据支持非常好，有很多内建的函数支持。
2、xml: 在webservice中应用最为广泛，但是相比于json，它的数据更加冗余，因为需要成对的闭合标签。json使用了键值对的方式，不仅压缩了一定的数据空间，同时也具有可读性。
3、protobuf:是后起之秀，是谷歌开源的一种数据格式，适合高性能，对响应速度有要求的数据传输场景。因为profobuf是二进制数据格式，需要编]]></description><category></category></item><item><title><![CDATA[用计算机图形学算法可视化编程来解决一个有意思的分钱概率游戏]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/106648336</link><guid>https://blog.csdn.net/weixin_42226134/article/details/106648336</guid><author>weixin_42226134</author><pubDate>Tue, 09 Jun 2020 18:41:45 +0800</pubDate><description><![CDATA[题设：现在有100个人，每个人手里有100块钱，现在游戏开始，每个人都拿出一块钱给随机的一个人，那么这个游戏一直持续下去，会是什么结果呢？
曾经有人拿这个问题问过五位非常聪明的博士，他们的答案不尽相同，都是很平均，差不了多少
那么真实的结果到底是什么情况呢，现在我们用java swing的GUI编程来模拟一下这个过程，看看最终结果如何
package com.company;

import java.awt.*;
import javax.swing.*;

public class AlgoFrame ]]></description><category></category></item><item><title><![CDATA[二叉树的路径总和]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105904789</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105904789</guid><author>weixin_42226134</author><pubDate>Sun, 03 May 2020 16:12:45 +0800</pubDate><description><![CDATA[/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
 /*给...]]></description><category></category></item><item><title><![CDATA[删除字符串s1 中在字符串s2 中出现的字符（C++）]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105904254</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105904254</guid><author>weixin_42226134</author><pubDate>Sun, 03 May 2020 15:39:40 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;set&gt;
using namespace std;
int main()
{
    string s1="welcome";
    string s2="wel";
    set&lt;char&gt; t;
    //将s1中的数据全部存入set中
    ...]]></description><category></category></item><item><title><![CDATA[《程序员的自我修养---静态链接》第四章总结]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105889684</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105889684</guid><author>weixin_42226134</author><pubDate>Sat, 02 May 2020 13:51:01 +0800</pubDate><description><![CDATA[整个链接过程就是，就是将几个目标文件加工合并成一个实处文件
按序叠加：这季节将各个目标文件依次合并，但是这样会导致效率低下，导致输出文件将会有很多零散的段，因为每个段都需要有一定的地址和空间对齐的要求，段的装载地址和空间的对齐的单位是页，也就是4096字节，那么也就是说如果一个段只有1字节，他也要在内存中占用4096字节，这样会造成内存空间的大量的内部碎片
相似段合并：将相似性质的段进行合并

....]]></description><category></category></item><item><title><![CDATA[如何不用临时变量和指针来交换两个数字]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105882876</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105882876</guid><author>weixin_42226134</author><pubDate>Fri, 01 May 2020 21:26:41 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
using namespace  std;
int main()
{
    int a=10;
    int b=20;
    //第一种方法
    a^=b^=a^=b;
    //第一种方法相当于
    a=a^b;
    b=b^a;
    a=a^b;

    //第二种方法
    a=a+b;
    b=a-b;
...]]></description><category></category></item><item><title><![CDATA[《程序员的自我修养---目标文件里有什么》第三章总结]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105875935</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105875935</guid><author>weixin_42226134</author><pubDate>Fri, 01 May 2020 11:56:09 +0800</pubDate><description><![CDATA[程序源代码编译后的机器指令经常被放在代码段里，代码段常见的名字有.code和.text段
全局变量和局部静态变量经常放在数据段（.data）

C语言的编译后执行语句都编译成机器代码，保存在.text段，已初始化的全局变量和局部静态变量都保存在.data段，未初始化的全局变量和局部静态变量一般放在一个.bss段里
.bss段只是为未初始化的全局变量和局部静态变量预留位置而已，它并不记录内容。所以它...]]></description><category></category></item><item><title><![CDATA[《程序员的自我修养---编译和链接》第二章总结]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105860396</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105860396</guid><author>weixin_42226134</author><pubDate>Thu, 30 Apr 2020 15:27:17 +0800</pubDate><description><![CDATA[被隐藏了的过程
gcc hello.c
./a.out

上述过程可分为4个过程：预处理，编译，汇编，链接
预编译-&gt;.i
预编译主要是以文件中‘#’开始的预编译指令

将所有的”#define“删除，并且展开所有的宏定义
处理所有条件预编译指令，比如#if #ifdef #dlif #else #endif
处理#include预编译指令
删除所有的// 和 /**/注释
添加行号和文件名...]]></description><category></category></item><item><title><![CDATA[《程序员的自我修养---温故而知新》第一章总结]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105846605</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105846605</guid><author>weixin_42226134</author><pubDate>Thu, 30 Apr 2020 13:44:09 +0800</pubDate><description><![CDATA[1.多道程序：当某个程序暂时无须使用CPU的时候，监控程序就把另外的正在等待CPU资源的程序启动，使得CPU能够充分利用起来
2.分时系统：每个程序运行一段时间以后都主动让出CPU给其他程序，使得一段时间内每个程序都有机会运行一小段时间
3.多任务系统：所有的应用程序都以进程的方式运行在比操作系统权限更低的级别，每个进程都有自己独立的地址空间，使得进程之间的地址空间相互隔离
4.抢占式：CPU由操...]]></description><category></category></item><item><title><![CDATA[BST树元素区间搜索问题]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105792151</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105792151</guid><author>weixin_42226134</author><pubDate>Mon, 27 Apr 2020 15:52:42 +0800</pubDate><description><![CDATA[由于BST的中序遍历的性质，遍历完成之后是一个有序的序列
所以，在有序的序列当中查找某个区间当中的元素是非常容易的，我们可以简单的运用递归来实现这个操作
//在区间[l...r]中搜索元素
void findValues(Node *node,int l,int r)
{
	if(node!=nulptr)
	{
		findValues(node-&gt;left,l,r);	//L

		//...]]></description><category></category></item><item><title><![CDATA[从你输入一个网址，到网页显示，其间发生了什么？]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105716478</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105716478</guid><author>weixin_42226134</author><pubDate>Thu, 23 Apr 2020 21:37:16 +0800</pubDate><description><![CDATA[1.解析URL
首先浏览器做的第一步工作就是要对 URL 进行解析，从而生发送给 Web 服务器的请求信息。
当没有路径名时，就代表访问根目录下事先设置的默认文件，也就是 /index.html 或者 /default.html 这些文件，这样就不会发生混乱了。
对 URL 进行解析之后，浏览器确定了 Web 服务器和文件名，接下来就是根据这些信息来生成 HTTP 请求消息了。

一个孤单 HT...]]></description><category></category></item><item><title><![CDATA[C++实现LRU（最久未使用）缓存算法]]></title><link>https://blog.csdn.net/weixin_42226134/article/details/105478397</link><guid>https://blog.csdn.net/weixin_42226134/article/details/105478397</guid><author>weixin_42226134</author><pubDate>Sun, 12 Apr 2020 22:53:40 +0800</pubDate><description><![CDATA[LRU缓存算法也叫LRU页面置换算法，是一种经典常用的页面置换算法，本文将用C++实现一个LRU算法。
LRU算法实现并不难，但是要高效地实现却是有难度的，要想高效实现其中的插入、删除、查找，第一想法就是红黑树，但是红黑树也是一种折中的办法。插入、删除效率最高当属链表，查找效率当属hash。所以，这里我们就将链表和hash结合起来，利用空间换时间的思想，实现LRU算法。
LRU具体概念就不列出了，...]]></description><category></category></item></channel></rss>