- 博客(81)
- 资源 (11)
- 问答 (1)
- 收藏
- 关注
原创 Cesium 生成terrain地形数据----CTB方式及步骤
后记:如果你只是需要将tif处理成terrain,而不是学习处理过程,可以直接使用这个简单的工具:CesiumLab。不需要拼接成一个TIF,也不需要处理No-Data,地形功能免费。背景:项目前端使用Cesium,地形服务一直使用外网的,常常因为翻墙访问的问题,导致地形数据取不到,进而导致地球不能加载,故决定搭建自己的地形服务,彻底解决这个问题。博文包含以下几个过程:下载原始地形数...
2018-10-10 18:20:44 34427 61
原创 Ribbon入门笔记
WHAT是什么?Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都.
2021-03-25 19:36:11 270
原创 Prometheus入门笔记
一个开源的监控项目,集成服务发现(Consul)、数据收集(Metrics)、存储(TSDB)及展示(通常是接入Grafana),外加一系列的周边支持(比如Springboot集成等等)在io.micrometer.core.annotation包下面,有一个非常核心的注解@Timed通过AOP的方式增强被注解的方法,实现对被注解的方法的耗时统计(TimeAspect)。...
2021-03-25 19:34:37 315 1
原创 Hystrix入门笔记
Hystrix[hɪst'rɪks],中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力。GitHub:https://github.com/Netflix/Hystrix/wikiLogo↓↓↓常规服务调用,很可能因为某一个依赖服务的不可用而拖垮当前系统:使用Hystrix后,每个依赖服务都有自己的资源,实现了资源隔离和容灾:Hystrix的工作原理:防止任何单个依赖项耗尽所有容器(例如Tomcat)用户线程。 减少负载并快速失败,而不...
2021-03-25 19:32:54 203
原创 Caffine Cache入门笔记
Caffine Cache是一个本地缓存框架,它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。相比于Guava,他在过期策略上有了提升----W-TinyLFU。常见的缓存淘汰算法有FIFO,LRU,LFU:FIFO:先进先出,在这种淘汰算法中,先进入缓存的会先被淘汰,会导致命中率很低。 LRU:最近最少使用算法,每次访问数据都会将其放在我们的队尾,如果需要淘汰数据,就只需要淘汰队首即可。仍然有个问题,如果有个数据在 1 分钟访问了 1000次,再后 1 分钟没
2021-03-25 19:27:29 288
原创 ANTLR入门笔记
定义ANTLR, 语言识别的另一个工具(ANother Tool for Language Recognition ),(前身是PCCTS)是一种语言工具,它提供了一个框架,可以通过包含 Java,C++,或 C#动作(action)的语法描述来构造语言识别器,编译器和解析器。关键概念前端:定义语法规则,antlr通过g4文件来定义 lexer:词法解规则,就是将一个句子多个字符进行组装分成多个单词的规则 parser:语法解析,对分词后的整个句子进行解析,可以对每个分词单元做出自定义的处理
2021-03-25 19:26:51 3301
原创 Spring容器中 Bean的生命周期
Bean 容器找到配置文件中 Spring Bean 的定义。 Bean 容器利用 Java Reflection API 创建一个Bean的实例。 如果涉及到一些属性值 利用set()方法设置一些属性值。 如果 Bean 实现了BeanNameAware接口,调用setBeanName()方法,传入Bean的名字。 如果 Bean 实现了BeanClassLoaderAware接口,调用setBeanClassLoader()方法,传入ClassLoader对象的实例。 如果Be...
2021-01-14 20:22:54 105
原创 HotSpot中Java对象的创建过程
Step1:类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。Step2:分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。分配方式有“指针碰撞”和“空闲列表”两种,选择哪种分配方式由 Java 堆是否规整...
2021-01-12 15:05:38 144
原创 Mac开发安卓时,SDK Tools下找不到Google Usb Driver
使用任何Google Nexus 设备进行ADB调试时,只有 Windows 需要Google USB 驱动程序。唯一例外是 Galaxy Nexus:Galaxy Nexus 的驱动程序由Samsung分发(以 SCH-I515 型号列示)。所有其他设备的 Windows 驱动程序都由相应的硬件制造商提供,如原始设备制造商 USB 驱动程序文档中所列。如果您在 Mac OS X 或 Linux 上开发,则不需要 USB 驱动程序。请参阅使用硬件设备。这一点可以从官方文档看到:...
2020-11-28 08:25:18 3213 4
原创 通过脚本自动完成叠猫猫游戏-方案对比分析
简介:用自动化脚本代替流程化的操作原则:只提供替代人工操作的技术支持,不参与具体的使用场景具体功能:每日自动完成任务,领取金币联系方式:QQ-250274759(备注:电商脚本)
2020-10-27 23:12:53 371 1
原创 实现微博自动化脚本-方案对比分析
简介:用自动化脚本代替流程化的操作原则:只提供替代人工操作的技术支持,不参与具体的使用场景具体功能:自动点赞 自动评论 自动转发 自动发帖 定制私聊 按条件筛选 关键词搜索 其他定制场景联系方式:QQ-250274759(备注:微博脚本)...
2020-10-27 23:10:43 1710 2
原创 实现闲鱼自动化脚本-方案对比分析
简介:用自动化脚本代替流程化的操作原则:只提供替代人工的技术支持,不参与具体使用场景具体功能:关键词检索 按要素排序 按条件筛选 自动发问候语 自动下单 拍下通知 每日报表汇总联系方式:QQ-250274759...
2020-10-27 23:07:11 8990 2
原创 设计模式复习总结-要点+思维导图
概要图 创建型:涉及到将对象实例化,和类模式都提供一个方法,将客户从需要实例化的对象中解耦出来 行为型:只要是行为型模式,都涉及到类和对象如何交互及分配职责 结构型:结构型模式可以让你把类或对象组合到更大的结构中 详细总结 序号 模式划分 好处 理解总结 原则 日期 1 策略模式:定义了一组算法(行为的具体实现),
2020-07-28 00:24:45 916
原创 多线程处理集合后如何保序
背景在批量接口调用时,我们不会选择循环遍历的串行调用方式,因为响应的时间会是所有调用时间之和,如查100个数据,每次查询50毫秒,循环调用串行的总时间时100*50=5000毫秒。一般会选择使用批量查询接口或多线程来解决上述问题。但多线程由于并行性,受网络波动影响,会出现后执行的先得到返回结果的情况,在某些需要保序的场景,就需要关注结果的顺序和请求的顺序是否一致了。举例针对业务场景...
2020-02-22 20:28:14 1753
原创 Java8函数式编程学习总结
什么是函数式编程函数式的概念函数式编程不是Java8独有的特性,它和面向对象编程一样,是一种编程思想。函数式编程中的函数一词,是数学意义中函数而非编程上定义的方法(method/function),在数学范畴,函数的定义如下:给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表...
2020-02-07 14:31:49 337
原创 使用Calendar格式化时间达不到预期的问题
Java8中文文档:http://www.matools.com/api/java8java8 LocalDate参考:https://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant背景:涉及到期限的地方如活动起止时间(2019-11-11 00:00:00~2019-11-18 00:00:00)、奖...
2020-02-05 10:39:30 617
原创 Tomcat 启动报错This is very likely to create a memory leak. Stack trace of thread
前言:部分参考自网上,侵删。1、问题描述启动tomcat部署项目时,报This is very likely to create a memory leak. Stack trace of thread错误。29-May-2018 12:30:09.322 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardC...
2020-02-04 16:44:02 6316
转载 MyBatis:Invalid bound statement (not found)
mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种:第一种:语法错误Java DAO层接口public void delete(@Param("id")String id);Java 对应的mapper.xml文件<?xml version="1....
2020-02-04 16:42:03 506
原创 Spring @Cacheable遇到空值处理、设置过期时间的问题分析
问题简介:登录模块会将用户信息缓存到redis中,没有查到则存空。下次用到用户信息时,先从缓存中取,缓存中没有,再从数据库取,以减轻数据库的压力。该功能基于Sprng @cacheable实现。当用户用未注册的账号登录时,按照逻辑存入空,用户紧接着注册了账户,并尝试用该账户登录,按照逻辑,缓存中已有了为空的记录,此时不会再从数据库查一遍,这导致了该账号一直登陆失败,直到统一配置的时间到了,才会从r...
2019-07-05 14:32:44 15002 2
转载 震惊!Spring Aop不起作用可能是这个原因导致的
Mark原文:https://my.oschina.net/guangshan/blog/1807721
2019-07-05 10:58:02 3939 3
转载 写的太好了!Spring AOP @Before @Around @After 等 advice 的执行顺序
Mark原文:https://blog.csdn.net/rainbow702/article/details/52185827
2019-07-04 17:06:55 2883
原创 Java覆写equals方法为什么建议一起覆写hashCode方法
我们都知道判断对象是否相等时,使用==和覆写equals方法的区别。默认情况下,equals也是通过==比较地址的方式实现的,所以当我们想根据对象的具体内容比较时(比如判断两个学生是否是同一个人时,可以通过比较学生的学号来确定:studentA.getId()==studentB.getId()),我们会覆写equals方法://比如在Student类里public boolean equ...
2019-07-01 16:47:18 841
原创 Java 字符串常量存放在堆内存还是JAVA方法区?
JDK1.7 及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池。JDK1.8开始,取消了Java方法区,取而代之的是位于直接内存的元空间(metaSpace)。已知:String A="abc";String B="abc";String C=new String("abc");String D=new Str...
2019-06-24 10:14:21 10567 4
原创 MySql数据库select的执行过程、连接语句、范式等
Mysql种执行select时,数据库处理指令的流程: 1、FORM: 对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1。 2、ON: 对虚表VT1进行ON过滤,只有那些符合<join-condition>的行才会被记录在虚表VT2中。 3、JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添...
2019-06-21 13:49:26 571
转载 Java字节数组byte[]与String互相转换时遇到的错误及原理分析(转)
说明:本文转载于新浪博客,原文地址:http://blog.sina.com.cn/s/blog_673c81990100t1lc.html 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso88...
2019-05-21 14:16:43 7492
原创 Java8 默认接口方法和lambda表达式
默认接口方法Java 8使我们能够通过使用default关键字向接口添加非抽象方法实现。 此功能也称为虚拟扩展方法。这个是比较大的一个变更,以往我们的认知是,接口里只能有方法的定义不能有方法的实现,现在使用default关键字,可以在接口中实现方法的具体内容,如下 sqrt:interface Formula{ double calculate(int a); d...
2019-05-20 10:45:59 327
原创 为什么JMM 的新生代有两个survivor
原因其实很简单:假如只有一个Eden和一个survivor,Eden在执行Minor GC时,会把存活的对象拷贝到survivor中,这一步是没问题的。当Eden再次执行Minor GC时,Eden把存活的对象拼接到survivor中,同时,survivor将之前存进来但是现在失效的对象清除,正是这一步,使得之前存进来的连续数据内存变得不在连续。假如现在有两个survivor,那么Eden...
2019-05-09 18:01:35 194
转载 由java内存模型探讨线程安全的问题
原文出自:https://www.cnblogs.com/lewis0077/p/5143268.html,读完之后很受益,文末写了一些个人总结。在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式...
2019-05-09 17:01:56 359
原创 ThreadLocal的几点思考和总结
看了一些ThreadLocal相关分析的文章,总结了如下几点信息,如有错误欢迎指正一起学习:jdk1.3之前实现方式是不同的,它在ThreadLocal中维护了一个Map,Thread作为key,变量作为值。但是这样多线程并发访问需要进行同步,所以速度比较慢。 后来,每个Thread各自持有一个ThreadLocalMap变量,那么使用传递进来的变量就不会有同步的问题了,因为每个Thread...
2019-05-07 17:31:47 419
原创 Java实现冒泡、快速、选择、插入、希尔排序代码及简单说明
public class Main { static int input[] = {3, 8, 1, 6, 7, 2, 4, 9, 5}; public static void main(String[] args) { System.out.println("SimpleCodeSimpleLife!");// maopao(input);...
2019-05-06 16:43:39 210
转载 Executor, ExecutorService 和 Executors 间的不同(转)
原文出处:http://www.importnew.com/24923.htmljava.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent. Executors 这三者均是 Java Executor 框架的一部分,用来提供线程池的功能。因为创建和管理线程非常心累,并且操作系...
2019-04-26 15:03:20 361
原创 Nginx location 优先级
以下是优先级顺序:= 进行普通字符精确匹配。也就是完全匹配。 ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。 ~ 表示执行一个正则匹配,区分大小写,~* 表示执行一个正则匹配,不区分大小写 常规写法如location /、location /test等location中指定路径的方式有两种:root和alias,区别如下:root:路径+l...
2019-04-23 17:15:54 1086
转载 Flannel网络原理(转载)
overlay网络简介覆盖网络就是应用层网络,它是面向应用层的,不考虑或很少考虑网络层,物理层的问题。详细说来,覆盖网络是指建立在另一个网络上的网络。该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的。虽然在底层有很多条物理链路,但是这些虚拟或逻辑链路都与路径一一对应。例如:许多P2P网络就是覆盖网络,因为它运行在互连网的上层。覆盖网络允许对没有IP地址标识的目的主机路由信息,例如:Fr...
2019-04-17 13:43:22 5891
原创 Linux常用指令
查看文件内容:cat、more、less:cat是一次性显示整个文件的内容,more和less一般用于显示文件内容超过一屏的内容,并且提供翻页的功能。more比cat强大,提供分页显示的功能,less比more更强大,提供翻页,跳转,查找等命令。而且more和less都支持:用空格显示下一页,按键b显示上一页。查看权限:ll、ls -l:-rwxr-xr-x 1 root root...
2019-04-15 14:21:16 152
原创 把Tomcat8的源码画在脑袋里(上)
如何学习源码,对于我来说,拿到一个框架/开源项目,首先思考的是,为什么有人写这个东西,它的出现是为了解决什么样的现实问题。知道了框架/开源项目的前世今生,就更容易融入框架作者的思路里来。Tomcat对于从事java开发/学习的同学来说实在是太亲切了,每个人都用过,那么,为什么会有tomcat这个东西呢?他的出现解决了程序员们哪些现实问题?当我们运行一个web项目时,我们将项目打成war包,并将...
2019-04-12 11:50:58 149
原创 docker常用指令
docker常用指令:安装:yum -y install docker 启动:service docker start 或者 systemctl start docker.service 重启:service docker restart 下载(拉取)镜像:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 如:docker pull...
2019-04-03 19:30:57 157
原创 Centos7修改SSH远程登陆端口
一般来说,用远程工具如putty,SecureCRT等登陆阿里云服务器或其他服务器,使用的端口默认是22。有时出于安全问题,防止22端口被扫描,会将远程端口改为其它自定义的端口(建议大于10000,一万以下的端口可能会被系统使用)。步骤很简单,两步:1.修改ssh配置文件,将端口改为自定义的端口如10022。ssh的配置文件是:/etc/ssh/sshd_config,使用vi编辑:...
2019-03-31 14:38:44 7826
原创 Mysql 创建数据表外键报错:Fail to open the referenced table
在mysql中,建立外键关联,关联表必须是使用innodb,将engine修改为innodb即可。存储引擎是什么?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。关于数据库其它几个引擎的区别如下:...
2019-03-03 15:05:04 23321
原创 Cesium 自定义 selectionIndicator以及样式的切换
前言:有这样一个需求,在Cesium中,选中不同的模型,选中框(selectionIndicator)的样子也需要不一样。查看Cesium源码,在下载的cesium包中的cesium/Source/Widgets/SelectionIndicator目录下可以看到三个文件:SelectionIndicator.css SelectionIndicator.js SelectionIndic...
2019-02-21 15:00:38 4682 10
CTB地形切片生成器
2018-10-10
drozer2.3.4
2017-09-21
安卓相机开发camera.open(0)返回空值
2016-02-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人