自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

马赛琦的博客

每天要给自己充电,加油,努力。个人博客: www.masaiqi.com

  • 博客(34)
  • 论坛 (1)

原创 Spring Bean的生命周期(一图流+详细说明)

在我的博客阅读本文1. 前言Spring是一个IOC(Inversion of Control,控制反转)容器框架,拥有DI(Dependency Injection,依赖注入),DL(Dependency Lookup,依赖查找 等功能。认为一个IOC框架最基本要有以下功能:配置解析对象创建对象生命周期管理本文基于Spring-5.2.2.RELEASE版本进行论述,为了简明扼要,在展示部分代码的时候省略了一些细节。Spring Bean的生命周期总结因为没有一个正式的文档,因此是.

2020-10-20 12:41:10 34 2

原创 HashMap源码的细节与启发

在我的博客阅读本文HashMap源码的细节与启发1. 前言这些天心血来潮想认认真真过一遍JCF的源码实现,在阅读到HashMap的时候发现自己之前还是太肤浅,很多地方没能理解JDK作者的巧思,因此想记录下来自己学习过程中的收获。在正式开始之前先吹一波美团技术团队,之前看并发编程的时候也是搜到不少美团技术团队的文章,写的既专业又接地气,这次看HashMap也多亏美团技术团队写的文章:《Java 8系列之重新认识HashMap》2. 哈希表首先,HashMap其实是**哈希表(Hash tabl.

2020-07-27 21:58:48 62

原创 synchronized关键字

在我的博客阅读本文1. 首先挂一个图图片摘自美团技术团队,个人觉得写的特别好:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6usd8Hzc-1592491318849)(https://img.masaiqi.com/20200618223900.png)]2. synchronized的锁作用范围Java锁作用范围有两种:一种是类的实例对象的锁(对象锁)。一种是类的class对象(类锁)。比如:在一个静态方法前面加synchronized关键字.

2020-06-18 22:42:24 52

原创 JMM(Java Memory Model)Java内存模型

在我的博客阅读本文1. 并发编程模型在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明(不可见)。2. Java内存模型的抽象结构从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(MainMemory)中,每个线程都有一个私有的本地内存(LocalMemory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并.

2020-06-18 00:02:45 62

原创 volatile学习笔记

在我的博客阅读本文1. volatile关键字的作用可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。有序性(阻止指令重排):volatile标志的变量的写不能与之前的代码重排序;volatile标志的变量的读不能与之后的代码进行重排序(一般记为 写前读后 后文详细说明)原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。2. volatile关键字的原理我们声明一个volati.

2020-06-16 21:58:56 67

原创 并发编程中的原子性与可见性

在我的博客阅读本文1. 可见性1.1 什么叫做可见性可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。1.2. 为什么会有可见性问题可见性问题的根本原因是因为现代CPU在设计上解决CPU运算速度与内存读写速度不匹配问题而导致的。这种访问速度的显著差异,导致CPU可能会花费很长时间等待数据到来或把数据写入内存。基于此,现在CPU大多数情况下读写都不会直接访问内存(CPU都没有连接到内存的管脚),取而代之的是CPU缓存,CPU缓存是位于CPU与内.

2020-06-16 12:25:36 78

原创 设计模式总结(GOF23)

在我的博客阅读本文参考原文设计模式分类GoF的23种设计模式的功能1. 单例(Singleton)某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。分为饿汉式,懒汉式,double-check2. 原型(Prototype)将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。比如Java的clone方法3. 工厂方法(...

2020-03-01 15:41:40 38

原创 分布式系统的一致性理论(CAP和BASE)

在我的博客阅读本文一致性模型强一致性当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值,直到这个数据被其他数据更新为止。但是这种实现对性能影响较大,因为这意味着,只要上次的操作没有处理完,就不能让用户读取数据。弱一致性系统并不保证进程或者线程的访问都会返回最新更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到...

2020-02-29 17:10:45 73

原创 纯注解形式的数据源动态切换实现(基于SpringBoot)

在我的博客阅读本文有一段时间没有更新博客了,其实这段时间也有在写一些框架的使用,比如quartz的基本使用等等,后来都没有发布出来,主要还是感觉过于简单,对于博客的定位我希望能讨论一些更深层次的设计方面的东西。最近公司有个需求,客户试用我们的产品到期了,签了正式的合同,准备迁移到生产环境,但是又想要保留测试的时候数据,因此我们开发组准备设计一个迁移程序,要考虑后期拓展与重复使用。这其中有个重...

2019-12-02 10:12:10 175

原创 软件设计原则学习

在我的博客中查看本文软件设计原则学习最近在学习GOF23,感觉前提一定要清楚了解设计的原则,不然无法完全体会设计模式的优势。因此也就兴冲冲的好好钻研了一波设计原则。1. 开闭原则开闭原则(Open-Closed Principle,OCP)是指一个软件实体(如类、模块、函数)应该对扩展开放,对修改关闭。所谓开闭,其实是对扩展和修改两个行为的一个原则,强调的是用抽象构建框架,用实现...

2019-10-28 21:35:59 39

原创 一个利用观察者模式和策略模式对代码进行解耦优化的例子

在我的博客阅读本文1. 前言观察者模式(Observer Pattern):当一个对象被修改时,则会自动通知它的依赖对象。属于行为模式。(一对多模式适用)策略模式(Strategy Pattern):一个类的行为或其算法可以在运行时更改。属于行为模式。关于这两种设计模式详细的介绍,网上一搜一大把,不复赘述。本文基于这两种设计模式,提供一个具体的业务场景作为实例,表述一种模块间解耦和优...

2019-10-14 13:50:33 162

原创 idea的lombok插件支持@SuperBuilder注解啦

在我的博客阅读本文1. 前言今早进公司打开idea,弹出更新提示,简单看了下,原来是idea的lombok插件更新了,惊喜的发现update log上写着Add support for @SuperBuilder。为什么说是惊喜呢?因为之前也有用到这个的场景,去官网认认真真看完了@SuperBuilder的用法以及描述,刚准备大展拳脚,结果发现idea上怎么写都识别不出来,后来去插件的gi...

2019-10-09 22:29:20 7725

原创 公司MES项目现场落地实施总结

这篇博文以一名程序员职场新人立场去记录这次落地实施的感受在我的博客阅读本文这些天代表公司这里出门浙江台州玉环市进行MES系统的现场落地实施,因为是人生中第一次出差,所以兴奋也是有的,但是中间也遇到各种各样的问题,心情是兴奋到失落到坦然面对,为什么这么说呢,且听我下面慢慢道来。首先最直观的环境变化,环境的变化有很多方面,衣食住行和原来都截然不同,不过本身作为江苏人,吃浙江菜也很吃得惯,吃倒...

2019-10-09 22:27:26 431

原创 RocketMQ学习与部署Docker记录(后续更新)

在我的博客阅读本文1. RocketMQ简介RocketMQ是一个分布式消息和流数据平台(消息中间件),具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性。RocketMQ是2012年阿里巴巴开源的第三代分布式消息中间件,2016年11月21日,阿里巴巴向Apache软件基金会捐赠了RocketMQ;第二年2月20日,Apache软件基金会宣布Apache RocketMQ成为顶级项...

2019-09-12 14:59:21 334

原创 React学习记录

不会前端的java工程师不是好java工程师在我的私人博客查看本篇博文前言俗话说的好,不会前端的java工程师不是好java工程师。笔者在之前已经学习过Vue的相关技术栈,事实上笔者的毕业设计也是用Vue做的~除了Vue,React和Flutter如今也是如日中天般的火爆,今天这篇文章记录一下学React的过程。后续应该随着学习的深入还会不断更新,所以这里排个update log,方便记...

2019-09-03 18:09:18 117

原创 博客被挖矿程序xmrig入侵以及我的解决方案(docker安全)

文章记录了一次由于Docker配置的漏洞导致的挖矿程序入侵的发现过程以及解决方案。由于本人时间有限,没有时间去深度学习linux的相关运维知识,所以解决方案可能是比较浅显的,还望您在阅读本文前知悉。前言2019年9月2日凌晨,我正准备关闭电脑睡觉,突然收到阿里云的一条短信,说是服务器被挖矿软件入侵了,一开始我是不相信的,就我这草履虫一样的网站,应该没有任何会来才对啊,后来查看了一下阿里云后...

2019-09-03 11:49:23 2339 6

原创 Nginx+Docker+Jekyll+阿里云ECS+备案搭建博客全记录

“记录本站搭建全过程,为想要自己搭建博客的朋友提供一个参考”前言与准备DockerDocker是一个很方便的跨平台应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上。Docker中各个容器质检各自是一个“沙箱”,彼此隔离,但其也提供了丰富的容器之间互联的方式使得各个容器质检能够既保持独立,又能彼此交互。Docker...

2019-08-28 17:19:47 372 4

原创 LinkedList与ArrayList的addAll方法比较

这次来从源码角度分析一下LinkedList与ArrayList的addAll方法之前有研究过LinkedList和ArrayList的remove()方法源码,发现二者分别是基于双向链表和一个数组进行实现的ADT,在后面的开发中,我也就天真的认为LinkedList是直接让list的后继元等于要加的list的第一个元素的引用就完事了,通过对源码的分析,事实并非如此。First of all...

2019-06-13 09:01:37 1106

原创 个人Tips

这里用来整理一些碎碎的笔记Git相关常用命令删除远程分支git push origin -d "#8" 更新远程分支git remote update origin --prune/-p图标形式查看记录git log --graph查看分支git branch -a //查看所有分支git branch -r //查看远程分支git branch /...

2019-06-12 14:47:56 55

原创 Mysql树形结构(表内自关联)设计与查询遍历方式

这篇博文来讨论一下在mysql中运用树形结构进行设计,并进行查询的方式背景最近在做公司的一个工业相关的项目,其中有一个需求,做一个BOM(Bill of Material 物料清单)的实现。关于BOM这里不做过多解释,大家自行百度,我这里遇到的问题是在描述产品结构时,我这里的产品由不定数量子产品组成,而每一个子产品又有不定数量子产品组成,依次类推,如下图所示:至此我们可以看出,我们需要一...

2019-06-12 14:46:09 2259

原创 Oracle培训总结

之前其实已经有一篇关于oracle培训的记录,本文是更加详细的总结培训的内容,上一篇更侧重于培训的经过。ADW介绍ADW是Autonomous DataWarehouse的缩写,译为自治数据仓库。对于ADW的理解,主要分为“自治”和“数据仓库”两个概念。数据仓库数据仓库(简称为数仓)是一个很耳熟能详的概念了,我摘录了一些百度相关词条:数据仓库,英文名称DataWarehouse,...

2019-05-14 15:22:45 292

原创 LinkedList与ArrayList通过Iterator迭代器源码效率探究

前言先来点废话,最近发现每日总结效益太低,不适合博文,因此以后不写每日总结,多写一些干货和学习记录,个人感觉这样更适合我。最近在学习《数据结构与算法分析-java语言描述》这本书,书的3.3.4小节探索对于remove()方法而言ArrayList和LinkedList的区别ArrayListCollection接口源码public interface Collection<E&gt...

2019-05-14 14:57:05 227

原创 Oracle培训记录

2019年5月8号至5月9号两天有幸参加了甲骨文杭州的培训,针对本次培训,通过本文进行记录。两天培训第一天ADW介绍以及使用(主要是数据导入)ADW服务于SasS PaaS IaaSExadata + oracle database + oracle cloud 实现"自治数据库"(包括:ADW(国内主推) or ATPOAC介绍以及使用OAC学习网站oracle文档网站第...

2019-05-08 23:23:28 264

原创 2019年5月8日_今日总结

今天主要是参加了Oracle的培训,已单独写了一篇博文今天回来站了两小时–房间门锁坏了开不了–

2019-05-08 23:03:21 55

原创 2019年5月7日_今日总结

今天博客正式书写从印象笔记转移到了vscode上来,vscode写markdown着实舒服很多,除此以外,搭建了一个自己的个人博客,大家有兴趣可以来一起交流下博客搭建一波三折,基于coding+github双部署了hexo博客——个人博客。同事推荐的一个框架:Quartz,定时任务处理很好用,目前不清楚SpringBoot自带定时任务有什么区别,今天有时间研究一下明天参加Oracl的ADW...

2019-05-08 00:56:22 29

原创 2019年5月6日_今日总结

昨天一天差不多吧开发任务结完,今天要开始认真复习数据结构,同时把之前几天忘记看的一些小知识补上git建议教程git相对详细教程贴个图:之前说过,要研究下mybatis模糊查询,目前记住两种方式://方式一SELECT * FROM user WHERE name like CONCAT('%','吴','%')//方式二SELECT * FROM user WHERE...

2019-05-06 19:33:32 64

原创 2019年5月5日_今日总结

五一放假归来,把需求开发都补一补mybatis添加之后通过getId的方法获取添加对象的id有两种方式:在标签也添加useGeneratedKeys=“true” keyProperty="id在insert标签内部,insert语句之前加上<selectKey keyProperty="id" order="AFTER" resultType="java.la...

2019-05-05 18:25:28 53

原创 2019年4月29日_今日总结

又是元气满满的一天,今天也要加油努力。今天同事写的一条注释逗到我了哈哈,这是一个性情中人:其实这个地方我之前也感觉很多时候频繁setget很烦,但是我的考虑角度是反射毕竟会破坏pojo的规范,破坏数据读取的权限方式,这个地方先记录一下,下次看看有没有更好的解决方案。今天一次性把所有bug都提交了。。。困扰了一周了 明天开始动手新需求...

2019-04-29 19:11:44 71

原创 2019年4月28日_今日总结

突然发现好久没写每日总结了。。。公司项目最近进度安排比较紧,习惯不能拉下。最近听一个学长建议,准备把英语再提一提。new Date()和System.currentTimeMillis()区别本质上new Date()就是调用了System.currentTimeMillis(),故如果只要毫秒的话用后者相对效率高一些。今天下班前有时间把Google的java并发包看一下。今天加入了英语流...

2019-04-29 09:14:40 70

原创 2019年4月4日_今日总结

debbo是一个RPC框架(Remote Procedure Call Protocol) 什么是Rpc框架?application.yml和 bootstrap.yml区别 认为bootstrap优先于application进行加载简单研究了下Nacos官网文档,看了下与SpringCloud的集成,一上来遇到一个大坑–@RefreshScope自动刷新配置貌似没有用,提交了一个iss...

2019-04-04 18:15:30 84

原创 2019年4月3日_今日总结

下周六准备参加杭州这里的Nacos的沙龙,得抓紧时间把SpringCloud过一遍,同时为Nacos做一些提前准备(还是有点激动的,第一次参加这种沙龙)) java获取Date对象的两种方式的区别设计模式之命令模式代码(推荐)设计模式之命令模式例子设计模式之工厂模式Hystrix学习了基本的使用,包括仅Hystrix和在Feign中的Hystrix的使用,配置回退方法(或者通过Thro...

2019-04-03 18:36:11 35

原创 2019年4月1日_今日总结

Feign补充:自定义Feign配置(Java代码/属性定义)),手动创建Feign(推荐,更灵活),支持集成(不建议消费者与提供者共享接口,紧耦合,看情况做取舍),Feign日志配置(Java代码/属性定义),Feign构造多参数请求(Post与Get),Feign上传文件(注意@RequestPart注解)拦截器和过滤器的区别HttpBasic基础认证@RequestParam和@Re...

2019-04-01 18:07:41 150

原创 2019年3月29日_今日总结

复习了Eureka,理清了相关概念(Eureka server负责服务注册与服务发现,同时储存相关信息;Eureka client是一个java客户端,有缓存机制,同时简化了与Eureka server之间的交互;Eureka server本质上也是一个client(姑且这么理解);Eureka client 包含了服务消费者与服务提供者),尝试搭建了一个高可用的Eureka Server集群与...

2019-03-29 18:44:30 68

原创 今日知识

TinyInt长度为-128 ~ 127 用java中Byte类去对应 保留 1位小数: (Double/Float)Math.round(result.getPracticePercent() * 10) / 10  10表示小数位数,如果是2位就是100生成min~max之间的随机数公式:b jMath.floor(Math.random()*(max-min+1)+min)...

2018-05-07 22:19:53 83

空空如也

ssh框架项目中的ognl.MethodFailedException错误

发表于 2018-06-27 最后回复 2018-06-27

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