自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

荣兄2016的博客

一个非科班程序员小白的进阶之路

  • 博客(65)
  • 收藏
  • 关注

原创 2024计算机Java毕业设计选题300例+,包含部署与在线演示

整理了一些手上感觉不错的管理系统,还提供了演示系统,需要的可以联系一起看下。

2023-10-13 15:27:04 68

原创 代码检查清单

代码是按照编码指南编写的吗?代码能够按照预期工作吗?文件是不是在合适的位置?支撑文档是不是充分?代码是不是易于阅读、易于理解?代码是不是易于测试和调试?有没有充分的测试,覆盖关键的逻辑和负面清单?名字是否遵守命名规范?名字是不是拼写正确、简单易懂?名字是不是有准确的意义?代码的分块是否恰当?代码的缩进是否清晰、整洁?有没有代码超出了每行字数的限制?代码的换行有没有引起混...

2019-11-30 15:09:46 347

原创 Java等待通知机制

等待 - 通知机制线程首先获 取互斥锁,当线程要求的条件不满足时,释放互斥锁,进入等待状态;当要求的条件满足时,通知等待的线程,重新获取互斥锁实现synchronized调用wait() 线程被阻塞 等待。进入互斥锁的等待队列调用 notify()/notifyAll() 通知锁定的是this 即 this.wait()考虑因素互斥锁线程要求的条件何时等待何...

2019-08-11 15:21:36 183

原创 访问者模式

定义表示一个作用于某对象结构中的各元素的操作,使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作。适用场景系统具有稳定的数据结构角色抽象访问者vistor访问者抽象元素类element元素类结构对象ObjectStructure优点符合单一设计原则具有良好的扩展性感想在学习设计模式时,一定要理解模式的适用性。必须做到使用一种模式是因...

2019-07-22 21:30:12 126

原创 解释器模式

应用正则表达式浏览器简单语法分析工具spring的解析器优点很容易的扩展和改变文法缺点许多规则的文法管理和维护成本高效率低下,递归实际项目中使用较少结构抽象解释器终结符表达式 R=R1+R2 R1,R2就是终结符表达式非终结符表达式 R=R1+R2 +就是非终结符表达式环境角色 给各个终结符具体的值...

2019-07-17 20:59:34 87

原创 享元模式

定义运用共享技术支持大量细粒度的对象结构内部状态存储在享元对象内部的,不会随外部环境的变化而变化,状态是可以共享的外部状态随着环境的变化而变化,状态不可共享,保存在客户端,需要时再传入享元对象内部组成角色抽象享元具体享元非共享具体享元享元工厂类分类单纯享元模式在单纯享元模式中,所有的具体享元类都是可以共享的,不存在非共享具体享元类。...

2019-07-14 14:46:31 68

原创 中介者模式

定义用一个中介对象封装一系列的对象交互,使各对象不需要显示的互相引用优点减少类之间的耦合由于对象之间的协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中。这样关注对象就从各对象本身的行为中转移到各对象的交互上,也就是站在更宏观的一个角度来看待系统缺点集中管理,使得中介者变得极为复杂.维护起来具有一定的难度应用场景一般应用于一组对象定义良好但是复杂的...

2019-07-13 17:43:41 78

原创 责任链模式

定义使多个对象都有处理请求的机会,从而避免请求者与接受者耦合,将这个对象形成一条链并沿着这条链传递该请求,直到有一个对象处理它为止。结构抽象处理角色 Handler具体处理角色 ConcreateHandler纯与不纯的责任链模式纯 对象要么处理,要么不处理不纯 一个请求可以不被终端的处理者处理一般在系统中纯的责任链模式很难存在,如果坚持纯的那么存在的意义一般也不是...

2019-07-12 22:35:54 72

原创 10x程序员工作法读后感

16 为什么你的测试不够好?测试前置准备,执行,断言,清理A-TRIP自动化;全面 覆盖率高;可重复;独立的;专业的;21 你的代码为谁而写编写可维护的代码命名 不需要过多的解释即可理解含义代码是写给谁看与人沟通,缺乏业务背景是写不出好的代码的用业务语言编程把概念区分开来,一个好的命名需要你对业务知识有一个深入的理解领域驱动设计DDD写好代码之前要做两个铺垫设计整体或...

2019-07-10 22:13:46 481

原创 组合模式

组合模式将对象组合成树状结构,以表示部分-整体的层次结构。使得客户对于对象和组合对象的使用具有一致性。好处让客户端一致的使用组合与单个对象清楚定义分层次的对象,表示对象的全部或部分层次坏处设计较为抽象,对于复杂业务具有很大的挑战性,不是都适合此模式角色Component 组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Componen...

2019-06-08 11:12:26 81

原创 代码精进笔记

24 黑白灰,理解延迟分配的两面性延迟分配ArrayList对于使用频率高的类的实现,微小的性能改进,都可以带来巨大的实用价值局部变量占用的资源,也应该需要时再分配,资源的分配和它 的使用也要尽可能地靠近。延迟初始化不到需要的时候不进行初始化内存与cpu之间的权衡考虑线程安全复杂的方法,只有必要时才使用规范点声明时初始化 除非资源消耗比较多27 怎么编写可持续发展的代码?...

2019-04-29 21:07:16 182

原创 观察者模式

定义一种一对多的依赖关系,让多个观察者对象监听某一个主题对象。这个主题对象发生动态变化时,会通知所有观察者对象使他们能够自己更像自己。模式结构抽象主题角色具体主题角色抽象观察者角色具体观察者角色使用场景当一个对象的改变需要同时改变其他对象的时候解除耦合,让耦合的双方都依赖于抽象而不是依赖于具体实现优点松耦合符合开闭原则,当有新的观察者进来时,只需要新增...

2019-04-24 21:04:14 82

原创 java8常用代码片段

最近在新项目上有在用一些java8的语法,虽然java8已经出来了好几年。但是一直少有机会使用,因此接下去会不定期更新该博客,记录工作中常用的一些Java8代码1.合并两个list 为一个map /** * keys [1,2,3,2] values [10,20,30,40] ----> {1:10,2:60,3:30} **/ private static Map&l...

2019-04-15 22:06:17 384

原创 初识Arthas

文档地址https://github.com/alibaba/arthas/blob/master/README_CN.md作用这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样...

2019-04-14 15:17:23 304

原创 如何写好业务代码

一直以来自己对代码质量要求还是蛮高的,非常期待自己能够去写一些基础服务的代码提供给他人用。无奈水平有限,当前只能写一些业务代码也就是俗称的CRUD工程师。今天心血来潮记录一下自己对于如何写好业务代码方面的一些心得体会吧1.理解好业务很重要要记住任何技术的发展都跟业务密不可分,一些脱离业务的技术都是耍流氓。因此在进行编码前一定要跟产品经理沟通确认好要做的目标是否一致2.工欲善其事分享几个个...

2019-01-13 22:03:49 1360

原创 Redis压缩列表

Redis压缩列表概述压缩列表 ziplist 是列表键和哈希键的底层实现之一。为了节约内存而开发构成zlbytes占用字节数ztail头尾的偏移量zllen节点数量entryX列表节点encoding数据类型及长度字节数组1,2,5字节 最高位00,01,10整数最高位11开头content保存节点...

2018-11-29 20:00:19 159

原创 Redis整数集合

Redis 整数集合概述整数集合intset是集合键的底层实现之一,当一个集合只包含数值元素且数量不多时就会使用其作为集合键的底层实现用于保存int16_t,int32_t,int64_t,不会重复数据结构encoding 编码方式length 元素数量contents[] 保存元素的数组,数组保存的类型取决于encoding属性,从小到大顺序排列升级当要向整数集...

2018-11-25 21:34:15 137

原创 Redis跳跃表

Redis 跳跃表概述跳跃表skiplist,是一种有序的数据结构,通过在每个节点中维持多个指向其他节点的指针,达到快速访问的目的。时间复杂度平均O(logn)最坏O(n)因为大部分情况下效率与平衡树媲美,并且实现方式更为简单,故不少程序使用此数据结构代替平衡树。redis中使用跳表作为有序集合的底层实现。另外一个被用到的地方就是在集群节点中当作内部数据结构实现z...

2018-11-24 17:21:14 132

原创 Redis字典对象

Redis 字典对象字典对象,可以对应java中的map 即保存key-value键值对的一类对象set k1 v1在执行完上述命令后就在数据库中产生了一个键为 k1 值为 v1的键值对字典实现哈希表数组size掩码已用数量哈希表节点keyvaluenext指针 链表字典typedictType计算哈希值复制键复制值对比键销毁键...

2018-11-22 22:03:43 202

原创 Idea使用总结(不定期更新)

1.插件篇Free Mybatis plugin, 快速查找xml中的dao方法Lombok plugin 快速生成 setter getter- 添加lombok pom配置或项目中加入lombok.jar常用注解@Getter@Setter@ToString...

2018-11-21 15:46:59 117

原创 Redis链表对象

概述redis中对链表的使用比较广泛,比如用于链表键,发布与订阅,服务器中用于保存客户端的状态信息链表节点的数据结构前置节点后置节点节点值list表头节点表尾节点节点数复制函数dup()释放函数free()match()函数redis链表的特点双端无环带表头和表尾节点长度计数器O(1)复杂度多态可以保存不同类型的值...

2018-11-19 21:42:08 128

原创 Redis的动态字符串对象SDS

字符串对象简单动态字符串SDS用途键值对象缓冲区AOF缓冲区客户端的输入缓冲区定义len 已使用的长度free 未使用的字节数量buf[] char数组 保存字符注意O(1)时间复杂度获取字符串长度防止缓冲区溢出,会自动扩展空间。内存溢出内存泄漏为了解决以上问题 采用未使用空间的两种优化策略空间预分配SDS修改后的长度小于1MB...

2018-11-18 14:10:25 99

原创 从0开始学微服务学习笔记

1到底什么是微服务单体应用部署效率低团队协作开发成本高系统高可用性差线上发布变慢什么是服务化单体应用中通过jar包依赖产生的本地方法调用,改成通过RPC远程方法调用什么是微服务服务拆分力度更细服务独立部署服务独立维护服务治理能力要求高#2单体走向微服务#单体迁移到微服务遇到的问题?服务如何定义服务如何发布与订阅服务如何监控服务如何治理故障...

2018-11-15 15:44:45 678

原创 Mongodb 入门学习笔记

NoSql简介Not only sql,非关系型数据库,用于超大规模的数据存储优点高可扩展性分布式计算低成本架构的灵活性,半结构化数据没有复杂的关系缺点没有标准化有限的查询功能最终一致不是直观的程序关系型数据库的ACID分布式系统优点缺点CAP定理一个分布式系统不可能同时满足以下三个特点一致性(Consistency) (所有节点在...

2018-11-08 16:07:21 135

原创 二分查找及其扩展

#二分查找及其扩展#二分查找法时间复杂度O(logn)实现递归public int binarySearchV2(int[] a,int low,int high,int value) { if(low>high) return -1; while (low<=high){ int mid =...

2018-11-02 22:40:40 163

原创 MYSQL存储过程 踩坑

存储过程该怎么写这周主要就在使用存储过程来修复线上数据使用工具Navicat 创建存储过程mysql开始踩坑一开始不知道存储过程有专门的操作界面创建临时表insert into tmp1(…) select * …一定使用别名而非表名对应的字段一 一对上有更新和插入的地方 开启mysql 事务start transaction;commit;插入临时表前先trunca...

2018-10-19 16:39:00 304

原创 策略模式

#策略模式#最近项目中 if else用的太多 想着重构换一种更为优雅的方式,于是发现了设计模式中的策略模式就是避免if else 很好的一种办法,借此好好学习,仅以本博客记录学习的一些知识点,以便日后回顾。如有不对,欢迎指出。应用场景比如对于一个系统拥有不同类型的客户,针对不同类型的客户提供不同的服务。怎么来处理这一业务逻辑,废话不多说直接先亮出代码,本文代码参考其他一些其他博客。...

2018-09-29 21:40:46 299

原创 有赞 校招 面经

校招已经过去一年,在此挂出去年有赞校招面经,一轮卒 泪奔sychronized 加两个sychronize可以吗? 和可重入锁有什么区别?synchronized拥有强制原子性的内部锁机制在一个线程使用synchronized方法时调用该对象另一个synchronized方法,即一个线程得到一个对象锁后再次请求该对象锁,是永远可以拿到锁的volatileJava内存模...

2018-09-23 15:15:46 1068

原创 Java eclipse如何生成JavaDoc

如何使用eclipse生成javaDoc生成package-info.java 新建包的时候勾选左下方的框框 将对文档的描述写入此文件中,具体的注解等尚未深究右键选择项目Export,选择javadocjavadoc commond,选择路径为 jdk/bin/javadoc.exedestintion 选择导出的位置 由自己选择最后一步 在vm options中写入防止gbk编码...

2018-09-12 21:21:39 268

原创 Java LinkedList源码

LinkedList源码解读实现了List,Deque,Cloneable,Serialzable接口特点 插入删除高效,查找比较慢线程不安全构造方法transient int size = 0;// 链表长度transient Node<E> first;// 头节点transient Node<E> last; 尾节点# 可以看出这是一...

2018-09-06 20:41:40 151

原创 Java ArrayList 源码解读

ArrayList 源码解读数据结构 底层通过数组实现 可以称为 动态数组构造函数// 初始化为空,transient Object[] elementData;public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }public ArrayList(i...

2018-09-02 16:23:14 270

原创 Java HashMap源码解读

Java HashMap源码解读目前网上关于jdk hashmap源码解读的文章已经有很多,而写该博客的主要是为了记录自己对于源码学习过程,期间参考了许多其他优秀博客的理分析思路先整体后细节先简单后复杂实现结构extends AbstractMap<K,V> implements Map<K,V>, Cloneable, S...

2018-09-01 14:23:55 136

原创 Java ThreadLocal 源码解读

ThreadLocal 源码解读之前对于ThreadLocal的用法和原理都没有深入的理解,因此准备学习一番有关于ThreadLocal的知识。ThreadLocal是什么?它为线程提供了线程本地的变量,每个线程都保存有一个变量副本,使得同一个线程在任何时刻访问它的时候都是一致的。它的生命周期跟线程绑定在一起,线程结束生命周期,该变量副本也会被GC。简单说 threadloc...

2018-09-01 09:21:12 129

原创 java内存模型

java内存模型1.java内存模型基础内存模型 JMM 线程之间通信方式主要有 共享内存 java 隐式进行 内存可见性问题消息传递线程之间的共享变量存储在主内存中,每个线程对应一个私有的本地变量为共享变量的副本 两个线程A B之间如果要通信那么需要以下几步 A线程改变本地共享变量副本更新到主内存B线程读取到主内存中A线程更新的变量 本地之前的变量失效必须通过主内存...

2018-08-26 15:12:27 95

原创 我的书单

注 仅以本文记录一下,本人正在读的和觉得比较好的书籍包括但不限于技术类linux 鸟哥的linux私房菜java java编程思想 第四版java并发编程的艺术java并发编程实践深入理解java虚拟机effective java深入分析java web技术内幕spring实战spring源码深度解析java8实战设计模式 head first 设计模式数据库 高...

2018-08-21 21:14:47 204

原创 Java中的并发工具类

java并发工具类今天主要介绍四个java并发常见的工具类 CountDownLatchCyclicBarrierSemaphoreExchangerCountDownLatch用过Thread的join()都知道,join让“主线程”等待“子线程”结束之后才能继续运行。jdk1.5之后提供了CountDownLatch提供了比join更加丰富的功能,是一种共享锁常...

2018-08-21 20:48:34 2655

原创 java多线程之原子类

当程序更新时,如果多个线程同时操作一个变量进行如i++的操作,会造成线程不安全的更新操作,通常采用synchronized来解决这个问题 juc这个包的出现提供了新的解决思路,提供的原子操作类 简单,高效,线程安全 基本类型 AtomicIntegerAtomicBooleanAtomicLong提供的用法都一致,以AtomicInteger为例 int addAndGet(int...

2018-08-18 15:42:25 487

原创 java多线程之锁

锁锁的分类偏向锁轻量级锁死锁场景 两个线程分别占有另一线程需要的资源,等待对方互相释放锁,或是某一线程释放是发生异常没释放掉,导致系统不可用的一个现象。分析 jps 查看java进程的pidjstack pid dump哪个线程出现了问题避免死锁的方法 避免一个线程同时获取多个锁避免一个线程在锁内同时占有多个资源,经理保证每个锁只使用一个资源尝试使用定时锁,如 l...

2018-08-15 22:09:22 123

原创 浅谈自己对于spring aop的理解

开始学习spring就被重点的关注ioc和aop这两个关键的部分,今天着重了解下关于aop的一些实现和原理。 aop 面向切面编程 即可以在业务逻辑前后加上需要的无关业务的处理如日志,权限控制等操作,与实际的业务相分离。首先需要介绍的技术就是AspectJ 了解了这个之后会对spring的aop实现有对比显示出两者的差异。aspectJ是一个由java实现的aop框架,通过对编译期的代码进行...

2018-07-28 15:01:26 1688

原创 单例设计模式

这两天看微信公众号的时候看到一个面试问题,”spring中是如何使用单例设计模式的”,赶紧回顾一波单例设计模式开门见山,什么是单例模式呢?就是整个系统中只出现一个类的实例该如何实现呢 一共有好几种方式懒汉 线程不安全public class Singleton { private static Singleton instancce; private Sin...

2018-07-26 22:11:09 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除