自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 254 扔鸡蛋

254. 丢鸡蛋楼有n层高,鸡蛋若从k层或以上扔,就会碎。从k层以下扔,就不会碎。现在给两个鸡蛋,用最少的扔的次数找到k。返回最坏情况下次数。样例给出 n = 10, 返回 4.给出 n = 100, 返回14.说明对于n=10, 一种找k的初级方法是从1、2...k层不断找。但最坏情况下要扔10次。注意有两个鸡蛋可以使用,所以可以从4、7、9层扔。这样最坏就只需要4...

2019-01-25 11:13:02 278

原创 110. 最小路径和

问题描述:给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。 注意事项你在同一时间只能向下或者向右移动一步动态规划..很简单的问题。这个题没啥注意的点,只能向右向下让题目变得很简单。本来考虑有没有更好的办法,结果提交是这个。。估计就是考察的动态规划。您的提交打败了 100.00% 的提交! int minPathSum(vec...

2018-12-20 10:32:01 107

原创 801.backpackx

题目描述:你总共有n元,商人总共有三种商品,它们的价格分别是150元,250元,350元,三种商品的数量可以认为是无限多的,购买完商品以后需要将剩下的钱给商人作为小费,求最少需要给商人多少小费 动态规划一维数组,当前钱数为n时能购买物品的最大价值。class Solution {public: int backPackX(int n) { // wr...

2018-12-19 17:33:53 151

转载 __kfifo_put和__kfifo_get

  最近了解无锁队列的时候,看了这个博主的文章,感觉这个设计挺巧妙的。有些地方我不是很理解,看了好几遍才能了解,所以在代码上加上一点自己的注释。 原作者提的in out指针绕回原点,一开始我理解成in指针会到out的前面,读取的时候循环找。后来发现其实不是这样的,因为做了取模,in/out无限增长也没有关系。--------------------- 作者:海枫 来源:CS...

2018-12-17 11:28:40 1200

原创 linux学习笔记-cache_reap()

最近看情景分析,说到kswapd中的kmem_cache_reap()会定期的回收空闲slab。但是在看2.6.11版本源码的时候发现没有对应的函数。在2.6.11源码找到一个应该是替代的函数cache_reap(),所以看了一下。下面是源码。 static void cache_reap(void *unused){ struct list_head *walk; /**...

2018-12-12 11:27:35 656

原创 技能系统的大概思路

最近在项目里负责技能系统相关的代码,大概总结下技能系统的思路。技能系统大概包括技能基类,技能调用接口,技能效果计算,技能状态等。首先来说一个技能释放的大概过程 :   1.首先获取对应的技能基类对象    2.并对这个对象使用对外接口来启动    3.进行目标搜索和弹道计算,计算技能释放有效性。    4.判断流程结束,进行技能状态加载。    5.所有技能状态都运行完...

2018-12-12 11:17:56 323

转载 ZZL

转载一篇关于字符串匹配算法ZZL的论文, 图片有点问题,将就着看吧,这个算法其实很简单!就是先统计特征串的首字符在主串中中的位置,然后每次匹配都是从存储的位置开始。在平摊意义下,还是很有效果的。  字号:大 中 小一种可做特殊用途的字符串匹配算法纪福全 朱战立(西安石油大学计算机学院,西安 710065)    摘 要   现有的字符串匹配算法按照模式串从左至右或从右至

2017-10-16 21:40:27 1213

转载 big.LITTLE --- ARM

在2013年,big.LITTLE 家族又增加了新的SoC实现,有2个Cortex-A15+3个Cortex-A7核的ARM的参考测试芯片TC2,以及在三星Galaxy S4手机中应用的Samsung-LSI的4个Cortex-A15核+4个Cortex-A7核的'Octa-core'芯片。Linaro在ARM的big.LITTLE SoCs上针对Linux和Android内核做了很多的性

2017-09-27 22:43:13 612

原创 进程生命周期

  --------------------------------------------  对于一个进程,基本概念我觉得就是一个资源分配单位。对于每一个进程都有对应的PCB(进程控制块),在linux下的PCB是task_struct。  对于task_struct,一开始我看源码的时候也是非常痛苦,看了这忘了那,一直都模模糊糊。所以总结之后,觉得得需要根据一个进程,需要有...

2017-09-15 22:26:15 866

转载 static_cast、dynamic_cast、const_cast和reinterpret_cast总结

转载自:http://www.jellythink.com/archives/205前言这篇文章总结的是C++中的类型转换,这些小的知识点,有的时候,自己不是很注意,但是在实际开发中确实经常使用的。俗话说的好,不懂自己写的代码的程序员,不是好的程序员;如果一个程序员对于自己写的代码都不懂,只是知道一昧的的去使用,终有一天,你会迷失你自己的。C++中的类型转换分为两种

2017-09-15 17:34:02 3325

转载 LCA最近公共父节点离线算法

转自http://www.cnblogs.com/JVxie/p/4854719.html首先是最近公共祖先的概念(什么是最近公共祖先?):    在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。    换句话说,就是两个点在这棵树上距离最近的公共祖先节点。    所以LCA主要是用

2017-09-08 15:13:04 398

转载 0,NULL,nullptr区别

C的NULL在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码:int *i = NULL;foo_t *f = NULL;实际上在C语言中,NULL通常被定义为如下:#define NULL ((void *)0)也就是说NULL实际上是一个void *的指针,然后吧void *指针赋值给int *和foo_t *的指针的时候,隐式

2017-09-07 21:59:52 275

转载 permutation sequence

Leetcode Permutation总结含其中四题:Next Permutation, Permutations, Permutations II, Permutation SequenceNext PermutationImplement next permutation, which rearranges numbers into the lex

2017-09-04 22:18:34 217

转载 Longest Repeating Character Replacement

Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at most k times. Find the length of a longest substring containing all repe

2017-09-03 13:29:05 275

原创 滑窗

做个记录,做了三四道题想的用动态规划,结果时间复杂度过大??然后试了滑窗就ac了。但是老是习惯先想全排列和动态规划,所以记一下加深印象,滑窗原理很简单,要么不断扩大,要么不断移动- -窗口范围取决于k或者你要比较的strlng size,类似我做到的题像是Permutation in String (字符串中的全排列)(题意即给定一个字符串s和一个子串p,然后p的全排列要是有一个是s的子串即返

2017-09-03 10:14:07 1630

原创 摩尔投票法

摩尔投票法 提问: 给定一个int型数组,找出该数组中出现次数最多的i

2017-09-01 21:14:15 444

转载 CMA

文章出处:在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用, 但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我们

2017-08-29 08:07:58 415

转载 为什么没有HIGHMEM

如果你稍微了解过Linux内核的内存管理,那么对内存分区的概念一定不陌生,Linux内核把物理内存分成了3个区,0 – 16M 为ZONE_DMA区,16M – 896M 为ZONE_NORMAL区,高于896M 为ZONE_HIGHMEM区我没有去考证过为什么要取896这个数字,但是可以肯定的是这样的划分在当时看来是合理的,然而计算机行业的发展今非昔比,现在4G的物理内存已经

2017-08-29 08:05:56 1225

原创 将一个线程绑定到特定 CPU上

As multi-core CPUs become increasingly popular on server-grade hardware as well as end-user desktop PCs or laptops, there have been growing efforts in the community (e.g., in terms of programming mode

2017-08-29 01:01:03 749

原创 马拉车算法

做到最大子回文字符串看到的一个算法。所以记一下。Manacher‘s Algorithm这个算法是用来统计最长线性回文字符串的。他先把字符串中间和两端分别插入了一个#,/*这样处理之后对于字符串无论奇数偶数的处理方法都是一样的了(我的理解)*/。建立一个array,size为处理后的string大小。对应的每个array[i]为以其为中点最大的半径r//若为1则为其自身。Eg: 

2017-08-23 15:45:43 504

转载 进程调度--CFS

之前看情景分析,调度是用的时间片的方式,但是看2.6源码的时候发现不是那么回事。。。后来又看了Linux内核分析才知道时间片的方法给淘汰了.............. Linux2.6.24内核采用分层的思想管理调度。可以看作两层,第一层被称为核心调度器,在核心调度器下面为调度器类。在调度器被调用时,它会查询调 度器类,得知接下来运行哪个进程。内核支持不同的调度策略(完全公平调度和实时调度等)

2017-08-17 00:28:36 183

转载 死锁及解决办法

进程死锁及解决办法操作系统 2009-09-24 16:48:58 阅读767 评论1   字号:大中小 订阅 一、要点提示(1) 掌握死锁的概念和产生死锁的根本原因。(2) 理解产生死锁的必要条件--以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。(4) 掌握死锁

2017-08-15 22:58:02 252

转载 do...while(0)...

原文地址:http://www.spongeliu.com/415.html觉得有意义就转了。。linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作

2017-07-10 22:45:12 161

转载 task_struct

最近看linux内存管理看到的这个结构体....然后了解了一下这个。        大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要的

2017-07-09 15:53:30 190

原创 随便记

Q:c/c++区别?A:重载。。void参数。。(空的话c++必须不能带参)。。结构不一样。。。引用。。。c++中明显的有封装特性。。c感觉是用在数据结构和算法上多一些。。。//面向对象和面向过程的区别。。。Q:指针引用区别?A:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。。

2017-07-02 05:07:30 178

原创 c++ 宏

记录一些宏的用法。。。1.防止多重包含。eg: #ifdef   _XXX_H#define _XXX_H/*....*/#endif很明白,就是防止多重引用include。。。2.条件编译#ifdef  _EXAMPLE...#endif如果定义了EXAMPLE宏 ,...部分就会被编译,否者不编译3.宏替换#define NUM

2017-06-28 22:48:17 202

转载 不管什么进程一旦进入内核就进入了系统空间都有相同的页面映射

看到内核详解上说不管什么进程一旦进入内核就进入了系统空间都有相同的页面映射,内核就不用cr3吗?实在搞不明白,希望大虾详细讲解一下|内核当然会用cr3,在每个进程的页目录项中,都把最后3-4G的页目录项映射到了同一物理内存空间,也就是说每个进程的页目录项中的3-4G的映像关系完全相同!!!!所以从任何一个进程在运行时进入内核空间,无非就两种情况:1.从系统调用进入内核态,此时内

2017-06-23 17:27:13 1036

转载 gcc和g++的区别

原文地址:http://blog.chinaunix.net/uid-23023613-id-88201.html。一:gcc与g++比较编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作

2017-06-01 02:57:19 162

原创 最大子段和

对于最大子段和,就是取一个数组中(包括负整数)a1,a2,a3,...,an中和最大的一段。想法很简单,两个变量M,N,每次加一个ai的时候先判断M是否大于0,大于的时候加上ai,否则等于ai,然后每次判断N是否小于M,是的话就保存M。代码实现如下。int MaxSubSum(int n,int *a){ int b = 0; int sum = 0; for (int i = 0;

2017-05-02 23:47:48 219

原创 二叉树的三种遍历

树的遍历有三种,前中后序遍历。以下分别用递归和非递归实现遍历。树的结构定义:typedef  struct BTNode{ElemType x;BTNode * leftchild;BTNode * rightchild;}一丶递归遍历前序递归遍历void PreOrder(BTNode * p){ if(p != NULL) {

2017-02-22 15:22:53 251

原创 listen函数和accept函数

对于listen和accept函数应该配套使用和理解listen函数原型:#includeint listen(int sockfd,int backlog);参考《Linux高性能服务器编程》上的解释: socket 被命名之后,还不能马上接受客户连接,需要系统调listen用来创建一个监听队列用来存放待处理的客户连接。对于各个参数:sockfd指

2017-02-20 01:42:47 489

原创 避免递归中的重复计算

原本的斐波那契递归:int Fib_1(int n) //斐波那契数列默认从1开始,所以结果是1,1,2,3,5,8,..{ if(n<=1) { return 1; } else { return Fib_1(n-2)+Fib_1(n-1); }}但是在多次计算后重复的值仍然重复计算。为了加快计算速度,采用添加一个数组保存之前重复出现的递归结果的

2017-02-11 22:00:42 1256

空空如也

空空如也

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

TA关注的人

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