自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 加入购物车动画效果,动态计算位置

加入购物车动画效果。

2024-04-29 10:54:26 337

原创 vue3+tinymce 富文本指定上传图片宽度并压缩

language_url: import.meta.env.VITE_BASE_URL+'tinymce/langs/zh_CN.js', //引入语言包文件。skin_url: import.meta.env.VITE_BASE_URL+ 'tinymce/skins/ui/oxide', //皮肤:浅色。//tinymce默认hidden,不引入则不显示编辑器。

2024-04-29 10:46:50 880

原创 node~server

【代码】node~server。

2024-03-06 09:15:55 92

原创 前端模块化:CommonJS,AMD,CMD,ES6

CommonJS 模块输出的是值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。因此,ES6 模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。复制代码ES6的模块不是对象,import命令会被 JavaScript 引擎静态分析,在编译时就引入模块代码,而不是在代码运行时加载,所以无法实现条件加载。1. CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。

2023-03-31 16:19:05 208

原创 react hooks~

【代码】react hooks~

2023-03-30 19:02:12 102

原创 react hooks ~useState用法

这段代码定义了一个名为 Counter 的组件,它使用了 React 的 useState Hook 来管理组件的状态。useState 返回一个数组,第一个元素是当前状态的值 count,第二个元素是一个函数 setCount,用于更新状态。组件的返回值是一个 Fragment,包含了一个显示 count 值的文本和两个按钮,分别用于增加和减少 count 值。当按钮被点击时,setCount 函数会被调用,传入的参数是 count + 1 或 count - 1,从而更新状态。

2023-03-30 17:57:54 99

原创 react hooks~useReducer用法

dispatch({ type: 'increment' })来增加 count的值,调用 dispatch({ type: 'decrement' })来减少 count的值。state是当前状态,action是一个对象,包含一个 type属性,用于指定更新状态的方式。在这个例子中,reducer函数根据 action.type的值更新 state.count的值。initialState是状态的初始值。在这个例子中,initialState是一个对象,包含一个 count属性,初始值为 0。

2023-03-30 17:53:08 110

原创 查看MySQL数据库编码

2:character_set_client:MySQL使用该编码来解读客户端发送过来的数据,例如该编码为utf8,那么客户端发送的数据不是Utf8,就会乱码。character_set_results:MySQL会把数据转换成该编码后,再发送给客户端。例如该编码为utf8,那么客户端不用utf8,解读就会乱码。3:控制台乱码问题:cmd下默认使用gbk, 而 character_set_client 不是gbk;注意:设置变量只对当前连接有效,当退出窗口后,再次登录MySQL,还需要再次设置变量。

2023-03-29 19:26:14 1921

原创 mysql基础语法 DCL-权限

例如:GRANT CREATE,ALTER,DROP,DELETE,SELECT ON mysql.* TO user@localhost;给user 用户分派在mysql数据库上的 create, alter,drop,delete,select 权限。撤销user用户在mysql数据库上的create, alter, drop 权限。给用户分派在指定的数据库上的指定的权限。撤销指定用户在指定数据库上的指定权限。给用户分派指定数据库上的所有权限。用户只能在指定的IP地址上登录。查看制定用户的权限。

2023-03-29 19:25:17 57

原创 mysql基础语法 DQL-查询

SELECT CONCAT( '我都名字:', name, '年龄是:',age) FROM tableName;4:列运算:数字类型可以做 加,减,乘,除 运算: SELECT age*1.5 FROM tableName;执行顺序:select, from, where, group by, having, order by。2:查询指定列:SELECT name, sex, phone FROM tableName;1:查询所有列:SELECT * FROM tableName;

2023-03-29 19:25:01 32

原创 mysql DDL基础语法-表

添加列:ALTER TABLE 表名 ADD (列名 列类型, 列名 列类型, ... );单行列 ALTER TABLE 表名 ADD 列名 列类型;修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;修改表名称:ALTER TABLE 原表名 RENAME TO 新表名;修改列类型:ALTER TABLE 表名 MODIFY 列名 列类型;删除列:ALTER TABLE 表名 DROP 列名;6. 修改表:前缀:ALTER TABLE 表名;

2023-03-29 19:24:26 26

原创 MySQL备份与恢复数据库

mysqldump -uroot -p123 mydb3 > C:/a.sql ===> 备份。mysql -uroot -p123 mydb3 < C:/a.sql ===> 恢复。source C:/a.sql ==> 恢复。

2023-03-29 19:24:22 27

原创 主键约束(唯一标识)

修改表时设置主键自增长:alter table stu change id id int auto_increment;7、多对多关系:在表中建立多对多关系,需要使用中间表,即需要三张表,在中间表使用俩外键,分别引用其他两个表的主键。6、一对一关系:在表中建立一对一关系比较特殊,需要让其中一张表的主键作为外键,即是主键又是外键。外键必须是另一表的主键值(外键引用主键),外键可以重复,外键可以为空,一张表中可以有多个外键。1、主键约束(唯一标识)***非空***, ***唯一***, ***被引用***;

2023-03-29 19:24:08 363

原创 多表查询~

(***)单行单列:SELECT * FROM 表1 别名1 where 列1 【=、>、<、>=、 <=、!* (***)多行单列:SELECT * FROM 表1 别名1 where 列 【IN 、ALL、ANY】(SELECT 列 FROM 表2 别名2 where 条件)* (***)单行多列:SELECT * FROM 表1 别名1 where (列1,列2)IN (SELECT 列1,列2,FROM 表2,别名2 where 条件)1:要求被合并的表中,列的类型,列数相同(表结构一样)。

2023-03-29 19:23:38 26

原创 mysql 语句分类

1:DDL (Data Definition Language): 数据定义语言,用来定义数据库对象,库,表,列等;2:DML (Data Manipulation Language): 数据操作语言,用来定义数据库记录 (数据);3:DCL (Data Control Language): 数据库控制语言,用来定义访问权限和安全级别;4:DQL (Data Query Language): 数据查询语句,用来查询记录(数据)。DML:对表的记录进行更新(增,删,改)>创建,删除,修改:库,表结构!

2023-03-29 19:23:26 57

原创 mysql DML 基础语法-数据

INSERT INTO tableName(列名1,列名2,...) VALUES(列值1,列值2,...);INSERT INTO tableName VALUES(列值1,列值2,...);查询表数据:SELECT * FROM tableName;没有给出列名,默认插入所有列,值的个数对应创建的表中列的顺序。在表名给出要插入的列名,其他未指定的列值默认为null。

2023-03-29 19:23:11 26

原创 创建对象~

当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。但是,如果写了new,它就变成了一个构造函数,它绑定的this指向新创建的对象,并默认返回this,也就是说,不需要在最后写return this;JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。你会问,咦,这不是一个普通函数吗?

2023-03-27 17:10:25 28

原创 javaScript Array

对于数组,除了map()、reduce、filter()、sort()这些方法可以传入一个函数外,Array对象还提供了很多非常实用的高阶函数。forEach()和map()类似,它也把每个元素依次作用于传入的函数,但不会返回新的数组。// undefined, 因为没有全部是大写的元素。every()方法可以判断数组的所有元素是否满足测试条件。// false, 因为不是每个元素都全部是小写。// 'pear', 因为pear全部是小写。// 1, 因为'pear'的索引是1。

2023-03-27 17:01:24 28

原创 RegExp 正则

A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'。由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}。exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。你可能注意到了,js也可以匹配'jsp',但是加上^js$就变成了整行匹配,就只能匹配'js'了。

2023-03-27 16:59:23 280

原创 javaScript 拷贝

/ 避免相互引用对象导致死循环,如initalObj.a = initalObj的情况。// 避免相互引用对象导致死循环,如initalObj.a = initalObj的情况。target:目标对象。//{a:"changed",b:25},事实上就是只有对象是拷贝的引用类型。* 浅拷贝Object.assign(target, ...sources)//更改原对象中的a,b,c,d,看看拷贝过来的对象是否变化。* 深拷贝,使用Object.create()方法。

2023-03-27 16:58:45 77

原创 javaScript闭包

在这个例子中,我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。注意到返回的函数在其定义内部引用了局部变量arr,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。在没有class机制,只有函数的语言里,借助闭包,同样可以封装一个私有变量。

2023-03-27 16:58:31 25

原创 generator

ES6定义generator标准的哥们借鉴了Python的generator的概念和语法,如果你对Python的generator很熟悉,那么ES6的generator就是小菜一碟了。因为generator可以在执行过程中多次返回,所以它看上去就像一个可以记住执行状态的函数,利用这一点,写一个generator就可以实现需要用面向对象才能实现的功能。generator和函数不同的是,generator由function*定义(注意多出的*号),并且,除了return语句,还可以用yield返回多次。

2023-03-27 16:57:37 48

原创 Mac环境下git生成SSH公钥

将你的邮箱替换到上面的位置,输入命令后会有几个设置密码的提示,如果不需要设置密码,直接一直按回车键到结束,如果需要设置密码请按提示输入密码。(如果你设置了密码,以后一些git操作会需要密码,如:提交代码)完成公钥的生成后可以参考第2步查看生成的公钥。如果已经存在且不需要新的公钥,就可以直接打开该文件,获取到公钥。检查目录下是否有名为id_rsa.pub的文件。如果没有该文件,请跳过第3步,继续第4步。如果有该文件但是需要新的,请继续第3步;输入以下命令查看目录下的所有文件。2.查看是否有已存在的公钥。

2023-03-27 16:55:05 1545

原创 docker 入门

docker ps命令可以查看容器的CONTAINER ID、NAME、IMAGE NAME、端口开启及绑定、容器启动后执行的COMMNAD。经常通过ps来找到CONTAINER_ID。docker ps -l显示最新启动的一个容器(包括已停止的)docker ps默认显示当前正在运行中的container。docker ps -a查看包括已经停止的所有容器。(3):查看容器的信息container(ps)(1):列出主机上的镜像。

2023-03-27 16:53:18 22

原创 利用canvas 转换图片成base64

/通过构造函数来创建的 img 实例,在赋予 src 值后就会立刻下载图片,相比 createElement() 创建 <img> 省去了 append(),也就避免了文档冗余和污染。const canvas = document.createElement("canvas"), //创建canvas元素。width=Img.width, //确保canvas的尺寸和图片一样。

2023-03-27 16:52:35 1668

原创 git 基本用法

git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository> # 删除远程仓库。

2023-03-27 16:44:48 29

转载 文章标题

var gulp = require(‘gulp’), runSequence = require(‘run-sequence’), gulpif = require(‘gulp-if’), uglify = require(‘gulp-uglify’), less = require(‘gulp-less’), csslint = require(

2017-07-12 19:28:44 88

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-07-12 19:27:42 153

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除