推荐文章 New Blog
方天引擎
2023年5月份,openEuler 正式成立 FangTian SIG。FangTian SIG聚焦FangTian视窗引擎,包含显示服务,窗口管理,图形绘制、合成、送显等模块,同时推出新型FT显示协议,探索解决Linux桌面环境体验不佳的问题。经过2个多月的开发、调试,FangTian SIG已在设备上流畅地运行Demo应用。本文将为大家介绍FangTian SIG最新进展,同时对FangTian视窗引擎做个全面解读。FangTian SIG的进展方天视窗引擎(下面简称方天引擎)已在设备上流畅的运行Demo应用:具体效果如上图所示:该Demo实现了3个窗口,其中包括两个clock窗口和一个背景窗口,用户可以通过控制鼠标,实现对窗口的拖动及缩放操作。上面的例子表明方天引擎初步具备如下能力:IPC通信能力:借助Binder技术在性能、稳定性、安全性等方面的优势,打通基于Binder的IPC...July 30, 2023, 4:03 p.m.作者:zachary分类:视窗阅读(1746)评论(0)
Git常用操作全解
Git常用操作 1. Git仓初始化 目录不存在 如果是通过github或是其他项目初始化Git仓,可以通过git clone命令 git clone https://github.com/ShaoboFeng/vimplus.git 这样初始化后会在当前目录下产生一个vimplus的目录,如果在命令之前目录已经存在,就会初始化失败。 目录已经存在 如果想要在一个已经存在的目录初始化Git仓,可以先进入对应目录,通过以下命令 git init git remote add origin https://github.com/ShaoboFeng/vimplus.git git fetch origin master 即可初始化完成。 2. Git 多仓操作 git 是一个分布式的代码存储方式,需要本地同远程仓配合。 git remote -v 用于查看远程仓地址 git remote ad...March 26, 2023, 6:13 p.m.作者:zachary分类:软件使用阅读(1698)评论(0)
C语言宏定义展开方式
测试环境Mac OS(Big Sur) + Apple clang version 12.0.5我们先说结论:**宏定义由外向内平行展开,当碰到##或着#宏,参数不再做宏展开**下面用例子说明示例#define CON_STR(a, b) a ## b #define STR(a) #a #define CALL_STR(arg) STR(arg) // CON_STR( CON_STR(1, 2), 3 ); // CON_STR( STR(1), 3 ); // CON_STR( CALL_STR(1), 3 ...Jan. 1, 2022, 4:32 p.m.作者:zachary分类:C语言阅读(2285)评论(0)
C++智能指针的内存角度的分析
写这篇文章是由于有个同事问了一个问题,虽然智能指针在C++11中就已经支持了,但是一直都没怎么用所以原理有些不太清楚,这里正好学习记录一下理解shard_ptr,我们先看一个例子(这里都使用C++17编译)编译命令:g++ -std=c++1z shard_ptr.cpp#include<iostream> #include<pthread.h> #include<semaphore.h> #include<unistd.h> using namespace std; class Test{ public: int x; &nbs...May 12, 2019, 1:11 p.m.作者:zachary分类:C++阅读(2499)评论(0)
kernel中信号量实现(二)
上一篇介绍了信号量可以使用waitqueue实现,这一篇主要讲waitqueue的实现,waitqueue故名思义就是等待队列。waitqueue在linux中的实现主要在下面文件中:include/linux/wait.h kernel/sched/wait.c一、先看数据结构struct __wait_queue_head { spinlock_t lock; ...Dec. 5, 2018, 2:55 a.m.作者:zachary分类:Linux相关阅读(2655)评论(0)
kernel中信号量实现(一)
kernel中很多地方使用了信号量机制,一个典型的实现就是内存回收的触发,在内存进入慢速路径后的第一件事就是唤醒kswapd工作。信号量的使用很简单,总结起来有下面几点:1、初始化信号量。wait_queue_head_t _wait; //变量定义 init_waitqueue_head(&_wait); //变量初始化2、工作线程一般是一个死循环,工作结束后调用wait,等待触发线程唤醒,唤醒后处理wait事件。while(1) { DEFINE_WAIT(wait); //定义临时变量 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRU...Nov. 27, 2018, 1 a.m.作者:zachary分类:Linux相关阅读(2737)评论(0)
Malloc Debug
翻译至:https://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README.mdMalloc Debug(内存调试)简介Malloc debug 是一种native层内存问题的方法。他可以帮助我们定位内存损坏、内存泄露、释放后再使用的问题。这个文档描述如何在Android N版本以后的Android系统中使用这个功能。对于老版本的malloc debug的方法见这个链接(https://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README_marshmallow_and_earlier.md)。当malloc debug功能使能后,系统增加了一个Hook层代替正常的内存分配调用。这里主要替换了下面的...May 1, 2018, 2:41 p.m.作者:zachary分类:Android阅读(7105)评论(0)
matplotlib与panel结合的动态图
下面的例子显示了python动态图的做法,可以适用于其他图标,例如柱状图等。#encoding=utf8 import matplotlib import wx import numpy as np matplotlib.use('WXAgg') from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas from matplotlib.figure import Figure import threading import time class CpuInfoWindow(wx.Frame)...Feb. 22, 2018, 8:39 p.m.作者:zachary分类:python小站阅读(2540)评论(0)
HW Hackathon 作品
作品github地址:https://github.com/ShaoboFeng/huawei2017_hackathon作品视频:...Jan. 7, 2018, 2:08 p.m.作者:zachary分类:AI阅读(2513)评论(0)
也来玩玩微信跳一跳小程序
安装iphone 自动化测试工具pip install facebook-wda安装libimobiledevicebrew install libimobiledevice安装WebDriverAgent确保已经安装Xcode开发工具brew install Carthagebrew install npmgit clone https://github.com/facebook/WebDriverAgent.git./Scripts/bootstrap.sh遇到问题参考https://testerhome.com/topics/7220实现截屏与点击屏幕c = wda.Client() s = c.session() def pull_screenshot(): &nb...Jan. 4, 2018, 12:32 a.m.作者:zachary分类:iOS阅读(2674)评论(0)