自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逝兮诚

悟已往之不谏,知来者之可追

  • 博客(172)
  • 资源 (4)
  • 论坛 (1)

原创 Cannot add task wrapper as a task with that name already exists - 问题解决

问题描述项目使用 ./gradle build 去打包,报错 Cannot add task 'wrapper' as a task with that name already exists ,使用 ./gradle clean,同样报错,使用linux服务器。Configuration on demand is an incubating feature.FAILURE: Build failed with an exception.* Where:Build file '/root/xx

2020-05-29 13:41:02 590 1

原创 [微服务感悟] 很好理解的分布式事务
原力计划

分布式事务跨服务的事务的处理。对于分布式事务,处理起来都比较麻烦,首先应该考虑是否可以避开分布式事务,如因为服务拆分过细而出现分布式事务,就应该把微服务合并成一个,并处理本地事务。tcc和事务管理器是两种十分常见的分布式事务模式,前者更适用于分布式的场景,后者无实现成功,框架可以傻瓜的解决一切。tcc分布式事务tcc是Try - Confirm - Cancel的简写,使用这种分布式事务,需...

2020-04-15 14:59:48 189

原创 参加2020Jam初赛记录与部分题目解答

Google Jam大赛是谷歌举办的一年一届的在线答算法题的的比赛。初赛比赛时长27小时,一共有5道算法题,总分100分,获得分数30分和以上者,就能晋级下一轮比赛。在这27小时内,选手可以多次进入jam的比赛链接,查看题目和提交代码,每道题可以提交多次。提交后,页面会实时反馈代码运行测试用例结果(通过/未通过),不过不会展示测试结果集。参加Jam的选手,进入前一千名有T恤发放;前三名奖励现金,一...

2020-04-12 15:15:03 128

原创 [微服务感悟] 服务雪崩与熔断器

介绍了微服务雪崩产生的原因,现象,简述两种解决方式,熔断器/仓壁模式

2020-01-14 16:49:05 152

原创 [微服务感悟] 服务发现与常见架构

文章目录什么是服务发现服务发现原始架构服务内集成网关架构统一网关架构(总线架构)service mesh微服务架构什么是服务发现既然要调用其他服务,首先知道每个调用的服务的ip和端口。怎么知道服务的地址,这个就是服务发现的作用。服务发现原始架构以前的做法是让运维给每个服务都配置一个域名,把域名映射到对应的每个节点服务器上,开发在项目的配置文件中写上每个服务和其域名,代码中拿配置文件的配置的...

2020-01-10 15:43:33 145

原创 [微服务感悟] 为什么会出现微服务

在以前大家都是在一个项目进行开发,所有的业务都在一起,全端和后台也在一起,那时这种开发模式称为单体程序开发。大家都开发在一个单体程序开发时,一部署也是整个服务一起部署,就必须保证每次上线不能存在一丁点儿的问题,因为一旦部署失败,整个服务都无法运行。而开发总会是存在bug的,所以每次开发结束,都有一次很长的测试并修复bug的阶段.我这前在一家软件开发公司,项目经理在分析需求之后,会设定一个又一个...

2020-01-06 17:16:38 288

原创 [代码优化]null校验的优美处理

我们写java代码的时候,使用对象前,都会下意识先判断对象非null,这是防止NPE的无奈之举,毕竟入门写代码时都写过npe的代码。这么做真的好吗,每层方法中都有这null的判断,导致很多null的判断都是重复的,我们对每个方法的返回都持有一个怀疑不确定的态度,是导致代码各个地方都有非null校验的原因。在严格的面向接口编程的语义中,通过接口方法我们就应该了解返回的是否会存在没有数据的情况,只有...

2020-01-03 11:58:57 291

原创 [微服务架构]及联问题和断路器

及联问题是一个很严重的问题,它的现象是多个业务共用一个资源池,如果其中一个业务访问外部系统,当外部系统响应缓慢,且访问量大的时候,这个业务会占用所有的资源池 ,导致其它所有的业务都无法工作。在微服务中,由于服务越来越多,从概率上说,其中某个服务发生概率的情况就越来越大。对于每个对其它服务的请求,我们都要考虑它可能会出问题,设计时考虑会不会产生及联问题,和发生了应该怎么处理,之前我在工作中就出现过...

2019-12-18 18:00:41 69

原创 [mockito使用教程]部分/内部方法

mockito有两种API实现部分/内部方法mock,分别是spy与callRealMethod()。spyspy会创建一个真实的对象,对象的方法都会被调用,除非你将某个方法打桩(stage),这个方法才不执行,走mock数据,下面是例子。List list = new LinkedList();List spy = spy(list);//对size打桩:when(spy.size...

2019-12-16 16:09:19 299

原创 hashCode,MD5,SHA-1的区别和碰撞量级

在java中,默认使用hashCode生成对象的hash值,它在一定程度上可以作为对象的唯一表示。同时还有MD5,SHA-1这些也可以计算文件/对象的hash值,标志唯一,那它们之间有什么区别呢。hashcode,md5,SHA-1都是散列加密算法,其中hashcode长度为32位,md5为128位,sha-1为160位。位数越大,这个数据的数据量就越大,重复的几率越小,但是运算起来越复杂,消耗...

2019-11-19 14:49:09 556

原创 源码追踪 - Gson解析部分属性值为null

接口返回的json数据,有些key的值是null,而断点调试返回对象是有数据的。原因是springMVC采用的gson做json解析,gson解析对象为json字符串时,对于对象中匿名内部类属性,会设Null值。解决方法是不使用匿名内部类对象。前端接收数据,实际对象是有值的。{ 'code':0, 'data': { 'filter':[ null, n...

2019-11-04 15:14:07 120

原创 docker使用学习笔记

docker介绍docker是个容器,采用沙盒启动,类似虚拟机。docker的架构是C/S,远程仓库存放image(镜像),本地下载image(镜像),并根据image(镜像)本机创建container(容器),一个容器就是一个运行的系统。docker可以执行--help来查看命令APIdocker start --helpdocker下载后需要启动守护进程,它会跑着本机后台,启动...

2019-10-31 14:47:03 72

原创 macos命令行启动docker服务

通过 launchctl 查看 docker server, 记住docker server 名launchctl list | grep docker111117 0 com.docker.docker.2388然后关闭和启动它。launchctl stop com.docker.docker.2388 && launchctl start com.d...

2019-10-31 14:25:12 11728 2

原创 java多线程实现原理

java内存模型java的内存模式 线程 - 工作内存 - 主存。线程会读写工作内存,CPU会周期性的将工作数据刷入主存,如果多个线程写工作内存,就会导致每个线程的工作内存、主存内存数据都不一致,最终导致执行结果无法预期。线程1 —|工作内存|—> [ ] [ 主存 ]线程2 —|工作内存|—> [ ]happen...

2019-08-13 17:37:33 67

原创 分布式锁的实现以及在定时器中的应用

分布式锁是为了保证分布式各系统对于资源的强占,独占。分布式锁的设计与多线程锁设计一样,都是通过一个信号量,对它进行CAS(compare and set)原子操作来实现乐观锁,或通过一个独占锁实现悲观锁,悲观锁不推荐。乐观锁乐观锁的核心是通过信号量代表资源,通过CAS的操作去标志改信号被占用。CAS成功,代表资源没有被占用,执行任务;CAS失败,代表资源被占用或处理过,不执行改资源。ture...

2019-06-27 11:41:38 385

原创 java自测心得、技术选型和实现方式

程序员自测是很重要的一个环节,我认同测试驱动开发的理念,经过一段时间的测试代码的编写,发现测试代码需要保证几点,1.测试代码可重复跑,不能跑过一次,改了数据库数据就不能跑了。2.测试代码写好后,尽可能保持不变,哪怕代码变后,直接跑测试就能验证修改是否正确,而不是把测试代码,测试数据再改一遍。service层测试要与数据库解耦,不能因为数据库数据的变化影响测试,我曾经使用int.sql去对数据库做i...

2019-05-15 10:41:55 457

原创 jdk源码-HashMap

AbstractMapAbstractMap是Map接口的抽象实现类,通过抽象方法keySet()实现了get(key),remove(key),containsKey(key),containsValue(value)的基本算法,遍历加equals。HashMapHashMap是AbstractMap的一个实现类,1.8之后对其进行了重写,加入TreeNode的结构,原因是存在使用不当的h...

2019-04-18 16:47:43 105

原创 jdk源码-Map与HashTable

Mapmap是一个接口,是一个映射着key和value关系的容器,从定义上看,map不能包含重复的key,一个key最多只能映射一个value。map是否有序取决于它的实现类,treeMap是有序的,hashmap是无序的。对于map不支持的操作,会报UnsupportedOperationException。map接口不会限制key和value是否可以为null,不会限制一定用equals...

2019-04-18 16:44:35 82

原创 Python股票实时查看告警工具

需求设计股票实时查看告警工具需求每次想看股票的时候都要拿出手机,或者打开股票软件,这个过程一般都比较长,很容易打断连贯的代码思路,并且股票软件都有太多广告信息,诱惑信息,让人忍不住去点,浪费很长时间,同时也杂多的信息,容易让人陷入FOLO的心态,活生生成了韭菜。第二个需要一个告警通知,某某股票到了我设定的告警值,我可以加仓或者斩仓了。功能查看实时自选股票价格股票阀值告警实时自选股...

2019-04-12 20:59:04 880

原创 Python上手学习

python的语法简单,可以很好提高个人生产力。我花了2天的时间重零开始学习python,目前已经能做爬虫了。这篇博客是不管原理,直接干,直接梭的学习博客。安装pythonmac系统中默认安装一个python,一般是python2,但是python2已经过时,需要下载python3。打开终端,输入python --version # 查看python version brew sear...

2019-04-01 11:26:24 474

原创 jdk源码追踪-LinkedList

关于List接口的类结构和AbstractList的讲解,可以看看上一篇文章jdk源码追踪-ArrayList。AbstractSequentialListAbstractSequentialList使用迭代器来实现get(int index), remove(int index), add(int index, E e)基本算法。迭代器是实际调用抽象方法listIterator,需要子类实现...

2019-03-29 16:30:21 154

原创 jdk源码追踪-ArrayList

ListList是有序列,所以定义的接口中都有基于index的各种方法。public interface List<E> extends Collection<E> { E get(int index); E set(int index, E element); void add(int index, E element); E remo...

2019-03-29 16:29:14 153

原创 jdk源码追踪-Collection

CollectionCollection接口是java最基础,重要的接口之一,它有List,Set,Queue等Java最常用的子接口,这里主要解析Collection这个接口以及它最常用的类的源码实现。上面是collection的类图Collection是集合的父接口,它规约了集合有add(E e),remove(Object o),size(),toArray(),iterator()...

2019-03-29 15:16:13 92

原创 ArrayList为什么要自己实现迭代器

ArrayList的父类AbstractList已经实现了Iterator接口,而且LinkedList使用AbstractList的Iterator,而ArrayList要自己实现Iterator接口?ArrayList实现Iterator,是为了避免ArrayList在迭代过程中数组结构发生变化的而产生的问题,这个处理机制称为Fail-Fast机制,实际是一个乐观锁,实现如下。ArrayL...

2019-03-07 18:44:52 767

原创 unicode字符串解析

现象和答案在http接口接收时,很多接口提供方都喜欢把汉字通过unicode的方式传过来,而数字和字母保持不变,就像这样。{“Content”:"[reply]CocoWu892[/reply]\n\u6c9f\u901a\u662f\u6700\u91cd\u8981\u7684\u6280\u80fd\u4e4b\u4e00"}这里就必须涉及到一个带unicode字符串转成正常字符串...

2019-02-19 14:18:28 441

原创 CSDN用户行为分析和用户行为数据爬取

爬虫随机从CSDN博客取得800条用户行为数据,包含用户名、原创博客数、评论数、浏览量,试着从博客数,评论数,浏览量三个方面分析csdn的博主们的形象。原创博客数博主们的原创博客数并不是很多,50篇以下的占了70%,0篇的就有35%。我没有想到的是超过100篇原创博客的博主居然有21%,看来养成写博客习惯的人还是很多啊,原创博客超过100,也不是什么特别稀奇的情况。评论数有63%的博主评...

2019-02-16 10:17:57 1725 2

原创 JAVA自动爬取CSDN用户数据并文章点赞

爬取用户某天,我发现我的文章被某个用户点赞了。欣喜之下,把那边文章重新校核更改一遍,接着进入这个点赞我的用户看看,结果发现他近期的博客是一些爬虫的实战。我想,我那篇文章,应该是他做的一个小程序批量加载用户信息并给文章点赞。我觉得这是一个有点意思的事,于是用java实现csdn批量爬取用户名并点赞。其中批量爬取用户名的思路借鉴这位大神的这篇博文GO+Selenium批量关注CSDN 1 (如何获取...

2019-02-13 10:55:58 870 11

原创 Could not set parameters for mapping错误与mybatis源码追踪

错误及解决方法因为担心@Builder的注解的类不支持mybatis做查询,刚好也有了一个错误,跟了一圈发现不是mybatis的问题,是自己mapper的like写错导致。记录一下跟踪过程,做个总结。这个错误的原因是mapper的参数和要导入的参数数量不一致,我这里的原因是把参数写在''里了,导致mapper没有解析到这个参数。错误的写法'#{userNamePinyin}%',正确的写法#...

2019-01-22 19:18:44 12091 1

原创 shiro源码解析-doFilter

shiro应该算的上java中最流行的权限框架了,使用的多了,便想着研究一下源码,看它究竟怎么运行的。doFilter是shiro对于每个请求都会走的一个效验过程。它的流程如下从DelegatingFilterProxy开始,执行dofilter(),这里是一个代理模式,执行的是WebApplicationContext中的filter执行的dofilter方法,这个filter就是shiro...

2019-01-12 23:38:14 573

原创 JVM从头学(二)—— 堆内存模型与GC

堆内存模型与CGGC可以手动GC,也可能JVM自动GC。GC分menor GC和Full GC,fullGC耗时长,消耗资源多而menor GC耗时短一些。。说GC前,必须了解一下java堆内存模型。堆内存模型java堆内存模型分为young generation(新生代),old generation(老生代),permanent space(不变的)。新生代就是存新的对象,...

2018-09-08 18:40:00 156

原创 JVM从头学(一)—— 堆栈与JVM内存模型

堆栈数据结构堆堆的数据结构是一个完全二叉树,一般使用于优先队列。堆分大数堆和小数堆,大数堆是大数在父节点,小数,小数堆是小数在子节点。每次排序后的次数也有限,插入排序的次数是数的层数减一,就是O(log2n),初始化的时间复杂度是O(n),消费最大/最小节点的时间复杂度是O(log2n)。消费父节点的算法是,删掉父节点,用最后一个节点重顶节点做插入算法。栈栈是一种数据结构,后进先出...

2018-09-08 18:37:23 165

原创 ElasticSearch教程(三)—— 懂原理

懂原理集群集群是有一群配置相同cluster.name的节点组成。它们通过广播通信,所以要放在一个网段的内网。集群节点和身份master :master管理集群范围内所有索引,和索引所在节点。当有节点加入和删除时,重新平均分布所有数据。data :存储文档集群状态通过GET /_cluster/health查看集群状态。{ "cluster_...

2018-09-07 19:29:18 210 1

原创 ElasticSearch教程(二)—— 基本使用

基本使用基本概念ElasticSearch是面向文档的,它存储文档,并索引每个文档的内容使之可以被索引。ES选择json作为文档序列化格式。索引:名词,类似一个数据库,是一个存储关系性文档的地方。索引:动词,把关系型文档存到索引的过程,是插入。ES使用倒排索引来索引文档,只有在倒排索引中存在的属性才能被搜索。倒排索引 倒排索引,文档经过分词器分出许多词根,并把词...

2018-09-07 19:28:35 562

原创 ElasticSearch教程(一)—— 安装配置

安装配置安装ElasticSearch访问官网下载页面,下载ElasticSearch。run bin/elastriSearch(linux/mac),bin/elastriSearch.bat(window)。run curl http://localhost:9200,显示elasticsearch的版本信息。 run bin/elastriSearch -d,可以把el...

2018-09-07 19:27:22 202

原创 AngularJS系列(十一)——路由和复制

路由路由允许我们通过不同的 URL 访问不同的内容。我觉得听夸张,以前这都是后台的控制器来处理的,如servlet,springMVC这类。通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。<body ng-app='routingDemoApp'><h2>AngularJS 路由应用...

2018-09-06 16:42:57 93

原创 AngularJS系列(十)——表单的重置和验证

表单重置表单重置实例 <div ng-app="myApp"ng-controller="formCtrl"> <form novalidate> First Name:<br> <input ng-model="user.firstName" /><br> Last Name

2018-09-06 16:42:05 2243

原创 事务处理(二) - 数据库事务

事务简介事务的作用事务的作用是将一系列操作作为一个整体,一但其中出现问题,会回滚到事务的开始状态。即事务维护了数据的完整性和一致性。事务的四个特性(ACID)原子性:事务的操作是原子不可分割的。一致性:事务的操作数据保证一致性,不存在一部分改变一部分不改变。隔离性:隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操...

2018-08-10 19:28:11 233

原创 事务处理(一) - spring事务

Spring的事务管理原理Spring是通过org.springframework.transaction.PlatformTransactionManager接口来实现事务的管理。同时应对不同的场景,提供不同的PlatformTransactionManager实现类来实现管理事务。下面是常见的应用场景。JDBC事务如果使用JDBC来进行数据持久化,Spring使用Dat...

2018-08-10 19:10:56 118

翻译 spring-email官方翻译

官方地址:https://docs.spring.io/spring/docs/5.0.0.M5/spring-framework-reference/html/mail.htmlEmailIntroduction Library dependencies The following JAR needs to be on the classpath of your...

2018-06-18 16:03:20 727

原创 微信支付宝一码付

路由一码付指的是一个二维码同时指出支付宝、微信扫描并支付。微信和支付宝支持扫描一个url二维码并通过内置的浏览器跳转。我们可以通过js获得是来自支付宝的还是微信的浏览器,通过user-agent,有MicroMessenger是微信,有AlipayClient是支付宝。var ua = navigator.userAgent.toLowerCase();if (/MicroM...

2018-05-30 19:28:12 4335

清除百度广告的浏览器插件

清除百度广告的浏览器插件,开发教程:http://blog.csdn.net/luo4105/article/details/77193828;源码地址:https://github.com/programluo/cleanbaidu

2017-08-28

dubbo-admin-ROOT.zip

这个是dubbo管理工具dubbo-admin,拿出来就可以用,0分分享给大家了,如果要分了,告诉我,我来改

2017-04-20

comment2name.vbs

把powerdesign的comment转成name的脚本,我自己写的,0分分享给大家了,使用方法:https://blog.csdn.net/luo4105/article/details/51383416

2016-05-17

name2comment.vbs

powerdesigner的名字转成comment的vbs,我自己写的,0分分享给大家了,使用方法:https://blog.csdn.net/luo4105/article/details/51383416

2016-05-17

逝兮诚的留言板

发表于 2020-01-02 最后回复 2020-02-16

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