工作日志
问题
产品列表在小程序中不显示,而在开发界面正常显示,也可以正常调用后端云函数,但是在小程序调试的时候根据浏览器控制台打印的信息显示,能正常请求后端云函数,但是拿不到数据,返回的数组列表为空。(我觉得开发环境的数据库跟正式环境的数据库可能会不同)
第一个问题解决以后,预览界面能正常显示数据,而小程序调试的时候列表页面不显示,而其他页面可以正常显示。
新版组件进行页面间的跳转时,点击列表中的列表项无法完成跳转(可能组件的事件绑定,参数传递有错误)
列表页跳转到详情页的时候,浏览器通过控制台打印的结果来看,列表项的id值与条目的id不匹配。
对应解决过程
通过浏览器控制台打印的信息,发现请求的数据列表为空,那么原因有两种,1. 压根就没有数据 2.有数据,但请求参数错误,或函数错误等。
最后发现是因为开发环境的数据库与测试环境的数据库是分离的,在安装发布页面找到安装商家界面去配置单独的数据库即可。
正常来说都应该正常显示才对,最后翻阅文档以及视频,得出结论,是因为组件不兼容的问题,因为手机网站预览界面是H5这与小程序不同,又因为开发界面是跨平台的,所以 ...
继续完善
完成:
[x] 完成在商品详情页面将商品添加到购物车
[x] 购物车产品信息的展示,以及商品移除购物车
[x] 支付信息的填写完成提交进而完成订单的创建
学习并使用:
Xbench 原子组件双向绑定的配置和使用,Xbench 实现双向绑定非常容易
添加 value 属性,不一定是文本,可以是其他类型
添加 input 事件声明
在组件内部使用 value 访问数据,使用 onChange 更新数据,之所以不是 input 是因为在 React 生态中更多使用 onChange
如果不需要实时监听输入框的变化的话,可以添加onComfirm确认事件就可以
开发规范
命名规则:有意义
组件名称
函数的名称
变量的名称
注释
巩固-数据类型
字符串String:’abc’, “def”
数字Number 100, 10.1
布尔Bool true/false
数组 Array [1,2,3] [‘a’, ‘bc’, ‘de’]
嵌套 [{name: ‘Tom’, age: 10}, {name: ‘Jim’, age: 12}]
对象 Object {name: ‘ ...
小程序基本商城开发
商城的业务逻辑
产品列表页点击进入产品详情页(传递产品唯一ID,通过链接容器去传递),点击购买进入到 结算页面(传递产品唯一ID),提交表单信息,成功之后返回订单ID并创建新的订单信息,默认状态为未支付然后跳转到订单详情页面,点击支付将待支付改为已支付,点击返回按钮会进入到订单列表页。
解决了昨天遗留下的问题
1、 包括新版组件的创建和使用,数据绑定,数据展示,以及新版组件实现页面跳转的步骤。
2、在网页端浏览时,能正常完成跳转,但网页不显示结果
3、通过debug,是因为数据类型不一致导致,在列表跳到详情页的时候,会需要当前条目的id
已经完成的
完成了基础商城的产品列表页的基本功能,以及点击能够完成跳转
以及理解了实现跳转的基本逻辑,包括要传递参数,注意参数的类型
数据库的设计,名称,价格
管理界面:分类,产品,订单
列表页:名称,图片,价格
详情页:图片,名称,价格,描述
列表页跳转到详情页
跳转的时候,要注意获取页面查询参数,定义状态,声明函数,调用后端云函数,修改状态,页面显示时,加载函数
明日规划:
完善小程序基本商 ...
应用中心开发
目标与结果
掌握应用开发中基本的增删查改操作
完成TodoMVC以及简单文章博客的开发
熟悉小程序的开发流程
技术层面
1、数据库:对业务逻辑的抽象建模-
–表结构
–增删改查
2、云函数:即方法
–权限
–数据校验
–数据库的增删改查
调用云函数注意参数的传递,保证前后一致 删除操作系统默认标记删除,防止误删。
–业务逻辑的处理
3、页面组件 :页面包含组件
前端要想拿到数据必须要声明状态
– 页面布局:容器
循环容器、条件容器、弹窗容器、布局容器、容器中存放组件,通常弹窗容器要搭配条件容器去使用
– 数据绑定:状态
1、先初始化数据,并声明状态存储不同的属性值,与组件进行绑定
2、组件显示时,调用函数进行数据的加载(调用后端云函数去获取数据列表),打印返回值,然后更新状态,
3、保存数据时,调用后端云函数,检查返回值,给出相应提示,调用加载数据列表函数,进行状态的更新
滑动容器,双向绑定
状态
前端内容的展示,以及更改内容,通常伴随着状态的变化
前端页面组件可以绑定状态和事件,事件会触发函数的调用
– 事件处理:
基本掌握应用开发中基本的增删查改操作 ...
我理解你此刻的迷茫和焦虑。面对求职困境和生存压力,那种“要不要脱下长衫”的挣扎非常真实。你的专业背景和坚持其实很有价值,只是需要更精准的策略和一点时间。作为计算机专业自学Java的求职者,在杭州这样互联网产业发达的城市仍有很大机会,但可能需要调整求职策略。房产经纪人作为临时过渡有其风险,建议优先坚持本专业方向,同时优化求职方法。
针对Java求职的优化建议(关键突破口)
简历深度优化(立刻行动)
项目经验重构:把自学项目转化为“可量化成果”。例如:
“独立开发XX管理系统(SpringBoot+MySQL),实现每日500+订单处理能力,优化查询响应时间30%”
技术栈显眼标注:在简历开头添加“技术熟练度矩阵”,如:1Java Core ★★★★☆ | SpringBoot ★★★☆☆ | MySQL ★★★★☆
GitHub必现:若没有完整项目,立刻创建技术日记仓库,每天上传学习笔记/代码片段,在简历中附链接
精准投递策略
避开头部公司:先瞄准杭州的“第二梯队”企业:
传统企业数字化部门(如:浙商银行IT中心、物产中大信息部)
本地科创企业(杭州梦想小镇、云栖 ...
Spring篇
1. 什么是Spring?
Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2. 项目中为什么使用Spring框架?
轻量:Spring 是轻量的,基本的版本大约2MB。
控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
IOC容器:Spring 包含并管理应用中对象的生命周期和配置。
MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked异常
3. ...
面试题
未读MySQL篇
1. MySQL 有哪些存储引擎?
mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE
MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎
Innodb:行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些
Memory:全表锁,存储在内存中,速度快,但会占用和数据量成正比的内存空间且数据在mysql重启时会丢失,默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于那些内容变化不频繁的代码表
MERGE:是一组MYISAM表的组合
2. InnoDB和MyISAM的区别有哪些?
InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;
InnoDB支持外键,而MyISAM不支 ...
JavaSE篇
Java基础
面向对象
所谓的面向对象,其实就是分析问题时,以问题所涉及到的事或物为中心的分析方式
类和对象:
类表示归纳和整理
对象就表示具体的事物
类与对象
类是抽象的,对象是具体的
类是模子,对象是具体的实例
类是静态的,对象是动态的
类的创建过程
先声明类
创建对象
声明网性,所说的属性其实就是类中的变最变航类型变航名称 =变值属性类型性名称 = 属性値
声明方法
void 方法名(参数){ 功能代码 }
执行方法
对象.属性
对象.方法名()
总结:
static修饰的成员方法叫什么?如何使用?
类方法(静态方法)
属于类,可以直接用类名访问,也可以用对象访问
使用:类名.类方法
无static修饰的成员方法叫什么?如何使用?
实例方法(对象的方法)
属于对象,只能用对象访问
使用方法:对象.实例方法
注意事项
类方法中可以直接访问类的成员,不可以直接访问实例成员。
实例方法中既可以直接访问类成员,也可以直接访问实例成员。
实例方法中可以出现this关键字,类方法中不可以出现this关键字的。
代码块
代码块是类的5大成分之一(成员变量 ...
访问远程服务器上的数据库
mysql -u用户名 -p密码[-h数据库服务器IP地址 -P端口号]
SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。
通用语法
SQL语句可以单行或多行书写,以分号结尾。
1show databases;
SOL语句可以使用空格/缩进来增强语句的可读性。
1show databases;
MySQL数据库的SQL语句不区分大小写。
1SHOW DATABASES;
注释
单行注释:–注释内容 或#注释内容(MySQL特有)
1-- show databases;
多行注释: /* 注释内容 */
1/* show databases; */
DDL
数据定义语言,用来定义数据库对象(数据库,表,字段)
123456//创建数据库creat database '数据库名'//展示数据库show database//删除数据库drop database '数据库名'
查询
查询当前数据库所有表: show tables;
查询表结构: de ...
什么是网关?理解成火车站的检票口,统一 检票
网关优点: 统一进行操作,去处理一些问题
1、网关作用
路由
负载均衡
统一鉴权
统一处理跨域
统一业务处理(缓存)
访问控制
发布控制
流量染色
统一接口保护
限制请求
信息脱敏
降级(熔断)
限流 学习令牌桶算法,学习露桶算法,学习一下RedislimitHandler
超时时间
重试(业务保护)
统一日志
统一文档
2、具体作用
路由
起到转发的作用,比如有接口A和接口B,网关会记录这些信息,根据用户访问的地址和参数,转发请求到对应的接口(服务器/集群)
用户a调用接口A
/a => 接口A
/b => 接口B
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories
负载均衡
在路由的基础上可以转发到某一个服务器
/c => 服务A/ 集群A(随机转发到其中的某一个机器)
uri从固定地址改成b:xx
统一鉴权
判断用户是否有权限进行 ...
1、加密方式
将accessKey、secretKey放在Header里明文传递安全吗
答案是否定的,因为我们的请求可能被人拦截,而我们把密码放进请求头里面,可能会被别人获取
一般是根据密钥,生成签名sign
加密方式
对称加密
非对称加密
md5 签名(不可解密)
签名的做法
假如 ,我们有用户参数,我们用密钥与他拼接,用签名算法得到一个不可解密的值
用户参数 + 密钥 => 签名生成算法(MD5,HMac,Sha1) => 不可解密的值
例子: xuan + abc => 7e7b9583aa0bc3e834fe8bcaebda38b5(这里是我随便输的,得到的值是随机的)
怎么知道签名对不对?
服务端用一模一样的参数和算法去生成签名,只要和用户传的一致,就表示密钥一致
怎么防重放?
加nonce随机数 只能用一次
服务端要保存用过的随机数
加timestamp 时间戳,校验它的有效期
综上所属
传递的参数
accessKey
sign (由accessKey(或者使用用户请求参数body等)、secretKey加密 ...
