- 博客(38)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 码农直播写代码?是个不错的副业!
推一下自己的公众号:功夫宅以及自己的个人网站,下面是两个案例儿童入门代码:https://gongfuzhai.com/net-income-the-coding-train/全栈码农:https://gongfuzhai.com/net-income-derek-banas/Java web全站码农:https://gongfuzhai.com/net-income-java-b...
2019-01-19 21:57:48
2069
1
原创 leetcode题目思路以及部分解答(完)
阿里的笔试过了~~虽说感觉被虐了..但是还是过了..得好好准备面试.过几天就面试,虽然感觉没有准备好,这次就当刷经验了。过不了还有明年3月和4月~不过做得时候也有些急,每天都分配了任务,强迫当天完成,总是做到1-2点..所以有些题目代码自己没想出就百度了,不像以前多少还自己写一次,这次百度个思路,看看算法,差不多的改改就交了..由于前一篇有一部分分开存在家里了,所以只好一起发了.leetcod
2014-09-07 19:40:10
5119
原创 leetcode题目思路以及部分解答(四)
找题用ctrl+f来找。做到这里开始有点扛不住了。。有些算法是百度的,面试的话应该用不到那么复杂的算法,以后有时间再补吧。1.Remove Duplicates from Sorted List II这题比较简单,估计就是指针操作想不清楚吧。就是要注意这一题是把所有重复的点都去掉。class Solution {public: ListNode *deleteDupl
2014-09-07 19:12:17
1109
原创 leetcode题目思路以及部分解答(三)
发现leetcode上面很多题目和《程序员面试金典》上的很一致。当然,有些答案还是看讨论里的好,毕竟书的作者有其自身的局限~1.Subsets这一题我准备用原来那个可以按长度来的全排来做的。。但仔细一想,发现效率太低了。。后来想,对于排序的数组,只用不断的把数字从小大到的填进去就可以了。这也是讨论里的思路。class Solution {public: vector >
2014-08-26 15:18:13
1176
原创 leetcode题目思路以及部分解答(二)
又刷了30题了,这速度还不错。因为还有别的东西要复习,所以进度并不快。感觉还是能学到很多新东西的。早知道这个就不用去其他地方刷了。这个难度不高,还可以知道哪些情况没考虑。比其他OJ那种封闭式的好多了。还是进入正题吧。1.Rotate Image这个做过两三次了,但每次还是得重新开始推导。。这次又推导了很久。。不过好在做过,代码也写得比较简洁。主要思路就是第一层循环按层次深入。第
2014-08-19 10:11:03
1058
原创 leetcode题目思路以及部分解答(一)
为了进好公司这一个多月就开始得抽时间刷leetcode了。。感觉这个OJ很不严谨。。。好多边界条件都没说清处。。不过还好可以推测。唯一的好处就是不用自己编译调试,可以直接在网上显示出结果。当然,复杂一点的题目为了调试自己构建题目的结构也是很麻烦的。。。所以我发现提交里面错误好多。。。。。再就是在笔记本上会时不时的变卡。。。每次提交都得等个3,4分钟才成功。要不就502错误。。。我的题目
2014-08-10 16:54:29
2027
原创 C语言中一些乱七八糟的用法与细节(不断更新)
在学校里用C语言比较多,这篇是平时攒下的。有些内容在工作后可能会很常见,但是不用容易忘,所以就写篇博客吧。
2014-08-07 16:24:39
4596
原创 Linux编程---线程
首先说一下线程的概念.其实就是运行在进程的上下文环境中的一个执行流.普通进程只有一条执行流,但是线程提供了多种执行的路径并行的局面.同时,线程还分为核心级线程和用户级线程.主要区别在属于核内还是核外.核心级线程,地位基本和进程相当,由内核调度.也就是说这种系统时间片是按线程来分配的.这种线程的好处就是可以适当的运用SMP,即针对多核CPU进行调度.用户级线程,在用户态来调度.所以相对来
2014-06-21 08:11:19
1049
原创 Linux编程---套接字
网络相关的东西几乎都是建立在套接字之上.所以这个内容对于程序员来说还是蛮重要的啊.其实套接字也就是一个特殊的设备文件而已,我始终不能明白为什么要叫套接字.这么个奇怪的名字.不过还是就这样算了吧.关键还是编程上.由于其重要性,我还是写的详细一点吧. 一.套接字核心函数: int socket(int domain,int type,int protocol);这个函数在通信域d
2014-06-20 21:24:09
1174
原创 Linux编程---信号处理
信号是一种异步的进程间通信的方式.但是这种通知方式能交换的信息很少.只能说给一个事件的标志.类似单片机中的中断,强迫进程停止做当前应当做的事情,而去执行中断执行程序. 信号的产生有如下几种:1.用户按下了某个终止键,如ctrl-\或ctrl-c.是由终端程序向当前进程发送一个中断信号.2.程序异常.比如除零错误.3.kill函数向其发送了一个终止信号4.进程向自己发送信号.
2014-06-19 23:15:14
887
原创 Linux编程---时间相关
时间相关的东西很难分类.所以我就写一篇好了. 一.系统时间1.time函数time_t time(time_t *tloc);double difftime(time_t time1,time_t timeo);time返回系统自1970年1月1日以来,经历了多少秒的时间.同时可以通过返回值和参数来得到.difftime则返回两个参数的时间之差.并且结果是作为双精度浮点
2014-06-18 21:56:54
906
原创 Linux编程---进程通信
Linux的通信方式主要有分类有下面几种:-匿名管道和FIFO有名管道-消息队列,信号量和共享存储-套接字.对于套接字的进程通信,我就留在套接字的文章中再写了. 一.管道管道是最古老的进程通信机制了.提供进程间的单向通信.1.创建管道int pipe(int fdes[2]);实际上管道通过参数返回读和写的两个文件描述符.相当于是打开了两个文件吧.但是这个文
2014-06-17 14:24:01
979
原创 Linux编程---一些系统相关的说明
原来自学过几次linux,但都没怎么实践(其实这次也是...).很多时候知识点还是混乱的.经过上学期的汇编总结,发现总结一下知识点还是蛮有好处的.自己在整理过程中,相当于是反刍了一次知识.也把遇到的一些问题更深入的探究了一番,所以这次继续上次的形式~ 1.一些系统相关的说明性的东西1.1头文件保留字的规则:--以字母E后随一数字或大写字母开的头名字,保留作为错误代码名--以’l
2014-06-17 14:21:56
595
原创 Linux编程---I/O部分
很多函数都可以在网上找到,也比较基础,所以原型只给出了函数名.具体用到再man吧.输入输出是个很重要的一块内容.几乎网络相关的东西基本都是靠底层IO调用来实现的.好吧.还是先踏踏实实的介绍一下C标准库中的IO函数吧.个别函数我也是第一次见.对于不太常见的我就多解释一下,反正通常这些函数百度一下就清楚了,我就不多解释了~1.C标准库IO函数1.1流的关闭开启与重定向fopen:打
2014-06-16 14:29:21
1060
原创 Linux编程---进程基础
进程这个概念大家都很熟悉了吧...我就不多说了.. 首先是进程环境.也就是Shell相关的内容.这都是很基础的我就挑一些我自己都不太清楚的写写.一.命令行参数POSIX对命令行的语法约定:1.实用程序名至少两个,至多9个字符,且只包含小写字母和数字.(Linux应该不止9个吧.我觉得这是Unix下shell的规定).2.选项名必须是但个字母或者数字,-W选项保留给
2014-06-15 21:14:53
1109
1
原创 软件优化理论基础以及方法论小结.
就像我其他博文中说的,对于软件的优化除开算法,全部都是为流水线服务的.所以优化的时候要时刻记住一这点.由于优化的东西比较杂,我写的不是很好,所以在文章的最后,我会试着提炼出一些通用性的原则.由于之前在WPS上写的,所以代码没有用模版来排版,各位看官就将就着看吧..我也只是为了提炼一次知识,真正的优化还是认真看一遍书来的好. 有哪些方法优化软件?通常有两种方式,一种是通过编译器,另一
2014-06-05 10:09:26
3443
原创 程序是怎么从代码到执行的
一个月多月没发文章了,虽然有几篇在草稿箱里一直删改,但是太水.没好意思发出来.关于这个文章的问题是早就想问了的,但是以前一直基础不够,弄不明白.这学期刚好学了体系结构,也看CSAPP,总算可以说是算比较清楚的理解了程序从编译到运行的整个过程的了.于是写个文章整理整理这些知识. 如上图所示,基本经过这么几个过程.当然主要是指C/C++这种语言,对于java这种虚拟机上运行的语言还多
2014-06-03 20:35:16
12598
1
原创 CPU中的一些执行机制
虽说上了半学期的体系结构的课程.但是似乎只听老师讲,总是无法满足我很多的问题.并且总觉得学了没用.但上网查了查,发现体系结构还是蛮重要的,关键在于CPU执行程序的过程.几乎所有机器相关的优化都是靠CPU的相关知识.所以还是有必要多写一篇来记录一下所学的知识. 到底CPU是怎么工作的?从物理角度来说的话,CPU会把二进制代码,转化为它引脚上的高低电平的变化.通过管脚的高低电平,控制外
2014-06-03 19:44:42
4560
原创 写bootloader介绍
这两个星期就写个loader就写了很久。开始是因为图像坑,后来又被读盘坑,现在又被跳转坑。。代码也卡在进入保护模式之后,跳转到内核的地方。。所以我下面只能简单的讲一下保护模式到底是什么和写它的流程。
2014-03-18 22:37:43
1527
原创 自己写操作系统---bootsector篇
其实博主本来想在寒假自己写一个操作系统的,高高兴兴的影印了本《一个操作系统的实现》。然后又去图书馆借来《30天自制操作系统》和《X86/X64体系探索编程》,结果还是被自己的懒惰给打败了。。。原本我感觉自制力还不错的,好歹春节前也看了很多东西,但是过了一个春节就懒散了。。当然也有一部分原因是因为《30天》写的实在是太乱了。。缺少一个理论的上的指导和概括,看的云里雾里。再就是汇编。。
2014-03-07 16:57:17
2290
原创 快速排序的非递归算法(使用队列)
前些天学习了程序栈空间的大小是会有上限的。看来递归的算法永远无法应用到大规模的数据上,毕竟栈空间有限。这几天写了点算法题目,刚好涉及到如何广度优先搜索。想起自己学数据结构的时候就想快排能否以非递归式方式实现。于是自己就写了个非递归的快排算法,以供学习。 我搜了一下网上的快排非递归算法,几乎都是使用栈来模拟的。但其实完全不必使用栈,队列一样可以。一开始觉得栈可能消耗最大空间比队列少一点,但其实
2014-01-13 20:07:24
5037
1
原创 汇编总结-第三部分_2_GNU下优化代码
通常汇编写的代码具有非常好的速度。但是难懂,所以人们就选择先编译高级语言,然后再修改汇编代码来达到优化目的。但实际上想要写的比编译器好是需要很多的练习的。对于我们这些普通的汇编使用者,就了解点简单的技巧和编译器如何优化的知识就够了。 GNU的编译器一般提供了3个级别的优化。注意优化之前先保存一遍原来的代码。因为编译器貌似会直接把你的代码改了。。 编译器提供的-o –o2-o3到
2014-01-10 14:19:27
1163
原创 汇编总结-第三部分_1_内联汇编
想要用汇编实现的代码有哪几种方式?1. 直接从头开始用汇编写。2. 先写好C程序,然后通过-S选项来修改。3. 直接在C中代码嵌入汇编的代码,也就是所谓的内联汇编 如何实现内联汇编代码?asm(“”);你在” ”之间所写的内容就是你加入的汇编代码。要求如下:1. 指令必须包含在引号里面2. 如果包含的指令超
2014-01-10 14:17:44
930
原创 汇编总结-第二部分_3_使用函数
汇编函数是如何声明的?很简单用.type命令来创建函数的标签,如下:.type fun1, @functionfun1:保存寄存器等值。函数体ret Ps:函数一开始可以使用finit命令来清空FPU寄存器。还有pusha和popa很方便的让你全部的寄存器值一次性都保存在堆栈中和取出 那么如何访问汇编函数呢?直接call+函数标签 就OK了。
2014-01-10 14:15:44
975
原创 汇编总结-第二部分_2_数据处理
关于流程控制的太过简单,所以就在这里简单介绍一下。 汇编之中想要转变位置只能使用类似C语言中goto的模式,也就是跳转指令跳转指令分为下面3类。·短跳转 偏移量128字节之内的跳转。·近跳转 所有其余跳转·远跳转 按段来跳转 实际上偏移量128字节就说明了其控制偏移大小的是一个8位二进制所表示的范围。C语言中的switch最多也只支持256个跳转,我估计可能和这
2014-01-10 14:07:18
1007
原创 汇编总结-第二部分_1_数据传送
这一篇主要说明数据传送的问题。 首先,在AT&T汇编中的数据也是分类的。我记得学win16汇编的时候没有这个概念,只知道可以按寄存器的高低位来传送数据。下面是win32汇编的几种命令: .ascii文本字符串(不带’\0’).asciz以空格符结尾的文本字符串.byte字节值
2014-01-10 14:06:23
958
原创 汇编总结-第一部分_3_汇编的程序组成
下面进入汇编程序怎么编程的介绍。 之前我就说过汇编的段一般分为3种·数据段 .data·bss段 .bss·文本段 .text 注意这里的段都可以多次出现.C语言中的全局变量和静态变量都是存储于这个bss段。所以你应该猜到了吧?对于bss段而言,全部内容都会用0来初始化。并且注意bss段并不包含在可执行文件中。但是正如之前所强调的.BSS存放的是未初
2014-01-10 14:05:12
870
原创 汇编总结-第一部分_2_linux下汇编的相关工具
一个汇编程序员至少应该有下面这些工具:1.汇编器2.连接器3.调试器汇编器自然不用说,就是将汇编代码转换成目标代码的程序.注意是目标代码,windows平台上的可能会理解成最终的二进制代码,原因其实就是你们所用的IDE真的是给你们做了太多隐藏的工作..连接器就是将目标代码连接起来的工具.从而组成可执行文件. 汇编语言程序主要由3部分组成,1.操作码助记符2.数据
2014-01-10 14:03:56
1019
原创 汇编总结-第一部分_1_AT&T汇编的基本介绍
刚看完汇编,由于是借学校的书,所以就把关键知识点写在博客上了.参考的是richard blum的,看豆瓣上面分数蛮高的.主要平台是linux下的AT&T汇编..我学汇编主要是想可以看懂汇编代码的意思.其实所谓优化也不过是调调代码顺序,用点比较特殊的指令,如果不是很有经验的话,可能人来优化的还不如编译器..我就把汇编当作以后学新语言了解编译器在干什么的一个工具就可以了.
2014-01-10 14:02:00
1216
原创 关于程序的bss段,堆区,栈区的一些学习。
写汇编总结引发的思考,总结这东西还真是得多写。 在学习汇编的时候,书上并没有区分堆栈的区别。并且没有说明bss和堆不是一个东西,搞得我以为队和bss就是一个东西。所以我就纳闷,malloc是从堆中分配空间,那么为什么分配后里面的值不是0? 于是查资料学到了很多东西,写篇博客存个档~我所说的全部是在linux下的。 然后进一步的问题就来了,第一个问题:堆和栈的区别有哪些呢?
2013-12-29 20:32:19
2006
原创 斐波拉契搜索(费氏搜寻法)
刚才搜这个算法。百度出的结果好少。。貌似很少人用?搜索出来的都是一本书上的内容。而且还用的原创标记。。。而那本书上讲的感觉也不大清楚。所以我就来简单介绍一下这个算法的思路吧。 简单来说。这个搜索和二分搜索是一致的。如果要找的数比当前点大就向左移,小的话就向右移。但是和二分查找来看,它的指针改变长度是斐波拉契数列的长度。 现在来做个说明。以下是一组数a。以下标为1开始1 3
2013-12-16 11:39:27
2243
原创 配置Opencv的遇到的一些麻烦..
本来以为装个库很简单的..结果按照网上的流程走还是出了很多错误.这里就总结一下吧.方便后人... 1.VC6.0只能安装2.0以下的opencv的版本.刚开始我不知道有这个情况..所以自然出错了.下了个2.44的弄去配置,发现很多文件名和位置都变动了.于是下了个2.2的.配置算是配置好了,但是一编译还是出错.如果是cpp文件会提示error C2535: '__thiscall
2013-11-05 21:50:55
1304
原创 VC6.0如何查看二维数组的平面图(比较水的方法)
刚才百度了一下..居然发现没有几个答案..所以自己摸索了一下..找了一个比较龊的方法.. 其实很简单..但是不够直观..具体方法如下: 在debug的时候,点击查看->调试窗口->memory. 然后将二维数组的数组名打上去就OK了!下面a是一个4*4的int数组.每行的大小可以通过把这个窗口调整长度来改变.如果你的二维数组是字符型的还是用行指针直接在wat
2013-11-04 20:25:05
1101
原创 NYOJ--743
拿到这个题找规律找了好久...画了半天才发现规律...结果网上一搜..就是C(M,N)的求取啊..坑啊.. 先说简单的思路..循环的递增其实就是从一个长度为n的递增序列,然后每个数都不一样,从中找出m个数..所以直接就是C(M,N)... 而且用C(M,N)公式计算的话还是复杂了.可以直接用C(M,N)=C(M,N-1)+C(M-1,N-1)来算出一张表来..每次输入直接在表中查找即可..
2013-10-29 22:46:49
660
原创 linux 下malloc的探究
前几天看《操作系统:精髓与设计原理》的虚拟存储系统的时候想到个问题,一个程序是否可以无限制的分配内存空间。今天刚好有点时间,就写了个小程序试了试。程序如下#include#includeint mian(){ int *p; int i=0; while(1) { p=(int *)malloc(sizeof(char)*102
2013-10-20 16:07:19
2269
原创 关于指针,地址总线的一些思考。
记得以前看到有人说一个进程最大只有4G。这个问题是一个看百度知道上面一个人说的。但是不知道是怎么来的。前些天又看到一个人问void *指针是多大。我告诉他所有C语言指针都是4个字节。群里马上有人反驳,然后就查了一下。发现还真不是。于是问题就产生了,为什么C语言的指针在大部分情况下是4个字节?首先,2^32等于4G。所以32应当是个突破口。然后我想了想,好象在哪看过,地址总线决定了所有设
2013-10-17 19:59:12
1477
原创 关于中缀转后缀表达式的树型算法
将近两个月没刷题,编程真是一点手感都没了。昨天晚上找了这个题,虽然原来用栈做过计算器,但是这次还是花了大概3个小时来做。编程还是得多练啊。此题是NYOJ第257题。一开始拿到题目。我首先就是想按照栈来做。但是自己试着写了一下,但是貌似不能用计算器的那种算完式子然后入栈的方法写。本来准备网上搜解法的,但是一想到大二那种学习方法。还是犟着自己思考,然后就想到了严蔚敏书上的树型表达式,后缀表达式
2013-09-24 20:10:35
1216
1
原创 荷兰国旗问题
刚才在严蔚敏的数据结构习题上看到的这个题。看了几篇博客。貌似都没有结合数据结构的意思来解释。让我有种冲动写篇文章。。就把这当作我的第一篇博文吧。 问题描述:荷兰国旗问题 ,设有一个仅有红白蓝三种颜色的条块组成的条块序列。请编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗的图案。 解析:算法一:首先复杂度为O(n)。这很容易让人想
2013-06-30 16:37:30
3006
csapp mountain.tar 存储山
2014-05-10
POSIX定义的竞争范围在linux中是否有用? [
2014-06-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人