- 博客(37)
- 资源 (2)
- 收藏
- 关注
转载 程序员的修养
作为一个合格程序员每天该做的事1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作 3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重要的是不要重复犯相同的错误,那是...
2018-03-13 17:25:11 264
原创 编写MarkDown文件几个用过的技巧
以下内容仅仅是自己语言的表述,细节东西均需要自己动手实践,才能更好地明白如何使用以及它的作用。实现链接地址的跳转[文本](url)例如:[小米商城](https://www.mi.com/)效果:点击小米商城,在当前页面跳转到小米商城页面效果如下: 小米商城实现目录的跳转[目录名称](#跳转的标题名称)例如:[新人](#新人入职手册)效果:点击新人,跳转到新人入职手
2018-01-17 16:40:06 397 1
原创 C++11 mutex方便的自解锁lock_guard
C++11 中新增了mutex.用法就是简单的lock,unlock。本篇博客重点介绍的不是mutex。是std::lock_guard。这东西是干什么的呢?它是与mutex配合使用,把锁放到lock_guard中时,mutex自动上锁,lock_guard析构时,同时把mutex解锁。std::mutex mutex;void testFunc(){ // lock mutex s
2017-03-21 17:32:12 1436
转载 从关系型数据库到非关系型数据库
1. 关系型数据库> 关系型数据库,是指采用了关系模型来组织数据的数据库。 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。> 关系模型中常用的概念: 关系:可以理
2017-03-17 11:10:19 368
转载 判断两个链表是否相交并找出交点
点击链接:判断两个链表是否相交并找出交点问题描述:一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。第一种情况:两个链表均不含有环 思路:1、直接法采用暴力的方法,遍历两个链表,判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大。2、hash计数法如 果 两个链表相交,则两个链表就会有共同的结点;而结点地址又是结点唯一标识。因而判断两个链
2017-03-14 12:59:03 545
原创 DNS解析过程
1.主机向本地域名服务器的查询采用递归查询: 如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询报文,而不是让主机自己进行下一步的查询。 2.本地域名服务器向根域名服务器的查询采用迭代查询: 根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所查询的IP地址,要么告诉本地域名服务器:“你下一步应该向哪一个顶级
2017-03-13 16:52:29 450
原创 使用C++11解决内存泄漏的问题
C++语言中没有垃圾回收机制,必须自己去释放分配的堆内存,否则就会内存泄漏。相信大部分C++开发人员都遇到过内存泄漏的问题,而查找内存写了的问题往往要花大量的精力。 解决这个问题最有效的办法就是使用智能指针(Smart Pointer)。使用智能指针就不用担心这个问题了,因为智能指针可以自动删除分配的内存。智能指针和普通指针类似,只是不需要手动释放指针,而是通过智能指针自己管理内存的释放,这样
2017-03-13 15:58:03 2664
原创 TCP粘包问题的解决
在TCP协议中,每次发送的数据长度是不确定的,从接收方来看,可能每次收到的数据都不完整,或者是收到多个数据包,这就是所谓的粘包问题。
2017-03-13 14:44:00 390
原创 Q:Linux能同时启动多少个线程?
Q:Linux能同时启动多少个线程? 对于32-bit Linux,一个进程的地址空间是4GB,其中用户态能放问3GB左右,而一个线程的默认栈(stack)大小是10MB,心算可知,一个进程大最多能同时启动300个线程。如果不改变线程的调用栈大小的话,300左右是上限,因为程序的其他部分(代码段、数据段、BSS、堆、栈、动态库等等)同样要占用内存(地址空间)。
2017-03-12 19:22:52 745
转载 Unix下五种I/O模型
I/O模型 Unix下共有五种I/O模型 a. 阻塞I/O b. 非阻塞I/O c. I/O复用(select和poll) d. 信号驱动I/O(SIGIO) e. 异步I/O(Posix.1的aio_系列函数) 1). 阻塞I/O模型 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待。。。。 数据准备好了,从内核拷贝
2017-02-28 08:51:07 230
原创 查找一个数组的K大值
前面有一篇博客,实现了如何处理寻找数组第二大数据,但是当寻找第三大、第四大时,那样的思想便存在一大缺点(if-else结构情况很多)!!!#include <stdio.h>// 快排将数组调整为降序数组。// 快速排序有一个特点:每一趟一定会将一个元素放在最终位置(每一趟的low表示该确定位置元素的下标)。int quick (int array[], int left, int right,
2017-02-27 17:47:26 286
原创 寻找一个数组中的次大值
实现时间复杂度为O(n)的一个算法求得数组的次大值。#include <stdio.h>int getMax2 (int array[], int n){ if (n<=1) { return -1 ; } if (array[0]>array[1]) { max=array[0] ; max2=array[1] ;
2017-02-27 11:48:47 1270
原创 反转单链表
实现将一个单链表反转,并输出反转厚的单链表。#include <stdio.h>#include <malloc.h>struct stud { int num ; struct stud *next ;} ;// 核心函数:反转单链表void reverse (struct stud * head){ struct stud *cur , *p ; cur
2017-02-27 10:36:13 323
原创 非递归二分查找
作为一名程序员,重新找回自己敲代码的感觉,做最好的自己。#include <stdio.h>int binary(int *array, int n, int num){ int low = 0, mid = 0, high = n-1 ; while (low<=high) { mid = (low+high)/2 ; if (array[mid]
2017-02-26 21:33:03 194
转载 exec族函数
简介 在Linux中,并不存在exec()函数,exec指的是一组函数,一共有6个,分别是:#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ..
2015-12-07 17:23:34 341
原创 算法 -- 求两个等长数组的中位数
求中位数问题描述 已知两个等长度且均有序的数组a与b,它的长度为N,请计算出这两个数组所有元素的中位数.易错细节 我刚开始采取的策略是:中位数靠左处理.这句话的含义就是:如果是偶数个,则去中间两个元素的前一个. 例如: a数组 {1 2 3 4} 和 b数组 {3 4 5 6} 在这样的处理思想下,由于a 数组中位数为2, b数组中位数为4, 比
2015-12-02 22:09:32 1297
原创 算法 -- 快速排序
引言: 排序算法很久没有些过啦,前段时间写了最基础的选择排序和冒泡排序,当时写它们就是为了找感觉.于是今天复习了快速排序的算法.算法思想: 其实它的思想也很简单: 1.自己确定一个标志数key作为比较对象. 2.从最后一个开始,寻找第一个小于key的,并将其放在当前first上. 3.从第一个开始,寻找第一个大于key的,并将
2015-11-30 22:01:26 324
原创 Github -- Contributions Calendar 绿点不显示
1. 问题疑惑: 好久没有使用过github啦 , 然后重新开始使用.但是在使用了一次之后 , 出现了一个问题: 在本地完成代码的提交之后 , 在github上面并没有显示我们所期待的绿点. 当时认为是小组的网络或者笔记本系统的影响 , 同时也没有遇见过这样的问题,因此并没有在意.第二天问了朋友 , 他一直没有回信. 然而问题依旧存在 , 我自己却没有亲自解决 , 因此经过一番思考搜索 ,
2015-11-27 13:48:05 1419
原创 Git -- 不错的指导
总是在使用git的时候出现很多问题,自己也很久没有提交过代码啦. 说来真是惭愧,重拾生活的激情,做好每一天的事情.Fighting , 映霄姑娘.我的参考链接 : http://www.bootcss.com/p/git-guide/
2015-11-23 21:03:44 304
原创 算法 -- 0-1背包问题之动态规划
本来周五要完成0-1背包问题,由于自己的某些事情耽搁.以后要严格要求自己喽!!! 下面我们一起来学习0-1背包问题:问题描述: 有N件物品和一个容量为c的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。之所以称为”0-1背包问题”表示该问题只有两种结果:装或者不装即0或者1. 基本思路: 该问题中,每一种物品只有一件,同时选择只有放和不放. 实现过
2015-11-23 00:59:33 649
原创 算法 -- 数字三角形之动态规划
好久没有好好写算法啦,因此今天晚上就思考实现老师说的一道算法题目: 用动态规划求解数字三角形.下面简单描述下题目含义: 数字三角形中的数字要求为不超过100的非负整数.题目规定从最顶层开始往下走,选择一条路径,这条路径要求每一步沿着左斜线或者右斜线走,并且路径上的数字之和为最大值.例如下面这样一个三角形: 1. 7 2. 3 8 3. 8 1 0 4. 2 7 7
2015-11-20 01:10:22 4280 1
原创 初识TCP:传输控制协议
我们总是提到TCP与UDP,因此我们对于它们大概有所了解.相信大家肯定都知道:TCP和UDP都使用相同的网络层(IP),但TCP向应用层提供一种面向连接的并可靠的字节流服务,UDP则向服务层提供面向数据报的,同时是不可靠的.下面介绍TCP两个特点.特点一:面向连接 面向连接意味着两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接.这其实就像我们打电话一样,先拨号码振铃通知对方,等待
2015-11-03 20:44:19 526
原创 linux の strace 命令
周六在看一个将操作系统的视频的时候,涉及到strace这个命令,因此我就记录在我的备忘录里面,然后后面去了解下它的含义.因此总结在这篇博客里面. strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须**由用户态模式切换至内核态**模式,通过系统调用访问硬件设备。**strace
2015-11-01 11:25:54 397
转载 matlab矩阵的表示和简单操作
一、矩阵的表示在MATLAB中创建矩阵有以下规则:a、矩阵元素必须在”[ ]”内;b、矩阵的同行元素之间用空格(或”,”)隔开;c、矩阵的行与行之间用”;”(或回车符)隔开;d、矩阵的元素可以是数值、变量、表达式或函数;e、矩阵的尺寸不必预先定义。二,矩阵的创建:1、直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入
2015-10-29 16:58:24 2396
原创 算法 -- 归并排序之自然排序
定义: 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个典型应用.应该将已经有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段间有序.若将两个有序表合并成一个有序表,称为二路归并. [摘录于维基百科]无论哪一种归并算法的实现,它都需要用到一个MergeArray函数实现两个有序数组的合并.如下:
2015-10-26 13:28:43 5646
转载 由linux命令行下命令参数前的一横(-)和两横(--)的区别而得知的
在解释这些区别之前我们先了解一下有关linux的背景知识,这个需要大家先认真看完就会对这些区别有更深入的了解,对linux也有更深的了解。关于System V和BSD风格以及他们与Linux的关系:1、System V 和BSD同出于AT&T实验室的两个不同的部门,SystemV是一个Unix的商业化标准,BSD为Unix标准化的Berkeley风格。2、由于Linux是Linus Torvalds
2015-10-25 09:48:35 493
原创 Linux下实现编写汇编程序
本学期的微机原理课程上机使用的是MASM汇编器,上课时使用的是Windows上的DOS,而Linux中的汇编工具是nasm.(具体的可以点击链接:http://os.51cto.com/art/201101/243138.htm)`这里写代码片`下面我们就来谈谈如何在Linux下编写汇编程序: 安装dosbox 或dosemu 之后都可以在Linux中使用MASM和Debug,而且由于是在
2015-10-25 09:10:47 6439
原创 git上新创建一个库->写给自己
1. 建立一个仓库:daodazhidinggit init选择要添加进仓库的文件:1 git add .一般如果你想分享这个文件夹里的所有代码,就在 add后面加“.”,上面的例子就是这样,如果传指定的,只需要把“.”改为文件名即可,现在只是选择了要加入仓库的文件,下面才是添加进入仓库:1 git commit -m 'Test'-m后面跟一个参数,表示说明,将代码提交到Gi
2014-07-28 11:26:15 743
原创 鸟哥教会我的一些命令
因为本周要学习进程的知识点,在上周末的时候自己就想提前去了解下,于是我便拿起鸟哥看了关于进程管理方面的一些讲解,收获颇多。在这里我主要谈谈关于工作管理方面的收获。首先我来解释下“工作管理”。这个工作管理(job control)是用在bash环境下,也就是说:当我们登录系统取得bash shell之后,在单一终端机下同时进行多个工作的行为管理。1> 直接将命令丢到后台中执行的“&”:
2014-07-25 18:13:38 511
原创 进程管理--fork函数
A. 进程的概念进程是正在运行的程序实体,并且包括这个运行的程序中占据所有系统资源。在Linux系统中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。了解进程,其实借助于程序更好理解。程序一般是放置在磁盘中,然后通过用户的执行来触发。触发后会加载到内存中成为一个个个体
2014-07-24 10:20:26 653
原创 Linux 兴趣小组暑假学习--学习总结<一>
学习总结暑假生活第一周即将结束,说起来仅仅学习文件操作这一章,不过因为学无止境,所以在整个过程中也学习到了其他的知识点。就文件这一章节来讲,学习到好多系统函数:open ( ), creat ( ), read ( ), lseek ( ), fcntl ( )等等 ,了解计算机中许多宏的含义。其实这些大家通过看书都可以了解到,我觉得最有收获的地方就是:1> 学长学姐的讲座
2014-07-19 09:36:52 577
原创 初识“PATH”环境变量
环境变量PATH今天在闲暇之时,拿出抛弃许久的《鸟哥》,看了看第七章关于“Linux文件与目录管理”。当看到“关于执行文件路径的变量:$PATH”时,想到自己与它的熟悉与陌生。熟悉是因为本周以来的某些疑问在学长的帮助下涉及到了它,陌生是因为我对它的不了解。因此自己认真学习了本节知识,下面是我自己所理解到的一些知识。我们都知道查看文件属性的命令ls的完整文件名为:/bin
2014-07-19 09:20:50 1004
Linux高性能服务器编程
2015-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人