首页
学习
活动
专区
工具
TVP
发布

Felix的技术分享

专栏作者
43
文章
79378
阅读量
28
订阅数
《一个操作系统的实现》笔记(6)--进程
---- 我们可以把一个单独的任务所用到的所有东西封装在一个LDT中,这种思想是多任务处理的雏形。 多任务所用的段类型如下图,使用LDT来隔离每个应用程序任务的方法,正是关键保护需求之一:
felix
2018-07-02
8820
《自制搜索引擎》笔记
第1章 搜索引擎是如何工作的 搜索引擎的基础是应用于信息检索、数据库等领域的信息技术。 1-1 理解搜索引擎的构成 1-2 实现了快速全文搜索的索引结构 利用全扫描进行全文搜索 grep就是从头到尾扫
felix
2018-07-02
2.4K0
simple-mock-api
项目中有一个Activiy需要轮询多个接口,实时刷新数据。这里很多业务逻辑都需要依赖当前的状态,所以简单写了一个服务端,用于生成一些mock data,并且支持数据实时刷新。 项目地址:simple-mock-api 挂到腾讯云上就可以公网访问了。 ---- simple-mock-api Use json-server make this simple mock api server. Usage checkout this project,and cd type npm install in termi
felix
2018-07-02
6690
JVM的简单实现
---- 本文介绍java虚拟机的一些知识,并以jvmgo为例介绍一些虚拟机的简单实现。jvmgo是用Go语言实现的java虚拟机,其作者说这个项目的主要目的是学习Go和JVM,所以只是一个toy,对于破除JVM的神秘感还是很有帮助的。 class类文件结构 使用java编译器(java程序用javac,Groovy程序用groovyc编译器)可以把java代码编译位存储字节码的class文件,虚拟机并不关心class文件的来源是何种语言。这种做法达到了语言无关性的目的。另外有各种可以运行在不同操作系统上的
felix
2018-06-19
6580
《一个操作系统的实现》笔记(7)--输入/输出系统(I/O)
键盘 很简单,只要设置8259A芯片的键盘端口的handler处理函数就可以了。 键盘敲击的过程 键盘编码器,用于监视键盘的输入,并把适当的数据传送给计算机。 键盘控制器,用来接受和解码来自键盘的
felix
2018-06-13
7070
Poj第1083题--Moving Tables
Poj第1083题–Moving Tables 原题 Moving Tables Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. The floor has 200 rooms each on the north side and south side along the corridor
felix
2018-06-13
6390
LeetCode第207题--Course Schedule
LeetCode第207题–Course Schedule 原题 给出课程总数,用不同整数编号表示不同课程,用一个二维数组表示多组先修课程的顺序对。 比如:有2门课,要学课程1必须先学课程0,这是有效的。 2, [[1,0]] 如果有2门课,要学课程1必须先学课程0,要学课程0必须先学课程1,这是无效的。 2, [[1,0],[0,1]] 需要完成的就是这个方法: public boolean canFinish(int numCourses, int[][] prerequisites) {
felix
2018-06-12
6590
【LeetCode】Merge Intervals
【LeetCode】Merge Intervals 题目 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 分析 先对intervals集合按start从小到大排序,last变量用于保存可能插入到结果集中的元素,遍历每一个集合中的元素,如果符合合并的条件,将last和当前元素
felix
2018-06-12
5360
Programming Assignment 2 Seam Carving 暴力实现
Programming Assignment 2 Seam Carving 暴力实现 Robert Sedgewick教授在Coursera上开了一门算法课,这是图论中的一道编程作业题。 问题概述 图像由像素构成,可以看成是一张二维数组,其中的存储着Color,这样每个位置都有相应的颜色,就可以表示一张图片了。 这道题目的目的是resize图像,每次删除一行或一列颜色值最不明想的像素。 图像在二维数组中的表示 : (255,101,51) (255,101,153) (25
felix
2018-06-12
6470
【LeetCode】Letter Combinations of a Phone Number
【LeetCode】Letter Combinations of a Phone Number 题目 在手机九宫格键盘上输入一串数字,给出可能打印出来的字符串的集合。 分析 先做一个map将数字映射到键盘上相应的字母集合。 把按键顺序看成深度优先遍历的深度,每次dfs将深度d+1直到d=按键字符串的长度未知,此时即完成了一次按键可能的输出。 实现 static Map<Integer, Character[]> map = new HashMap<Integer, Character[]>();
felix
2018-06-12
7340
Python断点调试
很多项目是用python写构建脚本的,比如微信最近开源的终端跨平台组件 Mars 本文将以mars为例简单介绍下如何用PyCharm对python进行断点调试。 ---- 导入代码 open整个m
felix
2018-06-08
1.6K0
spdlog源码学习
spdlog是一个用c++11实现的高性能日志库。 接入方便,功能丰富,代码可读性较高。 ---- Features Very fast - performance is the primary goal Headers only, just copy and use. Feature rich using the excellent fmt library. Extremely fast asynchronous mode (optional) - using lockfree queues an
felix
2018-06-08
2.1K0
xlog接入方案
mars 是微信最近开源的终端基础组件,是一个使用 C++ 编写的基础组件。 xlog是其中一个可单独使用的高性能日志模块。 本文将简单介绍下xlog的特点,并给出一个自定义的输出到文件的策略
felix
2018-06-08
4K0
Docker简单使用
史上最简单Android源码编译环境搭建方法这篇分享介绍了借助Docker来编译Android源码,Docker可以直接把编译工具链和Ubuntu系统整体打包,保证了编译环境和官方的一致。 我用的macOS,之前尝试过编译AOSP,出现各种问题,采用虚拟机的方式也常常编译不过,看到可以用docker的新方式,打算尝试用一下。但是从我实际操作来看,docker在mac上是很慢的,并不比虚拟机快多少,在编译AOSP时也会造成卡死,因为在mac平台上docker是要运行在一个虚拟机上的。在尝试docker编译
felix
2018-06-08
1.1K0
在macOS 10.12 上编译 Android 5.1
官方文档虽然也有介绍,但是macOS平台上的编译环境问题还存在很多坑。本文介绍下如何在在macOS 10.12 上编译 Android 5.1源码,导入源码到Android Studio中,把系统烧录到Nexus6手机中。 ---- 搭建编译环境 创建分区 AOSP源码需要一个支持大小写敏感的文件系统,100G是至少要的。官网有详细的介绍,这里简单列一下。 $ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g
felix
2018-06-08
1.9K0
用Android Studio调试Framework层代码
Android程序员不得不知的调试技巧。 本文以webview loadUrl和域名解析为例,介绍配合使用LLDB和Android Studio调试Framework代码的技巧。 java 层调试
felix
2018-06-08
4.5K3
理解mmap
在接入日志组件xlog的工作中,对mmap内存映射加深了了解,分享一下学习心得。 1.一个Linux进程的虚拟内存 如图展示了一个Linux进程的虚拟内存。 虚拟的意思是进程以为自己有这么一
felix
2018-06-08
5.9K0
Stetho的通信原理
Stetho简介 stetho是Facebook推出的安卓APP网络诊断和数据监控的工具,接入方便,功能强大,是Android开发者必备的友好工具。 主要功能包括: 实时查看App的布局 网络请求抓包 数据库、SharedPreferences文件内容监控 自定义dumpapp插件 对于JavaScript的支持 具体的使用方法可以看这篇文章。 本文主要想讲一下自定义dumpapp插件的通信原理。 dumpapp插件示例 在主机上给设备发送一个files tree命令,得到如下结果: $ ./dum
felix
2018-06-08
1.9K0
C++与汇编小结
C++与汇编小结 ---- 本文通过C++反编译,帮助理解C++中的一些概念(指针引用、this指针、虚函数、析构函数、lambda表达式), 希望能在深入理解C++其它一些高级特性(多重继承、RTTI、异常处理)能起到抛砖引玉的作用吧。 指针和引用 引用类型的存储方式和指针是一样的,都是使用内存空间存放地址值。 只是引用类型是通过编译器实现寻址,而指针需要手动寻址。 void funRef(int &ref){ ref++; } int main(){ //定义int类型变量
felix
2018-06-08
1.2K0
理解对C++裸指针释放后重用的问题
本文将以Android 2.2-2.3上的一个zergRush漏洞为例,分析指针释放后重用的问题。 zergRush是Android 2.2-2.3上的一个漏洞,主要问题就在于指针的释放后重用。 zergRush利用了libsysutils库提供的Framework套接字的通用接口。 程序从套接字收到的消息中出抽取出的文本命令会导致栈缓冲区溢出,进而造成释放后重用问题。 具体地,是vold后台程序调用了libsysutils.so,bug出在FrameworkListener.cpp的dispa
felix
2018-06-08
1.6K0
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
【玩转EdgeOne】征文进行中
限时免费体验,发文即有奖~
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档