2021-07-29

一、百度地图使用步骤:

1.申请百度账号
2.认证成为开发者
3.申请秘钥 ak
4.使用相关服务

 <style>
        html {
            height: 100%;
        }
        
        body {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        
        #bdMap {
            height: 100%;
        }
    </style>
    <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=eKy3Ii454GREGkxUQhXfXjGGQl5aHv5N"></script>
</head>

<body>
    <div id="bdMap">
    </div>
    <script>
        var map = new BMapGL.Map("bdMap");
        var point = new BMapGL.Point(113.550572, 34.808636);

        var myIcon = new BMapGL.Icon("./img/dog.png", new BMapGL.Size(35, 35));
        var marker = new BMapGL.Marker(point, {
            icon: myIcon
        }); // 创建标注   
        map.centerAndZoom(point, 19);
        map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 
        map.addOverlay(marker); // 将标注添加到地图中
    </script>

二、模块化

2.1 模块化解决的问题变量名的冲突:

①不同文件的变量如果重名,后面的会覆盖前面的。
② 文件依赖顺序:需要保证文件的加载顺序,但是只能通过源码分析才能直到谁在前谁在后。

2.2模块化优点和规范:

一个模块就是实现特定功能的文件。有了模块化,我们可以更加方便的使用别人的和自己的代码,想要什么功能,就加载什么模块。
优点:
1.提高代码的复用性。
2.提高代码的可维护性。
3.按需加载
模块化的规范:
1.使用什么语法引用模块
2.使用什么语法暴露成员。

三、ES6模块化

3.1 export 导出:

在模块化中,一个模块就是一个文件,在该文件中定义的变量,函数,对象在外部是无法获取的。当外部可以获取模块中的内 容,就必须使 用export 来对其进行暴露(导出)。
导出格式: export let 变量名 = 值;
**导出多个成员(**变量,函数,对象)
export {
成员1,
成员2…
}
默认导出
export default {

    }

3.2import 导入:

**导入:**import {变量名} from “导入模块的路径” (这个变量接受到的就是一个对象,就是导出这个对象。)

导入多个成员: import {变量1,变量2…} from “导入模块的路径”

【注意】 导出和导入的变量名必须保持一直,如果想要改名,可以用as关键字。

//a.js文件
let age = 20;
let name = "小红";
let fn = function () {
  return `我是${name},今年${age}`;
}
export default {
  age,
  name,
  fn
}

//b.js文件
export var a = 20;

//index.js文件import obj from "./a.js";
import {a as xw} from "./b.js";
console.log(obj);
// console.log(age);
// console.log(name);
// console.log(fn());

四、node

js:
ECMAscript语法
BOM
DOM
BOM和DOM是浏览器内置的API

浏览器可以运行js代码的原因
  浏览器中有js解析引擎。

不同的浏览器,拥有不同的引擎。
chrome V8
IE  charka
safari:jscode

V8是所有引擎中性能最好的。

node是什么?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。

运行环境:指代码可以正常运行所需的必要环境。

  前端开发:js在浏览器中运行。
  后端开发:js在node中运行。

node可以做什么?、
  基于Express框架,可以快速构建web应用。(学习重点)
  基于Eletron框架,可以快速构建桌面应用。
  可以读写数据库  (学习重点)
  可以操作系统文件 (学习重点)
  爬虫
  命令行工具

node
  ECMAscript语法 √
  node内置api模块
  第三方api模块(Express,MySQL)

4.1下载安装node

  中文网:http://nodejs.cn/

  node官网会提供两个版本
    最新版本: 尝鲜版
    LTS:long time supper(长时间支持) 稳定版

  企业开发中推荐使用 稳定版、

  校验node是否安装成功

    在cmd命令行(终端)中输入 node -v 回车
    只要输出版本号,就说明安装成功了。


  版本号:
    三个数字组成  14.17.3

    第一个数字:大的更新
    第二个数字:功能更新
    第三个数字:bug修复版本

    只要前面的版本号更新了,后面的版本号就归零。

  运行js文件
    node 要执行的js文件的路径

4.2终端常用的快捷键

    cd 目录名 
    cd ../ 跳出当前目录
    tab 补全目录
    cls 清屏
    ↑键 上一次输入的命令
    ↓键 下一次输入的命令
    esc 清空当前输入的命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个可能的Java实现: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class RentPlanGenerator { private static final double RENT_INCREASE_RATE = 0.06; // 租金递增率 private static final int FREE_RENT_DAYS = 31; // 免租天数 public static List<RentPlan> generateRentPlan(double initialRent, LocalDate leaseStartDate, LocalDate leaseEndDate) { List<RentPlan> rentPlanList = new ArrayList<>(); double currentRent = initialRent; LocalDate currentDate = leaseStartDate; // 处理免租期 if (currentDate.isBefore(leaseStartDate.plusDays(FREE_RENT_DAYS))) { currentDate = leaseStartDate.plusDays(FREE_RENT_DAYS); } while (currentDate.isBefore(leaseEndDate)) { LocalDate nextIncreaseDate = currentDate.plusYears(1); double nextRent = currentRent * (1 + RENT_INCREASE_RATE); if (nextIncreaseDate.isBefore(leaseStartDate.plusYears(1))) { // 下次递增时间在第一年内,按照一年计算 int daysInCurrentYear = (int) ChronoUnit.DAYS.between(currentDate, nextIncreaseDate); rentPlanList.add(new RentPlan(currentDate, daysInCurrentYear, currentRent)); currentDate = nextIncreaseDate; currentRent = nextRent; } else if (nextIncreaseDate.isBefore(leaseEndDate)) { // 下次递增时间在第一年外,按照下次递增时间与租赁结束时间的间隔计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } else { // 下次递增时间在租赁结束时间之后,按照租赁结束时间计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } } return rentPlanList; } public static void main(String[] args) { LocalDate leaseStartDate = LocalDate.of(2021, 3, 1); LocalDate leaseEndDate = LocalDate.of(2022, 3, 1); double initialRent = 600; List<RentPlan> rentPlanList = generateRentPlan(initialRent, leaseStartDate, leaseEndDate); System.out.printf("%-12s%-12s%-12s%n", "时间", "天数", "租金"); for (RentPlan rentPlan : rentPlanList) { System.out.printf("%-12s%-12d%-12.2f%n", rentPlan.getStartDate(), rentPlan.getDays(), rentPlan.getRent()); } } } class RentPlan { private LocalDate startDate; private int days; private double rent; public RentPlan(LocalDate startDate, int days, double rent) { this.startDate = startDate; this.days = days; this.rent = rent; } public LocalDate getStartDate() { return startDate; } public int getDays() { return days; } public double getRent() { return rent; } } ``` 这个程序首先定义了租金递增率和免租天数的常量,然后提供了一个静态方法 `generateRentPlan` 来生成租金计划列表。该方法接受三个参数:初始月租金、租赁开始时间和租赁结束时间。 具体实现时,我们使用循环来逐月生成租金计划。在每次循环中,我们首先计算下次递增租金的时间和金额。然后根据下次递增时间与租赁开始时间的间隔,决定本次循环处理的天数和租金金额。最后将这些信息保存到一个 `RentPlan` 对象中,并添加到租金计划列表中。 在主函数中,我们使用 `generateRentPlan` 方法生成租金计划列表,并以表格形式输出。输出结果如下: ``` 时间 天数 租金 2021-04-01 30 600.00 2021-05-01 31 636.00 2021-06-01 30 674.16 2021-07-01 31 713.57 2021-08-01 31 754.29 2021-09-01 30 796.39 2021-10-01 31 840.94 2021-11-01 30 887.02 2021-12-01 31 934.72 2022-01-01 31 984.12 2022-02-01 28 1035.30 ``` 可以看到,程序正确地根据递增周期和递增率生成了每个月的租金计划,并且考虑了免租期的影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值