ruby面试题
ruby 基础
1、each、map、collect的区别
each: 仅遍历数组,并做相应操作,数组本身不发生改变。
map:遍历数组,并做相应操作后,返回新数组(处理),原数组不变。
collect: 跟map作用一样。
collect!
map!
: 多了一个作用,改变原数组。
// 终端打开 irb
// each
a = [ "a", "b", "c", "d" ]
b = a.each { |x| x + "!" } // a == b == [ "a", "b", "c", "d" ]// map map!
a = [ "a", "b", "c", "d" ]
b = a.map { |x| x + "!" }
a // ["a", "b", "c", "d"]
b // ["a!", "b!", "c!", "d!"]
c = a.map! { |x| x + "!" }
a // ["a!", "b!", "c!", "d!"]
c // ["a!", "b!", "c!", "d!"]// collect collect!
a = [ "a", "b", "c", "d" ]
b = a.collect { |x| x + "!" }
a // ["a", "b", "c", "d"]
b // ["a!", "b!", "c!", "d!"]
c = a.collect! { |x| x + "!" }
a // ["a!", "b!", "c!", "d!"]
c // ["a!", "b!", "c!", "d!"]
2、Block, lambda, Proc 的区别
-
proc和lambda都是对象,而block不是
-
block是proc的实例,proc可以重复使用,函数参数只能有一个block,但可以有多个proc
# 说明block是proc的一个实例 def what_am_i(&block) block.class end puts what_am_i {} # =< Procdef multiple_procs(proc1, proc2)proc1.callproc2.call end a = Proc.new { puts "First proc" } b = Proc.new { puts "Second proc" } multiple_procs(a,b)
-
lambda会检查参数个数,proc不会。
lam = lambda { |x| puts x } # creates a lambda that takes 1 argument lam.call(2) # prints out 2 lam.call # ArgumentError: wrong number of arguments lam.call(1,2,3) pro = Proc.new { |x| puts x } # creates a proc that takes 1 argument pro.call(2) # 2 pro.call # returns nil pro.call(1,2,3) # 1
-
lambda和proc对于return处理方式不同
lambda:一个函数调用lambda,lambda里return后返回函数接着执行。
proc: 一个函数调用proc,proc里return后, 函数也会return。
def lambda_testlam = lambda { return }lam.callputs "Hello world" end lambda_test def proc_testproc = Proc.new { return }proc.callputs "Hello world" end proc_test
参考资料:
What Is the Difference Between a Block, a Proc, and a Lambda in Ruby?
浅谈Ruby中的block, proc, lambda, method object的区别
ruby中闭包
在Ruby里,如果该方法返回一个代码块,而该代码块获得了局部变量的引用,则这些局部变量将在方法返回后依然可以访问。
def show(name)count = 1;return proc do |value|puts count +=1;puts name + '我是闭包' + valueend
endsh = show("ruby")
sh.call('213')
sh.call('kkk')
参考:
Ruby的4种闭包:blocks, Procs, lambdas 和 Methods
3、alias 的用法, alias 与 alias_method 的区别
alias: 给已经存在的方法或变量设置一个别名,在重新定义已存在的方法时,还可以通过别名来调用原来的方法。
alias_method: 和alias类似,但只能给方法起别名,是Module的一个私有实例方法。
class Demo def helloputs "old_hell0"end# 给hello方法取别名# alias old_hello helloalias_method :old_hello, :hellodef helloputs "new_hello"end
end
obj = Demo.new
obj.hello
obj.old_hello
参考:
https://www.cnblogs.com/smallbottle/p/3968704.html
https://ruby-china.org/topics/27747
4、Ruby的对象体系
+------------+| BasicObject|+------------+^|superclass|+----+-----+ superclass-----------+| Object | ^----------| Module |+----+-----+------+ +-+---------+^ | ^|superclass | |Superclass| | |
+---------+ +-+-------+ +---> +-+-------+
| 'hello' | class | String | class | Class |
| +---------->+ +--------->+ +------>
+---------+ +---------+ +----+----+ |^ || class |<-----------+
![](https://img-blog.csdn.net/20160413232121267?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
'hello'.class # String
String.class # Class
String.superclass # Object
Class.class # Class
Class.superclass # Module
Module.class # Class
Module.superclass # Object
Object.class # Object
Object.superclass # BasicObject
BasicObject.class # Class
BasicObject.superclass # nil
Module是Class的父类,Class和Module的差别是Class是一个增强的Module,它比Module多了一个new,allocate方法,除了这一个区别,当然这个区别特别重要,Class和Module基本是一样的。
参考: https://blog.csdn.net/feigeswjtu/article/details/51040006
5、 Include, Extend, Load, Require 的使用区别
- include和extend用于在类中引入模块,区别:
include:把模块中的方法作为类的实例方法
extend: 把模块中的方法作为类的类方法
module Adef class_typeputs "This class is of type:#{self.class}"end
end
class B extend A end
class C include A end
B.class_type
C.new.class_type
-
require、load用于加载库,如
.rb
文件,区别:require: 加载一个库,并且只加载一次,如果多次加载会返回false。文件不需要扩展名
load: 加载一个库,可多次加载。需要指定文件扩展名。
# 在当前目录中有一个 two.rb文件 require './two'; load './two.rb';
6、yield、yield self
所有的方法(methods)都会隐式的带一个块(block)参数。
-
yield用来执行块参数,也可以通过call()方法执行。
yield 相当于是 block.call() 方法的调用,所以参数个数也需要对应, method 定义中 &block 参数必须在最后
def foo1()yield 1,2,3 # 这里的 1 2 3 就是传递的参数 end def foo2(time, &block)yield 1, 2, 3block.call(5, 6, 7) puts time end foo1 {|x,y,z| puts z} # => 3 foo2('2018') {|x,y,z| puts z} # => 3 7 2018
-
yield self
在一个对象中,self 表示是一个当前对象的引用。
yield self if block_given?
相当于如果有块参数,那个调用快参数,参数是自己。def foo(&block)puts selfyield self if block_given?yield "AAAAAAAAA" end foo {|x| puts x} foo
参考链接:https://www.cnblogs.com/licongyu/p/5522027.html
7、 Ruby中的元编程
Ruby中的元编程,是可以在运行时动态地操作语言结构(如类、模块、实例变量等)的技术。你甚至于可以在不用重启的情况下,在运行时直接键入一段新的Ruby代码,并执行它。
Ruby的元编程,也具有“利用代码来编写代码”的作用。例如,常见的attr_accessor
等方法就是如此。
7.1 实例变量、方法、类
- 同一个类的实例可以有不同的实例变量,因为实例变量只有使用的时候才会被建立。
- 匿名类:对一个具体对象添加方法是,ruby会插入一个新的匿名类来容纳新建的方法,匿名类不可见。
def initialize(*args)
: 方法可以通过参数不同执行不同的操作
7.2 send、eval、respond_to?
-
send
send
是Object
类的实例方法。第一个参数是方法名,后面是方法的参数使用
send
方法,你所想要调用的方法就顺理成章的变成了一个普通的参数。你可以在运行时,直至最后一刻自由决定到底调用哪个方法。class Rubyistdef welcome(*args)"Welcome " + args.join(' ')end end obj = Rubyist.new puts(obj.send(:welcome, "hello", "world")) eval("obj.welcome('123')")
-
eval
用于执行一个用字符串表示的代码,
eval
方法可以计算多行代码,使得将整个程序代码嵌入到字符串中并执行成为了可能。eval
方法很慢,在执行字符串前最好对其预先求值。str = "Hello" puts eval("str + ' world'") # => "Hello world"
-
respond_to?
所有的对象都有此方法,使用
respond_to?
方法,你可以确定对象是否能使用指定的方法。obj = Object.new if obj.respond_to?(:program)obj.program elseputs "Sorry, the object doesn't understand the 'program' message." end
参考资料:http://deathking.github.io/metaprogramming-in-ruby/chapter04.html
参考资料:
Ruby中的元编程
8、全局变量,实例变量,局部变量,类变量,Symbol
格式 | 名称 | 作用范围 | 举例 |
---|---|---|---|
$ 开头 | 全局变量 | 从定义到程序结束 | $name |
@ 开头 | 实例变量 | self | @name |
@@ 开头 | 类变量 | 内部直接用,外部用类名::变量名 | @@name |
[a-z_] 开头 | 局部变量 | 定义的类、模块、方法内部,在类、模块、方法间不能共享 | name |
[A-Z] | 常量 | 内部、外部均可,外部访问类名::常量名 | NAME |
: 开头 | Symbol | 内外 | :name |
参考资料:https://blog.csdn.net/emerald0106/article/details/7358766
9、ruby的特点
- 解释型执行,方便快捷:Ruby是解释型语言,其程序无需编译即可执行
- 语法简单、优雅:
- 完全面向对象: Ruby从一开始就被设计成纯粹的面向对象语言,因此所有东西都是对象,例如整数等基本数据类型。
- 内置正则式引擎,适合文本处理:Ruby支持功能强大的字符串操作和正则表达式检索功能,可以方便的对字符串进行处理。
- 自动垃圾收集: 具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。不需要用户对内存进行管理。
- 跨平台和高度可移植性:Ruby支持多种平台,在Windows, Unix, Linux, MacOS上都可以运行。Ruby程序的可移植性非常好,绝大多数程序可以不加修改的在各种平台上加以运行。
- 有优雅、完善的异常处理机制: Ruby提供了一整套异常处理机制,可以方便优雅地处理代码处理出错的情况。
缺点:
- 解释型语言,所以速度较慢
- 静态检查比较少
rails
active record
创建、查询、修改、删除
class Product < ApplicationRecord
end
# 创建
# create 方法会创建一个新记录,并将其存入数据库:
user = User.create(name: "David", occupation: "Code Artist")
# new 方法实例化一个新对象,但不保存:
user = User.new
user.name = "David"# 读取
users = User.all # 返回所有用户组成的集合
user = User.first # 返回第一个用户
david = User.find_by(name: 'David') # 返回第一个名为 David 的用户
# 查找所有名为 David,职业为 Code Artists 的用户,而且按照 created_at 反向排列
users = User.where(name: 'David', occupation: 'Code Artist').order(created_at: :desc)# 更新
user.name = 'Dave'
user.save #
user.update(name: 'Dave')# 删除
user.destroy
# https://ruby-china.github.io/rails-guides/active_record_basics.html#create
上面的代码会创建 Product
模型,对应于数据库中的 products
表。同时,products
表中的字段也映射到 Product
模型实例的属性上。
关联模型
关联原因: 操作两个有关系的表时简化操作。
如果两个表有关联,比如一个作者表,一个图书表,一个作者对应多本书,如果此时删除一个作者前要先把作者对应的书删除,然后在删除作者。但是关联后,只需要在模型中删除作者语句即可,删除书的动作active_record会自动完成。
-
belongs_to:一对一关系
belongs_to
关联创建两个模型之间一对一的关系,声明所在的模型实例属于另一个模型的实例。写belongs_to的模型里的一条记录相对于另一个表里有唯一一条记录,叫一对一。
例如有作者和图书两个模型,而且每本书只能指定给一位作者,在图书表中写上:
class Book < ApplicationRecordbelongs_to :author end
-
has_one:一对一关系
has_one
关联也建立两个模型之间的一对一关系,但语义和结果有点不一样。这种关联表示模型的实例包含或拥有另一个模型的实例。例如,应用中每个供应商只有一个账户,可以这么定义供应商模型:class Supplier < ApplicationRecordhas_one :account end
has_one与belongs_to的选择:
-
has_many :一对多
has_many
关联表示模型的实例有零个或多个另一模型的实例。例如,对应用中的作者和图书模型来说,作者模型可以这样声明:class Author < ApplicationRecordhas_many :books end
-
:through
: 通过第三张表来关联has_many :through
这种关联表示一个模型的实例可以借由第三个模型,拥有零个和多个另一模型的实例。例如,在医疗锻炼中,病人要和医生约定练习时间。这中间的关联声明如下:
class Physician < ApplicationRecordhas_many :appointmentshas_many :patients, through: :appointments end class Appointment < ApplicationRecordbelongs_to :physicianbelongs_to :patient end class Patient < ApplicationRecordhas_many :appointmentshas_many :physicians, through: :appointments end
has_one :through
这种关联表示一个模型通过第三个模型拥有另一模型的实例。例如,每个供应商只有一个账户,而且每个账户都有一个账户历史,那么可以这么定义模型:
class Supplier < ApplicationRecordhas_one :accounthas_one :account_history, through: :account endclass Account < ApplicationRecordbelongs_to :supplierhas_one :account_history endclass AccountHistory < ApplicationRecordbelongs_to :account end
-
has_and_belongs_to_many
直接建立两个模型之间的多对多关系,不借由第三个模型。例如,应用中有装配体和零件两个模型,每个装配体有多个零件,每个零件又可用于多个装配体,这时可以按照下面的方式定义模型:
class Assembly < ApplicationRecordhas_and_belongs_to_many :parts endclass Part < ApplicationRecordhas_and_belongs_to_many :assemblies end
参考资料: https://ruby-china.github.io/rails-guides/association_basics.html
查询接口
-
检索对象
find # 检索指定主键对应的对象,没有记录find方法抛出 ActiveRecord::RecordNotFound 异常。 client = Client.find(10) # 查找主键(ID)为 10 的客户take # 检索一条记录而不考虑排序,没有记录take方法返回 nil,而不抛出异常。 client = Client.take # SELECT * FROM clients LIMIT 1first # 默认查找按主键排序的第一条记录。如果没有记录,first 方法返回 nil,而不抛出异常 client = Client.first # SELECT * FROM clients ORDER BY clients.id ASC LIMIT 1last # 默认查找按主键排序的最后一条记录。没有记录last方法返回nil,而不抛出异常。 client = Client.last # SELECT * FROM clients ORDER BY clients.id DESC LIMIT 1 client = Client.last(3) # 返回不超过指定数量的查询结果。 client = Client.order(:first_name).last # 返回按照指定属性排序的最后一条记录。 client = Client.last! # 和 last 方法类似,区别是没有记录会抛出 ActiveRecord::RecordNotFound 异常。find_by # 查找匹配指定条件的第一条记录。 Client.find_by first_name: 'Lifo' # Client.where(first_name: 'Lifo').takefind_each # 批量检索记录,每条记录传入块, User.find_each do |user|NewsMailer.weekly(user).deliver_now end
-
条件查询
where
方法用于指明限制返回记录所使用的条件,相当于 SQL 语句的WHERE
部分。条件可以使用字符串、数组或散列指定。纯字符串条件:容易受到 SQL 注入攻击的风险。 Client.where("orders_count = '2'") # 查找所有 orders_count 字段的值为 2 的客户记录。数组条件: 后面的参数会替换前面的问号(?) Client.where("orders_count = ?", params[:orders]) Client.where("orders_count = ? AND locked = ?", params[:orders], false)条件中的占位符 Client.where("created_at >= :start_date AND created_at <= :end_date",{start_date: params[:start_date], end_date: params[:end_date]})散列条件 Client.where(locked: true) # SELECT * FROM clients WHERE (clients.locked = 1)NOT 条件:先调用没有参数的 where 方法,然后马上链式调用 not 方法,就可以生成这个查询。 Client.where.not(locked: true) # SELECT * FROM clients WHERE (clients.locked != 1)
-
排序
按 created_at 字段的升序方式取回记录: Client.order(:created_at)还可以使用 ASC(升序) 或 DESC(降序) 指定排序方式: Client.order(created_at: :desc) Client.order(created_at: :asc) Client.order(orders_count: :asc, created_at: :desc)
数据库基本操作
-
插入数据
insert into <tablename> (field1,field2,field3..) values (value1,value2,value3);
-
查询
select * from <tablename>; select <*/filed> select from <tablename> where <field>=<key>; select <*/field> form <tablename> where <field> like '%value%'; // 模糊查询
-
删除(Delete)
delete from <tablename> where <条件(和查询时条件类似)>
-
更新(update)
update <tablename> set <field>=<value> where <条件(和查询时类似)>;
参考链接:https://blog.csdn.net/yuanmxiang/article/details/51683232
https://www.cnblogs.com/daxueshan/p/6687521.html
其他面试题
https://www.jianshu.com/p/cc9f521d72ee
相关文章:
ruby面试题
ruby 基础 1、each、map、collect的区别 each: 仅遍历数组,并做相应操作,数组本身不发生改变。 map:遍历数组,并做相应操作后,返回新数组(处理),原数组不变。 collect: 跟map作用一样。 collect! map!: 多了一个作…...
Android U Settings 应用中 APN 菜单实现的代码逻辑
功能简介 MobileNetwork移动网络设置页面下有【接入点设置】(APN)。 问题:为什么Controller初始化找不到pref,然后报错。 Note:什么时候切换成Controller的呢?在Android T&U 上还没有更新成kt实现 ,但是已经有Controller的方案。 流程逻辑 1、界面“telephony_a…...
java时间处理工具类
效果 最近7天:2024年6月21日-2024年6月27日过去一周、最近一周:2024年6月16日-2024年6月22日过去三个月:2024年3月-2024年6月近半年、过去半年:2023年12月-2024年6月去年:2023年1月-2023年12月过去3年:202…...
Android高级面试_2_IPC相关
Android 高级面试-3:语言相关 1、Java 相关 1.1 缓存相关 问题:LruCache 的原理? 问题:DiskLruCache 的原理? LruCache 用来实现基于内存的缓存,LRU 就是最近最少使用的意思,LruCache 基于L…...
docker封禁对外端口映射
docker比linux防火墙规则优先级要高,一旦在docker里面配置了对外服务端口的话在iptable里面封不掉,需要通过下面的方法进行封禁: 这里我的宿主机IP地址是10.5.1.244,docker 内部网络ip段是默认的172.17段的,以下为命令࿱…...
【leetcode系列】567.字符串的排列(滑动窗口)
题目 给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。 换句话说,s1 的排列之一是 s2 的 子串 。 示例 示例 1: 输入:s1 “ab” s2…...
情感分析方法与实践
第1关:情感分析的基本方法 情感分析简介 情感分析,又称意见挖掘、倾向性分析等。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。在日常生活中,情感分析的应用非常普遍,下面列举几种常见的…...
迁移学习——CycleGAN
CycleGAN 1.导入需要的包2.数据加载(1)to_img 函数(2)数据加载(3)图像转换 3.随机读取图像进行预处理(1)函数参数(2)数据路径(3)读取文…...
【软件测试】对于测试中的bug,我们真正了解了吗?
目录 1.软件测试的生命周期 1.1.软件测试阶段流程 1.2.各流程的任务 2.什么是bug 2.1.bug的概念 2.2.怎么描述bug 2.3.bug的级别 2.4.bug的生命周期 1.软件测试的生命周期 在学习bug前,我们先来学习一下软件测试的生命周期,也就是测试人员进行测…...
Packer-Fuzzer一款好用的前端高效安全扫描工具
★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、Packer Fuzzer介绍 Packer Fuzzer是一款针对Webpack…...
解决卸载TabX explorer软件后导致系统文件资源管理器无法正常使用问题
最近安装了最新版本的鲁大师,安装过程中不小心同时安装了捆绑软件TabX explorer。这个软件和系统自带的文件资源管理器很像,最后弹出会员到期才发现,这个不是系统文件资源管理器,是第三方的文件资源管理器,就按正常流程…...
qt for android 使用打包sqlite数据库文件方法
1.在使用sqlite数据库时,先将数据库文件打包,放置在assets中如下图: 将文件放置下android中的assets下的所有文件都会打包在APK中,可以用7zip查看apk文件 2.在qt代码读取数据文件,注意在assets下的文件都是Read-Only,需…...
MYBATIS大于等于、小于等于的写法
mybatis使用的是xml格式的文件。使用>和<号的时候,会存在与xml的标签的规范冲突。需要写成如下形式,否则会报错。 第一种写法 原符号 替换符号 < < < <> > > >& & &…...
基于堆叠长短期记忆网络 Stacked LSTM 预测A股股票价格走势
前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…...
SpringCloud Alibaba Sentinel基础入门与安装
GitHub地址:https://github.com/alibaba/Sentinel 中文文档:https://sentinelguard.io/zh-cn/docs/introduction.html 下载地址:https://github.com/alibaba/Sentinel/releases Spring Cloud Alibaba 官方说明文档:Spring Clou…...
Arduino IDE下载、安装和配置
文章开始先把我自己网盘里的安装包分享给大家,链接:https://pan.baidu.com/s/1cb2_3m0LnuSKLnWP_YoWPw?pwdwwww 提取码:wwww 里面一个是Arduino IDE的安装包,另一个是即将发布的版本。 第一个安装包打开直接按照我的步骤安装就…...
SOBEL图像边缘检测器的设计
本项目使用FPGA设计出SOBEL图像边缘检测器,通过分析项目在使用过程中的工作原理和相关软硬件设计进行分析详细介绍SOBEL图像边缘检测器的设计。 资料获取可联系wechat 号:comprehensivable 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本…...
Day35:2734. 执行字串操作后的字典序最小字符串
Leetcode 2734. 执行字串操作后的字典序最小字符串 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前…...
【高考志愿】机械工程
目录 一、专业概述 二、学科特点 三、就业前景 四、机械工程学科排名 五、专业选择建议 高考志愿选择机械工程,这是一个需要深思熟虑的决定,因为它不仅关乎未来的学习和职业发展,更是对自我兴趣和潜能的一次重要考量。 一、专业概述 机…...
ffmpeg将mp4转换为swf
文章目录 ffmpeg安装、配置java运行报错 Cannot run program "ffmpeg" ffmpeg命令mp4转为swf示例 ### ffmpeg -i input.mkv -b:v 600 -c:v libx264 -vf scale1920:1080 -crf 10 -ar 48000 -r 24 output.swfmkv转为swf示例 其他文档命令参数简介 需要将mp4转换为swf&a…...
论文学习 --- RL Regret-based Defense in Adversarial Reinforcement Learning
前言 个人拙见,如果我的理解有问题欢迎讨论 (●′ω`●) 原文链接:https://www.ifaamas.org/Proceedings/aamas2024/pdfs/p2633.pdf 研究背景 深度强化学习(Deep Reinforcement Learning, DRL)在复杂和安全关键任务中取得了显著成果,例如自动驾驶。然而,DRL策略容易受…...
【Linux小命令】一文讲清ldd命令及使用场景
一文讲清ldd命令及使用场景 前言下面进入正题:ldd命令 前言 博主今天ubuntu编译go项目出来的一个可执行文件,放centos运行发现居然依赖于XXlib库。然后我一下就想到两个系统库版本不一致,重编。换系统,导项目,配环境……...
自费5K,测评安德迈、小米、希喂三款宠物空气净化器谁才是高性价比之王
最近,家里的猫咪掉毛严重,简直成了一个活生生的蒲公英,家中、空气中各处都弥漫着猫浮毛甚至所有衣物都覆盖着一层厚厚的猫毛。令人难以置信的是,有时我甚至在抠出的眼屎中都能发现夹杂着几根猫毛。真的超级困扰了。但其实最空气中…...
1373. 二叉搜索子树的最大键值和
Problem: 1373. 二叉搜索子树的最大键值和 文章目录 思路解题方法复杂度Code 思路 解决这个问题的关键在于采用深度优先搜索(DFS)策略,并结合树形动态规划的思想。我们需要设计一个递归函数,它不仅能够遍历整棵树,还能…...
基于java + Springboot 的二手物品交易平台实现
目录 📚 前言 📑摘要 📑系统架构 📚 数据库设计 📚 系统功能的具体实现 💬 登录模块 首页模块 二手商品轮播图添加 💬 后台功能模块 二手商品商品列表 添加二手商品商品 添加购物车 &a…...
Shopee本土店选品有什么技巧?EasyBoss ERP为你整理了6个高效选品的方法!
电商圈有句话叫:七分靠选品,三分靠运营,选品对了,事半功倍,选品错了,功亏一篑! 很多卖家都会为选品发愁,特别对于Shopee本土店卖家来说,要囤货到海外仓,如果…...
3D在线展览馆的独特魅力,技术如何重塑展览业的未来?
在数字化和虚拟现实技术迅猛发展的今天,3D在线展览馆已经成为一种颇具前景的创新形式。搭建3D在线展览馆不仅能够突破传统展览的时空限制,还能为参观者提供身临其境的体验,极大地提升展示效果和用户互动。 一、3D在线展览馆的意义 1、突破时空…...
基于SpringBoot的藏区特产销售平台
你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言: Java 数据库: MySQL 技术: SpringBoot框架 工具: MyEclipse 系统展示 首页 个人中心 特产信息管理 订单管…...
hudi系列-schema evolution(一)
hudi+flink在非schema on read模式下也表现出了支持一部分的schema evolution功能,本篇中测试一下在非schema on read模式下,发生各种列变更情况时数据写入与读取情况。 flink 1.14.5hudi 0.13.1mor表思路: 选择mor表是因为它的数据文件有avro和parquet两种格式,能覆盖得更…...
Redis-实战篇-缓存雪崩
文章目录 1、缓存雪崩2、解决方案: 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 2、解决方案: 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…...
公众号seo排名优化/seo网络推广企业
目录 1.tzselect 2.修改配置文件来修改时区 3.链接到上海时区文件 4.执行完上述过程后 做完软连接后发现还是不行重新安装下 1.tzselect 执行tzselect命令-->选择Asia-->选择China-->选择east China - Beijing, Guangdong, Shanghai, etc-->然后输入1…...
泰州市网站建设/seo薪资
flex里的[Inspectable]标签用于为as类的属性定义一些可供flex代码提示等使用的信息,比如属性的类型啦合法值啦默认值啦之类的,[Inspectable]标签可以用在属性上,也可以用在getter/setter方法上,写法如下: [Inspectable…...
持续推进网站建设/网络营销的实现方式包括
1、下载ntp的安装包: 下载地址:https://download.csdn.net/download/qq_29171935/10975073 ntp:可以为其配置ntp.conf将其设置为自动同步某服务器时钟。 ntpdate:可以使用 ntpdate -u ip地址 来手动同步某服务器的时钟。 2、安装命令: 方式&a…...
三水网站制作/湖南网站建设效果
日前美国媒体《财富》杂志发表相关文章,认为对中国的芯片限制对美国是弊大于利,倒逼中国芯片加快芯片产业发展进程,而美国芯片却蒙受了太大的损失,与美国方面打擂台。美媒发表这篇文章之际,恰恰是中国芯片企业宣布近期…...
青岛美容化妆品外贸网站建设/广告公司推广平台
使用mysql数据库的小伙伴们,对mysql怎么控制事物,语句的提交一定要了解清楚,如果应用代码对事物使用不当,就会造成Mysql事物部分update语句成功,部分失败。下面就详细解释其产生的原因首先说一个mysql的事务提交的参数…...
paypal可做网站/5188关键词平台
前一阵子团队组织了敏捷和TDD的培训,这里记录一下。 1.敏捷开发 1)敏捷宣言 我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人,由此我们建立了如下价值观:个体和互动 高于 流程和工具 工作的软件 …...