- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 geoserver asWKB does no exist
记一次geoserver发布mysql图层问题查询geoserver针对mysql的兼容并没有做到于是俱进,当mysql版本8以上时,即使发布成功也会出现openlayer预览失败无法使用,报错大概是asWKB does not exist因为mysql8中已经将部分方法改了名字https://www.mail-archive.com/geotools-devel@lists.sourceforge.net/msg41365.html这里能看到关键的问题所在,并且作者在github中2020.1
2021-01-12 11:30:26
798
1
原创 采用过滤器方式实现IP防火墙
web.xml配置 <filter> <filter-name>IPFILTER</filter-name> <filter-class>com.supconit.ticc3.util.common.IpFilter</filter-class> </filter> <!--定义filter...
2019-11-27 13:59:45
488
原创 枚举深入,包括序列化安全/反射安全
开始前关于枚举的一些问题1.枚举允许继承类吗?2.枚举允许实现接口吗?3.枚举可以用等号比较吗?4.可以继承枚举吗?5.枚举可以实现单例模式吗?6.当使用compareTo()比较枚举时,比较的是什么?7.当使用equals()比较枚举的时候,比较的是什么?枚举是什么?枚举是JDK1.5新增的一种数据类型枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构...
2019-11-08 16:53:20
261
转载 REMOTE HOST IDENTIFICATION HAS CHANGED 问题解决
[外链图片转存失败(img-ekE3oGf7-1564713340926)(evernotecid://D7D93712-3C2E-4EC3-AA0B-D1A7842C2B81/appyinxiangcom/21861001/ENResource/p263)]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARN...
2019-08-02 10:36:39
183
转载 Java ArrayList 为什么要实现 RandomAccess 接口?
在我们的开发中,List接口是最常见不过,而且我们几乎每天都在用ArrayList或者LinkedList,但是细心的同学有没有发现,ArrayList中实现了RandomAccess接口,而LinkedList却没有实现RandomAccess接口,这是为什么呢?public class ArrayList<E> extends AbstractList<E> ...
2019-07-26 09:58:00
217
原创 适配器模式-缺省适配器模式
类适配器模式/** * 源角色Adaptee:需要适配的接口 */class Adaptee { public void methodA() { System.out.println("Adapee methodA"); }}/** * 目标角色Target:期待得到的接口 */interface taget { void methodA...
2019-07-08 10:17:34
1034
原创 存储过程与函数
这里就不关注mysql与oracle之间的差别了存储过程procedure存储过程可以是的对数据库的管理、以及显示关于数据库及用户信息的工作容易的多。存储过程是SQL语句和可控制流语句的预编译集合,以一个名词存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询,他们可...
2019-07-05 16:10:19
121
原创 数据库分表、分库、分区、分片
分区:把一张表的数据分成N的区块,分散到N个物理区块存储,这些物理区块可以在同一磁盘上,也可以在不同的磁盘上分表:将一张表按照一定规则分成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明。分库MySQL分区语句CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUBLE NOT NULL, ...
2019-06-01 13:14:46
528
原创 建造者模式与抽象工厂模式的区别
建造者模式是把对象的创建分散开来,比如我来组成头部,我来组成身体interface builderDemo {void bulidHead();void bulidBody();void bulidFoot();}然后由具体类来实现,实现创建对象的分解举例:mybatis里build sqlsessionfactory相对于简单工厂或普通工厂...
2019-05-29 20:11:25
4725
原创 装饰模式(Decorator)
一般有两种方式可以实现给一个雷或对象增加行为:继承机制,使用继承机制可以给现有类添加功能,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,这就是装饰模式换句话说,装饰模式可以在不需要创造更多子类的情况下,将对象的功...
2019-05-27 23:08:39
103
原创 二叉树遍历(先序、中序、后序)栈
递归的方法以及二叉树的构建代码在前文https://blog.csdn.net/qq_36879870/article/details/90517407先把例子拿一下过来前序遍历输出为根左右,输出完根后要保留,因为先说出左,后输出右,当右还没有处理的时候放到栈中存储。由此可以推断出一些规律输出当前节点的值循环获取左子树放入栈中当左子为null时开始处理右子当左子处理完了之后...
2019-05-27 22:17:29
1043
原创 二叉树遍历(先序、中序、后序)递归
首先我们知道结果应为先序:1 2 4 6 7 8 3 5中序:4 7 6 8 2 1 3 5后序:7 8 6 4 2 5 3 1三种遍历方法的考查顺序一致,得到的结果却不一样,原因在于:先序:考察到一个节点后,即刻输出该节点的值,并继续遍历其左右子树。(根左右)中序:考察到一个节点后,将其暂存,遍历完左子树后,再输出该节点的值,然后遍历右子树。(左根右)后序:考察到一个节点后,...
2019-05-24 15:37:47
205
原创 插入排序->{直接插入排序,二分插入排序,希尔插入排序}
插入排序->{直接插入排序,二分插入排序,希尔插入排序}直接插入排序原理:设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 ...
2019-05-24 11:02:52
218
原创 Mybatis整理以及Sql执行流程
Mybatis是支持定制化sql、存储过程及高级映射的优秀的持久层框架,其主要就完成了2件事情:封装JDBC操作利用反射打通Java类与Sql语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力与原生JDBC的对比原生JDBC的缺点:原生的JDBC操作...
2019-05-21 23:30:32
1610
6
原创 springMVC整理
什么是SpringMVCspring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合Spring MVC的流程用户发送请求到前端控制器DispatcherServletDispatcher S...
2019-05-11 14:07:57
114
原创 HashMap线程安全问题
以下参考jdk1.7扩容resize就是重新计算容量,向HashMap中不停的添加元素,而HashMap内部的数组无法装载时,就需要扩大数组长度。而数组无法自动扩容,那么HashMap采用的是用一个新的数组代替已有的容量小的数组。首先看一下扩容resize的源码void resize(int newCapacity) { //传入新的容量 Entry[] oldTable = t...
2019-05-11 13:43:33
1654
原创 oracle clob类型数值过长
业务需求修改某条线路的轨迹,数据库已经是clob类型了,然后当轨迹过长即string过长时会报connect reset,这可能是由于druid对字符串有限制,而把参数拿出来直接去执行sqlUPDATE E_BUS_STATIONLINE_CONTRAIL SET UPDATE_TIME = SYSDATE, SHAPE = '这是坐标的json串太长就不放了'WHE...
2019-05-07 13:53:45
5105
原创 spring事务
spring支持两种类型的事务管理:编程式事务管理:写在代码里PlatformTransactionManagerTransactionTemplate声明式事务管理:将事务管理从业务代码中分离。<tx:advice>标签@Transactional事务的类型数据库分为本地事务跟全局事务本地事务:普通事务,独立一个数据库,能保证在该数据库上操作的A...
2019-05-06 09:27:46
235
原创 Spring-bean的循环依赖以及解决方式
什么是循环依赖循环依赖就是循环引用,每个类中嵌套引用,在spring中表现为两个或多个bean相互之间持有对方,比如A引用B,B引用C,C又引用A,最终反映出来形成一个环。循环调用时无法解决的,一定要有终止条件才可以,否则就是死循环,最终的结果就是内存溢出。spring中的循环依赖场景构造器的循环依赖field属性的循环依赖构造器循环依赖通过构造器注入构成的循环依赖,此依赖是无法...
2019-04-22 22:10:32
359
原创 spring注解
注解 Annotation注解,也叫元数据。一种代码级别的说明。它是jdk1.5以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。简单来说注解就是代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相对应的处理。注解 编程思想注解就是个接口,可以放在包、类、字段、方法、局部变量、方...
2019-04-22 20:43:50
113
转载 Spring5源码解析-@Autowired
@Autowired所具有的功能@Autowired是一个用来执行依赖注入的注解。每当一个Spring管理的bean发现有这个注解时候,它会直接注入相应的另一个Spring管理的bean。该注解可以在不同的层次上应用:类字段:Spring将通过扫描自定义的packages(例如在我们所注解的controllers)或通过在配置文件中直接查找bean。方法:使用@Autowired注解的每...
2019-04-22 10:28:00
353
原创 AOP思想、五大通知及执行顺序、多个Aspect情况
AOP Aspect-OrientedProgramming 面向切面编程可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程主要目的:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指...
2019-04-17 14:58:38
5135
7
原创 HashMap底层及源码整理*
之前用富文本编辑器效果不是很好,还是用Markdown舒服。。。关于Map接口的延伸关系:下面针对各个实现类的特点做一些说明:HashMap:根据hashCode值存储数据,大多数情况下可以直接定位到他的值,因而具有很快的访问顺序,但遍历顺序确实不确定的。HashMap最多只允许一条记录的键为null,允许多条值为null,HashMap非线程安全,即任一时刻可以有多个线程同时写HashM...
2019-04-16 14:07:21
132
原创 类加载器
文章目录定义作用默认的类加载器双亲委派机制委托机制的具体含义委托机制的意义——防止内存中出现多份同样代码(维护系统代码??)面试例题定义类加载器的作用是获取字节码.class文件里面的内容,简单来货,类加载器就是加载类的工具。当出现一个类,用到此类的时候,java虚拟机首先将类字节码加载进内存,通常字节码的原始信息放在硬盘上的classpath指定的目录下。作用将.class文件中的内容...
2019-04-16 10:12:15
203
原创 BeanFactory和FactoryBean以及ApplicationContext的区别
BeanFactoryBeanFactory是IOC最基本的容器,负责生产和管理bean,它在为其他具体的IOC容器提供了最基本的规范,例如XmlBeanFactory、ApplicationContext等具体的挺起都实现了BeanFactory,再在其基础上附加了其他功能BeanFactory源码package org.springframework.beans.factory; ...
2019-04-15 15:34:19
949
原创 spring中的IOC与DI
文章目录IOC控制反转 Inversion Of ControlIOC原理IOC的好处DI Dependency Injection 依赖注入DI的三种实现方式IOC自动化装配IOC控制反转 Inversion Of Control所谓IOD对于spring框架来说,就是由spring来负责控制对象的生命周期和对详见的关系。就比如找对象,原本我们需要了解对象的一些信息,然后new一个(或者从J...
2019-04-13 16:26:24
289
原创 反射
Reflection耦合:模块之间产生了强烈的依赖性的时候,就产生了耦合解耦:降低模块之间的依赖性(为了模块化开发,便于后续维护)通过配置文件来动态配置和加载类。就是把类的字节码看做对象定义简单来说,就是动态加载对象,并对对象进行剖析。在java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法对于任意一个对象,都能调用它的任意一个方法,这种动态获取信息...
2019-04-13 15:32:46
163
原创 Dependency Injection三种方式
DI的三种实现方式设置注入—Setter Injection构造方法注入—Constructor Injection接口注入—Interface Injectionpublic class Person{ private Dog dog; private Ingteger age; private String name; //setter /...
2019-04-13 15:24:57
1453
原创 工厂模式
工厂模式的分类简单工厂模式JDK类库,如工具类java.text.DateFormatjava加密技术spring-BeanFactory工厂方法模式JDBCspring-FactoryBean抽象工厂模式为什么要用工厂模式解耦:把对象的创建和使用的过程分开降低代码重复:如果创建某个对象的过程很复杂,而且使用率很高,那么就会有很多重复代码降低维护成本:由于...
2019-04-11 22:55:10
110
原创 静态代理、JDK动态代理、CgLib动态代理
代理模式:静态代理动态代理jdk动态代理cgLib动态代理使用目的:解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面对对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问,直接访问会给使用者或者系统结构带来很多麻烦每一个动态代理类中都必须实现Invocation接口,实现其中的invoke方法JDK的...
2019-04-10 20:39:59
172
原创 mac,github pages+hexo+node搭建个人博客
准备条件github账号Gitnode.jsnpmhexogit首先mac自带git(预安装),可以Terminal输入git --version查看homebrew用来安装node.jsruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 第...
2019-04-08 22:51:16
240
原创 使用mac.Terminal连接远程Linux
1.ssh 用户名@ip地址 -p 端口号2.到这会让你输入yes或者no来确认是否连接,输入yes回车3.输入密码····end.退出直接command+q哈哈哈哈哈哈或者输入logout...
2019-04-03 10:49:42
1283
原创 java中的锁机制
悲观锁乐观锁自旋锁与自适应自旋偏向锁//TODO轻量级锁//TODO重量级锁//TODO//剩下三个等空了再更新 …悲观锁总是假设最坏的情况,每次取数据都认为别人会改,所以每次拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到他拿完。传统的关系型数据库里面就用了很多这种锁,比如行锁,表锁,读锁,写锁等,都是在操作之前加锁。java中Synchronized和reentran...
2019-04-02 10:10:57
136
原创 java内存模型JMM
文章目录内存模型抽象结构哪些是共享变量JMM抽象结构模型重排序数据依赖性as-if-serialhappens-beforeas-if-serial和happens-before的区别内存模型抽象结构线程间协作通信可以类比人与人之间的协作的方式,在现实生活中,之前网上有个流行语“你妈喊你回家吃饭了”,就以这个生活场景为例,小明在外面玩耍,小明妈妈在家里做饭,做晚饭后准备叫小明回家吃饭,那么就存...
2019-03-31 21:58:34
172
原创 并发三大性质以及一些其他概念
概念JMM模型临界区:同一时刻只能有一个任务访问的代码区互斥量:是一个可以处于两态之一的变量:解锁和加锁信号量Semaphore:又称信号灯,用来在多线程环境下,用来保证两个或多个关键代码不被并发调用。在进入一个关键代码段全必须获取一个信号量,一旦关键代码完成,线程必须释放信号量。其他想要进入该关键代码段的线程必须等待第一个线程释放该信号量。信号量和互斥量的区别互斥量用于线程的互斥...
2019-03-31 21:54:42
255
原创 从生产者消费者模型模拟notify死锁
生产者public class Producer implements Runnable {List cache;public Producer(List<Integer> cache) { this.cache = cache;}@Overridepublic void run() { while (true) { produce();...
2019-03-31 21:48:37
282
2
原创 ArrayList手写前的源码整理
简单说明下:ArrayList是一个数组队列,相当于动态数组,与java中的数组相比能动态增长。特点:1.随机访问速度快,插入和移除性能较差2.支持null3.有顺序4.元素可以重复5.线程不安全想要手写一个ArrayList必须了解他的底层逻辑,我把我的理解整理的下首先看看源码(以下为1.8环境的源码)首先这里可以看到有两个空数组,先来看一下这两...
2019-03-21 16:13:50
148
原创 JVM、GC
1.程序计数器Program Counter Register:每个线程都有自己的程序计数器,若执行的是JVM的方法,则存多少是当前执行指令的地址,若执行的是native的方法,则为空2.虚拟机栈VM Stacks:线程私有,生命周期与线程一致,随线程创建而创建,随线程退出而回收。内部保存一个个的栈帧,调用方法时压栈,方法结束出栈异常可能性: 线程请求的栈深度大于栈所允许的深度,...
2019-03-20 18:20:17
176
原创 使用Eclipse连接远程Hadoop集群并运行实例
首先将Hadoop解压到本地在bin中添加两个文件hadoop.dll和winutils.exe不自带,需要从网上下载(过段时间发上来)1.x版本的不适用添加Eclipse-Hadoop-plugins插件放到Eclipse安装目录的plugins文件夹中添加环境Path末加D:\softWare\hadoop\hadoop-2.6.5\bin启动Eclip...
2019-03-19 16:26:15
976
1
原创 线程Thread基础及深入了解start启动线程过程
进程:指在一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程。进程也是程序的执行过程,是系统运行程序的基本单位。系统运行一个程序就是一个进程从创建到运行到死亡的过程。线程:进程内部的一个独立执行单元;一个进程可以并发运行多个线程。进程与线程的区别:进程:有独立的内存空间,进程中的数据存放空间(堆空间栈空间是独立的),至少包含一个线程线程...
2019-03-15 15:41:34
974
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人