后台相关
后台基础 入职后的知识积累,可能需要一点基础
lzb_include
这个作者很懒,什么都没留下…
展开
-
InnoDB中的事务隔离级别与mybatis设置
本文介绍如何在mybatis中设置事务的隔离级别,来达到合理控制数据库中锁,达到并发效果的。一,事务隔离级别回顾在数据库操作中,为了有效保证并发读取数据的正确性,提出了事务的隔离级别。实质其实是构建这些隔离级别而使用一些数据库锁。在SQL标准中,总共有四种隔离级别:oracle等多数数据库使用的默认隔离级别是已提交读RC级别,而我们经常使用的mysql使用的是可重复读RR隔离级别,未提交读通常不加锁,所以会有各种并发问题;在RC级别中,数据的读取都是不加锁的,但是数据的写入、修改和删原创 2020-10-31 13:29:14 · 1692 阅读 · 0 评论 -
大数据日志查找访问量峰值问题
一,问题描述如果给你一个集群一天的日志,日志里面记载了:1. 每个用户的登录id2. 用户的登录时间login_time3. 用户的登出时间logout_time那么你会用怎样的方法去判断日志中记录的一天的用户峰值和持续时间段呢?(假设日志打印的时间间隔为秒)此处思考一段时间。。。二,问题分析首先遇到这样的问题首先要想到,这种实际情况可能产生的海量数据是不适宜用排序算法做的,即时快排堆排能够保证排序的评价时间复杂度为O(nlogn),但数值一旦大起来这种排序...原创 2020-10-30 12:35:00 · 1830 阅读 · 1 评论 -
zookeeper的一些随便起个标题的总结
前言zookeeper是我们耳熟能详的一个分布式管理中间件,然而涉及到具体使用场景和实战,大多还是人云亦云。这里结合资料和实测做一个简单的总结。一,zk能用来做什么?Eureka的注册中心,实现分布式锁,kafka和hbase使用zk管理元数据配置,hdfs使用zk做高可用的容灾策略。总结说,即统一配置管理、统一命名服务、分布式锁、集群管理。第二节中会详细做介绍。所以,我们可以称zookeeper是一个解决分布式节点管理的通用中间件,zk本身也是一个server-client模式的中间件,并提原创 2020-09-30 18:11:14 · 194 阅读 · 0 评论 -
Redis数据类型
Redis基础数据结构Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (字典) 和 zset (有序集合)。string字符串字符串 string 是 Redis 最简单的数据结构。Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结 构的差异就在于 value 的结构不一样。list列表Redis 的列表相当于 Java 语言里面原创 2020-08-23 07:03:32 · 262 阅读 · 0 评论 -
深挖数据库事务隔离性
这篇主要介绍数据库事务中的隔离性,全篇从大概念入手到数据库事务隔离性的一般设计理念以及要面对的挑战。本篇纯码字,不过其中有区分很多博客上易混淆且常出错的概念,欢迎交流。一,理解事务事务是由一系列对系统中数据进行访问与更新的操作组成的一个程序执行逻辑单元。在数据库中,事务被赋予了更重要的意义:一方面数据库肯定要面对多并发的情况,多个应用程序同时发来请求,事务在这些应用程序中起到隔离的作用;另一方面事务也提供了回滚的能力,可以快速应对各种原因造成的事务失败,在尽量保证可用性的同时,提供服务的数据一致原创 2020-08-09 00:43:27 · 243 阅读 · 0 评论 -
【WIP】Golang 理解channel源码
这期介绍关于golang channel的内部工作原理,从源码入手结合资料介绍channel作为goroutine的通信机制创建,写入,读出的过程。文中截图均源自或改编自kavya的understanding channels. 需要基本的goroutine知识,以及channel使用方法为基础来理解。一,channel数据结构在golang语言设计中,goroutine可以独立并行的执行任务,channel负责goroutine之间的交互和同步。channel内部由一个hchan的数据结构构成原创 2020-08-02 18:26:13 · 1548 阅读 · 0 评论 -
为什么你不会动态规划?
动态规划(dynamic programming)是刷题中最常见也最重要的一个类别,在研发岗位面试中往往占据着重要地位。对于刷题,要写在前面的是肯定要通过大量的练习和自身体会去把握每种题型的思路,这是大前提。不过动态规划(以下用DP代替)属于没有公式的题型,这种题的特点是可能你花了很长时间去练习,却只能会做之前做过的题;DP的意义就像高考中最后一道大题,成为拉开差距的关键。那我们不妨用高考数学的思路去理解DP,解题逻辑抽象出来公式化,再加上一定的解题经验,至少做到拿到题后迅速找到思路。按图索骥总比毫无意原创 2020-07-26 15:45:41 · 1253 阅读 · 1 评论 -
Java进阶之泛型与语法糖
Java泛型是一个重要的Java概念,虽然Java的继承和接口丰富了多态的灵活性,但我们仍然希望编写更通用的代码,能够适用“非特定的类型”,而不是一个具体的接口或类。同时泛型是如何产生并使用的,我们的代码里泛型究竟充当了什么样的角色?一,Java的编译期与运行期从你写下Java代码(打印helllo world)到运行显示出你输入的效果,你的Java程序究竟经历了什么?程序从高级程序语言编译到机器语言;通过编译器的语法糖优化java程序用于提高代码效率Java程序的编译与优化分为两个阶段,一原创 2020-07-19 14:52:14 · 843 阅读 · 0 评论 -
安全系列之OAuth2协议
前言OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。全面的OAuth协议规约的制定可见OAuth1.0和OAuth2.0的官方文档,不过OAuth2.0并不向前兼容,所以一般我们常谈论的OAuth指的是用于"下一代用户验证和授权"的标准OAuth2.0。国内关于OAuth2.0的通俗解释是阮一峰老师的开发者手册,OAuth协议本身是一个不算简单的认证协议,之所以会日趋流行是因为它建立在了客户端开发者的简易性上,符合现阶段大平台小程原创 2020-07-05 19:22:45 · 610 阅读 · 0 评论 -
安全系列之CAS系统
前言本期介绍一下CAS(Central Authentiction Service )中心认证服务,以Apereo CAS工程为核心讲解CAS是怎么解决商业级系统SSO(single sign-on)认证问题的。目录前言一,SSO与SLO二,CAS系统架构三,CAS client四 , CAS server五,CAS protocol一,SSO与SLO在介绍CAS工作之前,要先从SSO的故事讲起。SSO(single sign-on)单点登陆和SLO(single .原创 2020-06-21 00:38:54 · 3421 阅读 · 0 评论 -
安全系列之权限控制模型
前言这期分享一下几个权限模型,在设计系统的时候一个很重要的问题是权限。不同的场景用户会有不同的使用需求,如何设计一个合适的权限模型就显得尤关重要。下面会结合实际系统来介绍几种常见的权限模型。在经典教科书中一般对权限系统中权限的使用者为主体,操作所针对的对象为客体。数据库 大数据 文件系统 应用程序 APi一,DAC 自主访问控制(Discretionary Access Control)DAC是使用中最常见的权限模型,特点是每项操作都有其对应的权限,所有的权限存储在系统的ACL表中,每个原创 2020-06-14 10:15:56 · 2347 阅读 · 0 评论 -
Java进阶之JVM对象生命周期
前言上周有反映内容对于初学者较难,其实我觉得是讲的内容太多,导致自己不能生动具象地让所有人理解透彻,之后会注意。这里更提出两点建议适用于学习知识:1. 不要囫囵吞枣,理论性知识要逐字地去看2. 选取适当且固定的知识源,官网和经典书籍优先,养成学习惯性我写博客的目的就是更好地让大家理解难懂的概念,然后可以再去深入地讨论问题本期介绍JVM中对象的生命周期,应该算是一个常见且基础的问题,这里再拿出来重新梳理,希望能对读者有所帮助。一,Java 对象的本质什么是Java对象Java原创 2020-06-07 21:43:14 · 967 阅读 · 0 评论 -
安全系列之介绍Kerberos认证协议
前言一直以来Kerberos都是应用广泛的强/集群安全/网络身份验证/协议,虽然讲解资料也不少,但和HDFS一样很少有讲通的,很多都是使用kerberos原始论文的概念直接塞给读者,造成很多概念闭塞难懂。或者是讲故事买门票坐火车,例子很好懂,但没有和技术结合起来。这篇会按照理解难度从易到难,划分为四个部分,试着解决上边的问题统一做一下总结。目录前言一,入门 · Kerberos介绍二,表面 · 理解Kerberos三,里面 · Kerberos实质四,深入 · 重新认识Kerbe原创 2020-05-23 21:16:47 · 6232 阅读 · 0 评论 -
编程语言类型浅谈比较
前言前些日子群里有人问说了这么一段话引起里我的好奇:我一直觉得语言层上没有什么好说的,不过不知道大家在学习语言的时候有没有像他一样的困惑。他其实讲的是js对象和Java对象的区别,Java面向对象有继承,封装,多态三大特性,而js是基于对象的,继承等是通过原型链或其他方法进行实现。比如在上边的例子中Java对象可以这样实现:// JavaStudent stu = new Student(); //调用构造函数stu.setName("Allen"); //调用成员方法Sys原创 2020-05-17 13:33:23 · 538 阅读 · 0 评论 -
spring boot环境配置注入顺序
前言:一,工厂设计模式与spring boot二,观察者模式与spring boot三,spring boot启动流程四,spring boot环境注入原创 2020-05-11 16:59:30 · 2230 阅读 · 0 评论 -
HDFS文件读写剖析
一,原创 2020-05-03 11:58:39 · 609 阅读 · 0 评论 -
Golang缓存生态
前言一 golang缓存现状缓存框架的必备要求二 golang缓存流行种类三 golang缓存实现原创 2020-04-25 12:18:02 · 2453 阅读 · 0 评论 -
数据库分片以及schema概念
一原创 2020-04-18 21:46:59 · 1766 阅读 · 1 评论 -
shell脚本学习第二篇 awk工具
此篇直接转载自菜鸟教程:https://www.runoob.com/linux/linux-comm-awk.html以及博客园 awk命令详解 :https://www.cnblogs.com/isykw/p/6258781.html一,awk命令基本用法如果说grep是查找,sed是编辑,那么awk就是一个文本分析工具,它可以对数据分析并生成报告,即把文件逐行的读入后进行切...转载 2020-04-11 17:01:06 · 915 阅读 · 0 评论 -
linux shell脚本学习第一篇 sed基础
此篇最好有一点linux内核以及操作系统知识,需要linux指令实际操作经验。另外这篇文章加了sed工具的基础,希望读完这篇文章大家能知道shell和关于shell脚本的概念及基本文件操作。一,脚本简介什么是shell?我在学习linux基础中有提过,linux操作系统四大组成结构分别是内核,文件系统,shell,用户程序。shell是用户与kernel内核交互的媒介,它本身是一个用 ...原创 2020-04-06 20:37:47 · 340 阅读 · 0 评论 -
HDFS透明加密 从入门到放弃
这篇文章需要一点hadoop框架的基础,你最好需要知道什么是hadoop,以及需要了解hadoop的文件系统hdfs。如果你不了解的话,我会尝试用简单的原理来解释,希望能对你有用,这期内容可能有些烧脑,可以多读几遍,我也有学习不足的地方,欢迎提问。目录一,什么是HDFS二,什么是透明加密三,用户如何使用hdfs透明加密功能四,hdfs如何实现透明加密一,什么是HDFSh...原创 2020-03-28 20:27:10 · 3888 阅读 · 0 评论 -
Java进阶之从ByteBuffer到设计缓存
最近在忙hadoop-common项目的国密算法适配,其中有涉及到一个基本问题引起我的注意,就是bytebuffer和byte[]的转化,网上的资料太繁杂,而且大多数真的是抄了一下,我在这里做下整理。而且想到面试的时候的一道经典面试题就是如何设计缓存,正好借着这个机会一起归总一下。这篇应该门槛不高,不过也需要一些java nio和缓存的基础,所以放到后台里面了。一,什么是ByteBuffer?...原创 2020-03-22 14:00:18 · 850 阅读 · 0 评论 -
vitess框架详解进阶版
之前有简单介绍vitess大致的用途和前景,这篇根据自己经验讲一下vitess这个项目的框架。一些vitess基础概念可以在简单介绍vitess中找到。一,vitess overview全框架在这一小节中,我会拿出vitess的整体大致框架,重新梳理vitess的优势与劣势,最后给出一个SQL查询在vitess的生命周期,供大家参考。首先还是youtube的这张图:从业务层上划...原创 2020-03-14 23:13:11 · 2611 阅读 · 1 评论 -
Golang基础第五篇——golang的gRPC
此篇的组织架构,第一节简述golang的rpc,第二节讲主体golang/grpc,第三节简述grpc应用的结构和特性。本身grpc是个上限很高的框架,这里的博文只科普,尽量简单地告诉你它做了什么,有什么用;关于使用,部署,以及更深层的原理还要自己发掘。原创 2020-03-07 20:50:32 · 9348 阅读 · 0 评论 -
Golang基础第四篇——从go并发到channel到定时器实现
目录一,Golang的并发编程二,关于goroutine三,关于channel四,Golang中的定时器一,Golang的并发编程在第一篇我们已经提到,golang最重要的一个特色就是他通过go关键字的并发处理。首先要知道为什么我们需要并发,并发为什么在如今作为一种语言特性如此重要?关于进程线程,堆栈的基础知识就不赘述(感兴趣可以翻我之前的blog),这里从市...原创 2020-02-29 22:07:12 · 1658 阅读 · 0 评论 -
Golang编程基础第三篇——Golang对Json处理
一,什么是JsonJSON(JavaScript Object Notation)是一种基于JavaScript语法子集的开放标准数据交换格式。JSON是基于文本的,轻量级的,通常被认为易于读/写。Json是一种比XML更轻量级的数据交换格式,更适合成为较为理想,跨平台,跨语言的数据交换语言,成为项目配置文件的首选。开发者可以用Json传输简单的字符串,数字,布尔值,也可以传输一个数组...原创 2020-02-23 18:14:03 · 1236 阅读 · 0 评论 -
Golang编程基础第二篇——Golang的面向对象
Golang作为一种“更好的C语言“,提供了面向对象编程思想的支持。一,类型系统在go中你可以为任何类型添加相应的方法://为类型添加方法type Integer int//面向对象操作,对象是Integer这个类型的a值func (a Integer) Less(b Integer) bool { return a < b}//面向对象调用func m...原创 2020-02-22 19:56:42 · 1246 阅读 · 0 评论 -
Golang编程基础第一篇——Golang快入门
目录一,为什么我们需要一门新语言二,顺序编程2.1 变量2.2 常量2.3 类型2.4 流程控制2.5 函数2.6 错误处理 (golang的错误处理适合单出一篇)以go语言编程为基底,记录下心得 需要后期维护和积累一,为什么我们需要一门新语言从摩尔定律说起,为什么我们需要一门新语言。摩尔定律(英语:Moore's law)是由英特尔(Int...原创 2020-02-08 15:39:38 · 805 阅读 · 0 评论 -
LDAP搜索底层逻辑
一,ldap基本模型DIT : ldap的树结构,每个树上的节点叫entryDN (DistinguishedName):从特定节点到树的根的直接下级的节点的路径序列为DN,区别于其他节点的名字,相当于节点的绝对路径,由不同部分的rdn组成RDN(Relative Distinguished Name): 区别于同层节点的名字叫RDN,相当于相对路径Attribute:每个节点属性都有相应的...原创 2019-12-20 09:52:39 · 821 阅读 · 0 评论 -
事业群-部门-岗位辨析
对于多业务的集团性公司来说,BU是某一类业务的集合,以商业业务划分,在该公司内部可能是以事业部或者独立子公司的形式存在的,也可能并没有形成事业部,但是作为单独的业务进行管理。每个BU有他不同的逻辑,会划分成不同的部门,每个部门有不同的职能,支持BU的正常化运作。每个部门下又有不同的岗位来支持部门的工作。一般来说高新技术公司的技术岗位有测试-研发-算法(或者还有运维,技术支持,IT等)研发又有...原创 2019-11-28 20:01:40 · 2853 阅读 · 0 评论 -
如何理解kubernetes概念
一,k8s框架与组件etcd(持久化存储)Etcd是CoreOS开源的一个高可用强一致性的分布式存储服务。Kubernetes使用Etcd作为数据存储后端,把需要记录的pod、rc、service等资源信息存储在Etcd中Etcd使用raft算法将一组主机组成集群,raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower、candidate与lea...原创 2020-02-04 13:15:43 · 276 阅读 · 0 评论 -
如何理解Docker?
一,docker vs 虚拟机虚拟机是在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。Docker是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装Docker容器的管理器才可以。虚拟机是在硬件级别进行虚拟化,而Docker是在操作系统的层面虚拟化;虚拟机是通过模拟硬件搭建操作系统, Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、...原创 2019-11-17 21:07:38 · 439 阅读 · 0 评论