JAVA学习(十四)| Maven基础
Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。
Maven使用pom.xml定义项目内容,并使用预设的目录结构;(和package.json)
在Maven中声明一个依赖项可以自动下载并导入classpath;
Maven使用groupId,artifactId和version唯一定位一个依赖。
Maven通过解析依赖关系确定项目所需的jar包,常用的4种scope有:compile(默认),test,runtime和provided;
Maven从中央仓库下载所需的jar包并缓存在本地;
可以通过镜像仓库加速下载。
构建流程——生命周期⁍
Maven通过lifecycle、phase和goal来提供标准的构建流程。
最常用的构建命令是指定phase,然后让Maven执行到指定的phase:(如下面的clean、compile、test、package)
mvn clean
mvn clean compile
mvn clean test
mvn clean package
...
面试 | Java算法题输入输出
一般情况下,Leetcode上刷题都是核心代码模式,只需要写出solution类就可以了,不用管输入输出。但是许多笔试面试的时候,是需要写输入输出的(ACM模式)。这里简单记录一下可能会用到的输入输出模板。
标准模板⁍
1234567891011121314151617import java.io.*;import java.util.*;public class Main{ public static void main(String[] args) throws Exception{ Scanner in = new Scanner(System.in); // 整数 int n1 = in.nextInt(); // 浮点数 double n2 = in.nextDouble(); // 一行,不包含末尾分隔符 String s = in.nextLine(); // 输出 System.out.println(n1); & ...
Electron-vue开发实战(总集篇Ⅰ)| Hexo-Manager开发阶段性总结与下一步计划
到现在,我的Hexo-Manager开发出了第一版 0.0.1-alpha,并在github上pre-release了。尽管功能很简陋,但还是具备一定实用性,并且学习到了许多知识。本文只在对目前的开发进度进行总结,对一些原理进行记录,并对未来工作的思考进行一些记录。
Hexo-Manager 0.0.1-alpha⁍
Hexo-Manager是一个Windows平台的针对Hexo博客进行可视化管理的软件
运行环境⁍
Windows
下载、安装和配置⁍
到release页面里下载setup文件,双击安装点击右上角的设置按钮,对于你的Hexo根目录进行配置,例如 C:\hexoBlog
这里有问题,在dev的环境下可以输入C:\\hexoBlog转义,也可以直接输入C:\hexoBlog,但是在打包后,只能输入C:\hexoBlog,不能加转义字符
开发环境⁍
Electron-Vue框架
NodeJS: v16.8.0
主要功能⁍
点击“打开”,选择文件,用系统默认的编辑器打开
点击“新建”,输入文章名称,新建hexo文章,并用系统默认的编辑器打开
点击“一键 ...
Electron-vue开发实战(七)| icon设置与发布等
LOGO⁍
本项目图标logo采用现代渐变logo图标icon设计元素-素材集合 (canva.cn)设计,直接加了个H的字母在上面
不同平台上应用的LOGO尺寸和格式也不尽相同。三个平台所需的图片格式如下:[1]
Linux - png
macOS - icns
Windows - ico
可以先准备好png,再转换
都放入build/icons文件夹
不知道为啥我的icon复制过来就还是electron原来的样子。。
只能改名再放进去,直接打包会报错(我好迷惑)
package.json里的配置如下(原先就有):
123456789"mac": { "icon": "build/icons/icon.icns"},"win": { "icon": "build/icons/icon.ico"},"linux": { "icon": "build/ ...
Electron-vue开发实战(六)| Electron数据本地存储:用electron-store实现json配置文件读写
数据库选择⁍
在PicGo项目中,作者在nedb 和lowdb 中进行了选择,最终选择了后者。但是在配置的时候还是踩了不少坑。[1]
经过搜索,本项目决定采用electron-store进行存储。[2][3][4]
安装⁍
yarn add electron-store --dev
安装很顺利,都有点不习惯了。
配置文件名称和路径⁍
创建Store实例
123const Store = require('electron-store');const store = new Store();
name⁍
Type: string
Default: config
存储文件的名称(不带扩展名)。
cwd⁍
Type: string
Default: app.getPath('userData')
存储文件位置。 除非绝对必要,否则请勿指定! 默认情况下,它将通过遵循系统约定来选择最佳位置。 您很可能会误解并惹恼用户。
如果是相对路径,则相对于默认cwd。 例如在macOS 中,{cwd:'unicorn'}将在〜/Librar/Application\ ...
Leetcode|滑动窗口
注: 仅记录模板题,滑动窗口非这些题目的最佳解(不如说大部分都可以优化。。)
滑动窗口模板⁍
步骤[1]:
根据题意维护变量
和 Sum
最大长度 max_len,最小长度 min_len
注意: 有的时候要设Integer.MAX_VALUE/Integer.MIN_VALUE
不重复 hashmap = {}
等
窗口的开始位置start和结束位置end
根据条件写判断语句,维护step1中的变量
根据题目要求,从中选择一种方法套用
选择一:窗口长度固定
if 窗口长度达到限定的长度:
1.更新step1中的相关变量
2.窗口左边位置start向前移动 1,保证end向右移动时窗口长度保持不变
选择二:窗口长度不固定
while 窗口条件不符合:
1.更新step1中的相关变量
2.不断移动start,直到窗口条件符合
返回答案
643. 子数组最大平均数 I⁍
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数
示例如下:
输入:nums = [1,12,-5,-6,50,3 ...
Electron-vue开发实战(五)| 主进程调用CMD
主进程调用cmd其实就是node.js调用cmd
有两种方法:[1]
使用child_process
安装使用node-cmd
这里直接用第1种方法
Node.js child_process⁍
import { exec } from 'child_process'
默认情况下,会在父 Node.js 进程和衍生的子进程之间建立 stdin、stdout 和 stderr 的管道。 [2]
在 Windows 上衍生 .bat 和 .cmd 文件⁍
child_process.exec(): 衍生 shell 并在该 shell 中运行命令,完成后将 stdout 和 stderr 传给回调函数。
child_process.execFile(): 与 child_process.exec() 类似,不同之处在于,默认情况下,它直接衍生命令,而不先衍生 shell。
child_process.exec() 和 child_process.execFile() 之间区别的重要性可能因平台而异。
在 Unix 类型的操作系统(Unix、Linux、macO ...
Electron-vue开发实战(四)| VSCODE调试主进程
package.json查看配置⁍
事实上,因为安装的时候什么都选了,所以在package.json里有dev的配置
可以先点击调试按钮,选择Run Script:dev
但是一开始我没调出来(可能是要先添加source-map?),先用[1]的方法配置lauch.json折腾了一番
后来发现根本不需要配?【知识增加.jpg】
source-map⁍
参考的文章中还写了要在webpack.main.config.js里添加
1devtool : 'source-map'
我照做了,不然好像打不了断点
什么是source-map⁍
source-map也是一种针对JavaScript的debug工具[2]
为什么用source-map⁍
JavaScript 脚本正变得越来越复杂。大部分源码(尤其是各种函数库和框架)都要经过转换,才能投入生产环境。
常见的源码转换,主要是以下三种情况:
压缩,减小体积
多个文件合并,减少 HTTP 请求数
其他语言编译成 JavaScript
这三种情况,都使得实际运行的代码不同于开发代码,除错( debug )变得困难重重 ...
Leetcode-贪心算法
基础知识⁍
贪心的本质是选择每一阶段的局部最优,从而达到全局最优。
什么时候用贪心 :如何验证可不可以用贪心算法————举反例
贪心一般解题步骤⁍
将问题分解为若干个子问题
找出适合的贪心策略
求解每一个子问题的最优解
将局部最优解堆叠成全局最优解
406. 根据身高重建队列⁍
假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。
请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。
示例 1:
12345678910输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]解释:编号为 0 的人身高为 5 ,没有身高更高或者相同的 ...
Electron-vue开发实战(一)plus| Node16.8.0不降级安装Electron-vue+ElementUI开发环境
前言⁍
本文旨在{ %post_link Electron-vue开发实战(一)- 入门与安装(踩坑实录) %}中提及的基本安装方法上尝试改进,在不变换nodeJs环境的基础上,完成对Electron-vue环境和ElementUI/Element-theme的安装和配置
配置vue脚手架和electron框架⁍
这部分与前文一致
1234# 如果你没有vue-cli的话需要全局安装npm install -g vue-cli# 然后使用vue-cli来安装electron-vue的模板vue init simulatedgreg/electron-vue my-project
另外还可以使用离线安装的方式进行[1],
下载模板源码
https://github.com/SimulatedGREG/electron-vue
下载后解压存放在 用户目录/.vue-templates/ 下(没有就创建,注意复数s),形成如下的结构:
123456{用户目录}/ .vue-templates/ electron-vue-master/(目录名随便,但是在待会儿i ...