自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 探索低代码的新形态(D2C、ChatGPT)

突破前后端的边界,打通全链路,是基于低代码逻辑配置的扩展,解放后端开发人员的生产力;借鉴Virtual DOM的思想,实现不同平台的渲染器,低代码不止是局限于web,而是能覆盖不同平台的各种场景;D2C优化UI层面的配置过程;P2C优化交互逻辑层面的配置过程。以构建全链路的跨平台应用为目标,通过AI处理配置过程中的大部分工作,再由用户进行少量配置,甚至不做任何配置。

2023-06-06 17:22:33 521

原创 React组件库实践:React + Typescript + Less + Rollup + Storybook

原先在做低代码平台的时候,刚好有搭载React组件库的需求,所以就搞了一套通用的React组件库模版。目前通过这套模板也搭建过好几个组件库。

2023-04-03 17:21:05 577 1

原创 低代码平台实践系列(一):逻辑配置概述

作为前端开发人员,大家可能已经很熟悉现有的前端框架和工具,但是随着数字化转型的推进,越来越多的企业需要更快速、更高效地构建自己的应用程序。低代码平台可以成为我们前端开发人员解放生产力的神器。低代码平台为用户提供了可视化的界面、拖拽式的组件和自动生成的代码等功能,让用户能够更快速地创建应用程序,而无需编写大量的手动代码。

2023-03-15 17:19:18 1056

原创 配置可视化-基于form-render的无代码配置服务(一)

有些业务场景需要产品或运营去配置JSON数据提供给开发去使用(后面有实际业务场景的说明),原有的业务流程,非开发人员(后面直接以产品指代)把数据交给开发,再由开发去更新JSON数据。对于产品来说,直接接触JSON数据并不友好,一是搞不懂JSON;二是容易出错,影响现网数据。

2023-02-14 17:33:25 601

翻译 【译】从500ms到1.7ms的React性能优化经历

我相信每个开发者在开发的某个阶段,都有可能需要进行性能优化。关于如何优化react中的性能,已经有很多资源和文章,这篇文章也不例外。这里分享一个我实践过的从0.5s到1.7ms的性能优化的实践和结论。......

2022-08-18 17:02:57 179

原创 JSON Schema&表单UI快速生成解析

一、JSON Schema​ JSON(JavaScript Object Notation)是一种轻量&常见的数据交换格式,基本的数据的结构就是key-value,具有易于生成和解析的优点,通过JSON可以灵活地表达程序所需要的数据结构。​ 但JSON本身并没有特定的规范(本身结构也不支持注释),所以对于数据本身的描述是缺失的,比如说开发人员或者程序,就无法判断下面这份数据里面的age为string是否是符合预期的类型。{ "name": "John Doe", "mobile":

2022-04-08 15:51:11 3898

原创 图片格式发展与Netflix公布的下一代图片压缩格式AVIF——从700kb到20kb

一、图片格式的发展二、AVIF介绍从图片发展过程来看,AVIF(AV1 Image File Format,AV1图像文件格式)是目前最值得关注的新型图片格式。AVIF是业界最新的开源视频编码格式AV1的关键帧衍生而来的一种新的图像格式。AVIF由包括Google、Apple、Netflix在内的开放媒体联盟(Alliance for Open Media,简称AOMedia)共同开发,并于2020年上半年由Netflix公布,作为JPEG的替代方案在Netflix的实际项目中落地。三、使用

2020-12-18 21:37:19 1384 1

原创 关于koa-body上传文件的基本流程记录

一、前端upload(){ const file = document.querySelector("#file"); const fd = new FormData(); // 需要创建一个表单对象 fd.append("f",file.files[0]) axios({ method:'post', url: '/api/upload', data: fd })}二、后端app.use(koaBody({

2020-05-24 23:47:46 556

原创 flask+原生ajax实现上传和下载进度数值显示

注意:本文代码只提供进度数值显示,未实现进度条的显示一、下载进度<div class="schedule">0</div> <button onclick="download()">下载</button> <script> // 要设置为slow 3G才能看得到明显的效果 let schedule = d...

2020-04-01 22:42:14 2427

原创 JS实现apply和call

基本的思路就是,把函数暂时借用一下,执行完后就立刻删除,需要注意的是对参数的处理function Person() { this.name = "无名"}Person.prototype.print = function(age, city) { console.dir(`姓名:$ { this.name },年龄:$ { age...

2020-03-19 21:14:11 140

原创 CSS3 - flex属性:flex-grow、flex-shrink和flex-basis

HTML<div class="parent"> <div class="c c1">1</div> <div class="c c2">2</div> <div class="c c3">3</div></div></div>CSS.parent { ...

2020-03-16 16:49:32 415

原创 JavaScript 排列组合

只针对元素非重复,且结果无序的情况。主要的思路就是用未被组合的元素(data变量内)去组合已经组合过的元素(res变量内),并把自身也放进res中const data = ['a', 'b', 'c'];function getGroup(data) { const res = []; for (let i = 0; i < data.length; i++) {...

2020-03-15 23:09:27 408 1

原创 默认情况下通过axios发送数据,Flask如何获取?

默认情况下,axios的post请求传参是json格式,如下图这种情况下,Flask需要先通过request.get_data()获取到数据,然后再通过json.loads()转换为dict格式

2020-01-15 17:09:27 1296

原创 js生[n,m]范围内的随机数

生成一个[n,m]范围内的随机数,即[n,n+(m-n)],此时的(m-n)的值是可以通过随机数获取的。举例说明生成一个[30,40]的随机数let res = 30 + Math.floor(Math.random() * (40-30+1))40-30+1的原因是Math.random()可以生成一个[0,1)区间内的随机数,Math.floor()向下取整,导致取不到10这...

2019-11-29 20:02:10 233

原创 三栏式布局:flex、绝对定位和浮动

两边的盒子宽度固定,中间盒子自适应。一、flex<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> &...

2019-09-26 11:47:09 538

原创 图片加载时显示等待gif图片

<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Co...

2019-09-16 09:46:30 3430

原创 纯CSS实现星级评分特效组件

参考掘金的文章:https://juejin.im/post/5d57adf5f265da03e3697e1b(作者:聪明的汤姆)HTML<form action="" onsubmit="return false"> <div class="parent"> <input type="radio" name="rate" class="...

2019-08-29 10:32:11 703

原创 CSS实现元素width右方向变化、左方向变化、双向变化

改变dom元素的width值,页面上默认是向右变化(向右伸长以及向左缩短)。以下为实现双向变化和向左变化(向左伸长以及向右缩短)1、双向变化(实例)<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" con...

2019-08-12 17:01:30 8442 1

原创 重绘(reflows)与重排(repaints)(《高性能JavaScript》随笔(二))

一、重排何时发生?简而言之,当页面布局和几何属性发生变化时就需要“重排”。添加/删除可见的DOM元素 元素位置改变 元素尺寸改变(包括:margin、padding、border等属性) 内容改变,比如:文本改变,或被另一个不同尺寸的图片替代了。 页面渲染初始化 浏览器窗口尺寸改变二、渲染树变化的排队与刷新浏览器每次重排都会产生计算消耗,大多数浏览器通过队列化修改并批量执行...

2019-05-23 16:18:20 189

原创 如何使用JavaScript计算时间间隔(以日期间隔为例),如何使用字符串类型(String)的日期计算事件间隔?

首先创建两个date对象const date1 = new Date("2019-05-01");const date2 = new Date("2019-05-04");// date1:Wed May 01 2019 08:00:00 GMT+0800 (中国标准时间)// date2:Sat May 04 2019 08:00:00 GMT+0800 (中国标准时间)然后将...

2019-05-04 13:57:42 636

原创 绝对定位display:absolute如何实现垂直居中?

首先设置一个父元素(.parent)和一个子元素(.child)的样式。CSS代码:.parent { position: relative; width: 200px; height: 200px; background-color: #eee;}.child { width: 70px; height: 70px; position: absolute; back...

2019-03-11 21:50:03 4930

原创 网络应用程序的架构:C/S架构、B/S架构的区别与优缺点

网络应用层架构一般分为两层架构、三层架构、N层架构。其中B/S架构、C/S架构是两层架构的代表。一、C/S架构C/S架构是Client/Server的缩写,翻译过来就是“客户端/服务器”。C/S架构的业务逻辑主要集中在客户端,而这里的“服务器”,其实可以认为是数据库服务器,因为除了提供基础的数据库服务外,服务器并没有其他的功能。常用于开发应用软件(application softwar...

2019-03-01 23:29:42 14958

原创 JavaScript如何获取被点击的li元素是所有li元素中的第几个?

提出一个问题:如何获取被点击的li是第几个?&lt;ul&gt; &lt;li&gt;a&lt;/li&gt; &lt;li&gt;b&lt;/li&gt; &lt;li&gt;c&lt;/li&gt; &lt;li&gt;d&lt;/li&gt;&lt;/ul&gt;解决思路:我们通过getEleme

2019-02-28 23:26:05 10903

原创 JavaScript 集合交集算法挑战(https://www.w3cschool.cn JavaScript高级脚本算法参考答案)

原题目链接:https://www.w3cschool.cn/codecamp/symmetric-difference.html题目:创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组.给出两个集合 (如集合 A = {1, 2, 3} 和集合 B = {2, 3, 4}), 而数学术语 "对等差分" 的集...

2019-02-23 12:21:11 392

原创 JavaScript 使用循环语句查找通讯录(https://www.w3cschool.cn JavaScript编程实战题目参考答案)

原题目链接:https://www.w3cschool.cn/codecamp/profile-lookup.html 题目:我们有一个联系人列表,里面存储着不同联系人的数组对象。函数 lookUpProfile 有两个预定义参数:firstName值和prop属性 。该函数应检查firstName是实际联系人的firstName,给定的属性(prop)是该联系人的属性。如果...

2019-02-19 22:58:17 467

原创 Sublime Text 3错误:there are no packages available for installation

首先下载一个channel_v3.json的文件下载地址:下载链接:https://packagecontrol.io/channel_v3.json(可能打不开,可以直接用网盘下载)网盘链接:https://pan.baidu.com/s/1Hw6dvpwED4dHZ34EbYRQUw 提取码: 3y6r下载完成后,将channel_v3.json放到某一个文件夹内打...

2019-02-16 16:51:16 824

原创 Python小知识点:判断一个list中是否包含另一个list的全部元素

你可以用for in循环+in来判断,但有个更简单更简洁的方法,就是把list转换成集合。也就是说将是否包含变成是否是其真子集以下是一个简单的例子&gt;&gt;&gt; a = [1,2,3,4,5,6]&gt;&gt;&gt; b = [2,4,6]&gt;&gt;&gt; set(b) &lt; set(a) # a是否包含b,&lt;= 则表示是否是子集True ...

2018-09-28 18:04:57 4470

原创 什么是网络爬虫,网络爬虫有什么用?

简单地说,就是把网页所展示数据通过非人工的手段获取下来。现在是大数据时代,数据分析是解决各行各业相关问题重要的依据。数据分析结果的准确性有很大一部分取决于数据量是否足够大。如果是几十条数据,我们当然可以让人来一条条地复制粘贴。但就像我们前面说的,数据量要足够大分析出来的结果才是有意义的,所以我们需要的数据量通常比较大,往往不可能通过人力来完成数据采集的工作(因为效率低,而且容易出错,重复枯燥的...

2018-08-27 22:47:56 5338

原创 Python小知识点——生成器(generator)与关键字yield的运用

生成器(generator)是一种可迭代对象。在处理包含大量数据时,如果使用list来进行操作,会导致内存占用大,效率低。生成器通过延迟计算,实现了一种边循环边计算的可能,只有在需要的时候才返回相应的结果,而不是一次性返回一整个结果列表,因此可以有效地节省了大量的空间。首先,根据列表生成式,将[]改成()即可创建一个generator>>> a = (x * x f...

2018-08-24 22:34:51 841

原创 Python如何将字符串分割成单个字符,并形成一个list?

一个字符串可以看做是一个list具体操作如下&gt;&gt;&gt; a = "这是一段话"&gt;&gt;&gt; a[0]'这'&gt;&gt;&gt; list(a)['这', '是', '一', '段', '话']&gt;&gt;&gt; for x in a: print(x) 这是一段话&gt;&gt;&gt; 所以

2018-08-24 17:55:03 60627 3

原创 用Python实现最简单的文字识别:基于百度云文字识别API

Python版本:3.6.5百度云提供的文字识别技术,准确率还是非常高的,而且每天还有5w次免费的调用量,对于用来学习或者偶尔拿来用用,已经完全足够了。文章提供一个模板,稍加修改就可以直接套用。注释中提到必须输入的地方,你都正确地输入了的话,就可以完成一次简单的文字识别了。# -*- coding: utf-8 -*-import requestsimport base64cl...

2018-08-24 11:15:51 4698

原创 Python多线程网络爬虫实战:获取豆瓣评价人数超过1w+的书籍

爬取页面:https://www.douban.com/doulist/36708212/Python版本:3.6.5主要涉及内容:多线程、网络爬虫、面向对象程序设计 注释标注为 # 多线程 的部分可以直接复制,并根据需求稍加修改即可实现多线程爬虫。# -*- coding: utf-8 -*-import requestsfrom bs4 import Beautiful...

2018-08-23 17:47:13 1133

原创 Python类中有出现同名的函数

class demo(): def func(self): print("hello China") def func(self): print("hello world")if __name__ == '__main__': demo.func()输出结果为hello world这里可以理解为第二个的func()覆盖了第一个fu...

2018-08-14 23:00:24 7888 1

原创 如何提高Python程序运行效率:基于多进程multiprocessing模块

Python版本:3.70;操作系统:Windows10(出发点:通过multiprocessing模块用最简单的方式来让你提高程序运行效率)来了更好的感受到multiprocessing模块提升运行效率的效果,将提出一个问题,并采用两种不同解决方式进行对比来说明。需解决问题:计算变量i从0开始,不断+1,直到i=20000000,并重复3次。(一)普通情况import ti...

2018-07-13 15:41:13 6651

原创 Office Word如何自建标题样式,并在换行后默认为正文格式

2018-07-13 09:42:26 13486

原创 Python网络爬虫实战:通过requests+bs4爬取并保存图片

Python爬虫实战基础篇——图片爬取Python版本:3.5.4涉及内容都是网络爬虫基础:requests和bs4库的应用、正则表达式等import requestsimport osfrom bs4 import BeautifulSoupimport redef GetHtml(url):#获取soup try: r = requests.ge...

2017-10-31 23:46:21 2573 1

34行MATLAB实现k-均值聚类(k-means)和不同颜色散点图展示

34行MATLAB代码实现k均值聚类,包含展示聚类成功后的散点图。

2018-12-01

基于粗糙集理论RS对属性重要性分析

粗糙集理论,是继概率论、模糊集、证据理论之后的又一个处理不确定性的数学工具。作为一种较新的软计算方法,粗糙集近年来越来越受到重视,其有效性已在许多科学与工程领域的成功应用中得到证实,是当前国际上人工智能理论及其应用领域中的研究热点之一。 粗糙集理论属性重要性分析的基础思想是,从条件属性集中去除掉某一个属性集后对分类决策的影响程度。

2018-10-07

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

TA关注的人

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