Rise的自留地

记录生活中的点滴,分享编程技术和游戏开发经验。

0%

一、配置环境

1
2
3
4
sudo apt install git-core gnupg flex bison gperf build-essential \
      zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
      lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev \
      libncurses5 libxml2-utils python xsltproc unzip

二、配置环境变量.bash_profile

1
2
3
4
5
6
7
# Compiler cache
export USE_CCACHE=1
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
export PATH=~/Documents/android/bin:$PATH
export ANDROID_JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH=$ANDROID_JAVA_HOME/bin:$PATH
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

四、下载AOSP源代码 • 下载repo并设置权限

在同一个Android.mk中编写就行:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
LOCAL_PATH:= $(call my-dir)

#此段是预编译第三方库部分
include $(CLEAR_VARS)
LOCAL_MODULE := libaspmodule
LOCAL_MODULE_TAGS := optional
#LOCAL_SRC_FILES := libaspmodule.so
#32位、64位两者都编译
LOCAL_MULTILIB := both 
LOCAL_SRC_FILES_arm:= armeabi-v7a/libaspmodule.so
LOCAL_SRC_FILES_arm64:= arm64-v8a/libaspmodule.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_MODULE_STEM :=$(LOCAL_MODULE)
LOCAL_MODULE_SUFFIX := $(suffix $(LOCAL_SRC_FILES))
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_PREBUILT)

#此段是预编译第三方静态库部分
include $(CLEAR_VARS)
LOCAL_MODULE := libnexsound
#LOCAL_SRC_FILES := libnexsound.a
#32位、64位两者都编译
LOCAL_MULTILIB := both 
LOCAL_SRC_FILES_arm:= armeabi-v7a/libnexsound.a
LOCAL_SRC_FILES_arm64:= arm64-v8a/libnexsound.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_SUFFIX:=.a
include $(BUILD_PREBUILT)

#此段是调用前面第三方库编译JNI生成a和so部分
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
LOCAL_SRC_FILES:= com_ecovacs_lib_digmic_DigMic.c
LOCAL_MODULE := libdigmic
LOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsa libaspmodule
LOCAL_STATIC_LIBRARIES := libnexsound
LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

OS_NAME=$( cat /etc/os-release | grep ^NAME | cut -d'=' -f2 | sed 's/\"//gI' )

case "$OS_NAME" in
    "CentOS Linux")
        sudo yum install ntpdate ntp -y

        sudo timedatectl set-timezone UTC
        sudo ntpdate -u ntp.aliyun.com time.windows.com time.apple.com time.google.com time.cloudflare.com
        sudo hwclock --systohc # 写入硬件

        sudo systemctl enable ntpd
        sudo systemctl start ntpd
        ;;
    "Ubuntu" | "Linux Mint")
        sudo apt install ntpdate ntp -y

        sudo timedatectl set-timezone UTC
        sudo ntpdate -u ntp.aliyun.com time.windows.com time.apple.com time.google.com time.cloudflare.com
        sudo hwclock --systohc # 写入硬件

        sudo systemctl enable ntp
        sudo systemctl start ntp
        ;;
esac

killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

今天下班后收拾东西时,看到很久没有使用的移动硬盘,通电后在资料中翻出这样一段话,从04年到11年的几乎每个压缩包中都有。 但从12年往后就越来越少,最近这几年就不在加这个注释,一是压缩软件由之前的winrar换成了7zip,系统慢慢换成linux,二是一直在忙于生计,似乎离理想越来越远。 今年碰到疫情,在老家待了几个月,觉得现在的状态似乎不是自己想要的,其实包括最近这两年,似乎一直有这样的想法。 那么自己的想要的到底是什么呢? 十岁时的电视里成功经理人的梦想?还是十五岁时看到的介绍比尔盖茨的用技术改变世界的梦想? 是刚工作时的CTO?还是最近的多多赚钱? 似乎都是,又似乎都不是。 没工作时,想着先找个工作,养家糊口。 有工作时,想着能不能做的更好一些,最后发现努力半天,因为诸多原因一次次报废。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
    int strStr(string haystack, string needle) {
        int n = haystack.size(), m = needle.size();
        if (!m) return 0;
        if (!n) return -1;
        for (int i = 0; i < n - m + 1; ++i)
        {
            int j = 0;
            for( ; j < m; ++j)
            {
                if(haystack[i + j] !=  needle[j])
                    break;
            }
            if (j == m)
                return i;
        }
        return -1;
    }
};

时间复杂度 $O(M*N)$

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
--QPTreasureDB为需要清除日志的数据库名称
USE [master]
GO
ALTER DATABASE QPTreasureDB SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE QPTreasureDB SET RECOVERY SIMPLE   --简单模式
GO
USE QPTreasureDB 
GO
DBCC SHRINKFILE (N'QPTreasureDB_Log' , 11, TRUNCATEONLY) --设置压缩后的日志大小为11M,可以自行指定
GO

USE [master]
GO
ALTER DATABASE QPTreasureDB SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE QPTreasureDB SET RECOVERY FULL  --还原为完全模式
GO