自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白夜行

冗长的黑暗中,你是我唯一的光。

  • 博客(281)
  • 资源 (25)
  • 收藏
  • 关注

原创 【剑指offer】Java版代码(完整版)

一、引言《剑指offer》可谓是程序猿面试的神书了,在面试中帮了我很多,大部分面试的算法题都会遇到原题或者是类似的题。但是书上的代码都是C版的,我在这里整理了一份Java版的代码供大家学习参考,这些代码我都是在OJ上跑过全AC的,所以正确性你大可放心。二、目录赋值运算函数单例设计模式二维数组中查找目标值替换字符串中的空格从尾到头打印链表由前序和中序遍历重建二叉树用两个

2017-11-02 19:44:44 69538 61

转载 做一个三有职场新人

学习总结是对人是否快速吸收新知识的判断,学习是像海绵一样能吸收外界的知识和能量,而总结是把吸收到的新知识转化成为自己的知识,是要经过一个加工的过程,最终为我所用。怎么判断人的学习总结能力?学习能力我觉得可能是一个人持续发展最重要的能力之一,如果锻炼自己的学习能力,首先你要有一个愿意去发现自己不知道的知识的意愿,然后要去实际的行动起来,成人不像学生时代还有人去逼你,你要有自驱力。然后你还要要三省吾身,把自己的所学实际运用,与周围的人收集评价得到反馈,再加以修正。最好留下好的、有价值的进行总结,吸纳到自己的知识

2022-06-22 22:14:55 221

转载 职场晋升需过这三关

又到了晋升季,没被提名的同学不高兴,提名了晋升不成功的又不高兴,晋升成功了,做的事情如果没变化的话,又开始迷茫了,可能又要转岗或者离职,大家都不高兴。那么你、你的主管代表的组织、你支持业务方和公司的晋升委员会四方,他们分别对晋升这件事的真实诉求是什么样的呢?不妨试着回答这几个问题:正常情况下我们每个人自然都想晋升,那在职场中,有哪些因素、哪些人会影响你的晋升呢?那我们先看看,你想晋升首先要获得提名吧,要获得提名首先需要你有好的绩效,然后潜力也很重要,还是就是价值观、岗位时间以及个人晋升诉求等这些因素。可以对

2022-06-22 21:47:09 270

转载 这些年从身边TL身上学到的三种思维

增长飞轮是我前2年做业务技术时学到的一种非常好的思维方式,他要求我们做一件事件时要动态的看他的发展过程,随着时间的积累我们的能力、优势、资源能不能不停的正向的循环增长,换句话说,他是不是可持续的很关键。不管是做的事件还是人的发展,都要以这种增长的思维去思考。例如,我们考虑持续优化我们的类目属性数据,我们不能以运动式做优化,曾经我们做过一次CPV数据的清洗,但是随着时间的迁移CPV数据又很乱了,所以我们要形成一个自循环的反馈回路:通过算法发现和挖掘属性然后通过在主搜上做A/B Test活动这个属性的反馈信息,

2022-06-22 21:10:57 246

原创 从0开始学架构

1. 基础架构1.1 基本概念系统:由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。模块与组件:模块是一套一致而互相有紧密关连的软件组织;而组件是自包含的、可编程的、可重用的、与语言无关的软件单元。其实模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。框架关注的是规范,架构关注的是结构架构设计的主要目的:为了解决软件系统复杂度带来的问题。复杂度来源高性能:单台计算机内部/多台计算机集群 为了高性能带来的复杂度

2022-04-16 20:16:48 1407

原创 设计模式之美

介绍26种设计模式与常用设计原因,教你如何写出高质量的代码

2022-04-13 21:11:18 994

原创 DDD究竟是什么

领域驱动设计架构

2022-04-10 17:11:45 37470 1

原创 RocketMQ原理剖析

RocketMQ架构图

2022-04-10 16:50:04 2263

原创 docker基本原理与常用命令

1.Docker介绍1.1 docker简介使用Go语言进行开发实现,基于Linux内核的cgroup, namespace,以及OverlayFS类的Union FS等技术,由于隔离的进程独立于宿主和其它的隔离进程,因此也称为容器。基于OS层的虚拟化技术之上的容器引擎,实现对进程的封装隔离。开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。1.2 docker与虚拟机的区别在docker出现之前,一般使用的是虚拟机,为什么现在docker成为主流,它们

2022-04-07 23:06:20 866

原创 面试常考LeetCode题(附Java版题解)

精心搜集近年来各大厂面试常考LeetCode题

2021-04-03 22:45:22 987

原创 红包分配算法的实现

1. 前言最近在做一个抢红包的项目,关于红包怎么分配,才能达到一个最佳效果,我做了一些调研以及对应的实现方案。关于每个红包金额的范围采用二倍均值算法[0 .01 - M/N * 2],其中M表示总金额,N表示红包个数。比如:总金额100元分为10个红包,均值:100/10=10元,每个红包金额的范围就是 [0.01 - 20],即1分到20元之间,但范围内的随机值该如何产生,接下来进行分析2.生成随机数算法线性同余算法:生成一个均匀分布的伪随机数,例如:java.util.Random.nex

2021-03-28 16:36:52 1559 1

原创 【面试题】15.项目相关

15.1 抢红包15.1.1 项目架构图15.1.2 项目难点15.2 直播15.2.1 项目架构图15.2.2 项目难点15.2.3 项目亮点15.3 地城之歌15.1.1 项目架构图H5地城之歌游戏架构图WebService:负责维护服务器列表,记录服务器状态信息、玩家账号信息(渠道第三方用户ID是否在游戏内已经创建账号,该ID登陆过的服务器信息,该ID使用过的特殊礼品码信息)等。Logic Server:逻辑服务器,负责游戏内所有系统功能活动的实现。通过WebSoc

2021-03-06 23:27:43 329

转载 新一代垃圾回收器ZGC的探索与实践

1. 引入1.1 GC之痛很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰。GC停顿指垃圾回收期间STW(Stop The World),当STW时,所有应用线程停止活动,等待GC停顿结束。以美团风控服务为例,部分上游业务要求风控服务65ms内返回结果,并且可用性要达到99.99%。但因为GC停顿,我们未能达到上述可用性目标。当时使用的是CMS垃圾回收器,单次Young GC 40ms,一分钟10次,接口平均响应时间30ms。通过计算可知,有(40ms + 30ms) * 10次 /

2021-02-17 18:47:18 226

转载 Zookeeper 的五个核心知识点

原文链接:Zookeeper 的五个核心知识点

2021-02-17 17:47:19 206

转载 秒杀系统架构分析与实战

原文链接:秒杀系统架构分析与实战

2021-02-17 17:44:39 176

转载 MQ消息中间件常见面试题

1. 为什么使用消息队列面试官问这个问题的期望之一的回答是,你们公司有什么业务场景,这个业务场景有什么技术挑战,如果不用MQ可能会很麻烦,但是再用了之后带来了很多好处。消息队列的常见使用场景有很多但是核心的有三个:解耦、异步、削峰1.1 解耦场景描述:A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人崩溃中…再来点崩溃的事儿,A系统要时时刻刻考虑BCDE四个系统如果挂了怎么办?那我要不要重发?我

2021-02-16 22:32:41 1348

转载 分布式事务原理及解决方案

1. 引入1.1 前言今天我想和大家一起盘一盘分布式事务,会介绍常见的分布式事务实现方案和其优缺点以及适用的场景,并会带出它们的一些变体实现。还会捎带一下分布式数据库对 2PC 的改进模型,看看分布式数据库是如何做的。然后再分析一波分布式事务框架 Seata 的具体实现,看看分布式事务究竟是如何落地的,毕竟协议要落地才是有用的。1.2 CAP 定理在理论计算机科学中,CAP 定理指出对于一个分布式计算系统来说,不可能通是满足以下三点:一致性(Consistency)所有节点访问同一

2021-02-16 21:32:59 736

转载 Spring的@Configuration详解

原文链接:Spring的@Configuration详解

2021-02-15 22:49:08 1023

转载 Spring Boot 启动原理解析

原文链接:Spring Boot 启动原理解析

2021-02-15 22:42:18 149

转载 工作中常用的正则表达式

一、校验数字的表达式数字:^[0-9]\*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]\*)$非零开头的最多带两位小数的数字:^([1-9][0-9]\*)+(\.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$有两位小

2021-02-15 22:09:57 169

转载 【mq基础】Rabbitmq、Kafka、Rocketmq该怎么选择

一、资料文档Kafka:中。有kafka作者自己写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少。没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述。activemq:多。没有专门写activemq的书,网上资料多。二、开发语言Kafka:Scalarabbitmq:Erlangzeromq:crocketmq

2021-02-15 17:38:25 1313

转载 写给工程师的十条精进原则

原文链接:写给工程师的十条精进原则-美团技术博客引言时间回到8年前,我人生中第一份实习的工作,是在某互联网公司的无线搜索部做一个C++工程师。当时的我可谓意气风发,想要大干一场,结果第一次上线就写了人生中第一个Casestudy。由于对部署环境的不了解,把SVN库里的配置文件错误地发到线上,并且上完线就去吃晚饭了,等吃饭回来发现师傅在焦头烂额地回滚配置。那次故障造成了一个核心服务20分钟不可用,影响了几百万的用户。这仅仅是一个开始,在后来半年的时间里,我几乎把所有职场新人可能犯的错误都犯了个遍。.

2021-02-14 23:53:36 143

转载 IntelliJ IDEA 常用快捷键

IDEA对新手来说难,可能其中一个原因就是快捷键组合多而且复杂但是它也很全,基本所有功能都可以通过快捷键来完成,可以这么说,如果你掌握了所有IDEA的快捷键使用,那么你完全可以丢掉鼠标,而且不影响开发效率。一、Ctrl 快捷键Ctrl + F 在当前文件进行文本查找 (必备)Ctrl + R 在当前文件进行文本替换 (必备)Ctrl + Z 撤销 (必备)Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)Ctrl + X 剪切光标所在行 或 剪切选择内.

2021-02-14 23:07:19 198

原创 【MySQL深入】分库分表原理

1.背景随着公司业务的高速发展,数据量越来越大,已经到达了千万级别,预计不久后就会破亿。原来的MySQL架构(一主多从)已不适应这么大的数据量,所以急需技术升级。数据量预计:现在单表的数据量在1400万行左右,按照现在的业务,每天5.6万的增量,一年增加2050万左右,加上业务的增长,预计在3年后达到亿级。当数据量达到千万甚至上亿时,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在以下几个方面数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会降下。数据库文件会得很大

2021-02-14 18:01:53 1188 2

原创 【MySQL深入】MySQL杂谈

1. MySQL的抖动脏页:当内存数据页跟磁盘数据页内容不一致,干净页:内存数据写入到磁盘后,内存和磁盘上的数据页的内容一致平时执行很快的更新操作,其实就是在写内存和日志,而MySQL偶尔“抖”一下的那个瞬间,可能就是在刷脏页(flush)。刷脏页的时机:InnoDB的redo log写满了。系统会停止所有更新操作,把checkpoint往前推进,redo log留出空间可以继续写(整个系统就不能再接受更新了,所有的更新都必须堵住)系统内存不足。当需要新的内存页,而内存不够用的时候,就要淘汰

2021-02-13 22:04:03 161

原创 【MySQL深入】主从复制原理

1. MySQL主从复制主从复制步骤1)、主库db的更新事件(update、insert、delete)被写到binlog2)、从库发起连接,连接到主库3)、主库创建一个binlog dump thread,把binlog的内容发送到从库4)、从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log5)、从库创建一个SQL线程,从relay log(中继日志)里面读取内容并且在备库执行,当SQL线程赶上IO线程的时候,中继日志通常记录在系统缓存中,所以的开

2021-02-13 21:11:20 179 2

原创 【MySQL深入】SQL查询优化

1. 查询优化点尽量避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引尽量避免在 where 子句中对字段进行 null 值判断尽量避免在 where 子句中使用!=或<>或or操作符,可以用IN()取代OR尽量避免在 where 子句中对字段进行函数操作尽量避免大事务操作,提高系统并发能力避免查询不需要的数据,尽量少用select * ,只查询需要的字段即可。只要一行数据时使用 LIMIT 1永远为每张表设置一个ID作为主键把IP地址存成 UNSI

2021-02-13 17:43:46 253

原创 【MySQL深入】锁详解

1.锁概述锁的定义:计算机协调多个进程或线程并发访问某一资源的机制。但加锁会消耗资源共享锁与排他锁共享锁(读锁):其他事务可以读,但不能写。例如:select * from article lock in share mode;排他锁(写锁) :其他事务不能读取,也不能写。例如:select * from article for update;乐观锁与悲观锁悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完

2021-02-13 12:10:48 115

原创 【MySQL深入】事务原理

1.事务的隔离级别1.1 事务基本概念请参考我之前写的博客:【MySQL基础】事务1.2 SQL标准的事务隔离级别读未提交(read uncommitted):一个事务还没提交时,它做的变更就能被别的事务看到。读提交(read committed):一个事务提交之后,它做的变更才会被其他事务看到。可重复读(repeatable read):一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的串行化(serial

2021-02-09 21:39:36 125

原创 【MySQL深入】索引优化

一、索引概述1.1 索引的定义索引是为了提高数据查询的效率,就像书的目录1.2 索引的常见模型哈希表是一种以键-值(key-value)存储数据的结构,但是多个key值经过哈希函数的换算,可能会出现同一个值的情况。解决方法是拉出一个链表(链地址法)。哈希表的结构适合只有等值查询的场景有序数组索引:等值查询和范围查询场景中的性能较好,但只适用于静态存储引擎,更新时效率低N叉树:“N”取决于数据块的大小。查询和更新的时间复杂度都是O(log(N)),二叉树搜索效率最高,但大多数据库存储并没有使

2021-02-06 10:32:38 138

原创 【MySQL深入】Explain详解

1.Explain概述使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的。在日常的工作中,我们经常需要借助EXPLAIN来查看SQL语句的执行计划,查看SQL语句是否用上了索引,是否进行了全表扫描,来分析SQL的性能瓶颈。在select语句之前增加explain关键字,MySQL会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行SQL。EXPLAIN可以查看 SELECT, DELETE, INSERT, REPLACE,和 UPDATE语

2021-01-24 22:37:57 619

原创 【MySQL深入】一条SQL更新语句的执行过程

1.MySQL逻辑架构示意图对于一条update语句来说,也会执行上图中的流程,如果您对于上图中的连接器、分析器等名词不太熟悉,请查看上一篇文章:MySQL逻辑架构中各名词详解2.一条示例update语句执行过程简析# 建表SQLcreate table `article` ( `id` bigint(20) unsigned NOT NULL DEFAULT '0', `commentcnt` int(11) unsigned NOT NULL DEFAULT 0,

2021-01-23 11:23:58 4285 7

原创 【MySQL深入】一条SQL查询语句的执行过程

1.MySQL基本架构示意图MySQL可以分为Server层和存储引擎层两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。2.连接器定义:负责跟客户端建立连接、获取权限、维持和管理连接。mysql -h

2021-01-17 11:11:03 616 2

原创 《高性能MySQL》读书笔记

第一章 MySQL架构与历史MySQL逻辑架构并发控制:读写锁、锁粒度、表锁。行锁事务:ACID、四种隔离级别多版本并发控制(MVCC):通过保存数据在某个时间点的快照实现。分为乐观与悲观MVCC。InnoDB的MVCC是通过在每行记录后面保存两个隐藏列实现的。一个保存行的创建时间,一个保存行的过期(删除)时间。存储的并不是实际的时间值,而是系统版本号,每开始一个新的事务,版本号会自动自增。MVCC只在RR和RC隔离级别下生效,因为RU总是读取最新的数据行,seriali

2021-01-16 22:57:04 211 2

原创 《Redis开发运维实践指南》读书笔记

第1章 数据操作keys * 命令会一次性遍历整个数据库来获取所有与给定模式相匹配的键,键值对越多执行速度越慢,线上禁止使用该命令,使用SCAN命令替代。SCAN命令以渐进的方式分多次遍历整个数据库。scan遍历顺序采用高位进位加法来遍历,进位的方向是从高位到低位,原因是考虑到字典的扩容和缩容时避免槽位的遍历重复和遗漏。分类keysscan遍历方式一次性遍历整个数据库并返回所有结果每次遍历数据库的一部分键并返回一部分结果阻塞服务器可能会不会出现重复值不会

2020-12-30 21:45:48 209

原创 《clean-code-php》读书笔记

第1章 变量使用见字知意的变量名同一个实体使用相同的变量名使用便于搜索的名称,避免出现魔数(使用常量替换)变量命名尽量做到自解释性避免多层ifelse嵌套,尽早返回少用无意义的变量名变量名不冗余,可从上下文中获取就不用体现在变量名中合理使用参数默认值第2章 表达式当变量类型不同并需要区分时使用恒等式替代等式3. 函数函数参数最好少于两个一个函数只有一个功能函数名应该做到见名知意函数应该只有一层抽象不要用boolean作为函数参数避免函数带来的副作用不要写全局函数

2020-12-30 20:24:57 97

原创 《细说PHP》读书笔记

第1-5章 略第6章 PHP基本语法6.1 PHP的应用收集表单数据生成动态网页字符串处理动态输出图像处理服务器端文件系统编写数据库支持的网页会话跟踪控制处理XML文件支持利用大量的网络协议服务器端的其他相关操作6.2 PHP语言标记标准风格:开始标记是<?php,结束标记是?>指令分隔符:分号程序注释:多行注释/* */,单行注释//或#空白的处理:使用两个空行:一个源文件的两个代码片段之间、两个类的声明之间使用一个空行:两个函数声明之间、注释之前

2020-12-28 09:54:14 369

原创 《代码整洁之道》读书笔记

第一章 整洁代码糟糕的代码产生混乱的影响。保持代码整洁不但有关效率,还有关生存。整洁的代码只做好一件事简单代码的规则:能通过所有测试;没有重复的代码;体现系统中的全部设计理念;包含尽量少的实体,如类、方法、函数等第二章 有意义的命名名副其实:如果名称需要注释来补充,就不算名副其实。避免出现魔数。避免误导:避免使用小写字母l和大写字母O作为变量名做有意义的区分:避免使用a1、a2作为变量名。废话都是冗余,variable不应该出现在变量名中table也不应该出现在表名中。如:NameS

2020-12-23 20:56:47 271 2

原创 《RabbitMQ实战》读书笔记

第一章 天降神兵RabbitMQ是一个开源的AMQP实现,用Erlang语言编写,支持多种开发语言,用于在分布式系统中存储转发消息。第二章 理解消息通信生产者:创建消息并设置标签消费者:接收并消费消息信道:生产者。消费者与RabbitMQ建立连接,即创建一条AMQP信道,每个信道有唯一的Id,一个TCP连接可以创建多个信道AMQP消息路由必须包含三部分:交换器、队列和绑定。消费者接收消息,单个消息:basic.get命令,持续接收:basic.consume命令,消息到达队列自动接收。.

2020-12-06 22:39:30 191

原创 《RabbitMQ实战指南》读书笔记

读书笔记第一章 RabbitMQ简介第二章 RabbitMQ入门第三章 客户端开发向导第一章 RabbitMQ简介消息队列中间件:利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。分为点对点和发布订阅的传递模式。消息中间件的作用:解耦、冗余(存储)、扩展性、削峰、可恢复性、顺序保证、缓冲、异步通信。RabbitMQ的特点:可靠性:持久化、传输确认及发布确认等;灵活的路由:消息进入队列之前,通过交换器来路由消息;扩展性:多个节点可组成集群;高可用性

2020-11-29 23:36:04 248

《剑指Offer》题目及代码(修订版4).pdf

《剑指offer》的Java版代码实现(修订版4),有题目和解题思路,对部分代码重新排版,解决了部分代码消失的问题。

2019-06-16

《剑指Offer》题目及代码(修订版2).pdf

《剑指offer》的Java版代码实现(修订版2),有题目和解题思路,修改了部分题目的代码和解题思路。

2019-06-16

《剑指Offer》题目及Java版代码(带目录)

最全的《剑指offer》Java版代码实现,带目录高清完整版,保证正确性,全都在OJ上测试AC了。

2019-03-03

《剑指offer》Java版代码

最全的《剑指offer》Java版代码实现,保证正确性,全都在OJ上测试AC了。

2017-11-02

技术之瞳 阿里巴巴技术笔试心得.pdf

2017-04-11

高性能Linux服务器构建实战:运维监控、性能调优与集群应用.pdf

2017-04-11

GNULINUX初学之旅.pdf

2017-04-11

2017各大互联网公司校招要求.docx

2017-04-11

MySQL面试题.pdf

2017-04-11

progit2-中文版

2017-04-11

mysql 驱动 .jar

2017-04-11

netty jar包

netty jar包

2017-04-11

struts2.jar

2017-04-11

MySQL 5.1 参考手册

2017-04-11

linux 2 参考手册

2017-04-11

java 8 API 英文原版

2017-04-11

dom4j参考手册

2017-04-11

HTML参考手册-日常使用

HTML参考手册-日常使用

2017-04-11

java开发手册

介绍了Java的命名规约!

2017-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除