当前位置: 首页 > news >正文

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 的区别

  1. proc和lambda都是对象,而block不是

  2. 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)
    
  3. 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
    
  4. 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

    sendObject类的实例方法。第一个参数是方法名,后面是方法的参数

    使用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)

数据库基本操作

  1. 插入数据

    insert into <tablename> (field1,field2,field3..) values (value1,value2,value3);
    
  2. 查询

    select * from <tablename>;
    select  <*/filed> select from <tablename> where <field>=<key>;
    select <*/field> form <tablename> where <field> like '%value%';	// 模糊查询
    
  3. 删除(Delete)

    delete from <tablename> where <条件(和查询时条件类似)>
    
  4. 更新(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: 仅遍历数组&#xff0c;并做相应操作&#xff0c;数组本身不发生改变。 map:遍历数组&#xff0c;并做相应操作后&#xff0c;返回新数组(处理)&#xff0c;原数组不变。 collect: 跟map作用一样。 collect! map!: 多了一个作…...

Android U Settings 应用中 APN 菜单实现的代码逻辑

功能简介 MobileNetwork移动网络设置页面下有【接入点设置】(APN)。 问题:为什么Controller初始化找不到pref,然后报错。 Note:什么时候切换成Controller的呢?在Android T&U 上还没有更新成kt实现 ,但是已经有Controller的方案。 流程逻辑 1、界面“telephony_a…...

java时间处理工具类

效果 最近7天&#xff1a;2024年6月21日-2024年6月27日过去一周、最近一周&#xff1a;2024年6月16日-2024年6月22日过去三个月&#xff1a;2024年3月-2024年6月近半年、过去半年&#xff1a;2023年12月-2024年6月去年&#xff1a;2023年1月-2023年12月过去3年&#xff1a;202…...

Android高级面试_2_IPC相关

Android 高级面试-3&#xff1a;语言相关 1、Java 相关 1.1 缓存相关 问题&#xff1a;LruCache 的原理&#xff1f; 问题&#xff1a;DiskLruCache 的原理&#xff1f; LruCache 用来实现基于内存的缓存&#xff0c;LRU 就是最近最少使用的意思&#xff0c;LruCache 基于L…...

docker封禁对外端口映射

docker比linux防火墙规则优先级要高&#xff0c;一旦在docker里面配置了对外服务端口的话在iptable里面封不掉&#xff0c;需要通过下面的方法进行封禁&#xff1a; 这里我的宿主机IP地址是10.5.1.244,docker 内部网络ip段是默认的172.17段的&#xff0c;以下为命令&#xff1…...

【leetcode系列】567.字符串的排列(滑动窗口)

题目 给你两个字符串 s1 和 s2 &#xff0c;写一个函数来判断 s2 是否包含 s1 的排列。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 换句话说&#xff0c;s1 的排列之一是 s2 的 子串 。 示例 示例 1&#xff1a; 输入&#xff1a;s1 “ab” s2…...

情感分析方法与实践

第1关&#xff1a;情感分析的基本方法 情感分析简介 情感分析&#xff0c;又称意见挖掘、倾向性分析等。简单而言&#xff0c;是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。在日常生活中&#xff0c;情感分析的应用非常普遍&#xff0c;下面列举几种常见的…...

迁移学习——CycleGAN

CycleGAN 1.导入需要的包2.数据加载&#xff08;1&#xff09;to_img 函数&#xff08;2&#xff09;数据加载&#xff08;3&#xff09;图像转换 3.随机读取图像进行预处理&#xff08;1&#xff09;函数参数&#xff08;2&#xff09;数据路径&#xff08;3&#xff09;读取文…...

【软件测试】对于测试中的bug,我们真正了解了吗?

目录 1.软件测试的生命周期 1.1.软件测试阶段流程 1.2.各流程的任务 2.什么是bug 2.1.bug的概念 2.2.怎么描述bug 2.3.bug的级别 2.4.bug的生命周期 1.软件测试的生命周期 在学习bug前&#xff0c;我们先来学习一下软件测试的生命周期&#xff0c;也就是测试人员进行测…...

Packer-Fuzzer一款好用的前端高效安全扫描工具

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、Packer Fuzzer介绍 Packer Fuzzer是一款针对Webpack…...

解决卸载TabX explorer软件后导致系统文件资源管理器无法正常使用问题

最近安装了最新版本的鲁大师&#xff0c;安装过程中不小心同时安装了捆绑软件TabX explorer。这个软件和系统自带的文件资源管理器很像&#xff0c;最后弹出会员到期才发现&#xff0c;这个不是系统文件资源管理器&#xff0c;是第三方的文件资源管理器&#xff0c;就按正常流程…...

qt for android 使用打包sqlite数据库文件方法

1.在使用sqlite数据库时&#xff0c;先将数据库文件打包&#xff0c;放置在assets中如下图: 将文件放置下android中的assets下的所有文件都会打包在APK中&#xff0c;可以用7zip查看apk文件 2.在qt代码读取数据文件&#xff0c;注意在assets下的文件都是Read-Only&#xff0c;需…...

MYBATIS大于等于、小于等于的写法

mybatis使用的是xml格式的文件。使用>和<号的时候&#xff0c;会存在与xml的标签的规范冲突。需要写成如下形式&#xff0c;否则会报错。 第一种写法 原符号 替换符号 < < < <> > > >& &amp; &…...

基于堆叠长短期记忆网络 Stacked LSTM 预测A股股票价格走势

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…...

SpringCloud Alibaba Sentinel基础入门与安装

GitHub地址&#xff1a;https://github.com/alibaba/Sentinel 中文文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html 下载地址&#xff1a;https://github.com/alibaba/Sentinel/releases Spring Cloud Alibaba 官方说明文档&#xff1a;Spring Clou…...

Arduino IDE下载、安装和配置

文章开始先把我自己网盘里的安装包分享给大家&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1cb2_3m0LnuSKLnWP_YoWPw?pwdwwww 提取码&#xff1a;wwww 里面一个是Arduino IDE的安装包&#xff0c;另一个是即将发布的版本。 第一个安装包打开直接按照我的步骤安装就…...

SOBEL图像边缘检测器的设计

本项目使用FPGA设计出SOBEL图像边缘检测器&#xff0c;通过分析项目在使用过程中的工作原理和相关软硬件设计进行分析详细介绍SOBEL图像边缘检测器的设计。 资料获取可联系wechat 号&#xff1a;comprehensivable 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本…...

Day35:2734. 执行字串操作后的字典序最小字符串

Leetcode 2734. 执行字串操作后的字典序最小字符串 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中&#xff0c;你可以完成以下行为&#xff1a; 选择 s 的任一非空子字符串&#xff0c;可能是整个字符串&#xff0c;接着将字符串中的每一个字符替换为英文字母表中的前…...

【高考志愿】机械工程

目录 一、专业概述 二、学科特点 三、就业前景 四、机械工程学科排名 五、专业选择建议 高考志愿选择机械工程&#xff0c;这是一个需要深思熟虑的决定&#xff0c;因为它不仅关乎未来的学习和职业发展&#xff0c;更是对自我兴趣和潜能的一次重要考量。 一、专业概述 机…...

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命令及使用场景 前言下面进入正题&#xff1a;ldd命令 前言 博主今天ubuntu编译go项目出来的一个可执行文件&#xff0c;放centos运行发现居然依赖于XXlib库。然后我一下就想到两个系统库版本不一致&#xff0c;重编。换系统&#xff0c;导项目&#xff0c;配环境……...

自费5K,测评安德迈、小米、希喂三款宠物空气净化器谁才是高性价比之王

最近&#xff0c;家里的猫咪掉毛严重&#xff0c;简直成了一个活生生的蒲公英&#xff0c;家中、空气中各处都弥漫着猫浮毛甚至所有衣物都覆盖着一层厚厚的猫毛。令人难以置信的是&#xff0c;有时我甚至在抠出的眼屎中都能发现夹杂着几根猫毛。真的超级困扰了。但其实最空气中…...

1373. 二叉搜索子树的最大键值和

Problem: 1373. 二叉搜索子树的最大键值和 文章目录 思路解题方法复杂度Code 思路 解决这个问题的关键在于采用深度优先搜索&#xff08;DFS&#xff09;策略&#xff0c;并结合树形动态规划的思想。我们需要设计一个递归函数&#xff0c;它不仅能够遍历整棵树&#xff0c;还能…...

基于java + Springboot 的二手物品交易平台实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;系统架构 &#x1f4da; 数据库设计 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 登录模块 首页模块 二手商品轮播图添加 &#x1f4ac; 后台功能模块 二手商品商品列表 添加二手商品商品 添加购物车 &a…...

Shopee本土店选品有什么技巧?EasyBoss ERP为你整理了6个高效选品的方法!

电商圈有句话叫&#xff1a;七分靠选品&#xff0c;三分靠运营&#xff0c;选品对了&#xff0c;事半功倍&#xff0c;选品错了&#xff0c;功亏一篑&#xff01; 很多卖家都会为选品发愁&#xff0c;特别对于Shopee本土店卖家来说&#xff0c;要囤货到海外仓&#xff0c;如果…...

3D在线展览馆的独特魅力,技术如何重塑展览业的未来?

在数字化和虚拟现实技术迅猛发展的今天&#xff0c;3D在线展览馆已经成为一种颇具前景的创新形式。搭建3D在线展览馆不仅能够突破传统展览的时空限制&#xff0c;还能为参观者提供身临其境的体验&#xff0c;极大地提升展示效果和用户互动。 一、3D在线展览馆的意义 1、突破时空…...

基于SpringBoot的藏区特产销售平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBoot框架 工具&#xff1a; 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、解决方案&#xff1a; 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 2、解决方案&#xff1a; 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…...

线性代数|机器学习-P18快速下降奇异值

文章目录 1. 为什么要低秩矩阵1.1 矩阵A的秩定义1.2 矩阵压缩PCA 2. 低秩矩阵图像处理3. 秩的相关性质3.1 秩的公差轴表示3.2 Eckart-Young 定理 4. 低秩矩阵4.1 低秩矩阵描述4.2 函数低秩矩阵形式4.3通项小结4.4 函数采样拟合 5. 西尔维斯特方程5.1 希尔伯特矩阵举例5.2 范德蒙…...

本地离线模型搭建指南-中文大语言模型底座选择依据

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…...

【代码随想录】【算法训练营】【第51天】 [115]不同的子序列 [583]两个字符串的删除操作 [72]编辑距离

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 51&#xff0c;周四&#xff0c;又是不能坚持的一天~ 题目详情 [115] 不同的子序列 题目描述 115 不同的子序列 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 …...

24下半年软考集合!30s打破信息差!

01软考是什么&#xff1f; 软考&#xff0c;全称为计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;也称为计算机资格考试&#xff0c;是由国家人力资源和社会保障部、工业和信息化部领导的国家级考试。它既是国家级资格证书&#xff0c;又是职称资…...

如何在Xcode中设置库路径

在Xcode中设置库路径的过程可以分为以下几个步骤&#xff0c;下面将结合参考文章中的信息&#xff0c;以清晰、分点表示和归纳的方式给出指导&#xff1a; 1. 确定库的类型和来源 动态库&#xff08;.dylib或.framework&#xff09;或静态库&#xff08;.a&#xff09;&#…...

小程序的基本使用

【 0 】前言 【 0 】 这个就是js代码的存放地方 app.json // pages/banner/banner.js Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示…...

[保姆级教程]uniapp设置字体引入字体格式

文章目录 在 UniApp 中设置和引入自定义字体&#xff08;如 .ttf、.woff、.woff2 等格式&#xff09;通常涉及几个步骤。 准备字体文件&#xff1a; 首先&#xff0c;你需要有字体文件。这些文件通常以 .ttf、.woff 或 .woff2 格式提供。确保有权使用这些字体&#xff0c;并遵守…...

【Webpack】前端工程化之Webpack与模块化开发

目 录 前言模块化开发Stage1 - 文件划分方式Stage2 - 命名空间方式Stage3 - IIFE&#xff08;立即调用函数表达式&#xff09;Stage 4 - IIFE 依赖参数模块化的标准规范 使用Webpack实现模块化打包安装WebpackWebpack基本配置Webpack构建流程Webpack热更新Webpack打包优化 前言…...

【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程

文章目录 问题&#xff1a;无法在AMD平台打开Android studio 虚拟机&#xff0c;已解决平台&#xff1a;AMD 5700g系统&#xff1a;win10专业版1、在 amd平台上使用安卓虚拟机需要安装硬件加速器2、关闭win10上的系统服务 问题&#xff1a;无法在AMD平台打开Android studio 虚拟…...

LearnOpenGL - Android OpenGL ES 3.0 使用 FBO 进行离屏渲染

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…...

人工智能虚拟仿真系统,解决算法难、编程难、应用场景难三大难题

近年来&#xff0c;人工智能技术迅猛发展&#xff0c;广泛渗透至各行业&#xff0c;市场份额持续扩大&#xff0c;预示着智能化转型的广阔前景。该行业本质上属于知识高度密集型&#xff0c;近年来的迅猛发展进一步加剧了对专业人才的迫切需求。 然而&#xff0c;我国目前在人工…...

CTE(公共表表达式)和视图在查询时的性能影响

在SQL查询优化和数据库设计中&#xff0c;CTE&#xff08;公共表表达式&#xff09;和视图都是常用的工具。尽管它们在功能和使用场景上有很多相似之处&#xff0c;但在查询性能方面可能存在显著差异。本文将探讨CTE和视图在查询时的性能影响&#xff0c;帮助您在实际项目中做出…...

新能源行业必会基础知识-----电力市场概论笔记-----绪论

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 电力市场的定义2. 对传统电力系统理论的挑战 1. 电力市场的定义 1. 我国电力市场的进程 我国新一轮电力体制改革的5大亮点&…...

003 SpringBoot操作ElasticSearch7.x

文章目录 5.SpringBoot集成ElasticSearch7.x1.添加依赖2.yml配置3.创建文档对象4.继承ElasticsearchRepository5.注入ElasticsearchRestTemplate 6.SpringBoot操作ElasticSearch1.ElasticsearchRestTemplate索引操作2.ElasticsearchRepository文档操作3.ElasticsearchRestTempl…...

npm install报错Maximum call stack size exceeded

npm 报错 方案&#xff1a; npm cache clean --force npm install...

第1章 基础知识

第1章 基础知识 1.1 机器语言 机器语言就是机器指令的集合&#xff0c;机器指令展开来讲就是一台机器可以正确执行的命令 1.2 汇编语言的产生 汇编语言的主题是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上&#xff0c;汇编指令是机器指令便于记忆的书写格式。…...

python脚本 限制 外部访问 linux服务器端口

注意&#xff1a;该脚本会清空linux防火墙的filter表的规则和用户自定义链路 脚本的效果是将端口限制为仅服务器内部访问 可以提供ip地址白名单 具体脚本&#xff1a; #!/usr/bin/python3 import argparse, subprocess, sys, redef popen(cmd):global resulttry:result su…...

Redis-哨兵模式-主机宕机-推选新主机的过程

文章目录 1、为哨兵模式准备配置文件2、启动哨兵3、主机6379宕机3.4、查看sentinel控制台日志3.5、查看6380主从信息 4、复活63794.1、再次查看sentinel控制台日志 1、为哨兵模式准备配置文件 [rootlocalhost redis]# ll 总用量 244 drwxr-xr-x. 2 root root 150 12月 6 2…...

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发

游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发 码客 卢益贵 ygluu 关键词&#xff1a;AI&#xff08;AIGC、ChatGPT、文心一言&#xff09;、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…...

每日一练 - OSPF 组播地址

01 真题题目 判断以下陈述是否正确&#xff1a; 224.0.0.6 是 ALL DRouters 监听地址 224.0.0.5 是 ALL SPFRouters 监听地址 A.正确 B.错误 02 真题答案 A 03 答案解析 在OSPF (Open Shortest Path First) 路由协议中&#xff0c;为了实现高效的信息交换和发现邻居&#x…...