既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- 构建和安装Anbox:- 进入克隆的存储库:cd anbox- 创建并进入构建目录:mkdir build && cd build- 运行CMake命令以配置构建:cmake …- 运行构建命令:make- 运行安装命令(需要管理员权限):sudo make install
- 配置内核模块:- 运行以下命令以加载Anbox内核模块:sudo modprobe ashmem_linux && sudo modprobe binder_linux- 为了确保每次系统启动时都加载这些模块,你可以将它们添加到/etc/modules文件中。
- 启动Anbox:- 在终端中运行anbox session-manager命令以启动Anbox。- 你可以在应用程序菜单中找到Anbox图标并点击它来启动。
请注意,Anbox需要一些特定的硬件和软件支持才能正常运行,例如KVM(用于虚拟化)和OpenGL ES 3.0(用于图形加速)。确保你的系统满足这些要求。此外,Anbox仍然处于开发阶段,可能会遇到一些问题和限制
解决
查看内核安装 : ls -alh /dev/binder /dev/ashmem
删除
使用–remove选项删除错误的PPA:如果您之前尝试添加了错误的PPA,您可以使用sudo add-apt-repository --remove ppa:morphis/anbox-support命令来删除该PPA。
安装 waydroid
- sudo apt install curl ca-certificates -y
- curl https://repo.waydro.id | sudo bash
- sudo apt install waydroid -y
源错误 —— 博客
n:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Ign:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Ign:12 https://ppa.launchpadcontent.net/christian-boxdoerfer/fsearch-stable/ubuntu lunar InRelease
Ign:13 https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu lunar InRelease
Ign:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Ign:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Get:16 http://archive.ubuntu.com/ubuntu focal/universe DEP-11 48x48 Icons [3016 kB]
Ign:12 https://ppa.launchpadcontent.net/christian-boxdoerfer/fsearch-stable/ubuntu lunar InRelease
Ign:13 https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu lunar InRelease
Ign:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Ign:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Get:17 http://archive.ubuntu.com/ubuntu focal/universe DEP-11 64x64 Icons [7794 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal/universe DEP-11 64x64@2 Icons [44.3 kB]
Ign:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
Get:5 http://archive.ubuntu.com/ubuntu focal/universe Translation-en [5124 kB]
Err:12 https://ppa.launchpadcontent.net/christian-boxdoerfer/fsearch-stable/ubuntu lunar InRelease
Could not connect to ppa.launchpadcontent.net:443 (2620:2d:4000:1::3e). - connect (113: No route to host) Could not connect to ppa.launchpadcontent.net:443 (185.125.190.52), connection timed out [IP: 185.125.190.52 443]
Err:13 https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu lunar InRelease
Unable to connect to ppa.launchpadcontent.net:https: [IP: 185.125.190.52 443]
Err:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Unable to connect to ppa.launchpadcontent.net:https: [IP: 185.125.190.52 443]
Err:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Unable to connect to ppa.launchpadcontent.net:https: [IP: 185.125.190.52 443]
Ign:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
Err:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
404 Not Found [IP: 185.125.190.39 80]
Ign:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
Err:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
404 Not Found [IP: 185.125.190.39 80]
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://repo.waydro.id lunar InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E406D181DCEE19C
E: The repository 'https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
geduer@ulan:~$ sudo vim /etc/apt/sources.list^C
geduer@ulan:~$ sudo vim /etc/apt/sources.list
需求 8.4
Host+Del键表示键盘上的Ctrl+Alt+Del组合
- 解决 klioeye抢占 windows Ctrl键 的权限kiloeye_keyboard_call.c
- 增加菜单 调用函数
ID_KEYBOARDEVENT_INSET
ID_KEYBOARDEVENT_PRINTSCREEN
#define ID_KEYBOARDEVENT_ALTPRINTSCREEN 40008
#define ID_KEYBOARDEVENT_CTRL_BREAK 40009
#define ID_KEYBOARDEVENT_HOST_DELECT 40010
insert 的值错了
if (GetKeyState(VK_CONTROL) & 0x8000) {
pk.flags |= HID_KB_LEFT_CTRL;
}
if (GetKeyState(VK_MENU) & 0x8000) {
pk.flags |= HID_KB_LEFT_ALT;
}
if (GetKeyState(VK_SHIFT) & 0x8000) {
pk.flags |= HID_KB_LEFT_SHIFT;
}
case VK_INSERT:
pk.keypress[0] = 0x0049;
代码规范
- 命名
- 涉及到指针函数 + 报错提示
- 传固定值 用宏定义
- 固定 !! 不写恶心代码
- GDB ! !
- evtest
id_ app 热键
linux 报错 改为
if(nkm_handle == 0) {
fprintf(stderr, "ERROR: Failed to open keyboard device. \n");
exit(EXIT_FAILURE);
}
c a T
window 千里眼 接口开发
sudo ./kiloeye -v 调用 ctrl + v 键
sudo ./kiloeye -c 调用 ctrl + c 键
-i insert 键
-h ctrl+alt+insert键
-b break 键
-a alt + prtsc 键
-p prtsc 键
/*
* MS_Data_Pack[0] 是 Button 按钮位
* MS_Data_Pack[1] X 轴方向位移
* MS_Data_Pack[2] Y 轴方向位移
* MS_Data_Pack[3] 滚动方向
*
* MS_Data_Pack[0] :
* bit 0 : Button left
* bit 1 : Button right
* bit 2 : Button mid
鼠标发送给PC的数据每次4个字节
BYTE1 BYTE2 BYTE3 BYTE4
定义分别是:
BYTE1 –
|–bit7: 1 表示 Y 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|–bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|–bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动
|–bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动
|–bit3: 恒为1
|–bit2: 1表示中键按下
|–bit1: 1表示右键按下
|–bit0: 1表示左键按下
BYTE2 – X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
BYTE3 – Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
BYTE4 – 滚轮变化。
*/
#define MS_LDOWN 0b00000001 // 左键按下
#define MS_RDOWN 0b00000010 // 右键按下
#define MS_MDOWN 0b00000100 // 中键按下
#define MS_XDOWN 0b00001000 // X 按钮按下
#define MS_X_NEGATIVE 0b00010000 // X 坐标变化量为负数
#define MS_Y_NEGATIVE 0b00100000 // Y 坐标变化量为负数
#define MS_X_OVERFLOW 0b01000000 // X 坐标变化量溢出
#define MS_Y_OVERFLOW 0b10000000 // Y 坐标变化量溢出
#define MOUSEEVENTF_MOVE 0x0001 /* 鼠标移动 */
#define MOUSEEVENTF_LEFTDOWN 0x0002 /* 左键按下 */
#define MOUSEEVENTF_LEFTUP 0x0004 /* 左键弹起 */
#define MOUSEEVENTF_RIGHTDOWN 0x0008 /* 右键按下 */
#define MOUSEEVENTF_RIGHTUP 0x0010 /* 右键弹起 */
#define MOUSEEVENTF_MIDDLEDOWN 0x0020 /* 中键按下 */
#define MOUSEEVENTF_MIDDLEUP 0x0040 /* 中键弹起 */
#define MOUSEEVENTF_XDOWN 0x0080 /* X 按钮按下 */
#define MOUSEEVENTF_XUP 0x0100 /* X 按钮弹起 */
#define MOUSEEVENTF_WHEEL 0x0800 /* 滚轮滚动 */
#define MOUSEEVENTF_HWHEEL 0x1000 /* 水平滚轮滚动 */
#define MOUSEEVENTF_MOVE_NOCOALESCE 0x2000 /* 不合并鼠标移动事件 */
#define MOUSEEVENTF_VIRTUALDESK 0x4000 /* 映射到整个虚拟桌面 */
#define MOUSEEVENTF_ABSOLUTE 0x8000 /* 绝对移动 */
在 C 语言中,可以使用互斥锁(mutex)来实现多线程加锁。互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。您可以使用 <pthread.h> 库中的 pthread_mutex_t 类型来定义一个互斥锁变量,然后使用 pthread_mutex_init 函数来初始化它。在需要加锁的地方,您可以使用 pthread_mutex_lock 函数来加锁,而在需要解锁的地方,您可以使用 pthread_mutex_unlock 函数来解锁。
下面是一个简单的示例,演示了如何在 C 语言中使用互斥锁:
复制
上面的代码定义了一个互斥锁变量 lock,并在 main 函数中使用 pthread_mutex_init 函数对其进行了初始化。然后创建了两个线程 t1 和 t2,它们都会执行 thread_func 函数。在 thread_func 函数中,我们使用 pthread_mutex_lock 函数对互斥锁进行加锁,然后执行临界区代码,最后使用 pthread_mutex_unlock 函数对互斥锁进行解锁。
希望这个示例能够帮助您理解如何在 C 语言中使用互斥锁来实现多线程加锁。如果您还有其他问题,欢迎继续咨询!😊
guvcview: symbol lookup error: /home/geduer/backup_guvcview-src-2.0.8/gview_render/.libs/libgviewrender-2.1.so.2: undefined symbol: nd_trace_i
(最后遇到的bug)
学到了什么
- 沟通很重要 多沟通 多总结
- 遇到问题不会就多问
- 收敛一下脾气,学会容忍
- 多利用 stfw & gpt
- 多规划
- 第一次去一线城市,开阔了眼界,
- 可以的话周末多出去玩玩,劳逸结合!!
- 面试建议就是提前, 多面 ,多复盘!!##
放点实习的图片
a87cf4180e020a87acb377bcfd8590f.jpg
54cffc36fc62a08fde2e6c9f06dd281.jpg
当时投递的面经
百度测试开发一面
- 俩个项目介绍 以及 测试方面的问题
- 讲一下输入url 发生了什么
- 介绍一下共享指针
- 介绍一下内存管理
- 共享指针 引用计数 涉及到 线程安全的问题
- 讲一下static 和 const 的区别 修饰 全局变量 用在什么方面
- 介绍一下C++ 三大特性 (封装继承多态)
- python shell 方面的
- 常用的linux命令
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
linux命令
[外链图片转存中…(img-d81GxdkQ-1715667402498)]
[外链图片转存中…(img-JXaafd8j-1715667402498)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新