自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 我还不懂什么是分布式事务

老大:来,你搞一搞分布式事务吧我:…,啥是事务?我:先从理论学起吧我不懂什么是事务如果事务都不懂,就更不用说分布式事务了,于是我马上开始学习了。事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。事务应该具有 4 个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID 特性。换成比较容易理解的话就是,就是一组操作比如增删改查四个操作要么都成功,要么都失败,不存结果不一致的状态。我不懂什么是分布式事务终于弄明白什么是事务了,又.

2021-03-30 09:39:23 118

原创 工作多年后我更了解了UT的重要性

对于有经验的开发写单元测试是非常有必要的,并且对自己的代码质量以及编码能力也是有提高的。单元测试可以帮助减少bug泄露,通过运行单元测试可以直接测试各个功能的正确性,bug可以提前发现并解决,由于可以跟断点,所以能够比较快的定位问题,比泄露到生产环境再定位要代价小很多。同时充足的UT是保证重构正确性的有效手段,有了足够的UT防护,才能放开手脚大胆重构已有代码,工作多年后更能发现UT的重要。单元测试在敏捷的开发理念中,覆盖全面的自动化测试是添加新特性和重构的必要前提。单元测试在软件开发过程中的重要性不

2021-03-08 22:13:52 477

原创 Java杂谈之缓存

0、缓存最近开发涉及很多缓存的编写,所以聊聊缓存可能会出现的问题1、缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。2、缓存穿透请求缓存中不存在的数据,从而去数据库中查,数据库中也没有,所以无法加到缓存,下次还是直接怼到数据库,所以高并发的时候就导致数据库崩了。如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:

2020-10-09 22:04:58 143

原创 震惊guava竟然有“坑“

由Guava API的一个“坑”说开去最近,团队里边一个兄弟突然叫我:快来看,有个奇怪的事情,无法解释…笔者跑过去一看,是这么一段代码: private static class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = n

2020-09-26 21:13:24 511

原创 Java杂谈之synchronized锁升级

不在犹豫什么是用户态与内核态所有的JVM底层原理逃不开操作系统,从操作系统层面看程序分为内核态和用户态内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。为什么要有用户态和内核态呢?由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, 划分出两个权限等级 – 用户态

2020-08-17 23:33:04 689

原创 java杂谈之并发容器

常用容器前几天和同事xhf、zm走查代码,功能是为了减少频繁你创建FTP开销用线程notify和wait实现了一个FTP池子,当时提的建议就是用java自带的线程集合实现可能更高效,本文整理下JDK自带线程安全的集合,不考虑多线程并发的情况下,容器类一般使用 ArrayList、HashMap 等线程不安全的类,效率更高。在并发场景下,常会用到ConcurrentHashMap、ArrayBl...

2020-04-13 00:46:58 466

原创 java杂谈之线程池

1、为什么要使用线程池受限于硬件、内存和性能,我们不可能无限制的创建任意数量的线程,因为每一台机器允许的最大线程是一个有界值。线程池就是用这些有限个数的线程,去执行提交的任务。然而对于多用户、高并发的应用来说,提交的任务数量非常巨大,一定会比允许的最大线程数多很多。为了解决这个问题,必须要引入排队机制,或者是在内存中,或者是在硬盘等容量很大的存储介质中。Java提供的ThreadPoolExe...

2020-03-22 23:34:26 146

原创 死磕ES之Windows下环境搭建

0、前言ES是一个基于Lucene的分布式全文搜索服务器,和SQL Server的全文索引(Fulltext Index)有点类似,都是基于分词和分段的全文搜索引擎,具有分词,同义词,词干查询的功能,但是ES天生具有分布式和实时的属性。例:多用于搜索引擎自动补全功能首先配置java环境变量,这个就不说了,ES5*以上版本需要jdk1.81、安装 Elasticsearch1.1下载安装...

2019-08-31 22:50:47 628

原创 强悍的Spring之Spring Retry

强悍的Spring之Spring Retry在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活。Spring异常重试框架Spring RetryS...

2019-03-09 21:09:05 308

原创 java如何实现在多时区和夏令时中穿梭

java如何实现在多时区和夏令时中穿梭常用时间格式世界标准时间,其中T表示时分秒的开始(或者日期与时间的间隔),Z表示这是一个世界标准时间2019-02-28T01:47:07.081Z本地时间,也叫不含时区信息的时间,末尾没有Z2019-02-28T09:47:07.153含有时区信息的时间,+08:00表示该时间是由世界标准时间加了8个小时得到的,[Asia/Shan...

2019-02-28 21:34:01 1277

原创 强悍的Spring之spring validation

spring validation实现对Restful请求的数据进行校验1、前言数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,如果数据库中出现一个非法的邮箱格式,也会让运维人...

2019-02-16 15:33:31 30397 3

原创 docker命令图文详解

docker命令图文详解

2022-09-18 23:18:56 878 1

原创 Alook获取站点cookie详细教程

懂得人应该知道,只需要找到pt_key和pt_pin,如果不清楚就全部复制发送到机器人。然后就弹出新开窗口页面,就可以选择无痕浏览。(苹果也有但是收费)

2022-09-11 22:54:57 2015

原创 推荐几款珍藏多年的插件,好用到爆,进来瞅瞅有没有

谷歌浏览器(Google Chrome)不仅拥有极简界面、运行速度快、稳定性高等优点,还有一个优势就是其拥有强大的扩展能力,合理使用插件便可以实现多种功能。下面我就推荐几款珍藏多年的插件Google翻译其实谷歌浏览器就内置了这款插件,当你浏览英文网站时会自动检测,出现按钮时你一点击,就会翻译为中文,对于英语渣的朋友来说简直是福音。同时可以鼠标划词翻译,并且有多重读音可以选择Adblock Plus这是一款屏蔽广告的插件,可以屏蔽大部分网站的烦人广告,还你一个整洁的页面。会屏蔽掉:· 横幅广

2021-11-22 23:22:23 2257

原创 【算法提升计划】算法开篇

一直想着开始刷刷题,即便是不出去面试,也能锻炼下思维逻辑,但是总是半途而废由此便想到了作为学渣的我,高中英文被单词时经常连第一个abandon都记不住,这就跟现在的力扣算法第一题一样,记得多年前其实是看过思路的,现在发现做的还是磕磕绊绊那就趁着掘金活动,把一些题结合这自己的理解,保证每天一道题的速度到春节吧,以此为证单词表中的abandon万事开头难,现在就从单词第一个入手,这道本身也不难,所以就从他开始了two sum今日题目给定一个整数数组 nums 和一个整数目标值 target,请你在

2021-11-17 16:57:42 106

原创 工作后再来聊聊IO

常见IO模型对比IO是Input/Output的缩写。Linix网络编程中有五种IO模型:blocking IO(阻塞IO)nonblocking IO(非阻塞IO)IO multiplexing(多路复用IO)signal driven IO(信号驱动IO)asynchronous IO(异步IO)简介Java.io包基于流模型实现,提供File抽象、输入输出流等IO的功能。交互方式是同步、阻塞的方式,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞。java.io

2021-08-26 22:49:17 124

原创 优秀程序员都在注意的十个点

1. 多走半里路很多事情并不难,只是缺乏多走半里路的习惯!反例public boolean isInValid(String str) { if (str == null || str.trim().length() == 0) { return true; } return false;}多走一步,海阔天空public boolean isInValid(String str) { return (str == null) || (str.t

2021-05-09 16:21:59 170

原创 UT之最后一测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-poJoD63U-1619626601017)(https://i.loli.net/2021/04/21/CywjlKU7vbfcA4V.png)]经过前面几次文章的分享的UT的相关知识,今天接着分享UT相关最后一测文章,希望对大家在UT的学习中有一点点的帮助。Spring集成测试有时候我们需要在跑起来的Spring环境中验证,Spring 框架提供了一个专门的测试模块(spring-test),用于应用程序的集成测试。

2021-04-29 00:18:07 228

原创 五年了,你还在用junit4吗?

junit5JUnit5在2017年就发布了,你还在用junit4吗?什么是junit5与以前的JUnit版本不同,JUnit 5由三个不同子项目的多个不同模块组成。JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform为在JVM上启动测试框架提供基础。它还定义了TestEngine API, 用来开发在平台上运行的测试框架。此外,平台提供了一个控制台启动器],用于从命令行启动平台,并为Gradle和Maven提

2021-04-17 12:06:02 186

原创 小心,别被eureka坑了

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。具体怎么部署这里就不说了,直接说问题Eureka 客户端注册时需要配置服务端地址,类似如下配置eureka: instance.

2021-04-14 22:13:10 1359

原创 你才不是只会理论的女同学-seata实践篇

本文主要内容为seata的实践篇,理论知识不懂的请参考前文:我还不懂什么是分布式事务主要介绍两种最常用的TCC和AT模式。环境信息:mysql:5.7.32seata-server:1.4.1SpringCloud:Hoxton.SR10SpringBoot:2.3.8.RELEASE注册中心:Eureka涉及服务:Seata-server1、在file.conf中修改mode = “db”然后配置DB信息: ## database store property db .

2021-04-06 12:51:01 118

原创 强悍的Spring之AOP注解使用

Spring中使用注解方式实现AOP,采用@AspectJ方式实现,首先确定需要切入的方法,也就是连接点@Servicepublic class UserServiceMethod { public void add(String name) { System.out.println("UserServiceMethod add name is:" + name);...

2020-03-29 17:59:37 169

原创 java8内存模型

大多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常有用的,在这里面了解JVM的GC原理,是非常重要的一块知识。 我们都知道对于一系统,如果JVM频繁发生FULL GC,那么将会是致命的危险,不仅仅会造成响应迟钝,更严重的时候会导致系统崩溃,这对用户体验来讲,都是我们不愿意看到的。在JVM里的内存空间,从大的层面划分,主要有新生代空间(Young)和老年代空间(...

2020-02-28 22:15:07 154

原创 强悍的Spring之AOP CGLIB实现

1、什么是CGLIBCGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联。2、为什么使用CGLIBCGLIB代理主要通过对字节码的操作,为对象引入间接级别,以控制对象的访问...

2019-11-27 14:32:43 212

原创 强悍的Spring之AOP动态代理实现

1、初识代理Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的过度耦合问题代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能...

2019-11-26 20:19:01 163

原创 【转载】一名工作三年的程序猿应该具有什么样的技能

工作一段时间后,总有点在舒适区的感觉,找了个比较好的帖子,激励下自己,提醒自己还是欠缺很多前言因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面...

2019-11-16 14:22:22 155

原创 强悍的Spring之AOP概念

一、对AOP的初印象AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高...

2019-10-02 15:16:59 122

原创 Java杂谈之BOM谜题

0、前言开发中做了一个导出CSV功能,本地通过wps测试都没有问题,但是测试人员测试的时候发现用excel打开中文表头会出现乱码现象,很奇怪的现象,用nodePad工具打开看也是正常的,但是用excel打开就是中文乱码,通过查找资料了解到是因为csv文件是utf-8编码的,但是没有增加bom头,这样就会导致在window环境下一些软件会用默认编码打开文件从而导致乱码问题,本文详细介绍从前端下载...

2019-07-27 16:19:23 513 2

原创 结对编程两年,我学到了这些

自从研究生毕业一直在一个施行敏捷开发的团队工作,两年多来一个比较好的开发模式就是结对编程,但是最近一段时间由于项目进度和团队人员变更问题导致没有把这个敏捷实践贯彻下来,希望下半年能把以前总结出来较好的方式继续下去,并以此文简单总结下结对编程的优势。目前已经有很多互联网公司采用结对的方式编码,网上也有很多资料介绍结对编程的方式,坦白说来,两个人的头脑结合在一起反应更快,也能有更好的成果,比如更高...

2019-07-05 22:35:36 280

原创 Java杂谈之Java8重构指南

新的语言特性常常让现存的编程模式或设计黯然失色。比如Java 5中引入了for-each循环,由于它的稳健性和简洁性,已经替代了很多显式使用迭代器的情形。Java7中推出的菱形操作符(<>)在创建实例时无需显式使用泛型,一定程度上推动了Java程序员们采用类型接口(type interface)进行程序设计。对设计经验的归纳总结被称为设计模式。设计软件时,如果愿意,可以复用这些方式方...

2019-05-30 21:42:45 274

原创 java杂谈之浅谈行为参数化

前言在软件工程中,一个众所周知的问题就是,不管你做什么,用户的需求肯定会变。比方说,有个应用程序是帮助农民了解自己的库存的。这位农民可能想有一个查找库存中所有绿色苹果的功能。但到了第二天,他可能会告诉你:“其实我还想找出所有重量超过150克的苹果。”又过了两天,农民又跑回来补充道:“要是我可以找出所有既是绿色,重量也超过150克的苹果,那就太棒了。”你要如何应对这样不断变化的需求?理想的...

2019-05-13 21:49:13 188

原创 Java中的Arrays.asList()最理想假设

Java编程思想一书中有类似的一段描述:观察main函数中list几会编译不通过class Father{}class Son1 extends Father{}class Son2 extends Father{}class GrandSon1 extends Son1{}class GrandSon2 extends Son1{}class Grand...

2019-04-01 19:14:59 101

原创 个人理解设计为何要多用组合,少用继承

刚刚接触模式或者学习模式的人,经常会有这样的问题,为什么模式是成功的呢?很多人都会说模式是经验的积累,当然是正确的。可是经验为什么偏偏就证明了这种模式是正确的呢?这其中起用作的就是面向对象的基本原则。正是因为模式都或多或少的符合了面向对象的基本原则,所以模式才成为我们面向对象的设计和编码过程中不败的法则。那么什么是面向对象的基本原则呢?任何的理论,只要有生动的例子来讲解或证明,就能极大的帮助理解。...

2018-04-25 20:26:51 204

原创 dropwizard常用属性注解

dropwizard框架默认使用的fastxml的jackson注解一、两种情况下都有效的注解1. @JsonIgnore@JsonIgnore 用来告诉 Jackson 在处理时忽略该注解标注的 java pojo 属性,不管是将 java 对象转换成 json 字符串,还是将 json 字符串转换成 java 对象。下面是一个具体的例子首先定义一个java pojo类1234567891011...

2018-04-23 19:54:10 973

转载 第一个工作五年计划(2018)

第1部分初步了解阶段,多学习,多看书,多思考,业务和技术都需要不断的沉淀,之所以然。第2部分:对于参加工作一年以内的同学。恭喜你,这个时候,你已经拥有了一份Java的工作。这个阶段是你成长极快的阶段,而且你可能会经常加班。但是加班不代表你就可以松懈了,永远记得我说的那句话,从你入行那一刻起,你就要不停的学习。在这一年里,你至少需要看完《Java编程思想》这本书。这本书的内容

2018-01-27 21:57:38 1030

原创 人生苦短,我用Gson

Life is short, you need Gson一、JSON简介JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编

2018-01-27 14:32:14 208

原创 CRT超时断开解决方案

secureCRT自动断开的解决方法在secureCRT上登录时,一段时间不用的话会自动断开,必须重新连接,有点麻烦。解决方案:会话选项–> 终端–> 反空闲–> 发送字符串可以设置,比如发送 \n 、null或其他信息过去,后面可以设置每隔多少秒发送,比如可以3000秒一次,这样可以保证不会掉线。

2018-01-27 11:50:04 906

空空如也

空空如也

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

TA关注的人

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