个人日记
wen_binObject
这个作者很懒,什么都没留下…
展开
-
最简单url获取参数方法
// 如果 window.location.search 等于 “?name=jimmy&age=18&m=url&height=1.88”const queryParams = new URLSearchParams(window.location.search);const paramObj = Object.fromEntries(queryParams);console.log(paramObj); // { name: 'jimmy', age: '18', height: '1.8原创 2022-03-03 18:07:52 · 283 阅读 · 0 评论 -
2分钟让你搞懂 grid-template-areas
上面的效果怎么样通过grid实现呢? 话不多说 上代码<!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">.原创 2021-09-23 09:59:15 · 4289 阅读 · 1 评论 -
最近两年的成果
WebsiteDesktop appACH 业务原创 2021-08-25 15:20:53 · 213 阅读 · 0 评论 -
js 深拷贝
最近没什么学习计划 自己动手写下简单的面试题 function deepClone(data) { //判断是否为空 if (!data) return data; let dataClone = Array.isArray(data) ? [] : {}; if (typeof (data) === "object") { for (key in data) { if (data.ha原创 2021-05-19 19:59:50 · 162 阅读 · 0 评论 -
一张图让你懂flutter
看起来是不是特别舒服啊原创 2020-12-11 16:54:25 · 164 阅读 · 0 评论 -
这几个月没更新博客的原因
原创 2020-11-30 10:48:10 · 170 阅读 · 0 评论 -
js 合并两个有序数组
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]let merge = fun原创 2020-06-04 16:15:57 · 564 阅读 · 0 评论 -
js 搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回 true。给原创 2020-06-04 15:26:05 · 489 阅读 · 0 评论 -
js 多数元素
leetcode 169.多数元素思路1let majorityElement = function(nums) { if (nums.length === 1) { return nums[0] } let len = nums.length; const map = new Map(); for (let i = 0; i < nums.length; i++) { if (map.has(nums[i])) { const temp = map.get(num原创 2020-06-03 15:20:39 · 297 阅读 · 0 评论 -
js 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4思路1let singleNumber = function(nums) { for (let i = 1; i < nums.length; i++) { nums[0] = nums[0] ^ nums[i];原创 2020-06-03 14:16:12 · 836 阅读 · 0 评论 -
SEO优化之sitemap(多语言)
这篇文章解决了什么问题?1. 添加新的页面需要从新修改sitemap文件(每次添加新页面都需要修改一遍,如果添加了新页面忘记修改sitemap.xml文件导致的问题)2. 多语言(国际化)的sitemap应该怎么样编写?3. 通过node 如何获取某个目录结构下的所有文件夹名称(包含相对路径)4. 自己官网的语言和sitemap.xml 支持语言的转换1.为什么要添加sitemap?便...原创 2020-04-14 14:05:05 · 2561 阅读 · 3 评论 -
一个demo理解防抖节流
http://demo.nimius.net/debounce_throttle/原创 2019-12-16 15:08:42 · 257 阅读 · 0 评论 -
java学习遇到的问题 无法从静态上下文中引用非静态变量、方法。
在写java的斐波那契数列递归时遇到了一个问题。public class Fibonacci{ public static void main(String []args) { int x = f(6); System.out.println(x); } public int f(int x) { if(x==1||x==2){ return 1; }els...原创 2018-12-11 16:30:34 · 59918 阅读 · 5 评论 -
mysql 字符函数
1.字符函数1.CONCAT();CONCAT(“第一个需要连接的内容”,“第二个需要连接的内容”,…);2.CONCAT_WS();需要注意的是CONCAT_WS(“分隔符”,“第一个需要连接的内容”,“第二个需要连接的内容”,…);参数的一个个是分隔符 之后的内容都会用分隔符进行连接。3.FORMAT();FORMAT(输入的数值,保留几位小数); //三位一划分3...原创 2019-02-13 14:00:44 · 260 阅读 · 0 评论 -
mysql无限级分类表设计
1.先创建表CREATE TABLE tdb_goods_types(type_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,type_name VARCHAR(20) NOT NULL,parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0);2.写入数据INSERT tdb_goods_t...原创 2019-02-13 11:28:04 · 1272 阅读 · 0 评论 -
React / Vue 组件中的key详谈
我先回答这个问题:key的作用主要是为了高效的更新虚拟DOM在diff算法中 key是为了在diff算法执行时更快的找到对应的节点,提高diff速度两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构。同一层级的一组节点,他们可以通过唯一的id进行区分。基于以上这两点假设,使得虚拟DOM的Diff算法的复杂度从O(n^3)降到了O(n)。这里我们借用React’s d...原创 2019-02-18 16:58:08 · 1088 阅读 · 0 评论 -
mysql 存储过程(Stored Procedure)
存储过程(Stored Procedure)优点:将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用。批量处理:SQL+循环,减少流量,也就是“跑批”。统一接口,确保数据的安全。1.不带参数的存储过程:CREATE PROCEDURE v() SELECT VERSION();调用:2.创建带有in类型的存储过程CREATE PROCEDURE remo...原创 2019-02-18 15:22:08 · 925 阅读 · 0 评论 -
mysql 外键相关 mysql JOINS
1.删除时属性:默认(RESTRICT),RESTRICT,No ACTION,CASCADE,SET NULL属性。当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包...原创 2019-02-12 15:17:54 · 161 阅读 · 0 评论 -
msql 自定义函数(UDF)
如果我想实现一个这样的函数,并且经常使用,就可以定义自定义函数(方便重复调用)。先简单的创建一个不带参数的自定义函数:调用自己创建的自定义函数:创建带参数的自定义函数:CREATE FUNCTION liang (num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)RETURNS FLOAT (10, 2) RETURN (num1 + num2...原创 2019-02-18 09:35:10 · 235 阅读 · 0 评论 -
mysql学习笔记
连接数据库:mysql -uroot -p -P3306 -h127.0.0.1查看数据库版本:SELECT VERSION();查看数据库当前时间:SELECT NOW();查看当前用户:SELECT USER();创建数据库: CREATE DATABASE t111;显示当前数据库服务器中的数据库列表:SHOW DATABASE;四个是默认有的t111是新创建的。查看数据库的...原创 2019-01-23 14:52:39 · 114 阅读 · 0 评论 -
mysql 简单的数据操作
mysql表中数据修改操作:执行:UPDATE test SET age = age -5 WHERE id = 0;//id=0的 age减少5 所以从30变为了25;mysql表中数据删除操作:DELETE FROM test WHERE id = 5;对查询结果进行分组:SELECT password From test GROUP BY password;HAVING是分组...原创 2019-01-31 17:21:32 · 172 阅读 · 0 评论 -
mysql修改my.ini遇到的权限问题 及mysql的启动和关闭。
window10版本 修改mysql中的my.ini 遇到了权限问题。错误提示如下:发现没有权限,如果右键有用管理员打开,直接打开然后修改报错即可。如果右键没有用管理员打开,就window下用管理员打开记事本,然后用记事本打开my.ini,修改然后保存即可。用cmd打开mysql原因是需要用管理员方式打开net start mysql 打开mysqlnet stop masql ...原创 2019-01-21 16:32:02 · 18084 阅读 · 0 评论 -
window.open() 打开的子页面 往主页面传参问题
国研兄弟遇到一个问题 问我我百度了下帮他解决了 下面是我参考的demo , 虽然不难不过以前没有遇到过这样的需求,就当多了解点姿势了。&lt;!--主页面的代码--&gt;&lt;br&gt;&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charse原创 2018-09-11 18:11:27 · 2202 阅读 · 0 评论 -
看到一个比较好的关于两个数相互转换的问题的答案。
var a = 1,b = 2;var a = a ^ b;var b = a ^ b;var a = a ^ b;console.log(a); //2console.log(b); //1原创 2017-03-08 18:00:59 · 215 阅读 · 0 评论 -
mysql 比较运算符 日期时间函数 信息函数 聚合函数 加密函数
1.比较运算符返回1是true 返回0 是false。2.日期时间函数只列举了常用的几个日期时间函数。DATE_ADD();SELECT DATE_ADD(date,INTERVAL expr unit); //第一个参数是时间 然后 INTERVAL 数字(可以为负值) WEEK/DAY/YEAR 等。DATEDIFF();SELECT DATEDIFF(expr1...原创 2019-02-13 17:13:20 · 250 阅读 · 0 评论 -
angular @input @output
个人理解 @input装饰器作用 父组件传递参数 赋值给子组件 子组件接受 父组件传递的值 并渲染在界面上。 @output装饰器作用 通常暴露EventEmitter 当子组件事件触发时候 向父组件传递信息。 组件间通信 三种方式 1.<app-countdown-timer #timer></app-countdown-timer&...原创 2017-11-21 16:29:01 · 326 阅读 · 0 评论 -
前端初学electron
1 electron官网electron中文网 https://electronjs.org/docs2 基于vue1.electron-vue官网 https://simulatedgreg.gitbooks.io/electron-vue/content/cn/不足之处:根据官网运行项目后发现如下图1.不足electron 版本太低2.官方给的升级相关不确定 不论是vue即将...原创 2019-09-25 21:38:18 · 3438 阅读 · 0 评论 -
状态码301和302区别
1. 首先分析下相同点和不同点。相同点301和302状态码都表示重定向,客户端浏览器的URL都会改变(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)。不同点301 redirect: 301 代表永久性转移(Permanently Moved)301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302...原创 2019-07-31 18:27:17 · 498 阅读 · 0 评论 -
vue 中的多种组之间通讯方式
前三种使用的比较多 会vue的人基本都了解使用原理 后面几种可能适用性不会那么高 不过特定的问题解决起来也是很方便的1.大家使用做多肯定是父子组件间的通讯了Vue.component('child',{ data(){ return { mymessage:this.message } ...原创 2019-08-01 17:29:09 · 212 阅读 · 0 评论 -
解决vue中父组件修改子组件样式的问题
1 去掉 scoped当 <style>标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。但是在父组件中添加 scoped 之后,父组件的样式将不会渗透到子组件中,所以在父组件中书写子组件的样式是无效果的。2 混用本地和全局样式<style>/* 全局样式 */</style><style scoped>/* 本地...原创 2019-06-24 12:18:59 · 4777 阅读 · 0 评论 -
vue 生命周期详解
引入官网一张生命周期详情图Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁实例、组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会...原创 2019-05-17 13:31:06 · 295 阅读 · 0 评论 -
新版chrome中http无法打开摄像头问题解决
自己写的获取摄像头权限人脸识别 由于浏览器的原因不能使用了。经查询时因为http高版本chrome的安全限制问题。1. Windows:chrome快捷方式右键->属性->目标 输入框中追加 --unsafely-treat-insecure-origin-as-secure=“http://host||ip:port” --user-data-dir=“F:\temp”(–...原创 2019-03-26 15:53:24 · 45800 阅读 · 5 评论 -
vue 基于获取摄像头权限 拍照的人脸识别技术
为什么要做这个呢?不同用户具有不同的权限 如果管理员用户被别人知晓了怎么办? 为了解决该用户 账号密码泄露导致的误操作。前端实现思路是什么呢?前端思想是获取摄像头权限 通过canvas 获取base64图片 然后转为二进制文件流 通过FormData(form表单提交)和后端交互 的方式进行识别后端的实现思路呢?创建一个sql 里面存一些有权限的人员信息包含照片等 用上传的照片和sql里...原创 2019-03-26 10:57:31 · 11153 阅读 · 13 评论 -
前端获取电脑摄像头权限并拍照进行人脸识别
为什么要做这个呢?为了解决账号密码泄露导致的误操作。前端实现思路是什么呢?前端思想是获取摄像头权限 通过canvas 获取base64图片 然后转为二进制文件流 通过FormData(form表单提交)和后端交互 的方式进行识别后端的实现思路呢?创建一个sql 里面存一些有权限的人员信息包含照片等 用上传的照片和sql里面的数据进行对比人脸识别 进而知道进入当前系统的人是否具有某些权限 ...原创 2019-03-26 10:49:29 · 10231 阅读 · 4 评论 -
java 多态的学习和堆栈方法区画图 向上转型 向下转型
class Test2_Polymorphic { public static void main(String[] args) { Father f = new Son(); System.out.println(f.num); //成员变量 编译看左边(父类) 运行看左边(父类)。 f.print(); /*成员方法 编译看左边(父类) 运行看右边(子类)。 ...原创 2019-03-12 19:52:58 · 534 阅读 · 2 评论 -
js 常规打水印方法 canvas方法
看到同事曾经有写过一个打水印的方法就看了下实现方法。&amp;amp;lt;html&amp;amp;gt; &amp;amp;lt;head&amp;amp;gt; &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UT原创 2018-12-27 14:30:29 · 1017 阅读 · 1 评论 -
好久没写选择排序了刚好学java就自己写一下
选择排序public class SelectionSort{ public static void main(String []args){ int [] x= {111,-1,2,3,10,4}; SelectionSort(x); } public static int[] SelectionSort(int[] x){ for (int i = 0; i &amp;lt...原创 2018-12-14 17:46:13 · 108 阅读 · 0 评论 -
2018-03学习笔记
ECMAScript 2017 Async Functions(异步函数)。 今天被萌神鄙视了说我写的blog丑所以我就开始用markdown学习并且使用markdown开始写一篇文章试下async各种不同的定义方式异步函数声明: async function foo() {} 异步函数表达式: const foo = async function () {}; 异步函数定义:let obj = ...原创 2018-04-02 11:40:54 · 138 阅读 · 0 评论 -
2018-02 笔记
vue文档学习 https://cn.vuejs.org/v2/guide/生产环境部署,使用构建工具使用 webpack 的 DefinePlugin 来指定生产环境,以便在压缩时可以让 UglifyJS 自动删除警告代码块。例如配置:var webpack = require('webpack')module.exports = { // ... plugins: [ // ....原创 2018-04-02 11:40:32 · 138 阅读 · 0 评论 -
Async
ECMAScript 2017 Async Functions(异步函数)。 今天被萌神鄙视了说我写的blog丑所以我就开始用markdown学习并且使用markdown开始写一篇文章试下async各种不同的定义方式异步函数声明: async function foo() {} 异步函数表达式: const foo = async function () {}; 异步函...翻译 2018-03-26 16:09:26 · 803 阅读 · 0 评论