自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rubyfun

对世界保持新奇感

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

原创 leetcode-119-二叉树的右视图

题目给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路1. dfs 深度...

2020-04-22 22:06:42 145

原创 leetcode-466-统计重复的个数

题目由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,["abc",3]=“abcabcabc”。如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,"abc" 可以从 “abdbec” 获得,但不能从 “acbbe” 获得。现在给你两个非空字符串 s1 和 s2(每个最多 100 个字符长)和两个整数 0...

2020-04-19 23:08:32 197

原创 leetcode-11-盛最多的水

题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳...

2020-04-18 22:12:17 137

原创 leetcode-56-合并区间

题目:给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...

2020-04-16 23:03:09 140

原创 docker + rails 6

环境ubunturuby 2.5.3rails 6mysql 5.6 首先保证本地环境安装了docker 和 docker-compose , 可以通过sudo docker infosudo docker-compose version查看docker 和 docker-compose 是否成功安装, 安装方式参考使用Dockerfile定制镜像Dockfile 是...

2020-03-23 18:16:57 226

原创 从浏览器输网址到获取响应的过程

举个????我们从浏览器输如 http://huijianwang.com/2019-10-30-hello_world.html, 按下回车时, 浏览器会进行:1. 域名解析DNS会对huijiangwang.com 这个域名进行解析首先会检查浏览器缓存, 如果缓存中存在对应的解析条目,而且没有过期,那么就会返回缓存中的条目, 解析结束.如果缓存中没有对应的可用解析, 就会去查找操作系统本...

2020-01-16 15:17:57 255

原创 HTTP相关组件

1.简介HTTP 即 超文本传输协议(Hypertext Transfer Protocol )超文本早期的互联网中两台服务器之间的信息传输通常都是以有意义的能够被计算机解析的数据包(文本)的形式进行的,但随着互联网的发展, 人们希望能够传输图片、音频、视频,甚至以超链接的形式进行跳转, 这就是文本含义的拓展---超文本传输两台服务器之间进行通信, 会把超文本解析成二进制的数据包, 通过...

2020-01-16 14:41:37 215

原创 祖先链

概念祖先链:通俗点就是找到一个类的祖宗(BaseObject)过程中的路径祖先链.png组成祖先链由类和其超类 以及module 组成每一个对象(obj)都属于一个类(class), class的超类是Object, Object的超类是BasicObject, 在这个过程中可能还引入了module, module 也是祖先链中的一环。当一个类(模块)包含一个模块,ru...

2019-10-28 15:56:02 275

原创 Jinkens 部署rails 服务

最近把rails项目改为使用脚本部署后,每次发版都需要登录服务器,而且java项目使用的jenkins部署,故改为jenkins部署,这里记录一下踩的坑。1.创建一个自由风格的项目因为打算执行shell来部署脚本,故选用free_style的项目,如果选用流水线的话需要在rails 项目加一个JenkinsFileimage.pngjenkins的项目名称要与要部署的项...

2019-10-17 19:10:49 120

原创 6位邀请码生成

背景:邀请是一种常见的裂变方式,这里生成全局唯一的6位邀请码。思路:由 0-9 加上24个大写字母(去掉容易混淆的IO)组成的6位邀请码最多可以6^34种组合, 大概在15亿。对34重复取余,将余数作为字符数组的下标追加到邀请码的最后超过6位去除多余的部分, 不足6位用字符数组的某一位补充class InvitationCodeService CODE_SIZE = 6 ...

2019-10-15 18:52:13 4653

原创 Nginx配置

nginx.conf 配置user www www; #运行用户worker_processes 2; #启动进程,一般与CPU核数相等,autoerror_log logs/error.log; #错误日志位置 和 等级#error_log logs/error.log ...

2019-09-25 18:02:38 108

原创 leetcode-50-Pow(x, n)

题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n...

2019-07-28 20:34:07 91

原创 JWT

简介JWT(json web token)是一种基于json的,在网络上声明某种主张的令牌(token)。JWT定义了一种紧凑且自包含的方式,用于作为JSON对象在各方之间安全地传输信息。一般使用对称加密(HMAC算法)或非对称加密(RSA)进行签名。结构JWT一般包含三个部分: 头部信息(Header),消息体(Payload), 签名(Signature)头信息 Header头信息由...

2019-07-25 23:18:50 152

原创 基本排序

冒泡 O(n^2)比较数组中第一个元素和第二个元素的大小,如果第一个元素比第二个元素大,那么交换它们的位置。如果第一个元素比第二个元素小,那么不做任何操作。再比较第二个元素和第三个元素,如果第二个元素比第三个元素大,那么交换它们的位置。反之,也不做任何操作。以此类推,直到比较完倒数第二个元素和倒数第一个元素。此时,整个数组里面最大的元素已经被移到了数组的末尾。再在除最后一个元素的剩余元素...

2019-07-22 10:08:41 83

原创 ruby基础功能-mysql优化

优化SQL,其实是优化查询优化器,使其按照我们的想法,帮助我们选折最优的执行方案优化建议EXPLAIN写在SQL前面,可以查看SQL的查询计划in 包含的值不应太多MySQL对于IN做了相应的优化,是将IN的常量存储于一个数组中,并且有序排列,如果此时数值较多,产生的消耗就会很多优化建议: 如果可以使用范围,就用范围表示SELECT语句尽可能标明字段名称SEL...

2019-07-22 07:34:30 102

原创 redis-入门

redis简介redis是一款开源的高性能的非关系型数据库(NoSQL, Not only sql)redis特点高性能(在内存中,高IO)数据类型丰富能够持久化支持master-slave模式的备份所有操作都是原子性的redis 数据类型字符串、列表、散列、集合、有序集合字符串 String字符串是Redis最基本的数据类型,一个key对应一个value,一个key...

2019-07-21 12:41:45 93

原创 leetcode-235-二叉树搜索的最近公共祖先

题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释:...

2019-07-19 09:03:55 87

原创 leetcode-236-二叉树的最近公共祖先

题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释:...

2019-07-18 07:48:30 104

原创 leetcode-215-数组中第K大的元素-堆

题目:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度思路:直接排序,取第k大的元素即...

2019-07-17 19:58:18 103

原创 leetcode-98-有效的二叉搜索树

题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 ...

2019-07-15 12:09:34 378

原创 rails基础-使用redis记录点赞数

为什么使用redis社交平台每天的点赞操作都非常的多,如果每一次的点赞都写入数据库,对数据库而言是一个非常大的负担,因此使用redis记录点赞数,再每天定时写入库中做持久化是一个理想的解决方法。redis 数据结构redis中有5种数据结构,string、hash、list、zset、 set结构类型操作存储的值读写能力stringset get字符串、整数、...

2019-07-14 08:05:00 590

原创 关于北京

2019年7月12日,我裸辞了,距离我来京已经过去了1年3个月12天,我终于要离开这个城市,去离家更近的魔都。公司的诸君为我送了行,感慨良多,这15个月的北漂生活终究是收获了一堆朋友,师长。C君是我的技术经理,平时很温和的一个人,但我内心其实有些怕他,我依旧清楚的记得一年前我来公司面试,他问了很多基础,然而我并不会,甚至于概念都不清楚,大概害怕就是那个时候留下的吧。在今天之前,我都以为当初能收...

2019-07-13 00:09:45 115

原创 leetcode-20-有效的括号

题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路:使用栈可以保证时间复杂度为O(n)将左括号加入栈检测右括号,如果栈顶元素能匹配,则将栈顶元素pop,不能匹配则直接返回false最后检测栈是否为空,为空即有效...

2019-07-12 00:08:22 99

原创 leetcode-141-环形链表

题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tru...

2019-07-11 22:04:16 123

原创 leetcode-24-两两交换链表中的节点

题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3思路:生成一个链表 tmp, tmp.next 指向head需要三个指针 分别记录head.next, head.next.next, 和head的前一个...

2019-07-11 01:35:40 89

原创 leetcode-206-反转链表

题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:这题是链表中的基础题也是一道经典题单链表每一个节点中保存着下一个节点的指针,只需要将指针指向上一个节点就可以实现反转链表\我们需要两个指针, 一个指向当前节点,一个指向前面的节点cur, p...

2019-07-10 22:47:26 120

原创 元编程-类定义

类定义注意: 类也是对象当前类在程序顶层,当前类为main对象的类 Objectclass 打开一个类时(或者打开一个module),打开的类即当前类在一个方法中,当前类即当前对象的类 # 顶层的类为Object,若在此定义方法则为Object的实例方法 class MyClass # class 打开的MyCl...

2019-07-09 22:26:21 109

原创 rails基础-解决 n+1

N+1问题是新手常犯的一个问题,这里记录如何解决rails项目中的N+1问题rails 支持的关联ActiveRecord 支持6种关联belongs_tohas_onehas_manyhas_many_and_belongs_tohas_one :thoughthas_many :thought以为为model作为示例:# rails中使用声明的形式来为模型添加功能,...

2019-07-08 22:33:56 250

原创 ruby基础功能-国际化

概念 及 相关GEM把应用翻译成英语之外的其他语言,或提供多语言支持rails 2.2以上版本,自带的ruby I18n gem, 提供了易用易扩展的框架“国际化”(internationalization)过程通常是指,把所有字符串及本地化相关信息(例如日期或货币格式)从应用中抽取出来“本地化”(localization)过程通常是指,翻译这些字符串并提供相关信息的本地格式I1...

2019-07-07 22:36:04 219

原创 ruby基础功能-数据验证

数据验证验证表单提供的数据是否符合要求使用rails自带的内置辅助功能ActiveRecord Validation 来实现https://ruby-china.github.io/rails-guides/active_record_validations.html何时验证ActiveRecord Validation 会在执行sql(即save/create/update)之前...

2019-07-06 22:54:14 405

原创 单元测试-rspec

1.部分语法discible 和context帮助组织分类,可任意折叠,参数可以是一个类别或者字串描述describe Order do describe "#amount" do context "when user is vip" do # ... end context "when user is not vip" do # ......

2019-07-05 18:08:05 184

原创 定时任务-sidekiq-cron

简介sidekiq-cron 是sidekiq的时间表附件,在指定的时间调用job每30s检查需要调度的新作业,当存在多个sidekiq work时不会重复调用相同的作业https://github.com/ondrejbartas/sidekiq-crongem installgem "sidekiq-cron", "~> 1.1"依赖于sidekiq 和redis在...

2019-07-05 00:12:45 550

原创 元编程-代码块

基础知识概念:块由大量代码构成块定义在{} 中,或者do...end关键字中使用yield 语句来调用块块与其具有相同名称的函数调用调用一个方法时才可以定义一个块可以使用kernel中的block_given?() 来询问当前方法的调用是否包含块块有自己的参数,回调块时可以像调用方法一样为块提供参数参数作用域作用域是变量和方法可用性的范围闭包块是完整的,可以立即运...

2019-07-04 01:19:55 171

原创 ruby基础功能-用户登录持久化

session 中的数据是临时性的,不能实现类似remember me 这样的功能故用cookie来实现,在cookie中添加一个令牌来表明用户的身份https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html添加一个auth_token 字段到user表来记录用户令牌rails g migration add_a...

2019-07-03 17:38:41 140

原创 ruby基础功能-用户登录登出

因为http本身是无状态的, 故登录和登出需要用到sessionhttps://guides.rubyonrails.org/action_controller_overview.html#accessing-the-session2.1 登录users_controller 中添加login 方法创建一个存储用户id到session中的方法 create_login_session...

2019-07-03 17:37:19 220

原创 ruby基础功能-用户注册

创建user表rails g model user name:string email:string password_digest:string密码一般不明文保存创建登录动作 signuprails g controller users signupdef signup @user = User.newend在注册的时候会因为没有create方法而报错,故需要...

2019-07-03 17:35:38 161

空空如也

空空如也

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

TA关注的人

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