自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liushaoming

liushaoming

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

原创 MyBatis源码解析6-SpringManagedTransaction与TransactionSynchronizationManager

TransactionSynchronizationManager

2019-09-09 17:51:19 1950 1

原创 MyBatis源码解析5-MapperProxy与JDK Proxy动态代理

JDK proxy(JDK动态代理)包括jdk中三个重要的类java.lang.reflect.Proxyjava.lang.reflect.InvocationHandlersun.misc.ProxyGenerator用的时候Proxy.java public static Object newProxyInstance(ClassLoader loader, ...

2019-09-06 11:49:28 660

原创 MyBatis源码解析4-每个Mapper类都会生成一个唯一的Mapper代理对象

mybatis-spring-1.3.2.jar 中有5个类org.mybatis.spring.mapper.MapperScannerConfigurerorg.mybatis.spring.mapper.ClassPathMapperScannerorg.mybatis.spring.mapper.MapperFactoryBeanorg.mybatis.spring.SqlSes...

2019-09-05 18:21:43 839

原创 MyBatis源码解析3-MapperFactoryBean

org.mybatis.spring.mapper.MapperFactoryBean是我们本篇文章需要研究到核心类。这个类的源码在mybatis-spring.jar中,不在mybatis.jar中比如我们数据库操作到interface为 GreetMapperpublic interface GreetMapper { String list();}MapperFactoryBe...

2019-09-04 16:43:30 672

原创 MyBatis源码解析2-MapperRegistry

MapperProxy只会在mapper(dao)的方法被调用的时候,才会去调用invoke() 方法发现MapperProxy#nvoke(Object proxy, Method method, Object[] args)每次都会被调用MapperRegistry只会在SpringBoot应用启动的过程中会调用addMapper()和getMapper()方法,在mapper方法被用...

2019-09-03 23:59:28 335

原创 MyBatis源码解析1-全局熟悉源码

1.主要的类重要的类MapperFactoryBean和两个InvocationHandler的实现类MapperProxy和SqlSessionInterceptor还有一些PooledDataSource里面的InvocationHandler可以在MyBatis源码里搜索"InvocationHandler",立即可以搜索到所有到类.org.mybatis.spring.mapper...

2019-09-03 20:11:45 254

原创 iOS免费-零基础教学视频

iOS入门教程和就业教程(全部免费无密码)下载链接我放在个人的github上。大家记得star下我的GitHub项目来支持下本人的无私贡献。点击右边下载地址点击上面的页面后。页面翻到最底部的“福利”可以找到百度网盘的下载链接。...

2019-04-14 13:30:55 853 1

原创 Java秒杀抢购-SpringBoot-jseckill(github源码)

Java SpringBoot实现秒杀-jseckill(github源码)jseckill电商秒杀程序, 乐观锁,Spring Boot.演示地址

2019-01-15 13:04:57 6787

原创 SpringMVC获取ApplicationContext - ApplicationContextAware实现AppContextHolder(含github源码)

项目地址sword-springboot父项目是sword应用场景: 一般情况下,使用SpringMVC/SpringBoot的时候,各种bean注册到Spring容器里了,然后在需要这个bean的地方,使用@Autowired或者@Resource标注的bean都可以被自动注入。 但是在某些场景下,需要手动注入。比如在一个Util里面,这个Util里面的方法都是static的,这个时...

2019-01-06 17:00:24 1135

原创 开发消息推送服务,基于Netty protobuf--fpush(含github源码)

开发消息推送服务,基于Netty protobuf--fpush技术栈代码简介系统架构1.系统部署架构图如下:2. 移动客户端鉴定权限原理3. server端推送消息到client端的原理 运行测试Done ListTODO list旨在做一个类似于极光推送,小米推送之类的Java程序开源实现。基于Netty + protobuf技术栈JDK1.8 Netty-4.1.31.Final...

2018-12-10 14:15:58 2123

原创 社交App系统架构--自己亲手写的App系统(含github源码)

社交App系统架构目前社交类应用有App,小程序,网站,微信公众号等,其中最普遍有效的客户端还是App。 本人利用空余时间开发了一款Android版App–星座空间(英文名star-zone) 项目地址星座空间App大家可以下载后用下看看。技术选型下面列举技术栈,并说明选择的原因: 软件分为以下几块:(全部都是我一个人开发的,很辛苦的^_^,全栈工程师+架构师) 1.And...

2018-07-02 17:19:58 15275 11

原创 Java架构师需要掌握那些技术(含github源码)

个人Github https://github.com/liushaoming从Java高级工程师到架构师,你需要学习下面这些能力下面以我的github为线索https://github.com/liushaoming来讲讲架构师进阶需要学习的能力。贡献了这么多干货,所有的技术要点都用纯java实现。  记得点star!1. 电商秒杀抢购程序设计--http高并发--大数据库--数...

2018-01-17 10:11:34 1410

原创 自己用Java实现一个依赖注入框架 (学习Spring源码并写一个简单的Spring框架)- containerx(含github源码)

摘要: 自己用Java实现一个依赖注入框架自己写一个Spring框架?博主,你在开玩笑吗?NO! 通过研究了Spring源码的核心思想,自己用写一个小框架,加载类似的beans.xml配置,并且把bean都以单例方式注册到容器中,并且用InvocationHandler来实现AOP这个,就是核心思想,而且具备可行性。只不过没有Spring源码那样处理其它的细枝末节。容器的本质是什么?--C...

2017-10-22 09:48:56 1244 2

原创 Java登录认证-基于userId+token-框架fpassport(含github源码)

     前段时间,自己开发了一个网络API调用的框架"fpassport",可以用于大多数的网络接口调用(HTTP调用)里的权限认证--用户登录。 验证条件是userId+token合法,才能调用响应的接口成功。否则,则返回错误代码(比如token错误,userId不存在等) 。不管调用成功与否,返回给客户端的都是json数据。       fpassport框架在大多数App的用户登录...

2017-10-17 21:45:00 3805

原创 dubbo找不到或无法加载主类 org.apache.dubbo.container.Main

使用maven-assembly-plugin 打一个tar.gz包。然后允许Dubbo官方的start.sh发现报错如下:找不到或无法加载主类 org.apache.dubbo.container.Main我们来看下start.shnohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath...

2019-08-25 21:39:29 3155

原创 RabbitMQ丢失消息的一个原因

今天发现RabbitMQ发送消息成功,但是接受消息的时候,根本接受不到。查看网页控制后台界面,发现它被自动ack了。 实际上,我设置的消费者是设置autoAck=false的。 平均每4条消息,会丢失一条。什么原因呢?各自操作,各自confirm,包括producer的确认和consumer的ack都做了。然后就是消息丢失的问题解决不了。后面发现,我把这条队列queue删除后,新建一个这...

2019-02-15 15:26:11 4741 1

原创 java实现分布式锁(带github源码)

1.前言大多数互联网系统是分布式部署的,分布式部署解决了高并发高可用的问题,但是由此带来了数据一致性问题。当某个资源在多系统之间,被共享操作的时候,为了保证这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端操作,不能并发的执行,否者就会出现同一时刻有客户端写,别的客户端在读,两者访问到的数据就不一致了。2.我们为什么需要分布式锁在单机时代,虽然不需要分布式锁,但也面临过类似的问...

2019-02-15 15:19:34 2613

转载 SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

一 简介(1)过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等关于过滤器的一些用法可以参考我写过的这些文章: ...

2019-01-08 10:50:01 336

转载 ThreadLocal入门

转自https://www.ibm.com/developerworks/cn/java/j-threads/index3.html编写线程安全类是困难的。它不但要求仔细分析在什么条件可以对变量进行读写,而且要求仔细分析其它类能如何使用某个类。 有时,要在不影响类的功能、易用性或性能的情况下使类成为线程安全的是很困难的。有些类保留从一个方法调用到下一个方法调用的状态信息,要在实践中使这样的类成...

2019-01-07 16:03:34 298

转载 排序算法稳定性

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。中文名排序算法稳定性外文名Sorting algorithm stability类    型计算机语言对    象排序...

2018-09-13 15:00:06 224

转载 时间复杂度中的log(n)底数到底是多少

其实这里的底数对于研究程序运行效率不重要,写代码时要考虑的是数据规模n对程序运行效率的影响,常数部分则忽略,同样的,如果不同时间复杂度的倍数关系为常数,那也可以近似认为两者为同一量级的时间复杂度。现在来看看为什么底数具体为多少不重要?读者只需要掌握(依稀记得)中学数学知识就够了。假设有底数为2和3的两个对数函数,如上图。当X取N(数据规模)时,求所对应的时间复杂度得比值,即对数...

2018-09-13 14:18:49 3916

转载 计算机负数与正数的按位与操作

负数的按位与运算: 按位与运算是按照数据的内部二进制形式进行运算的。若是两个负数,则是按二进制补码形式进行按位与。所得结果若用有符号整型变量存储,则内部形式仍看作二进制补码。如果用格式符%d输出,输出结果为十进制真值(不应该称为十进制原码)。 例如:  #include <stdio.h> main() {short int a=-2,b=-3,c...

2018-09-12 10:36:33 4872 1

转载 java中右移运算符>>和无符号右移运算符>>>的区别

在做一个pcm音频时遇到了这个符,但是我看有些百度的地方的解释都不能令我很懂,所以就整理下。首先左移和右移的区别是很好区分的左移<< :就是该数对应二进制码整体左移,左边超出的部分舍弃,右边补零。举个例子:253的二进制码1111 1101,在经过运算253<<2后得到1111 0100。很简单右移>> :该数对应的二进制码整体右移,左边的用原有标志...

2018-09-12 10:34:54 4480

原创 发布自己的jar到maven中央仓库

 参考我自己的实例https://issues.sonatype.org/browse/OSSRH-36402官方指引 https://central.sonatype.org/pages/ossrh-guide.html下面是官方指引的内容OSSRH GuideIntroduction Initial Setup Create a ticket with Sonaty...

2018-09-11 16:29:52 327

原创 Java算法实现 BAT公司为什么要考算法 github

BAT公司为什么要考算法?答: 算法是程序员的基本功。对于Java程序员来说。应用开发的时候,很少需要自己去实现算法。所以,开发年限的增加,并不会提高程序员的算法能力。而算法是整个软件技术的核心底层。算法最能提现一个程序员的内功和核心竞争力。考察一个程序员的学习能力和潜力,考察算法,是一个简单的方法。算法,不是做的项目越多,算法就越精通。下面直接给出本人最近研究的基本算法(Java实现),...

2018-09-11 11:35:05 590

原创 RecyclerView在Fragment Activity切换报错You cannot start a load for a destroyed activity

java.lang.IllegalArgumentException: You cannot start a load for a destroyed activityBottomNavigationView中Fragment切换或者各种Activity切换的时候(这些Activity,Fragment里有RecyclerView加载网络数据) 报错如下E/AndroidRunt...

2018-08-27 14:55:22 709

转载 解决nginx反向代理缓存不起作用的问题

解决nginx反向代理缓存不起作用的问题昨天尝试用nginx搭建nuget镜像服务器,镜像服务器需要两个功能:1)反向代理;2)内容缓存。用nginx做反向代理,配置非常简单,只需在/etc/nginx/nginx.conf中添加一个包含proxy_pass的server设置:server { listen 80; listen [::]:80; s...

2018-07-12 09:15:39 4779

转载 nginx静态资源缓存策略配置

1. 问题-背景以前也经常用nginx,但用的不深,通常是简单的设置个location用来做反向代理。直到今天给客户做项目碰到缓存问题:客户有个app,只是用原生做了个壳,里面的内容都是用h5写的,我们半途接手将新版本静态资源部署到服务器上后,发现手机端一直显示老的页面,一抓包,发现手机端根本就没有去请求新的html页面,定位是缓存问题。2. 配置乍一看,客户原来的配置好像没什么问题,该有的也全有...

2018-07-11 10:37:45 1947

转载 android Activity runOnUiThread() 方法使用

在android 中我们一般用 Handler 做主线程 和 子线程 之间的通信 。现在有了一种更为简洁的写法,就是 Activity 里面的 runOnUiThread( Runnable )方法。 利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiTh...

2018-06-02 16:18:24 1921

转载 display:inline, block; inline-block简介

display:block就是将元素显示为块级元素.  block元素的特点是:  总是在新行上开始;  高度,行高以及顶和底边距都可控制;  宽度缺省是它的容器的100%,除非设定一个宽度  <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子。  display:inline就是将元素显...

2018-05-02 16:46:36 207

原创 两个div水平顶部对齐

方法left-div和right-div都设置display:inline-block; 和vertical-align: top;使得右边的div跟左边的div的顶部对齐最终代码如下<div id='left-div' style="width:20%; display:inline-block;vertical-align: top;"></div&gt...

2018-05-02 16:43:53 20694 1

原创 jquery 保证html()拿到的html字符串包含input的value值

发现html()返回的值,并不包含input的value的值, value得到的是空字符串。原因,DOM在这html渲染的时候value这个attribute仅仅是代表input的初始值。后面,如果需要拿到新的html带最新value的需要用js手动的设置attribute value为新值。比如用$().attr('value', '123);测试代码如下&lt;script src="http...

2018-04-26 23:03:08 3362 1

原创 html select

html select 只读&lt;select id="sourceType" class="input-style" onfocus="this.defaultIndex=this.selectedIndex;" onchange="this.selectedIndex=this.d...

2018-04-13 18:05:33 721

原创 maven的pom配置jdk9

maven的pom配置jdk9因为jdk9的命名直接是jdk9, 不是jdk1.9,所以maven-compiler-plugin里面的之前的版本不支持jdk9.maven-compiler-plugin在比较新的版本上才支持jdk9的配置,下面是可用的设置&lt;build&gt;&lt;plugins&gt;&lt;plugin&gt; &lt;groupId&gt;org.apache...

2018-04-13 15:31:31 2057

原创 MYSQL批量删除和修改表

例如我要删除库中所有以order开头的表,那我可以先执行如下代码,列出所有drop这些表的语句,然后我再选择性地把这些语句复制出来执行即可假设我自己建的表都是库mall.order_0~ mall.order_99Select CONCAT( 'drop table ', table_name, ';' )FROM information_schema.tableswhere TABLE_SCHE...

2018-04-12 21:09:06 1461

转载 spring-websocket --WebSocketStompClient端实现自动重连

转自https://blog.csdn.net/u013174217/article/details/53376793websocketstompclient端实现和服务端建立连接和通信之后,如果服务端断开或重启,client端需要实现自动定时重连机制。查阅了官网和一些资料没有找到相关的源码,自己写了个:在client端重写StompSessionHandlerAdapter的类中重写handle...

2018-03-30 16:53:08 8216

原创 easyui datagrid设置行高

网上说的设置rowStyler,来改变行高,经过试验,并不能改变行高。只能改变行的颜色。下面是行之有效的方案:首先自己用一个div包围这个&lt;table&gt;&lt;/table&gt; 。然后设置根据这个div的id+里面的table的样式,用更高的css优先级来覆盖datagrid默认的行高。代码如下&lt;style&gt; .grid-panel .datagrid-...

2018-03-13 23:06:09 16210 2

原创 增加spring.profiles.active环境变量

springboot有个profile环境的设置是spring.profiles.active在环境变量里的设置的优先级高于application.properties里的spring.profiles.active的设置编程人员的环境设置是:在程序代码的application.properties里的spring.profiles.active=uat不变在自己的开发环境/IDE所在的电脑上设置...

2018-02-26 09:31:59 28905 2

转载 springboot 报Spring boot 报Add an implement,such as Hibernate Validator, to the classpath

spring boot 版本1.4.7.RELEASE 1.启动报错如下: ationConfigEmbeddedWebAp ationConfigEmbeddedWebAp o. s. b. d. LoggingFai1ureAn APPLICATION FAILED TO START Description : The Bean Validation API is on t

2018-01-24 00:08:07 2447

转载 分布式领域架构师要掌握的技术

转载自https://yq.aliyun.com/articles/62683摘要: 分布式系统无疑是持久的热门话题,但其实如果不是一定有必要,强烈建议不要进入分布式领域,在集中式的情况下很多问题都会简单不少,技术人员千万不要因为外界火热的例如微服务,就把自己的产品的也去做改造,一定要仔细判断是否有必要,不要为了技术而技术,那么在必须分布式的情况下(访问量、存储量或开发人数),一个分布

2018-01-17 11:56:28 622

空空如也

空空如也

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

TA关注的人

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