04、抽取BaseActivity
- // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
- // 注意该方法要再setContentView方法之前实现
- // SDKInitializer.initialize(getApplicationContext());
- setContentView(R.layout.activity_main);
- // 获取地图控件引用
- mMapView = (MapView) findViewById(R.id.bmapView);// MapView用于显示
- // 获取地图控制器
- baiduMap = mMapView.getMap();// BaiduMap地图控制器用于控制
- // 这个很明显就是一个MVC模式,你这个地图显示出来之后呢我想改变显示的形状.比如说我想让地图旋转或者说是让地图放大.
- // 就是通过这个控制器来实现.这个是一个标准的MVC模式了.
- // 1. 隐藏缩放按钮、比例尺
- // mMapView.showScaleControl(false);//显示比例控件 隐藏比例按钮
- // 默认是显示比例按钮的.Scale是规模,比例,刻度
- // mMapView.showZoomControls(false);//隐藏缩放按钮,默认是显示缩放按钮的.
- // 2. 获取获取最小(3)、最大缩放级别(20)
- float maxZoomLevel = baiduMap.getMaxZoomLevel();// 获取地图最大缩放级别 用本地/局部变量保存
- float minZoomLevel = baiduMap.getMinZoomLevel();// 获取地图最小缩放级别
- Log.i(TAG, "minZoomLevel = " + minZoomLevel + ", maxZoomLevel"
- + maxZoomLevel);
- // 3. 设置地图中心点为黑马
- // MapStatusUpdate mapStatusUpdate = new
- // HelloBaiduMapActivity();//MapStatusUpdate是没有构造方法的,所以你Alt+/ new不出来.
- MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory
- .newLatLng(hmPos);
- baiduMap.setMapStatus(mapStatusUpdate);// setMapStatus是baiduMap地图控制器的方法.把这个状态传给我这个baiduMap.那我立马就能给你跳到这个位置.
- // 4.设置地图缩放为15
- mapStatusUpdate = MapStatusUpdateFactory.zoomTo(15);// 不new一个经纬度的状态,是new一个缩放的状态.zoomTo是缩放一个绝对值.重复调用zoomTo()它还是缩放到那个数值.
- baiduMap.setMapStatus(mapStatusUpdate);
抽取HelloBaiduMapActivity.java的这一段代码到BaseActivity.java.
- // 常量要放在最前面.
- /** 黑马坐标(北京市海淀区东北旺南路45号) */
- protected LatLng hmPos = new LatLng(40.050513, 116.30361);// LatLng的一个常量表示.
- /** 传智坐标 */
- protected LatLng czPos = new LatLng(40.065817, 116.349902);
- /** 天安门坐标 */
- protected LatLng tamPos = new LatLng(39.915112, 116.403963);
- private MapView mMapView;
- private BaiduMap baiduMap;
这一段也是,变量名也一起拿过来.
这几个生命周期方法肯定也是需要要抽取的,如果说你写了其他界面用了百度地图肯定也要调这几个生命周期方法.所以把这几个生命周期方法也放到父类来.只要继承父类子类就不用写这些代码了.
- @Override
- protected void onDestroy() {
- super.onDestroy();
- // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
- mMapView.onDestroy();
- // 解除注册接收者
- //unregisterReceiver(receiver);
- }
- @Override
- protected void onResume() {
- super.onResume();
- // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
- mMapView.onResume();
- }
- @Override
- protected void onPause() {
- super.onPause();
- // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
- mMapView.onPause();
- }
6.获取地图Ui控制器:隐藏指南针 第六步写到base里面去
- // 6.获取地图Ui控制器:隐藏指南针 第六步写到base里面去
- //UiSettings uiSettings = baiduMap.getUiSettings();
- //uiSettings.setCompassEnabled(false); // 不显示指南针
API怎么去调用的不需要记住,但是java的一些思想还是需要记住的.例如这里的java基础的技巧:这里加final是为了不让子类覆盖,原因是为了预防这里的一些类还没初始化的时候就被子类调用.
- package com.itheima.baidumap74;
- import com.baidu.mapapi.map.BaiduMap;
- import com.baidu.mapapi.map.MapStatusUpdate;
- import com.baidu.mapapi.map.MapStatusUpdateFactory;
- import com.baidu.mapapi.map.MapView;
- import com.baidu.mapapi.map.UiSettings;
- import com.baidu.mapapi.model.LatLng;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Gravity;
- import android.widget.Toast;
- public abstract class BaseActivity extends Activity{
- // 常量要放在最前面.
- private static final String TAG = "BaseActivity";//TAG一般以它类名.
- /** 黑马坐标(北京市海淀区东北旺南路45号) */
- protected LatLng hmPos = new LatLng(40.050513, 116.30361);// LatLng的一个常量表示.
- /** 传智坐标 */
- protected LatLng czPos = new LatLng(40.065817, 116.349902);
- /** 天安门坐标 */
- protected LatLng tamPos = new LatLng(39.915112, 116.403963);
- //private MapView mMapView;//
- protected MapView mMapView;//改一下修饰符,让子类HelloBaiduMapActivity.java可以访问.
- //private BaiduMap baiduMap;
- protected BaiduMap baiduMap;//改一下修饰符,让子类HelloBaiduMapActivity.java可以访问.
- // 这里加final是为了不让子类覆盖,原因是为了预防这里的一些类还没初始化的时候就被子类调用.
- @Override
- //protected void onCreate(Bundle savedInstanceState) {
- protected final void onCreate(Bundle savedInstanceState) {//加final,不让子类HelloBaiduMapActivity.java覆盖onCreate方法.
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
- // 注意该方法要再setContentView方法之前实现
- // SDKInitializer.initialize(getApplicationContext());
- setContentView(R.layout.activity_main);
- // 获取地图控件引用
- mMapView = (MapView) findViewById(R.id.bmapView);// MapView用于显示
- // 获取地图控制器
- baiduMap = mMapView.getMap();// BaiduMap地图控制器用于控制
- // 这个很明显就是一个MVC模式,你这个地图显示出来之后呢我想改变显示的形状.比如说我想让地图旋转或者说是让地图放大.
- // 就是通过这个控制器来实现.这个是一个标准的MVC模式了.
- // 1. 隐藏缩放按钮、比例尺
- // mMapView.showScaleControl(false);//显示比例控件 隐藏比例按钮
- // 默认是显示比例按钮的.Scale是规模,比例,刻度
- // mMapView.showZoomControls(false);//隐藏缩放按钮,默认是显示缩放按钮的.
- // 2. 获取获取最小(3)、最大缩放级别(20)
- float maxZoomLevel = baiduMap.getMaxZoomLevel();// 获取地图最大缩放级别 用本地/局部变量保存
- float minZoomLevel = baiduMap.getMinZoomLevel();// 获取地图最小缩放级别
- Log.i(TAG, "minZoomLevel = " + minZoomLevel + ", maxZoomLevel"
- + maxZoomLevel);
- // 3. 设置地图中心点为黑马
- // MapStatusUpdate mapStatusUpdate = new
- // HelloBaiduMapActivity();//MapStatusUpdate是没有构造方法的,所以你Alt+/ new不出来.
- MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory
- .newLatLng(hmPos);
- baiduMap.setMapStatus(mapStatusUpdate);// setMapStatus是baiduMap地图控制器的方法.把这个状态传给我这个baiduMap.那我立马就能给你跳到这个位置.
- // 4.设置地图缩放为15
- mapStatusUpdate = MapStatusUpdateFactory.zoomTo(15);// 不new一个经纬度的状态,是new一个缩放的状态.zoomTo是缩放一个绝对值.重复调用zoomTo()它还是缩放到那个数值.
- baiduMap.setMapStatus(mapStatusUpdate);
- // 6.获取地图Ui控制器:隐藏指南针 第六步写到base里面去
- //UiSettings uiSettings = baiduMap.getUiSettings();
- //uiSettings.setCompassEnabled(false); // 不显示指南针
- init();
- }
- /** 这个方法让子类实现 */
- public abstract void init();
- /**
- * 在屏幕中央显示一个Toast
- * @param text
- */
- public void showToast(CharSequence text){//字符序列.字符序列这个接口
- //CharSequence其实是我们String的父类.String是实现了这个接口的.
- //所以说我们最好面向接口来编程.这样子这个方法更加通用.
- Toast toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);//局部变量toast
- toast.setGravity(Gravity.CENTER, 0, 0);
- toast.show();
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
- mMapView.onDestroy();
- // 解除注册接收者
- //unregisterReceiver(receiver);
- }
- @Override
- protected void onResume() {
- super.onResume();
- // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
- mMapView.onResume();
- }
- @Override
- protected void onPause() {
- super.onPause();
- // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
- mMapView.onPause();
- }
- }
- package com.itheima.baidumap74;
- //Ctrl+Shift+O清除多余的包名.
- //import com.baidu.mapapi.SDKInitializer;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.KeyEvent;
- import com.baidu.mapapi.SDKInitializer;
- //import com.baidu.mapapi.map.BaiduMap;
- import com.baidu.mapapi.map.MapStatus;
- import com.baidu.mapapi.map.MapStatusUpdate;
- import com.baidu.mapapi.map.MapStatusUpdateFactory;
- //import com.baidu.mapapi.map.MapView;
- //import com.baidu.mapapi.model.LatLng;
- public class HelloBaiduMapActivity extends BaseActivity {
- //初始化方法一般放到最前面来.
- @Override
- public void init() {
- // TODO Auto-generated method stub
- registerSDKCheckReceiver();
- baiduMap.addHeatMap(null);
- }
- // 常量要放在最前面.
- private static final String TAG = "HelloBaiduMapActivity";// 这个常量我们一般用它的类名就行了.
- /** 黑马坐标(北京市海淀区东北旺南路45号) */
- //protected LatLng hmPos = new LatLng(40.050513, 116.30361);// LatLng的一个常量表示.
- /** 传智坐标 */
- //protected LatLng czPos = new LatLng(40.065817, 116.349902);
- /** 天安门坐标 */
- //protected LatLng tamPos = new LatLng(39.915112, 116.403963);
- //private MapView mMapView;
- private BroadcastReceiver receiver;// 把receiver由局部/本地变量变成成员变量
- //private BaiduMap baiduMap;
- /*@Override
- protected void onCreate(Bundle savedInstanceState) {//父类BaseActivity.java不给覆盖onCreate()那HelloBaiduMapActivity的初始化代码写哪里去呢?
- baiduMap.addHeatMap(null);//baiduMap这时候还没有初始化,所以会出现空指针异常.为了预防baiduMap在初始化之前调用,
- super.onCreate(savedInstanceState);//baiduMap是在父类的onCreate方法里面初始化的.
- registerSDKCheckReceiver();
- /*
- * // 在使用SDK各组件之前初始化context信息,传入ApplicationContext //
- * 注意该方法要再setContentView方法之前实现 //
- * SDKInitializer.initialize(getApplicationContext());
- * setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView =
- * (MapView) findViewById(R.id.bmapView);// MapView用于显示 // 获取地图控制器
- * baiduMap = mMapView.getMap();// BaiduMap地图控制器用于控制 //
- * 这个很明显就是一个MVC模式,你这个地图显示出来之后呢我想改变显示的形状.比如说我想让地图旋转或者说是让地图放大. //
- * 就是通过这个控制器来实现.这个是一个标准的MVC模式了. // 1. 隐藏缩放按钮、比例尺 //
- * mMapView.showScaleControl(false);//显示比例控件 隐藏比例按钮 //
- * 默认是显示比例按钮的.Scale是规模,比例,刻度 //
- * mMapView.showZoomControls(false);//隐藏缩放按钮,默认是显示缩放按钮的.
- *
- * // 2. 获取获取最小(3)、最大缩放级别(20) float maxZoomLevel =
- * baiduMap.getMaxZoomLevel();// 获取地图最大缩放级别 用本地/局部变量保存 float
- * minZoomLevel = baiduMap.getMinZoomLevel();// 获取地图最小缩放级别 Log.i(TAG,
- * "minZoomLevel = " + minZoomLevel + ", maxZoomLevel" + maxZoomLevel);
- *
- * // 3. 设置地图中心点为黑马 // MapStatusUpdate mapStatusUpdate = new //
- * HelloBaiduMapActivity();//MapStatusUpdate是没有构造方法的,所以你Alt+/ new不出来.
- * MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory
- * .newLatLng(hmPos); baiduMap.setMapStatus(mapStatusUpdate);//
- * setMapStatus是baiduMap地图控制器的方法.把这个状态传给我这个baiduMap.那我立马就能给你跳到这个位置. //
- * 4.设置地图缩放为15 mapStatusUpdate = MapStatusUpdateFactory.zoomTo(15);//
- * 不new一个经纬度的状态,是new一个缩放的状态.zoomTo是缩放一个绝对值.重复调用zoomTo()它还是缩放到那个数值.
- * baiduMap.setMapStatus(mapStatusUpdate);
- }*/
- // 6.获取地图Ui控制器:隐藏指南针
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- MapStatusUpdate mapStatusUpdate = null;// 在最前面声明一个状态,然后默认值给它一个null
- switch (keyCode) {
- // 5.更新地图状态
- case KeyEvent.KEYCODE_1:
- // 1)缩小
- mapStatusUpdate = MapStatusUpdateFactory.zoomOut();
- break;
- case KeyEvent.KEYCODE_2:
- // 2)放大
- mapStatusUpdate = MapStatusUpdateFactory.zoomIn();
- break;
- case KeyEvent.KEYCODE_3:
- // 3)旋转(0 ~ 360),每次在原来的基础上再旋转30度
- MapStatus currentMapStatus = baiduMap.getMapStatus(); // 获取地图当前的状态.
- float rotate = currentMapStatus.rotate + 30;// 拿出它原来的旋转角度.
- Log.i(TAG, "rotate = " + rotate);// 打印旋转角度
- MapStatus mapStatus = new MapStatus.Builder().rotate(rotate)
- .build();// MapStatus不能直接new它因为它没有构造方法,你要new的是它MapStatus.Builder的那个类.最后再
- // 调用build()就能返回地图的一个状态.但是返回之前需要设置一下旋转角度.rotate()设置旋转角度.
- mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);
- break;
- case KeyEvent.KEYCODE_4:
- // 4)俯仰(0 ~ -45),每次在原来的基础上再俯仰-5度
- currentMapStatus = baiduMap.getMapStatus();// 获取地图当前的状态.
- float overlook = currentMapStatus.overlook - 5;// 为什么要俯仰负5度?后面演示的时候再说.因为我们拿出来是45,再减5就变成50了.所以是这个地方误导了一下,误导了.其实俯仰角度最大是负45.为什么要减5?
- // 因为它这个只支持负数,你给它一个正数它是看不到俯仰效果的.
- Log.i(TAG, "overlook = " + overlook);// 打印俯仰角度
- mapStatus = new MapStatus.Builder().overlook(overlook).build();// MapStatus没有构造方法你只能重新去new它的Builder().然后调一下build()方法它就创建出来这个状态对象.
- // build()之前要进行一个俯仰.overlook()设置俯仰角度.
- mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);
- break;
- case KeyEvent.KEYCODE_5:
- // 5)移动
- mapStatusUpdate = MapStatusUpdateFactory.newLatLng(czPos);// 移动,它是没有move这种方法的.移动的实现是你给它一个位置(经纬度)就行了.
- // 移动这个状态呢它是瞬间改变你看不到效果.
- baiduMap.animateMapStatus(mapStatusUpdate, 2000);// animateMapStatus是能看到过程的,以动画的形式改变这个状态.2000ms,让它两秒钟完成.
- return super.onKeyDown(keyCode, event);// 一return这个语句就完了它就不会走下面.
- }
- baiduMap.setMapStatus(mapStatusUpdate);// 这是瞬间改变看不到过程.
- return super.onKeyDown(keyCode, event);
- }
- @SuppressWarnings("unused")
- private void registerSDKCheckReceiver() {
- // 如果你不注册这个广播假设你这个key错了你也不知道.你可能会认为哪一步错了然后找很久找不到原因.所以我们最好去注册一下这样的一个广播.
- receiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- // 如果说接收到广播就会跑到这里面来.
- // 这里面由于我们是有两个action,我们要进行一个判断,先把它们取出来.
- String action = intent.getAction();
- if (SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR
- .equals(action)) {// 首先是这个网络错误,.
- // 显示吐司这种代码很常用,如果说我们有一个base的话呢以后我们显示吐司会非常方便.
- // 这个base类大家应该不陌生.
- // 当我们接收到这一个网络处理故障的广播的时候呢,
- showToast("网络错误");
- } else if (SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR
- .equals(action)) {
- showToast("key验证失败");
- }
- }
- // 因为代码不会很多我就直接new它的内部类了.
- };
- IntentFilter filter = new IntentFilter();// 本地变量,局部变量.IntentFilter是比较关键,也就是说你要拦截哪些广播就通过它来指定.
- // 监听网络错误
- filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);// 广播会以action的方式发出来.这个action从哪里来呢?
- // 我们最主要的还不是监听网络错误,我们需要的是权限检查的错误
- // 监听百度地图sdk 的key是否正确.
- filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
- // 只要这两个广播一发出来,那你这个接收者呢就能接收到
- // 注册接收者
- registerReceiver(receiver, filter);// 接收一个广播接收者BroadcastReceiver,IntentFilter.
- }
- // Ctrl+I格式化
- // 这是百度地图规定的,它mMapView也有生命周期方法,你必须在Activity相应的生命周期方法里面呢去调mMapView对应的生命周期方法.
- // 这个就没什么好记的了,死记硬背就行了.照着调用.
- @Override
- protected void onDestroy() {
- super.onDestroy();
- // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
- //mMapView.onDestroy();
- // 解除注册接收者
- unregisterReceiver(receiver);//解除注册还是放回来.
- }
- /*
- @Override
- protected void onResume() {
- super.onResume();
- // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
- mMapView.onResume();
- }
- @Override
- protected void onPause() {
- super.onPause();
- // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
- mMapView.onPause();
- }
- */
- }
04、抽取BaseActivity的更多相关文章
- 2.抽取代码(BaseActivity)
知识点 俩种退出程序的方法 复制集合 同步的用法 字符数组 工厂模式,生产fatgment,解决了碎片重复创建的问题 全局上下文 actionbar用法 fargmentadapter,当viewpa ...
- BaseActivity的抽取
Activity有些公共部分,比如setContentView.Activity管理.初始化操作.联网操作.Activity跳转.关闭当前Activity.保存用户登录信息.读取用户登录信息等. 我们 ...
- 新闻网页通用抽取器GNEv0.04版更新,支持提取正文图片与源代码
GeneralNewsExtractor以下简称GNE是一个新闻网页通用抽取器,能够在不指定任何抽取规则的情况下,把新闻网站的正文提取出来. 我们来看一下它的基本使用方法. 安装 GNE 使用 pip ...
- Moses在Ubuntu14.04平台的安装过程
平台环境:在windows 7中建立VMware虚拟机,操作系统为Ubuntu_14.04_amd_64 1.安装GIZA++ 安装步骤如下: wget http://giza-pp.googleco ...
- c# 中模拟一个模式匹配及匹配值抽取
摘一段模式的说明, F#的: msdn是这么描述它的:“模式”是用于转换输入数据的规则.模式将在整个 F# 语言中使用,采用多种方式将数据与一个或多个逻辑结构进行比较.将数据分解为各个构成部分,或从数 ...
- 布局共享(列如所有activity拥有相同的布局部分,比如actionbar,在BaseActivity中写入布局)
有时候界面上会用到统一的布局,比如toolbar,你可能会想到在用到的地方都去加上toobar这样对于程序的开发与维护来说都显得特别麻烦,我们可以将他写在父类中. 首先创建一个BaseActivity ...
- ubuntu12.04下同步cm10源码(个人记录,当作笔记)
环境:AMD N850,4G,ubuntu12.04 x64, 老规矩,先是各种依赖: sudo apt-get install git-core gnupg flex bison python ra ...
- [开源]开放域实体抽取泛用工具 NetCore2.1
开放域实体抽取泛用工具 https://github.com/magicdict/FDDC 更新时间 2018年7月16日 By 带着兔子去旅行 开发这个工具的起源是天池大数据竞赛,FDDC2018金 ...
- C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】
C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...
随机推荐
- cgroup代码浅析(1)
前置:这里使用的linux版本是4.8,x86体系. cgroup_init_early(); 聊这个函数就需要先了解cgroup. cgroup概念 这个函数就是初始化cgroup所需要的参数的.c ...
- c/c++编程排坑(1)-- 数据类型的“安静”转换
这里主要介绍ANSI C的特性:当执行算术运算时,操作数的类型如果不同,就会发生转换.数据类型一般朝着精度更高.长度更长的方向转换,整型数如果转换为signed不会丢失信息,就转换为signed,否则 ...
- sscanf 与 sscanf_s
sscanf 与 sscanf_s 之间的Details sscanf sscanf函数想必大家用的很熟练吧 sscanf函数原型: sscanf(const char* src,format,... ...
- [luogu3067 USACO12OPEN] 平衡的奶牛群
传送门 Solution 折半搜索模板题 考虑枚举每个点在左集合和右集合或者不在集合中,然后排序合并即可 Code //By Menteur_Hxy #include <cmath> #i ...
- python学习,使用requests库来模拟登录github,post请求。
这次我们要模拟登录的页面是 https://github.com/login 首先我们先尝试着登陆一遍分析一下请求, 打开开发者工具下的network选项, 可以很清楚的看到这个会话session,而 ...
- odoo domain详解
参考的以下文档: luohuayong:Odoo domain写法及运用 baimo:odoo domain表达式 1.domain 表达式规则 最简单的格式:[('字段名','操作符',值)] 例: ...
- centos7安装:license information(license not accepted)
安装centos7的时候明明已经选择了默认的许可证信息,不知道哪里出错了,安装到最后,就会显示license information(license not accepted)的信息.解决方法如下: ...
- Ubuntu挂载硬盘,修改卷标
Ubuntu挂载硬盘,修改卷标转载2016-03-06 17:03:21标签:ubuntu Ubuntu不像windows,硬盘插入电脑不会自动读取硬盘 数据,需要把硬盘挂载到文件夹上,然后才能访问硬 ...
- 洛谷 2824 [HEOI2016/TJOI2016]排序
[题意概述] 对一个1到n的排列做m次区间排序,最后询问位置q上面的数. [题解] 区间排序的效率是nlogn,所以暴力做的话效率是mnlogn,显然达不到要求. 我们考虑二分答案.如果某个位置的数比 ...
- 日期工具类 DateTools
为了跟其他日期工具类进行区分起名字DateTools public class DateTools { /** The DAT e_ forma t1. */ public static String ...