<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[i_actor的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/i_actor</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; i_actor]]></copyright><item><title><![CDATA[《Unix系统编程手册》第四章 通用的I/O模型]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/132734026</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/132734026</guid><author>i_actor</author><pubDate>Mon, 11 Sep 2023 19:58:26 +0800</pubDate><description><![CDATA[open既能打开一个已存在的文件，也可以创造一个新文件。当调用open()创建新文件时，位掩码参数mode指定了文件的访问权限。如果open()未指定O_CREAT标志，则可以省略mode参数。flag参数除了使用文件访问标志外，还用了其他操作标志。通过fcntl()的F_GETFL操作可以获取到文件的访问模式。]]></description><category></category></item><item><title><![CDATA[《Unix系统编程手册》第三章系统编程概念学习]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/132698658</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/132698658</guid><author>i_actor</author><pubDate>Tue, 05 Sep 2023 20:14:29 +0800</pubDate><description><![CDATA[Unix系统编程第三章学习及总结]]></description><category></category></item><item><title><![CDATA[makefile学习（1）]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/132589586</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/132589586</guid><author>i_actor</author><pubDate>Wed, 30 Aug 2023 20:22:59 +0800</pubDate><description><![CDATA[学习makefile过程，并做一些简单的总结。]]></description><category></category></item><item><title><![CDATA[leetcode刷题-go（二）]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124830026</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124830026</guid><author>i_actor</author><pubDate>Tue, 17 May 2022 21:55:59 +0800</pubDate><description><![CDATA[leetcode21 合并两个有序链表
描述：将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
此题为简单题，没什么需要讲的，主要是为了熟悉go的代码。
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func mergeTwoLists(list1 *ListNode, list2]]></description><category></category></item><item><title><![CDATA[go后端学习-方法]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124829483</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124829483</guid><author>i_actor</author><pubDate>Tue, 17 May 2022 20:36:15 +0800</pubDate><description><![CDATA[方法
​		一个对象其实也就是一个简单的值或者一个变量，在这个对象中会包含一些方法，而一个方法则是一个一个和特殊类型关联的函数。一个面向对象的程序会用方法来表达其属性和对应的操作，这样使用这个对象的用户就不需要直接去操作对象，而是借助方法来做这些事情。
方法声明
​		在函数声明时，在其名字之前放上一个变量，即是一个方法。这个附加的参数会将该函数附加到这种类型上，即相当于为这种类型定义了一个独占的方法。
package main

import (
	"fmt"
	"math"
)

type Point ]]></description><category></category></item><item><title><![CDATA[leetcode刷题记录-go版本（1、20、53、70、121、136）]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124807177</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124807177</guid><author>i_actor</author><pubDate>Mon, 16 May 2022 20:20:27 +0800</pubDate><description><![CDATA[为了秋招，从今天开始每天至少在leetcode上刷五道题。同时为了加强go的学习，我准备后面做题先用go语言来做。由于今天是第一题，先做简单题就不写做题思路，直接写代码了。
//leetcode136
func singleNumber(nums []int) int {
	ans := nums[0]
	for i := 1; i &lt; len(nums); i++{
		ans ^= nums[i]
	}
	return ans
}


//leetcode121
func maxProfit(pr]]></description><category></category></item><item><title><![CDATA[go后端学习-函数]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124802860</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124802860</guid><author>i_actor</author><pubDate>Mon, 16 May 2022 16:41:17 +0800</pubDate><description><![CDATA[函数
​		函数可以让我们将一个语句序列打包为一个单元，然后可以从程序中其它地方多次调用。
函数声明
​		函数声明包括函数名、形式参数列表、返回值列表（可省略）以及函数体。形式参数列表描述了函数的参数名以及参数类型。这些参数作为局部变量，其值由参数调用者提供。返回值列表描述了函数返回值的变量名以及类型。如果函数返回一个无名变量或者没有返回值，返回值列表的括号是可以省略的。如果一个函数声明不包括返回值列表，那么函数体执行完毕后，不会返回任何值。
func name(parameter-list) (resu]]></description><category></category></item><item><title><![CDATA[go后端学习-第一节]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124675513</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124675513</guid><author>i_actor</author><pubDate>Mon, 09 May 2022 21:14:47 +0800</pubDate><description><![CDATA[​	学习完第一节课后，根据课程内容进行一个简单的总结。
基本格式
​		下面是一个最基本的hello world程序。其中package main表示该文件属于哪一个包，紧接着是import表示需要导入的包文件，fmt主要是输出到屏幕上；然后就是main函数。
package main

import "fmt"

func main() {
    fmt.Println("hello, world!")
}

​		Go语言主要有四种类型的声明语句：var、const、type和func，分别对应变量、]]></description><category></category></item><item><title><![CDATA[20220423-安卓基础学习（2）]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124370088</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124370088</guid><author>i_actor</author><pubDate>Sat, 23 Apr 2022 20:54:16 +0800</pubDate><description><![CDATA[Activity
创建一个Activity
​		当我们创建一个Activity后，都需要在AndroidManifest中进行注册才能生效
​		Activity的注册声明式放在标签中的。
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.uibestpractice"&gt]]></description><category></category></item><item><title><![CDATA[20220422-安卓基础学习(1)]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/124345621</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/124345621</guid><author>i_actor</author><pubDate>Fri, 22 Apr 2022 16:36:46 +0800</pubDate><description><![CDATA[Android基础
Android四大组件
​		Android四大组件分别是Activity、Service、BroadcastReceiver和ContentProvider。
​		Activity：应用程序的门面。
​		Service：后台运行
​		BroadcastReceiver：允许应用接收来自各处的广播消息
​		ContentProvider：为应用程序之间共享数据提供了可能
日志工具Log
​		Android中的日志工具类是Log，一共提供了5个方法来供我们打印日志。

Log.v]]></description><category></category></item><item><title><![CDATA[基于线程安全的栈和队列]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/120660536</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/120660536</guid><author>i_actor</author><pubDate>Fri, 08 Oct 2021 21:40:01 +0800</pubDate><description><![CDATA[基于线程安全的栈
template&lt;typename T&gt;
class threadsafe_stack
{
private:
    stack&lt;T&gt;data;
    mutable mutex m;

public:
    threadsafe_stack(){}
    threadsafe_stack(const threadsafe_stack&lt;T&gt;&amp; other)
    {
        lock_guard&lt;mutex&gt;lock(]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 反转链表、合并两个排序链表、树的子结构、二叉树的镜像、顺时针打印矩阵]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113703238</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113703238</guid><author>i_actor</author><pubDate>Fri, 05 Feb 2021 21:49:14 +0800</pubDate><description><![CDATA[反转链表
题目描述：
输入一个链表，反转链表后，输出新链表的表头。
示例：

采用头插法插入就行了。
代码：
/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(!pHead)return ]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 链表中倒数第k个节点]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113618109</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113618109</guid><author>i_actor</author><pubDate>Wed, 03 Feb 2021 19:40:15 +0800</pubDate><description><![CDATA[题目描述：
输入一个链表，输出该链表中倒数第k个结点。
示例：

本题在考虑效率的情况下，采用两个指针来遍历，快指针先前进k，然后两个同步前面，直到快指针走到了尾部停下来，然后返回慢指针。
代码如下：
/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindKthToT]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 调整数组顺序使奇位数位于偶数前面]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113617964</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113617964</guid><author>i_actor</author><pubDate>Wed, 03 Feb 2021 19:30:27 +0800</pubDate><description><![CDATA[题目描述：
输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，所有的偶数位于数组的后半部分，并保证奇数和奇数，偶数和偶数之间的相对位置不变。
本题方法听多了，可以采用冒泡(O(n2)),也可以插入。当然也可以用空间换时间。本题我就是采用空间换取时间的方法；
代码如下：
class Solution {
public:
    void reOrderArray(vector&lt;int&gt; &amp;array) {
        vector&lt;int&]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 数值的整数次方]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113617354</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113617354</guid><author>i_actor</author><pubDate>Wed, 03 Feb 2021 18:47:25 +0800</pubDate><description><![CDATA[题目描述：
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
示例：

本题就是求base的exponent次方，可以直接调用pow函数就行了。
代码如下：
class Solution {
public:
    double Power(double base, int exponent) {
    return pow(base, exponent);
    }
};


...]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 二进制中1的个数]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113617300</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113617300</guid><author>i_actor</author><pubDate>Wed, 03 Feb 2021 18:44:00 +0800</pubDate><description><![CDATA[题目描述：
输入一个整数，输出该数32位二进制表示中1的个数。其中负数用补码表示。
示例：

本题中就转化成二进制然后数1的个数就行了，当为负数的时候，用无符号int来表示int就行了。
代码如下：
class Solution {
public:
     int  NumberOf1(int n) {
         int count = 0;
         unsigned int num = n;
         while(num &gt; 0)
         {
         ]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 矩形覆盖]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113617247</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113617247</guid><author>i_actor</author><pubDate>Wed, 03 Feb 2021 18:39:39 +0800</pubDate><description><![CDATA[题目描述：
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形，总共有多少种方法？
示例：

本题我是通过找规律发现还是一个斐波拉契数列。
代码就比较简单了，如下：
class Solution {
public:
    int rectCover(int number) {
        int dp[1001] = {0, 1, 2};
        for(auto i = 3; i &lt;= number; i++)
          ]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 变态跳台阶]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113572437</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113572437</guid><author>i_actor</author><pubDate>Tue, 02 Feb 2021 19:30:13 +0800</pubDate><description><![CDATA[题目描述：
一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
示例：

本题中dp(n) = dp(n-1) + dp(n-2) + dp(n-3) + … + dp(1) + dp(0);(dp(0) = 1, dp(1) = 1)  《==》 dp(n) = 2 * dp(n-1)(n != 1)
代码如下：
class Solution {
public:
    int jumpFloorII(int number) {
        ]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 跳台阶]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113572202</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113572202</guid><author>i_actor</author><pubDate>Tue, 02 Feb 2021 19:10:23 +0800</pubDate><description><![CDATA[题目描述：
一只青蛙一次可以跳上1级台阶，也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法（先后次序不同算不同的结果）。
示例：

本题就是一个斐波拉契数列，即f(n) = f(n-1) + f(n-2)
代码如下：
class Solution {
public:
    int jumpFloor(int number) {
        int dp[10001] = {0,1,2};
        for(auto i = 3; i &lt;= number; i++)
       ]]></description><category></category></item><item><title><![CDATA[剑指Offer刷题 - 斐波那契数列]]></title><link>https://blog.youkuaiyun.com/i_actor/article/details/113572133</link><guid>https://blog.youkuaiyun.com/i_actor/article/details/113572133</guid><author>i_actor</author><pubDate>Tue, 02 Feb 2021 19:05:44 +0800</pubDate><description><![CDATA[题目描述：
大家都知道斐波那契数列，现在要求输入一个整数n，请你输出斐波那契数列的第n项（从0开始，第0项为0，第1项是1）。
n≤39
示例：

本题比较经典做法很多，由于n比较小，可以直接暴力就行。只要明白f(n)=f(n-1) + f(n-2)这一公式就行了。
代码如下：
class Solution {
public:
    int Fibonacci(int n) {
        int dp[50] = {0, 1};
        for(auto i=2; i&lt;= n; i++]]></description><category></category></item></channel></rss>