解构赋值
解构赋值语法是一种 Javascript 表达式。可以将数组中的值或对象的属性取出,赋值给其他变量。
对于对象和数组的解构,有两种解构模式:绑定模式和赋值模式,它们的语法略有不同。
绑定模式
在绑定模式中,模式以声明关键字(var、let 或 const)开始。然后,每个单独的属性必须绑定到一个变量或进一步解构。
12345const obj = { a: 1, b: { c: 2 } };const { a, b: { c: d } } = obj;// Two variables are bound: `a` and `d`//两个变量绑定了:a 和 b
赋值模式
在赋值模式中,模式不以关键字开头。每个解构属性都被赋值给一个赋值目标——这个赋值目标可以事先用 var 或 let 声明,也可以是另一个对象的属性——一般来说,可以是任何可以出现在赋值表达式左侧的东西。
12345const numbers = [];const obj = { a: 1, b: 2 };( ...
Commonjs和ECMAScript语法
Commonjs
Nodejs中默认采用Commonjs语法。
模块导出格式如下。
1234//commonjs语法导出自定义模块module.exports = { setResHeader: setResHeader}
模块导入格式如下。
12//引入自定义工具模块,只能使用路径let resHeaderUtil = require("./utils/resHeaderUtil")
ECMAScript
比如vue这种框架,采用的就是ECMAScript语法。要使用这种语法,首先得在package.json中指出type的值。
When set to “module”, the type field allows a package to specify all .js files within are ES modules. If the “type” field is omitted or set to “commonjs”, all .js files are treated a ...
变量BUF3中存放着10个有符号的字节数据,编程将这10个数按从小到大排序。
思路
双指针排序。BP留在原地,SI不断移动,一旦发现比BP小的值,就把那个值和BP交换,SI从左往右走一轮可以使得BP所在位置的值最小。一轮走完再开一轮,BP向右移动一位,用以存放次小值,SI再去探险。如此循环。
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758;变量BUF3中存放着10个有符号的字节数据,编程将这10个数按从小到大排序。DSEG SEGMENT BUF3 DB 10,9,8,7,6,5,4,3,2,1 BUFFLENGTH DB $-BUF3DSEG ENDSSSEG SEGMENTSSEG ENDSCSEG SEGMENT ASSUME DS:DSEG,SS:SSEG,CS:CSEG START: ...
代码
HTML:
1234567891011121314151617181920<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Button Anime</title> <link rel="stylesheet" href="button.css"></head><body> <div class="btn&qu ...
修复数据过少时跳转反弹
修改源码中滚动代码如下所示。
1234567891011121314151617181920212223242526272829void _scrollTopIndex(String tag) { int index = _getIndex(tag); int itemsCountOnScreen = itemPositionsListener.itemPositions.value.length; if (index != -1) { //如果要跳转的条目后面的数据个数<屏幕可容纳的数据个数,使用align属性去调整跳转 //条目在屏幕上的位置。align默认是0,即条目的头部top与可视部分上边缘对齐。 //计算正确的对齐位置,才能让它正常显示。 //if the the items'counts after the item you want to jump less than //full screen items counts, use the align to justify ...
Nacos集群模式
想要使用nacos的集群模式,就需要为其配置单独的数据库。
先在 mysql 数据库中创建数据库NacosDb ,再使用 conf 目录下的 nacos-mysql.sql 文件,创建相关表结构。文件如下所示。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 ...
在 themes.xml 中,style的parent如下所示。
1<style name="Theme.AndroidUiDesign" parent="Theme.MaterialComponents.DayNight.NoActionBar">
这时候,app中按钮的背景颜色会是主题色,自己设置的背景色则会被主题色覆盖。
修改成下面这样子就可以正常显示自定义背景颜色了。
1<style name="Theme.AndroidUiDesign" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
material design官方文档是这样解释的。
Bridge Themes
If you cannot change your theme to inherit from a Material Components theme, you can inherit from a Material Compon ...
What’s this ?
ViewPager2,它可以用来制作可以滑动切换的小卡片。相当于Flutter里面的 PageView 。
使用方法
在想要使用的地方加入 ViewPager2 节点,创建每一项子节点的布局文件,并实现 ViewPager2 的适配器 adaptor 。大体步骤和ListView 的使用差不多。
涉及到以下三个文件。activity_pages.xml, viewpager_item.xml, CardItem.java, ViewPagerAdaptor.java 。
123456789101112131415161718192021<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="h ...
小问题
未读 问题发生场景
在本地测试前后端项目的时候一切正常。当我将前端项目和后端项目打包并部署到服务器后,前端项目无法正常访问后端接口。浏览器控制台报错为“已阻止混合内容”,即mix content。
经过百度得知,mix content 常在 https 页面访问 http 接口时发生。
由于我的服务器上的tomcat之前就已经配置过SSL证书,所以部署在那个 tomcat 中的项目资源都会以https的方式访问。但是我这个后端项目是spring boot项目,使用的是内置的tomcat,所以直接部署后启动的是 http 服务。我 https 的页面访问了我 http 的接口,就产生了错误。
解决方案
去除服务器上 tomcat 的SSL配置。(不合适)
为后端spring boot项目配置SSL证书。(目前适用于我)
方案实施
下载自己的SSL证书,将 jks 后缀的文件放在项目的 resource 目录下。
完善项目的配置文件,我这里用的是 yml 配置文件。
123456server: port: xxxxx ssl: key-store: classpath:w ...
问题
在使用MySQL数据库存储数据的时候,意外发现不能存储Emoji表情😄。经过百度查证得知,mysql默认的 utf8 是三个字节的,存储不了四个字节的生僻字或者Emoji表情。需要换成支持四个字节的 utf8mb4 ,也就是UTF-8 most byte 4 。
解决
123456# 数据库更换字符集ALTER DATABASE AchatUserService CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;# 表更换字符集ALTER TABLE friendship CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;# 需要改变的列进行更换字符集ALTER TABLE messages CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
仅仅这样是不够的。在建立数据库连接的地方,还需要指定UTF-8字符集。比如在Spring boot项目的配置文件中,指定数据库连接的 url ...