自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

曹建涛的博客

如果一个人没有梦想,那跟咸鱼有什么区别。

  • 博客(38)
  • 资源 (3)
  • 问答 (3)
  • 收藏
  • 关注

原创 synchronized底层原理

一探究竟:反编译三种使用场景,示例代码;public class SynchronizePrincipe { public synchronized static void fun1(){} public synchronized void fun2(){} public void fun3() { synchronized (this){} }}通过javap -c -v命令反编译后(部分代码); public static synchroni

2022-03-06 11:42:28 524

原创 聊聊限流、熔断和降级

背景分布式系统中的调用关系错综复杂,如何保障整个系统平稳运行则显得尤为重要。限流、熔断和降级应运而生…限流为了保障下游服务稳定性,通常会提前预估调用QPS,一旦超过预估QPS则可以进行限流,拒绝超出预估的请求。常见的限流算法有固定窗口、滑动窗口、漏桶和令牌桶,后续会专门出一篇文章。熔断当下游服务不可用或者响应过慢,可以切断调用链路直接返回结果,保证自身服务的可用性。降级当服务器压力剧增,可以考虑对非核心业务流程进行降级,保证核心功能可用。逻辑上讲,限流和熔断都可以算降级的一种。

2022-02-19 16:59:18 986

原创 MQ 入门实践

MQMessage Queue,消息队列,FIFO 结构。例如电商平台,在用户支付订单后执行对应的操作;优点:异步削峰解耦缺点增加系统复杂性数据一致性可用性JMSJava Message Service,Java消息服务,类似 JDBC 提供了访问数据库的标准,JMS 也制定了一套系统间消息通信的规范;区别于 JDBC,JDK 原生包中并未定义 JMS 相关接口。ConnectionFactoryConnectionDestinationSe

2021-04-19 22:23:43 813 3

原创 数据库(MySQL) 入门实践

1 数据库存放数据的仓库。例如你的账号信息,订单记录等。2 SQLStructured Query Language,用于访问和处理关系数据库的标准的计算机语言。按照功能又可分为四大类;DQL查询语言,基本语句 SELECT;DML操纵语言,主要有三种形式,INSERT、UPDATE 和 DELETE;DDL定义语言,创建表、视图、索引等,CREATE TABLE;DCL控制语言,用来授权或回收某种特权,基本形式有 GRANT、 COMMIT 和 ROLLBACK;

2021-01-11 23:49:48 204

原创 Reids 入门实践

1 简介Redis,REmote DIctionary Server,是一个由 Salvatore Sanfilippo 写的 Key-Value 存储系统。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(Value)可以是字符串(String), 哈希(Map), 列表(list), 集合(sets)和有序集合(sorted sets)等类型。2

2020-12-29 00:22:15 263 1

原创 2分钟搭建一个在线博客

准备条件GitHub 账号;创建项目新建一个项目,项目名格式为${username}.github.io, username 为你的 github 账号名;选择主题进入项目设置,选择博客主题;这里我选择了 Cayman 主题,简单朴素支持响应式布局。设置首页在项目根目录创建 index.md,添加如下内容;欢迎进入我的在线博客。在线验证访问https://${username}.github.io,验证成果;附上我的博客地址:https://caojiantao.gith

2020-12-20 16:37:30 220

原创 从入门到实践 —— Docker

Docker 介绍参考:为什么需要Docker?Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。主要应用场景如下:环境隔离容器间环境相互独立,互不影响。类似于虚拟机,但相比于更轻量。Docker 各个容器共享一个操作系统内核,而每一个虚拟机都有一套完整的操作系统。整体部署可以将一整套环境构建为镜像,进行整体部署,避免线上线下开...

2020-03-17 10:39:56 185

原创 Request Response 重复读取

背景通常为了方便定位问题,我们需要记录接口的入参和出参。但由于 stream 不可重复读的特性,会导致无法预期的各种问题。Wrapper作为 request、response 的包装类,我们可以通过重写 getInputStream 和 getOutputStream 控制数据的流转,从而达到数据的可重复读取。HttpServletRequestWrapperpackage cn.cao...

2020-03-17 10:32:56 2223 1

原创 经典排序 —— 冒泡排序

基本思想每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。算法实现package cn.caojiantao.tutorials.sort;/** * @author caojiantao */public class Select implements ISort { @Override public void sort(in...

2019-04-28 22:12:51 199

原创 浅谈synchronized、wait、notify和notifyAll

一、概念解读synchronized:同步锁,可修饰类、方法、代码块;wait:使当前线程进入等待状态,直到锁定对象被唤醒(notify、notifyAll),然后当前线程进入就绪状态;可指定最大等待时间,自动唤醒;notify:唤醒当前对象上等待的单个线程;notifyAll:唤醒当前对象上等待的所有县城;二、sleep?很多面试题都会涉及到“sleep和wait的区别?”,开始可能都只

2017-10-20 21:21:10 1515

原创 一步一步完成SSM框架整合(Spring+Spring MVC + Mybatis)

新建maven工程eclipse中选择new Maven Project项,制定archetype为webapp,填写好groupId之类的,然后finish,这时可能工程有一些错误,通过修改Java Build Path,修复错误: 然后new一个server,将这个项目添加进去,修改server的context path为“/”,http端口设置为“80”,然后打开浏览器,访问“127.0.0

2017-06-14 21:03:52 1377

原创 jQuery分页插件

开发背景最近接了一个小型电商网站,各大商品分类都需要用到分页的技巧,虽说我只是个后台汪,但是不想搞前端的后台不是一个好开发。参考了网上的某个简单的分页插件,重新封装了下,支持ajax请求,data参数传递,分页请求回调,真的很好用呢~最终目的既然是开发插件,那么使用一定要简单粗暴,类似easyui datagrid这样:$('#dg').datagrid({ url:'datagrid_da

2017-05-04 21:40:09 1204

原创 Android开发不归路——自定义侧滑菜单

一、前言磕磕碰碰自学Android也有一年之余,虽说目前从事Java Web开发,但对Android的热情丝毫没有锐减。记得当时大三暑期帮同学做的第一个Android项目(也是唯一一个T T),本着学习的目标手写那个首页侧滑页面,废了我半条命,最终胡乱一通代码最终也达到了效果。在公司沉淀了一年,是时候总结下了。二、知识储备1、Scroller类VelocityTracker类的基本使用;2、Andr

2017-04-26 15:21:49 555

原创 闲聊cookie与session

Sessionsession是一种位于服务端,用于存储一个会话(指打开浏览器访问某个域名,及其下面的资源,然后关掉浏览器的过程)中所需的配置信息。也就是在一个会话中,只存在一个session。对于java web编程来说,session就是在request.getSession()创建的。同样,session也可以通过setMaxInactiveInterval()设置其生存时间。session的结

2017-02-28 17:48:18 499

原创 说说background属性

前言backgound,相信接触前端的人都已经很熟悉了,但是小白们都只是停留在background:#fff的层面上,那么今天作为小白的我要揭竿而起了~(๑•̀ㅂ•́)و✧简述用作“描述背景”的css属性,background是一系列背景属性的简写,包含了下面几种具体属性: 注:以下摘自w3school 值 描述 CSS background-color 规定要使用的背景颜色

2016-11-17 22:25:35 2283

原创 Android自定义控件(二):提高篇

接着上一篇入门篇Android自定义控件(一):入门篇,相信对于Android自定义这一块已经有一个初步的理解了,但是想要实现更为高大上的功能也许还是“心有余而力不足”,上篇是自定义的View,那么这次就来详细地跟着例子自定义ViewGroup,时不我待,即刻动身。提高今天我们最要实现的一个烂大街的侧滑菜单,那么既然是自定义,我们可以自定义侧滑的方式,还有菜单完全显示的程度以及各种你能想到的好玩的。

2016-07-02 22:38:08 419

原创 Android自定义控件(一):入门篇

当Android学习了一段时间后,可能就不满足于系统所提供的控件了,特别是有个性的开发者有着自己的想法,这时就需要学习Android自定义控件了,这里简单介绍一下自定义控件的几个步骤:编写自定义控件属性;编写自定义控件类,继承View类型或者ViewGroup类型;在构造方法中获取xml属性值;重写onMeasure,测量子View的宽高;重写onLayout,布置子View的位置;重写

2016-06-24 00:21:06 620

原创 android事件分发教程(二):ViewGroup

上一篇博客android事件分发教程(一):View我们以一种最简单易懂的方式学习了View的事件分发机制,那么趁热(火)打铁(劫),今天来个进阶- -,学习哈ViewGroup中的事件分发。首先要引进一个方法:onInterceptTouchEvent;这个事ViewGroup独有的,从字面意思可以理解到是个拦截事件;既然本篇是研究ViewGroup的,那么新建一个MyLayout.java,继承

2016-06-15 23:49:24 510

原创 android事件分发教程(一):View

之前也写过类似的blog,今天回过头来重新理解了一下,觉得当时很多地方有问题,因此再写一篇,一是纠正自己对android事件分发这块的理解,二是想让更多还不是太了解这方面的人也能够掌握。所以本文用的都是最简单的案例,最有力的说明,来一步步阐述android事件分发机制。开始前简单介绍一下android事件分发吧:假如你的ListView中包含有RadioButton之类的,而且ListView还设置

2016-06-15 00:26:10 589

原创 初学Maven所报的各种错

Dynamic Web Module 3.0 requires Java 1.6 or newer在项目的pom.xml的标签中加入: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId>

2016-06-03 17:46:59 635

原创 Spring整合MyBatis

转载请注明出处:引言Spring和MyBatis大概是干什么的这里就不展开介绍了,我也只是个小白,先大概入个门吧。如果对这些不是太清楚了可以参考我的前两篇水文《HelloSpring》、《MyBatis入门教程及基础进阶》。Spring很好地提供了对其他框架的集成支持,例如这里的MyBatis,这样会非常的方便我们对数据库进行操作,极大地简化了代码量。准备工作需要引入的jar包有: commons

2016-05-18 20:36:22 523

原创 Hello Spring

转载请注明出处:Spring简单介绍Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。 - 目的:解决企业应用开发的复杂性 - 功能:使用基本的JavaBean代替EJB,并提供了

2016-05-18 17:03:14 740

原创 MyBatis入门教程及基础进阶

转载请注明出处:http://blog.youkuaiyun.com/qq_15002323/article/details/51306354MyBatis简介MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis 是支持

2016-05-03 17:31:26 3788

原创 Java Web防止表单重复提交

转载请注明出处: 注:本章内容基于struts2框架,action就相当于servlet哎,今天遇到这个问题快把我搞崩溃了咯,但是,注意只是快,并没有- -,感觉自己就像卡卡罗特一样啊,只要不把我拍死,我只会变得更强噢。场景重现上网最痛苦的事莫过于网速慢了,这个玩lol的自然懂~~~。打个粗糙的比方吧,一个登陆页面,你很急,但是网很卡,登了半天没卵用,你连点了几次登录①。你登录进去了,刷新了浏

2016-04-26 20:21:43 2506

原创 Cookie、Session傻傻分不清楚

转载请注明出处:http://blog.youkuaiyun.com/qq_15002323/article/details/51201597Cookie是什么鬼额,作为一个java web小白,看到Cookie一脸懵逼有没有(⊙﹏⊙)。虽然英文差的不要不要的,但还是知道这是个能吃的曲奇吧。什么鬼?会话保持?客户端存储?最好不要让我弄懂了,要不然砍翻你,啊痛!~Cookie嘛,说简单点就是一种在客户端保存信息的

2016-04-22 14:57:29 1644 1

原创 浅谈Java中的反射机制

一、什么是反射机制Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。二、实例分析案例实体类Person:class Person { private String name; private int age;

2016-04-06 17:30:50 735

原创 Java经典小案例(不定时更新)

人类除了擅长颓废,做什么都不对1. 实现金字塔效果 import java.util.Scanner;/** * @author caojiantao-ext 根据输入的数目输出金字塔 */public class _01 { public static void main(String[] args) { System.out.print("请输入金

2016-03-18 10:37:25 28923 10

原创 android图片预览

首先呢要介绍哈这个android端图片预览,是现在主流app必不可少的一个功能。看到一张图片,是不是就想双击放大,双手指自由缩放,额,今天就给大家带来这样一个工具类——MyImageView。package com.cjt_pc.myimageview;import android.content.Context;import android.graphics.Matrix;import and

2015-10-26 08:53:06 1099

原创 结合LruCache和DiskLruCache高效加载图片

很多android小白在第一次独立写项目的时候,一定会遇到一个头疼的问题,那就是图片。关于大部分的问题,在我的上一篇博客你真的会用ListView吗?中都讲到了,但是再往深处想,我们采用的LruCache缓存技术,是基于运行中的内存,于是在关掉程序后再次打开,图片还是得继续下载。那我们就将缓存的数据放在手机存储中啊,是的,DiskLruCache完美解决了这个问题,并且每一个app都有一个默认的缓存

2015-10-14 17:40:24 526

原创 你真的会用ListView吗?

最简单也是最复杂的控件——ListView,这句话真的一点也不夸张。依稀记得大三下学期,抱着一本《Android第一行代码》,每天开开心心的学一点基础知识。UI学了没多少,就接触到了ListView。用个for循环,给ListView塞一串item,自己还可以滑,(@ο@) 哇~,这是极好的。又扯远了,上干货。假设一个界面就一个ListView,然后ListView的Item就是一个ImageVie

2015-10-14 09:11:15 1492

原创 在android中玩转wcf

package com.cjt_pc.vehicleregulatoryestimate.utils;import android.app.Activity;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializat

2015-10-10 10:55:30 771

原创 是时候提升逼格了——Material Design(不定时更新)

1、点击产生涟漪的效果——RippleEffect【项目地址】https://github.com/traex/RippleEffect【导入方法】dependencies { compile 'com.github.traex.rippleeffect:library:1.3'}【属性一览】 []里面前面单独的数字代表默认值,后面是取值范围app:rv_alpha [intege

2015-10-08 16:23:49 799

原创 App界面Tab选项卡之Fragment

上次写过App界面Tab选项卡之ViewPager,今天就谈谈另一种实现方式,采用Fragment的方式,关于Fragment有篇非常好的文章,不太熟悉的先自行前往get点我点我。今天只是Fragment初探,目的还是实现ViewPager一样的界面,但是由于Fragment自身并不支持左右滑动,须自行实现,所以这次只能靠点击下面的bottom_bar进行页面切换。在后面我会写一个综合版的,让Fra

2015-08-23 10:23:04 1129

原创 App界面Tab选项卡之ViewPager

说到现在app的Tab选项卡,随处可见,微信、QQ音乐数不胜数,因此了解并掌握实现原理显得尤为重要。原理并不是特别的复杂,初学android一定要多动手,多敲代码。今天就说说App界面Tab选项卡之ViewPager。先说说ViewPager,附加于android-support-v4.jar中,用于实现view之间的相互切换,一般新建时便会自动生成,在xml中应用须输入完整路径,例如:<andro

2015-08-21 22:45:42 3040

原创 LayoutInflater那些事儿

对于android初学者而言,看到LayoutInflater只能说是“爱过“。在自定义控件的时候构造函数中会LayoutInflater.from(mContext).inflater(layout_id, this);还有重写 适配器布局会LayoutInflater.from(getContext()).inflater(layout_id, null);当时我也是只知道这样用,具体怎么回事

2015-08-20 17:58:08 593

原创 ListView实现下拉刷新和上拉加载

本文需要android自定义布局基础,传送门:Android 手把手教您自定义ViewGroup在学习android之初的时候接触过下拉刷新,刚好现在手头也正要用,但在此基础上还要实现上拉加载!但我只是个搬运工啊,虽说原理不是很难,但是要达到我想要的效果,改起来还不是很容易的。于是我又跟自己较劲了一把,非要自己写一个。好了,福利大放送:package com.cjt_pc.testapplicati

2015-08-06 15:13:56 882

原创 Android侧滑菜单实现

之前都一直是看郭大神的博客,也就看到了那个仿人人网的侧滑菜单,但是感觉太冗杂,权当理解原理最好不过。后来实际开发过程中也要用到,我就想可不可以自己写一个,自制侧滑侧单,既可以左侧滑出,也可以从右侧滑出,或者是双向滑动的,那该多好啊,于是,我就上路了。。。在此我得知android本身就有一个类Scroller,用于处理布局内容的滑动,然后就一探究竟(这里面尤其值得注意滑动的偏移量与屏幕坐标系是相反的,

2015-08-05 19:10:51 790

原创 初入csdn博客

不知不觉,已经快要实习了。想想大一刚进校那段时间,恍如昨日发生一般。当时是多么的青涩单纯,怀揣着大学的梦想走进XX大,我是有多么的开心。       时间就是这么残酷,任风云万变,她的脚步也不会因之加快,或减慢。然而,亘古不变的时间法则,正是这个世界得以日新月异的永恒保障。       我时常在想,要是我能一直是小时候,亦或是一直在上学,那该多好啊!这样就不用面对这个残酷的社会,肩扛家庭的

2015-05-14 22:56:41 640

ListViewTest源码

ListViewTest的源码压缩包,有助于ListView的学习。

2015-10-14

fragment实现页面选项卡

通过fragment实现Tab页面选项卡,非常实用,简单易懂。。。

2015-08-23

ViewPager实现Tab滑动

利用ViewPager实现可滑动的Tab视图,非常的简便和实用。

2015-08-21

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

TA关注的人

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