关于用户头像储存和读取的问题

桂小五爱吃肉 2018-07-24 03:34:12
例如在一个论坛中,会有很多条评论,而每个人都有头像,这种情况下如何快速的获取用户的头像呢?

自己只能想到头像地址前面固定,文件名是用户id,例如“http://avatar.csdn.net/avatar/qq_25582683.jpg”。

但是看了csdn的头像地址://avatar.csdn.net/4/F/5/1_qq_25582683.jpg,这是我的;

特别好奇如何做的,难道每个用户的头像都是去关联用户表,然后用户表中存头像地址吗?
...全文
728 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2018-07-25
  • 打赏
  • 举报
回复
引用 9 楼 qq_25582683 的回复:
这个我知道,我是想说有没有巧妙的办法可以快速的获取头像,就比如
http://avatar.csdn.net/avatar/qq_25582683.jpg,前面域名固定,后面是我的id或者什么可以唯一的值作为文件名,这样不管在哪儿,只要有我的id就能得到我的头像了

你都说出答案了,不知道你有什么问题?
桂小五爱吃肉 2018-07-25
  • 打赏
  • 举报
回复
引用 8 楼 yjsl__ 的回复:
用户表里有头像字段,存图片地址,在用户上传的时候根据某算法生成
这个我知道,我是想说有没有巧妙的办法可以快速的获取头像,就比如
http://avatar.csdn.net/avatar/qq_25582683.jpg,前面域名固定,后面是我的id或者什么可以唯一的值作为文件名,这样不管在哪儿,只要有我的id就能得到我的头像了
yjsl__ 2018-07-24
  • 打赏
  • 举报
回复
用户表里有头像字段,存图片地址,在用户上传的时候根据某算法生成
maradona1984 2018-07-24
  • 打赏
  • 举报
回复
引用 6 楼 qq_25582683 的回复:
[quote=引用 5 楼 maradona1984 的回复:]
不知道 关联用户表 这个动作有什么问题?或者你可以不关联,直接查询就行了

按理说不应该有什么问题,
一是我怕会影响查询效率,
二是我们有两个数据库,两个数据库都有用户,这样关联不太好关联吧[/quote]
既然有两个数据库,那数据最好也隔离,通过接口方式获取用户信息,其实用户表还有很多别的信息,你头像可以取巧,别的可以吗?
担心对性能有影响,那就从架构上解决问题,你这只能解决局部问题,说不定还解决不了,就如上所述,今天你只需要头像,明天我要显示昵称,显示等级,那你还是得查一次
当然关联数据库并非必要的行为,直接传入列表用户id的数组查询列表用户信息即可,俺发现系统很多额外的复杂度是由表关联产生的,他会带来sql优化问题,类的职责不明,要维护的sql爆炸,开发效率降低等等
桂小五爱吃肉 2018-07-24
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984 的回复:
不知道 关联用户表 这个动作有什么问题?或者你可以不关联,直接查询就行了

按理说不应该有什么问题,
一是我怕会影响查询效率,
二是我们有两个数据库,两个数据库都有用户,这样关联不太好关联吧
maradona1984 2018-07-24
  • 打赏
  • 举报
回复
不知道 关联用户表 这个动作有什么问题?或者你可以不关联,直接查询就行了
桂小五爱吃肉 2018-07-24
  • 打赏
  • 举报
回复
引用 3 楼 yyx0218 的回复:
按F12打开页面调试

这个我知道,我就是看到csdn自己的头像地址在自己域名和用户名之间加入一些随机的路径
端正你的眼神 2018-07-24
  • 打赏
  • 举报
回复
按F12打开页面调试
端正你的眼神 2018-07-24
  • 打赏
  • 举报
回复
在本页面按12发现,我认为,在你之前上传图片的时候,图片名称是用户名,头像显示时候地址直接用你的用户名拼接的,应该没有到库里查询图片路径
端正你的眼神 2018-07-24
  • 打赏
  • 举报
回复
我认为,图片是保存在本地的或者是图片服务器上,根据用户信息从库里拿到头像地址,只要有显示头像的地方,把这个地址在页面贴上去就行
资源分设为1,因为我自己只有3分资源分了,所以就不设为0了 这个山寨QQ代码2000行,基于现在可以使用IP6,给出它的设计原理 功能:山寨QQ 主要行为: ①用户注册 ②添加好友 ③好友上线头像变为彩色 ④在线上的好友头像是彩色,不在线上的好友头像是灰色,动态变化 ⑤独立窗口聊天 ⑥服务器端有两个表,全部用户表和在线用户表,都是动态改变的 代码在下面,有2000多行,总共17个文件,干脆就看看这些思路得了。 山寨QQ分为用户端和服务器端,主要用到的Java知识点有:多线程、网络编程、IO流,如果能够加入数据库当然更好,可是我在家一直没网,没有数据库,所以就把用户信息全部储存在文件中了。 服务器端3000号端口作为一个特殊的端口,放在一个单独的线程中时刻监听着。服务器的交互信息通讯端口从3001号一直向后监听,最大可以到65535号端口。 用户每次来连接服务器时,首先连接3000号端口,获取服务器正在监听的端口号,然后再去连接这个端口。 用户和服务器之间的交互信息使用对象流来传递,信息类型分为 注册消息=0、 修改密码=1、 登录验证=2、 请求聊天=3、 获取在线好友=4、 添加好友=5、 某人上线了=6 如果是登录消息,则把这个新建的套接字(套接字即Socket,网络通讯全靠他来实现)储存在一个单独的线程中,使用这个线程的类储存用户用户名、昵称、密码、IP。然后将这个县城储存在一组向量中,即C语言中的链表。IP地址可以通过套接字得到。当用户再次和服务器发生交互信息时,直接利用这个已存在的套接字即可。 如果用户双击某个用户希望聊天时,首先从服务器端获取该用户的IP,然后再单独去连接这个用户用户连接用户时,和连接服务器的原理大同小异。2000号端口作为一个特殊的端口被监听着。如果一台机器上同时登陆有多个用户,则监听的端口一直往下走,最小可以到1025,总共有975个端口可以利用,用户总该用不了这么多吧。然后接下来,该不用我说了吧,连接好友正在监听的端口就是了。 建立完成连接,就可以弹出聊天窗口开始聊天了。 好了,大体思路就是这样。当然还有一些其他的功能,比如注册用户、添加好友等,和上面思路也差不多。 对了,忘了说说如何获取在线好友了 用户登录成功后,将自己所有的好友列表从文件中读取,放在一个向量中发送给服务器,服务器查看哪些人在在线用户列表中,然后返回用户的在线好友,同时通知这些在线好友某人人上线了,还是利用已建立的套接字。 用户下线后,和服务器已建立的套接字发生IOException异常,程序代码块跳转,服务器就通知用户的在线好友有人下线了。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧