学习记录分享

登录 注册
首页 友链 关于 技术交流
SOB | 搜索
综合排序时间浏览量
全部分类Android/iOS测试/运维后台/大数据日常随笔前端/Flutter人工智能编程语言
找到约 9 条结果
阳光沙滩博客系统TodoList(待完成列表/bugs)
阳光沙滩博客系统TodoList(待完成列表/bugs) 轮播图点击,没有做链接跳转 图片上传,没有去重-->可以通过计算md5值来防止文件重复上传 所有前端请求可以提交页数的,后面需要做页数限制 管理中心的友情链接更新完以后,id没有清空 管理中心需要添加一个跳转到前端门户 文章样式调整 用户接口需要进行分类调整-->设计有问题 文章页面请求一下页面访问统计/或者在default.vue里请求一下页面访问统计 扩展 图片存储使用云对象存储 springDataJap换成MP 评论通过邮件通知 学习中遇到问题 学习中遇到问题,同学们去交流网站发帖子: https://www.sunofbeach.net/wenda 如果你有什么想法,建议,可以评论! 此文章下面评论,需要重新注册账号,与阳光沙滩账号不互通。
2020-09-06 16:31 5019 博客系统 todolis bugs 任务 扩展
博客系统通过文章标签计算相关文章(推荐相关文章)
通过文章标签计算相关文章的方式 在我们写博客系统的时候,如果我们没有引入其他的框架,直接自己写代码,能不能找到比较相似的文章推荐给用户呢? 我们来试试吧! 提交参数 当前文章ID,用于获取当前文章的标签进行匹配 推荐数量,返回的条数,后面要做限额处理,比如说5~50. 计算方式 第一种: 获取文章标签 如果标签只有一个,则获取一个。如果标签不指一个,随即获取一个 根据标签去查询其他文章,并且文章ID不为当前文章的ID 如果数量不够,获取最新的进行补充 第二种: 获取文章标签 如果标签只有一个,则获取一个。如果标签不指一个,则获取第一个。 根据标签获取文章,如果不够,标签只有一个的话,获取最新的文章;标签不指一个,则获取下一个标签,再不够再获取最新的文章即可 实现 博客系统目前的实现方式是第一种 代码: /** * 获取推荐文章,通过标签来计算 * * @param articleId * @param size * @return */ @Override public ResponseResult
2020-09-06 16:21 2545 博客系统 推荐 文章 博客 后台
阳光沙滩博客系统-手机登录
这个评论是从移动端还是PC端来的。 保存token_key到refreshToken里,需要多一个字段。 3、退出登录和过期:之前是做法是干掉所有的refreshToken记录,重新创建新的。不删除,只修改,如果没有就添加。 修改点: 登录 数据库 解析用户流程 退出登录 测试点: 测试登录,测试PC端登录和移动端登录 (pass) 测试权限的使用是否正常(用户解析)(pass) 退出登录,测试PC端退出登录,移动端退出登录 具体的修改请查看视频吧 课程地址:JavaWeb实现个人博客系统
2020-09-08 15:13 4595 博客系统 手机登录 移动端 安卓开发 android
阳光沙滩博客系统的部署
阳光沙滩博客系统的部署 基础环境 我们要有docker的环境,在docker上创建mysql的镜像,redis的镜像,接着构建我们的程序镜像 docker docker的安装,这个同学们可以参考官方的文档 参考文章 ubuntu 完全干净的卸载docker docker-compose安装 Docker安装后修改镜像源 ubuntu上安装docker mysql数据库 Dodcker创建Mysql容器 创建完镜像以后,远程登录一下mysql数据库 一是为了检查是否可以连接成功 二是为了执行sql脚本,创建数据库 脚本同学们请到资料里下载: 资料下载 redis docker搭建redis以及项目配置 Nginx 使用docker创建Nginx服务器容器 部署内容 后台程序 管理中心程序 门户程序 部署后台程序 *要确保已经安装了Java环境 这里面同学借给我们的服务器是2g的内存,所以我们只能省着着了。因此,我们的后台程序,不部署到docker里了,如果要部署到docker上,镜像的创建,请参考后台的课程内容,里面有教如何构建镜像的。 JavaWeb实现个人博客系统-后端 这里面我们
2020-09-06 16:18 3347 部署 测试 运维 上线 博客系统
Dodcker创建Mysql容器
Dodcker创建Mysql容器 我们这里通过docker-compose来创建mysql容器 同学们自行安装好docker和docker-compose ubuntu上安装docker docker-compose安装 创建相关目录 mkdir db mkdir conf mkdir log docker-compose.ytml文件 version: '3.1' services: mysql: container_name: "sob-blog-system-mysql" network_mode: "host" environment: MYSQL_ROOT_PASSWORD: "123456" MYSQL_USER: 'root' MYSQL_PASS: '123456' image: "mysql:5.7.30" restart: always ports: - 3306:3306 volumes: - "/home/aosp/docker/mysql/db:/var/lib/mysql" - "/home/aosp/docker/mysql/conf:/etc/mysql" - "/home/aosp/docker/mysql/log:/var/log/mysql" 自行修改容器名称、mysql的root密码,版本,端口,以及参数文件夹地址。 创建容器 docker-compose up [-d] -d选填,如果有-d则为守护式运行,可以先看看有没有出错,再守护式运行。
2020-09-06 16:19 2474 docker mysql 数据库 博客系统 测试
前端侧栏Tab和内容滚动联动切换标题
前端侧栏Tab和内容滚动联动切换标题 我们阳光沙滩博客系统课程里有一个关于页面 我们做成这个样子 点击侧栏可以切换右边内容;滚动右侧内容,可以切换左边的内容。 基本UI实现 左侧使用 ElementUI的组件Tabs https://element.eleme.cn/#/zh-CN/component/tabs 同学们可以去这里使用,至于怎么依赖ElementUI,可以参考官方说明,或者学习我们的前端课程。
2020-09-06 16:20 3188 博客系统 前端开发 毕业设计 测试 门户
阳光沙滩博客系统API接口
阳光沙滩博客系统API接口 分两部分:用户的API接口、门户的API接口 在线预览网址: 博客系统 baseUrl http://api.coincent.cn 统一返回结果bean类 ResponseResult{ code integer($int32) data {...} message string success boolean } 用户API接口 用户bean类 SobUser{ avatar string createTime string($date-time) email string id string loginIp string password string regIp string roles string sign string state string updateTime string($date-time) userName string } 用户登录 接口: /user/account/login/{captcha}/ 方法:POST 参数 captcha string(path,必须) 验证码,图灵验证码,请看后面的接口
2020-09-08 15:10 5386 API 接口 博客系统 开发 前后端分离
Nuxt.js时间格式化
如果我们在客户端渲染,直接导入我们的date.js问题不大,按我们的博客系统管理中心的方式格式化即可! export function formatDate(date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) } let o = { 'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds() }; for (let k in o) { if (new RegExp(`(${k})`).test(fmt)) { let str = o[k] +
2020-09-08 15:12 3117 博客系统 Nuxt.js 服务端渲染 毕业设计 前端开发
RecyclerView显示多种类型
RecyclerView显示多种类型 对于这个问题我也好无语呀,这个很简单呀。 纯体力活。 RecyclerView课程地址 Android控件之RecyclerView 相关提问: Recycleview 多种条目类型 如何绑定数据 案例源码地址: https://github.com/TrillGates/RecyclerViewMultiTypeDemo 效果: 解析 网络权限 主布局activity_main.xml 主Activity:MainActivity.kt class MainActivity : AppCompatActivity() { private val contentAdapter by lazy { ContentListAdapter() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //初始化数据 initData() //初始化控件 initView() } private fun initView() { contentListView.apply { layoutManager = LinearLayoutManager(this@MainActivity) this.adapter = contentAdapter addItemDecoration(object : RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State ) { outRect.bottom = 2 } }) } } private fun initData() { val dataJson = requestData.resultJson val gson = Gson() val response = gson.fromJson(dataJson, Response::class.java) contentAdapter.addData(response.data) println(response.code) println(response.message) println(response.data.size) } } 适配器ContentListAdapter.kt class ContentListAdapter : RecyclerView.Adapter() { private val data = ArrayList() companion object { const val NONE_IMG: Int = 0 const val ONE_IMG: Int = 1 const val TWO_IMG: Int = 2 const val THREE_IMG: Int = 3 } fun addData(contents: List) { data.clear() data.addAll(contents) notifyDataSetChanged() } class InnerHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { } override fun getItemViewType(position: Int): Int { return when (data[position].covers.size) { 0 -> NONE_IMG 1 -> ONE_IMG 2 -> TWO_IMG else -> THREE_IMG } } override fun onCreateViewHolder( parent: ViewGroup, viewType: Int ): InnerHolder { val itemView: View when (viewType) { NONE_IMG -> { val itemBind = DataBindingUtil.inflate( LayoutInflater.from(parent.context), R.layout.item_no_image, parent, false ) itemView = itemBind.root itemView.tag = itemBind } ONE_IMG -> { val itemBind = DataBindingUtil.inflate( LayoutInflater.from(parent.context), R.layout.item_one_image, parent, false ) itemView = itemBind.root itemView.tag = itemBind } TWO_IMG -> { val itemBind = DataBindingUtil.inflate( LayoutInflater.from(parent.context), R.layout.item_two_image, parent, false ) itemView = itemBind.root itemView.tag = itemBind } else -> { val itemBind = DataBindingUtil.inflate( LayoutInflater.from(parent.context), R.layout.item_three_image, parent, false ) itemView = itemBind.root itemView.tag = itemBind } } return InnerHolder(itemView) } override fun getItemCount(): Int { return data.size } override fun onBindViewHolder(holder: InnerHolder, position: Int) { val dataBinding = holder.itemView.tag val data = data[position] when (dataBinding) { is ItemNoImageBinding -> { dataBinding.item = data } is ItemOneImageBinding -> { dataBinding.item = data } is ItemTwoImageBinding -> { dataBinding.item = data } is ItemThreeImageBinding -> { dataBinding.item = data } } } } 数据bean类 data class ListItem( val title: String, val covers: ArrayList, val viewCount: Int, val commentCount: Int ); 图片加载工具类 class ImageLoadUtils { companion object { @BindingAdapter("imagePath") @JvmStatic fun loadImage(image: ImageView, imageUrl: String?) { if (!TextUtils.isEmpty(imageUrl)) { Glide.with(image.context).load(imageUrl).into(image) } } } } 布局之类的代码请下载吧。 就是这么简单,全部代码请到github上载。 RecyclerViewMultiTypeDemo
2020-09-06 16:22 3976 安卓开发 RecyclerView 控件 博客系统 测试
<<上一页
下一页 >>
热门标签
赞助商广告

    Copyright © 阳光沙滩 (2014-2020) 本网站由程序猿(媛)用爱驱动

    关于我们 联系我们 友情链接 粤ICP备14093694号
    回到
    顶部