用vite的方式开发electron应用
用vite的方式开发electron应用vite的构建方式让前端人员的编程体验好了太多,最近在学习electron应用的开发,就在想能不能使用vite的方式开发electron应用。看了很多方案,大部分都是基于webpack的脚手架。
那么有没有一种方式能够将vite结合electron,来开发electron应用呢?答案当然是有的,作为electron与vite整合开源方案中最火的项目:vite-plugin-electron 。本文将基于这个项目的实现思路,详细记录如何编写vite插件并在最终手写一个vite插件,实现用vite的方式开发electron应用这么一个小目标。
阅读本文前你需要对vite有一个基本的认识,否则你将对一些内容感到一头雾水。如果你对vite的插件开发有兴趣的话,请一定耐心阅读完本文,干货满满。
在本文中我将提到以下几点:
vite插件的基础知识与简单应用
electron应用开发的入门
vite整合electron应用开发的思路
编写vite插件实现vite与electron应用的整合
vite插件的基础知识与简单应用vite插件的用途简单来说就是帮 ...
基于ipv6实现几乎零成本的内网穿透方案,小白的踩坑历程与经验分享
基于ipv6实现几乎零成本的内网穿透方案,小白的踩坑历程与经验分享前言最近想远程访问家里nas的想法老在脑海中浮现,原因大概是本人二开了一个管理系统,并在上面跑了些定时任务做自动化,就有了远程访问系统的需求。同时又想到,如果真能实现内网穿透,那么家里的nas真实的成为一个服务器,且配置不低,带宽也凑活,最重要的是与云服务器相比,可以省下一大笔钱。
那说干就干,接着就分析下内网穿透的几个思路:
frp形式的,首先需要一台具有公网ip的服务器,并在服务器上跑内网穿透的服务端,自家nas上跑客户端;或者可以购买内网穿透的服务,但可能有安全隐患。我寻思这种方式都需要有公网服务器了,总之就是费钱,那本人省钱的想法就泡汤了,故只能pass。
宽带的公网ip加上ddns,ipv4地址现在是不指望了,就算是电信宽带也很难申请到,而且今天我登录光猫上看了wan口的ip地址,是100打头的,好家伙果然是内网地址。但俺发现ipv6地址目前已基本普及,所以打算试试ipv6与ddns结合来进行内网穿透
可行性分析如果我们要访问的是ipv6的地址,前提是目前的网络必须是支持ipv6的,所以这个可行性俺一定要先 ...
使用nodejs编写自动化脚本,真香!
使用nodejs编写自动化脚本,真香!说到写脚本,最为人熟知的语言必然是shell,再者python,当然现在也出现了很多界面友好,支持可视化拖动编写脚本的软件,如quiker等。但本文要介绍的是nodejs,其用到的语言是JavaScript,本人最近正在学习。nodejs支持通过命令的方式执行JavaScript脚本文件,脱离了浏览器环境,使得编写脚本成为可能。JavaScript语言生态相当丰富,社区活跃,当需要实现某个创意时丰富的生态可助力快速落地。
自动化脚本一般写脚本把繁琐重复的事情一键完成,配合一定的运行机制,如定时任务调起脚本,使其自动运行,大大减轻工作负担。在工作中可能会写自动化部署项目的脚本,定时监控系统运行的脚本,定时清理文件的脚本等,但是如果个人呢?很多人每天都忙碌于各种app的签到,完成app的日常任务,查看视讯动态等,这些工作要是也能自动化运行且主动通知就好了,仿佛996的生活也出现了一丝惬意。
搭建自动化任务脚手架要实现各种app的签到、完成日常任务及消息通知等功能最核心的是编写http客户端,http是目前最最广泛的应用协议,http客户端在nodejs ...
Mybatis源码分析-Mybatis的缓存机制
Mybatis源码分析-Mybatis的缓存机制一直都知道Mybatis有二级缓存,但这些知识点是停留在文档或者面试宝典中,很少在工作中感知到,更别说从源码角度分析了。所以,今天准备从源码角度分析学习下。
一级缓存一级缓存是SqlSession对象持有的,我们知道Mybatis在每次查询操作的时候都会创建一个SqlSession,那这就意味着一级缓存是SqlSession级别的,不会有线程安全问题。
先看看一级缓存的真面目:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// org.apache.ibatis.executor.BaseExecutorpublic abstract class BaseExecutor implements Executor { protected Transaction transaction; protected Executor wrapper; protected ConcurrentLinked ...
spring源码分析_spring是如何实例化组件的
spring源码分析-spring是如何获取组件的spring这个框架我已经用很久了,差不多两年吧,也写过一些分析源码的文章,当时主要是在b站看培训班课程时写的笔记。一方面是学习spring的基本用法,另一方面是巩固所学,毕竟手和脑一块动起来学的东西比较牢。而且,写点东西后续回顾起来也快。
但是,spring实在太复杂了,尤其是钻入源码层面非常容易迷失,在n个层次的调用栈跳来跳去,晕头转向。尽管如此,每次看还是有新的体会,有些当初看不懂的地方渐渐明白了。想着趁热打铁,把自己的理解记录下来,因此有了这篇文章。
本文内容是从源码角度对spring如何实例化组件的理解。
ApplicationContext和BeanFactory先搞清楚ApplicationContext和BeanFactory这两个组件在前期我是混淆不清的,觉得他们都差不多,毕竟他们之间互为继承关系。一般工作中使用的ApplicationContext接口实现类是AnnotationConfigApplicationContext,看看其继承图:
再观察下AnnotationConfigApplicationConte ...
mybatis源码分析_如何执行sql的
Mybatis源码分析-Mybatis是如何执行sql的使用mybatis作为dao层框架是目前较主流的一种方案,与spring框架整合下的实践一般是先编写mapper接口,再编写mapper的xml文件,最后在service层中调用mapper接口进行数据库层面操作。举个系统岗位实例的curd做例子:
mapper接口
123456789101112131415161718public interface SysPostMapper{ /** * 查询岗位数据集合 * * @param post 岗位信息 * @return 岗位数据集合 */ public List<SysPost> selectPostList(SysPost post); /** * 查询所有岗位 * * @return 岗位列表 */ public List<SysPost> selectPostAll();}
mapper的xml文件
1234567891 ...
SPRING注解驱动开发
SPRING注解驱动开发-雷神课程超详细笔记时间:2021-03-21
2022-04-06更新:最近翻起一年多前写的笔记复习,还是收获颇多,很多当时无法理解的知识现在慢慢能理解了,可能是工作一年的经验?也可能是源码看多了把很多细节都记下了,哈哈。
spring核心概念 di和ioc。spring 认为所有的组件应放在容器中,组件间的依赖可自动装配
注解版 spring作为ioc容器的一些基本使用1234AnnotationConfigApplicationContext //注解版用的spring容器对象applicationContext.getBeanDefinitionNames();//容器中定义的bean名称String[] names = applicationContext.getBeanNamesForType(Person.class);//获取容器中指定类型的bean组件的名字
使用配置类,代替配置文件:通过标注@Configuration注解,声明注解类
通过@bean注解在方法上,注册bean使用@scope来指定bean的作用范围singleton和pr ...
springboot启动流程的总结
springboot启动流程的总结近期闲暇时间在了解springboot应用的启动流程,毕竟玩springboot也这么久了,读读springboot的源码也是应该的,而且,从1.5.9到2.5.x的版本,我发现大体的源码是没什么变化的,这东西读懂了,很实用啊!
springboot包下的类:org.springframework.boot.SpringApplication
run方法入口就是此类,调用run方法
123456789101112131415161718192021222324252627282930313233public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; FailureAnalyzers analyzers = null; configureHeadlessProper ...
Java劝退之spring系列:第一篇 spring必知必会
Java劝退之spring系列:第一篇 spring必知必会前言坊间有传言,java程序员实际上是spring程序员,spring是每个java开发者必须掌握的技术。由此可见,spring的影响之大,说spring是java技术的集大成者一点也不为过。从某种角度来说,java和spring已经是互相成就的关系了,java的迭代推动了spring强大,spring的广泛使用也推动java的迭代。
说了那么多,简言之,学java,那就学spring,spring的深度和广度都值得每一个java开发者去研究。
本人在学习和使用spring框架一段时间后,用本系列记录和总结自己的使用心得,通过知识点配合代码的方式来呈现,目的是加深理解,方便回忆,最好能让没接触过spring的小伙伴照着学习后,也能够快速入门。
spring是什么spring一般说的是spring framework,它是spring家族强大生态下的一个项目,其他的还有诸如springboot,springcloud等等,本文用spring代指spring framework。作为系列的开篇,只展开介绍spring的核心部分,
...
基于GITHUB ACTION的定时任务,真香!
我本身就有一台自用的服务器(其实也不算,就是一个性能很弱的nas主机)每天24小时运行着,上面跑的系统是ubuntu 18,最近发现了一种玩法,可以把自己写的脚本,或者github上白嫖来的脚本,以定时任务的方式放在上面跑,然后每天就会自动做一些任务感觉挺方便的。目前是把一些签到类的脚本和定时推送消息的脚本放在上面,当然,还有很多的玩法,只要有自己的需求和强大的脚本哈。
前不久在github上瞎逛的时候,我想找找现在有没有什么有趣的脚本可以白嫖哈,发现很多开发者在进行脚本运行说明的时候,都会带上使用GITHUB ACTION的方式来跑。之前我是没有了解过这方面的内容的,在我看来其实挺神奇的,为什么呢?因为执行脚本那必然是需要一台服务器来运行的,也就是会占用服务器的资源,换句话说,难道GitHub可以免费给开发者提供用于运行脚本的服务器资源吗?答案是:没错。那这,如果能够充分的利用这个平台,肯定可以产生很多玩法的,事实也是如此,GitHub action 甚至有个属于自己的市场了,所以,这方面可以折腾下,玩好了那就真香!
什么是GitHub action我不能很精确的描述它的定义,也不想 ...