前戏 我是16年入了前端的坑,17年知道了gulp和rollup这两个玩意儿.由于那时webpack势头很猛,便一直没有正眼瞧过它一眼. 直到20年进了一家小公司,做了很多类似的小项目,相同的代码拷来拷去,出现一个bug一堆项目都要改,实在恶心到我了. 于是不得不开始考虑将一些公共的方法和组件提取出来,做成一个第三方库来维护.而在库的封装方面,rollup相对于webpack具有一定的优势. 在此,便和大家分享一下如何自己造轮子,封装一个前端库并发布到npm仓库中去. 源码 这是我自己封装的3个…
  我造的这个"轮子"指的是集低代码开发与运维为一体的平台,为什么说它不是"圆"的,因为它有些与众不同,甚至可以说是有些另类.至于为什么造这个"轮子",以及另类在什么地方且听我慢慢道来. 一.痛苦的编码岁月   我是一个70后码农,开发过不计其数的系统,小到进销存大到电商.物联网甚至是省级平台.每次项目开始都要经历从技术选型.架构设计.开发.测试及最终生产环境部署运维等多个步骤.小项目还好随便一个单体架构就可以搞定,大项目特别是数据量较大的不仔细…
前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口.路由的配置. 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议. 最终其实还是按照我之前的想法来做了这个配置管理. 同时将 cicada 升级到了 v1.0.2. 目标 在做之前是要把需求想好,到底怎样的一个配置管理是对开发人员来说比较友好的? 我认为有以下几点: 可以自定义配置,并且支持不同的环境(开发.测试.生产). 使用灵活.对使用者来说不要有太多的束缚. 理论上来说配置这个东西应当完全独立…
最近 SpringFox 3.0.0 发布了,距离上一次大版本2.9.2足足有2年多时间了.可能看到这个名字,很多读者会有点陌生.但是,只要给大家看一下这两个依赖,你就知道了! <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0</version> <scope&…
前言 两天前写了文章<「造个轮子」--cicada(轻量级 WEB 框架)> 向大家介绍了 cicada 之后收到很多反馈,也有许多不错的建议. 同时在 GitHub 也收获了 80 几颗 小♥♥(绝对不是刷的..) 也有朋友希望能出一个源码介绍,本文就目前的 v1.0.1 版本来一起分析分析. 没有看错,刚发布就修复了一个 bug,想要试用的请升级到 1.0.1 吧. 技术选型 一般在做一个新玩意之前都会有技术选型的过程,但这点在做 cicada 的时候却异常简单. 因为我的需求是想提供一个…
原文地址: haifeiWu和他朋友们的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢! 服务端开发都会或多或少的涉及到 RPC 的使用,当然如果止步于会用,对自己的成长很是不利,所以楼主今天本着知其然,且知其所以然的精神来探讨一下 RPC 这个东西. child-rpc模型 child-rpc 采用 socket 直连的方式来实现服务的远程调用,然后使用 jdk 动态代理的方式让调用者感知不到远程调用. child-rpc 开箱使用 发布服务 RPC 服…
仓库:215566435/rectx 前言 麻烦快去我的仓库里面喷: 老子学不动了,求不要更新. 呵呵,你没想到吧,这玩意儿竟然有第三集!我靠,我自己都没想到,让我们悄悄的回顾一下前两集完全没想到,竟然会有第二集! 我厌倦了 Redux,那就造个轮子 Rectx 第二集: immutable 痛点分析 第一集在这里:我厌倦了Redux,那就造个轮子:Rectx 算了,我都懒得写了,自己看吧,当然不看也无所谓,正式开始. 新的 Rectx 有什么不同? a light-weight state m…
前两天刚刚接触编程,用的是C#.开始确实枯燥,但是今天的感觉就好多了,还挺有意思.根据老师讲的课程自己编写了小程序,运行起来还不错.在这里分享下. 关于时间安排的小程序: int sj; int aa; string noon; string jg; Console.WriteLine("我是时间小助手"); Console.WriteLine("当前时间是:"); sj = Convert.ToInt32(Console.ReadLine()); noon = s…
这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者对 HttpModule .HttpHandler和IIS的处理流程有一定的了解,如果为了解可以参考以下链接.文中大部分代码通过Reflector反编译  System.Web.dll 得到,.net 版本为4.0 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述 IIS 7.0…
前言 俗话说 「不要重复造轮子」,关于是否有必要不再本次讨论范围. 创建这个项目的主要目的还是提升自己,看看和知名类开源项目的差距以及学习优秀的开源方式. 好了,现在着重来谈谈 cicada 这个项目的核心功能. 我把他定义为一个快速.轻量级 WEB 框架:没有过多的依赖,核心 jar 包仅 30KB. 也仅需要一行代码即可启动一个 HTTP 服务. 特性 现在来谈谈重要的几个特性. 当前版本主要实现了基本的请求.响应.自定义参数以及拦截器功能. 功能虽少,但五脏俱全. 在今后的迭代过程中会逐渐…
背景 对于dva这个开发框架,国内从事react的前端工程师多半不会感到陌生,dva完善的开发体系和简单的api,让其被广泛运用到实际工作中.我所在的公司也是长期使用dva作为基础的开发框架,虽然好用,但是随着前端技术的飞速发展,dva似乎陷入停滞了,从npm官网上看其发版情况看,正式版本2.4.1是三年前发布的,最近一次是2.6.0-beta.22版本,也是半年前发布的,因此 附录[2]文章中指出dva未来不确定性高的隐患.除此之外,关于dva的effect是否能支持async/await的讨…
GraphScheduleEngine是什么: GraphScheduleEngine是一个基于DAG图的任务流引擎,不同语言编写.运行于不同机器上的模块.程序,均可以通过订阅GraphScheduleEngine的消息来启动.运行.结束自身的任务. 开发GraphScheduleEngine的初衷: 在数据挖掘.推荐引擎的离线计算等任务中,会涉及诸多的子任务,每个子任务之间通常还存在着复杂的依赖关系,各个任务之间构成一个有向无环图DAG,如图一所示: 同时基于大数据平台和并行化处理,我们希望尽…
前言 本次 Cicada 已经更新到了 v1.0.3. 主要是解决了两个 issue,#9(Boss线程数好像设置有误 ) #8(怎么返回纯字符串内容不要JSON格式?). 所以本次的主要更新为: Cicada 采用合理的线程分配来处理接入请求线程以及 IO 线程. 支持多种响应方式(以前只有 json,现在支持 text). 为了满足上者引入了 context. 优雅停机. 其中我觉得最核心也最有用的就是这个 Context,并为此重构了大部分代码. 多种响应方式 在起初 Cicada 默认只…
最新消息:react官方已支持懒加载https://reactjs.org/docs/code-splitting.html#reactlazy 文章webpack分片chunk加载原理中深入探究了异步chunk的加载原理,根据这个特性,在大型单页应用中,很容易实现大到子业务,中到子路由,小到子模块或者子组件的按需加载.react-loadable即封装了组件按需加载的流程并对外提供了一系列配置选项,极大的改善了开发体验,在业界算是实现按需加载的首选了.本文不打算深入分析其源码实现,而是根据其对…
之前写了一个爬虫的包,主要是根据自己写爬虫的情况总结一下. 因为每次都要重复写一些代码,所以提炼出来,类似一个框架的样子吧. 开始是放在自己的项目里引用,但如果换了一个项目,就得重新拷一遍,很麻烦. 后面又学到了,放在site-package里面可以在自己的环境引用,但换一个环境也是不行的,于是想到放到pypi上面,可以直接pip install,就很方便. 记录一下上传包的过程. 先上一个参考文章https://www.cnblogs.com/sting2me/p/6550897.html.这…
提到封装组件,发布到npm,很多同学都会觉得很神秘.但其实,npm包无非就是我们平时写的比较独立且可复用的模块.当然,想要发布,除了基础组件的编写外,还要进行一些包装.下文通过一个简单的案例,和大家一起讨论组件从开发到发布的整个过程.在此承诺,包教包会! 一.封装组件 封装组件包共有3个步骤: 创建组件模板 自定义组件内容 安装依赖,打包组件 1.创建组件模板 命令:vue init webpack-simple proName,这里我定义项目名叫“hello-world”. 由于是simple…
我忽然发现:TButton既没有处理WM_PAINT,又没有Paint()或者PaintWindow(),那么它是什么时候被绘制的? Form1上放2个TButton,然后设置代码: procedure TForm1.Button1Click(Sender: TObject); begin button2.Repaint; end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage('good'); end; 在F…
QQ运动,都说新楛的马桶还香三天,为毛你这般明日黄花,为营销人所弃. QQ运动,一个差不多被遗忘的冷却地带,却圈粉无数,以性感.狂野.妖艳.线条.汗水等秀元素贯穿始终,狼友显露于此,爱美的女性也未曾缺席,营销价值度可想而知. 运动数据 QQ运动,跃跃粉丝,红包处处,鲜花不断,冷静的那么活跃.圈粉丝无数,红包也是大大的有哇(套路,和新媒体一个德性). 刚进入QQ运动,点开了第一条运动圈动态,该美女粉丝129万,鲜花287万,其第一条动态,打赏17.4元,鲜花1700朵,评论628个. QQ运动的评…
https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/ 与会议室排期问题,很相似. package com.company; import java.util.*; class Balloon { int[] points; boolean check; Balloon(int s, int e) { points = new int[2]; points[0] = s; points[1] = e; c…
global g_arr def add(): #global g_arr g_arr = [] g_arr.append(1) add() print g_arr #你将收获一个NameError错误 ############################ def add2(): global g_arr g_arr = [] g_arr.append(1) print g_arr #ok,这是一个数组了 #简单的说虽说你声音为全局变量,但是,在函数内部你也得再次声音,这应该是作为命名空间的…
下载: 链接:https://pan.baidu.com/s/1Gz8mEffDGXNSK8lIsAIUEg   提取码:2sur 测试步骤看此贴,跟V7开发板是一样的: 基于H7的中移动物联例子以及简易操作说明,方便电脑端和手机端远程查看数据 https://www.cnblogs.com/armfly/p/11307683.html 效果:…
在那个电子产品比较匮乏的年代,小游戏机…
现在市面上有很多成熟的MVC框架,可以拿来直接用,但自己造一下轮子其实也挺有意思的. 下面先来看个最简单粗暴的MVC实现. 5个文件就能实现最简单的MVC,在Apache中设置一个虚拟目录,配置个简单域名,就可以顺利访问了. 为了实现简单,这里没有写模型层. 一.index.php 这个文件是入口文件,所有的请求就将会先进入到这个文件,然后再通过路由进入到不同的控制器中. 这就是常说的单一入口. 1. 我简单的将路由也放在了这个文件中. 2. 还将一个简单的全局常量放在了这里. define('…
CSP2019 考场二日游 CJ 旅游团 本来我是准备咕掉的, 但是被强 ♂ 烈要求更博了 Day -INF ~ Day -1 专题巩固和联考 前面半个月疯狂爆炸 后面半个月状态恢复了, 考得还行 联考全场自闭 Day 0 打摆 晚上和龙哥还有 zzy 在机房里面打 LOL 莫名其妙地进入了 tham 和 Sangber 的爸爸 然后就被抓摆了 说好了嗨一晚上的, 嗨尼玛呢 晚上睡觉睡得挺早, 一躺上床就睡着了 Day 1 睡得还挺香的 早上准时被闹钟叫醒 拿上了 zzy 妈妈给的蛋糕和牛奶跟…
嘿,各位小伙伴中午好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录哔哩哔哩. ! 接到老大通知,让我自动写一个自动登录哔哩哔哩的脚本,我当然是二话不说直接开怼,咱们的准则是啥,生死看淡,不服就干,干就完了.然而,现实总是被无情打脸,但是不管怎样,终究算是干过它了,下面我们来一一讲解,如何自动登录哔哩哔哩! /2 准备工作/ chromedriver :浏览器驱动,可以理解为一个没有界面的chrome浏览器. selenium :用于模拟人对浏览器进行点击.输出…
前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱们的准则是啥,生死看淡,不服就干,干就完了,然而,现实总是被无情打脸,但是不管怎样,终究算是干过它了,下面我们来一一讲解,如何自动登录 哔哩哔哩 准备工作 chromedriver:浏览器驱动,可以理解为一个没有界面的chrome浏览器 selenium:用于模拟人对浏览器进行点击.输出.拖拽等操作…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 没招了,不写点刺激的,你总是不好好看! 以前,我不懂.写的技术就是技术内容,写的场景就是场景分析,但从读者的阅读我发现,大家更喜欢的是技术与场景结合,尤其是用技术结合那些羞羞答答的场景,虽然嘴上都不说. 本章节主要是想给大家介绍关于在 IDEA 插件开发中如何使用工具栏和Tab页,来填充在 IDEA 中底部的窗体,就像 IDEA 中的控制台一样.但就这么写好像是够呛能有人看,因为大…
人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚刚入职不久的实习生,虽然是职场菜鸟但聪明好学.据说是学校的四大校花之一,追求她的人从旺角排到了铜锣湾,不过至今还单身. 微信公众号:万猫学社 微信扫描二维码 关注后回复「电子书」 获取12本Java必读技术书籍 阿珍吃完饭刚刚回来,看到老徐正在吃方便面,说:"老徐,不至于吧.你为了还债,中午就吃这个…
众所周知,synchronized和Lock锁是java并发变成中两大利器,可以用来解决线程安全的问题.但是为什么Java有了synchronized之后还是提供了Lock接口这个api,难道仅仅只是重复造了轮子这么简单么?本文就来探讨一下这个问题. 谈到这个问题,其实很多同学第一反应都会说,Lock锁的性能比synchronized好,synchronized属于重量级的锁.但是在JDK 1.6版本之后,JDK对synchronized进行了一系列性能的优化,synchronized的性能其实…
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一>实现了一个简陋的JSON转Model的库,不过还存在很多问题.下面我会尝试一个个去解决. 2. 存在问题及解决思路 2.1 没有考虑JSON数据并不一定是NSDictionary类型 有时候JSON并不一定是NSDictionary类型,可能是一个字符串,也可能是NSData类型的数据.不过不管是哪种类型,统…