自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Webpack 怎么实现按需异步加载模块

上面问题虽然在平时工作的大部分项目中不会遇到,但是对于我们深入理解webpack模块化原理、应对可能遇到的疑难杂症和特殊需求以及应付有些深度的面试都大有帮助。webpack模块的解析过程(如何处理不同类型模块,用户如何根据配置控制模块解析行为)。模块打包的原理(对于正常打包、动态依赖的打包和分片打包,webpack运行时是如何工作的)。模块路径解析规则。

2024-01-16 12:21:47 1140

原创 关于如何制作svg动画。

今日发现有同事做一个动画,是把svg放在div里面,然后给div加动画,来做一个loading的效果。 然后这样的话,在重复使用上,应用起来会很麻烦,所以研究了一下在svg里面加动画效果。1.animateTransform这个属性是可以用来设置svg动画的。 里面有一个form 和 to 属性。 第一个参数是代表转动的幅度。 第二个和第三个参数是用来代表转动的中心点位置。<svg width="41" height="41" viewBox="0 0 41 41" fill="none

2021-04-29 16:05:10 1615

原创 next.js将客户端的静态文件(.js,.css)放在s3

设置next.config.js, 生产环境设置assetPrefix 为s3连接const isDev = process.env.NODE_ENV !== 'production';const version = require('./package.json').version;assetPrefix: isDev ? '' : `https://${process.env.AWS_REGION}.amazonaws.com/${process.env.AWS_S3_BUCKET_NAME}

2021-03-25 15:02:04 812

原创 指针 和 指针变量 和 运算符 & and *

1、概念不同“指针”是概念,“指针变量”是具体实现,指针也是一个变量,所以需要进行定义,而对于指针的定义,与一般变量一样。2、 存放地址不同一个变量的(内存)地址称为该变量的“指针”,通过指针能找到以它为地址的内存单元。而指针变量是用来存放另一个变量的地址的(即指针)。扩展资料:指针和指针变量的关系指针就是地址,地址就是指针。 地址就是内存单元的编号。 指针变量就是存放内存地址的变量。 指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义

2020-06-12 15:25:38 563

原创 使用homebrew在 Mac OSX 上安装和配置Redis

安装redis$ brew install redis启动$ brew services start redis查看redis信息$ brew info redis测试redis是否正常启动$ redis-cli127.0.0.1:6379> pingPONG127.0.0.1:6379>

2020-05-18 11:39:31 247

转载 应对缓存击穿的解决方法

一.什么样的数据适合缓存?分析一个数据是否适合缓存,我们要从访问频率、读写比例、数据一致性等要求去分析. 二.什么是缓存击穿在高并发下,多线程同时查询同一个资源,如果缓存中没有这个资源,那么这些线程都会去数据库查找,对数据库造成极大压力,缓存失去存在的意义.打个比方,数据库是人,缓存是防弹衣...

2020-03-16 22:34:23 150 1

原创 [nodejs 内功心法] this全面解析

javascript this 全面解析

2020-02-09 12:08:09 662

原创 [nodejs 内功心法][作用域与闭包系列四] 闭包

闭包闭包是js一个非常重要但是理解起来又有一定难度的概念,理解闭包能让你的js功力得到一个质变。闭包的概念当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。JavaScript中的函数会形成闭包。 闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量。function foo() { var a =...

2019-12-09 21:51:07 188

原创 [nodejs 内功心法][作用域与闭包系列三] 提升

变量提升准确的说应该是 变量声明提升// 例1a = 100var a console.log(a) // 100// 例子2console.log(a) // undefinedvar a = 300conole.log(a) // ReferenceError: a is not defineda = 300 // 因为 a 并没有声明var 所以不提升通...

2019-12-04 22:14:11 224 1

原创 [nodejs 内功心法][作用域与闭包系列二] 函数作用域和块作用域

函数作用域函数作用域的含义是指,属于这个函数的全部变量都可以在整个函数的范围内使用及复用(事实上在嵌套的作用域中也可以使用)。不废话我们看代码来说明问题// 例1function demo(a) { var b = 10; function internal() { //.... 干一些事 } // .... 一些代码 var c = 20}在上面的代码中例1中d...

2019-12-01 21:14:09 230

原创 [nodejs 内功心法][作用域与闭包系列一] js作用域是什么?

作用域作用域是一套规则,用于确定在何处以及如何查找变量。如果查找的目的是对变量进行赋值,那么就会使用LHS查询,如果目的是获取变量的值,就会使用RHS查询, 下面我们先了解一下 LHS 和 RHSLHS换句话说,当变量出现在赋值操作的左侧时进行 LHS 查询,出现在右侧时进行 RHS 查询。LHS是要找到变量的内存地址,从而对其进行赋值RHSRHS查询与简单地查找某个变量的值别无...

2019-11-25 22:00:58 172

原创 [node.js 内功心法] javascript ==与=== 的区别

== 与 === 的区别1. 对于string,number等基础类型,== 和 ===是有区别的不同类型间比较,==是“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等const a = 1const b = "1"a == b #=> truea === b #=> false同类型比较,直接进行“值”比较,两者结果一样a...

2019-11-22 22:19:55 160

原创 mysql 事务锁

行锁  (innodb 行级锁并不是直接锁记录,而是锁索引,如果一条SQL语句用到了主键索引,mysql会锁住主键索引;如果一条语句操作了非主键索引,mysql会先锁住非主键索引,再锁定主键索引。)行锁必须有索引才能实现,否则会自动锁全表,那么就不是行锁了。    1. 假设有两个事务 A ,B。当A 事务通过索引列 update了id=1的数据时,id =1列被锁定,B事务需要等事务A 释放id...

2018-03-30 16:07:53 221

原创 计算两点经纬度的距离

mysql 函数DROP FUNCTION IF EXISTS func_calcDistance;CREATE FUNCTION func_calcDistance( origLng DECIMAL(20,6), origLat DECIMAL(20,6), longitude DECIMAL(20,6), latitude DECIMAL(20,6))RET

2017-09-01 12:23:36 931

原创 rails download excel some good ideal

最近做了一些rails数据导出的工作,就是把一些特定的ActiveRecord数据挖出来,保存到表格里面。 需要注意几件事:执行速度,内存消耗,以及调试速度。执行速度导数据的程序基本上就是一个循环体,外部获取数据集,内部把一条数据转换成表格。 在内部,往往需要通过一条记录作为主体,通过数据库逻辑关系顺藤摸瓜挖出一批数据, 这样会形成一批短查询,因为是在循环体里面,会带来很大时间上的

2017-05-25 15:46:49 262

原创 activerecord直接执行sql语句的写法ActiveRecord::Base.connection.execute

If the helpers provided by Active Record aren't enough you can use the execute method to execute arbitrary SQL:Product.connection.execute("UPDATE products SET price = 'free' WH

2017-01-06 18:24:42 1994

原创 actionrecord 连接多个数据库

有两种方法第一种: 每个model各自连接 # 建立一个数据库链接 example: ActiveRecord::Base.establish_connection( adapter: "mysql2", host: "localhost", username: "myuser", password: "mypass",

2017-01-06 18:08:00 327

原创 rails rake db

db:migrate runs (single) migrations that have not run yet.db:create creates the databasedb:drop deletes the databasedb:schema:load creates tables and columns within the (existing) database followi

2016-10-20 16:59:12 298 1

原创 ubuntu 14.04 crontab 执行ruby 脚本

参考:[(http://ruby-china.org/topics/9690)] http://www.linuxidc.com/Linux/2015-02/113836.htm要添加cron任务,你可以使用称为crontab的命令行工具。 输入下面的命令会创建一个以当前用户运行的新cron任务。$ crontab -e如果你想要以其他用户运行cron任务,输入下面的命令。$ sudo cron

2016-10-09 15:55:04 624

转载 ruby字符串的encoding,force_encoding,encode,encode!转码(编码转换)

ruby1.9开始对字符串编码支持已经比较完善,我们可以直接通过使用String类的实例方法encoding,force_encoding, encode, encode!进行相关的编码操作。encodingruby1.9中为每个字符串对象增加了encoding信息?1231.9.3p392

2016-08-27 16:19:58 981

转载 ruby 中super和super()的区别

我们经常要在子类的initialize方法中调用super和super()。从语法上说super和super()是有微妙区别的。super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;super()带括号则表示调用父类的同名函数,但是不传入任何参数;class SParent      def initializ

2016-08-27 15:51:18 1194

原创 each_with_object

(1..10).each_with_object([]){|i,a| a.push(i)} => [1,2,3,….,10]

2016-08-27 15:05:13 573

原创 ruby 中的sort 和 sort_by

在Rails里,我们可以用sort_by方法对一个Ruby对象数组按照某个属性 进行排序 User.all.sort_by{|u| u.created_at} 上面的写法等效于 User.all.sort{|a,b| a.created_at <=> b.created_at}

2016-07-21 17:03:39 3256

原创 正则 .*? 的用法

?,匹配0次或1次。 但 是?还有第二个含义,作为正则的懒惰模式。正则有两种模式,一种为贪婪模式(默认),另外一种为懒惰模式,以下为例:(abc)dfe(gh)对上面这个字符串使用(.*)将会匹配整个字符串,因为正则默认是尽可能多的匹配。 虽然(abc)满足我们的表达式,但是(abc)dfe(gh)也同样满足,所以正则会匹配多的那个。 如果我们只想匹配(abc)和(gh)就需要用到以下的

2016-07-19 15:38:42 614

原创 IO读文件 each_line foreach read readlines

each_line each_line调用blcok,并且把file的每一行传入block File.open("testfile") do |file| file.each_line{|line| puts "got #{line}"} end ## "got line 1 \n" "got line 2 \n" 也可以给each_line传入参

2016-07-18 17:40:59 914

原创 IO

file.new 和 file.open 的区别 file.open 可以在后面与块关联而 file.new 不可以 a = file.new("aa.rb","w") a.close b = file.open("bb.rb"){|f| f}

2016-07-13 12:01:09 201 1

原创 ruby send 方法

用它可以在类的外面调用私有方法哟 class MyClass private def get_name "i am ruby" end end mine = MyClass.new mine.get_name #NoMethodError: private method `get_name' called for #<MyClass:0x000000

2016-07-05 18:13:19 1907

原创 ruby redo和retry的区别

redo和retry都是用来重新执行部分循环,但不同点在于:redo只是重新执行当前循环,而retry重新执行整个循环。redo举例:("a".."f").each do |i| puts "Value: #{i}" redo if i > "c"end结果显示,只有最后的迭代(c)被重复了:Value: aValue: bValue: cValue: cValue: cValu

2016-07-01 20:00:14 1038 4

原创 并行赋值, *号赋值

首先 所有的右值被评估,从左到右,并且收集到一个数组中(除非它已经是数组),这个数组将是整个赋值的返回结果然后 开始检查左边,如果只有一个元素,那么这个数组就是最终的结果 ex: a = 1,2,3,4 # a=[1,2,3,4] => [1,2,3,4] b= [1,2,3,4] # b=[1,2,3,4] =>[1,2,3,4] 如果左边包含

2016-06-29 18:34:23 628

原创 mysql 常用命令

设置颜色: C:\Users\pc>color 1fC:\Users\hsx>color h设置默认的控制台前景和背景颜色。COLOR [attr] attr 指定控制台输出的颜色属性颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡

2016-06-07 00:44:50 238

原创 外部迭代器(external iterators)

ruby 自带了一个内建的枚举器类(Enumerator class),它在ruby中实现外部迭代器 (external iterators) 你可以在 array 或者 hash 上调用to_enum来建立一个enumerator的对象 ex: a = [1,2,5] b={:a=>"sdf",:b=>"god"} a_en = a.to_enum a_en

2016-06-04 02:39:58 479

原创 inject

介绍 inject 方法定义在 module Enumerable 中,它让你可以通过集合中的元素 来通过某种计算得到一个值[1,3,5,7].inject(0){|s,i| s +i} #=> 16[1,3,5,7].inject(0){|s,i| s *i} #=>105 inject工作方式(用上面的例子来讲解): 当关联的block第一次被调用的时候:s被赋予参数的值, i 被

2016-06-03 18:31:28 605

原创 ubuntu查看和关闭端口

首先查看端口 xjj@ubuntu:~$ netstat -anp 显示很多,找到自己想要关闭的端口筛选端口 xjj@ubuntu:~$ netstat -anp | grep 9312 tcp 0 0 192.168.1.189:3001 0.0.0.0:* LISTEN 12941/ruby 关闭

2016-05-31 16:35:28 16833

原创 ruby中* 的部分功能

正常的乘法功能 3*4==12 #=>true数组*integer [1,23,[24,5]]*2 #=> [1,23,[24,5],1,23,[24,5]]创建数组 *a = 1,2,”sdf” 相当于 a= [1,2,”sdf”]字符串*integer “hello”*2 #=>”hellohello”a = [1,2] def method(*a) == def met

2016-05-27 11:46:25 270 1

原创 blocks(块)

写法 两种写法 {} / do..end note: 一般一行代码用{},多行代码用do..end1. [1,2,3].each {|i| puts i}2. [1,2,3].each do |i| puts i end一些重要的规则如果在块的内部有一个变量(variable)的名字和在同一作用域中的块的外部变量的名字一样的话,那么他们表示同一个变量。ex:

2016-05-26 16:04:42 608 5

原创 在Ubuntu上安装redmine

环境 system: ubuntu redmine: 3.2.2 ruby: 2.0.0 rails: 4.2.5.2 mysql: 5.5.47下载 redmine-3.2.2.tar.gz第一步:解压下载的文件tar zxvf redmine-3.2.2.tar.gz第二步: 创建一个空数据库和相应的用户mysql:---------------------

2016-05-20 18:52:06 1027 1

原创 ruby中的变量(variables)

variables 在ruby中变量不是对象,变量只是对象的一个引用exampleperson1 = "Tim"person2 = person1person1[0] = 'J'puts "person1 is #{person1}"puts "person2 is #{person2}"produces:person1 is Jimperson2 is Jim

2016-05-19 15:23:49 285

原创 ruby system 的用法

system 可以执行命令行命令 system(” “)括号里面的参数的写法与windows CMD的语法相差不多:system(“cd .. && 1.bat”)

2016-05-18 15:24:15 3112

原创 ruby access control(public,protected,private)

public methods public methods 可以被所有人访问,他没有访问控制, note: 方法默认是public的,(除了initialize方法,它总是私有的)protected methods protected methods 只能被(定义方法的类或者它的子类)的对象调用,并且 访问只能在(定义方法的类或者它的子类)进行。private methods pri

2016-05-18 14:34:41 256

原创 ruby 的 require require_relative

require require 是 kernel的一个方法 require filename 如果filename 是一个相对路径 则从 $LAOD_PATH寻找相应的文件(.rb,.so,.dll) note: $LOAD_PATH 指的是Ruby读取外部文件的一个环境变量,其实和windows的环境变量是一个概念。Ruby会在这个环境变量的路径中读取需要require的

2016-05-18 00:39:07 1884

空空如也

空空如也

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

TA关注的人

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