Java
ChanKamShing
这个作者很懒,什么都没留下…
展开
-
Idea使用SVN提交报错:“svn: Commit blocked by pre-commit hook (exit code 1) with output: Can't get Mantis_K”
出现这种情况一般是两种原因和解决办法:1,提交的注释必须要按照固定的格式,这只能问公司的同事了2,可能是提交的注释字符长度不够,这样就需要麻烦把这次提交的内容说的详细一点了.点开右下角的“Event Log”:提示信息说Log信息不可为空,并且大于4个字符,这里说的Log Message指的是commit注释信息,所以提交的时候,添加上就可以。...原创 2020-01-15 17:49:32 · 1020 阅读 · 0 评论 -
Java实现,手写二叉树
一、基本概念二叉树:每个节点最多有两个子树的结构; 满二叉树:除了最后一层没有任何节点外,每一层的所有节点都有两个子节点的二叉树; 完全二叉树:结构与满二叉树类似,不同点在于最后一层可以不满,但最后一层的节点必须连续集中再最左边; 二叉搜索树:各节点的值有大小要求的二叉树,左节点的值<中节点的值<右节点的值。二、树的存储方式1、数组形式 使用数组存储,...原创 2019-12-20 12:14:37 · 833 阅读 · 0 评论 -
高效查找素数
素数:一个数如果只能被1和它本身整除,那么这个数就是素数第一版:思路:遍历[2,n)每个数,判断每个数是否是素数,判断素数的思路是一次将该数被从2到num-1整除,如果其中某个数可以整除,直接返回false,说明不是素数,如果返回true,说明是素数,所以count+=1./** * 统计[2,n)之间有多少个素数 * @param n * @retur...原创 2019-10-14 18:05:21 · 244 阅读 · 0 评论 -
Log4j配置文件
# log4j.rootLogger=INFO,stdoutlog4j.rootLogger = debug,stdout,D,E# 日志输出到consolelog4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.target = System.outlog4j.appender.st...原创 2019-10-13 21:12:59 · 128 阅读 · 0 评论 -
GOF设计模式——Composite模式
一、什么是Composite模式? Composite模式,可以借助计算机文件夹的例子去理解,一个文件夹里面可以存放文件,也可以存放子文件夹,这样子形成一种结构,这个“文件夹”就类似于一个容器,而且还是一种具有递归结构的容器。我们可以用Composite模式创造出这样的结构,使得容器和内容具有一致性。二、Composite模式的原理Client:使用Composite...原创 2019-02-09 22:40:59 · 196 阅读 · 0 评论 -
GOF设计模式——Singleton模式
一、什么是Singleton模式? Singleton模式就是平常所说的单例模式,简单来说就只有一个实例。在使用java.lang.String的时候,将不同的字符串赋给String引用,其实就是创建了一个String对象实例,当有1000个不同的字符串创建的时候,就会出现1000个实例。有时候,我们只想在程序里面创建一个实例,譬如Hibernate的SessionFactory...原创 2019-01-22 20:07:54 · 154 阅读 · 0 评论 -
Redis——任务队列
很多博客网站中都会有发送邮件这个功能,发送邮件是一个双向数据的交互过程,如果使用单线程实现,很难避免会等待很长时间的情况出现,但碍于某些框架或语言不容易实现多线程,这时可以通过进程来实现。设想一个进程能够完成发邮件的功能,那么只要通知这个进程向指定的地址发送邮件就可以了。 通知的过程可以借助任务队列来实现。与任务队列交互的类有两种:一类是生产者,另一类是消费者。生...原创 2019-01-27 23:56:00 · 2706 阅读 · 0 评论 -
GOF设计模式——Bridge模式
一、什么是Bridge模式? 讲述之前,先介绍两个关于类层次的重要概念:类的功能层次结构和类的实现层次结构。1、类的功能层次结构 假如现在有一个父类ClassFarther,它具有一些基本功能,现在希望在业务上新增新的功能时,可以通过编写一个子类ClassSon去继承父类ClassFarther,并将新的功能写在子类里面,这样就构成了类层次结构: ...原创 2019-02-02 23:57:38 · 195 阅读 · 0 评论 -
GOF设计模式——Factory Method模式
一、什么是Factory Method模式 Factory Method模式是用来构建生成实例的工厂,在该模式下,父类决定实例生成的方式,但并不决定所要生成的具体类。这样的设计思想,就跟Template Method模式相似(具体参考:https://blog.csdn.net/weixin_39400271/article/details/86565016),因为Factory...原创 2019-01-21 19:30:19 · 289 阅读 · 0 评论 -
多线程——volatile
在多线程中,为了使得某个变量对任意一个线程可见,会使用volatile对该变量进行修饰。 理解volatile之前,要先知道线程是如何调用变量的。每一个线程都拥有自己的一个私有堆栈,变量是定义在主内存中,而每个线程会将变量copy一份到私有堆栈。每次启动线程操作,都会先从主内存读取熟读到私有堆栈,然后已知只会对copy过来的变量进行读写,当线程结束的时候,就会将变...原创 2019-01-15 22:37:13 · 1592 阅读 · 0 评论 -
GOF设计模式——Builder模式
一、什么是Builder模式? builder模式,就好比一栋大楼,这栋大楼有很多个组件组成,但是这栋大楼只是一个各个组件结合起来的框架,每一栋大楼都有各自的特色,这些特色由它们实际情况决定。对于程序而言,这栋大楼就好比一个Builder抽象类,里面定义了很多组件方法,一个完整的功能离不开里面的每一个方法,具体实现依赖子类,只要继承这个抽象类,就可以根据组件方法组建起自己的“大楼...原创 2019-01-26 00:11:32 · 206 阅读 · 0 评论 -
Redis的列表(List)类型
列表类型(List)可以存储一个有序的字符串列表,常用的操作就是向列表两端添加元素,或者获取列表中某一个片段。 列表类型内部使用双向链表(double linked list)实现的,所以向列表两端添加或删除元素的速度非常快,越是接近两端的元素就越快,但是,也有弊端,就是通过索引访问元素的速度比较慢。 因为使用了双向链表实现存储的,所以在命令上也...原创 2019-01-20 23:19:28 · 1305 阅读 · 0 评论 -
GOF设计模式——Prototype模式
一、什么是Prototype模式? 在编程中,我们可以使用new关键字指定类名来生成类的实例,但是有时候也会有不指定类名的前提下生成实例。因为有时候对象种类繁多,无法将它们整合到一个类中;或者,生成实例的过程过于复杂,难以根据类生成实例;又或者,想要将类与框架解耦。这时,为了能够在不使用类名的情况下生成实例,可以使用Prototype模式,Prototype模式又叫原型模式,专门...原创 2019-01-23 23:59:50 · 143 阅读 · 0 评论 -
Redis——发布/订阅
上一篇提及到使用任务队列来实现进程间的消息传递(https://blog.csdn.net/weixin_39400271/article/details/86670850),Redis还提供了一组命令来实现进程间的消息传递,那就是“发布/订阅”模式。 “发布/订阅”模式原理:模式中包含两种角色,一种是发布者,另一种是订阅者。订阅者可以订阅若干个频道,而发布者可以...原创 2019-01-28 23:50:08 · 171 阅读 · 0 评论 -
GOF设计模式——Proxy模式
一、什么是Proxy模式 Proxy,代理的意思,它指的是代替别人进行工作的人。当不一定需要本人亲自进行工作时,就可以寻找代理人去完成工作。在面向对象编程时,“本人”和“代理人”都是对象,要记住的一样东西,就是代理人可以替代本人去做某些事情,意味着代理人和本人就具有一定程度相同的属性和方法。二、Proxy模式的原理Subject:定义了使Proxy和RealSubje...原创 2019-02-14 19:07:58 · 186 阅读 · 0 评论 -
GOF设计模式——Strategy模式
一、什么是Strategy模式? Strategy,意思是“策略”的意思。使用Strategy模式设计的代码,就自带一种逻辑判断在里面,可以整体的替换算法的实现部分,或者说跟机器学习有相似之处。二、Strategy模式思想Context类:里面定义了Strategy类型属性,负责使用Strategy接口,使用了委托,实际上是调用Strategy的实现类的具体方法;...原创 2019-02-04 20:03:28 · 230 阅读 · 0 评论 -
SpringCloud Eureka服务治理机制
一、基础架构 构建Eureka服务治理有三个核心角色:服务注册中心、服务提供者和服务消费者。上图就是这三个角色之间的通信工作架构图。服务注册中心(Eureka Server):Eureka提供的服务端,提供服务注册和发现的功能; 服务提供者:提供服务的应用,遵循Eureka通信机制的应用。它将自己注册到Eureka Server中,以供其他应用发现; 服务消费者...原创 2019-02-18 16:08:13 · 312 阅读 · 0 评论 -
GOF设计模式——Flyweight模式
一、什么是Flyweight模式 Flyweight,是轻量级的意思,Flyweight模式旨在使得类的创建、使用变得简便。如何实现呢?在一般的编程里面,想要使用一个对象,会通过new的方式创建,那么每一个地方需要使用该对象,就要new一次,在计算机内存中则需要每次都要分配内存空间出来,当使用new的次数增多时,内存空间也随着消耗加大。Flyweight模式则是通过尽量共享实例来...原创 2019-02-13 16:46:08 · 175 阅读 · 0 评论 -
消除if...else实战
相信不少朋友在开发的时候都会碰到过这种问题:大量使用if...else进行逻辑判断。不管是接手过来的系统,还是自己开发的系统,当你看到一大堆的if...else语句之后,心里总会冒出一句“这简直就是一堆shit”。最近博主热衷于重构代码,看到自己手上的系统的一些判断逻辑,恨不得将它全部删掉,再加上最近也接触到不少关于消除if...else的方法介绍文章,不由得自己也来搞搞。 ...原创 2019-03-14 13:21:03 · 330 阅读 · 0 评论 -
Java实现单向链表
本篇介绍Java实现单向链表的peak(获取第一个节点对象)、removeFirst(删除第一个节点)、find(查找指定节点)、remove(移除链表中指定节点对象)等方法。一、创建节点类package linkedList;/** * 节点类 * 数据有id、nextNode * nextNode用于指向下一个节点对象 */public class Li...原创 2019-10-09 00:31:57 · 196 阅读 · 0 评论 -
Java实现双向链表
本篇介绍Java实现双向链表的peak(获取第一个节点对象)、removeFirst(删除第一个节点)、find(查找指定节点)、insertLast(从尾部插入节点)等方法。一、创建节点类package linkedList; /** * 节点类 * 数据有id、nextNode * nextNode用于指向下一个节点对象 */public class L...原创 2019-10-09 23:40:55 · 172 阅读 · 0 评论 -
GOF设计模式——Template Method模式
一、什么是Template Method模式 顾名思义,Template Method模式就是模板方法模式。所谓的模板,就好比我们练书法一样,刚开始练习的时候,会拿各种各样的字样模板,照着写,练楷书时,就拿楷书模板,练行书时,就用行书模板。过程是固定的,即都是按着模板写,只是具体是楷书,还是行书,视具体情况,具体选择。那么,对应于Template Method模式,又会是怎样的思...原创 2019-01-20 21:01:21 · 185 阅读 · 0 评论 -
GOF设计模式——Adapter模式
一、什么是Adapter模式? Adapter模式,又称为适配器模式。 这是一个很通俗的名字,“适配器”,我们可以联想到笔记本电脑的充电器(专业名称又叫适配器),每一台笔记本电脑会对应只有一个适配器,适配器的作用是对民用的电压和电流进行转换,使得电压和电流满足当前的笔记本电脑的实际需求。那么,到了程序里面,又是怎么理解呢?我们可以将笔记本电脑实际的电压和电流当作...原创 2019-01-19 12:14:08 · 157 阅读 · 0 评论 -
Mybatis的缓存机制(Cache)
Mybatis提供对缓存的支持,分为一级缓存和二级缓存,在没有配置的情况下,系统默认会使用一级缓存。一级缓存(SqlSession级别) 我们都知道每个SqlSession对象之间的缓存是互不影响的,当同一个SqlSession执行多次相同的SQL语句时(主要针对select),系统只会到底层访问数据库一次,后续执行sql时,会从一级缓存里面读取第一次访问的数据。当这个SqlSessio...原创 2018-09-02 16:52:22 · 270 阅读 · 0 评论 -
Hibernate的执行流程——SessionFactory的创建
Hibernate的执行流程:1、创建Configuration类实例,用来读取并解析配置文件(如Hibernate.cfg.xml),一个Configuration实例代表hibernate所有Pojo类到SQL数据库映射的集合;2、创建SessionFactory对象,用来读取并解析映射信息,同时将上一步Configuration对象中的所有配置信息copy到SessionFactor...原创 2018-08-18 10:24:13 · 475 阅读 · 0 评论 -
SpringMVC中Controller接口的三种实现类的使用与说明
要说Controller接口的实现类使用与说明之前,先简要说明一下SpringMVC的工作原理。①客户端发出一个请求,web服务器接受了这个请求后,就会与web.xml中配置的DispatcherServlet中的映射路径相匹配,如果有对应的匹配路径存在,那么这个请求将会交给DispatcherServlet处理(这个Dispatcher Servlet也是SpringMvc的核心);②D...原创 2018-07-14 23:43:30 · 8054 阅读 · 0 评论 -
Eclipse编译某个Java类的时候,程序体没有错误,但是在package处有错误提示
错误提示信息太概如下:The class file HashMap<K,V>.FrontCache contains a signature..........网上有给出的解决方法是:“这个问题产生的原因是在不同的jdk版本下编译,可以用如下办法解决:在window-preferenecs-java-installed jres下添加jdk 1.7(如果有就不必了);...原创 2018-07-24 19:17:42 · 1244 阅读 · 3 评论 -
HTTP Status 500 - Unable to instantiate Action的解决方法
跳转页面时出现的错误页面信息:HTTP Status 500 - Unable to instantiate Action, com.netbank.action.AdminAction, defined for 'login' in namespace '/admin'Error creating bean with name 'com.netbank.action.AdminAction'...原创 2018-07-25 23:02:38 · 3178 阅读 · 0 评论 -
java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract
在使用mybatis框架测试时,出现了如下问题: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstractat com.mysql.jdbc.PreparedStatement.isClosed(PreparedStatement.java)at su...转载 2018-07-28 12:28:23 · 3023 阅读 · 0 评论 -
Spring使用Json的异常问题
错误信息:java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonProcessingException这个是启动Tomcat时报的异常,网上给出不少处理方法,最长凑效的有:1、配置类不匹配<bean id="mappingJacksonHttpMessageConverter" class="org.springfra...原创 2018-08-11 17:26:04 · 216 阅读 · 0 评论 -
关于IntelliJ IDEA找不到getServletContext()的问题
在Eclipse里面使用Tomcat7.0以上,HttpServletRequest request的getServletContext完全没有问题,但是在IntelliJ Idea里面却没有提示,而且getRealPath()还显示过期,网上很多说要用servlet.api3.0,又说是Tomcat版本太低,需要7.0以上,实际上我在Idea里面已经使用Tomcat8.5了,这并不...原创 2018-10-02 18:23:00 · 5305 阅读 · 4 评论 -
注解实现SSH拦截器,启动Tomcat时报Unable to load configuration. - [unknown location]错误的解决方法
这里记录一下使用注解实现struts2拦截器时,启动Tomcat时报错的一种解决方法。下面是报错的详细信息:Unable to load configuration. - [unknown location]at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)at org.apache.struts2...原创 2018-07-19 22:35:46 · 1697 阅读 · 0 评论 -
SpringBoot使用JdbcTemplate
JdbcTemplate的设计目的是为不同类型的HJDBC操作提供模板方法,每个模板方法都能控制整个数据访问的过程。常用方法:execute:可以用于执行任何的SQL语句,一般用于执行DDL语句; update和batchUpdate:用于执行新增、修改、删除等语句,batch是批量的意思; query和queryForObject:用于查询相关语句; call:用于执行存储过程...原创 2018-10-29 22:17:55 · 236 阅读 · 0 评论 -
There is no getter for property named 'XXX' in class 'aaa.bbb.ccc'(终极骚操作的解决方法)
使用SpringBoot整合Mybatis时,遇到了像标题的异常,博主当时是用Bean类对象作为参数的,所以百度了很久都没有建设性答案。贴一下报错的xxxDao文件和xxxMapper.xml文件:package com.cjs.dao;import com.cjs.bean.User;import org.apache.ibatis.annotations.Mapper;imp...原创 2018-10-30 23:00:50 · 2370 阅读 · 0 评论 -
从一串数字里删除k个数字,使得新的那串数字最小
最近接触一道有趣的算法题,意思是:给定一串数字,这串数字有可能大于long的最长长度,譬如12542670021,从这串数字中删除k个数字,使得新数字串在所有可能性结果中最小,那么应该删除哪k个数字呢? 下面给出思路和代码,以及代码的优化。 当然,数字的大小高位影响最大,所以首先考虑的是最高为,即从最左边开始。1 2 5 4...原创 2018-11-28 20:04:51 · 2430 阅读 · 0 评论 -
Timer类的schedual()与schedualAtFixedRate()的追赶性区别
使用Timer类对逻辑进行预设时,常用到两个方法,一个是schedual,另一个是schedualAtFixedRate。两者都有多种重载方法,当预设的执行时间在当前时间之后,那么两者执行的效果是完全一样;但是,反之,却出现一个很大的区别,就是追赶性。 schedual方法是不具备追赶性,而schedualAtFixedRate就具备追赶性,到底什么是追赶性呢?下...原创 2019-01-13 22:24:15 · 812 阅读 · 0 评论 -
GOF设计模式——Iterator模式
Iterator,自然而然想到的是用于集合遍历的迭代器Iterator,没错Iterator模式就是指这个意思。 先来看一段代码:int[] array = new int[10];for(int i = 0; i<array.length; i++){ System.out.println(array[i]);} 上面是...原创 2019-01-18 17:30:17 · 126 阅读 · 0 评论 -
多线程——重入锁
当某个线程请求一个由其它线程持有的锁时,该线程就会进入等待或者阻塞状态,一直到持有锁的线程释放锁,然后再去竞争获取锁。然而,内置锁(即Synchronized修饰的锁对象)是可重入的,因此如果某个线程试图获得一个已经由它自己持有的锁,那么它会成功获得此锁,这就是所谓的重入锁,也可以理解为锁的重入。 “重入”,意味着获取锁的操作的粒度是“线程”,而不是“调用”,“调...原创 2019-01-17 13:25:36 · 360 阅读 · 0 评论 -
多线程的Lock锁——ReentrantReadWriteLock
上一篇讲到ReentrantLock是排他性,一方面保证了线程的绝对安全,但另一方面降低了效率。对于一些不需要操作实例变量的方法中,有另外一种锁可以提高运行效率,这种锁就是ReadWriteReentrantLock。 ReentrantReadWriteLock,也称为读写锁。读写锁有两个锁,一个是读操作相关的锁,也叫共享锁;另一个是写操作相关锁,也叫排他锁。...原创 2019-01-10 23:10:22 · 176 阅读 · 0 评论 -
多线程的Lock锁——ReentrantLock
在Java多线程中,可以使用synchronized关键字来实现线程之间的同步互斥,但在JDK1.5中新增了Lock锁,同样可以实现同样的效果,并且扩展功能上也更加强大,比如嗅探锁定、多路分支通知等功能,而且使用上也更灵活。 Lock锁分为两类:ReentrantLock和ReentrantReadWriteLock。这里介绍ReentrantLock类的基础...原创 2019-01-10 22:54:11 · 332 阅读 · 0 评论