人在成都 互联网相关技术爱好者
暂时未有相关通用技术能力~
阿里云技能认证
详细说明<div class="markdown_views"> <p>原文地址: <br><a href="http://labs.google.com/papers/mapreduce.html">http://labs.google.com/papers/mapreduce.html</a></p> <p>译者: alex </p> <h2 id="摘要">摘要</h2>
<div class="markdown_views"> <h2 id="复制">复制</h2> <p>为提高高可用性,排除单点故障,redis支持主从复制功能。 <br> 其整体结构是一个有向无环图。</p> <h3 id="同步方式">同步方式</h3> <p>分为两种:</p> <ul> <li>全同步 <br> 全同步是第一次从机连主机是进行的同步,主机会生
<div class="markdown_views"> <h3 id="服务器流程">服务器流程</h3> <ol> <li> <p>初始化全局</p> <ul> <li>创建一个RedisServer的结构,并且赋给默认值</li> <li>配置:端口,AOF选项,数据库个数,连接数等等</li> <li>基本数据结构,比如订阅发布的结构</li> <li>事件状态 <
<div class="markdown_views"> <h3 id="事件">事件</h3> <p>两种事件:</p> <ul> <li>文件事件 绑定客户端,同时处理多个客户端请求 </li> <li>时间事件 服务器的常规操作,周期或者单次任务</li> </ul> <h4 id="文件事件">文件事件</h4> <p>读和写两种:</p> <ul> <li>读
<div class="markdown_views"> <p>结构:</p> <pre class="prettyprint"><code class=" hljs cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> RedisDb { <span
<div class="markdown_views"> <p>Redis中的数据结构分为: 字符串,链表,哈希,集合Set和有序集合</p> <h2 id="sds">SDS</h2> <h3 id="what">what</h3> <p>Simple Dynamic String <br> 用来代替C的原生字符串</p> <h3 id="where-用在哪儿
<div class="markdown_views"> <h4 id="锁带来的问题">锁带来的问题</h4> <ul> <li>会造成线程挂起</li> <li>会造成线程调度开销</li> <li>如果一个线程死锁会造成其它都不能执行</li> </ul> <h4 id="硬件并发锁">硬件并发锁</h4> <p>现在的CPU提供了一些诸如测试并设置,比较并交换这样的
<p>引用:</p> <p><span style="font-size:10pt"><span style="font-size:10pt"><span style="font-size:10pt"><span style="font-size:10pt; color:rgb(0,102,204)"><span style="font-size:10pt; color:rgb(0,0,
<p> Spring Batch是SpringSource和Accenture联合开发的,主要解决轻量级的大数据批处理。下在附上一个架构图,方便理解。</p> <p><img src="http://img.blog.csdn.net/20150310152639439?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGhyZWVfbW
<p><span style="white-space:pre"></span>Shell虽然是脚本语言,但我们也不能忽略其优雅的编程风格,下面是一些小的书写习惯。</p> <p></p> <ul><li>将命令或命令组合设为一个见名知意的别名,在一个Shell环境中可以被多次调用,同时,利于代码的清晰度,也便于代码的阅读。 通常封装在一个库文件中,比如:demo.lib</li></
<div class="markdown_views"> <p>内部所拥有比较好的性能,但是在灵活性方面有缺陷,并且如果申请锁失败就会陷入阻塞等待的过程中。 <br> 对于一些场景,我们可以使用显示锁Lock</p> <h4 id="基本应用">基本应用</h4> <p>Lock 的lock方法相当于进入同步块, unlock方法相当于退出同步块。支持跟内部锁同样的重入
<div class="markdown_views"> <p>测试的两个方面: <br> - 安全性 并发不会造成状态错误。 <br> - 活跃度 主要是性能测试 <br> - 吞吐量 段时间定资源内可以处理的任务数量 <br> - 响应性 从请求到完成一些动作之前的延迟(等待执行的时间) <br> - 可伸缩性 增加资源,提高性能</p> <
<div class="markdown_views"> <h2 id="性能的思考">性能的思考</h2> <p>使用多线程也会引入一些性能的开销,比如线程协调,上下文切换,线程创建和消亡。 当使用过度的时候这些开销可能超过对吞吐量响应和提高计算能力带来的好处。 <br> 可伸缩性就是可以通过增加计算资源(CPU,内存)来提供程序的吞吐量或者性能。 <br> 程序的串行化代
<div class="markdown_views"> <h2 id="死锁">死锁</h2> <p>线程等待资源,形成一个环路就会造死锁。 <br> 数据库中事务也可能造成死锁,但是事务会自动选择一个杀死,保证另外的运行,线程可没有这么自动</p> <h3 id="锁顺序死锁">锁顺序死锁</h3> <p>直接上代码 <br> 这种死锁,只要保持锁的顺序就不会发生
<p>通常如下情况会取消:</p> <p>1. 用户发起取消请求</p> <p>2. 现实的活动</p> <p>3. 分解任务其中一条发现了解决方案,其他的就可以取消了</p> <p>4. 分解任务其中一条发现了对于其他任务都有影响的错误,比如磁盘空间已满,其他的可以取消了</p> <p>5. 关闭, 当执行器关闭的时候,必须对正在处理及等待处理的任务进行优雅的关闭。</p>
<p>如果想开发服务器应用,应该有大的吞吐量和快速的响应。 这样就要求服务器段有清晰的任务边界和任务执行策略。</p> <p><br></p> <p>现在看一个服务器应用:</p> <p></p> <pre code_snippet_id="599232" snippet_file_name="blog_20150206_1_5614423" name="code" class=
<h2>Synchronizer</h2> <div>控制多个线程的流程,比如线程执行到某一个点的时候是等待还是通过。 JDK中自带了信号量,关卡,闭锁</div> <div><br></div> <h2>闭锁CoutDownLatch</h2> <div>达到最终状态前是关闭的,所有线程在此阻塞, 达到最终状态后开放,并且不可以再修改,所有线程进入可运行状态。</div> <
<h2>不安全的容器</h2> <p></p> <pre code_snippet_id="592437" snippet_file_name="blog_20150129_1_7255477" name="code" class="java"> final List<Integer> l1 = new ArrayList<Integer>(); new
<h2>状态图:</h2> <p><img src="http://img.blog.csdn.net/20150121181026125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGhyZWVfbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Ce
<p>前文只是介绍了volitale关键字能够关闭重排序,缓存寄存器等优化来防止可见性发生问题。</p> <p>但是并发编程更多的是对发布(放到可以供其他线程访问的区域,比如static 集合等)的对象进行多线程处理,这里讨论下如何能够安全的发布这些对象。</p> <p>通常有如下的手段:</p> <h2>栈限制 </h2> <p> 局部变量,也就是方法内的变量,因为线程私有栈,因
<h2 style="font-family:'Microsoft YaHei UI','Microsoft YaHei',SimSun,'Segoe UI',Tahoma,Helvetica,sans-serif,'Microsoft YaHei',Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif; font-size:14px;
<p>1. 接口参数进行验证</p> <p></p> <pre name="code" class="java"> public void test(String s){ if(s == null){ throw new NullPointerException(); } }</pre> <br><p>2. 保护性拷贝</p> <p>避免因为测试外参数变更对方法造成影响
<p>枚举策略模式:</p> <p></p> <pre code_snippet_id="571367" snippet_file_name="blog_20150104_1_3412374" name="code" class="java">package com.price.effective.enum1; public enum Pay { MONDAY(PayType.WEE
<div>下面用更多的例子来说明一下各种引用的用法:</div> <h2>第一个场景:后退</h2> <div> <pre code_snippet_id="559981" snippet_file_name="blog_20141223_1_2511316" name="code" class="java">public class LastStep { Holder d = ne
<p>Java中根据引用的内存敏感度和GC之间的关系把引用分成了四个级别:强、软、弱、虚</p> <h2>强引用</h2> <div>宁可OutOfMemory也不回收。看下面的代码:</div> <div> <pre code_snippet_id="559687" snippet_file_name="blog_20141223_1_5988979" name="code" cl
<h2>先看一个单例:</h2> <p></p> <pre code_snippet_id="555854" snippet_file_name="blog_20141218_1_3706" name="code" class="java">public class Singleton{ private final static Singleton INSTANCE = new S
<p><span style="font-size:12px">对付多参的构建,特别是一些必选,一些可选的时候我们一般有如下的解决办法。</span></p> <p>比如抽象一个装机的类, cpu,内存,主板,硬盘是必选的,但是显卡,声卡,固态硬盘是可选的。</p> <p>为了对付各种各样的装机需求。我们一般有如下办法:</p> <p>1. 重载构造器</p> <p><span
<p>一般可能用到的地方:</p> <p>1. Boolean.valueOf(true)</p> <p>2. BigInteger.probablePrime(int length, Random)</p> <p>3. 单例<span style="white-space:pre"> </span>通常方法为getInstance</p> <p><span style="whit
java中的正则表达式遵循了像Python,unix中的一些工具相同的语法,使得正则表达式可以通用。<br> 正则表达式是强大而灵活的文本处理工具。他们可以让我们以变成编程的方式找到文本中符合某种模式的内容,<br> 然后我们能够对这些内容进行处理,例如:匹配、验证、选择等等。<br><br><h3>常用正则表达式模式</h3> <p>在jdk文档的Pattern类中有更加详细的模式
<h2>RPC简介</h2> <div> <img src="http://img.blog.csdn.net/20141020113519167?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGhyZWVfbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravit
<p><a target="_blank" href="http://hessian.caucho.com/doc/hessian-overview.xtp">原文链接点这里</a><br></p> <p><span style="font-family:Microsoft YaHei; font-size:12px">Hessian 是一个用于连接网络服务的二进制协议,他的com.ca
<h3>目录一</h3> <h3>目录二</h3> <div><br></div> <div>其实很简单的,把要设为目录的选中,然后选择编辑框中的这个:如下,选择一个标题样式:</div> <div> <img src="http://img.blog.csdn.net/20141016154432328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb
<p><strong><span style="font-family:Microsoft YaHei; font-size:18px; color:#33cc00">运行时栈帧</span></strong></p> <p><span style="white-space:pre"><span style="font-family:'Microsoft YaHei UI','Micro
<p><span style="font-size:24px"><span style="background-color:rgb(51,255,51)">类加载过程</span></span></p> <p><img src="http://img.blog.csdn.net/20141010160704333?watermark/2/text/aHR0cDovL2Jsb2cuY3Nk
<p><strong>命令行工具</strong></p> <p>JDK提供了很多的工具来监控JVM。</p> <p>这些工具都是支持RMI远程监控的,暂且不记录远程调试的办法</p> <p>1. JPS</p> <p></p> <div>Process Status. 列出正在执行的虚拟机进程,可以查看到具体的类和进程ID。</div> <div> <pre code_sn
<p>1. 垃圾判断算法</p> <p><span style="white-space:pre"></span>引用计数法, 给对象添加引用计数器,每有一个引用则+1, 没有则-1,为0为已死。python就是使用这种算法。 但是不能解决循环引用的问题。</p> <p><span style="white-space:pre"></span>根搜索算法。 从根开始向下
<p>1. JVM运行时内存 图</p> <p><img src="http://img.blog.csdn.net/20141002191517107?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGhyZWVfbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gra
<p><span style="white-space:pre"></span>本文主要想说明:在开发过程中,要善于利用JAVA面向对象编程的优势,与Linux/Unix Shell命令的优势,并将二者相结合。</p> <p></p> <p><strong>JAVA代码:</strong></p> <pre code_snippet_id="478035" snippet_file_
<p><strong>XSLT命名空间输出问题:</strong></p> <p><span style="white-space:pre"></span>此属性exclude-result-prefixes可以控制命名空间的输出,比如:exclude-result-prefixes="ne xn en"【注意:命名空间前缀用空格分隔】表示在输出中不出现该命名空间的前缀列表{ne, xm
<p><span style="font-weight:bold">Maven引入缺失jar包,例如:</span></p> <p><span style="white-space:pre"></span>mvn install:install-file -DgroupId=ojdbc -DartifactId=ojdbc -Dversion=14 -Dpackaging=jar -Df
<p>JIT是java虚拟机把热点字节码编译成机器码的技术。</p> <p><br></p> <p>解释执行,在当运行次数比较少的时候能够省去编译的操作直接运行字节码。 另外解释更加的节约内存。</p> <p>而编译为机器码则可以获得更高的效率。</p> <p>因为各有好处,HotSpot使用了共存的机制,可以使用-Xint强制使用解释模式或者是-Xcomp 编译模式。</p>
<p>闲来无事想大概看下Java编译器的执行过程</p> <p><br></p> <p><strong>一、 编译一个文件</strong></p> <p>首先去搞到源代码。从JDK6开始Java代码开源,放到OPENJDK组织中去,所以从这个网站进行下载:</p> <p><a target="_blank" href="http://hg.openjdk.java.net/jdk
<p><span style="font-family:Consolas,'Courier New',Courier,mono,serif; line-height:18px">XmlHandle.java:</span><br></p> <p></p> <pre code_snippet_id="473873" snippet_file_name="blog_20140923_1_8
<pre name="code" class="java">package fileLock; import java.io.File; import java.io.RandomAccessFile; import java.util.Collection; import java.util.Iterator; import java.util.concurrent.Callable;
<p><br></p> <p></p> <pre code_snippet_id="472847" snippet_file_name="blog_20140922_1_6474226" name="code" class="java">package threadPool; import java.util.concurrent.ThreadFactory; import java.
<p><br></p> <p></p> <pre name="code" class="java">package quartz.counter; /** * @ClassName: CounterJob * @Description: TODO * @author Zhou Shengshuai * @date 2014年9月19日 下午2:33:45 * */ pub
<p></p> <pre name="code" class="java">package shuai.study.excel.xssf; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException
<p><span style="font-family:KaiTi_GB2312; font-size:14px">介绍</span></p> <p><span style="font-family:KaiTi_GB2312; font-size:14px"> 今天下午用了1个小时左右,和同事Agile Pair Coding敏捷开发了一把,感觉挺爽的。</span></p> <
<p><span style="font-family:KaiTi_GB2312; font-size:14px">介绍</span></p> <p><span style="font-family:KaiTi_GB2312; font-size:14px"> 通过Schema来校验文件格式的正确与否。</span></p> <p><span style="font-family
<p><span style="font-family:KaiTi_GB2312; font-size:18px">简述</span></p> <p><span style="font-family:'Courier New'"><span style="font-size:14px">>> FTP:</span></span></p> <span style="font-