我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。
锁机制及CAS实现原理
一、锁机制
常用的锁机制有两种:悲观锁、乐观锁,下面我们分别介绍下。
1、悲观锁
- 假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
- 悲观锁的实现,往往依靠底层提供的锁机制。
- 悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。
常见开源OLAP技术架构对比
1. 什么是OLAP
OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理)的区别来看一下它的特点:
ETL与大数据是什么关系?
一、ETL发展的历史背景
随着企业的发展,各业务线、产品线、部门都会承建各种信息化系统方便开展自己的业务。随着信息化建设的不断深入,由于业务系统之间各自为政、相互独立造成的数据孤岛”现象尤为普遍,业务不集成、流程不互通、数据不共享。这给企业进行数据的分析利用、报表开发、分析挖掘等带来了巨大困难。
在此情况下,为了实现企业全局数据的系统化运作管理(信息孤岛、数据统计、数据分析、数据挖掘) ,为DSS(决策支持系统)、BI(商务智能)、经营分析系统等深度开发应用奠定基础,挖掘数据价值 ,企业会开始着手建立数据仓库,数据中台。将相互分离的业务系统的数据源整合在一起,建立一个统一的数据采集、处理、存储、分发、共享中心,从而使公司的成员能够从不同业务部门查看综合数据,而这个过程中使用的数据处理方法之一就是ETL。
设计模式
一、设计模式解决的问题
使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性
Workerman-高性能socket服务框架
Kubernetes文档
一文带你读懂CNCF Landscape
一张图搞懂head -n和tail -n
https://www.aliyun.com/jiaocheng/135094.html
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通过在不同的环境中, 选取不同的配置节, 再结合配置可继承, 来实现一套配置适应多种环境 (线上,测试,开发).
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"
Yaf的安装
常见数据结构与算法整理总结(下)
这篇文章是常见数据结构与算法整理总结的下篇,上一篇主要是对常见的数据结构进行集中总结,这篇主要是总结一些常见的算法相关内容,文章中如有错误,欢迎指出。
一、概述 二、查找算法 三、排序算法 四、其它算法 五、常见算法题 六、总结
常见数据结构与算法整理总结(上)
文章来源:https://www.jianshu.com/p/230e6fde9c75
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出。
为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表、栈、队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需要的可以阅读这篇文章。Java – 集合框架完全解析
Nginx、LVS、HAProxy负载均衡软件的优缺点详解
Nginx、LVS、HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。
一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。
一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx、LVS、HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。
目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx、HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。
TCP和UDP的区别[经典]
TCP与UDP基本区别
- 基于连接与无连接
- TCP要求系统资源较多,UDP较少;
- UDP程序结构较简单
- 流模式(TCP)与数据报模式(UDP);
- TCP保证数据正确性,UDP可能丢包
- TCP保证数据顺序,UDP不保证
保证分布式系统数据一致性的6种方案
问题的起源:在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?
具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。 A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。
在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为了便于讨论问题,先简单介绍下数据一致性的基础理论。