自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王先森007的博客

王先森007

  • 博客(16)
  • 收藏
  • 关注

原创 二分查找

二分查找是一种非常简单易懂的快速查找算法。二分查找针对的是一个有序的数据集合,将区间一分为二,每次都跟区间的中间元素进行比较,当要查找的值比中间元素大时,到右区间进行下一次操作,否则到做区间进行相同的操作。时间复杂度假设数据大小为 n,每次查找后数据都会缩小为原来的一半,最坏情况下,知道查找区间被缩小为空,才会停止。因为每次区间都都是除以 2,所以我们可以列出来区间的大小变化。n,n/2,n/4,n/8,…,n/2^k,… 我们可以看出来,这是一个等比数列,其中 n/2^k = 1 时,k 的值就是总共

2021-01-31 21:32:58 108

原创 二叉树基础(上):如何遍历二叉树?

二叉树的前中后序遍历

2021-01-18 10:08:38 148

原创 JavaScript生成指定时间段的随机时间

随机时间有时候我们在 mock 数据时需要生成一些随机时间值,如果单纯的使用毫米级别的时间戳作为开始时间和结束时间,生成的随机时间会出现超出正常时间范围的值,例如生成 2019-08-22 13:23:98 秒超出 60 秒的范围。代码以供参考const moment = require('moment')const randomDate = (startDate, endDate) =...

2019-08-22 16:41:16 7276

原创 Nest.js框架下的 Mongoose 多数据库连接

Mongoose 多数据库连接单数据库连接Nest.js 框架在连接 MongoDB 数据库时,一般会有两种方式,一种是自定义提供者,专门提供一个数据模块。下面是官网给出的例子。// database.providers.tsimport * as mongoose from 'mongoose';export const databaseProviders = [ { ...

2019-06-09 22:20:24 2078 1

原创 Nest.js 单元测试踩坑之旅

单元测试中的坑官方例子我们先来看官方给出的测试用例import { INestApplication } from '@nestjs/common';import { Test } from '@nestjs/testing';import * as request from 'supertest';import { CatsModule } from '../../src/cats/...

2019-06-02 21:00:39 3381 3

原创 Mongdb Aggregate 聚合查询简单使用

最近项目中遇到需要对查询出来的数据进行分组统计,用到了聚合查询,之前都是用代码进行统计。因为我以前一直有一个误区就是轻易不要实用聚合查询,因为当数据量超过一定程度,mongoose 就会保错,所以最近阅读了一下官方文档,解决我的疑惑。Aggreagte使用聚合查询之前,我们要搞清楚这里面的操作符都是干嘛的。$macth 匹配数据,根据给定的条件,过滤掉不符合条件的数据。$group 进...

2019-05-04 16:55:10 794

原创 JavaScript 原生数组的用法

数组是值的有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。JavaScript 数组是无类型的,也就意味着任何类型都可以放进数组,可以有一种类型,也可以有多种类型数组方法push() 和 pop()允许将数组当做栈一样来使用,两个方法都修改并替换原数组而非生成一个修改后的新数组。push()描述:向数组末尾添加一个或多个元素参数:至少一个元素返...

2018-09-24 20:30:18 225

原创 JavaScript 基本数据类型以及如何进行判断

JavaScript 有以下几种基本数据类型Boolean有两个值 true 和 falseNull只有一个 null 值Undefined一个没有被赋值的变量会有个默认值 undefinedNumber表示数字,整数浮点数都行,还有一些带符号的值 +Infinity,-Infinity 和 NaN(非数值,Not-a-Number)要检查值是否大于或小于 +/-Infini...

2018-09-24 16:26:37 246

原创 Java 源码分析-java.util.LinkedList

原理LinkedList 的底层实现是双向链表,不支持随机访问,因此查询速度相对较慢,但删除和插入元素则会很快,只需更改节点的前驱和后继的指向。源码分析//元素个数transient int size = 0; //第一个元素 transient Node<E> first; //最后一个元素 transient Node<E...

2018-09-05 21:30:08 134

原创 Java 源码分析-java.util.ArrayList

前言最近在面试中,面试的几家公司几乎都问到了是否看过 Java 的源码,我只能回答没有看过。在之前的学习中,确实忽略了看源码这一重要的学习手段。最近准备看一看面试中常问的一些关于 Java 源码的。ArrayListArrayList 和 LinkedList 是面试中几乎必问的,所以今天先分析一下 ArrayList 的源码。原理ArrayList 是我们使用最多的集合,...

2018-09-02 15:31:56 295

原创 使用 Jenkins 和 Docker 实现持续集成和自动化部署

使用 Jenkins 和 Docker 实现持续集成和自动化部署现在项目的版本更新都很快,人工部署的方式已经显的有些跟不上节奏,再加上项目迁移部署的环境配置问题,无疑都会增加我们的工作量。我在自己的项目上,搭建了这一套完整的持续集成和自动化部署的解决方案,已下是搭建这套解决方案的过程,希望能为其他有需要的小伙伴提供参考。搭建 Jenkins 构建环境首先,我们去 Jenkins...

2018-07-24 23:03:12 11561 1

原创 【深入理解 JVM】之内存区域

阅读 《深入理解 Java 虚拟机》一书的读书笔记Java 内存区域与溢出异常Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存区域划分为若干个不同的数据区域 程序计数器 是一块较小的内存空间,主要用来指示执行哪条指令。可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。每一个线程...

2018-04-01 10:54:51 262 2

原创 CAS之自定义登录遇到的问题总结

在改造 CAS 单点登录之自定义登录的过程中遇到了很多的问题,现在把这些问题写下来,也是自己对于单点登录的一些总结。将 CAS 集成进老项目首先碰到的一个问题就是如何将老项目原有的登录逻辑换成 CAS 的,因为 CAS 分为服务端和客户端,我们的项目就是一个客户端,但是因为是一个老项目,所以如果贸然改,会碰到很多意想不到的 Bug。原有项目是根据 Spring Security 进行用户...

2018-03-24 17:00:20 1572

原创 CAS 单点登录之自定义登录

开源的 CAS 单点登录本身已经提供了一个统一的登录页面,也就是我们配置好之后,所有的没有登录的请求都会拦截到自带的登录页面,我们可以根据自己的需求来改造这个页面,但是,需求是多种多样的并且有时候总是更改的,我就碰到过这种情况,有时就会让人很崩溃。很多时候,我们都是接手别人的代码,而且大多都是比较成熟,并且有一定时间的项目,我们总是在前人的基础进行修修补补。就拿单点登录来说,我相信大多数项目都...

2018-03-14 23:54:56 1145

原创 CAS 单点登录简介

前一段时间,公司项目因为要与其他项目之间进行集成,弄成一个整体的大项目,因为各个项目都是老项目了,每一个项目都有一个自己的登录过滤机制,这时的需求就变成了只需一次登录,就可以登录进去其他子项目,不用每次访问其他项目都需要登录一次。这个任务就交给了我这个刚毕业参加工作没多久的身上,说实话,对我来说还是挺难的。后来在网上查找各种资料,就选定了用的比较多的成熟框架 CAS 。在实际开发中,也碰到了很...

2018-02-26 20:54:20 584

原创 Git初识-学会分布式版本控制系统

初识GitGit是目前最先进的分布式版本控制系统,我大家都知道以前有一个版本控制系统SVN,想必大部分的码农都应该用过,SVN是一个集中式的版本控制系统,相当于一个服务器,项目组的成员在进行开发时,先从服务器上将代码下载出来,然后 进行开发工作,最后提交自己的代码。集中式的最大的问题就在于需要联网才能进行相应的工作,如果上传的文件过大,加上网速不行,就会无比的蛋疼。Git是分布式的,我们自己每

2018-01-29 21:10:13 198

空空如也

空空如也

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

TA关注的人

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