JetBrians 全家桶设置文件header
前言我们在写代码的时候一般会在文件的头部添加header,包括copyright 时间,和作者和描述等信息。接下来我们就来看看怎么添加。 先看下效果图 操作步骤1. file- settings 找到Copyright - CopyrightProfiles点击+ 号,新建一个name 为“copyRight” 的profile profile 的内容粘贴下面的问文本, 替换自己的名字 1234Copyright (c) $originalComment.match("Copyright \(c\) (\d+)", 1, "-", "$today.year")$today.year YOUR NAME. All rights reserved. Author: YOUR NAME Description: Date: $today 点击Copyright 添加刚才的profile 点击应用即可 右键-generate-Copyright 插入
Leetcode1603. 设计停车系统
Problem: 1603. 设计停车系统 [TOC] 思路 首先,读清楚题目,需要分别记录3个车的剩余车位数量,并且要在addCar的时候进行判空,这就需要用到查找,在车类型中查找,这里我们可以使用map或数组。因为车的类型是连续的,不是稀疏的。我们更建议使用数组。 虽然这是一道简单的设计题,但是我们需要以小见大,认真思考。设计题就是理解题目意思——>建模->选择合适的数据结构-> 优化算法。一定要认真读题,先规划和设计好,再动收,一定要多练习,保持手感。需要注意的是:在 Go 语言 中,new 是一种创建变量的方式。通过 new(T) 可以创建类型为 T 的变量,初始值为 T 类型的零值,返回值为其地址(地址类型是 *T),这样在Constructor 只用返回值,而不是指针,但是在 AddCar 函数中,我们使用了指向 ParkingSystem 的指针接收器(receiver),保证可以修改new 出来的结构体。 解题方法 lastCar [3]int 添加上边的数组 复杂度 时间复杂度: 添加时间复杂度, 示例:...
Linux非root用户通过X11运行图形界面程序-以Rstudio为例
问题由于使用单位或者学校的服务器,我们一般都没有root权限,导致一些Server版本的软件不能安装(例如数据分析领域的Rstudio-Server,需要root权限,新增端口给Rstudio-Server的web服务)。但大家有没有发现,我们自己在本地的PC上安装桌面版本的Rstudio是并不要管理员权限的,是因为我们不需要开放端口,Rstudio直接在显示在图形界面上了。那么理论上,我们可以在服务器上,通过模拟服务器的图形界面来直接运行桌面版的Rstudio。而这个模拟服务器的图形界面就可以使用X11! X11是一个用于在Unix和类Unix系统上实现图形用户界面的标准协议和窗口系统。它通过分布式性质允许在远程服务器上运行图形应用程序,并将图形数据传输到本地计算机上显示,从而实现了图形界面的远程访问和显示。 操作步骤 使用mobaxTerm 登录对应服务器,需要显示X11 打开 创建虚拟环境1234567# 创建虚拟环境 conda create -n rstudio# 安装Rconda activate rstudio # 进入创建好的环境变量conda...
Linux 将用户追加到对应用户组
前言本文目的是为了将多个用户设置同组用户,并且同组内用户新建文件的默认权限是同组内用户可读写。 解决方案 将test 添加到GroupA 1234usermod -a -G GroupName UserName# 例如将test 追加到GroupAusermod -a -G GroupA test 修改新建文件的默认权限 在.bashrc 里添加 1umask 003 // 文件夹具体权限 则为 777 - 003 = 774 (rwxrwxr--) 文件默认权限为 666 - 003 = 663(rw-rw-r--) 1source ~/.bashrc
C++ 结构化设计
结构化程序设计自顶向下的设计 是自顶向下的分解 -> 找子问题 ->公共的问题->抽出来子问题 实现阶段自顶向上的实现,实现一个一个子问题 程序由三种基本结构组成,顺序-分支-循环 例子
clash在终端设置代理
前言github 提交代码总是失败,还是老老实实使用VPN吧。但是VPN打开了,git终端命令还是不行,原来是要进行终端代理设置。一起来看看吧! 开启代理前置条件:手动开打 clash 等VPN软件 12export http_proxy=http://127.0.0.1:7890export https_proxy=http://127.0.0.1:7890 对应的网址是在settings- static-Host; 对应port 为General-Prot clash Verge复制环境变量 去github 执行 12export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897 取消代理12unset http_proxyunset http_proxy git 里设置开启代理 alias 命令别名新建 .bashrc123456789101112131415161718cd ~vi .bashrc#...
leetcode 2594修车的最少时间
2594. 修车的最少时间 - 力扣(LeetCode) 思路能力值为 r 的机械工可以在 t= r * n2 分钟内修好 n 辆车。可以看到 n = 根号(t/r), t 对于car 的数量是单调增的,所以可以适用二分法来不断逼近car 的数量。 12345678910111213141516171819202122func repairCars(ranks []int, cars int) int64 { l , r := 1, ranks[0] * cars * cars var check = func(m int) bool { cnt := 0 for _, x := range ranks { cnt += int(math.Sqrt(float64(m / x))) } return cnt >= cars } for l < r { ...
设计模式-抽象工厂
抽象工厂模式结构多个工厂模式; 有抽象工厂(现代工厂,和古代工厂),具体工厂(现代工程和古代风格工厂实现),抽象产品(接口 ,椅子和桌子) 和具体产品(实现具体的桌子和椅子)
设计模式-工厂方法模式
网站链接:工厂方法设计模式 (refactoringguru.cn) 简介工厂方法模式 她是一种创建型设计模式,其在父类中提供一种船舰对象的方法,允许子类决定实例化对象的类型。 简单工厂‘简单工厂模式’,也就是说,到底要实例化谁,将来会不会增加实例化的对象,比如增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂简单工厂就是在需要的时候, 创建对应的类. 每个类都相互独立,互不影响, 如果增加代码,不会编译之前的类, 减少编译时间. 工厂方法模式结构不同的类实现相同的动作,例如运输等 产品 (Product) 将会对接口进行声明。 对于所有由创建者及其子类构建的对象, 这些接口都是通用的。 具体产品 (Concrete Products) 是产品接口的不同实现。 创建者 (Creator) 类声明返回产品对象的工厂方法。 该方法的返回对象类型必须与产品接口相匹配。 你可以将工厂方法声明为抽象方法, 强制要求每个子类以不同方式实现该方法。 或者, 你也可以在基础工厂方法中返回默认产品类型。 ...
leetcode 2511 最多可以摧毁的敌人城堡数目
2511. 最多可以摧毁的敌人城堡数目 - 力扣(LeetCode) 思路抽象出来就是求1和-1间最大连续0 的数量。 有两种情况,开始是1 结尾是-1,中间都是0;第二种情况开始是-1结尾是1,中间都是0;上边怎么保证终点和起点不一样呢? 1.当然可以分类讨论,代码会很复杂,判断很多,容易出错 使用 一个变量pre记录开始节点,变更当1或者-1 进来的时候,pre 更新为index,判断当前节点是否和pre 不相等,符合条件则更新res 12345678910111213141516171819202122232425262728293031323334353637383940func captureForts(forts []int) int { ans, pre := 0, -1 //pre 记录的是 1 或 -1 的位置 for i, fort := range forts { if fort == -1 || fort == 1 { if pre >= 0...