<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kingvingjames的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kingvingjames</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kingvingjames]]></copyright><item><title><![CDATA[基于剪枝的回溯法]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/123965077</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/123965077</guid><author>kingvingjames</author><pubDate>Tue, 05 Apr 2022 12:54:55 +0800</pubDate><description><![CDATA[主要内容
好久没上Leetcode，发现首页居然有一道中等题"全排列II"错了好多次一直没对，发现是带剪枝的回溯类型，做完了就稍微记录一下。
今天主要通过两个例题，一是回顾回溯法，二就是学会回溯的同时剪枝。
简单的全排列
力扣中的Q46，原题如下：

题目的温馨提示也很体贴地告诉了你数组中的各元素不相等，所以轮不到剪枝的技巧派上用场。
直接贴出代码：
class Solution {
public:
    vector&lt;vector&lt;int&gt;&gt; ans;
    vector&lt]]></description><category></category></item><item><title><![CDATA[吴恩达_MIT_MachineLearning公开课ch05]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/121283242</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/121283242</guid><author>kingvingjames</author><pubDate>Fri, 12 Nov 2021 12:07:15 +0800</pubDate><description><![CDATA[回顾神经网络
ch04我们实现了属于自己的神经网络。
一个完整的神经网络需要一个模型表示，比如网络层数及每一层的神经元个数。除此之外我们要保证网络的流动性，即实现前向传播和反向传播。
前向传播是比较简单的，即进行矩阵运算以及sigmoid激活函数处理。
反向传播需要用到链式求导法则，同时要求中间“误差”δ，需要自己好好理解。
将数据进行切分
我们按照惯例会把手上的数据按照6:2:2的比例划分成—训练集、可行集、测试集，英文分别为train、cross validation、test。
why？其实回想一下我]]></description><category></category></item><item><title><![CDATA[吴恩达_MIT_MachineLearning公开课ch04]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/121247255</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/121247255</guid><author>kingvingjames</author><pubDate>Wed, 10 Nov 2021 23:01:02 +0800</pubDate><description><![CDATA[前章回顾
在ch03中我们做了一个有趣的任务，就是做一个手写数字的分类。
我们的数字包含了0~9共10类，于是我们的第一思路是训练出10个二元线性分类器。
我们用一个大矩阵来存储每个线性分类器拟合出来的Theta，大矩阵的某一行就是专门为某一数字拟合出来的系数，当我们的原数据对应与系数相乘并且经过激活函数sigmoid之后就会得到属于此数字类别的概率。
同时我们初步认识了神经网络，知道其能去学习一些非线性的特征，其中的隐藏层hiddenlayers利用的是不再是我们直接喂入的数据了，最后的正确率十分可观。
]]></description><category></category></item><item><title><![CDATA[吴恩达_MIT_MachineLearning公开课ch03]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/121114730</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/121114730</guid><author>kingvingjames</author><pubDate>Wed, 03 Nov 2021 10:38:12 +0800</pubDate><description><![CDATA[回顾逻辑回归
逻辑回归常用于分类问题。里面常用到的一系列公式函数不能忘记。
比如：
交叉熵损失函数用于度量当前拟合系数theta的损失值、
Sigmoid激活函数，用于将值压缩至(0，1)区间内作为概率处理、
为损失函数以及对应的求导公式加上一个惩罚项等。
但我们上一轮做的是二分类问题，就是问题只有两种解，今天是一对多问题。
多元分类
也称一对多分类。
就是有好几类等待我们进行划分，我们的策略是：
将某一类的标签置为1，另外所有的标签置为0训练出一个二分类“分类器”。
说白了就是一组系数，这组系数可以求解出]]></description><category></category></item><item><title><![CDATA[从BinarySearchTree到RedBlackTree之AVL]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/121081613</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/121081613</guid><author>kingvingjames</author><pubDate>Mon, 01 Nov 2021 15:46:50 +0800</pubDate><description><![CDATA[AVL树
没什么好多说的，就是可以优化我们在BST中遇到的有序数组形成的"树"退化成链表的情况。
从中引入了旋转、平衡的概念，并不打算解释，单纯练练代码吧。。。。
最后还有一个大头RedBlackTree，不知道鸽多久。。
code
一开始是LeetCode检查平衡的一个题目，挺好的，建议做一做！
// LeetCode 110 判断一棵树是否为平衡树，带领我们初步地认识AVL TREE

/**
 * Definition for a binary tree node.
 * struct TreeNod]]></description><category></category></item><item><title><![CDATA[吴恩达_MIT_MachineLearning公开课ch02]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/120999520</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/120999520</guid><author>kingvingjames</author><pubDate>Wed, 27 Oct 2021 21:56:00 +0800</pubDate><description><![CDATA[回顾回归
我们在ch01使用gradient descent[梯度下降]，实现了linear regression[回归]问题。
简单地来说，我们在读入数据后提取出X[Varibale,factors etc]作为我们的变量，或者说就是影响一个问题的一系列因素 和 Y[标签]问题的解。
我们定义了损失函数，函数只包含了变量theta，我们的目标就是用损失函数对theta进行求导，迭代更新不断缩小损失值直到最后收敛。
回归常可以用于的问题就是预测，比如原本数据中给你了一大堆影响房价的因素[X:Factors]]]></description><category></category></item><item><title><![CDATA[从BinarySearchTree到RedBlackTree之BST]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/120923925</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/120923925</guid><author>kingvingjames</author><pubDate>Sat, 23 Oct 2021 18:15:48 +0800</pubDate><description><![CDATA[起源
起源是看侯捷大佬的STL源码解读+Linux内核设计的时候都遇到了红黑树的问题，想必其作为强大的底层支撑的存在是很重要的。
但基于那天翻阅知乎被某条牛逼评论刺激到后，才有了循序渐进完成全部的想法。

Binary_Search_Tree
二叉搜索树，二叉排序树等等名称。
其核心就是左子树的key&lt;根的key&lt;右子树的key，在其操作中属delete操作最为复杂。
其包含的一些结论，我们的二叉搜索树按照树的中序遍历来就是一个有序的升序序列，有兴趣的话可以去做一些比如 (根据某两个遍历顺序还原]]></description><category></category></item><item><title><![CDATA[C开源项目-TinyHttp解读(下)]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/120856560</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/120856560</guid><author>kingvingjames</author><pubDate>Sat, 23 Oct 2021 17:45:37 +0800</pubDate><description><![CDATA[中上小结
前面两部分，我们主要分析了服务器端的一些基本功能和义务。
服务器端要把自己绑定到一个众所周知的端口上去，要去监听客户端的请求。服务器端要学会辨认客户端发送来的Http报文头，识别两种主要方法“GET、POST”，可以发送一些不同的应答报文(此处以代码表示)“404，200”。
千万不要担心我们迟迟未分析simpleclient，其用到的我们在server全看过的。
cgi是什么
我也不知道，我也是现看的，还处于一知半解状态。
传送门：CGI是什么
官方地下个定义：CGI是通用网关接口。
学过计网的]]></description><category></category></item><item><title><![CDATA[C开源项目-TinyHttp解读(中)]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/120816355</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/120816355</guid><author>kingvingjames</author><pubDate>Mon, 18 Oct 2021 00:15:26 +0800</pubDate><description><![CDATA[解读(上)的总结
上篇解读主要讲解了server服务器端的几个流程，不要担心我们的simpleclient复杂程度，其远远比不上server，只要把server读懂那个就是piece of cake。
代码分析

accept_request()函数分析

/**********************************************************************/
/* A request has caused a call to accept() on the serv]]></description><category></category></item><item><title><![CDATA[C开源项目-TinyHttp解读(上)]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/120795441</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/120795441</guid><author>kingvingjames</author><pubDate>Sun, 17 Oct 2021 18:09:56 +0800</pubDate><description><![CDATA[项目简介
此项目可以自行在GitHub上进行下载，作者的ReadMe文档也写得是比较详细的。这里用到了较多的Unix编程，不会的可以一点一点去查。
（实名感谢我们家杰佬发给我的APUE，可以当字典查）
项目内容
其实就是实现了一个轻量级服务器的功能，同时源代码也包含了一个simpleclient的文件，用于生成一个用户端。这和计网课上的用Java写TCP/UDP很像，但C会显得更麻烦一些，但总认为基于Unix给人一种高大上的感觉。
代码分析
我这儿就直接按照作者在README中给出的阅读顺序来浏览了。
由于]]></description><category></category></item><item><title><![CDATA[吴恩达_MIT_MachineLearning公开课ch01]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/119804262</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/119804262</guid><author>kingvingjames</author><pubDate>Thu, 19 Aug 2021 22:09:28 +0800</pubDate><description><![CDATA[之前一直和Tensorflow、PyToch一些框架进行纠缠。现在显然幡然醒悟，这样是不对的，我们不是去学怎么搭别人的顺风车，我们要做的是自己造轮子造车。
任何课程评价都可以说是对这一门五星级课程的亵渎了。
概念
讲述了机器学习的几种模式，包括了监督学习、无监督学习、半监督学习等。
监督学习就是我们知道了输入与输出的关系，比如等会作业里要做的假设了一个代价函数，而我们的目标就是不断去缩小这个损失。
其他的先不说，这一章主要讲的就是监督学习下的回归问题，而且是线性回归，也就是Linear regression]]></description><category></category></item><item><title><![CDATA[OS-Revision---内存管理]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118310131</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118310131</guid><author>kingvingjames</author><pubDate>Mon, 28 Jun 2021 23:02:02 +0800</pubDate><description><![CDATA[这是OS的最后一次复习了。
程序装入、存储结构
存储结构
存储器的多层结构，这一点在计算机系统的“存储器管理”章节也会涉及到。我们只需要了解概述即可，并不要理解硬件的工作原理。
层级结构呈金字塔形，从上向下依次应为：
1.CPU寄存器
2.Cache高速缓存
3.主存储器
4.磁盘缓存（非实际存储介质）
5.固定磁盘
6.可移动存储介质
从上到下的一个趋势就是，造价(成本)越来越便宜、存储容量越来越大、速度越来越慢。其中前四层是属于操作系统的存储管理的范围，所以断电则信息不复存在。而低二层则由设备管理，信息]]></description><category></category></item><item><title><![CDATA[OS-Revision---进程同步]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118253873</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118253873</guid><author>kingvingjames</author><pubDate>Sun, 27 Jun 2021 20:05:53 +0800</pubDate><description><![CDATA[信号量有一道12分的大题，好好复习，好好复习！
我们在进程章讲过如果程序并发执行的话或许会失去“可再现性”，当时用的例子就是：A执行x = x + 1，B执行print(x)，x = 0会产生不同结果。
但并发执行显然又是能提高CPU运行效率的，所以我们现在就要考虑一种机制可以使既能并发执行也不失“可再现性”。
并发进程间的制约关系

简单来说：
间接制约就是控制进程对临界资源的访问，对于这类资源需要由系统统一分配。
直接相互制约就是使诸进程按序执行。
生产者-消费者问题
说到临界资源和信号量处理的经典例题]]></description><category></category></item><item><title><![CDATA[OS-进程]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/117635242</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/117635242</guid><author>kingvingjames</author><pubDate>Fri, 25 Jun 2021 11:42:27 +0800</pubDate><description><![CDATA[操作系统–进程
进程概念
程序的顺序执行：仅当前一操作(程序段)执行完后，才能执行后继操作。
如下图所示：

我们当然知道需要按序执行S1-&gt;S2-&gt;S3。因为b需要a，c需要b。
顺序执行的特征：
顺序性：即下一操作需要等待上一操作的完成。
封闭性：程序在运行时会独占资源。
可再现性：重复执行同一程序会产生相同的结果。
根据上述所述，我们引出了“前趋图”的概念。
图中，我们用一个结点表示一个进程。而用有向边“-&gt;”表示一种偏序关系，例如Pi-&gt;Pj中我们称Pi是Pj的直接前趋，Pj]]></description><category></category></item><item><title><![CDATA[OS-Revision--文件系统]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118162772</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118162772</guid><author>kingvingjames</author><pubDate>Thu, 24 Jun 2021 13:05:00 +0800</pubDate><description><![CDATA[27号还有最后一个实验报告要交。
“综合实验二”要实现的是基于C语言的文件系统设计。
那么我们肯定要先了解文件系统概念，架构，功能才行啦。
文件、记录和数据项
这三个概念需要理解一下后面会频繁涉及。
我们用一个班级的概念来形象解释各项的含义。
文件：是指具有文件名的若干相关元素的集合。对应于班级的概念，我们可以把一个文件视为包含所有学生信息的集合体-----正好是一个班级。
记录：一组相关数据项的集合，包含了一个对象的某个方面的属性。对应于上述，我们可以把一个学生视为一条记录。
这其中还有一个概念是“关键字]]></description><category></category></item><item><title><![CDATA[OS-Revision-处理机调度]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118072956</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118072956</guid><author>kingvingjames</author><pubDate>Sun, 20 Jun 2021 22:15:13 +0800</pubDate><description><![CDATA[处理机调度
这一章相对来说比较简单，主要考点就是调度算法。
而这些算法都是建立在初等数学的基础上的，不会特别难，一定要注意理解并且做题一定要细心。
概念
调度的本质就是一种资源分配。
而我们设计调度算法其实就是在设计一种处理机的分配策略。
调度层次
1.高级调度：
实现的功能是根据算法，将处于后备队列的作业从外存调入内存。同时为其创建进程、分配资源、放入就绪队列。
以作业为对象。
2.低级调度
低级调度就是我们的进程调度，其实就是根据算法从我们的就绪队列中挑选出进程分配处理机资源进行处理实现。
以进程为对象]]></description><category></category></item><item><title><![CDATA[CSAPP-Revision-ch03（四）---浮点代码目前不知道到底考不考]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118059214</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118059214</guid><author>kingvingjames</author><pubDate>Sun, 20 Jun 2021 14:17:55 +0800</pubDate><description><![CDATA[终……终于要结束啦！
当然啦，痛苦的复习季才刚刚开始哈哈。
栈帧结构
我们都知道C语言的一个大特性就是函数（Function）。
对于函数，我们都知道我们要转移控制权，我们需要把控制转移到调用的函数里。
我们的调用方应该可以向被调用方传递参数，而函数也应该能够返回值，这就是传递数据。
同时我们的被调用方也可以进行分配和释放内存。
对于这么一种抽象，我们称之为“过程”。
我们用”栈“这种后进先出的数据结构来模拟”过程“。
我们用下面这张经典的图来体现很多内容：

这是一个栈，栈地址是向低地址方向（栈“顶”方向]]></description><category></category></item><item><title><![CDATA[CSAPP-Revision-ch03（三）]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118034045</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118034045</guid><author>kingvingjames</author><pubDate>Sat, 19 Jun 2021 18:01:36 +0800</pubDate><description><![CDATA[预计第三章会在第四次完全结束。
今天先跳过“栈帧结构”一节，因为发现作业题里好多关于“结构体 struct”和联合体“Union”部分的。
昨日循环复习
循环是很重要的一个部分，其已经相对是指令集合的一个使用了。而在这前面基本都是单条指令的学习和运用。
下面来看这样一道题：

和昨日的有异曲同工之妙，但刚好题型是反过来的，我们需要写汇编。
我们一开始让栈指针rsp减了0x10，就是十进制下的16。
其实就是刚好是4个int数据，4 × sizeof(int) = 4 * 4 = 16
所以接下来就是连续的四]]></description><category></category></item><item><title><![CDATA[CSAPP-Revision-ch03（二）]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/118002417</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/118002417</guid><author>kingvingjames</author><pubDate>Fri, 18 Jun 2021 00:11:06 +0800</pubDate><description><![CDATA[这是昨天的战果。

废话不多说，继续……
跳转指令
设想我们的高级语言程序里是不是经常会有“if  else if  else”等条件语句，我们通过设置这些条件有时候就需要指令的跳转执行。
比如我们不满足if的条件，就得跳跃，跳到else里面执行，不能顺序执行if里的内容。
我们通过“jmp”来实现这一目的。
直接的jmp指令是无条件跳转的，这种无条件跳转又分为两种类型:
1.直接跳转
比如： jmp *%rax，我们就跳转到%rax寄存器包含的地址上
2.间接跳转
比如：jmp *(%rax)，我们读出%]]></description><category></category></item><item><title><![CDATA[CSAPP-Revision-ch03（一）]]></title><link>https://blog.youkuaiyun.com/kingvingjames/article/details/117960497</link><guid>https://blog.youkuaiyun.com/kingvingjames/article/details/117960497</guid><author>kingvingjames</author><pubDate>Thu, 17 Jun 2021 00:10:18 +0800</pubDate><description><![CDATA[程序的机器级表示
上来就是chapter3属实是有点刚。
主要这门课也是6.30就考，感觉OS应该会较简单，多复习一下这个先。
先来张图心里有个13数。

因为老师留下了两份作业，所以会采取复习到哪对应到作业上写题的方式。
一次性当然也复习不完，好运！

...]]></description><category></category></item></channel></rss>