- 博客(597)
- 资源 (40)
- 收藏
- 关注
原创 同步锁的三种实现与案例解析
1、同步和异步的区别和联系所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 同步在一定程
2017-12-17 17:29:43 7414 1
原创 GIT 删除指定COMMIT提交
1.git log找到要删除的提交 Id ( 简写为 Id-a) 之前一次 提交的 Id (简写为 Id-b);2.git rebase -i Id-b表示回退到之前的版本,并在之后会提交需要的所有提交。3.删除要删除的提交(skip 变成 drop 或者 删除想要删除的那一行),并保存退出。4.git push origin branch-name --force
2017-12-08 20:33:22 44723 1
原创 我是一个线程
我是一个线程, 我一出生就被编了个号: 0x3704, 然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说:我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能永远回不来了。我一脸懵懂,包裹,什么包裹?”不要着急,马上你就会明白了, 我们这里是不养闲人的。“果然,没多久,屋子的门开了, 一个面貌
2017-12-07 21:13:52 508
原创 Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
Spring Boot使我们更容易去创建基于Spring的独立和产品级的可以”即时运行“的应用和服务。支持约定大于配置,目的是尽可能快地构建和运行Spring应用。 之前我们创建基于Spring的项目需要考虑添加哪些Spring依赖和第三方的依赖。使用Spring Boot后,我们可以以最小化的依赖开始spring应用。大多数Spring Boot应用需要很少的配置即可运行,比如我们可以创
2017-12-07 20:20:25 395
原创 JavaScript replace() 方法 之 var.replace is not a function
需要对 var 添加 toString 方法str.toString().replace()
2017-11-20 11:35:55 31193 4
原创 HDFS的运行基本原理
文件的拆分形式 - File 拆分成 block 拆分成 package,block 通过键值对存放在 NameNode写入操作 - C 端 发送请求给 NN,NN 返回写入地址,C 端逐个 package 传递,不同 DN 存放不同 block。读取操作 - C 端 发送请求给 NN,NN 返回文件地址,C 端按照文件先后顺序读取文件。
2017-11-05 17:12:19 744
原创 Cygwin 未找到命令
Cygwin 下输入 ssh-host-config 显示未找到命令。原因是,在安装 Cygwin 没有选择与 SSH 相关的插件。解决办法重新安装 setup.exe在Select Packages界面里,Category展开net,选择如下openssh和openssl两项如果要在Eclipe上编译Hadoop,需要安装Cat
2017-10-30 18:24:56 9192
原创 GC详解及Minor GC和Full GC触发条件总结
GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。GC机制要准确理解Java的垃圾回收机制,就要从:“什么时候”,“对什么东西”,“做了什么”三个方面来具体分析。第一:“什么时候”即就是GC触发的
2017-10-25 16:06:41 4314 2
原创 JAVA POI HSSFWorkbook 导出Excel表格超大数据量解决方案
Java实现导出excel表格功能,大部分都会使用apache poi,apache poi API 地址POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果也不是太好。3.8版本的POI新出来了SXSSFWorkbook,可以支持大数据量的操作,只是SXSSFWorkbook只支持.xlsx格式,不支持.xls格式。3.8版本的POI对ex
2017-10-25 15:43:28 10171
原创 JVM 年轻代 老年代 持久代 GC
虚拟机中的共划分为三个代:年轻代(Young Generation)、年老点(OldGeneration)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾收集影响比较大的。年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期
2017-10-23 20:50:30 457
原创 JVM 堆内存设置原理
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),Ne
2017-10-23 20:49:03 297
原创 JVM(java 虚拟机)内存设置
一、设置JVM内存设置1. 设置JVM内存的参数有四个:-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn Java Heap Young区大小,不熟悉最好保留默认值;-
2017-10-23 20:45:46 691
原创 线程、多线程与线程池总结
线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。http://www.jianshu.com/p/b8197dd2
2017-10-23 20:28:07 299
原创 Java 的线程池 ExecutorService 简单介绍
做java的开发,线程是经常用的。最简单的使用大家都应该清楚,如继承Thread类、实现Runnable接口。这样,是没有问题。但是当我们需要频繁的处理一些任务时候,就要多次创建线程和处理线程关闭等回收工作。 这样比较麻烦。并且如果同时不限制线程个数,很多个任务一起执行,对性能有一定影响。所以,java提供了Executor线程池来处理并发任务,并且可以支持4种模式: 1.new Cach...
2017-10-23 20:16:38 535
转载 我是一个线程
线程状态有,就绪、等待、运行。就绪是等着别人执行,等待是等待数据库执行;单独启动的线程是会被 Kill 掉的,而线程池之中的线程不会,只有在重启时才会消亡;多个线程访问共享资源,某些情况需要使用锁机制的;线程占用 CPU 太大太久产生死锁,操作系统根据算法杀死某个线程。
2017-10-23 11:36:22 325
转载 在你点击了 Google 搜索按钮之后到看到结果这不足1秒钟的时间内,它做了什么?
在你点击了 Google 搜索按钮之后到看到结果这不足1秒钟的时间内,它做了什么?互联网上的内容如何被谷歌找到?什么样的内容会被收录?想必大家一定都想知道谷歌搜索按钮背后的秘密吧。别急,开始之前我们先来看一下神秘的谷歌数据中心……谷歌的数据中心高度机密,我们所能得到的信息十分有限。我们先来看几个数据:谷歌在美国本土的数据中心有19个以上,另有17个分布在美国以外的世界各地;每个数据中心有5
2017-10-23 10:28:23 4448 2
原创 使用 getResource 获取文件路径
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题。Class.getResource(String path)path不以’/'开头时,默认是从此类所在的包下取资源;path 以’/'开头时,则是从ClassPath根下获取;什么意思呢?看下面这段代码的输出结果就明白了:
2017-09-22 16:48:09 5229 1
原创 BeanUtils 工具 copyProperties 拷贝对象
java bean拷贝操作又一个非常好用的工具类 BeanUitls :spring (org.springframework.beans.BeanUtils)和apache commons-beanutils(org.apache.commons.beanutils.BeanUtils)中分别存在一个BeanUtils,提供了对。特别注意 这两个类在不同的包下面,而这两个类的copyPr
2017-09-22 16:44:58 2358
原创 BigDecimal 实现末尾去 0
BigDecimal 原生提供了 stripTrailingZeros 方法可以实现去掉末尾的 0,然后使用 toPlainString 可以输出数值,注意这里如果使用 toString() 会变成科学计数法输出使用实例money.stripTrailingZeros().toPlainString()
2017-09-22 14:35:51 5379
原创 BufferedReader 读取 UTF-8 文件中文乱码
读取 txt 文件乱码:BufferedReader read = new BufferedReader(new FileReader(new File(filenameString)));解决乱码代码示例:InputStreamReader isr = new InputStreamReader(new FileInputStream(filenameString), "UTF-8"
2017-09-19 10:27:27 4632
原创 SCP 从堡垒机DUMP文件 密码错误解决办法
使用 SCP 命令从服务器DUMP文件,遇到如下报错1.样例 A 2. 样例 B 原因在于Win7客户管理自身出了问题此时,变更本机管理 用户和组 之中确认全名和用户名即可。处理方式,详见链接https://jingyan.
2017-08-08 16:51:45 1966
原创 git diff 比较两个版本的差异
直接使用Git diff 可以产看当前没有add 的内容修改查看已经add 没有commit 的改动 使用 git diff --cachedgit diff HEAD 是上面两条的合并git diff 版本号码1 版本号码2 src : 比较两个版本号码的src 文件夹的差异
2017-07-15 09:42:42 1565
原创 MYSQL 在字段里现有内容后面添加字符串
更新一个字段,在它的后面加一个字符串,不查询数据库得到这个字段值 怎么添加?? 我的test表,有个user字段,我现在想在它后面加了另一个用户的名字 我在mysql数据库这样写UPDATE test SET user= user+ ',phpchina' WHERE id= '2'; 这样是不对的,mysql数据库把它当成数字相加了
2017-07-12 22:02:48 18755
原创 Win7 Zookeeper的下载与安装
一、 下载 官网地址: http://zookeeper.apache.org/下载方法可参考 http://jingyan.baidu.com/article/6181c3e094266d152ef153da.html 不过稍微看得懂英文的也可以找到下载的地方。二、 安装 我第一次下载的是zookeeper-3.5.0,jdk是1.7的,但是通过bin目录下启动的时候
2017-07-11 11:48:51 972
原创 MySQL 记录不存在时插入 记录存在则更新的实现方法
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;INSERT 中 ON DUPLICATE KEY UPDATE的使用如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如
2017-07-06 09:55:36 1341
原创 在linux下如何将文件夹打包
Linux zip压缩。压缩当前文件夹下所有文件,压缩为a.zip。命令行的方法是怎样。zip -r fileName.zip 文件夹名tartar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。常用格式:单个文件压缩打包 tar czvf my.tar file1多个文件压缩打包 tar czvf my.tar fil
2017-07-04 00:19:43 3761
转载 vim 配置及插件安装管理(超级详细)
1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了
2017-07-04 00:04:51 1811
原创 MySQL 查询某字段的多条结果展示成按逗号隔开
MySQL 查询某字段的多条结果显示成按逗号隔开有表:tel字段:id tel 1 13578945620 2 13578945621 3 13578945622 4 13578945623 5 13578945624查询tel字段,出现的结果是这样的:13578945620,13578945621,13578945622,13578945623,13578
2017-07-03 20:42:32 2164
原创 定时任务 quartz CronExpression 表达式
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为:1.秒(0~59)2.分钟(0~59)3.小时(0~23)4.天(月)(0~31,但是你需要考虑你月的天数)5.月(0~11)6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)7.年份(1970-2099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一
2017-06-23 20:59:45 548
原创 String Date Calendar之间的转换
1.Calendar 转化 String Calendar calendat = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String dateStr = sdf.format(calendar.getTime()); 2.String 转化Calendar
2017-06-23 20:58:01 5431
原创 为什么 idea 编辑代码无效
1. 编辑之后 没有 make 这个在配置 tomcat 的配置之中有体现,如果出现这个问题,可以去检查 是否有 make 字段配置。没有的话试一试重现添加上去。保证每次都是现重新打包然后再重启;2. 重新配置 class ,这个在 debug 模式之下就是可实现的。保证每次更新既有的 out 包,从而实现代码有效;
2017-06-14 16:20:06 3030 1
原创 MySQL数据库安装与配置详解
目录一、概述二、MySQL安装三、安装成功验证四、NavicatforMySQL下载及使用 一、概述 MySQL版本:5.7.17 下载地址:http://rj.baidu.com/soft/detail/12585.html?ald 客户端工具:NavicatforMySQL 绿色版下载地址:http://www.cr173.com/soft/
2017-06-12 00:06:32 238
原创 JAVA 之 使用 POI 导出 Excel (二)
导出列表,主要分为两个步骤,(1)下载到服务器端;(2)从服务器端将文件 down 到 浏览器端;步骤(1)已经在 JAVA 之 使用 POI 导出 Excel (一) 中给出,详见 http://blog.csdn.net/u013630349/article/details/72824419。 其中需要注意的点有如下几个 1. 在服务器端检索生成代码文件夹 out ; 2. 创建和检测文
2017-06-07 21:07:29 373
原创 Spring+Hibernate下配置Hibernate二级缓存EhCache
什么样的数据适合存放到第二级缓存中? 1 很少被修改的数据 2 不是很重要的数据,允许出现偶尔并发的数据 3 不会被并发访问的数据 4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。 假设类A为持久化对象,对应表为tableA,这里没有考虑A和其他表关联的情况。在spring下配置使用二级缓存:<property nam
2017-06-05 16:04:32 887
原创 Throwable、Error、Exception、RuntimeException 初阶
相关概念的练习与区别 1.Throwable 类是 Java 语言中所有错误或异常的超类。它的两个子类是Error和Exception; 2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方
2017-06-05 14:01:37 413
原创 Intellij Idea 创建 Maven 工程
Maven 两个特点 1. 更加方便快捷的添加依赖的 JAR 包 ; 2. 规范了整个项目的文件目录结构 ;怎么安装配置 Maven 常用的开发工具Idea、MyEclipse里面都已经集成了Maven了,不过最好是从官网下一个配置到自己电脑里,开发工具里的可能有少许的Bug。 首先去Maven官网,下载Maven的包,地址为http://maven.apache.org/download.
2017-06-02 18:14:11 819
原创 JAVA 之 file 的 getPath、getAbsolutePath和getCanonicalPath的不同
getPath():返回的是定义时的路径,可能是相对路径,也可能是绝对路径,这个取决于定义时用的是相对路径还是绝对路径。如果定义时用的是绝对路径,那么使用getPath()返回的结果跟用getAbsolutePath()返回的结果一样getAbsolutePath():返回的是定义时的路径对应的相对路径,但不会处理“.”和“..”的情况getCanonicalPath():返回
2017-06-01 16:41:03 563
原创 使用git命令 (git reset --hard HEAD) 回退版本信息
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。现在,我们要把当前版本A ,回退到上一个版本“B”,就可以使用git reset命令:$ git reset --hard HEAD^HEAD is now at ea34578
2017-06-01 16:32:44 28453 1
原创 JAVA 之 使用 POI 导出 Excel (一)
一个 Excel 文件对应于一个 workbook(HSSFWorkbook),一个 workbook 可以有多个 sheet(HSSFSheet)组成,一个 sheet 是由多个 row(HSSFRow)组成,一个 row 是由多个 cell(HSSFCell)组成。基本导出操作步骤: 1、用HSSFWorkbook打开或者创建“Excel文件对象” 2、用HSSFWorkbook对象返回或者
2017-05-31 21:56:31 479
apache-ant-1.10.1-src
2018-01-24
新浪微博-redis实践
2017-12-07
Maven最佳实践
2017-12-06
paoding-rose
2017-12-06
MVC设计模式 - 发展进程
2017-04-09
WebServiceSample
2017-03-13
mybatis传智播客课堂笔记
2016-07-28
hibernate 5.0.9.Final
2016-06-02
MyBatis 基本配置文件
2016-06-01
log4j.properties
2016-06-01
mysql-connector-java-5.0.7.rar
2016-06-01
struts-2.5-all
2016-06-01
TortoiseSVN-1.9.3.27038-x64-svn-1.9.3
2016-06-01
Maven实战_.7z
2016-05-30
struts-2.3.16.1
2016-05-29
mybatis-3-mybatis-3.4.0
2016-05-27
CSS权威指南
2016-05-26
精通CSS高级Web标准解决方案
2016-05-26
架构之美(清晰中文完整版)
2016-05-17
apache-tomcat-8.5.0-windows-x64.zip
2016-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人