自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 线程安全之可见性

线程安全问题可见性问题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入可见性问题你好! 这是你第一次使用 M...

2019-07-23 23:49:40 318

原创 Linux内核分析学习总结

重点内容 “不识庐山真面目,只缘身在此山中”,是我之前对于linux的感觉。Linux内核分析这门课程刨去了Linux的“皮肉”,更深层次的剖析了Linux的运行原理。但是课程又不止于Linux这个操作系统而已,好似一杯美酒,如一杯下肚,不得其味,需要细细品味,方得醇香。每周的课程并不长,越往后就越要花功夫。实验报告:Linux内核分析(一)之“愚蠢”的计算机Linux内核分析(二)

2017-04-14 16:08:32 584

原创 Linux内核分析(八)之调兵遣将

一、进程的分类 在Linux系统中,根据进程的特点,可以把进程分为3大类:交互进程、批处理进程、守护进程。交互进程是由shell启动的进程,它既可以在前台运行,也可以在后台运行。交互进程在执行过程中,交互进程在知性过程中,要求与用户进行交互操作。简单来说,就是用户需要给出某些参数或者信息,进程才能继续执行。批处理进程与windows原来的批处理很类似,是一个进程序列。该进程负责按照顺序启动其它

2017-04-13 21:36:09 405

原创 Linux内核分析(七)之待时而动

一、从代码到运行 简单来说,代码无非就是一堆文字,是“死”的,当它经历一系列的过程之后,方是可以运行的程序,变成了”活“的。 二、ELF目标文件 ELF全称Excuteable and Linkable Format,可执行和可链接的格式。以下是常见的ABI目标文件的格式。(linux下为ELF,windows下为PE) a.在ELF格式的目标文件里面有三

2017-04-09 23:20:42 380

原创 Linux内核分析(六)之”父“与”子“

一、了解PCB 操作系统具有三大功能:进程管理、内存管理以及文件系统。其核心当属进程管理。那么何为进程呢?详情请度娘。如果还是不解,那么按下Ctrl+Alt+Delete进入任务管理器,这下便一目了然。简单来说进程就是在运行的程序。 操作系统好比一个城市,进程就像来来往往的人群。我们会用很多的词汇来描述一个人。高的,矮的,胖的,瘦的等等。那么,我们用什么东西来描述一个进程呢?答案是进程控制块

2017-04-02 23:03:16 456

原创 Linux内核分析(五)之有始有终

一、命运枷锁 每一个系统调用都有他们无法摆脱的命运—开始(entry)和结束(iret),无论在中间的过程是如何。他们的“始”与“终”都别无二致。 二、实验与分析 实验目的:使用gdb跟踪分析一个系统调用内核函数 (系统调用号39,创建文件夹) 实验步骤: 在test.c中加入如下代码int MkDir(){ int flag=mkdir("/home/shiyan

2017-03-26 22:50:23 478

原创 Linux内核分析(四)之“暗流涌动”

一、拨云见日 身为程序员,我们绕不开系统调用,但是我们往往都是通过一个”中间人”—-库函数与其打交道。 我们调用一个库函数也许看起来非常简单,但是其真正的实现细节,并非我们看起来那样的”风平浪静”,其内部往往”暗流涌动”。 用户态:Linux以 0级来表示用户态,在用户态中,我们的行为受到系统限制。 内核态:Linux以 3级来表示用户态,在内核态,我们可以访问任意的物理地址。二、实验与

2017-03-19 18:49:26 389

原创 Linux内核分析(三)之从“头”开始

一、真容初现 终于走进了Linux内核代码了。Linux作为操作系统,源码肯定十分十分庞大。要了解全部的实现代码,这也不现实。弱水三千,只取一瓢饮。了解一些小的片段对我们来说亦是大有裨益。 传送门二、实验与分析 实验目的:使用gdb跟踪调试内核从start_kernel到init进程启动 实验步骤: 1.跟踪调试内核 -S 冻结CPU,-s 打开远程调试端口(默认使用1

2017-03-10 10:58:02 271

原创 Linux内核分析(二)之“复杂的操作系统”

一、内容简介 在有万经之源之称的《易》中有”太极生两仪,两仪生四象,四象生八卦”这一说法,再复杂的东西其核必简。毫无疑问,计算机的设计亦遵循这一规律。计算机的核心由“0”和“1”组成,但是构建于计算机之上的操作系统确十分复杂。 二、两把宝剑 计算机有三个法宝:存储程序计算机、函数调用堆栈、中断机制。操作系统有两把宝剑:中断与恢复现场,或许将其称作剑与鞘更为贴切。因为中断与恢复都依赖一个数据结构

2017-03-05 11:15:59 808

原创 Linux内核分析(一)之“愚蠢”的计算机

1.冯诺依曼体系结构不远的将来,计算机的发展就会迈入一个新的时代,一个属于人工智能(Artificial Intelligence)的时代。哪怕是今天今天计算机是显得如此聪明,譬如前些时间比较火的阿尔法狗。哪怕是普通的计算机也仿佛对你了如执掌,他知道你喜欢吃什么,知道你喜欢买什么,知道你喜欢看什么。立足现在,回溯过去,正如老师在课程中引荐的资治通鉴的一句话:天下难事必作于易,天下大事必作于细。我们从

2017-01-02 16:17:40 417

原创 小论软件工程(C编码实践篇)

以往我对代码的理解很是浅显,无非实现基本功能,写一些略显高级的算法,开发项目。自认为代码不就那么回事嘛。但是越攀高峰,越觉自己之渺小。要想一览众山小,还得步步往前走。当初在微博中看到一段话是这样描述软件的,代码最长只能活五年,五年之后你写的代码将毫无用处。虽然这句话无法求证,但是一方面体现了软件行业的更新十分迅速,另一方面不免扪心自问,我写的代码能活五年不?软件工程处处体现着思想,设计则是思想的载体

2016-11-12 11:59:54 422

原创 06-图1 列出连通集 (25分)

题目输入: 第一行:给出N个顶点,E条边 以下E行给出每条边的两个端点 题目输出: 分别输出DFS、BFS的结果代码如下:#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 10#define true 1#define false 0typedef int Bool;typedef int Ve

2016-05-29 22:25:59 945

原创 05-树7 堆中的路径 (25分)

题目如下 分别有三行输入 第一行:输入堆中节点的总个数N、输入要遍历节点的总个数M。 第二行:输入N个的节点数据 第三行:输入M个节点的下标(打印出从该下标到根的节点数据) 题目主要涉及到最小堆的定义与操作,代码如下:#include<stdio.h>#include<stdlib.h>#define MinData -10001 #define MaxSize 1001typed

2016-05-27 16:34:25 723

原创 04-树5 Root of AVL Tree (25分)

题目描述:题目大意应该很好理解,关于平衡二叉树的插入与调整。#include<stdio.h>#include<stdlib.h>#define Null -1typedef struct AVLNode{ int Data; struct AVLNode *Left; struct AVLNode *Right; int Height;}AVLTree;A

2016-05-23 20:51:11 374

原创 List Leaves (25分)

原题描述如下:List Leaves (25分) Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case,

2016-05-20 16:37:24 717

原创 1003. 我要通过!(20)

主要理解的难点是在第3个条件 假设左边A的数量为a,中间的为b,右边的为c,满足a*b=c这个条件的为正确的#include<stdio.h>#include<string.h>int main(){ int n; scanf("%d",&n); char word[n][110]; int i; for(i=0;i<n;i++) {

2016-04-22 15:07:19 353

原创 1002. 写出这个数 (20)

注意这里切不可使用基本的数据类型来处理,甭管什么double,long long都无法处理10的100次方。应该是用数组来处理,后面的就比较简单了。#include<stdio.h>#include<math.h>#define M 105int main(){ char n[M]; scanf("%s",n); int i; int sum=0;

2016-04-22 15:02:37 284

原创 1001. 害死人不偿命的(3n+1)猜想 (15)

1001. 害死人不偿命的(3n+1)猜想 (15)#include<stdio.h>int main(){ int n; int cnt=0; scanf("%d",&n); while(n!=1) { if(n%2==0) { n/=2; } else

2016-04-22 14:54:46 248

原创 安卓性能优化之视图优化

书接上回,在安卓开发中一个运行正确的应用程序并非就是完美的,甚至可以这样讲:世界上并不存在完美的安卓应用程序。所谓大成若缺,缺憾提供了进步的动力,有缺憾才有进步,进步之路亦是无穷尽的。今日就来讲讲安卓性能优化的另一个方面——视图优化。 1.打开开发者选项,并开启一下选项。 启动应用程序。 其中红色的表明该区域存在 4x 过度绘制,这是明显的视图优化不良的表现。 查看代码,可发现在la

2016-04-20 10:17:55 422

原创 安卓性能优化之内存管理

**安卓性能优化之内存管理** 凡物讲究“物尽其用”,将某些东西发挥它最大的功效可谓是“功德圆满”,在安卓开发中内存的使用上非常契合这一理念,毕竟内存是很有限的,一旦超过限度会造成很多错误以及一些让人反感的卡顿现象,所以要坚决反对一切“站着茅坑不**”的现象。1.运行MemoryBugs程序点击STARACTIVITYB按钮 LeakCanary立即给出内存泄露提示 进入详情页面显示出

2016-04-14 19:13:50 2449

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除