自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (5)
  • 收藏
  • 关注

原创 java锁概括

Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:标题乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用

2021-07-04 18:22:42 161

原创 BIO、NIO、AIO,同步、异步、阻塞、非阻塞的概念

同步异步、阻塞非阻塞同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写);异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API);阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回);非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排

2020-11-18 19:08:47 302

原创 java中try catch语句和finally执行顺序的原理

java方法是在栈幀中执行,栈幀是线程私有栈的单位,执行方法的线程会为每一个方法分配一小块栈空间来作为该方法执行时的内存空间,栈幀分为三个区域:操作数栈,用来保存正在执行的表达式中的操作数,数据结构中学习过基于栈的多项式求值算法,操作数栈的作用和这个一样局部变量区,用来保存方法中使用的变量,包括方法参数,方法内部声明的变量,以及方法中使用到的对象的成员变量或类的成员变量(静态变量),最后两种...

2020-02-01 10:49:10 566 2

原创 同步、异步、阻塞、非阻塞的理解

同步/异步主要针对C端:同步: 所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 异步的概念和同步相对。当c端一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部

2016-12-06 20:02:51 471

原创 集合操作的ConcurrentModificationException异常分析,为什么有时候循环remove不会异常?Iterator方式也会异常吗?

在我们代码中,禁止在foreach遍历list的时候直接使用list.remove()方法来删除元素的,会ConcurrentModificationException。不同的集合使用不同的方式,ArrayList,Vector,CopyOnWriteArrayList***单线程情况:如果实际应用场景下有在遍历时删除元素的需求,如果容器为ArrayList或者Vector请使用Iterato

2016-10-11 14:52:16 628

原创 Linux 修改文件字符集解决乱码

Linux 修改文件字符集解决乱码首先查看文件字符集file xxx.log,可以查看到当前文件的字符集,比如xxx.log的字符集是gbk然后 iconv -f gbk -t utf-8 xxx.log,xxx.log的字符集即修改了

2016-08-26 10:55:02 1459 1

原创 jenkins,Tomcat重启脚本,设置jvm参数之后遇到了一个坑。

如下是我的重启脚本 #/bin/sh source /etc/profile sh /opt/kms_jsoncach.shpid=`ps -ef | grep "APPmanager" | grep -v 'grep\|tail\|more\|less'| awk '{print $2}'` 5 kill -9 $pid rm -f /opt/eAPPma

2016-05-05 19:23:08 3576

转载 深入理解JVM : Java堆中对象创建、布局、访问全过程

一、对象的创建new Animal();1.类加载检查:检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类的加载过程。2.为对象分配内存对象所需内存的大小在类加载完成后便完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。2.1根据Java堆中是否规整有两种内存的分配方式:(J

2016-03-07 15:32:08 3159 1

转载 nginx 反向代理和正向代理区别

一直对反射代理的反向不知道如何理解,经过百度知道,再结合下面这幅图,总算弄清楚一点了。简单的说从一个局域网出来到服务端为正向,从客户端要进入一个局域网为反向。 概念: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为

2016-03-04 10:35:33 658

转载 Java中的Copy-On-Write容器,CopyOnWriteArrayList和CopyOnWriteArraySet

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。C

2016-02-17 18:14:06 1293

原创 HashMap,LinkedHashMap,TreeMap,HashTable,ConcurrentHashMap,ConcurrentSkipListMap 关于k,v是否为null,以及输出排序

Map的k,v是否为可为null,遍历输出顺序使用场景

2016-02-16 11:24:39 712

转载 tomcat的acess_log打印post请求参数,分析日志

有的时候服务器端接口允许请求的方式多样化且不过定,没有nginx的内网服务还需要统计分析post请求日志1) 在项目中加入相应的包和类,加载那里无所谓,只要web.xml配置正确即可package filters; import java.io.IOException; import java.util.Enumeration; import javax.servlet

2016-01-12 14:14:54 6640 1

转载 Git push与pull的默认行为

git push通常对于一个本地的新建分支,例如git checkout -b develop, 在develop分支commit了代码之后,如果直接执行git push命令,develop分支将不会被push到远程仓库(但此时git push操作有可能会推送一些代码到远程仓库,这取决于我们本地git config配置中的push.default默认行为,下文将会逐一详解)。因

2016-01-08 10:45:49 1700

原创 Maven解决多个jar包引入了不同版本jar包

通过 mvn dependency:tree 查看 多个包引入的依赖; 在eclipse中直接选中包,右->maven exclude maven artifact 即可

2015-12-09 17:17:25 15667 1

原创 linux通过grep kill掉tomcat进程脚本,百分百kill掉

#!/bin/shsource /etc/profilepid=`ps -ef | grep "testtomcat" | grep -v 'grep\|tail\|less\|more'| awk '{print $2}'` if [ "$pid" != "" ] ; then kill -9 $pid rm -f /opt/testtomcat/pidel

2015-11-18 14:25:16 2247

原创 jenkins发布项目到远程主机上,配置两台linux如何使用SSH免密码登录

一、首先要配置两台linux如何使用SSH免密码登录,这样脚本执行scp命令以及远程执行脚本都不需要输入密码: A为本地主机(即用于控制其他主机的机器,jenkins服务器) ; B为远程主机(即被控制的机器Server,jenkins运行之后发布项目的服务器), 假如ip为192.168.1.100 ; A和B的系统都是Linux在A上的命令:ssh-keygen -t rsa (连续三次回

2015-11-16 13:18:17 8838

转载 linux的/dev/null 2>&1 &含义

在学习Linux的过程中,常会看到一些终端命令或者程序中有”>/dev/null 2>&1 “出现,由于已经遇到了好几次了,为了理解清楚,不妨花点时间百度或者google一下相关的知识。0:表示键盘输入(stdin) 1:表示标准输出(stdout),系统默认是1 2:表示错误输出(stderr)command >/dev/null 2>&1 & == command 1>/dev/null

2015-11-13 12:12:44 555

转载 Linux 1>/dev/null 2>&1的含义

Linux 1>/dev/null 2>&1的含义shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形式来定义输出/dev/null 代表空设备文件 代表重定向到哪里,例如:echo “123” > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null”2 表示stderr标

2015-11-13 12:09:04 687

原创 git stash 常用命令用法

当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择。步骤如下:一、添加改动到stash。一般情况下git stash 就直接存储起来了。如果stash非常多,在原分支 git stash save “comment”,加入message方便后去git stash pop stash{编号}。网上

2015-10-29 16:01:20 766

转载 git rebase原理

git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。要搞清楚这个东西,要先看看版本库状态切换的两种情况:我们知道,在某个分支上,我们可以通过git reset,实现将当前分支切换到本分支以前的任何一个版本状态,即所谓的“回溯”。即实现了本分支的“后悔药”。也即版本控制系统的初衷。 还有另一种情况,当我们的项目有多个分支的时候。我们除了在本地开发的

2015-10-28 12:13:39 2115

原创 接触git,初学git命令记录一下

git checkout branchName  ;切换到分支git checkout –b  branchName ;创建新分支git branch –d branchName ;删除本地分支 git status ;查看当前状态git add/stage filename,git add/stage .,git add/stage -A,git add/stage*;stage

2015-10-27 17:25:26 415

原创 jenkins中通过execute shell启动tocat无法启动问题

以前使用Jenkins直接使用tomcat::redeploy方式,偶尔会PermGen space (Permanent Generation space,是指内存的永久保存区域) OutOfMemoryError;而且发布时候需要更改pom文件中tomcat的url、端口、用户、密码等,最主要的是还需要tomcat下webapp下的manager,如果没有manager是无法发布的。基

2015-10-12 16:44:01 3937

转载 Tomcat启动报Error listenerStart错误,如何定位问题呢

启动tomcat的时候查看 catalina.out时候只发现:SEVERE: Error listenerStart 。看不到其他原因,这个时候我们应如何做呢?为了调试,我们要获得更详细的日志。可以在WEB-INF/classes目录下新建一个文件叫logging.properties,内容如下 :handlers = org.apache.juli.FileHandle

2015-08-14 18:41:26 1873

原创 使用druid连接池,配置sql防火墙发现的sql注入问题

最近在使用druid连接池,同时也配置了web和spring的关联监控,检测到select * from tables param like #{param1} “%”的语句被拦截了。做个笔记。解决方法有两种: 一、 select * from tables param like concat(${param1},”%”)。 二、传入 参数的时候动态拼接 param1=param1+”%

2015-08-13 13:46:40 9207

转载 门面(Facade)模式

一、 门面(Facade)模式外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。医院的例子用一个例子进行说明,如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。首先病人必须先挂号,

2015-07-08 10:49:04 426

转载 Java程序员们最常犯的10个错误

1.将数组转化为列表将数组转化为一个列表时,程序员们经常这样做:1List list = Arrays.asList(arr);Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java

2015-07-07 13:23:01 400

转载 mbyaits根据表自动生成bean,mapper,测试方法

MyBatis Generator 详解分类: Mybatis2014-12-23 14:27 6523人阅读 评论(2) 收藏 举报mybatisgeneratorMBG中文文档目录(?)[+]MyBatis Generator中文文档MyBatis Generator中文文档地址:http://generato

2015-05-16 13:59:25 740

原创 java实现斐波那契数列和约瑟夫环

斐波那契数列的递归实现:public int fn(int n) {if (n == 1 || n == 2)return 1;return fn(n-1)+fn(n-2);}非递归写法:public int fn(int n) {int a =1;int b = 1;int tmp;if (n == 1 || n == 2)return 1;f

2015-04-01 14:35:28 694

转载 赶集网mysql开发的规定

赶集网mysql开发36军规写在前面的话:总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。(一)核心军规(1)不在数据库做运算:cpu计算务必移至业务层(2)控制单表数据量:单表记录控制在1000w(3)控制列数量:字段数控制在20以内(4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据(5)拒绝3B:拒绝大sq

2015-03-24 10:35:14 652

原创 MAVEN项目部署到tomcat7问题

使用的是Tomcat 7,1、需要修改pom.xml中部署的url地址,将http://localhost:8080/manager改http://localhost:8080/manager/text2、给tomcat用户权限分配上,需要同时具备manager-gui和manager-script权限,我在遇到该问题时,就是忘了分配manager-script权限。正确的

2015-03-05 15:47:44 7211 1

原创 TCP四次挥手关闭读写通道

第一种解释:TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。 简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:1.服务器读通道关闭2.客户机写通道关闭3.客户机读通道关闭4.服务器写通道关闭关闭行为是在发起方数据发送完毕之后,给对方发出一个FIN(finish)数据段。直到接收到对方发送的FIN,且对方收到了接收确认ACK之后

2015-02-28 13:04:39 2480 2

原创 TCP和UDP的一些基础

1. 传输层的主要功能是什么?2. 传输层如何区分不同应用程序的数据流?3. 传输层有哪些协议?4. 什么是UDP协议?5. 为什么有了UDP,还需要TCP?6. 什么是TCP协议?7. 怎么理解协议和程序?8. TCP是否真的有链接?9. 链接是如何建立的(逻辑上)?10. 所谓的建立TCP链接开销很大,具体是指什么?11. 三次握手的目的是什么?12

2015-02-27 14:51:15 1143

转载 TCP为什么是三次握手不是两次四次呢?

第三次握手——革命斗争中的通信故事在革命战争影片中,经常会看到英勇的解放军战士背着步话机在喊“长江长江,我是黄河,听到请回答。”很明显,这是呼号为黄河的一方想找呼号为长江的另一方说事,为了保证影片的节奏,导演往往把后面的联络过程省略了,其实后面还有两步,长江听到黄河的呼叫后要回答“黄河黄河,我是长江,我听到了你,请回答。”这叫做第二次握手。黄河听到长江的呼叫后还要回答“长江

2015-02-27 11:01:30 541

转载 Java分布式应用

转载系统架构演化历程-初始阶段架构初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。

2015-02-26 11:57:25 820

转载 AWK基础命令

awk命令详解简单使用:awk :对于文件中一行行的独处来执行操作 。awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。  详细介绍:AWK命令介绍 awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式

2015-01-26 18:22:52 476

转载 web服务器和应用服务器概念比较

转自:http://hi.baidu.com/lclkathy/blog/item/dae3be36763a47370b55a970.html一 常见的WEB服务器和应用服务器  在UNIX和LINUX平台下使用最广泛的免费web服务器是W3C、NCSA和APACHE服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器。  在选择使用WEB服务器应考

2015-01-26 10:40:43 382

转载 mysql分区分表的概念

一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例 二,mysql分表和分区有什么区别呢 1,实现方式上 a),mysql的分表是真正的分

2015-01-20 12:01:43 805

原创 十进制小数转为二进制

十进制数转换为二进制的大家都清楚了,那么带小数的十进制如何转换为二进制?整数部分当然和十进制整数转换方式一样,也就是说小数部分如何转化为二进制?方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取

2015-01-16 12:01:37 1633

原创 linux下crontab定时执行java程序,java程序不执行的问题

crontab的语法在以上各个字段中,还可以使用以下特殊字符:星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”正斜线(/):可以用正斜线指定时间

2015-01-06 17:36:47 7866

原创 遍历Map<k,v> k,v的几种方法

遍历key+valuekeySet遍历key+value(写法1):Iterator it= map.keySet().iterator();while (iter.hasNext()) {  key =it.next();  value = map.get(key);}keySet遍历key+value(写法2):

2014-12-19 19:53:45 3411

java设计模式类图

java设计模式,设计模式,类图,UML图

2014-10-16

java经典算法

java面试必备算法,其中也包含了一些经典算法,开阔思维

2014-10-15

head first 设计模式

高清中文版 引子 1 设计模式入门 欢迎来到设计模式世界 2 观察者模式 让你的对象知悉现况 3 装饰者模式 装饰对象 4 工厂模式 烘烤OO的精华 5 单件模式 独一无二的对象 6 命令模式 封装调用 7 适配器模式与外观模式 随遇模式 8 模板方法模式 封装算法 9 选代器与组合模式 管理良好的集合 10 状态模式 事物的状态 11 代理模式 控制对象访问 12 复合模式 模式中的模型 13 与设计模式相处 真实世界中的模式

2014-08-30

Java 解惑

Java解惑,是一本以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读。

2014-08-30

空空如也

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

TA关注的人

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