- 博客(128)
- 资源 (2)
- 收藏
- 关注
转载 golang的nil
此文转载自本人微信公众号:lishinho杂货铺 欢迎大家关注今天的每日一题:package main import "fmt" func main() { if []int32{} == nil { fmt.Println("[]int32{} is nil") } else { fmt.Println("[]int32{} is not nil") }}答案是:fmt.Println("[]int32{} is not nil")是不是很简单?今天主要拓展讲下nil的含义..
2021-01-29 08:57:12
402
转载 golang的init函数和main函数
此文转载自本人微信公众号:lishinho杂货铺先说今天做任务的时候遇到一个场景,本地go build编译成功的项目,在测试环境时报错:/data/app/app-job/app-job flag redefined: confpanic: /data/app/app-job/app-job flag redefined: confgoroutine 1 [running]:flag.(*FlagSet).Var(0xc00010a180, 0x1b6e960, 0x2a9be50, 0x19.
2021-01-13 09:17:46
550
原创 InnoDB中的事务隔离级别与mybatis设置
本文介绍如何在mybatis中设置事务的隔离级别,来达到合理控制数据库中锁,达到并发效果的。一,事务隔离级别回顾在数据库操作中,为了有效保证并发读取数据的正确性,提出了事务的隔离级别。实质其实是构建这些隔离级别而使用一些数据库锁。在SQL标准中,总共有四种隔离级别:oracle等多数数据库使用的默认隔离级别是已提交读RC级别,而我们经常使用的mysql使用的是可重复读RR隔离级别,未提交读通常不加锁,所以会有各种并发问题;在RC级别中,数据的读取都是不加锁的,但是数据的写入、修改和删
2020-10-31 13:29:14
1402
原创 大数据日志查找访问量峰值问题
一,问题描述如果给你一个集群一天的日志,日志里面记载了:1. 每个用户的登录id2. 用户的登录时间login_time3. 用户的登出时间logout_time那么你会用怎样的方法去判断日志中记录的一天的用户峰值和持续时间段呢?(假设日志打印的时间间隔为秒)此处思考一段时间。。。二,问题分析首先遇到这样的问题首先要想到,这种实际情况可能产生的海量数据是不适宜用排序算法做的,即时快排堆排能够保证排序的评价时间复杂度为O(nlogn),但数值一旦大起来这种排序...
2020-10-30 12:35:00
1401
1
原创 zookeeper的一些随便起个标题的总结
前言zookeeper是我们耳熟能详的一个分布式管理中间件,然而涉及到具体使用场景和实战,大多还是人云亦云。这里结合资料和实测做一个简单的总结。一,zk能用来做什么?Eureka的注册中心,实现分布式锁,kafka和hbase使用zk管理元数据配置,hdfs使用zk做高可用的容灾策略。总结说,即统一配置管理、统一命名服务、分布式锁、集群管理。第二节中会详细做介绍。所以,我们可以称zookeeper是一个解决分布式节点管理的通用中间件,zk本身也是一个server-client模式的中间件,并提
2020-09-30 18:11:14
124
原创 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
116
原创 深挖数据库事务隔离性
这篇主要介绍数据库事务中的隔离性,全篇从大概念入手到数据库事务隔离性的一般设计理念以及要面对的挑战。本篇纯码字,不过其中有区分很多博客上易混淆且常出错的概念,欢迎交流。一,理解事务事务是由一系列对系统中数据进行访问与更新的操作组成的一个程序执行逻辑单元。在数据库中,事务被赋予了更重要的意义:一方面数据库肯定要面对多并发的情况,多个应用程序同时发来请求,事务在这些应用程序中起到隔离的作用;另一方面事务也提供了回滚的能力,可以快速应对各种原因造成的事务失败,在尽量保证可用性的同时,提供服务的数据一致
2020-08-09 00:43:27
168
原创 【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
482
原创 为什么你不会动态规划?
动态规划(dynamic programming)是刷题中最常见也最重要的一个类别,在研发岗位面试中往往占据着重要地位。对于刷题,要写在前面的是肯定要通过大量的练习和自身体会去把握每种题型的思路,这是大前提。不过动态规划(以下用DP代替)属于没有公式的题型,这种题的特点是可能你花了很长时间去练习,却只能会做之前做过的题;DP的意义就像高考中最后一道大题,成为拉开差距的关键。那我们不妨用高考数学的思路去理解DP,解题逻辑抽象出来公式化,再加上一定的解题经验,至少做到拿到题后迅速找到思路。按图索骥总比毫无意
2020-07-26 15:45:41
836
1
原创 Java进阶之泛型与语法糖
Java泛型是一个重要的Java概念,虽然Java的继承和接口丰富了多态的灵活性,但我们仍然希望编写更通用的代码,能够适用“非特定的类型”,而不是一个具体的接口或类。同时泛型是如何产生并使用的,我们的代码里泛型究竟充当了什么样的角色?一,Java的编译期与运行期从你写下Java代码(打印helllo world)到运行显示出你输入的效果,你的Java程序究竟经历了什么?程序从高级程序语言编译到机器语言;通过编译器的语法糖优化java程序用于提高代码效率Java程序的编译与优化分为两个阶段,一
2020-07-19 14:52:14
649
原创 安全系列之OAuth2协议
前言OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。全面的OAuth协议规约的制定可见OAuth1.0和OAuth2.0的官方文档,不过OAuth2.0并不向前兼容,所以一般我们常谈论的OAuth指的是用于"下一代用户验证和授权"的标准OAuth2.0。国内关于OAuth2.0的通俗解释是阮一峰老师的开发者手册,OAuth协议本身是一个不算简单的认证协议,之所以会日趋流行是因为它建立在了客户端开发者的简易性上,符合现阶段大平台小程
2020-07-05 19:22:45
483
原创 安全系列之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
2905
原创 安全系列之权限控制模型
前言这期分享一下几个权限模型,在设计系统的时候一个很重要的问题是权限。不同的场景用户会有不同的使用需求,如何设计一个合适的权限模型就显得尤关重要。下面会结合实际系统来介绍几种常见的权限模型。在经典教科书中一般对权限系统中权限的使用者为主体,操作所针对的对象为客体。数据库 大数据 文件系统 应用程序 APi一,DAC 自主访问控制(Discretionary Access Control)DAC是使用中最常见的权限模型,特点是每项操作都有其对应的权限,所有的权限存储在系统的ACL表中,每个
2020-06-14 10:15:56
2062
原创 Java进阶之JVM对象生命周期
前言上周有反映内容对于初学者较难,其实我觉得是讲的内容太多,导致自己不能生动具象地让所有人理解透彻,之后会注意。这里更提出两点建议适用于学习知识:1. 不要囫囵吞枣,理论性知识要逐字地去看2. 选取适当且固定的知识源,官网和经典书籍优先,养成学习惯性我写博客的目的就是更好地让大家理解难懂的概念,然后可以再去深入地讨论问题本期介绍JVM中对象的生命周期,应该算是一个常见且基础的问题,这里再拿出来重新梳理,希望能对读者有所帮助。一,Java 对象的本质什么是Java对象Java
2020-06-07 21:43:14
747
原创 安全系列之介绍Kerberos认证协议
前言一直以来Kerberos都是应用广泛的强/集群安全/网络身份验证/协议,虽然讲解资料也不少,但和HDFS一样很少有讲通的,很多都是使用kerberos原始论文的概念直接塞给读者,造成很多概念闭塞难懂。或者是讲故事买门票坐火车,例子很好懂,但没有和技术结合起来。这篇会按照理解难度从易到难,划分为四个部分,试着解决上边的问题统一做一下总结。目录前言一,入门 · Kerberos介绍二,表面 · 理解Kerberos三,里面 · Kerberos实质四,深入 · 重新认识Kerbe
2020-05-23 21:16:47
5422
原创 编程语言类型浅谈比较
前言前些日子群里有人问说了这么一段话引起里我的好奇:我一直觉得语言层上没有什么好说的,不过不知道大家在学习语言的时候有没有像他一样的困惑。他其实讲的是js对象和Java对象的区别,Java面向对象有继承,封装,多态三大特性,而js是基于对象的,继承等是通过原型链或其他方法进行实现。比如在上边的例子中Java对象可以这样实现:// JavaStudent stu = new Student(); //调用构造函数stu.setName("Allen"); //调用成员方法Sys
2020-05-17 13:33:23
422
原创 spring boot环境配置注入顺序
前言:一,工厂设计模式与spring boot二,观察者模式与spring boot三,spring boot启动流程四,spring boot环境注入
2020-05-11 16:59:30
1894
原创 2020.04 总结分享
前言这期应该是最后一次在c站登月刊啦,希望评审能过~做多和做空做多,通过先买后卖以期望从市场价格上涨中获利。比如我看好一只股票,觉得它日后会升值,那我现在买入,等到它市值高了再卖出,我就可以赚取中间的差价盈利。做空,通过先卖后买以期望从市场价格下跌中获利。再比如我觉得一只股票会大跌,我就会在现在它估值的时候贷款质押它的股票换取现金,等到之后股票市值跌了,再用当时的市值还回贷款,赚取...
2020-05-04 19:03:33
248
原创 如何使用github/hexo发布博客(新)
前言这篇文章从hexo的介绍开始到真正通过自己的域名访问自己的博客网站,之后可能会逐渐把中心放到个人资源的积累上,现在网站刚开始搭建,之后可能会引用新的框架所以目前只是发展中,好处在于这篇教程对新手应该是很友好的,最后欢迎访问我的第一个域名lishinho.top,开始我们的网站部署吧!目录前言一,什么是hexo二,部署之前的准备三,如何使用github/hexo发布博客...
2020-05-01 20:11:25
1313
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
342
原创 linux shell脚本学习第一篇 sed基础
此篇最好有一点linux内核以及操作系统知识,需要linux指令实际操作经验。另外这篇文章加了sed工具的基础,希望读完这篇文章大家能知道shell和关于shell脚本的概念及基本文件操作。一,脚本简介什么是shell?我在学习linux基础中有提过,linux操作系统四大组成结构分别是内核,文件系统,shell,用户程序。shell是用户与kernel内核交互的媒介,它本身是一个用 ...
2020-04-06 20:37:47
260
原创 2020.03总结分享
前言由一个月过去了,感觉时间很快,我的生活也慢慢变得规律,紧凑又忙碌着。这个月比较有意思的是我之前推荐的知识媒体好多都被我毒奶了:巫师洗文抄袭,回形针两面针,辩手阴阳怪气等等,感觉自己的毒奶能力有所提高;另一方面随着疫情扩张,慢慢影响到了海外以及全球的经济,结合原油下跌,奥运延开,感觉经济复苏可能会有很长一段路要走了,不过这个契机也让我有试身股市的念头。先说自媒体的事件,抄袭一直是大家很反...
2020-04-04 22:45:35
243
原创 如何拓荒github
这篇基础教学由于之前胡乱fork了很多没有实践的项目,需要为了以后的GitHub开发整理出来,这篇文章的目的就是github拓荒,怎么从一个杂乱的github开始到自己可维护的github项目工作站,之间讲解一些实际的操作。你可以学到:如何删除fork项目;如何在github新建项目;如何快速编写README.md文件;git基本命令操作;一,删除fork项目我的初始github是...
2020-03-29 22:19:23
126
原创 HDFS透明加密 从入门到放弃
这篇文章需要一点hadoop框架的基础,你最好需要知道什么是hadoop,以及需要了解hadoop的文件系统hdfs。如果你不了解的话,我会尝试用简单的原理来解释,希望能对你有用,这期内容可能有些烧脑,可以多读几遍,我也有学习不足的地方,欢迎提问。目录一,什么是HDFS二,什么是透明加密三,用户如何使用hdfs透明加密功能四,hdfs如何实现透明加密一,什么是HDFSh...
2020-03-28 20:27:10
3202
原创 怎么在docker上安装mysql
一,docker上安装mysql有的时候本地需要另外安装一个mysql并和本地并行使用,这个时候docker上的mysql就起作用了,谁不想同时拥有多个mysql呢,这篇文章希望能一站式解决你从无到有的状态。首先,你需要使用拥有一个docker,不管你是什么操作系统,都可以简单地从链接的教程或者直接从官网上下载。这里指ubantu版本,其他os大同小异。首先你可以从docker hub...
2020-03-22 18:26:46
879
1
原创 Java进阶之从ByteBuffer到设计缓存
最近在忙hadoop-common项目的国密算法适配,其中有涉及到一个基本问题引起我的注意,就是bytebuffer和byte[]的转化,网上的资料太繁杂,而且大多数真的是抄了一下,我在这里做下整理。而且想到面试的时候的一道经典面试题就是如何设计缓存,正好借着这个机会一起归总一下。这篇应该门槛不高,不过也需要一些java nio和缓存的基础,所以放到后台里面了。一,什么是ByteBuffer?...
2020-03-22 14:00:18
655
原创 vitess框架详解进阶版
之前有简单介绍vitess大致的用途和前景,这篇根据自己经验讲一下vitess这个项目的框架。一些vitess基础概念可以在简单介绍vitess中找到。一,vitess overview全框架在这一小节中,我会拿出vitess的整体大致框架,重新梳理vitess的优势与劣势,最后给出一个SQL查询在vitess的生命周期,供大家参考。首先还是youtube的这张图:从业务层上划...
2020-03-14 23:13:11
2235
1
原创 简单介绍之数据库种类与市场
我知道你一定听过Mysql,听过oracle,也可能听过redis,hive和mariaDB等等,他们都被人们称作数据库。但是你知道为什么数据库要分这么多种么?这么多数据库存在的价值是什么?这篇我们放轻松,浅略一下数据库的种类和各自特性。一,从数据库的历史说起我之前在技术面试中区分过数据库和DBMS的区别,这里指的数据库概念要自己区分好。数据库是用来存储数据的,随着计算机技术的发展,数...
2020-03-08 21:32:31
1277
原创 2020.02总结分享
我自从入职后,很久没有写记录日常的东西。这段时间经历了一段朝九晚九赶地铁的生活,思考了很久最后决定还是回到原点。刚开始写分享的时候,是因为看了很多身边浮躁的东西,对我的观念造成了很大冲击,那段时间让我的视野开阔了很多,可是眼光放长带来的不是解决问题的欢阔,而是会带来越来越多的思考和问题。当时影响我最深的是两处文章,其中一处就是阮一峰的科技爱好者网站上的文摘和书摘,我一直在想计算机科学对现实生活...
2020-03-07 21:45:47
467
原创 Golang基础第五篇——golang的gRPC
此篇的组织架构,第一节简述golang的rpc,第二节讲主体golang/grpc,第三节简述grpc应用的结构和特性。本身grpc是个上限很高的框架,这里的博文只科普,尽量简单地告诉你它做了什么,有什么用;关于使用,部署,以及更深层的原理还要自己发掘。
2020-03-07 20:50:32
8826
原创 Golang基础第四篇——从go并发到channel到定时器实现
目录一,Golang的并发编程二,关于goroutine三,关于channel四,Golang中的定时器一,Golang的并发编程在第一篇我们已经提到,golang最重要的一个特色就是他通过go关键字的并发处理。首先要知道为什么我们需要并发,并发为什么在如今作为一种语言特性如此重要?关于进程线程,堆栈的基础知识就不赘述(感兴趣可以翻我之前的blog),这里从市...
2020-02-29 22:07:12
1494
原创 Golang编程基础第三篇——Golang对Json处理
一,什么是JsonJSON(JavaScript Object Notation)是一种基于JavaScript语法子集的开放标准数据交换格式。JSON是基于文本的,轻量级的,通常被认为易于读/写。Json是一种比XML更轻量级的数据交换格式,更适合成为较为理想,跨平台,跨语言的数据交换语言,成为项目配置文件的首选。开发者可以用Json传输简单的字符串,数字,布尔值,也可以传输一个数组...
2020-02-23 18:14:03
1018
原创 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
971
原创 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
620
原创 简单介绍之Vitess
一,什么是VitessA database clustering system for horizontal scaling of MySQL由于MySQL数据库越来越多,大型的mysql集群越来越无法保证扩展性,所以在nosql和mysql中间通过中间件来实现mysql集群的分片管理。也就是- How to move hundreds of MySQL databases int...
2020-02-04 23:21:01
10473
原创 如何理解kubernetes概念
一,k8s框架与组件etcd(持久化存储)Etcd是CoreOS开源的一个高可用强一致性的分布式存储服务。Kubernetes使用Etcd作为数据存储后端,把需要记录的pod、rc、service等资源信息存储在Etcd中Etcd使用raft算法将一组主机组成集群,raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower、candidate与lea...
2020-02-04 13:15:43
192
原创 小编程之查询字符串包含字符种类
一,关于ASCII码ASCII码if(c<32) 控制字符else if(c>'0'&&c<'9') 数字else if(c>'a'&&c<'z') 小写字母else if(c>'A'&&c<'Z') 大写字母else 其它字母二,代码如何判断一个字符串含有以上所有类别的字符(假定字符...
2020-02-03 20:11:44
192
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人