自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 使用WebGL去实现一个拖拽式UI代码生成App
原力计划

前言​ UI(User Interface),即用户界面,是软件和用户之间进行交互和信息交换的媒介,实现信息的内部形式与人类可接受形式间的转换。UI开发一般需要经过UI设计、UI实现两个过程。UI设计是对软件的交互、操作逻辑、界面的设计,通常由UI设计师和交互设计师按照用户对软件的需求完成一套UI界面的设计,并最终以UI设计稿的形式呈现(psd、png、jpeg文件等)。UI实现是对UI设计阶段产生的UI设计稿进行编码实现,这部分是前端工程师的任务。​ 随着互联网的快速发展,从最早只有简单的超文本.

2020-07-07 10:16:34 134

原创 使用Webpack/React去打包构建Electron应用
原力计划

前言Electron是一个跨平台创建桌面应用程序的框架,允许我们使用HTML/CSS/JS去创建跨平台桌面应用程序。随着大前端的发展,当我们去开发Web UI时,会习惯性的使用Webpack等构建工具以及React等钱的MVVM框架去辅助开发。在开发Electron时也是同理,因此本文将介绍如何使用Webpack/React去打包构建整个Electron应用,并使用Electron-builder构建出App。其实社区提供了很多Electron Webpack的脚手架和模版,比如electron-forg

2020-07-02 10:32:08 192

原创 揭开React Hooks神秘面纱

揭开React Hooks神秘面纱React Hooks简介React Hooks是React 16.8的新增特性,它可以让你在不编写类的情况下使用state和其他React功能。hook翻译过来就是“钩子”,即在函数式组件中“钩入”React state以及生命周期等特性的函数。一个简单的hook类似于function Count(props) { const [count, set...

2020-02-23 19:11:04 71

原创 Node.js C++插件实践指南

简介熟悉Node.js的人都知道,Node.js是基于C++开发的一个JavaScript运行时,既然Node.js是用C++开发的,那么我能否将C++代码引入到Node.js中呢,这当然是可以的,这项技术被称为C++模块。官方对Node.js C++模块解释如下Node.JS插件是使用C++编写的动态链接库,可以被Node.JS以require的形式载入,在使用时就像Node.js原生模块...

2020-01-21 12:58:59 298

原创 100行代码教你实现类Webpack的JS打包器

前言​ 早期JavaScript只需要实现简单的页面交互,几行代码即可搞定。随着浏览器性能的提升以及前端技术的不断发展,JavaScript代码日益膨胀,此时就需要一个完善的模块化机制来解决这个问题。因此诞生了CommonJS(NodeJS), AMD(sea.js), ES6 Module(ES6, Webpack), CMD(require.js)等模块化规范。什么是模块化?模块化是一...

2020-01-04 16:37:07 78

原创 JSBridge原理浅析与实践

​ 在字节跳动实习了一段时间,JSBridge使用的比较频繁,之前只是看了些简单的JSBridge概念,一直没有时间去了解从客户端到JavaScript的一个通信原理(JSBridge)。最近花了点时间学习了从Android端到JavaScript的通信-JSBridge(主要是太闲了),对JSBridge有了更深入的理解,特地写下了这篇文章分享一下。JSBridge是什么​ 顾名思义:就...

2019-12-21 20:12:16 136

原创 字符串匹配,KMP了解一下

​ 如何判断一个字符串是不是另一个字符串的子串,我们第一反应就是indexOf或includes或者用正则,虽然没有什么不对,但是还是需要了解一下字符串匹配是怎么匹配的。在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个主文本字符串S内查找一个词W的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而...

2019-09-05 15:24:41 72

原创 如何用Echart正确的绘制甘特图(适用于React)

前言之前实现作业车间调度问题甘特图绘制,搜索过如何用Echart绘制甘特图,发现绘制方法都一毛一样,都是通过叠加series来实现,但这样绘制出来的甘特图,不仅够丑,而且数据也难以描述,如果要在react这种mvvm中绘制的话,也没法对甘特图做数据管理,所以经过自己的思考,发现可以有更好的绘制甘特图的方法。首先先看绘制出来的甘特图效果(项目GitHub地址:https://github.com...

2019-08-04 15:14:44 831

原创 作业车间调度与遗传算法Python/Java实现及应用:BitMES,基于Electron的作业车间调度系统

作业车间调度问题描述 作业车间调度(Job shop scheduling problem, JSP) 是车间调度中最常见的调度类型,是最难的组合优化问题之一,应用领域极其广泛,涉及航母调度,机场飞机调度,港口码头货船调度,汽车加工流水线等,因此对其研究具有重大的现实意义。科学有效的生产调度不但可以提高生产加工过程中工人、设备资源的高效利用,还可缩短生产周期,降低生产成本。...

2019-08-03 23:58:57 6039 11

原创 Java反射应用:基于Redis实现一个通用的Dao类

前言 ​ Redis是开源的,内存数据结构存储的健值数据库。即Key: Value形式来存储每一个数据,以Redis String、Hash、List类型为例:String 相当于 Map<String, String> Hash 相当于 Map<String, Map<String, String>> List 相当于 Map<Strin...

2019-06-24 09:24:06 364

原创 GraphQL 极速入门

前言​ 之前在自己的Blog项目 Blog++ 中使用了GraphQL,发现确实不错,所以写一篇关于GraphQL的入门文章。What is GraphQL?​ GraphQL是一种API查询语言,对API中的数据提供一套描述,使客户端能够准确地获得需要地数据。举个例子,在传统的RESTful API中,如果不对API做出声明,难以知道该API的用途,而且前端无法控制API返回...

2019-06-21 20:16:47 153

原创 在NodeJS下实现简单的ORM框架

前言 ORM即Object Relational Mapping,中文翻译过来就是对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。在nodejs中也有比较好用的ORM框架,比如TypeORM,Sequelize等等,但基本上都是重量级的,如果自己先实现一个简...

2019-06-12 11:41:25 834

原创 Redis 主从集群以及对等节点集群搭建以及连接

Redis 主从集群以及对等节点集群搭建以及连接前言​ Redis是开源的,内存数据结构存储的健值数据库。用于数据存储,缓存和消息代理。支持的数据结构有字符串,Hash,List,Set,有序集合等等。除此之外,Redis还使用集群来提供高可用性。本文就介绍如何搭建Redis主从集群和Redis对等节点集群。关于Redis的安装部分,可以查看Redis在Window上的几种安装方法(包含l...

2019-06-11 22:38:14 701

原创 redis在window10上的几种安装方式

redis在window10 几种安装方式​ redis作为一种健值数据库,目前最新版本的只支持linux,但并不意味着不能在window上用redis,下面总结了几种在window安装使用的方法。下载redis for window版本,但这并不是官方给的版本在window10上安装Linux子系统,然后在Linux子系统上安装redis在window10上安装Docker,然后安装r...

2019-06-01 23:36:23 2312

原创 如何在create-react-app里使用@装饰器

问题描述:由于create-react-app目前还没有添加装饰器,直接用的话会报错,但项目中不得不使用装饰器,比如引入MobX。解决方法:我们可以根据奥卡姆剃刀原理以及鸵鸟算法 => 不使用装饰器@observer class A {}//等价于const A = observer(class A {});@action function f () {}// ...

2019-05-24 10:34:41 938

原创 从设计模式角度分析Promise:手写Promise并不难

前言Promise作为异步编程的一种解决方案,比传统的回调和事件更加强大,也是学习前端所必须要掌握的。作为一个有追求的前端,不仅要熟练掌握Promise的用法,而且要对其实现原理有一定的理解(说白了,就是面试装逼必备)。虽然网上有很多Promise的实现代码,几百行的,但个人觉得,不对异步编程和Promise有一定的理解,那些代码也就是一个板子而已(面试可不能敲板子)。首先默认读者都对Pr...

2019-05-01 23:53:44 386

原创 深入理解Redux:简单实现一个Redux以及React-Redux

前言redux相信都不陌生(陌生的看中文文档:https://www.redux.org.cn/),它是 JavaScript 状态容器,提供可预测化的状态管理,你可以在React, Vue, Angular,服务端等地方使用。redux由三部分组成:Action, Reducer, Store,你需要编写的是Action和Reducer,比如最简单的计数器例子Action 部分//...

2019-04-08 08:52:21 422 2

原创 稀疏矩阵的一些操作(相乘,求幂, 相加,转置)

矩阵相信大家都知道,而且一些常见操作,如相乘,相加相信大家也不陌生,就以矩阵相乘为例,计算机的常规实现也就是三层for吗long[][] sum = new long[n][m];for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) for (int k = 0; k < l; k++) ...

2019-03-30 19:10:26 395 4

原创 你真的会用map和reduce吗?

相信熟悉js的人都知道map和reduce方法,它是js数组最有用的两个方法,同时也是函数式编程中的重要函数,但你真的会用它们吗?本篇文章将介绍map和reduce的基本思想,并举几个用法例子,以及在不同语言中的实现。map这个单词的中文直译就是映射,将一组值映射成另一组值,其中映射方法自己定义,其在js中API定义如下map<U>(callbackfn: (valu...

2019-03-11 17:11:08 315

原创 JSONP从原理到实现

相信AJAX大家都熟悉,以前使用AJAX做前后端交互经常会碰到请求跨域,关于什么是跨域可以自行百度(不是很难),所以引入本文的主角JSONP,一个有效的跨域解决方案。本文尽量以最简单的方式解释什么是JSONP,以及JS代码的实现。什么是JSONP 首先跟JSON没有半毛钱关系,它与AJAX一样都是客户端向服务器发送请求,然后获取数据的方式。AJAX属于同源策略,JSO...

2019-02-27 22:31:47 57

原创 原生JS拖拽从原理到实现

拖拽在js中挺常用的,不过目前有很多做拖拽的插件,H5也以及支持了拖拽事件,不过了解一下拖拽的原理也是有必要的,其实用原生js实现拖拽并不难。首先讲一下拖拽的原理,假设浏览器上有一个元素(元素已经绝对定位了),起始位置为(mx, my),即距浏览器上方mypx,左方mxpx,如下图拖拽元素的过程无非就是改变该元素的left值和top值,那么left和top值设为多少才对呢,其实这个...

2019-02-27 13:50:32 888

原创 哲学家进餐问题 C++实现

哲学家进餐问题描述假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家就餐问题有时也用米饭和筷子而不是意大利面和餐叉来描述,因为很明显,吃米饭必须用两根筷...

2019-02-26 19:28:34 3273 1

原创 遗传算法 与 作业车间调度问题(C++实现)

之前我们算法老师留的一个大作业,即作业车间调度问题,属于NP-hard问题,有很多种解法,这里给出遗传算法的解法。算法使用C++实现,如果需要Java或Python代码,请看这篇文章:作业车间调度与遗传算法Python/Java实现及应用:BitMES,基于Electron的作业车间调度系统问题描述作业车间调度问题(Job Shop Scheduling, JSP)是最经典的几个NP-ha...

2019-02-25 15:26:48 9958 24

原创 POJ 3233 Matrix Power Series (构造矩阵 + 矩阵快速幂)

Matrix Power SeriesTime Limit: 3000MS   Memory Limit: 131072K Total Submissions: 29036   Accepted: 11805 DescriptionGiven a n × n matrix A and a positive integer k, find the sum ...

2019-02-14 12:41:37 118

原创 哈理工OJ 1430 神秘植物

好久没写博客了,学的东西太多,想不到写些什么好,所以干脆就把之前刷OJ碰到的比较好的题的解题思路给写下来 神秘植物 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 178(69 users) Total Accepted: 67(52 users) Ratin...

2019-02-12 22:04:38 113

原创 Ajax的原生js封装

    身为一个前端开发者,对ajax这一块需要非常的熟悉,而且现在一直在提的前后端分离,ajax起着非常重要的作用,本文将简单介绍一下ajax,并附上原生js的封装    what is Ajax?     Ajax即 Asynchronous JavaScript and XML ,翻译过来就是异步的JavaScript和XML,个人的理解即是一种与后端交互且不需要刷新整个页面的技术,...

2018-12-15 18:14:50 84

原创 使用Parcel构建React应用

    在之前的一篇博客中,使用了Webpack4来构建一个React+Redux开发环境(详情请看这里:https://blog.csdn.net/daydream13580130043/article/details/83480222),整个构建过程还是挺费劲的,所以在本篇博客中将使用令一种构建工具Parcel来重新构建React开发环境。    Parcel是啥,跟webpack,gru...

2018-12-03 23:09:47 311

原创 一行代码实现curry化

     之前写过curry化的原理和实现,详情请看这里https://blog.csdn.net/daydream13580130043/article/details/83718978里面提到了用es6一行写curry化const curry = (fn, n = fn.length, args = []) => n === 0 ? fn(...args) : (...args...

2018-11-29 10:45:31 387

原创 使用webpack4从零构建React + React-router + Redux + Scss/Css开发环境

  前言      最近这几年,前端变化非常大,各种新框架应接不暇,从最开始几个html,css,js文件就搞定了前端,到现在前端的模块化,工程化,旨在构建出易于维护的前端系统。目前为止,前端三大框架Vue/React/Angular(Vue官网:https://cn.vuejs.org/index.html,React官网:https://reactjs.org/,Angular官网:h...

2018-11-09 00:12:21 931 1

原创 浅谈javaScript(ES5)继承

   JavaScript是一门基于原型的语言(不同于类),但并不意味着它不能写面向对象的代码,这篇文章将讲述JavaScript面向对象继承的内容如何使用JavaScript写一个类呢,ES5中没有class关键字,如果要实现一个类,需要使用function来模拟比如function Person(name,age,sex) { this.name = name; th...

2018-11-07 21:30:30 668 2

原创 JavaScript函数式编程之偏函数(Partial Function)

    之前的博客有介绍JavaScript函数式编程的curry化,今天就介绍一个跟curry化有点像的偏函数(partial function)先介绍一下什么叫偏函数,其实指的是将给定的函数的部分参数固定化,然后返回新的函数举个例子比如                                                                     这是数学里...

2018-11-06 21:42:13 1241

原创 javascript函数式编程之curry化

        函数式编程是一种编程范式(编程思想,不要以为有啥模板),主要思想是将运算过程尽量写成一系列嵌套的函数。举个例子//声明式let d = a + b + c * d;//函数式let d = add(a,add(b,mul(c,d)))例子没有啥难度吧,那么函数式编程的函数和数学的函数有什么关系呢,其实函数式编程的函数就是数学里的函数              ...

2018-11-04 21:03:24 1119

原创 原生nodejs编写个web框架

        接触nodejs挺久了,之前一直用nodejs的一些web框架做开发,如koa,express等,现在想自己写个简易的nodejs web框架,我使用es6和es2017的async/await实现个类似于Koa的web框架,文章中的代码将会存放到我的github上,欢迎下载学习。github地址:https://github.com/sundial-dreams/nodeSe...

2018-10-28 16:48:03 144

原创 javascript 异步编程的5种方式

前言javascript是单线程的一门语言,所以在执行任务的时候,所有任务必须排队,然后一个一个的执行,在javascript中有分同步代码,和异步代码,顾名思义,同步代码,就是依此执行的代码,异步代码可能不会立即执行,得等到某一特定事件触发时才会执行,javascript有个任务队列,用来存放异步代码,任务队列中的任务又有优先级之分,微任务(microtask)的优先级大于宏任务(macr...

2018-10-17 13:13:02 2022

原创 c++运算符重载

C++中允许我们对类类型(class类型)重定义运算符,即运算符重载          类类型的运算符重载的固定格式:           (返回值类型) operator<待重载的运算符> (参数列表)     在C++中可重载的运算符有:        +   -   *   /  %  ^  &  |  ~  !  ,  =  <  >  <=  &gt...

2018-04-23 21:39:50 138

原创 Qt5 圆角加阴影窗口简单实现

实现圆角加阴影的窗口,基本思路是利用QFrame,把QFrame通过改变QSS样式变成圆角,然后利用QGraphicsDropShadowEffect给QFrame设置阴影首先向ui文件里的Widget托人个QFrame,然后把QFrame放到中间,与Widget上下左右都隔开10px,隔开出来的10px用来做阴影区,然后右键QFrame选择改变样式表,样式表为   background-colo...

2018-03-06 20:33:51 3613

原创 基于JAVA的聊天APP(使用JavaFx构建美观的UI界面)

之前JAVA老师布置的大作业,自选标题,然后我选的是实现一个聊天软件,使用JAVAFX来做界面(跟SWING差不多,但是可以用CSS来美化界面,而且拖入式布局比较方便),实现的功能有登入注册,找回密码,更改头像,发送接收消息,查看好友资料,修改好友备注,好友是否在线的提示,消息的提示,气泡的大小自动改变,标为已读未读,清除聊天记录,删除好友,添加好友,搜索好友,好友备注,个人资料的修改查看...

2018-01-26 16:02:17 16666 54

原创 Qt5 QMediaPlayer 音乐播放器

     暑假用Qt写的音乐播放器,界面有点丑,然后功能也有点少,还有一些bug,然后现在趁着寒假的时间把之前的界面给改了一下,并添加 了一些功能,修改了一些bug,实现功能包括基本的歌曲播放暂停,上一首,下一首,添加歌曲,添加为我喜欢,添加至我的收藏,最近播放,列表的右键菜单,主窗口的右键菜单,删除歌曲,多选,查看歌曲信息,改变播放模式(顺序播放,随机播放,单曲循环),歌曲定位,清除列表,换皮肤...

2018-01-18 14:55:11 18264 31

原创 java与MySQL数据库的连接

假期到了,总结总结一个学期学到的东西,之前碰到了java连接MySQL数据库的问题,现在详细的分享Java连接MySQL数据库的方法。首先,如果电脑上没安装MySQL数据库的需要先下载的MySQL数据库,推荐下载个xampp,它集合了很多环境,包括PHP,MySQL等,用它的话可免去直接安装MySQL数据库配置一大堆环境的问题。xampp 下载:点击打开链接然后选择安装路径直接安装就可

2018-01-15 12:32:56 489

原创 Qt5.8 QMediaPlayer 音乐播放器

     (大三的时候在来看当时大一写的项目,感觉有点小怀念,突然觉得当时是怎么在什么都不会的情况下写出这个来的,虽然代码乱了一点,但是功能还是有的,另外,感觉这个界面有点low,所以大二的时候,花了三天改了改界面和bug,新的Qt5 QMediaPlayer音乐播放器的博客连接:https://blog.csdn.net/daydream13580130043/article/details/7...

2017-08-12 14:41:58 11098 7

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