Augustu

Augustu 查看完整档案

青岛编辑  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑

最幸福的事情,就是每天与你分享平凡生活中的点点滴滴,直到终老。
勇者不畏艰难,仁者不背信约,智者不失时机,达者不争名利。

个人动态

Augustu 发布了文章 · 7月16日

ArcGIS API for JavaScript - 将图片设为map的底图

1,问题引出

     我们在开发web应用时,需要一些地图作为我们的底图。ArcGIS API给我们提供了样式众多的basemap,我们还可以使用ArcgisOnline提供的一些地图服务以及自己发布的一些地图服务。然而有时候我们不需要在这个底图服务上实现一些操作功能,只是用其作为展示,因此将他发布为地图服务显得没有必要。

2,如何解决

        ArcGIS API:esri/layers/MapImageLayeresri/layers/MapImage

MapImageLayer类用于将地理配准图像添加到地图中。地图将地理参考图像放置在指定的地理范围内。图像的范围应该在地图的范围内。图像也应与地图位于同一坐标系中。

MapImage类用于设置图片的一些属性。支持的格式有:gif | jpg | png | bmp

3,实现过程

        以夜晚灯光地图作为说明

        1,获取图片:

             如果底图需要准确的地理位置,则图片不能随便乱来,可以在Arcmap中将其进行地理配准。

            本次我的图片如下:范围:全球;坐标系:WGS_84(4326)

2018082010011839.png

          2,MapImage类的实现

                 由于我的底图是全球范围,所以范围是   x:[-180,180]      y:[-90,90],你要根据你图片实地范围来写。

                  href是你图片的地址

var image = new MapImage({
    'extent': {   
        'xmin':-180, 
        'ymin': -90, 
        'xmax': 180, 
        'ymax': 90, 
        'spatialReference': { 'wkid': 4326 }
    },
    'href': "img/灯光tif.png"
});

           3,MapImageLayer类的实现

var mapImageLayer = new MapImageLayer();
mapImageLayer.addImage(image);

4,全部代码

<!DOCTYPE html>
<html lang="en" >
<head>
    <meta charset="UTF-8">
    <title>1</title>
    <link rel="stylesheet" href="https://js.arcgis.com/3.25/esri/css/esri.css">
    <link rel="stylesheet" href="https://js.arcgis.com/3.25/dijit/themes/tundra/tundra.css">
    <script data-original="https://js.arcgis.com/3.25/"></script>
    <style>
        html, body, #MapDiv {
            width: 100%;
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
<body>
    <script>
        require([
            "esri/map",
            "esri/layers/MapImage",
            "esri/layers/MapImageLayer",
            "dojo/domReady!"
        ], function(Map,MapImage,MapImageLayer) {            
                var image = new MapImage({
                    'extent': {   
                        'xmin':-180, 
                        'ymin': -90, 
                        'xmax': 180, 
                        'ymax': 90, 
                        'spatialReference': { 'wkid': 4326 }
                    },
                    'href': "img/灯光tif.png"
                });
            
                var mapImageLayer = new MapImageLayer();
                mapImageLayer.addImage(image);
                var map = new Map("MapDiv");
                map.addLayer(mapImageLayer);          
        });
    </script>
    
    <div id="MapDiv"></div>
    
</body>
</html>
查看原文

赞 0 收藏 0 评论 0

Augustu 发布了文章 · 7月16日

SpringBoot+MongoDB 实现图片存取

最近要实现一个发布博客功能,涉及到博文中图片的保存与访问了,在博文中图片对应:![图片描述](图片url)。由用户上传图片,我们将其保存在 mongodb 数据库中,返回图片的 url 即可显示图片了。
在这里把基本实现步骤整理了一下记录下来

添加 MongoDB 依赖并配置

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring:
    data:
        mongodb:
          uri: mongodb://192.168.56.101:27017/sysblog

建立图片实体

import org.bson.types.Binary;

@Document
public class UploadFile {

    @Id
    private String id;
    private String name; // 文件名
    private Date createdTime; // 上传时间
    private Binary content; // 文件内容
    private String contentType; // 文件类型
    private long size; // 文件大小
 
    // getter/setter
    
}
  • 此处 id 的类型要设置为 String ,MongoDB 会自动分配 id ,设置为数值型会报错。
  • BSON 是一个二进制序列化格式,在MongoDB里面被用来做文档存储和远程程序调用,我们使用 org.bson.types.Binary 类来封装文件内容。new Binary(byte[] byte)

上传图片

此处仅演示功能,便不分层等操作。

上传图片后,保存至 mongodb 数据库,并返回图片的访问 url
@Autowired
private MongoTemplate mongoTemplate;

@PostMapping("/file/uploadImage")
@ResponseBody
public String uploadImage(@RequestParam(value = "image") MultipartFile file){
    if(file.isEmpty())
            return JSONResult.build(200, "请选择一张图片", null);

    // 返回的 JSON 对象,这种类可自己封装
    JSONResult jsonResult = null;
    String fileName = file.getOriginalFilename();
    try {
        UploadFile uploadFile = new UploadFile();
        uploadFile.setName(fileName);
        uploadFile.setCreatedTime(new Date());
        uploadFile.setContent(new Binary(file.getBytes()));
        uploadFile.setContentType(file.getContentType());
        uploadFile.setSize(file.getSize());

        UploadFile savedFile = mongoTemplate.save(uploadFile);
        String url = "http://localhost:8080/file/image/"+ savedFile.getId();

        jsonResult =  JSONResult.build(200, "图片上传成功", url);
    } catch (IOException e) {
        e.printStackTrace();
        jsonResult =  JSONResult.build(500, "图片上传失败", null);
    }
    return jsonResult;

}
  • MongoTemplate:操作 MongoDB 的类,例如增删改查等。

    你也可以创建一个 repository 层接口继承 MongoRepository,类似于 JPA 的操作。

  • JSONResult:自己封装的返回 JSON 数据的工具类:

    JSONResult(状态码, 信息, 数据);

  • String url:我们获取保存到数据库中的图片 id ,封装成访问图片的地址,其实也是一个请求,下面我们实现这个请求。

获取图片

根据图片 id 获取图片
import org.springframework.http.MediaType;

@GetMapping(value = "/file/image/{id}", produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE})
@ResponseBody
public byte[] image(@PathVariable String id){
    byte[] data = null;
    UploadFile file = mongoTemplate.findImageById(id, UploadFile.class);
    if(file != null){
        data = file.getContent().getData();
    }
    return data;
}
  • produces:表示返回给前端的类型,比如文本、GIF、PDF 等等,这里我们当然返回图片了。

结果

在 markdown 编辑器中插入图片,简直完美:
20190425163901623.png

查看原文

赞 0 收藏 0 评论 0

Augustu 赞了文章 · 2019-03-02

JAVA Lambda表达式

在JAVA中,“Lambda 表达式”(Lambda expression)是一个抽象方法的实现。这个抽象方法必须是在接口中声明的,而且实现类只需要实现这一个抽象方法,我们称这种接口为函数式接口。Lambda表达式就是函数式接口的实现,来完成对数据的处理。

基本函数的格式

JAVA函数通常是我们类中定义的行为,格式如下:

修饰符 返回类型 函数名(参数列表){
    语句块
    return 返回值;
}
  • 修饰符:函数的可见性,决定函数的使用范围
  • 返回类型:函数的输出信息,与return配合使用
  • 函数名:函数标识
  • 参数列表:函数的输入信息
  • 语句块:函数执行的操作

这就是函数的基本格式。
代码中函数名,返回类型是一定要有的,其他的可有可无。
所以代码中最简单的函数定义格式如下:

返回类型 函数名();

Lambda表达式格式

我们说Lambda表达式是一个匿名函数,那我们来看一下Lambda表达式的格式。

(参数列表) -> {语句块}
  • 参数列表:函数的输入信息
  • ->: Lambda表达式关键符(也可以理解成关键字)
  • 语句块:函数执行的操作

“->”是必须有的,我们来看下最简单的Lambda表达式结构:

() -> {}

Lambda表达式是一个表达式,程序中被作为一个值来使用。JAVA语言是强类型面向对象的语言,所以必须提供一种数据类型作为Lambda表达式的返回值类型、符合JAVA中函数格式的定义、符合面向对象规则,所以最终Lambda表达式要有一个映射成JAVA对象的过程。

函数式接口

函数式接口是用来完成Lambda表达式映射成JAVA对象的一种接口,确切的说把接口中仅存的一个抽象方法和Lambda表达式绑定并完成对象的实例化。

那么接口是如何与Lambda表达式建立类型关系的?

接口的抽象方法。下面举例说明。

定一个函数式接口

/**
 * @author Stephen Yue
 */
public interface Nothing {
    void doNothing();
}

我们在接口里定义了一个没有参数、返回值的抽象方法。

接口我们定义好了,需要我们定义接口的实现方式。我们选取Lambda表达式来完成这个实现。

// 指定接口中方法的实现过程并创建对象
Nothing nothing = () -> {};
nothing.doNothing();

给Nothing接口中doNothing方法指定了一个空实现的Lambda表达式。即没有参数、没有返回值、什么都不做的一个空实现。所以执行之后没有任何结果。我们改一下实现方式。

Nothing nothing = () -> {
        System.out.println("hello Lambda!");
    };
nothing.doNothing();

新的Lambda表达式实现同样符合接口中抽象方法定义的要求,不过程序执行完,会在控制台输出:hello Lambda!

总结

Lambda表达式的出现,提供了新的接口实现方式。接口中抽象方法名字是Lambda表达式的标识符,接口中参数类型对应Lambda表达式的参数类型,接口中返回类型对应Lambda表达式返回类型,Lambda表达式的语句块来完成抽象方法的逻辑实现。

Lambda表达式的优点:

  1. 简码
  2. 面向函数式编程(也可以理解面向接口编程)
  3. 闭包
查看原文

赞 7 收藏 11 评论 1

Augustu 关注了标签 · 2018-12-02

html5

HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

关注 88035

Augustu 关注了标签 · 2018-12-02

spring

Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。

关注 25537

Augustu 关注了标签 · 2018-12-02

vue.js

Reactive Components for Modern Web Interfaces.

Vue.js 是一个用于创建 web 交互界面的。其特点是

  • 简洁 HTML 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单。
  • 数据驱动 自动追踪依赖的模板表达式和计算属性。
  • 组件化 用解耦、可复用的组件来构造界面。
  • 轻量 ~24kb min+gzip,无依赖。
  • 快速 精确有效的异步批量 DOM 更新。
  • 模块友好 通过 NPM 或 Bower 安装,无缝融入你的工作流。

官网:https://vuejs.org
GitHub:https://github.com/vuejs/vue

关注 96881

Augustu 关注了标签 · 2018-12-02

mysql

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

关注 63170

Augustu 关注了标签 · 2018-12-02

node.js

图片描述
Node 是一个 Javascript 运行环境(runtime)。实际上它是对 Google V8 引擎(应用于 Google Chrome 浏览器)进行了封装。V8 引擎执行 Javascript 的速度非常快,性能非常好。Node 对一些特殊用例进行了优化,提供了替代的 API,使得 V8 在非浏览器环境下运行得更好。例如,在服务器环境中,处理二进制数据通常是必不可少的,但 Javascript 对此支持不足,因此,V8.Node 增加了 Buffer 类,方便并且高效地 处理二进制数据。因此,Node 不仅仅简单的使用了 V8,还对其进行了优化,使其在各环境下更加给力。

关注 81155

认证与成就

  • 获得 4 次点赞
  • 获得 1 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 1 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2018-10-27
个人主页被 943 人浏览