- 浏览: 274318 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
palytoxin:
我现在也发现是这样
关于分享 -
float2net:
Java社区,分享有利于提高。
关于分享 -
hz_qiuyuanxin:
头晕啊,啊邱
RSpec学习笔记 -
reyesyang:
...
关于分享 -
Hooopo:
一般实现map都先实现each
在 Ruby 中对树状结构(tree)进行 map 操作
参考:
http://github.com/binarylogic/authlogic_example
http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/
http://railscasts.com/episodes/170-openid-with-authlogic
Authlogic引入了一种新的model,它继承自Authlogic::Session::Base,是专门用来处理会话细节的。就像ActiveRecord是专门用来处理数据库相关细节一样。你可以像对待普通的ActiveRecord model一样来创建、更新和删除会话。
安装:
script/plugin install git://github.com/binarylogic/authlogic.git
简单的一个入门demo:
首先是注册功能,得先注册,然后才可以登录嘛。
新建一个user model
User可能会需要下面这些字段,其中:persistence_token是必须的,其它都是可选的,按情况做出自己的选择:
注意,login、email、crypted_password字段都是可选的,是因为Authlogic并不关心登录认证的实现方式。如果你喜欢,可以使用OpenID、LDAP或者其它任何你想要的方式,甚至不提供你自己的认证系统。
与给每个任务(例如重置密码)提供一个token的方式不同,authlogic为不同需求的任务提供了几种不同的token:
* Persistence token: Authlogic内部使用的。它存储在你的cookies和session里,用于持久化当前用户的会话。这种方式比单纯的保存user id要安全得多。
* Single access token: 用于私有的API访问。比如:www.whatever.com?user_credentials=[single access token] 授权访问但不持久化。
* Perishable token: 重设密码、激活账号时很有用。
更多详细内容可以查看文档。
要做的这个demo除了single_access_token和perishable_toker,其它似乎都用得到:
为了使用authlogic来做这个注册功能,给user model加上一句:
接着创建一个UsersController
定义路由:
给UsersController添加new方法:
views/users/new.html.erb
user model acts_as_authentic之后,如果user model有crypted_password和password_salt字段,authlogic会为user model自动添加上password和password_confirmation这两个虚拟属性。
给UsersController添加create方法:
user model acts_as_authentic之后,authlogic会自动的为user model加上一些验证,比如login必填、login唯一、email格式、email必填、email唯一、password必填、password长度、password_confirmation和password必须相同等……
可以启动服务器,访问account/new,填写一些不合法的数据,提交看看效果。
为了使用户在注册成功后能重定向到root_path,现在添加一个简单的controller、view和route规则:
views/welcome/index.html.erb
为了能够成功访问到这个welcome/index.html.erb,现在把public/index.html删除。
现在访问注册页面:account/new。往表表单里填写合法的注册信息,然后提交。可以看到重定向到了root_path。
注册功能写好之后,需要一个登录功能。
登录,也就是创建一个会话(Session),我们需要一个新的模型,给它起个名字,叫UserSession吧。authlogic带了这么一个模型,我们会发现它用起来跟ActiveRecord差不多,接口非常像。
首先创建一个session模型,这里不再使用model这个generator,而改用authlogic 提供的session这个generator。
可以看到生成的UserSession继承自authlogic的Authlogic::Session::Base。
接下来创建一个controller来操作这个Session模型。
定义一个路由规则:
为UserSessionsController定义一个new方法,像普通的RESTful Controller一样,这个new方法返回一个新的UserSession对象以便生成创建会话的表单:
views/user_sessions/new.html.erb这个表单也和普通的RESTful表单一样:
这时候如果通过/signin 访问这个表单,会报user_sessions_path方法找不到的错。我忘记给UserSessionsController定义路由规则了:
然后把上面的表单改成这样(详见单数形式resource生成的RESTful路由规则):
接着刷新/signin页面,可以正常显示了。填入email和密码,登录。
No action responded to create.
创建会话还需要一个create方法:
ActiveRecord的save方法把模型保存到数据库。Session模型的save方法则是把模型保存到http session中。并且,和ActiveRecord一样,在save的时候会触发一些验证。#FIXME
这回应该没问题了,再次登录……先随便输入一些不合法的登录信息吧,可以看到authlogic对Session模型也自动加上了各种验证。现在输入刚才注册时填写的正确的email和密码,点击sign in,可以看到成功的跳转到了root_path页面。
如何知道我们是不是真的登录成功了呢?试着把用户的email输出在welcome页面吧。
我们需要一个取到当前登录的用户的方法
app/controllers/application_controller.rb
这里的UserSession.find会返回当前的session对象,当然,是UserSession包装的session,不是rails的session,其中保存着一个当前用户的id。UserSession的record方法会发起一次SQL查询,查找这个id对应的User并返回。
要注意的是,这里的这两个current_*方法定义在了ApplicationController里,页面上无法直接访问Controller里的方法。那么把它们移到WelcomeHelper中吗?也不行,helper里取不到session。这时候可以使用helper_method,像这样:
helper_method是rails中的一个方法,可以让controllers里的方法像helper一样给views调用。我认为这个方法不可以乱用,像这两个方法一样即可以让页面调用,又可以让controller调用的情况应该不多。views需要的方法应该多属于表现逻辑,都应该放在各个helper module中。
另外,application_controller.rb的注释部分有一个filter_parameter_logging方法。搜索了一下,找到这个:http://hideto.iteye.com/blog/106956
之前andyhu1007的Rails每周一题第七篇中也有提到:http://www.iteye.com/topic/378559
现在修改一下views/welcome/index.html.erb以显示当前用户的email:
刷新页面,可以看到当前用户的email被显示出来了。
添加一个注销功能,也就是销毁会话:
controllers/user_sessions_controller.rb
views/welcome/index.html.erb
访问root_path,点击这个logout,注销成功。再返回root_path,welcome后面的email没了。
其实authlogic在用户注册成功之后,会自动登录一次。现在去新注册一个用户,会发现注册成功后已经是登录状态了。
添加一个显示和修改用户资料的功能。
先加一个show的页面:
views/users/show.html.erb
和show action
controllers/users_controller.rb
把之前写的UsersController的create方法改一改:
现在试着新注册一个用户,注册成功后会跳转到显示用户资料的页面,下面有一个edit链接。
然后是edit.html.erb页面,为了偷懒,这里把之前new的表单提取出来。
views/users/_form.html.erb
views/users/new.html.erb
views/users/edit.html.erb
为UsersController添加一个edit和update方法
现在可以修改用户的email了。如果密码留空,authlogic默认不会更新密码,但这个是可以选择的,如果你希望用户在密码留空并提交的时候把密码清空,可以这样修改user model:
不过这个不好试验,还要把 authlogic对密码为空时的表单验证给去掉。我是在写测试代码的时候遇到这个问题才注意到的。嗯,可以在rails console里试试。
……吃完饭写到21点多。接下来的简单记记:
如果user model中定义了active?, approved?, and confirmed?这3个方法中的任意一个,authlogic在用户登录时,会自动调用该方法,如果返回值为false,则Session创建失败,即登录失败。
邮件激活的功能大概是这样实现的:
首先,为user model添加一个类型为string的perishable_token字段,和一个类型为boolean的active字段(这样user model就有了一个active?和active=方法),并修改migration使active属性默认值为false,这样用户在注册之后就不能马上登录。
在创建好用户之后给用户的邮箱发一封带有user.perishable_token的值的邮件(可以用callback、observe来做),让用户使用这个token访问某个controller(比如UsersController)的某个action(比如active),在这个action中通过perishable_token找到对应的user对象,注意,是使用User.find_using_perishable_token而不是find_by_perxxxxxx,)我大概的写一下伪代码(不保证没有问题,只是说明一下思路):
可以参考一下这篇文章:http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/
另外关于OpenID的插件,先放个链接,有空回来补吧,或者另外写一篇:
http://railscasts.com/episodes/170-openid-with-authlogic
插件在这:http://github.com/binarylogic/authlogic_openid
http://github.com/binarylogic/authlogic_example
http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/
http://railscasts.com/episodes/170-openid-with-authlogic
Authlogic引入了一种新的model,它继承自Authlogic::Session::Base,是专门用来处理会话细节的。就像ActiveRecord是专门用来处理数据库相关细节一样。你可以像对待普通的ActiveRecord model一样来创建、更新和删除会话。
安装:
script/plugin install git://github.com/binarylogic/authlogic.git
简单的一个入门demo:
首先是注册功能,得先注册,然后才可以登录嘛。
新建一个user model
User可能会需要下面这些字段,其中:persistence_token是必须的,其它都是可选的,按情况做出自己的选择:
t.string :login, :null => false # 可选,可以用email来代替它,或者同时使用两者。 t.string :email, :null => false # 可选,可以用login来代替它,或者同时使用两者。 t.string :crypted_password, :null => false # 可选,但强烈建议加上。 t.string :password_salt, :null => false # 可选,但强烈建议加上。 t.string :persistence_token, :null => false # 必选 t.string :single_access_token, :null => false # 可选,详见Authlogic::Session::Params t.string :perishable_token, :null => false # 可选,详见Authlogic::Session::Perishability # Magic columns,就像ActiveRecord的created_at和updated_at一样,这些字段由Authlogic自动维护。 t.integer :login_count, :null => false, :default => 0 # 可选,详见Authlogic::Session::MagicColumns t.integer :failed_login_count, :null => false, :default => 0 # 可选,详见Authlogic::Session::MagicColumns t.datetime :last_request_at # 可选,详见Authlogic::Session::MagicColumns t.datetime :current_login_at # 可选,详见Authlogic::Session::MagicColumns t.datetime :last_login_at # 可选,详见Authlogic::Session::MagicColumns t.string :current_login_ip # 可选,详见Authlogic::Session::MagicColumns t.string :last_login_ip # 可选,详见Authlogic::Session::MagicColumns
注意,login、email、crypted_password字段都是可选的,是因为Authlogic并不关心登录认证的实现方式。如果你喜欢,可以使用OpenID、LDAP或者其它任何你想要的方式,甚至不提供你自己的认证系统。
与给每个任务(例如重置密码)提供一个token的方式不同,authlogic为不同需求的任务提供了几种不同的token:
* Persistence token: Authlogic内部使用的。它存储在你的cookies和session里,用于持久化当前用户的会话。这种方式比单纯的保存user id要安全得多。
* Single access token: 用于私有的API访问。比如:www.whatever.com?user_credentials=[single access token] 授权访问但不持久化。
* Perishable token: 重设密码、激活账号时很有用。
更多详细内容可以查看文档。
要做的这个demo除了single_access_token和perishable_toker,其它似乎都用得到:
script/generate model user email:string crypted_password:string password_salt:string persistence_token:string login_count:integer failed_login_count:integer last_request_at:datetime last_login_at:datetime current_login_at:datetime last_login_at:datetime current_login_ip:string last_login_ip:string
rake db:migrate
为了使用authlogic来做这个注册功能,给user model加上一句:
class User < ActiveRecord::Base acts_as_authentic end
接着创建一个UsersController
script/generate controller users
定义路由:
map.resource :account, :controller => 'users'
给UsersController添加new方法:
def new @user = User.new end
views/users/new.html.erb
<% form_for @user, :url => account_path do |form| %> <%= form.error_message %> <%= form.label :email %> <%= form.text_field :email %><br/> <%= form.label :password %> <%= form.password_field :password %><br/> <%= form.label :password_confirmation %> <%= form.label :password_confirmation %><br/> <%= form.submit 'sign up'%> <% end %>
user model acts_as_authentic之后,如果user model有crypted_password和password_salt字段,authlogic会为user model自动添加上password和password_confirmation这两个虚拟属性。
给UsersController添加create方法:
def create @user = User.new params[:user] if @user.save flash[:notice] = 'account create successful' redirect_to root_path else render 'new' end end
user model acts_as_authentic之后,authlogic会自动的为user model加上一些验证,比如login必填、login唯一、email格式、email必填、email唯一、password必填、password长度、password_confirmation和password必须相同等……
可以启动服务器,访问account/new,填写一些不合法的数据,提交看看效果。
为了使用户在注册成功后能重定向到root_path,现在添加一个简单的controller、view和route规则:
script/generate controller welcome index
views/welcome/index.html.erb
welcome!
map.root :controller => 'welcome'
为了能够成功访问到这个welcome/index.html.erb,现在把public/index.html删除。
现在访问注册页面:account/new。往表表单里填写合法的注册信息,然后提交。可以看到重定向到了root_path。
注册功能写好之后,需要一个登录功能。
登录,也就是创建一个会话(Session),我们需要一个新的模型,给它起个名字,叫UserSession吧。authlogic带了这么一个模型,我们会发现它用起来跟ActiveRecord差不多,接口非常像。
首先创建一个session模型,这里不再使用model这个generator,而改用authlogic 提供的session这个generator。
script/generate session user_session
可以看到生成的UserSession继承自authlogic的Authlogic::Session::Base。
class UserSession < Authlogic::Session::Base end
接下来创建一个controller来操作这个Session模型。
script/generate controller user_sessions
定义一个路由规则:
map.signin '/signin', :controller => 'user_sessions', :action => 'new'
为UserSessionsController定义一个new方法,像普通的RESTful Controller一样,这个new方法返回一个新的UserSession对象以便生成创建会话的表单:
def new @user_session = UserSession.new end
views/user_sessions/new.html.erb这个表单也和普通的RESTful表单一样:
<% form_for @user_session do |form| %> <%= form.error_messages %> <%= form.label :email %> <%= form.text_field :email %><br/> <%= form.label :password %> <%= form.password_field :password %><br/> <%= form.submit 'sing in' %> <% end %>
这时候如果通过/signin 访问这个表单,会报user_sessions_path方法找不到的错。我忘记给UserSessionsController定义路由规则了:
map.resource :user_session #对用户来说,session只有一个,所以这里是单数形式的resource。
然后把上面的表单改成这样(详见单数形式resource生成的RESTful路由规则):
<% form_for @user_session, :url => user_session_path do |form| %>
接着刷新/signin页面,可以正常显示了。填入email和密码,登录。
No action responded to create.
创建会话还需要一个create方法:
def create @user_session = UserSession.new params[:user_session] if @user_session.save flash[:notice] = 'sign in successful!' redirect_to root_path else render 'new' end end
ActiveRecord的save方法把模型保存到数据库。Session模型的save方法则是把模型保存到http session中。并且,和ActiveRecord一样,在save的时候会触发一些验证。#FIXME
这回应该没问题了,再次登录……先随便输入一些不合法的登录信息吧,可以看到authlogic对Session模型也自动加上了各种验证。现在输入刚才注册时填写的正确的email和密码,点击sign in,可以看到成功的跳转到了root_path页面。
如何知道我们是不是真的登录成功了呢?试着把用户的email输出在welcome页面吧。
我们需要一个取到当前登录的用户的方法
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base helper :all # include all helpers, all the time protect_from_forgery # See ActionController::RequestForgeryProtection for details # Scrub sensitive parameters from your log # filter_parameter_logging :password private def current_user_session @current_user_session ||= UserSession.find end def current_user @current_user ||= current_user_session && current_user_session.record end end
这里的UserSession.find会返回当前的session对象,当然,是UserSession包装的session,不是rails的session,其中保存着一个当前用户的id。UserSession的record方法会发起一次SQL查询,查找这个id对应的User并返回。
要注意的是,这里的这两个current_*方法定义在了ApplicationController里,页面上无法直接访问Controller里的方法。那么把它们移到WelcomeHelper中吗?也不行,helper里取不到session。这时候可以使用helper_method,像这样:
class ApplicationController < ActionController::Base helper :all # include all helpers, all the time protect_from_forgery # See ActionController::RequestForgeryProtection for details # Scrub sensitive parameters from your log # filter_parameter_logging :password helper_method :current_user_session, :current_user private def current_user_session @current_user_session ||= UserSession.find end def current_user @current_user ||= current_user_session && current_user_session.record end end
helper_method是rails中的一个方法,可以让controllers里的方法像helper一样给views调用。我认为这个方法不可以乱用,像这两个方法一样即可以让页面调用,又可以让controller调用的情况应该不多。views需要的方法应该多属于表现逻辑,都应该放在各个helper module中。
另外,application_controller.rb的注释部分有一个filter_parameter_logging方法。搜索了一下,找到这个:http://hideto.iteye.com/blog/106956
之前andyhu1007的Rails每周一题第七篇中也有提到:http://www.iteye.com/topic/378559
现在修改一下views/welcome/index.html.erb以显示当前用户的email:
welcome <%= current_user && current_user.email '' %>!
刷新页面,可以看到当前用户的email被显示出来了。
添加一个注销功能,也就是销毁会话:
controllers/user_sessions_controller.rb
def destroy current_user_session.destroy redirect_to signin_path end
views/welcome/index.html.erb
welcome <%= current_user && current_user.email '' %>!<br/> <%= link_to 'logout', user_session_path, :method => 'delete' %>
访问root_path,点击这个logout,注销成功。再返回root_path,welcome后面的email没了。
其实authlogic在用户注册成功之后,会自动登录一次。现在去新注册一个用户,会发现注册成功后已经是登录状态了。
添加一个显示和修改用户资料的功能。
先加一个show的页面:
views/users/show.html.erb
email:<%= @user.email %><br/> login count:<%= @user.login_count %><br/> failed login count:<%= @user.failed_login_count %><br/> last request at:<%= @user.last_requrest_at %><br/> current login at:<%= @user.current_login_at %><br/> last login at:<%= @user.last_login_at %><br/> current login ip:<%= @user.current_login_ip %><br/> last login ip:<%= @user.last_login_ip %><br/> <%= link_to 'edit', edit_account_path(@user)%> <%= link_to 'logout', user_session_path, :method => 'delete' %>
和show action
controllers/users_controller.rb
def show @user = current_user end
把之前写的UsersController的create方法改一改:
def create @user = User.new params[:user] if @user.save flash[:notice] = 'account create successful' redirect_to account_path #改一下这里 else render 'new' end end
现在试着新注册一个用户,注册成功后会跳转到显示用户资料的页面,下面有一个edit链接。
然后是edit.html.erb页面,为了偷懒,这里把之前new的表单提取出来。
views/users/_form.html.erb
<%= form.error_message %> <%= form.label :email %> <%= form.text_field :email %><br/> <%= form.label :password %> <%= form.password_field :password %><br/> <%= form.label :password_confirmation %> <%= form.label :password_confirmation %><br/> <%= form.submit 'sign up'%>
views/users/new.html.erb
<% form_for @user, :url => account_path do |form| %> <%= render :partial => 'form', :object => form %> <% end %>
views/users/edit.html.erb
<% form_for @user, :url => account_path do |form| %> <%= render :partial => 'form', :object => form %> <% end %>
为UsersController添加一个edit和update方法
def edit @user = current_user end def update @user = current_user if @user.update_attributes params[:user] flash[:notice] = 'account update successful!' redirect_to account_path else render 'edit' end end
现在可以修改用户的email了。如果密码留空,authlogic默认不会更新密码,但这个是可以选择的,如果你希望用户在密码留空并提交的时候把密码清空,可以这样修改user model:
acts_as_authentic do |config| config.ignore_blank_passwords = true end
不过这个不好试验,还要把 authlogic对密码为空时的表单验证给去掉。我是在写测试代码的时候遇到这个问题才注意到的。嗯,可以在rails console里试试。
……吃完饭写到21点多。接下来的简单记记:
如果user model中定义了active?, approved?, and confirmed?这3个方法中的任意一个,authlogic在用户登录时,会自动调用该方法,如果返回值为false,则Session创建失败,即登录失败。
邮件激活的功能大概是这样实现的:
首先,为user model添加一个类型为string的perishable_token字段,和一个类型为boolean的active字段(这样user model就有了一个active?和active=方法),并修改migration使active属性默认值为false,这样用户在注册之后就不能马上登录。
在创建好用户之后给用户的邮箱发一封带有user.perishable_token的值的邮件(可以用callback、observe来做),让用户使用这个token访问某个controller(比如UsersController)的某个action(比如active),在这个action中通过perishable_token找到对应的user对象,注意,是使用User.find_using_perishable_token而不是find_by_perxxxxxx,)我大概的写一下伪代码(不保证没有问题,只是说明一下思路):
class UsersController < ApplicationController def active @user = User.find_using_perishable_token(params[:perishable_token]) if @user @user.active = true @user.reset_perishable_token #另外有一个带感叹号的版本。 @user.save flash[:notice] = 'active successful!' redirect_to any_path else do some thing else end end end
可以参考一下这篇文章:http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/
另外关于OpenID的插件,先放个链接,有空回来补吧,或者另外写一篇:
http://railscasts.com/episodes/170-openid-with-authlogic
插件在这:http://github.com/binarylogic/authlogic_openid
发表评论
-
在 Ruby 中对树状结构(tree)进行 map 操作
2012-07-30 21:37 2911class BookChapter < ActiveRe ... -
一小段代码理解Fiber
2012-03-24 17:55 1511server = Fiber.new do |request| ... -
靠……靠谱量又足啊
2011-05-15 15:23 2127起源:慎用类变量 - 实例变量靠谱量又足 大概如下 ... -
RSpec-Core 2.6
2011-05-14 21:55 3531主要是转载吧,文档在墙的另一边,翻过去嫌麻烦,更多详细内容: ... -
在view spec中用Capybara.string的结果替代rendered(Capybara版本0.4.12)
2011-05-10 10:12 1620问题关键字:undefined method `has_sel ... -
rails best practices
2011-05-03 00:44 0我还清楚的记得,在06年左右,我写第一个软件的时候,1个月内心 ... -
JRuby on Rails连接MySQL遇到的一个问题。
2010-01-22 05:07 1819按照官方的wiki安装好JRuby、Rails以及需要的ada ... -
Hpricot笔记
2009-12-28 03:34 2667Hpricot::Doc的search方法返回一个Hprico ... -
任务来了
2009-12-27 20:53 0要求像 www.tieku.org 一样,抓取天涯的热门文章, ... -
alias,alias_method和alias_method_chain
2009-12-16 23:45 4548晚上被问到这三个的区别,没答上来,查了一下书本跟google。 ... -
webrat,草草记一下。
2009-12-14 15:55 0visit:发送一个get请求,相当于在浏览器的地址栏中输入u ... -
ffffffff
2009-11-12 21:14 0各司其职,cucumber用于描述最表层的“行为”,rspec ... -
RSpec学习笔记
2009-09-21 01:37 2268前面这部分参考自:http ... -
What's the difference between private and protected methods?
2009-08-27 23:30 1211引用 In Ruby, private visibility ... -
ubuntu下安装Ruby、Rails全记录
2009-08-10 19:27 2103还是记下来吧,之前花了很大力气安装成功过,前几天重装系统,Ru ... -
RSpec学习笔记
2009-03-30 17:46 0before(:all) 在所有example之前执行,并只执 ...
相关推荐
笔记记录分享-笔记记录分享网站-笔记记录分享网站源码-笔记记录分享网站java代码-笔记记录分享网站设计与实现-基于springboot的笔记记录分享网站-基于Web的笔记记录分享网站设计与实现-笔记记录分享项目-笔记记录...
微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小...
狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神...
小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+...
有道云笔记窗口大小调整技巧 在使用有道云笔记时,调整窗口大小是非常重要的操作。合理的窗口大小设置可以提高工作效率和阅读体验。本文将介绍如何调整有道云笔记的窗口大小,提高笔记编辑和阅读体验。 一、调整...
2020谷粒商城笔记资料,谷粒商城2020文档课件笔记+源代码(基础篇+高级篇) 谷粒商城2020文档课件笔记+源代码(基础篇+高级篇) 2020谷粒商城笔记资料(基础篇+高级篇) 尚硅谷谷粒商城笔记,很全。基础篇,高级篇...
基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记...
【大物上册手写笔记.pdf】是一份来自西电大学的高质量物理学习资料,主要涵盖了大学物理上册的内容。这份笔记由一位期末成绩达到90分以上的同学编写,因此具有很高的参考价值,适合学生在期末复习时使用。笔记内容...
《为知笔记4.2.476免登录——本地存储与便捷知识管理》 为知笔记,全称为“WizNote”,是一款受到广大用户喜爱的个人知识管理工具。其4.2.476版本提供了免登录的功能,这对于那些希望在不登录账户的情况下仅进行...
b站狂神说课程笔记大全,每个部分都有 狂神说java系列笔记(java基础+javaweb+ssm+微服务)全套 狂神说上课笔记未删减 Java基础到技术升级 1、JavaSE:Java入门 2、JavaSE:基础语法 3、JavaSE:流程控制 4、JavaSE...
为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序...
基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip 基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip 基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip...
Java相关课程系列笔记之一Java学习笔记 Java相关课程系列笔记之四JDBC学习笔记 Java相关课程系列笔记之六HTML学习笔记 Java相关课程系列笔记之七CSS学习笔记 Java相关课程系列笔记之八JavaScript学习笔记 Java相关...
2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip...
软考中级笔记,本人自己学习过程中记录的笔记内容。 课程学的是马老师的课程。参照此笔记默认有马老师的教程,或已对课本知识点内容有基础认识,本笔记也只是作为后期知识巩固和做题时辅助使用,前期肯定比较粗,...
oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记...
高手笔记 软件开发软件使用笔记 本资源是关于高手笔记 软件开发软件使用笔记的知识点总结。主要讲解了如何构建带内存错误检查的 gcc,以及 QEMU 的使用笔记。 一、构建带内存错误检查的 gcc 高手笔记软件开发软件...
这份“数据结构高分笔记part1”显然是为了帮助备考研究生入学考试的专业学生准备的,旨在提供深入的数据结构理解,助力他们在考试中取得优异成绩。 笔记可能涵盖以下几个关键知识点: 1. **基本概念**:首先,笔记...
微信小程序——云笔记(截图+源码).zip 微信小程序——云笔记(截图+源码).zip 微信小程序——云笔记(截图+源码).zip 微信小程序——云笔记(截图+源码).zip 微信小程序——云笔记(截图+源码).zip 微信小程序...