分类目录归档:开发语言

理解二叉树的四种遍历-前序、中序、后序、层序

一、易懂的形象理解

其实从名字就可以很好的理解这三种遍历,我在第二点时候说,但是估计能翻到我的文的同学们之前肯定看过好多类似的了,那咱们换个思路~ 先用我想的一种简单易懂的形象思维理解一下前序、中序、后序 +层序!

1、先序遍历

先序遍历可以想象成,小人从树根开始绕着整棵树的外围转一圈,经过结点的顺序就是先序遍历的顺序
先序遍历结果:ABDHIEJCFKG

继续阅读

GO中参数传递的理解

针对字符、数组、切片、struct在函数调用中,使用的是传值还是传引用?做一下汇总

GO中值交换的原理

今天在coding中发现有这么一段代码,可以实现值交换,但具体的原理是什么?还不清楚,列个todo项,有空再研究下

a, b := 10, 5
b, a = a, b

继续阅读

递归算法满足的三个条件

递归算法是常见的一种算法,那究竟什么样的问题可以用递归来解决呢?我总结了三个条件,只要同时满足以下三个条件,就可以用递归来解决。

1. 一个问题的解可以分解为几个子问题的解,何为子问题?

子问题就是数据规模更小的问题。比如,前面讲的电影院的例子,你要知道,“自己在哪一排”的问题,可以分解为“前一排的人在哪一排”这样一个子问题。

继续阅读

数据结构与算法-数组 & 链表

数组是一种常见的线性表结构,它用一组连续的内存空间,来存储一组具有相同类型的数据;定义中标识出来的,是数组的3个基本特性;线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向,除了数组外,链表,队列,栈也都是线性表结构;与它对应的是非线性表结构,如二叉树、堆、图等;

链表也是一种常见的线性表结构,它用一组非连续的内存空间,来存储一组具有相同类型的数据;注意和数组的区别,与数组最大的区别在于,链表是使用一组非连续的内存空间,链表分为单向链表、循环链表、双向链表、双向循环列表;

继续阅读

认识时间复杂度与空间复杂度

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。

继续阅读

锁机制及CAS实现原理

一、锁机制

常用的锁机制有两种:悲观锁、乐观锁,下面我们分别介绍下。

1、悲观锁
  • 假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
  • 悲观锁的实现,往往依靠底层提供的锁机制。
  • 悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。

继续阅读

C语言学习笔记 – 编程基础

1、什么是编程语言?

  • 通过“语言”来控制计算机,让计算机来为我们做事情,这样的语言叫编程语言(programming language)。
  • 编程语言是用来控制计算机的一系列的指令(instruction),有固定的格式和词汇(不同语言的格式和词汇不一样),我们必须要遵守,否则会出错,达不到我们的目的。

继续阅读

C语言学习笔记(一)

一、2进制、8进制、10进制、16进制之间的转换

1)2进制、8进制、16进制 => 10进制 = 按权相加
2)10进制 => 2进制、8进制、16进制 = 除N取余 逆序排列
3)2进制、8进制、16进制间的转换
4)10进制小数 => 2进制小数 = 乘2取整、顺序排列

继续阅读

Yaf可选的配置项

Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置项都以ap开头. Yaf的核心必不可少的配置项只有一个(其实, 这个也可以有默认参数, 但是作者觉得完全没有配置, 显得太寒酸了).

Yaf通过在不同的环境中, 选取不同的配置节, 再结合配置可继承, 来实现一套配置适应多种环境
(线上,测试,开发).

继续阅读

PHP配置指令作用域说明

PHP总共有4个配置指令作用域:(PHP中的每个指令都有自己的作用域,指令只能在其作用域中修改,不是任何地方都能修改配置指令的)

  • PHP_INI_PERDIR:指令可以在php.ini、httpd.conf或.htaccess文件中修改
  • PHP_INI_SYSTEM:指令可以在php.ini 和 httpd.conf 文件中修改
  • PHP_INI_USER:指令可以在用户脚本中修改
  • PHP_INI_ALL:指令可以在任何地方修改

下面举例子说明:

1、在用户脚本中修改(即在php文件中修改)

ini_set("yaf.library","/usr/local/php7/lib");
echo ini_get("yaf.library");

2、在php.ini中修改

yaf.library="/usr/local/php7/lib"

常见数据结构与算法整理总结(下)

这篇文章是常见数据结构与算法整理总结的下篇,上一篇主要是对常见的数据结构进行集中总结,这篇主要是总结一些常见的算法相关内容,文章中如有错误,欢迎指出。

一、概述
二、查找算法
三、排序算法
四、其它算法
五、常见算法题
六、总结

继续阅读

常见数据结构与算法整理总结(上)

文章来源:https://www.jianshu.com/p/230e6fde9c75

数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出。

为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表、栈、队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需要的可以阅读这篇文章。Java – 集合框架完全解析

继续阅读

float与double的范围和精度

一、范围

float double 的范围是由指数的位数来决定的。
float 的指数位有8位,而 double 的指数位有11位,分布如下:

float

1bit(符号位)  8bits(指数位)  23bits(尾数位)

double

 1bit(符号位)  11bits(指数位)  52bits(尾数位)

继续阅读