
java
文章平均质量分 64
茄子_土豆
生命不息,学习不止
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
尾递归
记录一个妙的递归,递归次数始终用一个栈先来看,多个栈的情况 求n的阶乘int fun(int n){ if(n==1){ return 1; }else{ return n*fun(n-1); }}上面的结果会在栈顶反回,而最出的计算发生在栈底 fun(1)最终结果 432*fun(1)注意这里的 4 ,3 ,2 都需要算出来。【现在你还不理解这句话,接着看下面】下面看只用一个栈,但是每次调用还是从前的栈int fun(int n,int result)原创 2021-03-11 18:44:29 · 96 阅读 · 0 评论 -
总结如何用 AbstractQueuedSynchronizer实现一个同步组件
1 创建一个名字为 MyTestLock接口 implment Lock2 在 MyTestLock中 创建一个内部类 MyTestSyn 但是继承AbstarctQueuedSynchronizer3 AbstarctQueuedSynchronizer 中有y原创 2021-03-10 09:17:23 · 94 阅读 · 0 评论 -
classLoader 介绍
先声明本文摘自:https://www.cnblogs.com/tuning/p/6943427.html以下内容紧凑,但相信看下去会对于我们平时对于java的一些疑问和模糊的地方有一定解释!!!先解决几个问题:InputStream is = getClass().getClassLoader().getResourceAsStream("helloworld.properties");...转载 2018-10-14 22:20:56 · 259 阅读 · 0 评论 -
间谍高度(上帝视角)之redis分布式锁
间谍高度(上帝视角)之redis分布式锁一 写作动机的初衷1.1 分享与留下二 分享2.1 间谍高度2.2感受三 留下3.1专业技术的思考四 redis分布式锁的内容4.1代码4.2结尾撒花一 写作动机的初衷1.1 分享与留下 编写前,就是忍不住唠叨两句,写博客的初衷,并没有那么强意志力,想不停的输出,很多情况下写博客,更多是想记录一些感悟来分享给有相同感触的朋友,并且也是为了我自身感悟的梳理和反思。用文字记录的方式,写原创 2020-12-08 00:10:41 · 186 阅读 · 0 评论 -
笔录getResource() 与 getClassLoader().getResource()
结论:1Class.getResource(String path)path不以’/'开头时,默认是从此类所在的包下取资源;path 以’/'开头时,则是从ClassPath根下获取;Class.getResource和Class.getResourceAsStream在使用时,路径选择上是一样的。2Class.getClassLoader().getResource(String path)path不能以’/'开头;path没有 ‘/’ 是从ClassPath根下获取;Cla原创 2020-12-03 15:53:31 · 200 阅读 · 0 评论 -
redis源码安装redis-6.0.9 版本
源码安装redis-6.0.9 版本本文目标:学习内容:下载包安装ReadMe同时多个实例启动作为开机服务启动赠人玫瑰,手有余香,你的关注,我的动力!本文目标:基本内容,安装redis-6.0.9版本引申内容,正确安装所有版本的redis,及其他工具的方法学习内容:下载包废话不多说,开始吧粘贴复制好的链接地址,可以去掉对应的url ,来查看其他的版本的redis,例如https://download.redis.io/releases可查看更多的版本下面开始准备,下载在Linu原创 2020-11-11 23:36:56 · 1431 阅读 · 0 评论 -
idea~不定时更新
idea~不定时更新类结构图类结构图快捷键ctrl+shift+alt+u 或者ctrl+shift+alt+s也可以设置原创 2020-09-12 13:43:42 · 132 阅读 · 0 评论 -
logstash插件开发环境搭建+kafka-input插件代码
文章目录背景:1 总体介绍1.1 ruby介绍1.2 Gem介绍1.3 Bundler介绍2 环境安装2.1 Windows2.1.1 安装Jruby2.1.2 RubyGem/bundler2.1.2.1 安装RubyGem2.1.2.2 The Gemspec/Gemfile2.1.2.2.1 The Gemspec2.1.2.2.2 Gemfile2.1.2.2.3 安装bundler2.1.2.3 踩坑问题ssl2.1.3 安装RubyMine2.2 Linux2.2.1 rvm安装2.2.2 Jr原创 2020-08-14 22:23:42 · 1773 阅读 · 0 评论 -
ArrayList-添加,删除原理-源码扩容grow(int minCapacity)
文章目录总结1预备知识2源码分析源码:add(E e) 原理实现源码:grow(minCapacity) ArrayList核心源码:remove(int index)删除实现赠人玫瑰,手有余香,你的点赞,我的动力更多分享可见:总结所谓动态数组的扩容,就是包装下面这个api 。Arrays.copyOf(elementData, newCapacity);没有耐心的小伙伴直接跳转到 grow(minCapacity) 目录处1预备知识运用:1 Arrays.copyOf(elementD原创 2020-07-10 15:43:59 · 782 阅读 · 0 评论 -
通俗易懂HashMap为何喜欢2的倍数扩容,(数组容量是2的次幂)
aa原创 2020-04-03 16:15:16 · 3148 阅读 · 7 评论 -
spring源码中,委托模式的个人小感受
委托模式代码举例感受spring 源码中委托模式的感受开始委托模式代码注:不属于 23 种设计模式之一,是面向对象设计模式中常用的一种模式。public interface Cook { void cook();}public class 川菜厨子 implements Cook { @Override public void cook() { ...原创 2020-02-01 13:37:12 · 501 阅读 · 0 评论 -
3pc简介
3pc :阶段一:CanCommit1协调者向参与者发出CanCommit ,询问是否可以提交事务,如果所有参与者都反馈yes 才能进入下一个阶段(这一个阶段时不锁表)优点:不像2pc 第一个阶段就开始锁表,3pc的阶段一是为了先排除个别参与者不具备提交事务能力的前提下,而避免锁表。阶段二:PreCommit2 当协调者向所有的参与者发出 PreCommit的命令时,如果所有参与者反...原创 2020-01-27 14:07:18 · 3152 阅读 · 0 评论 -
HikariCP被号称为性能最好的Java数据库连接池,如何配置使用----转载一篇极度舒适的文章
转载作为记录用!!!HiKariCP是数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他连接池。原文地址:http://blog.youkuaiyun.com/clementad/article/details/46928621官网:https://github.com/brettwooldridge/HikariCP为何要使用HiKariCP?这要先从BoneCP说起:什...转载 2020-01-19 16:39:20 · 693 阅读 · 0 评论 -
java 到底是值传递还是引用传递
代码先行,原理后知后面有图解释证明它是拷贝这里可能你会疑惑,变回来怎么就能证明入参是拷贝,而不是引用本身,你有这个疑问是因为概念不清!,请看下面的结论和定义。摘抄整理。。。。。。摘自:原文链接:https://blog.youkuaiyun.com/xiaojinlai123/article/details/88678367定义:值传递:指在调用函数时将实际参数...原创 2020-01-06 17:09:39 · 553 阅读 · 0 评论 -
一个字符串进行编码,存储空间最少----------------------------------哈夫曼树实现
注意: 编码来自, 数的路径,规则是左子树的路径为0 右子树路径为1,数据存储在叶节点上,由于每个叶节点的路径是唯一的,(二叉平衡树的特点每个叶节点路径是唯一的)构建过成:先从最小的开始相加 用倒数第一次小于倒数第二小的数字相加得到父节点package com.jvm.peng;import java.util.ArrayList;import java.util...原创 2019-07-07 15:28:18 · 413 阅读 · 0 评论 -
静态代理动态代理
Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。(为了保持行为的一致性,代理类和委托类通常会实现相同的接口)动态:在程序运行时运用反射机制动态创建而成。静态代理:接口public interface UserManagerDao {...原创 2019-07-14 11:23:47 · 171 阅读 · 0 评论 -
DOM解析与DOM4J
今天温习了一下DOM解析,记录关键点,以次加强记忆和理解1 DOM 把XML 文件映射成一个倒挂的“”“树”,以根元素为根节点,每个节点都是一个对象,通过这些对象获取信息, 具体解析步骤如下:1 创建解析器工厂2由工厂创建解析器3得到Document 对象,即Dom树DocumentBuilderFactory dbf = DocumentBuilderFactory...原创 2018-10-19 23:12:37 · 490 阅读 · 0 评论 -
总结了map 四中方式遍历
import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class TestMap { public static void main(String[] args) { Map<Integer, String> map = new HashMap<...转载 2018-10-17 11:33:59 · 120 阅读 · 0 评论 -
异常打印:e.toString()与e.getMessage()与e.printStackTrace()的不同
e.toString():仅仅打印异常的类型,例如:NullPointException ,ClassNotFoundException,OutOfBoundException........等e.getMessage():仅仅打印错误的原因 ,如空指针错误就打印null,如是计算除数为0 即 int a = 20/0 ,就打印/by zeroe.printStackTrace():就厉害...原创 2018-10-06 12:55:06 · 2028 阅读 · 0 评论 -
Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Canno
Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory问题就出现在这句话 :<property name="username" value="${username}...原创 2018-09-01 13:08:39 · 45346 阅读 · 10 评论 -
web.xml中webAppRootKey
日志的配置,有两个参数,第一个参数:log4jConfigLocation 值:classpath:log4j.properties第二个参数:webAppRootKey 值:SMBMS-NEW.root不明白这两个参数怎么来的怎么就要配置,下面满足自己的好奇,到底该如何查看源码,重点是为了培养“语感” 首先点进去org.springframework.web.ut...原创 2018-08-31 10:48:12 · 1470 阅读 · 0 评论 -
java连接池的maxIdle该如何配置
java连接池的maxIdle该如何配置maxIdle值与maxActive值应配置的接近。 因为,当连接数超过maxIdle值后,刚刚使用完的连接(刚刚空闲下来)会立即被销毁,若maxIdle与maxActive相差较大,在高负载的系统中会导致频繁的创建、销毁连接,连接数在maxIdle与maxActive间快速频繁波动, 高负载系统的maxIdle值可以设置为与maxActive相同或设置...原创 2018-08-30 20:02:52 · 10324 阅读 · 0 评论 -
注解
今天学习了SpringBoot 发现注解越来越多了,之前SSM 还好,但现在似乎必须要知道这些注解的具体实现才能更容易去学SpringBoot 中的这些注解定义,今日特记记录于此 使用@interface自定义注解,就会自动继承java.lang.annotation.Annotation ,格式是这样的 public @interface 注解名 {定义体}而定义体中的每个方...原创 2018-12-01 22:40:43 · 140 阅读 · 0 评论 -
并发编程 之volatile 关键字 和 单例模式的双重检查
介绍此关键字 需要先理解这几个概念高速缓存: 计算执行程序时每条指令都是在cpu 中执行,而程序临时数据存放在物理内存中,写入和读取数据的速度比cpu 执行的指令速度慢,高速缓存就解决了此问题,在读取数据与写入数据是都是放在高速缓存中,其实是高速缓存是将主内存中需要用的复制一份到高速缓存中,然后在高速缓存中计算。比如 i = i+ 1 首先 读取主内存 i 复制到...原创 2019-05-05 09:48:17 · 375 阅读 · 1 评论 -
浅谈hashMap 结构
1 首先哈希hash,散列,直译为哈希。哈希表,即为散列存储结构,采用散列技术2结构数组 + 链表,图示:将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表(Hash table)使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash c...原创 2019-05-06 23:04:45 · 132 阅读 · 0 评论 -
分析jdk 1.8 ConcurrentHashMap 的put 方法
如有转载请注明出处https://blog.youkuaiyun.com/weixin_41955327/article/details/90228701public V put(K key, V value) {//点击进入putVal return putVal(key, value, false);}/** Implementation for put and putIfAbsent...原创 2019-05-15 10:56:53 · 1176 阅读 · 1 评论 -
建造者模式浅谈 与工厂模式的区别
感谢您的阅读。如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励。谢谢! 转载请注明出处哈https://blog.youkuaiyun.com/weixin_41955327/article/details/92145734创建对象时构造器参数太多怎么办? 并且后期迭代可能出现新的成员变量岂不是要写参数? 所以用builder模式 即建造者模式,用在1、5个或者5个以上的成员变量2、参...原创 2019-06-15 21:29:59 · 2803 阅读 · 2 评论 -
枚举使用
学习一个东西是为了解决问题,而不是秀儿................1 枚举帮我们解决什么问题第一个功能:枚举帮我们定义状态请看我们平时开发一定会有这么多的状态标志来用,但是这样用真的好吗?所以用枚举代替int 常量!!!//延时订单状态 public static final int ORDER_DEPOT_UNPAY = 0; //public ...原创 2019-06-16 14:42:44 · 159 阅读 · 0 评论 -
策略枚举
即上一篇枚举使用,接续深入介绍枚举的巧妙使用,其实策略枚举就是技巧性的代码编写,对于枚举中的抽象方法相应的枚举类型是需要实现这个抽象方法,这样会有个弊端,可能有的枚举类型需要实现的方法内容是一样的,这样显然看来代码会很重复,针对这个问题可以使用策略枚举,这中策略枚举的的思想就是代码的重用,重点就是如何巧妙实现代码的重用下面看代码 *类说明:加班费计算,工作日加班2倍,节假日3倍...原创 2019-06-16 16:23:49 · 1790 阅读 · 1 评论 -
java 自带的小命令 javac
今天要用 windows 下的dos 命令行来执行一个小demo 发现了如下小坑使用命令 在当前 .java 文件中 执行 javac Hello.java ,执行成功并且在当前文件夹下坑:找不到或无法加载主类第一个中情况猜想CLASSPATH 下的配置不对".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;...原创 2019-06-11 21:39:09 · 162 阅读 · 0 评论 -
简单学习class
Class对象的创建与使用(文章出自:https://www.cnblogs.com/guohaien/p/7350331.html)类与Class对象类是程序的一部分,每个类都有一个Class对象,即每当编写并且编译一个新类的时候就会产生一个Class对象。当程序创建第一个对类的静态成员的引用的时候,会将该类动态加载到JVM中,这个说明了类的构造起器也是一个静态方法,即使在构造器之前并没...转载 2018-10-29 17:32:47 · 143 阅读 · 0 评论