<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Zollty's Blog</title>
  <link href="https://blog.zollty.com/b/atom.xml" rel="self"/>
  <link href="https://blog.zollty.com/b"/>
  <updated>2026-01-12T23:55:52+08:00</updated>
  <id>https://blog.zollty.com/b</id>
  <author>
    <name>Zollty</name>
  </author>

  
  <entry>
    <title>留言板</title>
    <link href="https://blog.zollty.com/b/archive/message-board.html"/>
    <updated>2025-01-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/message-board</id>
    <content type="html">Welcome
嘿，你来啦！很高兴见到你。
这里的一切，都因你的阅读和参与而变得完整。无论是赞同、补充，还是灵光一现的想法，我都无比期待。
请随意，我泡好茶了。

Leave Your Mark
You’ve reached the end of the page, but not the end of the idea. A thought isn’t complete until it’s shared, challenged, or built upon.

This is your invitation to do just that. Don’t be a ghost read...</content>
  </entry>
  
  <entry>
    <title>iptables笔记</title>
    <link href="https://blog.zollty.com/b/archive/note-of-iptables.html"/>
    <updated>2023-03-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/note-of-iptables</id>
    <content type="html">
iptables笔记第一条，其他教程都不会写的，请注意：所谓 “服务器内部（本地）、外部（外网）”，并不是指请求来自于本机还是其他外部计算机。准确的说，iptables规则并没有内部、外部访问这个概念。而是指：通道的两端，source（源端）和 destination（目的端），两端都是一个IP范围。两端之间不一定要经过网络设备，换句话说，在同一个服务器上可以既是source又是destination，在服务器本地使用telnet、curl、wget，包括其他程序（Java、Python、Golang）等在本机发起的请求，请求时作为client，采用了自动生成的端口（见下文）自己属于...</content>
  </entry>
  
  <entry>
    <title>CSV数据列错位问题（在Excel中打开）</title>
    <link href="https://blog.zollty.com/b/archive/csv-data-column-misalignment-issue.html"/>
    <updated>2023-02-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/csv-data-column-misalignment-issue</id>
    <content type="html">
问题描述：从数据库中或其他软件中导出的CSV数据，在Excel或WPS中打开发现，数据错位，数据的内容和标题对应不上某些数据列中有逗号，而引号前面有空格。错误示范：&amp;#39;aaaaa&amp;#39;, &amp;#39;aaaa,1111&amp;#39;, &amp;#39;aaaa&amp;#39;正确示范：&amp;#39;aaaaa&amp;#39;,&amp;#39;aaaa,1111&amp;#39;,&amp;#39;aaaa&amp;#39;
&amp;quot;aaaaa&amp;quot;,&amp;quot;aaaa,1111&amp;quot;,&amp;quot;aaaa&amp;quot;区别在于，引号前面没有空格。这样才符合规范！！！！！坑死我了！！！！！解决方案：将  [, &amp;q...</content>
  </entry>
  
  <entry>
    <title>OKR实践经验笔记</title>
    <link href="https://blog.zollty.com/b/archive/okr-practical-experience-notes.html"/>
    <updated>2023-01-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/okr-practical-experience-notes</id>
    <content type="html">
OKR实践经验笔记真实问题及解决方案1、不是所有事情都能有清晰可衡量的指标和价值换句话说，一个事情，做没做好我们不知道，因为没有证据和可衡量的指标；能产生多少价值我们也不知道，因为很难去评估。比如你作为公司的首席架构师，需要在工作中时不时遇到事情或问题的时候，指导一下其他人，在一对一的沟通中、在评审会上、在分享会上都可以“现场教学”。这个事情，大概平均一周花费5个小时左右在指导和培养人员上面。这个事情值不值？值，在遇到事情的时候，教会别人怎么做，针对性很强，下次他们做事就会得到提高。但这事不一定是你的专职工作，而且也很难评估成效和价值（只能凭感觉）。针对这种做没做好无法得知，产生价值...</content>
  </entry>
  
  <entry>
    <title>个人歌曲分类</title>
    <link href="https://blog.zollty.com/b/archive/my-personal-song-classification.html"/>
    <updated>2023-01-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-personal-song-classification</id>
    <content type="html">
歌曲有很多种类型，或悲伤、或高兴、或平静、或亢奋，在不同的心情和状态下，听合适类型的歌曲，有助于保持良好的精神状态。下面总结了我个人的音乐文件夹（常用播放列表）的歌曲/音乐分类。一、安静的4个级别：1、背景音——安静入睡（Soothing）（平平静静、无任何勾人的点，变化`极慢，全程声音起伏低于15%，几乎无波动）代表作：通常为轻音乐，例如 “音乐治疗 - Ocean Blue”、“Andrew Fitzgerald - In the Distance”2、背景音——安静工作（Light）（无含义表达、无情绪或只有一种懒洋洋的情绪，变化较慢，最高声音起伏低于25%，很少有波动）代表作...</content>
  </entry>
  
  <entry>
    <title>软件报价、设计及成本的关系，策略指导</title>
    <link href="https://blog.zollty.com/b/archive/software-quotation-strategy-guidance.html"/>
    <updated>2022-12-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/software-quotation-strategy-guidance</id>
    <content type="html">
《软件报价、设计及成本的关系，策略指导》一、背景和目的根据不同情况，报价目的有以下几种：竞争、竞标试探价格作为合同依据报价之前，要搞清楚情况。注意：如果报价是一次性，后期不能够修改直接写入招标文件，那就是最终报价。否则可以作为竞争或试探的中间产物，不是最终合同的清单。前提：1、通过专家团队（市场战略+研发战略+研发专家）共同评估，觉得匹配市场和产品战略，研发成本估计可接受。2、根据“初设”（主要有4种情况，见下文）进行报价。这里的初设是广义的概念，主要有4种情况：1、客户之前已经找其他单位做过初设（有“初设文档”，但非公开文件，部分情况下可以通过商务渠道拿到初设文件）。2、客户自己整...</content>
  </entry>
  
  <entry>
    <title>Linux更换磁盘调整分区</title>
    <link href="https://blog.zollty.com/b/archive/linux-disk-replacement-and-partition-adjustment.html"/>
    <updated>2022-10-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/linux-disk-replacement-and-partition-adjustment</id>
    <content type="html">
背景：原有磁盘过小，挂载到/和/home，新增磁盘200G希望替换掉/home挂载基本信息：[root@tuxingzu data]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 3.9G     0  3.9G    0% /dev
tmpfs                    3.9G     0  3.9G    0% /dev/shm
tmpfs                    3.9G  8.9M  3.9G    1% /run
tmpfs        ...</content>
  </entry>
  
  <entry>
    <title>Springboot的默认配置文件加载路径及优先级</title>
    <link href="https://blog.zollty.com/b/archive/default-configuration-file-loading-path-and-priority-for-springboot.html"/>
    <updated>2022-09-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/default-configuration-file-loading-path-and-priority-for-springboot</id>
    <content type="html">
Springboot的默认配置文件加载路径有5种，优先级高于外部扩展配置（Externalized Configuration）。也就是说：springboot配置文件的优先级为：T0：springboot默认的5种配置文件加载路径。T1：18种外部扩展配置。其中，18种外部扩展配置顺序参见上面那个官方链接。默认的5种配置文件加载路径如下：首先一个文件名称通用原则：在相同文件夹下如果有application.properties和application.yml两个文件，那么application.properties文件会覆盖application.yml文件，生效的是applica...</content>
  </entry>
  
  <entry>
    <title>程序员魔法大全</title>
    <link href="https://blog.zollty.com/b/archive/programmer-magic-encyclopedia.html"/>
    <updated>2022-08-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/programmer-magic-encyclopedia</id>
    <content type="html">
程序员魔法大全【一键去除网页上所有图片】F12打开调试模式，在console中输入下列代码：var allimg = document.getElementsByTagName(&amp;#39;img&amp;#39;);
for (var i = 0; i &amp;lt; allimg.length; i++) {allimg[i].setAttribute(&amp;#39;src&amp;#39;, &amp;#39;&amp;#39;)}

</content>
  </entry>
  
  <entry>
    <title>Java8至Java18新特性汇总</title>
    <link href="https://blog.zollty.com/b/archive/summary-of-new-features-of-java-8-to-18.html"/>
    <updated>2022-08-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/summary-of-new-features-of-java-8-to-18</id>
    <content type="html">
Java8至Java18新特性汇总整理目录如下：Java 7 (LTS) 新特性:2011-07-28&amp;nbsp;小幅改进Java 8 (LTS) 新特性:2014-03-18&amp;nbsp;大幅更新Java 9 新特性:&amp;nbsp;2017-9-22Java 10 新特性：2018-3-21Java 11 (LTS) 新特性：2018-09-25Java 12 新特性：2019-3-19Java 13 新特性：2019-9-17Java 14 新特性：2020-3-17Java 15 新特性：2020-9-15Java 16 新特性：2021-3-16Java 17(LTS) 新特性：...</content>
  </entry>
  
  <entry>
    <title>SVN安装和使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/svn-installation-and-usage-notes.html"/>
    <updated>2022-06-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/svn-installation-and-usage-notes</id>
    <content type="html">
SVN Linux下安装1、自定义端口：svnserve -d -r /data/svndata&amp;nbsp; --listen-port=39112、遇到问题：SVN协议，例如：svn co svn://192.168.43.42:3911/test ./test3Nginx不支持代理SVN协议。需要安装Apache做代理……（因为内网要通过Nginx/Apache代理后才能在外网使用）参见：&amp;nbsp; 利用Nginx+Subversion搭建SVN http协议服务器：&amp;nbsp;&amp;nbsp;https://www.jianshu.com/p/608bae02b174 &amp;nbsp...</content>
  </entry>
  
  <entry>
    <title>阿里云、华为云keepalived和vip虚IP配置安装部署</title>
    <link href="https://blog.zollty.com/b/archive/keepalived-and-virtual-ip-configuration.html"/>
    <updated>2022-05-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/keepalived-and-virtual-ip-configuration</id>
    <content type="html">
架构为： 双服务器，双VIP，关系如下：外网IP&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VIP-虚IP&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 内网服务器IP
219.153.117.65    192.168.43.240    192.168.43.49-slave节点/192.168.43.132-master节点&amp;nbsp;
219.153.117.103    192.168.43.241    192.168.43.49-master节点/192.168.43.132-slave节点图...</content>
  </entry>
  
  <entry>
    <title>如何看待Kotlin和Lombok</title>
    <link href="https://blog.zollty.com/b/archive/what-do-i-think-of-kotlin-and-lombok.html"/>
    <updated>2021-11-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/what-do-i-think-of-kotlin-and-lombok</id>
    <content type="html">
借用李宗盛的一句歌词：女：为何你不懂男：别说我不懂女：只要有爱就有痛男：有爱就有痛女：有一天你会知道，人生没有我并不会不同男：没有你会不同我个人的背景和基本立场：1、十余年的程序员，极客，用过二十多门编程语言，终身学习者。2、轮子大王，喜欢微创新，众多开源项目作者和参与者。3、项目开发经理、技术经理、公司级架构师，主抓工程效率、质量和可维护性。Lombok和Kotlin实际上都是“语法糖”，既然是糖，当然有甜头，语法层面（本文只做简单点评），我认为大部分语法改进是好的，但是像Kotlin移除了原生static变量和方法，改用伴生对象（companion object），这种做法有些激...</content>
  </entry>
  
  <entry>
    <title>基于统计学的异常检测算法</title>
    <link href="https://blog.zollty.com/b/archive/anomaly-detection-algorithm-based-on-statistics.html"/>
    <updated>2021-09-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/anomaly-detection-algorithm-based-on-statistics</id>
    <content type="html">
应用背景在数据测试中，通常测试多次，然后取平均值作为最终的参考值。例如测试程序每次运行的时间数据，得到下面几组：67.9109, 135.1102, 134.9953, 85.9153, 73.8646, 69.5817, 123.0897, 93.6666, 113.9593, 86.8969111.9058, 126.425, 87.7191, 95.9987, 125.3884, 117.6314, 111.8465, 96.1856, 62.4525, 102.2092107.4349, 91.2075, 105.0072, 98.953, 97.4755, 121.862,...</content>
  </entry>
  
  <entry>
    <title>InfluxDB入门教程</title>
    <link href="https://blog.zollty.com/b/archive/getting-start-of-incluxdb.html"/>
    <updated>2021-09-07T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/getting-start-of-incluxdb</id>
    <content type="html">
一、基础概念1、存储桶（bucket）bucket是存储时序数据的一个命名空间，相当于数据表。每个bucket都必须设置数据保存的时长。存储桶属于某个组织。翻译自：https://docs.influxdata.com/influxdb/v2.0/organizations/buckets/2、组织（Organization）每个组织创建时都必须关联一个存储桶（bucket），所以每个组织都至少有一个bucket，单个InfluxDB OSS，建议存储桶不超过20，因此组织也不超过20个。单个InfluxDB OSS，支持20个buckets以内的持续写入或者跨bucket或组织的持...</content>
  </entry>
  
  <entry>
    <title>Java转Golang编程笔记</title>
    <link href="https://blog.zollty.com/b/archive/programming-note-of-golang-vs-java.html"/>
    <updated>2021-08-01T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/programming-note-of-golang-vs-java</id>
    <content type="html">
前言：&amp;nbsp; &amp;nbsp; 总的来说，Golang具备高级语言的很多特性，虽然语法层面和Java有些不同，但是编程逻辑是一致的。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;简单来说，Golang也具备类型转换、字符串操作、数组、Map、文件及IO、反射、接口、包、线程同步、阻塞队列等常用功能。不同点在于：1）Go保留了指针，而且结构体还是值类型而非引用类型，传参时要注意；Java虽然没有指针，但是引用类型就相当于指针，这样做对编程来说非常友好，而且也很安全，但代价是需要复杂的JVM来支持。还有一款追求极致性能和安全性的语言：Rust，它不需要复杂的VM，但是它需要复杂的语法...</content>
  </entry>
  
  <entry>
    <title>关于spring boot配置优先级的特殊之处</title>
    <link href="https://blog.zollty.com/b/archive/strange-thing-about-spring-boot-configuration-priority.html"/>
    <updated>2021-06-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/strange-thing-about-spring-boot-configuration-priority</id>
    <content type="html">
前言SpringBoot官方文档指明了这多种配置方式的优先级，按照从高到低排序分为……（见后文）。但经过我的测试，发现了一些不一致的情况。&amp;nbsp;有兴趣的朋友，可以根据我的这篇文章，给Spring社区提交Bug！！！正文今天遇到两个奇怪问题，经过不停测试，终于弄清楚了：1、现象是 spring boot的 logging.config&amp;nbsp;配置非常特殊假设有三个配置文件：application-log.yml：&amp;nbsp;&amp;nbsp; &amp;nbsp; logging.config: classpath:logback11.xmlapplication-dev.yml：&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>自动化测试的思考及其工具的设计</title>
    <link href="https://blog.zollty.com/b/archive/thinking-and-design-of-automatic-test.html"/>
    <updated>2020-11-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/thinking-and-design-of-automatic-test</id>
    <content type="html">一方面是接口单元测试。所有Rest/Dubbo等API都要做单元测试，输入、输出，标准化。输入示例：{
&amp;nbsp; &amp;quot;m&amp;quot;: &amp;quot;put&amp;quot;,
&amp;nbsp; &amp;quot;t&amp;quot;: 1,
&amp;nbsp; &amp;quot;u&amp;quot;: &amp;quot;http://localhost:6680/test/nodepd/a003&amp;quot;,
&amp;nbsp; &amp;quot;b&amp;quot;: &amp;quot;{\&amp;quot;a\&amp;quot;:12,\&amp;quot;b\&amp;quot;:2}&amp;quot;
},
{
&amp;nbsp; &amp;quot;m&amp;quot;: ...</content>
  </entry>
  
  <entry>
    <title>Spring及Servlet 3.0的Filter和DispatcherType</title>
    <link href="https://blog.zollty.com/b/archive/the-filter-and-dispatcher-type-of-spring-or-servlet-3.html"/>
    <updated>2020-11-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-filter-and-dispatcher-type-of-spring-or-servlet-3</id>
    <content type="html">
Servlet的执行，有五种触发方式：DispatcherType&amp;nbsp; = [ ASYNC、ERROR、FORWARD、INCLUDE、REQUEST ]简单说明：&amp;nbsp;1、forward是 应用程序内 Servlet1将请求转发给 另一个 Servlet2继续处理客户请求；&amp;nbsp;2、include和forward差不多，区别在于：include方法使原先的Servlet和转发到的Servlet都可以输出响应信息，即原先的Servlet还可以继续输出响应信息。&amp;nbsp;&amp;nbsp;forward方法调用后在响应中的没有提交的内容被自动消除。将请求转发给其他的Se...</content>
  </entry>
  
  <entry>
    <title>Spring Web请求处理流程及Filter源码分析</title>
    <link href="https://blog.zollty.com/b/archive/source-code-analysis-of-spring-web-request-processing-flow-and-filters.html"/>
    <updated>2020-10-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/source-code-analysis-of-spring-web-request-processing-flow-and-filters</id>
    <content type="html">
一次Web HTTP请求后端执行的完整流程，原始数据 如下（Spring v5.2.6）：at io.fbank.hilo.app.component.ControllerRequestLogInterceptor.preHandle(ControllerRequestLogInterceptor.java:52)
at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:141)
at org.springframework.web.ser...</content>
  </entry>
  
  <entry>
    <title>正确采取Xss攻击防御措施</title>
    <link href="https://blog.zollty.com/b/archive/the-right-way-of-xss-attack-defense.html"/>
    <updated>2020-10-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-right-way-of-xss-attack-defense</id>
    <content type="html">
灵魂拷问：到底怎么做防XSS攻击才是最佳方案？网上那些拦截器方案靠谱吗？Xss攻击说明：1、攻击者准备 恶意html/javascript代码片段，该代码最终会被嵌入到被攻击服务器加载的页面上。2、恶意html/js代码，在用户不知情的情况下被执行，以该登录用户的身份执行敏感操作或获取敏感数据后发送给攻击者。举例如下：&amp;nbsp; &amp;nbsp; 有个文章编辑页面，可以编写任意html/js代码。攻击者在里面嵌入了恶意js。&amp;nbsp; &amp;nbsp; 文章被提交保存后，下次显示出来时，执行该恶意js，从而获取到敏感数据或执行恶意操作。更加全面的例子和说明，参见：https://www....</content>
  </entry>
  
  <entry>
    <title>架构师必须懂的设计原则</title>
    <link href="https://blog.zollty.com/b/archive/design-principles-that-architects-must-know.html"/>
    <updated>2020-09-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/design-principles-that-architects-must-know</id>
    <content type="html">
KISS设计原则：（Keep It Simple,Stupid）首选简单的代码和体系结构。避免复杂的抽象。避免使用魔术代码和奇特的算法。避免大的外部依赖性。减少分布式系统中活动部件的数量。避免自动决策，这可能会损害群集的可用性，一致性或性能。附：另外，还有 KISS编码原则，参见：https://www.cnblogs.com/yutiansanshou/archive/2012/12/05/2802653.htmlYAGNI原则 （You Ain’t Gonna Need It）——适可而止、避免过度设计在一个软件项目中，往往80%的时间花费在20%的功能上。当你准备列出一个项目清...</content>
  </entry>
  
  <entry>
    <title>Maven Profile无法根据项目配置“自动激活”及复杂项目配置管理的探讨</title>
    <link href="https://blog.zollty.com/b/archive/maven-profile-cannot-be-activated-based-on-project-configuration.html"/>
    <updated>2020-09-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-profile-cannot-be-activated-based-on-project-configuration</id>
    <content type="html">
想让某个profile“根据项目的配置自动激活”，无奈试过各种方法、策略，都不行。下面是一个profile的标准配置：&amp;lt;profiles&amp;gt;
&amp;lt;profile&amp;gt;
  &amp;lt;id&amp;gt;exe-jar&amp;lt;/id&amp;gt;
  &amp;lt;activation&amp;gt;
    &amp;lt;property&amp;gt;
      &amp;lt;name&amp;gt;JAR-BOOT&amp;lt;/name&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;file&amp;gt;
      &amp;lt;exists&amp;gt;${basedir}/src/main/res...</content>
  </entry>
  
  <entry>
    <title>中间件的定义</title>
    <link href="https://blog.zollty.com/b/archive/the-definition-of-middleware.html"/>
    <updated>2020-08-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-definition-of-middleware</id>
    <content type="html">
前言近日，与多人交流中，我发现了一个问题，很多人根本就不懂什么是中间件，哪些是中间件、哪些不是，他们区分不了。所以，我查阅了很多外文资料，包括Oracle、IBM等大公司关于中间件的一些描述，做了一个总结和对照。中间件的定义是什么？目前很难给中间件一个严格的定义，国际上各家机构都有不同的定义。我根据很多的定义和普遍的理解，综合了一下:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中间件，通常指“应用中间件”，是一种独立的系统软件或服务程序，能“独立部署和运行”，且处于“应用程序”和“基础设施或运行环境”之间，不直接处理业务逻辑，而是为上层“使用广泛的应用程序”提供“运行时服务”。补...</content>
  </entry>
  
  <entry>
    <title>FastDFS网络连接问题分析</title>
    <link href="https://blog.zollty.com/b/archive/analysis-of-fastdfs-network-connection-problems.html"/>
    <updated>2020-08-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/analysis-of-fastdfs-network-connection-problems</id>
    <content type="html">这是个一般性问题，参见这篇文章的描述：《中间件客户端配置中的域名与IP》先讲解一下FastDFS文件上传的执行流程：获取trackerServer连接；向trackerServer发送请求，获取一个可用的storageServer的IP；（请求指令为104，参见TrackerClient.getStoreStorage方法）注意，每次上传请求，都要重新获取storageServer（以便达到负载均衡等目的）。另外，每次上传请求，可以重新获取trackerServer，也可以指定固定的trackerServer。获取storageServer的逻辑，是由trackerServer服务器后端...</content>
  </entry>
  
  <entry>
    <title>中间件客户端配置中的域名与IP</title>
    <link href="https://blog.zollty.com/b/archive/domain-and-IP-in-middleware-client-configuration.html"/>
    <updated>2020-08-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/domain-and-IP-in-middleware-client-configuration</id>
    <content type="html">问题说明及其背景某些中间件的客户端配置中，会有集群的地址列表（数组），典型的如zookeeper的地址列表：192.168.0.1:2181,192.168.0.2:2181聪明的运维同学，喜欢把它弄成域名，第一种是一个域名解析为多个IP（起到负载均衡作用）：zk.if.zollty.com:2181第二种是一个域名解析为一个IP（可以方便修改IP），例如：zk01.if.zollty.com:2181,zk02.if.zollty.com:2181这三种方式，到底哪种好？为什么？有没有更好的方式？直接说结论：&amp;nbsp; &amp;nbsp; 上面三种方式中，单个域名的方案最差，通常起不到负载...</content>
  </entry>
  
  <entry>
    <title>Tomcat启动卡住、无法访问问题解决思路</title>
    <link href="https://blog.zollty.com/b/archive/solve-the-tomcat-stuck-and-unable-to-access-problem.html"/>
    <updated>2020-08-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/solve-the-tomcat-stuck-and-unable-to-access-problem</id>
    <content type="html">现象如下：1、项目启动日志正常，Spring或者MVC框架也正常加载完成。但是对外无法访问，何解？2、Tomcat无法正常关闭，因为shutdown port不可用。只能kill。3、Jstack内容太多，很难查出问题，但基本上可以确认项目所有bean、线程都是正常的。4、注意到一个细节，Tomcat正常启动和奇怪异常之间，日志最后有一点差别：正常启动后，tomcat最后会打印如下Aug 10, 2020 1:47:03 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [&amp;quot;h...</content>
  </entry>
  
  <entry>
    <title>通用API数据结构及错误码设计规范</title>
    <link href="https://blog.zollty.com/b/archive/api-data-structure-and-error-code-design-spec.html"/>
    <updated>2020-08-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/api-data-structure-and-error-code-design-spec</id>
    <content type="html">
一、前言1、设计“标准错误信息结构”的背景和意义&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;考虑到如下几个方面：1）便于使用方（大众用户）知道错误的原因2）便于使用方（程序 或 程序员）知道错误的原因3）便于知道错误的原因，以及可能的排查和恢复措施4）知道错误的类型，便于对其进行监控（分类和统计）或者 触发特定动作&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设计策略：首先考虑2）3）4）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;针对于 面向 程序处理 或者 程序员使用的数据，跟 面向于 普通大众用户的数据，其错误码（co...</content>
  </entry>
  
  <entry>
    <title>The valid characters are defined in RFC 7230 and RFC 3986</title>
    <link href="https://blog.zollty.com/b/archive/tomcat-exception-of-characters-RFC-7230-and-RFC-3986.html"/>
    <updated>2020-08-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/tomcat-exception-of-characters-RFC-7230-and-RFC-3986</id>
    <content type="html">针对Tomcat Server报错： “The valid characters are defined in RFC 7230 and RFC 3986”解决方案大全：1、针对于SpringBoot jar启动的项目：直接在yml中配置：server.tomcat.relaxedQueryChars=&amp;lt;,&amp;gt;, [,\,],^,`,{,|,}2、针对tomcat war包部署的任何项目：修改server.xml文件，如下：&amp;lt;Connector port=&amp;quot;8084&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot; 
    relaxe...</content>
  </entry>
  
  <entry>
    <title>Dubbo泛化调用时参数为泛型对象</title>
    <link href="https://blog.zollty.com/b/archive/handle-generic-parameters-when-dubbo-generalization-calls.html"/>
    <updated>2020-07-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/handle-generic-parameters-when-dubbo-generalization-calls</id>
    <content type="html">官方文档（链接）上没有任何说明，只能自己看源代码摸索了。具体方法如下：举例说明，例如：public void add(Pager&amp;lt;User[]&amp;gt; users)

// 其中
class Pager {
&amp;nbsp; &amp;nbsp; int size;
&amp;nbsp; &amp;nbsp; User[] data;
}

class User {
&amp;nbsp; &amp;nbsp; String name;
}传参时这么写：//泛型调用
genericService.$invoke(&amp;quot;add&amp;quot;, new String[] {&amp;quot;com.compan...</content>
  </entry>
  
  <entry>
    <title>跨域请求Access-Control问题及相关理论大全</title>
    <link href="https://blog.zollty.com/b/archive/cross-domain-access-control-and-related-theories.html"/>
    <updated>2020-07-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cross-domain-access-control-and-related-theories</id>
    <content type="html">
本文涉及三个核心知识：CORS 及 HTTP的&amp;nbsp;Access-Control浏览器的&amp;nbsp;preflight requestHTTP的OPTIONS方法的作用及一个故事（我为什么三个小时没查出CORS失败）先别急，必须来弄懂上面的三个知识。第一个，CORS 及 HTTP的 Access-Control，推荐看下面这两篇文章：CORS：https://developer.mozilla.org/en-US/docs/Web/HTTP/CORSAccess_control_CORS：https://developer.mozilla.org/zh-CN/docs/Web/...</content>
  </entry>
  
  <entry>
    <title>解决AJAX在用户登录失效后返回登录页面的问题</title>
    <link href="https://blog.zollty.com/b/archive/correct-redirection-when-backend-redirect-to-the-login-page-after-session-expire.html"/>
    <updated>2020-07-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/correct-redirection-when-backend-redirect-to-the-login-page-after-session-expire</id>
    <content type="html">&amp;nbsp; &amp;nbsp; 对于全站AJAX的应用，当然不存在redirect重定向到登录页面的做法（建议直接返回HTTP Code 401），但是对于某些前后端没有分离的应用，当用户session失效时，后端可能会重定向到登录页面。那对于ajax请求，后端重定向后，返回的ajax内容是一个html页面，怎么办呢？&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;总体的思路是在ajax工具的拦截器中做一些特殊的判断。1、jquery ajax的具体解决办法（示例）如下：//全局配置
$.ajaxSetup({
    dataType: &amp;quot;json&amp;quot;,
    c...</content>
  </entry>
  
  <entry>
    <title>npm全局安装 require报错Cannot find module</title>
    <link href="https://blog.zollty.com/b/archive/r091540861581146.html"/>
    <updated>2020-07-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/r091540861581146</id>
    <content type="html">
原因：没有设置系统环境变量NODE_PATH，项目内读取不到全局包。解决方案：输入以下命令，查看全局包路径，npm root -gC:\Users\zollty-pc\AppData\Roaming\npm\node_modules然后添加一个环境变量NODE_PATH=上述路径。添加后，重启一下console、IDE、系统（依次尝试），我重启到IDE层次就可以，实在不行重启下操作系统。

</content>
  </entry>
  
  <entry>
    <title>数据库IP网络切换问题</title>
    <link href="https://blog.zollty.com/b/archive/database-ip-network-switching-problem.html"/>
    <updated>2020-07-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/database-ip-network-switching-problem</id>
    <content type="html">
方案1：使用域名，解析到IP1，当IP1不可用时切换域名解析到IP2缺点：域名解析有缓存，需要及时更新，数据库连接池（包括Redis连接池）需要及时检测连接的有效性。随便说一案例，前不久我们遇到一个Redis客户端Lettuce的一个问题：Redis物理机挂了一个，但是集群节点没有及时同步（Lettuce默认没有启用拓扑刷新），参见：https://blog.csdn.net/qq_45401061/article/details/104263967。方案2：使用VIP（虚IP），解析到IP1，当IP1不可用时切换VIP解析到IP2相比1优点：无域名解析缓存。缺点：VIP绑定的IP1...</content>
  </entry>
  
  <entry>
    <title>鼠标键盘的选择</title>
    <link href="https://blog.zollty.com/b/archive/selection-of-mouse-and-keyboard.html"/>
    <updated>2020-06-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/selection-of-mouse-and-keyboard</id>
    <content type="html">网上那些关于机械键盘，红轴茶轴黑轴的描述，看了还是有点不懂，比如“段落感”就很难理解。所以，我从小白的角度，把当前的亲手感受，用简单易懂的方式描述出来。现在正在打字的是50块钱的双飞燕薄膜键盘。比较“肉”，回弹较慢，按压时有明显的“按下去”的阻力。手感角度就是这样，但是有一点需要吐槽的是，键与键之间隔得有点近，键程较短，容易勿按。现在打字的是500块钱的海盗船机械键盘（红轴）。比较清脆（有一点点按键声音，但是不算大，不算吵，如果是自己打字速度快的话，反而有打字的成就感），回弹很快，按下去也很快，几乎感觉不到“按下去”的过程。所以手感个人觉得，比薄膜键盘稍微好一点。没有上述双飞燕键盘那样容...</content>
  </entry>
  
  <entry>
    <title>Docker容器化CI/CD Pipeline，加快项目编译构建速度的方法</title>
    <link href="https://blog.zollty.com/b/archive/methods-to-speed-up-project-construction-of-container-pipeline.html"/>
    <updated>2020-05-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/methods-to-speed-up-project-construction-of-container-pipeline</id>
    <content type="html">
名词解释：所谓“容器化Pipeline”，是指 CI/CD流水线 运行在Kubernetes容器云平台上，而非运行在虚拟机或物理机上。加快项目构建在容器化流水线中的构建速度，本质是利用好缓存（或本地仓库），不要让每次编译构建都去拉包。方法一：外挂共享存储卷&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;针对 类似于 Maven（Java）构建的项目（所有项目共享本地仓库），这种方法比较简单有效。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;以Maven为例，在mvn构建容器中，直接从host或者远程块设备上mount一个目录进去作为Maven的repository目录（默认路径为~...</content>
  </entry>
  
  <entry>
    <title>项目部署方式的改进和深度思考</title>
    <link href="https://blog.zollty.com/b/archive/improvement-and-deep-thinking-of-project-deployment-mode.html"/>
    <updated>2020-04-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/improvement-and-deep-thinking-of-project-deployment-mode</id>
    <content type="html">
首先，以Java项目为例，部署方式有很多，我总结如下：Tomcat等：所有文件放在war包中部署WAS/Weblogic：通常外挂lib，每次只更新项目自身代码（ear包或war包）JBOSS/EAP：不同于其他Web Container，JBOSS自创了VFSExecutable Fat Jar（自带Web Container）：&amp;nbsp; &amp;nbsp; 所谓Fat Jar就是所有打包在一个jar中，涉及 jar:jar:file:/path&amp;nbsp;问题，&amp;nbsp;需要hack，一些特殊项目可能无法这样做（spring-boot-maven-plugin是一个常用主流强大的...</content>
  </entry>
  
  <entry>
    <title>解决Windows剪切/删除/移动文件夹时，文件太多/路径太深/文件名超长，速度慢/卡死等问题</title>
    <link href="https://blog.zollty.com/b/archive/solve-the-problems-of-slow-speed-and-stuck-when-windows-cuts,-deletes-and-moves-massive-files.html"/>
    <updated>2020-04-01T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/solve-the-problems-of-slow-speed-and-stuck-when-windows-cuts,-deletes-and-moves-massive-files</id>
    <content type="html">
问题现状：高端配置台式电脑，开机，然后立即剪切一个有8万文件的目录到另一个盘，执行到2%的时候就卡住了，等了10分钟没任何进度。用另一个文件夹同步工具，将剩下的98%同步过去，仅仅花费了2分钟左右，而且有操作历史，可以看到复制后两边文件完全一致（包括文件的时间截）。用windows自带的SHIFT+DEL彻底删除功能，删了30秒钟，总进度不到2%，果断取消。换成了CMD命令直接去删（rd 文件夹 /s /q），8万个文件，10秒不到就删完了。文件路径太长 无法删除：rd删除提示找不到文件路径！xcopy复制文件夹，提示：内存不足！有软链接、硬链接，特别是npm安装包的node_mod...</content>
  </entry>
  
  <entry>
    <title>真正弄懂存储虚拟化、软件定义存储</title>
    <link href="https://blog.zollty.com/b/archive/understand-storage-virtualization-and-software-defined-storage.html"/>
    <updated>2020-03-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/understand-storage-virtualization-and-software-defined-storage</id>
    <content type="html">
一、什么是存储虚拟化？&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;计算机数据存储在磁盘和固态介质上，以便在几天，几个月或几年内保持可用性。在小型系统（例如个人计算机）中，有一个CPU和一个或两个硬盘。当磁盘发生故障或空间不足时，必须手动添加另一个磁盘，并且必须将数据放置在该磁盘上。在大型系统中，可能有数百个磁盘和数字存储系统，并且管理信息的复杂性大大增加。存储虚拟化是存储设备的分组，因此无缝地看起来像是一个大型存储设备。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在简单的系统中，只要程序需要访问文件，它都会向操作系统发出请求。操作系统将此映射到磁盘上的特定位置。如果磁盘的容量...</content>
  </entry>
  
  <entry>
    <title>Kafka与zk的关系及连接参数bootstrap.server的正确理解</title>
    <link href="https://blog.zollty.com/b/archive/kafka-zookeeper-and-the-bootstrap-servers-parameter.html"/>
    <updated>2020-03-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/kafka-zookeeper-and-the-bootstrap-servers-parameter</id>
    <content type="html">1、我们知道旧版Kafka，用的是zookeeper地址而非bootstrap.servers，那么新版 kafka 消费者、生产者配置为何使用 bootstrap-servers 而不是 zookeeper 服务器地址？解答：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Kafka修改这个配置的提案叫做“KIP-500: Replace ZooKeeper with a Self-Managed Metadata Quorum”，该提案一出，大部分人都赞同组件越少越好，并认为这会让部署变得更加容易；当然也有网友担心，移除 ZooKeeper 后，Kafka 会像 ElasticSea...</content>
  </entry>
  
  <entry>
    <title>对象存储、文件存储、块存储的区别和联系</title>
    <link href="https://blog.zollty.com/b/archive/relations-among-object-file-and-block-storage.html"/>
    <updated>2020-03-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/relations-among-object-file-and-block-storage</id>
    <content type="html">
1、块存储- 典型设备： 磁盘阵列，硬盘- 主要是将裸磁盘空间映射给主机使用的。- 使用场景：- docker容器、虚拟机远程挂载磁盘存储分配。- 日志存储。- 文件存储。- ...2、文件存储- 典型设备： FTP、NFS服务器为了克服块存储文件无法共享的问题，所以有了文件存储。在服务器上架 设FTP与NFS服务，就是文件存储。- 使用场景：- 日志存储。- 多个用户有目录结构的文件存储共享。- ...文件存储通常需要一个app 的服务器将文件存储挂载到本地。3、对象存储- 典型设备： 内置大容量硬盘的分布式服务器(swift, s3)，多台服务器内置大容量硬盘，安装上对象存储管理...</content>
  </entry>
  
  <entry>
    <title>文件系统、POSIX标准及VFS</title>
    <link href="https://blog.zollty.com/b/archive/file-system-and-posix-std-and-vfs.html"/>
    <updated>2020-03-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/file-system-and-posix-std-and-vfs</id>
    <content type="html">
一、POSIX标准 以及 POSIX文件接口&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;POSIX（Portable Operating System Interface of UNIX）表示可移植操作系统接口，是IEEE为要在各种UNIX操作系统上运行软件，而定义API接口的一系列互相关联的标准的总称。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;POSIX标准意在期望获得源代码级别的软件可移植性。换句话说，为一个POSIX兼容的操作系统编写的程序，应该可以在任何其它的POSIX操作系统（即使是来自另一个厂商）上编译执行。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Lin...</content>
  </entry>
  
  <entry>
    <title>高速路上换轮胎系列——动态迁移Zookeeper</title>
    <link href="https://blog.zollty.com/b/archive/dynamic-migration-zookeeper.html"/>
    <updated>2020-03-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/dynamic-migration-zookeeper</id>
    <content type="html">
前面讲了 动态迁移Kafka节点，本篇文章讲Zookeeper的无感知迁移。&amp;nbsp;实际问题：生产上有5个节点的ZK服务器，要换新服务器且IP地址要改变，怎么办？&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;大概的方案为：先给zk扩容，扩到11个节点（原来的5个+新增5个+1个临时节点）。然后再干掉原来的5个及临时的1个，剩下5个新加的节点。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;扩节点，两个两个加：（如下步骤，如无特殊说明，每次启停节点后，都要等待2~10分钟直到集群状态稳定）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;第一步，+2等于7个节点，新增的节点，con...</content>
  </entry>
  
  <entry>
    <title>存储基础(SATA、SCSI、RAID、SAN、SAS、FC)</title>
    <link href="https://blog.zollty.com/b/archive/storage-basics-about-sata-scsi-raid-san-sas-fc.html"/>
    <updated>2020-02-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/storage-basics-about-sata-scsi-raid-san-sas-fc</id>
    <content type="html">
本文涉及如下知识：SAN（存储区域网络）
SCSI：小型计算机系统级接口的独立处理器标准
iSCSI：Internet（i）小型计算机系统接口，又称为IP-SAN，是一种基于因特网及SCSI-3协议下的存储技术
SATA：基于行业标准的串行硬件驱动器接口
RAID：磁盘阵列
FC（Fibre Channel）：FC协议、FC网络、FC互联
Fiber Channel：光纤通道
InfiniBand（IB）：无限带宽大部分内容转载自：http://www.51testing.com/html/92/450992-831484.htm参考文章：《SCSI/iSCSI及SAS...</content>
  </entry>
  
  <entry>
    <title>Android图片缓存优化和压缩技术说明</title>
    <link href="https://blog.zollty.com/b/archive/android-picture-cache-optimization-and-compression-technology.html"/>
    <updated>2020-01-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/android-picture-cache-optimization-and-compression-technology</id>
    <content type="html">1、为什么要缓存图片？这个机制并非是处理内存占据大小的，而是优化用户体验，节省流量的（去网络获取，这种耗时长且损耗流量）。PS: 由于我们的图片都是直接读取本地文件，所以，缓存图片意义不是很大。但官方既然这样设计了，估计还是有利于性能提升的。2、为什么要压缩图片？Android根据设备屏幕尺寸和dpi的不同，给系统分配的单应用程序内存大小也不同，具体如下表：屏幕尺寸	DPI	应用内存small/normal/large	ldpi/mdpi	16MB
small/normal/large	tvdpi/hdpi	32MB
small/normal/large	xhdpi	64MB
sm...</content>
  </entry>
  
  <entry>
    <title>容器云平台实践总结</title>
    <link href="https://blog.zollty.com/b/archive/practice-summary-of-container-cloud-platform.html"/>
    <updated>2019-12-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/practice-summary-of-container-cloud-platform</id>
    <content type="html">
一、挂载卷需求和应对方案下面列出了遇到的一些需求：/opt/data 目录，需求10KB～2MB，可读写，存放特殊文件（本地配置备份，供配置服务容灾），几乎所有Java项目都需要。simsong.ttf 字体文件，二进制，18MB，只读，应用程序需要用到。xyz-linux-x64.so库文件，二进制，20KB，只读，跟证书类似，由专人配置，不得泄露，很多项目要用到。qkban.cert 证书文件，纯文本，3KB，只读，由专人配置，不得泄露。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对于上面的第（2）项，我觉得可以放在GIT库，文件跟代码走。运行前，可以用脚本将文件拷贝到某个路...</content>
  </entry>
  
  <entry>
    <title>浅论各种编程语言</title>
    <link href="https://blog.zollty.com/b/archive/on-programming-languages.html"/>
    <updated>2019-12-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/on-programming-languages</id>
    <content type="html">
本人使用过的编程语言，细数包括5个大类，总计超过28种（参见我的技能栈），有些代码写得多，有些写得少，写得最多的是：Java、JS、HTML、CSS、Golang、……，其次是C++、C、PHP、C#、Lua、SQL……，写得少的是Python、VB、Jade、MatLab、……。下面说一点心得体会（原创、纯手打），供学习、比较、参考。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先，看基础语法。好的基础语法，应该是简单直接的、易于记忆和书写的。“功能强”跟“简单易用”，是两个矛盾面——在基础语法中，加入常用增强功能，确实能方便编程，但是也让基础语法变得臃肿。比如说，for循环，...</content>
  </entry>
  
  <entry>
    <title>filebeat使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/usage-note-of-filebeat.html"/>
    <updated>2019-11-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/usage-note-of-filebeat</id>
    <content type="html">
filebeat安装命令（for dockerfile rpm）RUN set -eux; \
    \
    rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch; \
    { \
        echo &amp;#39;#!/usr/bin/env bash&amp;#39;; \
        echo &amp;#39;[elastic-7.x]&amp;#39;; \
        echo &amp;#39;name=Elastic repository for 7.x packages&amp;#39;; \
   ...</content>
  </entry>
  
  <entry>
    <title>Kubernetes私有容器云平台日志收集方案（最新版2019.12）</title>
    <link href="https://blog.zollty.com/b/archive/kubernetes-container-cloud-platform-log-collection-plan.html"/>
    <updated>2019-11-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/kubernetes-container-cloud-platform-log-collection-plan</id>
    <content type="html">
有很多的方案备选，下面列出了几种：1、sidecar边车模式，在每一个pod部署一个filebeat sidecar容器（共享empty dir卷进行日志采集）2、应用容器pod内直接部署日志采集agent进行采集；3、打印到console，从宿主机的docker log文件去采集（读取本地文件，不推荐）4、打印到console，通过宿主机的docker log driver去采集（二进制直接输出）；5、挂载k8s的flex volume，将日志文件写到这个flex volume目录下，然后从宿主机去采集日志文件。……&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;备注：...</content>
  </entry>
  
  <entry>
    <title>自定义vscode插件路径及离线安装VSIX说明</title>
    <link href="https://blog.zollty.com/b/archive/custom-vscode-extensions-path-and-install-from-vsix.html"/>
    <updated>2019-11-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/custom-vscode-extensions-path-and-install-from-vsix</id>
    <content type="html">插件安装位置：Windows：%USERPROFILE%\.vscode\extensions其他：~/.vscode/extensions永久设置位置：找到vs code的快捷方式地址，例如我的是：C:\Users\ZOLLTY-PC\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Visual Studio Code然后右键查看“属性”，修改“目标”，添加--extensions-dir，如下：&amp;quot;D:\C\Program Files\Microsoft VS Code\Code.exe&amp;quot; --extens...</content>
  </entry>
  
  <entry>
    <title>Citrix Receiver for Linux安装和cert证书添加解决SSL错误</title>
    <link href="https://blog.zollty.com/b/archive/install-citrix-receiver-for-linux-and-solve-cert-problem-and-ssl-error.html"/>
    <updated>2019-11-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/install-citrix-receiver-for-linux-and-solve-cert-problem-and-ssl-error</id>
    <content type="html">
Citrix Receiver for Linux安装根据官方的建议，使用 Citrix Workspace app 代替 Citrix Receiver ，前者完全兼容后者。安装官方教程：（下载linux安装包，比如xxx.deb，直接安装即可）https://docs.citrix.com/zh-cn/receiver/linux/current-release/install/customize.html下载地址：https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest...</content>
  </entry>
  
  <entry>
    <title>研发团队组织文化</title>
    <link href="https://blog.zollty.com/b/archive/corporate-culture-of-dept-part.html"/>
    <updated>2019-11-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/corporate-culture-of-dept-part</id>
    <content type="html">
团结，专业，高效，快乐，开放前言团队文化和企业文化的区别是什么？企业文化更像是一个符号，比较泛泛而谈，有点理想，高度很高。而这里的研发团队文化，是具有很强针对性和实操性的团队做事及相处原则，是历经很多成功与失败经验后不断总结和修订出来的团队建设经验。一、背景软件研发类的公司或部门，投入的主要是人力资源，产出的主要是软件系统。研发部门应该非常重视研发能力。研发能力体现在几个方面：水平与专业性、研发效率、研发质量与安全。研发部门内部，绝大多数人都是专业技术类人才，这些人本身展现出的技术水平，是整个公司研发能力的写照。因此，对研发部门来说，建立合适的团队文化，就是要让人力资源得到高效的利用...</content>
  </entry>
  
  <entry>
    <title>为什么要使用统一配置中心</title>
    <link href="https://blog.zollty.com/b/archive/why-use-unified-configuration-center.html"/>
    <updated>2019-11-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/why-use-unified-configuration-center</id>
    <content type="html">
首先给大家举个例子，&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我的亲身经历，或许大家也深有体会。我曾经做一个项目，这个项目一套代码，卖给了30多个企业客户。也就是说，我们为这30多个企业客户部署的是同一套程序，只是配置不一样而已。所以我们知道，配置是很重要的：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;配置是程序的一部分，配置设计得好的话，程序就会非常灵活、易用。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;把易改变的配置，比如选项、开关、阈值、密码等，从代码中独立出来，从外部去加载。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这样做的主要好处有两个，一个是改变配置，...</content>
  </entry>
  
  <entry>
    <title>IBM WebSphere MQ基础操作和监控</title>
    <link href="https://blog.zollty.com/b/archive/ibm-websphere-mq-basic-operation-and-monitoring.html"/>
    <updated>2019-11-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/ibm-websphere-mq-basic-operation-and-monitoring</id>
    <content type="html">基础概念：MQ中有几个很重要的组件：队列管理器（QueueManager）、队列（Queue）和通道（Channel）。队列最重要的部分，用来存放、取出消息。通道WebSphere® MQ 使用两种不同类型的通道：1、消息通道，它是两个队列管理器之间的单向通信链路。WebSphere MQ 使用消息通道在队列管理器之间传送消息。 要双向发送消息，您必须定义每个方向的通道。2、MQI 通道，它是双向通道，用于将应用程序（MQI 客户机）连接至服务器上的队列管理器。WebSphere MQ 使用 MQI 通道在 MQI 客户机和队列管理器之间传送 MQI 调用和响应。常用命令：查看队列管理器...</content>
  </entry>
  
  <entry>
    <title>IBM MQ监控方法</title>
    <link href="https://blog.zollty.com/b/archive/the-monitor-way-of-ibm-websphere-mq.html"/>
    <updated>2019-10-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-monitor-way-of-ibm-websphere-mq</id>
    <content type="html">
IBM MQ监控工具已开源，参见：https://github.com/zollty/IBM-MQ-Monitoring-Script 1、检查连接数1）底层网络连接检测方法netstat -tnp | grep amqrmppa | wc -l或netstat -tn | grep :14 | wc -l2）IBM MQ tool检测dspmqtrn -a | grep &amp;quot;TranNum(&amp;quot; | wc -l参考文档：https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.ad...</content>
  </entry>
  
  <entry>
    <title>关于软件定义数据中心(SDDC)和超融合</title>
    <link href="https://blog.zollty.com/b/archive/about-sddc-and-hci.html"/>
    <updated>2019-10-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-sddc-and-hci</id>
    <content type="html">
先看一下各自的定义：（综合了国外比较权威的解释）1、数据中心的基础资源&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;基础资源，主要包括3大类：计算资源、存储资源、网络资源2、软件定义数据中心(SDDC)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;软件定义数据中心（SDDC）通常是指虚拟化所有基础结构的数据中心。利用模拟硬件的软件，操作系统和应用程序可以抽象自物理硬件并进行倍增，以形成处理器、内存、I/O 和网络的弹性资源池。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;软件定义数据中心架构可以分为三个逻辑层：物理层、虚拟化层和管理层。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nb...</content>
  </entry>
  
  <entry>
    <title>不使用ps怎么查看Linux进程信息</title>
    <link href="https://blog.zollty.com/b/archive/how-to-view-linux-process-without-ps.html"/>
    <updated>2019-10-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/how-to-view-linux-process-without-ps</id>
    <content type="html">
1、ps不用多说。比如 ps aux除了ps命令，还有没其他查看进程的方式呢？2、top：使用top命令也能看到进程信息3、终极大法：ls，用法如下：ls -l /proc/*/exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;解释：/proc/目录下面，有很多数字名称的目录，这些数字代表进程号。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;进程目录下面各子目录的含义：cwd：文件所在目录exe：执行命令的完整路径environ：执行命令时的环境变量4、其他方法：lsof -i :8080，知道端口号的话可以这样看看。（netstat不能用的情况下，也可以试试这个）

</content>
  </entry>
  
  <entry>
    <title>个人办公及开发环境设计</title>
    <link href="https://blog.zollty.com/b/archive/development-environment-design.html"/>
    <updated>2019-10-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/development-environment-design</id>
    <content type="html">
编者注（2022.11）：从2018年7月至今，已有4年多时间，这期间工作岗位变化非常多，开发（Java/Go/前端）、运维、测试、产品、项目管理等等，从架构师、技术主管到CTO，干的事情杂，电脑上的资料和软件非常非常多，电脑桌面处于“常清常满”状态。但是，至今个人的办公及开发环境一直采用如下模式，收效非常好，再也没有为重装系统或软件发过愁，期间几乎没有重装过系统和软件（只有一次机械式的Windows LTS版本升级，只涉及到少量软件无脑安装，而且LTS升级一次可以管2~3年），而且结合《个人文件管理和备份策略》，个人所有资料得以完整有效保存。这套方案设计，可以在全公司推广，特别是研...</content>
  </entry>
  
  <entry>
    <title>不跟风，容器技术的真实优、缺点</title>
    <link href="https://blog.zollty.com/b/archive/real-advantages-and-disadvantages-of-container-technology.html"/>
    <updated>2019-09-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/real-advantages-and-disadvantages-of-container-technology</id>
    <content type="html">
传统虚拟机 和 容器云的 真实 优缺点对比：（本文基于的前提：同样是在DevOps自动化程度很高的情况下。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;很多时候有人说 容器云平台更先进，那是因为他们传统的模式做得不好，如果把传统的模式做好，不见得比容器化平台的自动化程度低。）1、构建和部署方面传统的方案是：a）使用支持虚机部署的DevOps平台，每个节点安装有agent，可以执行命令、上传文件等做很多事（参见阿里的 云效、StarAgent）；b）使用jenkins，功能很成熟、强大，可以自定义脚本，有很多现成的插件；c）使用批量自动化工具，ansible，saltstack等。容...</content>
  </entry>
  
  <entry>
    <title>Linux和WIN10路由配置：有线和WIFI双网卡分流</title>
    <link href="https://blog.zollty.com/b/archive/dual-network-card-network-flow-distribute.html"/>
    <updated>2019-09-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/dual-network-card-network-flow-distribute</id>
    <content type="html">环境：电脑同时连接有线网络（公司内网）和无线网络（手机热点连外网）目标：既能访问外网（WIFI），又能访问内网（有线），外网优先关键步骤：1、首先，将 无线网卡的优先级设置为调高，有线网卡的优先级调低&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;打开网络适配器，找到网卡，然后点属性，找到IPv4的设置，然后点“高级”，找到 自动跃点，将其取消，设置 跃点值，值越小，优先级越高，比如一个设置为1，一个设置为10。2、步骤1设置后，内网地址应该访问不了，按下面设置，将内网网段 绑定到 有线网卡上确定自己要访问的内网网段，比如我想访问的内网网段为 172.16.55.*，转换成网段和子网标识...</content>
  </entry>
  
  <entry>
    <title>微服务网关Kong安装试用和实践总结</title>
    <link href="https://blog.zollty.com/b/archive/practice-summary-of-microservice-gateway-kong.html"/>
    <updated>2019-09-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/practice-summary-of-microservice-gateway-kong</id>
    <content type="html">
一、安装&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;说明：1）由于不想用PostgreSQL和Cassandra数据库，所以我选择的是无DB模式（DB-less mode）2）选择Docker模式安装，避免环境配置问题。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Docker安装步骤如下：docker pull kong:2.3.3

docker network create kong-net

mkdir -p /hot_data/kong1

docker run -d --name kong1 \
     --network=kong-net \
 ...</content>
  </entry>
  
  <entry>
    <title>常见网络术语</title>
    <link href="https://blog.zollty.com/b/archive/common-network-terms.html"/>
    <updated>2019-09-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/common-network-terms</id>
    <content type="html">
Overlay网络覆盖网络，运行在已有的网络之上。例如P2P就是Overlay网络。TUN/TAP虚拟网卡即虚拟网卡的实现方式。（略）网关、网桥、路由器、交换机网关又称为：网间连接器，协议转换器。它在网络层，实现两个不同的网络互相连接，这两个网络可以具有不相同的高层协议。对比网桥，网桥工作在数据链路层，它只是简单地透传数据。路由器，是互联网络的枢纽，网关只是它的基础组成——如果只是简单地连接两个网络，使用网关或网桥就可以了。网关可以是路由器、电脑服务器、防火墙等。交换机，工作在数据链路层，最基本的功能就是根据MAC地址发送数据到指定端口，这种基础功能叫二层交换机。它像是网桥、集线器的...</content>
  </entry>
  
  <entry>
    <title>二层网络与三层网络</title>
    <link href="https://blog.zollty.com/b/archive/two-layer-network-and-three-layer-network.html"/>
    <updated>2019-09-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/two-layer-network-and-three-layer-network</id>
    <content type="html">
二层网络与三层网络最近在搭建openstack的行云环境，在其中进行了网络配置，在配置过程中对其中的网络内容进行过渡和总结。首先，这里的二层、三层并不是指ISO七层网络模型中的数据链路层和网络层，而是指核心层、汇聚层和接入层，是按照逻辑拓扑结构进行的分类。核心层核心层是整个网络的支撑脊梁和数据传输通道，重要性不言而喻。因此在整个三层网络结构中，核心层的设备要求是最高的，必须配备高性能的数据冗余转接设备和防止负载过剩的均衡负载的设备，以降低各核心层交换机所承载的数据量。汇聚层汇聚层是连接网络的核心层和各个接入层的应用层，在两层之间承担&amp;quot;媒介传输&amp;quot;的作用。汇聚层应该具...</content>
  </entry>
  
  <entry>
    <title>关于运维模式和方法的思考</title>
    <link href="https://blog.zollty.com/b/archive/thinking-about-mode-and-strategy-of-it-operations.html"/>
    <updated>2019-09-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/thinking-about-mode-and-strategy-of-it-operations</id>
    <content type="html">
&amp;nbsp; &amp;nbsp; 我之前在《智能化运维实践》中总结了运维方式的演进路线，如下：业余运维专职手工运维半自动化和工具运维平台化运维智能化运维无人化运维&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;并判断，将来很长一段时间，我们都会处于 智能化运维 阶段。智能化会将运维的操作变得简单便捷，最终传统运维人员将会失业，剩下的都是智能运维开发人员。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这里面最大的问题，其实是技术架构的快速发展以及多样化和复杂化，以前运维不外乎分为主机和网络、系统和应用、数据库几大类，但是随着IDC和硬件设备的成熟，以及容器云等技术的影响，传统的主机和网络运...</content>
  </entry>
  
  <entry>
    <title>Linux网络抓包方法tcpdump与wireshark</title>
    <link href="https://blog.zollty.com/b/archive/linux-network-packet-capture-method-tcpdump-and-wireshark.html"/>
    <updated>2019-09-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/linux-network-packet-capture-method-tcpdump-and-wireshark</id>
    <content type="html">tcpdump 与wiresharkWireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。 还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现：在 Linux 里抓包，然后在Windows 里分析包。Wiresharkyum&amp;nbsp;install&amp;nbsp;wireshark简单用法tshark&amp;nbsp;-i&amp;nbsp;eth0&amp;nbsp;port&amp;nbsp;6060Tcpdumpyum&amp;nbsp;install&amp;nbsp;tcpdump简单用法tcpdump&amp;nb...</content>
  </entry>
  
  <entry>
    <title>使用npm link引入本地npm工程模块</title>
    <link href="https://blog.zollty.com/b/archive/use-npm-link-install-local-module.html"/>
    <updated>2019-09-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/use-npm-link-install-local-module</id>
    <content type="html">使用npm命令，直接离线引入本地工程模块，不需要install（不用上传仓库，使本地项目可以直接依赖另一个项目）Symlink(符号链接)一个package文件夹。概括npm&amp;nbsp;link&amp;nbsp;(in&amp;nbsp;package&amp;nbsp;dir)
npm&amp;nbsp;link&amp;nbsp;[&amp;lt;@scope&amp;gt;/]&amp;lt;pkg&amp;gt;[@&amp;lt;version&amp;gt;]

alias:&amp;nbsp;npm&amp;nbsp;ln描述package 链接过程分为两步首先、npm link将会在全局包{prefix}/lib/node_modules/下面创建一个指向命令执行的...</content>
  </entry>
  
  <entry>
    <title>NodeJS调用shell命令</title>
    <link href="https://blog.zollty.com/b/archive/nodejs-calls-shell-commands.html"/>
    <updated>2019-09-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/nodejs-calls-shell-commands</id>
    <content type="html">使用child_process，如下示例const&amp;nbsp;{&amp;nbsp;spawn&amp;nbsp;}&amp;nbsp;=&amp;nbsp;require(&amp;#39;child_process&amp;#39;);
const&amp;nbsp;ls&amp;nbsp;=&amp;nbsp;spawn(&amp;#39;ls&amp;#39;,&amp;nbsp;[&amp;#39;-lh&amp;#39;,&amp;nbsp;&amp;#39;/usr&amp;#39;]);

ls.stdout.on(&amp;#39;data&amp;#39;,&amp;nbsp;(data)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;console.log(`stdout:&amp;nbsp;${data}`...</content>
  </entry>
  
  <entry>
    <title>CoffeeScript编程笔记</title>
    <link href="https://blog.zollty.com/b/archive/programming-note-of-coffeescript.html"/>
    <updated>2019-08-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/programming-note-of-coffeescript</id>
    <content type="html">编程建议&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由于CoffeeScript采用 空白符缩进 来控制语句，如果同级的代码缩进没有对齐（多一个空格和少一个空格）都会对程序结构产生影响，在编译过程中，经常报代码未对齐的错误。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;建议 采用 Tab键 作为缩进符号，一是直观，而是方面增加和减少对齐（如果用4个空格代替Tab，则减少对齐时要删除4个空格，容易出错；如果用2个空格来缩进，程序不够直观，例如下面的代码↓）。$&amp;nbsp;&amp;#39;body&amp;#39;
.click&amp;nbsp;(e)&amp;nbsp;-&amp;gt;
&amp;nbsp;&amp;nbsp;$...</content>
  </entry>
  
  <entry>
    <title>分布式文件存储SeaweedFS试用对比总结</title>
    <link href="https://blog.zollty.com/b/archive/summary-of-SeaweedFS-for-distributed-file-storage.html"/>
    <updated>2019-07-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/summary-of-SeaweedFS-for-distributed-file-storage</id>
    <content type="html">基础概念1、SeaweedFS将磁盘进行了分组&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分为DataCenters（数据中心、机房）、Racks（机架），Servers 和 Hard Drive，从而保证可用性。2、Replication&amp;nbsp;- 复制多副本这是启动Master节点时设置的参数：./weed&amp;nbsp;master&amp;nbsp;-defaultReplication=001代表在相同机架的不同服务器上复制一个副本（共2两份）。为什么是001，官方的定义如下：000no replication, just one copy001replicate once on ...</content>
  </entry>
  
  <entry>
    <title>分布式文件存储MinIO SeaweedFS FastDFS对比总结</title>
    <link href="https://blog.zollty.com/b/archive/comparison-of-distributed-file-storage-MinIO-SeaweedFS-FastDFS.html"/>
    <updated>2019-07-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/comparison-of-distributed-file-storage-MinIO-SeaweedFS-FastDFS</id>
    <content type="html">
首先，看下这几篇文章：总体思路：《分布式文件存储选型考虑点》专题分析：1、SeaweedFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;参见我的这篇文章《分布式文件存储SeaweedFS试用对比总结》。2、MinIO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;参见我的这篇文章《分布式文件存储MinIO试用对比总结》3、FastDFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;参见我的这几篇文章《FastDFS的一些缺点（强烈需要注意）》《FastDFS集群部署和使用》4、还有一些我没仔细看过的，简单分析一下比如：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ceph：h...</content>
  </entry>
  
  <entry>
    <title>分布式文件存储MinIO试用对比总结</title>
    <link href="https://blog.zollty.com/b/archive/summary-of-minio-for-distributed-file-storage.html"/>
    <updated>2019-07-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/summary-of-minio-for-distributed-file-storage</id>
    <content type="html">
介绍就不说了，官方有中文文档：https://docs.min.io/cn 说点个人感受。首先，MinIO是兼容Amazon S3的，换句话说，MinIO可以伪装成Amazon S3，你可以用Amazon S3的SDK操作MinIO。MinIO支持多租户，但是却不支持动态扩展。因此，大租户，就单独搭一套MinIO吧。小租户倒是可以共用一套。关于服务发现和动态扩展，作者的讨论如下：（重要）To get a really resilient storage cloud, service discovery needs to be implemented.Expected Behavior...</content>
  </entry>
  
  <entry>
    <title>浅谈架构师特点</title>
    <link href="https://blog.zollty.com/b/archive/on-the-characteristics-of-architects.html"/>
    <updated>2019-07-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/on-the-characteristics-of-architects</id>
    <content type="html">
我总结了3个阶段。先说一下各个阶段的感受：1、系统架构阶段：&amp;nbsp; &amp;nbsp; 系统架构实际上包括了 业务功能架构 和 技术功能架构。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;业务上，其实有点接近于产品，但是有些问题是与技术强相关的，产品不懂技术，他的设计就存在问题或者隐患，这时候，一个技术功底好的又有丰富业务系统开发经验的人，就能将这些功能设计得更好。这就是我说的“业务功能架构”。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;而技术架构，与开发功能、写代码，都息息相关，特别是在系统整体框架层面，以及开发重难点功能的时候，好的技术手段、算法，能够开发出更好的功能实现，...</content>
  </entry>
  
  <entry>
    <title>Zookeeper原理和业界实践</title>
    <link href="https://blog.zollty.com/b/archive/zookeeper-principle-and-industry-practice.html"/>
    <updated>2019-07-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/zookeeper-principle-and-industry-practice</id>
    <content type="html">PS：ZK基础参见另一篇文章：《ZooKeeper简介、基础知识和主要配置》使用的协议：ZAB（zookeeper原子广播），为paxos的一种实现。Zookeeper提供了三种选择策略：&amp;nbsp; LeaderElection&amp;nbsp; AuthFastLeaderElection&amp;nbsp; FastLeaderElection这里仅介绍默认的算法：FastLeaderElection。基础概念Sid：服务器id；Zxid：服务器的事务id，数据越新，zxid越大；epoch：逻辑时钟，在服务端是一个自增序列，每次进入下一轮投票后，就会加1；server状态：Looking（选举...</content>
  </entry>
  
  <entry>
    <title>互联网企业文化</title>
    <link href="https://blog.zollty.com/b/archive/internet-corporate-culture.html"/>
    <updated>2019-07-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/internet-corporate-culture</id>
    <content type="html">互联网企业文化（编撰/zollty）目录1、 快速迭代，勇于试错2、 不断反思，放空自己3、 拥抱变化4、 危机文化5、 使用工具来优化效率6、 创新文化7、 用户至上8、 赚钱不必作恶9、 分享文化10、 开放协作文化11、 专注、极致12、 扁平化管理13、 平等，尊重员工14、 自由文化15、 娱乐文化16、 员工与企业共同成长17、 互联网公司经典语录一、互联网文化1、快速迭代，勇于试错	互联网讲究的是“天下武功，唯快不破”，所以要求产品要快速推向市场并快速迭代，并通过试错来逐步找到适合自身的商业模式和盈利模式。无论是微信、支付宝还是美团、头条，所有的互联网产品都快速迭代。	在互...</content>
  </entry>
  
  <entry>
    <title>Golang笔记</title>
    <link href="https://blog.zollty.com/b/archive/golang-note.html"/>
    <updated>2019-07-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/golang-note</id>
    <content type="html">
一、结构体、引用类型、nil&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1、结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体是值类型，不是引用类型。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2、nil的定义如下：// nil is a predeclared identifier representing the zero value for a
// pointer, channel, func, interface, map, or slice type.
var nil Type // Type must be a pointer, channe...</content>
  </entry>
  
  <entry>
    <title>Windows使用adb连接Android调试apk</title>
    <link href="https://blog.zollty.com/b/archive/debug-android-apk-using-adb-on-windows.html"/>
    <updated>2019-05-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/debug-android-apk-using-adb-on-windows</id>
    <content type="html">1、找到adb安装路径，如果安装了Android SDK，则在platform-tools下面，例如：D:\devsoft\Android\SDK\platform-tools2、运行 adb.exe --help查看命令adb.exe&amp;nbsp;devices -l 查看连接的设备（首次使用会启动adb服务，连上android数据线会提示是否允许调试，如果在手机端同意调试，则adb会自动连接上这个设备）3、adb.exe&amp;nbsp;install xxx.apk 安装apk（也可以手动自己安装）4、adb logcat 根据TAG过滤adb.exe logcat -s Jetty:Vl...</content>
  </entry>
  
  <entry>
    <title>Android下运行Tomcat、Jetty等Java Web服务器</title>
    <link href="https://blog.zollty.com/b/archive/run-tomcat-jetty-java-web-container-on-android-system.html"/>
    <updated>2019-05-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/run-tomcat-jetty-java-web-container-on-android-system</id>
    <content type="html">方案一：在android下搭建linux运行环境，然后在linux下运行java web服务器。方案二：将tomcat或jetty等java web服务器的源码改造，并将class文件转译成android能直接运行的dex格式文件（运行在Dalvik VM上）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意，方案二，自己去改造服务器源码，对于一般人显然不现实，但是jetty官方提供了一个叫“i-jetty”的项目，可以直接在android下运行jetty服务器，然后安装dex转码过的war包。本文目前主要对方案二进行讲解。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;方案二，有一...</content>
  </entry>
  
  <entry>
    <title>Android 更改classloader的libPath</title>
    <link href="https://blog.zollty.com/b/archive/android-change-libPath-of-classloader.html"/>
    <updated>2019-05-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/android-change-libPath-of-classloader</id>
    <content type="html">Android 更改classloader的libPath 路径，指定路径加载.so参见：https://www.jianshu.com/p/f751be55d1fb源码如下：https://www.androidos.net.cn/android/1.6_r1/xref/dalvik/libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.javahttps://www.androidos.net.cn/android/5.0.1_r1/xref/libcore/dalvik/src/main/java/dalvik/syst...</content>
  </entry>
  
  <entry>
    <title>中间件及基础组件交接维护规范</title>
    <link href="https://blog.zollty.com/b/archive/spec-of-middleware-or-components-maintenance.html"/>
    <updated>2019-05-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/spec-of-middleware-or-components-maintenance</id>
    <content type="html">一、说明Ø&amp;nbsp; 提交方[研发]：软件开发部Ø&amp;nbsp; 维护方[运维]：数据中心&amp;nbsp;二、基本交接流程1.&amp;nbsp;&amp;nbsp; 交接之前Ø&amp;nbsp; 中间件的选型获得包括数据中心在内的评审通过；Ø&amp;nbsp; 中间件经过一段时间生产环境的运行和正常流量的使用（至少1个月），表现稳定无较大的问题。&amp;nbsp;在此阶段，主要由研发自己来维护，运维提供协助。&amp;nbsp;2.&amp;nbsp;&amp;nbsp; 交接期间Ø&amp;nbsp; 提供（适用于当前实际部署情况的较详细的）中间件维护操作手册，以及中间件官方的相关手册或技术资料；Ø&amp;nbsp; 提供 该中间件的监控告警方案，以及对应的...</content>
  </entry>
  
  <entry>
    <title>源码分析之Spring Security 和 Shiro 请求处理流程</title>
    <link href="https://blog.zollty.com/b/archive/spring-security-and-shiro-request-processing-analysis.html"/>
    <updated>2019-05-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/spring-security-and-shiro-request-processing-analysis</id>
    <content type="html">一、Spring Security登录执行流程1、首先用ServletFilter拦截器（AbstractAuthenticationProcessingFilter）对应UsernamePasswordAuthenticationFilter：&amp;nbsp; &amp;nbsp; 拦截到登录的请求（通常是form Login，比如 /login + POST ）&amp;nbsp; &amp;nbsp; 解析出登录信息principal和credentials（对应username和password），封装成Authentication（对应UsernamePasswordAuthenticationToken...</content>
  </entry>
  
  <entry>
    <title>Keycloak现代化前端、移动端的接入说明</title>
    <link href="https://blog.zollty.com/b/archive/keyloak-usage-of-modern-frontend-and-mobile.html"/>
    <updated>2019-05-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/keyloak-usage-of-modern-frontend-and-mobile</id>
    <content type="html">&amp;nbsp; &amp;nbsp; 接上文《Keycloak通用接入手册（以Java为例）》，前面所述的，都是针对于服务器端的接入说明。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;而现代化的前端技术，已经具备了很强大的native处理能力，很幸运，Keycloak已经提供JavaScript Adapter，它可以用于现代化的前端、移动端APP接入，GitHub上可以找到很多 VueJS、ReactJS、React Native的接入例子。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下面以 VueJS APP为例，说明如何接入。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主要参考的官...</content>
  </entry>
  
  <entry>
    <title>Webpack零基础入门指导</title>
    <link href="https://blog.zollty.com/b/archive/webpack-guide-of-zero-foundation.html"/>
    <updated>2019-05-02T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/webpack-guide-of-zero-foundation</id>
    <content type="html">（本文为培训新人编写）第1章 webpack 基本介绍主要介绍webpack 的基本信息，如何安装 webpack，通过命令行如何使用webpack1.1 Webpack 基本介绍为什要使用WebPack现今的很多网页其实可以看做是功能丰富的应用，它们拥有着复杂的JavaScript代码和一大堆依赖包。为了简化开发的复杂度，前端社区涌现出了很多好的实践方法模块化，让我们可以把复杂的程序细化为小的文件;类似于TypeScript这种在JavaScript基础上拓展的开发语言：使我们能够实现目前版本的JavaScript不能直接使用的特性，并且之后还能转换为JavaScript文件使浏览器可...</content>
  </entry>
  
  <entry>
    <title>如何做好技术面试准备</title>
    <link href="https://blog.zollty.com/b/archive/how-to-prepare-for-technical-interview.html"/>
    <updated>2019-04-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/how-to-prepare-for-technical-interview</id>
    <content type="html">
一、对于技术面试的基本认知观念如下：1、不是所有的技术面试都是公平、客观的，相反，很多的技术面试，都是主观的、片面的，甚至是荒诞的。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这句话的意思是，让我们摆好心态，不要太计较。同时，做好各种各样的准备。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;举个例子（我的切身之痛），曾经我做了3年Java开发工程师，年年评优秀，同时主持多个项目，自认为项目内外的重难点问题，都能轻松解决，然而我去参加第一次面试的时候，问了一堆JVM问题，让我很郁闷，我哪里记得住（或者知道）这么“冷门”的知识啊！虽然，JVM是面试的“热门”知识点，但是在工作中，这...</content>
  </entry>
  
  <entry>
    <title>修改jar包文件内容，Maven重新打包jar</title>
    <link href="https://blog.zollty.com/b/archive/modify-the-jar-package-file-and-repackage.html"/>
    <updated>2019-04-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/modify-the-jar-package-file-and-repackage</id>
    <content type="html">
一、网上搜到的下列方案都不行：1、直接用WinRAR拖拽替换jar包内文件失败，报错：压缩文件已损坏。我以前替换成功过，但是启动的时候报错。这种方式可能会伤害到jar包的一些标识。只适合zip格式的jar文件。可以先用这种方法试试，毕竟最简单。2、解压jar包，然后使用jar命令（比如jar -uvf）重新打包失败，能打包，但是以可执行文件（./xxx.jar start）运行时提示：jar: cannot execute binary file下面是另一种我用过的方案：1、将jar包文件解压，并且把所有依赖的lib下的jar包统统解压，合并在一起（ 包括class、配置文件和其他资...</content>
  </entry>
  
  <entry>
    <title>令人崩溃的yaml（yml配置）对比properties、json、TOML</title>
    <link href="https://blog.zollty.com/b/archive/yaml-and-properties-json-toml.html"/>
    <updated>2019-04-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/yaml-and-properties-json-toml</id>
    <content type="html">经过：原本，我一直以为，yml格式非常好用，至少比 properties要科学，比 json 要简洁、强大，然而，下面遇到的这个案例，让我意识到，yaml并不是万能，也并不是最科学、最简洁的。我有这样一个 spring-boot的配置文件（原本是properties格式如下）：keycloak.realm&amp;nbsp;=&amp;nbsp;demo
keycloak.resource&amp;nbsp;=&amp;nbsp;fm-cache-cloud
keycloak.credentials.secret&amp;nbsp;=&amp;nbsp;d4589683-0ce7-4982-bcd3
keycloak.secur...</content>
  </entry>
  
  <entry>
    <title>Keycloak通用接入手册（以Java为例）</title>
    <link href="https://blog.zollty.com/b/archive/keycloak-get-starting.html"/>
    <updated>2019-04-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/keycloak-get-starting</id>
    <content type="html">第一步：在keycloak平台上，新建一个client app&amp;nbsp;联系Keycloak管理员，提供 应用的 root url 和 app name即可。&amp;nbsp;建好client之后，可以得到一个 client&amp;nbsp;secret（密匙）。第二步：在client project中 加入 keycloak配置配置形如：#&amp;nbsp;空间名，默认所有app和用户都在一个keycloak空间
keycloak.realm=ops
#&amp;nbsp;keycloak服务器的auth地址
keycloak.auth-server-url=http://localhost:8180/...</content>
  </entry>
  
  <entry>
    <title>Spring 406 Not Acceptable HttpMediaTypeNotAcceptableException</title>
    <link href="https://blog.zollty.com/b/archive/spring-406-not-acceptable-HttpMediaTypeNotAcceptableException.html"/>
    <updated>2019-03-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/spring-406-not-acceptable-HttpMediaTypeNotAcceptableException</id>
    <content type="html">SpringMVC异常报406 (Not Acceptable)的解决办法异常信息如下org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation因为在RequestMapping里面加上了produces=MediaType.APPLICATION_JSON_VALUE分析如下：参见：https://www.cnblogs.com/wuxun1997/p/7729175.html 匹配逻辑：ProducesRequestCondition类185...</content>
  </entry>
  
  <entry>
    <title>Log4j blocked 线程阻塞问题</title>
    <link href="https://blog.zollty.com/b/archive/log4j-blocked-problem.html"/>
    <updated>2019-03-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/log4j-blocked-problem</id>
    <content type="html">我的zoa项目中，一直使用的是log4j 1.x版本，由于简单，一直没更换，也没怀疑过它的问题。偶尔有两次，zoa在使用过程中假死的情况，不能响应任何请求，包括正常的关闭都无法进行。于是我使用 jvm工具分析了JVM的情况，最终定位为 log4j引起的线程 blocked，不算是死锁，但是所以请求都会调用log4j，而log4j又无法正常执行，所以 所有请求都会 block。线程堆栈信息片段 形如：&amp;quot;qtp1056944384-232&amp;quot;&amp;nbsp;prio=10&amp;nbsp;tid=0x00007f54900d0800&amp;nbsp;nid=0x63b3&amp;nbsp;wait...</content>
  </entry>
  
  <entry>
    <title>个人文件管理和备份策略</title>
    <link href="https://blog.zollty.com/b/archive/personal-file-management-and-backup-strategy.html"/>
    <updated>2019-02-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/personal-file-management-and-backup-strategy</id>
    <content type="html">
一、文件重要程度分类1、一级（特级）：绝对不能丢的，丢了会是巨大的损失，甚至是灾难性的特点1：&amp;nbsp; &amp;nbsp; 1）一定会用到的、非常重要的资料，比如合同、报销单，&amp;nbsp; &amp;nbsp; 2）丢了会带来巨大的麻烦，或者间接造成很大的时间或金钱的损失；特点2：&amp;nbsp; &amp;nbsp; 1）很可能会用到的资料，&amp;nbsp; &amp;nbsp; 2）是花了很多时间和精力才获得的(自己制作或收集)资料，&amp;nbsp; &amp;nbsp; 3）或者(从某处获得的)稀有珍贵的资料，&amp;nbsp; &amp;nbsp; 4）丢了就无法重新获得，或者需要巨大的代价才能重新获得；特点3：&amp;nbsp; &amp;nbs...</content>
  </entry>
  
  <entry>
    <title>统一Portal门户和IAM平台（单点登录、统一用户资源和权限管理）实践</title>
    <link href="https://blog.zollty.com/b/archive/portal-and-iam-practice.html"/>
    <updated>2019-01-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/portal-and-iam-practice</id>
    <content type="html">
О、背景和目的解决如下问题：打通所有系统的账户密码，只需要记住一个就行，而且登录一个系统后，打开其他系统不需要再登录。不需要记住多个系统的地址，甚至不需要在多个系统页面跳来跳去，通过一个门户网站，串通起常用功能。需求如下：具备单点登录功能，并且能为第三方应用提供主流的登录认证。具备用户的基本信息、角色、资源权限等集中管理和控制。提供统一的集中办公Portal门户网站，在里面无缝链接其他系统的页面和功能。关键术语：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IAM（Identity and Access Management），即“身份识别与访问管理”，具有单点登录、强大的认证管理...</content>
  </entry>
  
  <entry>
    <title>Dubbo和Spring Cloud简单对比</title>
    <link href="https://blog.zollty.com/b/archive/simple-comparison-between-dubbo-and-spring-cloud.html"/>
    <updated>2019-01-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/simple-comparison-between-dubbo-and-spring-cloud</id>
    <content type="html">首先做一个简单的功能对比：DubboSpring Cloud服务注册中心ZookeeperSpring Cloud Netflix Eureka服务调用方式RPCREST API服务监控Dubbo-monitorSpring Boot Admin断路器不完善Spring Cloud Netflix Hystrix服务网关无Spring Cloud Netflix Zuul分布式配置无Spring Cloud Config服务跟踪无Spring Cloud Sleuth消息总线无Spring Cloud Bus数据流无Spring Cloud Stream批量任务无Spring Cloud...</content>
  </entry>
  
  <entry>
    <title>前端MockServer及API管理平台设计</title>
    <link href="https://blog.zollty.com/b/archive/the-design-of-mock-server-and-api-management-platform.html"/>
    <updated>2018-12-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-design-of-mock-server-and-api-management-platform</id>
    <content type="html">
相信很多人用过阿里的Mock平台：RPM、RPM2但其功能和易用性还是有待提高，对于业务稳定的中小型公司，建议在开源平台的基础上自研。先看一下日常研发流程举例：做一个工作任务管理系统（有UI的情况）流程如下：1、产品人员：定功能，定原型2、设计人员：定UI设计3、前端和移动端架构：分析功能，整理出接口，然后再和后端一起讨论，就接口名称、字段命名、接口粒度等达成一致意见，形成接口文档v1版本，然后前端或移动端立即在MockServer平台上编写接口的mock实现，并设置丰富的mock数据，mock规则要形成文档。4、后端架构：分析功能，整理出数据结构设计。5、前端后端进入到并行开发阶段...</content>
  </entry>
  
  <entry>
    <title>Android音乐播放声音淡入淡出的实现</title>
    <link href="https://blog.zollty.com/b/archive/implementation-of-android-music-playing-sound-fading-in-and-out.html"/>
    <updated>2018-12-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/implementation-of-android-music-playing-sound-fading-in-and-out</id>
    <content type="html">思路： 调用如下API接口MediaPlayer.setVolume(left,&amp;nbsp;right);//&amp;nbsp;左右声道，值为0~1比如，让音量从 0 增加到100%，分为10次增加，则可以调10次上面的接口（每次间隔0.2秒，一共2秒内音量增加到100%），如下所示：MediaPlayer.setVolume(0.1,&amp;nbsp;0.1);
MediaPlayer.setVolume(0.2,&amp;nbsp;0.2);
MediaPlayer.setVolume(0.3,&amp;nbsp;0.3);
...
MediaPlayer.setVolume(1.0,&amp;nbsp;1.0...</content>
  </entry>
  
  <entry>
    <title>vscode CRLF自动转LF</title>
    <link href="https://blog.zollty.com/b/archive/vscode-change-crlf-to-lf.html"/>
    <updated>2018-12-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/vscode-change-crlf-to-lf</id>
    <content type="html">vscode CRLF自动转LF解决方法：1、使用&amp;nbsp;&amp;nbsp;.editorconfig&amp;nbsp;我的配置如下;#&amp;nbsp;vscode&amp;nbsp;请安装插件：CTRL+SHIFT+X&amp;nbsp;搜索&amp;nbsp;EditorConfig&amp;nbsp;并安装
#&amp;nbsp;http://editorconfig.org
root&amp;nbsp;=&amp;nbsp;true

[*]
charset&amp;nbsp;=&amp;nbsp;utf-8
indent_style&amp;nbsp;=&amp;nbsp;space
indent_size&amp;nbsp;=&amp;nbsp;2
end_of_line&amp;...</content>
  </entry>
  
  <entry>
    <title>IT研发团队管理、人才治理经验</title>
    <link href="https://blog.zollty.com/b/archive/management-experience-of-grass-roots-it-rd-team.html"/>
    <updated>2018-11-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/management-experience-of-grass-roots-it-rd-team</id>
    <content type="html">
一、序管理目标：高投入产出比高产出质量团队持续性和抗风险能力基层IT研发的管理，包括：团队人员的管理项目或任务的管理其中，人员的管理应该放在第一位，本文结合管理目标和《IT技术人员的特点》，总结出以下几个管理要点：1、薪酬和绩效管理；2、员工职业发展通道设计；3、用好人、管理好人——管理策略和方法；4、丰富的业余文化生活，营造良好工作氛围；5、人才梯队的建设，人才的储备和再开发；6、有奖有罚，能进能出，清理不合适的人。思路如下：IT行业，人员流动性非常大，IT行业，又特别依赖于技术人员，怎么才能吸引和留住人才，是非常非常重要的；其次，怎么能把人用好，达到上面所说的管理目标，需要有相关...</content>
  </entry>
  
  <entry>
    <title>微服务之服务治理相关内容</title>
    <link href="https://blog.zollty.com/b/archive/service-governance.html"/>
    <updated>2018-11-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/service-governance</id>
    <content type="html">一、内容总结如下：1. 服务注册与发现2. 软负载均衡与容错3. 服务监控与统计4. 服务容量评估5. 服务上线审批6. 服务下线通知7. 服务负责人8. 服务文档9. 服务路由10. 服务编排11. 服务黑白名单12. 服务权限控制13. 服务依赖关系14. 服务分层架构15. 服务调用链跟踪16. 故障传导分析17. 服务降级18. 服务等级协定19. 服务自动测试20. 服务伪装容错21. 服务兼容性检测22. 服务使用情况报告23. 服务权重动态调整24. 服务负载均衡调整25. 服务映射26. 服务模板工程27. 服务开发IDE28. 服务健康检测29. 服务容器30. 服务自...</content>
  </entry>
  
  <entry>
    <title>程序员是否要懂算法</title>
    <link href="https://blog.zollty.com/b/archive/do-programmers-need-to-know-algorithms.html"/>
    <updated>2018-11-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/do-programmers-need-to-know-algorithms</id>
    <content type="html">
这是一个充满争议的话题。一部分程序员认为，算法没啥用，就是用来装B的。也有一部分程序员，认为算法非常重要，不会各种基础算法的程序员就是垃圾。那么，到底谁对谁错？作为程序员的我们应该把算法摆在什么的位置？或者实际一点，我们准备 应聘 或者 面试别人，是否需要重视算法这一块儿？我试着理性地来分析一下。首先，“算法是计算机科学领域最重要的基石之一”，这一点毋庸置疑。而算法的基础来源于数学理论。领悟透彻的人，会说，算法是一种思想；死记硬背的人，说算法是一种理论；熟练掌握的人，说算法是一种技巧。是的，算法可以有不同的理解。但是算法不只是存在于论文和教科书中，它可以被有意无意的运用来解决问题。例...</content>
  </entry>
  
  <entry>
    <title>新前端技术栈-知识技能要求</title>
    <link href="https://blog.zollty.com/b/archive/new-frontend-tech-stack-knowledge.html"/>
    <updated>2018-11-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/new-frontend-tech-stack-knowledge</id>
    <content type="html">要求如下：全面学习es6，掌握所有语法，包括Promise等重要性：5星，难度：4星全面学习vue知识，看完官方教程所有章节重要性：5星，难度：5星学习vue-router和vuex重要性：4星，难度：3星学习axios，会基本使用和配置，包括拦截器重要性：4星，难度：4星学习element-ui或者iview，会套用各种ui组件重要性：4星，难度：3星学习iconfont和svg icon，会自己添加图标重要性：4星，难度：4星学习sass和less，以及postcss，明白其作用和用法重要性：4星，难度：3星学习npm和webpack，学会安装配置，熟悉常用的plugin和loade...</content>
  </entry>
  
  <entry>
    <title>微服务指南和实施要素</title>
    <link href="https://blog.zollty.com/b/archive/micro-service-guide-and-implementation-strategy.html"/>
    <updated>2018-10-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/micro-service-guide-and-implementation-strategy</id>
    <content type="html">一、什么是微服务化和组件化？为什么要做微服务？1. 什么是微服务	顾名思义，微服务得从两个方面去理解，什么是&amp;quot;微&amp;quot;、什么是&amp;quot;服务&amp;quot;，所谓服务，就是IT系统提供的一种能力/功能，它要区别于系统，服务是一个或者一组相对较小且独立的功能单元，是用户可以感知的最小功能集。微-狭义来讲就是规模小，就是指开发单个小型的但有业务功能的服务，每个服务都有自己的处理和轻量通讯机制，可以部署在单个或多个服务器上。微服务也指由多个相对独立的、松耦合的部分组成的面向服务（SOA）的架构思想。也就是说，如果每个服务都相互关联，都要同时修改、更新，那么它们就不是真正的微服务，...</content>
  </entry>
  
  <entry>
    <title>分布式文件存储选型考虑点</title>
    <link href="https://blog.zollty.com/b/archive/the-key-of-distributed-file-storage-system-selection.html"/>
    <updated>2018-10-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-key-of-distributed-file-storage-system-selection</id>
    <content type="html">目前市面上有的开源产品包括：GridFS（MongoDB的一部分，https://docs.mongodb.com/manual/core/gridfs/）FastDFS（https://github.com/happyfish100/fastdfs）TFS（https://github.com/alibaba/tfs）SeaweedFS（https://github.com/chrislusf/seaweedfs）HBASE（HDFS）Ceph(https://github.com/ceph/ceph)MooseFS（https://moosefs.com/）GlusterFS（htt...</content>
  </entry>
  
  <entry>
    <title>关于Servlet3中的AsyncContext</title>
    <link href="https://blog.zollty.com/b/archive/servlet3-asynccontext.html"/>
    <updated>2018-10-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/servlet3-asynccontext</id>
    <content type="html">Servlet3中的AsyncContext异步和多线程异步有什么区别？AsyncContext该如何使用？AsyncContext不是让你异步输出，而是让你同步输出，但是解放服务器端的线程使用，使用AsyncContext的时候，对于浏览器来说，他们是同步在等待输出的，但是对于服务器端来说，处理此请求的线程并没有卡在那里等待，则是把当前的处理转为线程池处理了，关键就在于线程池，服务器端会起一个线程池去服务那些需要异步处理的请求，而如果你自己每次请求去起一个线程处理的话，这就有可能会耗大量的线程。&amp;nbsp;AsyncContext使用方法：final&amp;nbsp;AsyncContext...</content>
  </entry>
  
  <entry>
    <title>中间件选型标准和流程</title>
    <link href="https://blog.zollty.com/b/archive/middleware-selection-standards-and-procedures.html"/>
    <updated>2018-10-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/middleware-selection-standards-and-procedures</id>
    <content type="html">一、选型流程&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对于重大组件、中间件的选型，首先要明确短期、中长期的需求，根据需求，列出一些重点考虑的需求特性，根据这些特性，列出一些测试用例，在选型时，用这些测试用例对入围产品进行测试，根据测试结果来评判各个产品的优劣以及与需求的匹配程度。（对应下面的第3、4项）1 初步收集和整理需求，可以参考比较主流的方案和中间件的功能&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;------&amp;gt;相关资料-------&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 召集领导、技术骨干、架构师等，讨论需求和使用中间件的必要性&amp;n...</content>
  </entry>
  
  <entry>
    <title>关于Spring DeferredResult的作用和Servlet 3的异步处理请求</title>
    <link href="https://blog.zollty.com/b/archive/about-spring-deferredresult-and-servlet3-async-request.html"/>
    <updated>2018-10-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-spring-deferredresult-and-servlet3-async-request</id>
    <content type="html">关于用法和源代码，很简单，网上一大堆，这里不再多说。但是异步处理请求、DeferredResult有什么好处？是否可以无脑使用？还是说，只适用于特定场景？我的看法如下：首先普及一点：这个Servlet 3的异步处理请求，跟“线程的异步执行” 概念不一样，是两回事，大家不要搞混淆了。&amp;gt;&amp;gt; async servlet和普通的servlet不一样的，async servlet只会占连接，不会占tomcat线程，可以看一下：Asynchronous ProcessingServlet3中的AsyncContext异步和多线程异步有什么区别实际上Servlet 3的异步请求处理，只保持...</content>
  </entry>
  
  <entry>
    <title>深入理解分布式事务的二阶段提交和三阶段提交</title>
    <link href="https://blog.zollty.com/b/archive/understanding-of-two-phase-commit-and-three-phase-commit-of-distributed-transaction.html"/>
    <updated>2018-10-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/understanding-of-two-phase-commit-and-three-phase-commit-of-distributed-transaction</id>
    <content type="html">一、“两阶段提交”的架构对于分布式系统，在两阶段提交的架构中，有两种类型的节点：事务的协调者，事务的参与者。两阶段提交的程序执行流程如下：1.请求阶段（commit-request phase，或称 预提交阶段，prepare phase）在请求阶段，协调者将通知事务参与者 “执行本地事务，并做好提交的准备”，然后参与者答复协调者自己的决策：OK（事务参与者本地作业执行成功）或 Fail 取消（本地作业执行故障）。2.提交阶段（commit phase）在该阶段，协调者将综合第一个阶段的投票结果进行决策：提交或取消。参与者在接收到协调者发来的消息后将执行相应的操作。怎么理解“preCom...</content>
  </entry>
  
  <entry>
    <title>FastDFS问题分析和总结</title>
    <link href="https://blog.zollty.com/b/archive/fastdfs-problem-analysis-and-summary.html"/>
    <updated>2018-09-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/fastdfs-problem-analysis-and-summary</id>
    <content type="html">故障现象 描述：1、应用方面：Java客户端，上传身份证图片和视频失败，有几次，报错时间大概是从 2018 09-27 22:27:34.815。客户端错误信息：2、服务器方面：查看日志，发现上传的 那个storage节点 报错了，报错信息为 ：无法&amp;nbsp;rename&amp;nbsp;/data/xxxx01.tmp&amp;nbsp;文件到&amp;nbsp;/data/10/00/xxxxxxx.mp4路径
无法&amp;nbsp;rename&amp;nbsp;/data/xxxx02.tmp&amp;nbsp;文件到&amp;nbsp;/data/10/00/xxxxxxx.mp4路径
无法&amp;nbsp;rename&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>研发中心各个岗位的设计和配合</title>
    <link href="https://blog.zollty.com/b/archive/design-and-cooperation-of-various-posts-in-the-rd-center.html"/>
    <updated>2018-09-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/design-and-cooperation-of-various-posts-in-the-rd-center</id>
    <content type="html">
本文是《IT研发中心管理思路、策略和制度》专题的一部分。接着上一篇《研发管理思路和策略（一些经验和思考）》讲。一、运维团队建设运维团队主要有两拨人：一类是和应用打交道的，包括应用运维和中间件运维、DBA，需要熟悉各种软件和操作系统；另一类是与 主机和网络 打交道的，软件/硬件 都要熟悉。由于现在的应用和中间件非常复杂，就会给 应用类的运维 带来一些难度，包括 部署、升级、监控、问题排查，举个例子：ElasticSearch，怎么部署，部署时怎么优化，怎么去监控，出现问题时如何排查？一个成熟的MySQL，就足以催生一批DBA，那么无数的比MySQL更不成熟的中间件（ES、Kafka、M...</content>
  </entry>
  
  <entry>
    <title>中间件监控和告警方案</title>
    <link href="https://blog.zollty.com/b/archive/monitoring-and-alarm-plan-of-middleware.html"/>
    <updated>2018-08-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/monitoring-and-alarm-plan-of-middleware</id>
    <content type="html">一、综述中间件故障，可以分为以下几个方面：1、网络环境问题；2、服务器资源问题（CPU、内存、磁盘）；3、中间件运行过程中，遇到自身偶然的bug。中间件故障，很多时候是由于 网络或者服务器资源问题 导致，所以首先要监控好网络和服务器。中间件一般自身都没有自我监控的机制，但是都会有日志记录，可以通过 日志 和 调用方 来监控中间件是否正常。综上分析，中间件监控，可以从以下几个方面入手：1、通过日志监控中间件的状态。2、通过调用方监控中间件的状态。3、监控并记录网络和服务器状态【这是1和2的重要辅助手段】。二、通过日志监控中间件的状态方案一：将中间件的日志，收集到es中。在我们的告警平台中准...</content>
  </entry>
  
  <entry>
    <title>React和Vue对比</title>
    <link href="https://blog.zollty.com/b/archive/React-vs-Vue.html"/>
    <updated>2018-08-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/React-vs-Vue</id>
    <content type="html">1、Vue上手更简单，特别是从dom和jquery时代过来的程序员，或者习惯模板语言的后端开发，更容易接受Vue。2、Vue从设计上讲，跟趋向于简化使用，就是说Vue从骨子里面就是想用起来简单，但React更多的是为大型工程考虑。3、React上手稍微难一点，除了Vue那些基础，你还得学习，纯函数组件，函数式编程，JSX，css-in-js，高阶组件，Redux等。4、在组件化上，React更纯粹，也可以说更强大一些，而Vue不是完全组件化，应对一些复杂组件，可能会有些麻烦。5、React的设计，配合TypeScript，更适合大型或者超大型的多人协作项目，管理起来更规范，不容易出错。6...</content>
  </entry>
  
  <entry>
    <title>各种开源API网关、微服务网关对比测试</title>
    <link href="https://blog.zollty.com/b/archive/the-research-of-opensource-api-gateways.html"/>
    <updated>2018-08-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-research-of-opensource-api-gateways</id>
    <content type="html">API 网关，是大型分布式系统中，为了保护内部服务而设计的一道屏障，可以提供高性能、高可用的 API托管服务，从而帮助服务的开发者便捷地对外提供服务，而不用考虑安全控制、流量控制、审计日志等问题，统一在网关层将安全认证，流量控制，审计日志，黑白名单等实现。网关的下一层，是内部服务，内部服务只需开发和关注具体业务相关的实现。网关可以提供API发布、管理、维护等主要功能。开发者只需要简单的配置操作即可把自己开发的服务发布出去，同时置于网关的保护之下。开源的API网关，目前最主流的包括kong，spring cloud&amp;nbsp;zuul，spring cloud gateway，zuul2等...</content>
  </entry>
  
  <entry>
    <title>阮一峰《ECMAScript 6 入门》</title>
    <link href="https://blog.zollty.com/b/archive/es6-ryf-link.html"/>
    <updated>2018-07-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/es6-ryf-link</id>
    <content type="html">ECMAScript 6 入门

作者：阮一峰

授权：署名-非商用许可证

目录

  ECMAScript 6简介
  let 和 const 命令
  变量的解构赋值
  字符串的扩展
  正则的扩展
  数值的扩展
  函数的扩展
  数组的扩展
  对象的扩展
  Symbol
  Set 和 Map 数据结构
  Proxy
  Reflect
  Promise 对象
  Iterator 和 for…of 循环
  Generator 函数的语法
  Generator 函数的异步应用
  async 函数
  Class 的基本语法
  Class 的继承
  Deco...</content>
  </entry>
  
  <entry>
    <title>关于阿里Java热加载框架jarslink的应用和选型研究</title>
    <link href="https://blog.zollty.com/b/archive/investigation-and-research-report-of-jarslink.html"/>
    <updated>2018-07-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/investigation-and-research-report-of-jarslink</id>
    <content type="html">本文针对 jarslink v1.0+（jarslink官方地址：https://github.com/alibaba/jarslink） 一、本身设计和功能问题（不成熟,功能弱）：1、jarslink自定义的API，无法和swagger等API文档自动生成工具结合;2、传统的统一配置中心都是基于应用级别的隔离，无法针对module来隔离配置，和jarslink结合不好;3、不能方便的支持多数据源和多redis源;4、缺少各module之间的日志隔离规范，所有module的日志混在一起;5、父module和子module之间无隔离，父module会影响到所有子module;6、各modu...</content>
  </entry>
  
  <entry>
    <title>整合Shiro Session和JWT登录</title>
    <link href="https://blog.zollty.com/b/archive/integrating-shiro-session-and-jwt-login.html"/>
    <updated>2018-07-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/integrating-shiro-session-and-jwt-login</id>
    <content type="html">关于JWT原理和相关问题，一定要先阅读我的另一篇文章《JWT技术——基于token的鉴权机制》根据文中的论述，JWT存在许多安全隐患，建议使用HTTPS。但是本文以实现JWT方案为主，不考虑安全性——JWT方案是可以扩展的，为了提高安全性，可以在后期的设计中去加强。JWT登录的原理：-&amp;gt; 客户端 携带认证名和密码&amp;nbsp; 发起登录请求&amp;nbsp;-&amp;gt; 服务器端验证成功，返回 token 给客户端-&amp;gt; 客户端保存 token（通常是保存在Cookie或者LocalStorage中）-&amp;gt; 客户端以后每次请求，都在Header中 携带该Token-&amp;gt; 服务器端...</content>
  </entry>
  
  <entry>
    <title>Git报错git error unable to create file Invalid argument</title>
    <link href="https://blog.zollty.com/b/archive/git-error-unable-to-create-file-Invalid-argument.html"/>
    <updated>2018-07-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/git-error-unable-to-create-file-Invalid-argument</id>
    <content type="html">解决方案，参见：https://stackoverflow.com/questions/26097568/git-pull-error-unable-to-create-file-invalid-argument I ran into the same problem, but wasn&amp;#39;t willing to rename or delete these files. So here&amp;#39;s a workaround in case you can live without accessing those files using a sparse-checkout:Go ...</content>
  </entry>
  
  <entry>
    <title>Cookie与CSRF(XSRF)</title>
    <link href="https://blog.zollty.com/b/archive/cookie-and-CSRF.html"/>
    <updated>2018-07-01T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cookie-and-CSRF</id>
    <content type="html">本文是《Session和Cookie原理》的续篇。在上一篇中，详细介绍了Cookie的原理。下面介绍，如何Cookie的跨站共享，及CSRF（Cross-Site Request Forgery，跨网站请求伪造）攻击。请先阅读《HTTP访问控制（CORS）》一文，以便对跨网站请求有一个初步了解。在这篇文章中提到的一点十分关键：“Fetch 与 CORS 的一个有趣的特性是，可以基于 HTTP cookies 和 HTTP 认证信息发送身份凭证。一般而言，对于跨域 XMLHttpRequest 或 Fetch 请求，浏览器不会发送身份凭证信息。如果要发送凭证信息，需要设置 XMLHttpR...</content>
  </entry>
  
  <entry>
    <title>HTTP访问控制（CORS）</title>
    <link href="https://blog.zollty.com/b/archive/access-control-CORS.html"/>
    <updated>2018-06-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/access-control-CORS</id>
    <content type="html">简单总结如下：1、对于简单请求，浏览器不会做同源限制。2、对于非简单请求，浏览器AJAX会先发起 OPTIONS预检请求，并在请求头中添加Origin头信息，如下所示：OPTIONS&amp;nbsp;/test&amp;nbsp;HTTP/1.1
Origin:&amp;nbsp;http://www.examples.com
Access-Control-Request-Method:&amp;nbsp;DELETE
Access-Control-Request-Headers:&amp;nbsp;X-Custom-Header
Host:&amp;nbsp;www.examples.com后端服务器根据这些头信息，可以判...</content>
  </entry>
  
  <entry>
    <title>spring bean的初始化顺序与BeanPostProcessor</title>
    <link href="https://blog.zollty.com/b/archive/the-initialization-order-of-spring-bean.html"/>
    <updated>2018-06-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-initialization-order-of-spring-bean</id>
    <content type="html">一、问题提出如下代码：@Configuration
public&amp;nbsp;class&amp;nbsp;ShiroConfig&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;定义bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ShiroFilterFactoryBean&amp;nbsp;shirFilter(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
//&amp;nbsp;注意：ShiroFilterFactoryBean&amp;nbsp;实现了&amp;nbsp...</content>
  </entry>
  
  <entry>
    <title>解决JSON序列化继承Map的自定义对象时拿不到field属性值</title>
    <link href="https://blog.zollty.com/b/archive/jackson-serialise-object-extends-map-with-extra-fields.html"/>
    <updated>2018-06-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jackson-serialise-object-extends-map-with-extra-fields</id>
    <content type="html">如题，该问题在国外论坛上已有人提出来：https://stackoverflow.com/search?q=jackson+extends+map 但是并没有满意答案，都说要使用jackson的@JsonAnySetter注解：https://stackoverflow.com/questions/31320983/jackson-serialise-map-with-extra-fields，但是这样一来就和Jackson绑定死了，换成Gson或者FastJSON就不灵了。现在，我把问题，清楚的描述一遍，直接上代码：class&amp;nbsp;Foo&amp;lt;T&amp;gt;&amp;nbsp;extend...</content>
  </entry>
  
  <entry>
    <title>jackson自定义对象的序列化和反序列化</title>
    <link href="https://blog.zollty.com/b/archive/define-your-own-jackson-serializer-and-deserializer.html"/>
    <updated>2018-06-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/define-your-own-jackson-serializer-and-deserializer</id>
    <content type="html">Jackson的序列化和反序列化的基类为：com.fasterxml.jackson.databind.JsonSerializer&amp;lt;T&amp;gt;com.fasterxml.jackson.databind.JsonDeserializer&amp;lt;T&amp;gt;先查看Jackson自己实现的一些类，比如：MapSerializer然后根据这些标准的实现，来改写就行了。例如，我将&amp;nbsp;MapSerializer 源码拷贝一份，重命名为 MyMapSerilizer然后改写其中的代码，找到关键位置，如下（红色部分为我添加的）：@Overridepublic void serialize...</content>
  </entry>
  
  <entry>
    <title>项目工程结构分层模型研究</title>
    <link href="https://blog.zollty.com/b/archive/application-stratification-model-research.html"/>
    <updated>2018-06-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/application-stratification-model-research</id>
    <content type="html">
常见应用框架 分层模型说明调用层次：(控制层-可选)——&amp;gt;业务逻辑层——&amp;gt;数据处理层1、控制层：非必须，可选，一般由框架层面统一处理。&amp;nbsp; &amp;nbsp; 此层由一系列拦截器（可以是前置、后置、环绕等类型的拦截器）组成，用于拦截请求，对请求进行统一的解析和处理，然后决定是否继续执行，决定后续应该调用哪些业务逻辑对象的业务方法来处理请求，并将业务层的处理结果，进行统一加工，再返回给请求发起方。2、业务逻辑层：真正处理业务请求，调动各种资源（mq、redis、mysql等）和子处理逻辑&amp;nbsp; &amp;nbsp; 当然，业务逻辑的粒度有粗有细，所以这一层又可以进一步划分。...</content>
  </entry>
  
  <entry>
    <title>springboot自动关闭、主动关闭</title>
    <link href="https://blog.zollty.com/b/archive/spring-boot-auto-stop.html"/>
    <updated>2018-06-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/spring-boot-auto-stop</id>
    <content type="html">main保持：https://blog.csdn.net/xxj_jing/article/details/69525032Springboot关闭https://hacpai.com/article/1488335661664 EmbeddedWebApplicationContext context = (EmbeddedWebApplicationContext)BeanTool.getAppContext();context.getEmbeddedServletContainer().stop();private&amp;nbsp;void&amp;nbsp;handleExitCode(Con...</content>
  </entry>
  
  <entry>
    <title>研发组织体系和结构设计</title>
    <link href="https://blog.zollty.com/b/archive/rd-organization-system-and-structure-design.html"/>
    <updated>2018-06-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/rd-organization-system-and-structure-design</id>
    <content type="html">
本文是《IT研发中心管理思路、策略和制度》专题的一部分。本文针对于中小公司设计，研发人数在50~1千人。建议提前阅读：《岗位、职位、职务、职级》《研发中心各个岗位的设计和配合》《研发序列岗位级别设计》前言：总体思路&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;打破传统架构那样的一个个封闭的部门和团队，让他们以多元的形式更好地配合，避免冗余和不一致给中后期带来的不利影响。特别是基础能力和技术，非常有必要形成统一的力量。当然，其他的，比如说业务，当业务越来越多的时候，也趋向于凝聚、沉淀成基础的共享能力。&amp;nbsp; &amp;nbsp; 举几个例子：一个叫做Supercell的游戏公司，共20...</content>
  </entry>
  
  <entry>
    <title>研发序列岗位级别设计</title>
    <link href="https://blog.zollty.com/b/archive/post-rank-design-of-rd-sequence.html"/>
    <updated>2018-06-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/post-rank-design-of-rd-sequence</id>
    <content type="html">
本文是《IT研发中心管理思路、策略和制度》专题的一部分。建议提前阅读：《岗位、职位、职务、职级》《研发中心各个岗位的设计和配合》1 设计思路&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;参考业界主流做法，比如以腾讯、阿里的标准，这样做认可度和可理解性会比较好。另外，为了让岗位级别看起来更加高大上，让职员更满意，适当把各个级别拔高一点。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先，将职位和职级分开，分成管理岗位 和 非管理岗位。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;管理岗位的层级单独设置，以[M+数字]表示管理岗位级别，例如M1、M2、M5，最基层的管理岗位为M1，...</content>
  </entry>
  
  <entry>
    <title>打造一个类似于lodash的现代前端工具库</title>
    <link href="https://blog.zollty.com/b/archive/create-a-front-end-tool-library.html"/>
    <updated>2018-06-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/create-a-front-end-tool-library</id>
    <content type="html">
一、分析借鉴目前最主流的前端工具库我分析了github上多个前端工具库的设计，以lodash为例说明：lodash的工程，有master、npm、npm-package、amd分支，以及 多种类型的tag：4.17.10（umd）4.17.10-npm4.17.10-es4.17.10-amd这 4个分支 + 4个tag 的代码甚至工程结构，都不太一样。我目前还看不明白它这么多套代码，是分开维护的，还是只维护一套，其他都是自动生成的？因为所有8个分支的配置我都检查过了，并没有发现自动生成多份代码的相关配置。而且lodash工程里面并没有babel的配置，难道lodash各个版本的代码...</content>
  </entry>
  
  <entry>
    <title>别名（花名）管理制度</title>
    <link href="https://blog.zollty.com/b/archive/alias-name-management-system.html"/>
    <updated>2018-05-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/alias-name-management-system</id>
    <content type="html">
背景&amp;gt;&amp;gt; 背景摘录自《关于公司建设的一些思考》。如果不是非常正式的场合，对于一般的中、低层管理人员（高管除外），尽量避免叫“x总”、“老大”、“老总”、“老板”、“x经理”、“x主任”。 也不要想其他套路，比如 “x师傅”、“x工”、“x哥”、“老x”、“小x”，或者私底下取外号，这样的话会很乱。在一般的工作场合，除了高管（CXO级别，总经理、总裁、VP级别），其他人不需要特殊称呼，直接说名字就行了，不用考虑职位、年龄。我发现一个很有趣的事情，在某公司，大家习惯称领导和前辈叫“X哥”、“X姐”，你去公司走一圈就会发现，大家都在叫 “X哥”、“X姐”，实际上这个 哥、姐，都...</content>
  </entry>
  
  <entry>
    <title>关于“专项组”-产品的急速研发模式探讨</title>
    <link href="https://blog.zollty.com/b/archive/about-special-group-and-rapid-development.html"/>
    <updated>2018-05-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-special-group-and-rapid-development</id>
    <content type="html">名词解释：所谓“专项组、急速研发”，就是特别重点 且 时间 又很紧的项目。&amp;lt;专项产品-急速研发模式&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;适用前提：这个项目很重要，很紧急，且公司不惜增加成本去做，这三个条件缺一不可。在这种情况下，特别讲究效率。&amp;nbsp; &amp;nbsp; 首先，消除沟通障碍，成立“专项组”，一切重要的参与人员，都要集中在一起，现场办公，且工作时间，根据每个人的工作情况灵活调整，错开时间进行休息，不再是每人都是早九晚五、周末双休。有条件的，最好是在公司附近，给大家安排酒店住宿，免去上下班的奔波。由于大家工作忙，工作时间又不一样，专项组还需要安排1~3人...</content>
  </entry>
  
  <entry>
    <title>Docker redis cluster集群的搭建</title>
    <link href="https://blog.zollty.com/b/archive/build-redis-cluster-under-docker.html"/>
    <updated>2018-05-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/build-redis-cluster-under-docker</id>
    <content type="html">
首先选择redis版本，目前最新是5.0，5.0版本集群的创建工具是c语言写的，直接用redis-cli命令，不依赖于ruby，如果是4.0版本，创建集群需要用到ruby脚本：redis-trib.rb一、首先获取redis docker官方镜像$ docker pull redis:5.0或者&amp;nbsp;$ docker pull redis:4.0（大概25Mb）4.0版本还需要获取 ruby 镜像备用$ docker pull ruby（大概200Mb）二、准备配置文件1、创建redis配置文件（redis-cluster.tmpl）&amp;nbsp; &amp;nbsp; 我在路径/hom...</content>
  </entry>
  
  <entry>
    <title>技术类简历编写指南</title>
    <link href="https://blog.zollty.com/b/archive/guidelines-for-the-technical-resumes.html"/>
    <updated>2018-05-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/guidelines-for-the-technical-resumes</id>
    <content type="html">
纯手打，本人多年面试官经验的倾情总结、无私分享。一、重要指导思想1、简历三要素Feature：是什么（特征、要点）Advantage：比别人好在哪些地方（优势）Benefit：如果雇佣你，招聘方会得到什么好处（匹配度）把这几点清晰的写在简历上就行了，切忌引入其他不相关的内容。特别提醒一点，简历要投其所好，匹配应聘的岗位要求。另外要节省篇幅、突出重点，不要长篇大论。校招简历建议一般在1~2页，最多3页，因为校招简历收太多了（几十、上百封），而且内容重复，根本没兴趣多看。但是社招简历，还是要丰富全面一些，一页纸肯定是不够的。根据我多年的面试官经验，供参考：社招简历的页数，2页显得轻薄、没...</content>
  </entry>
  
  <entry>
    <title>基础框架的开发、推广及维护经验</title>
    <link href="https://blog.zollty.com/b/archive/experience-of-basic-development-framework-maintenance.html"/>
    <updated>2018-05-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/experience-of-basic-development-framework-maintenance</id>
    <content type="html">一、基础框架——开发相关经验和解决方案1、定原则，公司内的开源框架，需要遵循下列设计原则：开源框架要制定版本发布计划，每个版本要有详细的更新内容和升级手册等，对老版本的兼容性要经过严格的测试和验证，每次版本要建分支，发布时要打tag，修改的代码，都要按修改内容提commit注释，如果是bug修复，要给出bug的出处和描述，每次发布新版本，要列出这个版本内所有的commit内容、方便使用者查阅。尽量保证向前兼容，如果有不兼容处，一定要特别说明，包括原因和升级方法。尽量保证平滑升级，旧版本的用户，能以最简单的方式完成升级（比较改个版本号就完成升级）。每次发布，都要通知到各个使用方；如果是重要...</content>
  </entry>
  
  <entry>
    <title>Mybatis原理与实践</title>
    <link href="https://blog.zollty.com/b/archive/mybatis-principle-and-practice.html"/>
    <updated>2018-05-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/mybatis-principle-and-practice</id>
    <content type="html">强烈推荐必读文章深入了解MyBatis参数深入了解MyBatis返回值MyBatis-Spring配置简单了解MybatisGeneator详解MyBatis Geneator中文文档MyBatis博客专题MybatisGeneator详解http://git.oschina.net/free/Mybatis_Utils/tree/master/MybatisGeneator/MybatisGeneator.mdMyBatis官方内容MyBatis官方源码(最新正式版本3.4.0)MyBatis官方文档MyBatis官方文档包含中文文档，建议有能力的看英文文档，中文文档虽然看着版本号是最...</content>
  </entry>
  
  <entry>
    <title>研发管理思路和策略（一些经验和思考）</title>
    <link href="https://blog.zollty.com/b/archive/some-experience-and-thinking-of-rd-management-ideas-and-strategies.html"/>
    <updated>2018-05-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/some-experience-and-thinking-of-rd-management-ideas-and-strategies</id>
    <content type="html">
本文是《IT研发中心管理思路、策略和制度》专题的一部分。不能被体系约束，但是又不能没有体系跨组、跨部门协作：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;比如，要做一件重要事情，但是关系到多个部门的人，怎样 既能有效的把事情做完，又能把对他人正常工作的影响降到最低。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我认为，绩效不能局限于本职工作，响应跨组织的协作应该是高优先级的事情。临时事务或新想法的落地：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;比如，临时遇到一个重要需求或事情，或者想到一个很好的idea，到底要不要做？其实完全可以逃避或者敷衍，事不关己高高挂起嘛，即使不做，...</content>
  </entry>
  
  <entry>
    <title>校园招聘经验</title>
    <link href="https://blog.zollty.com/b/archive/experience-of-campus-recruitment.html"/>
    <updated>2018-05-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/experience-of-campus-recruitment</id>
    <content type="html">
校招经验总结首先是定位，此处招聘的定位和目的是什么？成立招聘筹备小组。整理出招聘的需求，有哪些岗位，每个岗位需要多少人？（设计对应届新生的培养方案，无方案 不校招！）调查市场，根据实际情况，确定招聘的各岗位的薪酬范围。设计招聘流程，包括提前宣传、预热、拜访，以及宣讲，笔试、面试，终面，offer发放，签三方，入职报道等。确定要去招聘的地区和学校，以及大概月份。确定招聘工作人员，主要是宣讲人，面试官，后勤等。准备校招用到的资料，包括笔试题，宣传海报、手册，宣讲PPT等。联系学校，确定招聘具体行程和时间，精确到某天某点，甚至某个酒店，某个教室。下面谈谈自己的经验首先，我觉得，弄清楚“招聘...</content>
  </entry>
  
  <entry>
    <title>IT技术人员的特点</title>
    <link href="https://blog.zollty.com/b/archive/characteristics-of-it-technicians.html"/>
    <updated>2018-04-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/characteristics-of-it-technicians</id>
    <content type="html">
1、价值观对生活的一般看法：追求简单，安定，可控制的生活，但对家庭生活的责任持消极态度草根本性，反对政治和专制希望得到平等和公正的对待相信一分耕耘，一分收获将技术视为立身之本，通过创造性、挑战性的工作体现自身价值希望得到物质、精神、地位上的满足，对技术名声的追求，甚至胜过于金钱将技术视为自身的资产，有时不愿意共享不喜欢理念的东西，认为不如技术来的实在2、性格多数不重视外表，尤其是头发，从头发可以辨认出60%的工程师研发类工程师，受工作性格的影响，凡事容易较真，有时会比较过分换工作：三十岁之前，换工作很随性，情绪化，不做太多发展的思考，不是很有计划，三十岁之后，比较追求稳定多半不喜欢文...</content>
  </entry>
  
  <entry>
    <title>Idea下运行找不到class、找不到jar包（provided test scope）</title>
    <link href="https://blog.zollty.com/b/archive/maven-class-not-found-under-ide-idea.html"/>
    <updated>2018-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-class-not-found-under-ide-idea</id>
    <content type="html">
首先 应弄懂Maven的各种Scope，参见《Maven的5种scope》一文。Eclipse和Idea两种IDE对于maven scope的运用不一样&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Eclipse它会把当前IDE下运行的代码，都当做test环境，所以当前IDE下直接运行程序，能够使用所有scope的jar包（包括test、system和provided）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;但是Idea下就不行，idea下只有compile和runtime两种scope的jar才能在main/src下直接使用（在test/src下使用不受限制）。&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>Java框架(Spring+Mybatis+Druid)多数据源方案</title>
    <link href="https://blog.zollty.com/b/archive/solution-of-spring-multiple-datasource.html"/>
    <updated>2018-04-07T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/solution-of-spring-multiple-datasource</id>
    <content type="html">可选方案1.基于Spring的AbstractRoutingDataSource并用AOP动态切换2.基于Mybatis多SqlSession实例分开扫描各自Mapper1、基于Spring的AbstractRoutingDataSource并用AOP动态切换优点：能灵活的控制多数据源，支持读写分离。缺点：1）AOP表达式需要自己配置，切换需要写对应的注解。2）开启事务时，需要注意AOP顺序（ 数据库事务的注解 要在 数据源切换的注解 之后）。3）数据源动态切换，会有一定性能开销。2、基于Mybatis多SqlSession实例分开扫描各自Mapper优点：使用简单，配置后就和单数据源使...</content>
  </entry>
  
  <entry>
    <title>Kubernetes开发环境一键安装教程</title>
    <link href="https://blog.zollty.com/b/archive/kubernetes-one-click-installation-tutorial-under-development-env.html"/>
    <updated>2018-03-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/kubernetes-one-click-installation-tutorial-under-development-env</id>
    <content type="html">
鉴于之前玩熟了Vagrant，就想到使用Vagrant这个神器来一键安装Kubernetes，不出所料，果然已经有高人封装好了Vagrant Kubernetes的安装文件（相关配置和脚本），就是这个项目：https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster，在这里，简单总结一下。Kubernetes 需要一个至少包含三个节点的分布式系统。IPHostnameComponets172.17.8.101node1kube-apiserver, kube-controller-manager, kube-sched...</content>
  </entry>
  
  <entry>
    <title>Redis开发使用规范（公开版）V1.0</title>
    <link href="https://blog.zollty.com/b/archive/redis-development-and-use-spec.html"/>
    <updated>2018-03-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/redis-development-and-use-spec</id>
    <content type="html">一、键值设计1、key名设计【基本原则】key中添加前缀，以示区分，防止key冲突；控制key的长度，减少无意义的内存浪费；key中不要包含特殊字符(空格、引号、换行符等)；【各项目key命名规范】1、&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;整体格式整体分为4级：${team}+${project}+${func}+${key}。含义如下表所示：等级说明必须第一级战队名($team)，由公司统一定义，参见后面的列表。是第二级项目名($project)，由项目组自己申请，并提交公司备案。是第三级功能名($func)是第四级具体业务关键字($key)是2、&amp;nbsp...</content>
  </entry>
  
  <entry>
    <title>开源APM之Skywalking和Pinpoint的实测对比</title>
    <link href="https://blog.zollty.com/b/archive/apm-comparison-of-skywalking-and-pinpiont.html"/>
    <updated>2018-03-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/apm-comparison-of-skywalking-and-pinpiont</id>
    <content type="html">一、Portal功能对象Skywalking（简称SW）有如下菜单和功能：Dashboard（仪表界面）监控实例的数量信息请求热力图（反映：请求数量和响应时间）应用平均告警数量应用吞吐量（cpm，每分钟调用次数）最慢的服务Top10Topology（拓扑界面）用户、应用、各种中间件的调用关系图应用之间的调用吞吐量(cpm)和平均响应时间(rt)应用的服务可用率（SLA）Application（应用界面）应用基本信息（ip、host等）应用调用关系图历史实例进程列表实例进程的平均吞吐量实例进程的平均响应时间实例进程的CPU、内存、JVM情况实例进程的请求量走势图应用的慢服务Top10Ser...</content>
  </entry>
  
  <entry>
    <title>使用 PowerShell 发起 HTTP REST请求</title>
    <link href="https://blog.zollty.com/b/archive/using-PowerShell-to-initiate-HTTP-REST-requests.html"/>
    <updated>2018-03-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/using-PowerShell-to-initiate-HTTP-REST-requests</id>
    <content type="html">1、方法一，使用PowerShell&amp;nbsp;自带的命令&amp;nbsp;Invoke-WebRequest例如：Invoke-WebRequest&amp;nbsp;http://localhost:8088/login&amp;nbsp;-Method&amp;nbsp;POST&amp;nbsp;-ContentType&amp;nbsp;&amp;quot;application/json&amp;quot;&amp;nbsp;-Body&amp;nbsp;&amp;#39;{&amp;quot;account&amp;quot;:&amp;quot;ElasticSearch&amp;quot;,&amp;quot;password&amp;quot;:&amp;quot;123456&amp;quot;}&amp;#39;详细手...</content>
  </entry>
  
  <entry>
    <title>Maven Archetype笔记</title>
    <link href="https://blog.zollty.com/b/archive/maven-archetype.html"/>
    <updated>2018-03-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-archetype</id>
    <content type="html">1、使用Archetype生成工程代码主要命令：mvn archetype:generate示例：mvn archetype:generate -DarchetypeCatalog=localarchetypeCatalog参数，用来指定maven-archetype-plugin读取archetype-catalog.xml文件的位置，位置有以下几种类型：internal——maven-archetype-plugin内置的local——本地的，位置为~/.m2/archetype-catalog.xmlremote——指向Maven远程仓库的Catalog远程仓库Catalog示例：...</content>
  </entry>
  
  <entry>
    <title>Spring tomcat下html url找不到</title>
    <link href="https://blog.zollty.com/b/archive/html-url-can-not-be-found-under-spring-tomcat.html"/>
    <updated>2018-03-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/html-url-can-not-be-found-under-spring-tomcat</id>
    <content type="html">为什么有Controller配置的：@RequestMapping(&amp;quot;/sys/aaa.html&amp;quot;)String hosdsdsdsfdme() {&amp;nbsp; &amp;nbsp; return &amp;quot;sys/main.html&amp;quot;;}但是这个地址找不到？http://localhost:8080/renren-security/sys/aaa.html补充现象：只有.html后缀会找不到。换成.png，.js，.css等都没有这个问题。解决方法：给web.xml的Spring Dispather Servlet配置去拦截*.html&amp;lt;servlet-m...</content>
  </entry>
  
  <entry>
    <title>FastDFS的一些缺点（强烈需要注意）</title>
    <link href="https://blog.zollty.com/b/archive/some-shortcomings-of-FastDFS.html"/>
    <updated>2018-02-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/some-shortcomings-of-FastDFS</id>
    <content type="html">数据安全性1、写一份即成功：从源storage写完文件至同步到组内其他storage的时间窗口内，一旦源storage出现故障，就可能导致用户数据丢失，而数据的丢失对存储系统来说通常是不可接受的。2、缺乏自动化恢复机制：当storage的某块磁盘故障时，只能换存磁盘，然后手动恢复数据；由于按机器备份，似乎也不可能有自动化恢复机制，除非有预先准备好的热备磁盘，缺乏自动化恢复机制会增加系统运维工作。3、数据恢复效率低：恢复数据时，只能从group内其他的storage读取，同时由于小文件的访问效率本身较低，按文件恢复的效率也会很低，低的恢复效率也就意味着数据处于不安全状态的时间更长。4、缺乏...</content>
  </entry>
  
  <entry>
    <title>FastDFS集群部署和使用</title>
    <link href="https://blog.zollty.com/b/archive/fastdfs-cluster-deployment-and-usage.html"/>
    <updated>2018-02-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/fastdfs-cluster-deployment-and-usage</id>
    <content type="html">Installation参考文档：https://github.com/happyfish100/fastdfs/wiki（官网 Wiki）https://www.cnblogs.com/cnmenglang/p/6731209.html http://blog.csdn.net/xyang81/article/details/52928230 集群服务器规划（示例）：跟踪服务器1【主机】（Tracker Server）：192.100.139.121跟踪服务器2【备机】（Tracker Server）：192.100.139.122存储服务器1（Storage Server）：192....</content>
  </entry>
  
  <entry>
    <title>Nginx安装部署和配置</title>
    <link href="https://blog.zollty.com/b/archive/the-installation-and-configuration-of-nginx.html"/>
    <updated>2018-02-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-installation-and-configuration-of-nginx</id>
    <content type="html">方法一（推荐）: 使用操作系统提供的安装工具（比如yum）自动安装：参见官方文档：http://nginx.org/en/linux_packages.html 注意，安装nginx的时候，会默认创建一个nginx用户，可以通过cat /etc/passwd查看用户信息。方法二：通过源码手工编译安装，如下文：本文以 centos/redhat为例。主要步骤：&amp;nbsp; 1. 安装准备&amp;nbsp; 2. 检查依赖并安装1、安装准备找一个安装位置，比如：/usr/local/nginx&amp;nbsp;位置Nginx的安装依赖于以下三个包：1 SSL功能需要openssl库，下载地址：http:...</content>
  </entry>
  
  <entry>
    <title>linux下如何查看某软件是否已安装</title>
    <link href="https://blog.zollty.com/b/archive/see-if-a-software-has-been-installed-under-linux.html"/>
    <updated>2018-02-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/see-if-a-software-has-been-installed-under-linux</id>
    <content type="html">原文链接：http://blog.hexu.org/archives/1158.shtml因为linux安装软件的方式比较多，所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类：1、rpm包安装的，可以用rpm -qa看到，如果要查找某软件包是否安装，用 rpm -qa | grep “软件或者包的名字”。[root@zollty ~] rpm -qa | grep ruby2、以deb包安装的，可以用dpkg -l能看到。如果是查找指定软件包，用dpkg -l | grep “软件或者包的名字”；[root@zollty~] dpkg -l | grep ruby3、...</content>
  </entry>
  
  <entry>
    <title>数据库数据类型对比、数据类型大全</title>
    <link href="https://blog.zollty.com/b/archive/the-data-types-reference-of-each-database.html"/>
    <updated>2018-02-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-data-types-reference-of-each-database</id>
    <content type="html">
一、Oracle表结构移植到Mysql中需要的类型转换MYSQL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ORACLEBLOB（220） &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RAW(220)BLOB&amp;nbsp;（20） &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;RAW(20)BLOG(1024) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;...</content>
  </entry>
  
  <entry>
    <title>内存缓存之HashMap、EHCache、Guava Cache对比</title>
    <link href="https://blog.zollty.com/b/archive/memory-cache-comparison-of-hashmap-ehcache-guava-cache.html"/>
    <updated>2018-02-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/memory-cache-comparison-of-hashmap-ehcache-guava-cache</id>
    <content type="html">
缓存不应该被过度使用，在不同场景下，选用不同的方式缓存数据。简单场景，存入一些占用内存不多的数据，而且这些数据不会主动发生变化，服务器启动后就永久存储，修改和删除都是全手动执行。而且服务器重启时不需要再自动恢复到之前的状态。这种数据直接用Map等放到内存中即可。而一个标准Cache的主要特征有：过期时间容量规划(重要)清除策略(重要)命中率统计其中，常见的清除策略、淘汰机制（Eviction policy）有：FIFO（First In First Out）：先进先出算法，即先放入缓存的先被移除；LRU（Least Recently Used）：最久未使用算法，使用时间距离现在最久的...</content>
  </entry>
  
  <entry>
    <title>Spring ImportBeanDefinitionRegistrar的用法</title>
    <link href="https://blog.zollty.com/b/archive/about-Spring-ImportBeanDefinitionRegistrar.html"/>
    <updated>2018-02-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-Spring-ImportBeanDefinitionRegistrar</id>
    <content type="html">以org.mybatis.spring.annotation.MapperScan为例，来说明ImportBeanDefinitionRegistrar的用法这个注解源代码如下：@Target(ElementType.TYPE)
@Import(MapperScannerRegistrar.class)
public&amp;nbsp;@interface&amp;nbsp;MapperScan&amp;nbsp;{
&amp;nbsp;&amp;nbsp;String[]&amp;nbsp;value()&amp;nbsp;default&amp;nbsp;{};
&amp;nbsp;&amp;nbsp;String[]&amp;nbsp;basePackages...</content>
  </entry>
  
  <entry>
    <title>Vagrant安装和使用实践</title>
    <link href="https://blog.zollty.com/b/archive/vagrant-installation-and-use-tutorials.html"/>
    <updated>2018-02-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/vagrant-installation-and-use-tutorials</id>
    <content type="html">
下载安装 vagrant 和 virtualbox 安装没什么说的都选默认就行安装好这两个东西后 virtualbox 就不用管了因为它会随着 vagrant 而启动打开命令行 输入命令 vagrant -v 可以看到vgrant版本。添加vagrant box, 其实就是就是虚拟系统, vagrant box add {url}{url} 是vagrant box 的地址, vagrant box 没有国内源，用vpn到&amp;nbsp; &amp;nbsp; 官方镜像：https://vagrantcloud.com/boxes/search&amp;nbsp; &amp;nbsp; 或者第三方仓库：http...</content>
  </entry>
  
  <entry>
    <title>版本管理规范</title>
    <link href="https://blog.zollty.com/b/archive/version-management-specification.html"/>
    <updated>2018-02-01T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/version-management-specification</id>
    <content type="html">一、统一的版本号表示规则，遵循 Semantic Versioning(语义化版本)规范：（中文版&amp;nbsp;http://semver.org/lang/zh-CN/）二、并且将下面规则的作为补充：以一个完整的版本号为例：1.3.6-beta-11其中，&amp;quot;1.3.6&amp;quot;是标准版本号；&amp;quot;beta&amp;quot;是先行版本号，是可选的；11是编译信息，也是可选的。1、对于业务系统，以关键的业务标识，来作为“先行版本号”。比如：1.3.6-Sprint1075，1.3.6-UserManage，这个Sprint1075是此次开发功能的代号，是研发团队相关人员都熟悉易懂...</content>
  </entry>
  
  <entry>
    <title>ElasticSearch集群部署和使用</title>
    <link href="https://blog.zollty.com/b/archive/deploy-and-use-elasticsearch.html"/>
    <updated>2018-01-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/deploy-and-use-elasticsearch</id>
    <content type="html">
Installation参考文档：https://www.elastic.co/guide/index.htmlhttps://www.elastic.co/guide/en/elasticsearch/reference/current/index.htmlhttps://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html#_installationhttps://www.elastic.co/guide/en/elasticsearch/reference/6.1/zip-targz...</content>
  </entry>
  
  <entry>
    <title>密码安全解决方案</title>
    <link href="https://blog.zollty.com/b/archive/password-security-solution.html"/>
    <updated>2018-01-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/password-security-solution</id>
    <content type="html">一、密码存储安全不存储明文密码，也不存储密码的MD5（现在的技术可以破解MD5，不安全）。建议方案：采用加盐、不可逆的密码算法，并且使得同一个明文密码，每次加密结果都不一样。二、一般安全性措施1、防止用户无限次尝试密码，暴力登录方案举例：某个用户密码输错3次后，锁定该用户1分钟，如果输错10次，锁定2小时。2、日志脱敏禁止把用户的明文密码 打印到日志中，或者显示在错误信息中。3、智能防盗分析比如，记录用户每次的登录时间、次数、IP和地区等信息，智能分析这些信息，如果有异常及时采取措施。三、密码传输安全——使用HTTPS通过HTTPS传输的数据，可以认为是安全的。四、密码传输安全——不使用...</content>
  </entry>
  
  <entry>
    <title>大学学习、专业和人生发展</title>
    <link href="https://blog.zollty.com/b/archive/university-study-major-and-life-development.html"/>
    <updated>2018-01-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/university-study-major-and-life-development</id>
    <content type="html">之所以想谈这个主题，起因是我参加校园招聘，作为企业方研发岗的主要招聘负责人，接触和面试了许许多多的应届毕业生，本科、硕士、博士都有，各个专业，包括数学、统计、计算机、金融、经济、法律、管理、化学、电子、核工程、农业、建筑等等。跟他们的接触过程中，我有比较深的感触：关于专业，关于学业，关于大学生活，关于找工作。首先说一下专业：我感觉到有些专业，专业知识很重要、很实用，找工作时会用得到，比如计算机，建筑，法律，统计等。而另外一些专业，比较空泛，找工作时不会考察专业知识，专业更多的只是一个背景，只有 “有专业背景和没专业背景”的区别，而没有“专业学得好和学的差”的区别，比如金融、经济、管理，找...</content>
  </entry>
  
  <entry>
    <title>Spring的Property配置加载和使用过程及Environment的初始化过程</title>
    <link href="https://blog.zollty.com/b/archive/spring-property-configuration-loading-and-use-process-and-the-initialization-process-of-environment.html"/>
    <updated>2018-01-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/spring-property-configuration-loading-and-use-process-and-the-initialization-process-of-environment</id>
    <content type="html">本文解析Spring源码，回答以下几个问题：1、Spring的Property配置加载和使用过程？2、Spring内置的Environment的初始化和使用过程？3、常见Spring的Property相关类的关系？对于Spring加载Property配置，有如下几个类：（按层级展示）PropertiesLoaderSupport&amp;nbsp; PropertiesFactoryBean ！！！直接配置在xml里面，参见（1）&amp;nbsp; PropertyResourceConfigurer （implements BeanFactoryPostProcessor）&amp;nbsp; &amp;nbsp;...</content>
  </entry>
  
  <entry>
    <title>Chrome浏览器下调试和修改网页JavaScript</title>
    <link href="https://blog.zollty.com/b/archive/debugging-and-modifying-online-web-javascripts.html"/>
    <updated>2018-01-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/debugging-and-modifying-online-web-javascripts</id>
    <content type="html">1、js来监控复制粘贴、js监听复制粘贴事件参见：https://www.cnblogs.com/colima/p/8479310.html 2、移除页面上绑定的事件实际案例：有些网站（例如CSDN）复制过来的代码后面加上了一下描述信息（作者、版权等信息），每次需要删除，怎么能保证我们粘贴的代码不携带这些信息呢？解决思路：方法1、找到copy事件在哪里调用的，然后移除这个事件。方法2、找到copy事件在哪个元素节点调用的，跳出这个节点再复制就不会触发copy事件。扩展知识：js原生添加和移除事件的方法使用如下function&amp;nbsp;bodyScroll(event){
&amp;nbsp;...</content>
  </entry>
  
  <entry>
    <title>招聘及面试官经验</title>
    <link href="https://blog.zollty.com/b/archive/recruit-and-interviewer-experience.html"/>
    <updated>2017-11-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/recruit-and-interviewer-experience</id>
    <content type="html">
先说一点题外话，如何看待面试，个人的观点如下：观点1：&amp;nbsp; 人（或者说&amp;nbsp;员工），可以创造公司的未来，也可以毁掉或拖累一个公司。案例：&amp;nbsp;我曾经所在一个公司，面试做的非常糟糕，一面技术把控不严，二面领导又不过问具体技术，三面HR基本不控制，导致许多不合格的人进入公司，或者有很多能力与岗位不匹配的情况（不少高级员工能力还不如初级员工）。结果项目做得异常艰难。观点2：&amp;nbsp; 招人容易，辞退人难。招人是可以自己掌控的，但是要辞退人就没那么容易，特别是正规企业。如果招人不慎，其实这些人留下的价值是不大的，管理成本也很高。无论是试用期辞退，还是正式员工辞退，都是比...</content>
  </entry>
  
  <entry>
    <title>加密和签名技术分析</title>
    <link href="https://blog.zollty.com/b/archive/analysis-of-encryption-and-signature-technology.html"/>
    <updated>2017-11-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/analysis-of-encryption-and-signature-technology</id>
    <content type="html">
早在2013年，我就设计了 开放平台，那时参考了 新浪开放平台 \腾讯\百度\淘宝\支付宝\豆瓣 开放平台，但是有一个疑问，当时没弄清楚，就是 “为什么 支付宝用的RSA加密和签名，而新浪、豆瓣等用的AES加密、SHA1签名？”现在，我又深入研究了一晚上，终于想明白了，下面从头说起。一、关于加密算法只谈AES算法和RSA算法，其他的都不讨论，比如DES，已经过时了。问：AES和RSA算法的区别是什么，哪个安全性更高？&amp;nbsp; &amp;nbsp; AES属于 对称加密算法，加密和解密用的密钥是一有的。&amp;nbsp; &amp;nbsp; 而RSA属于 非对称加密算，加密和解密过程使用不同的密钥。公...</content>
  </entry>
  
  <entry>
    <title>MySQL 5.7及mysql 8.0安装和初始化</title>
    <link href="https://blog.zollty.com/b/archive/MySQL-5.7-Installation-and-initialization.html"/>
    <updated>2017-11-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/MySQL-5.7-Installation-and-initialization</id>
    <content type="html">
（默认MySQL 5.7/8.0通用，特殊部分会在文中说明）一、WINDOWS下安装详细步骤，参见这个文档：https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html文档中，涉及以下几个小结：2.3.5.1 Extracting the Install Archive——解压，然后配置环境变量（也可以不配置，配置只是为了方便执行命令）2.3.5.2 Creating an Option File——创建my.ini配置文件，可以放到安装目录下，也可以放到C:\WINDOWS或者C:\，内容如下：[mysql...</content>
  </entry>
  
  <entry>
    <title>开源分布式配置中心选型</title>
    <link href="https://blog.zollty.com/b/archive/config-center-selection.html"/>
    <updated>2017-11-05T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/config-center-selection</id>
    <content type="html">热门的开源分布式配置中心对比如下：对比项目Diamond（阿里2011年）Disconf（百度个人2015）Apollo（携程2016）配置存储存储在mysql上存储在mysql上mysql推拉模型拉模型，每隔15s拉一次全量数据基于Zookeeper的推模型，实时推送基于http长连接，实时推送配置读写支持实例对配置读写。支持某台实例写配置数据，并广播到其它实例上只支持实例对配置读。通过在disconf-web上更新配置到达到广播写到所有应用实例同disconf容灾多级容灾模式，配置数据会dump在本地，避免中心服务挂机时无法使用&amp;nbsp;&amp;nbsp;多级容灾模式，优先读取本地配置文...</content>
  </entry>
  
  <entry>
    <title>VPN权限问题（ping不通，Maven连接超时）</title>
    <link href="https://blog.zollty.com/b/archive/vpn-ping-problem.html"/>
    <updated>2017-10-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/vpn-ping-problem</id>
    <content type="html">用了VPN上网，&amp;nbsp;Maven报错如下：Connection to http://10.2.10.22:8081 refused: Connection timed out: connect最终查到原因是由于，VPN做了权限限制，只允许HTTP协议，导致ping不通，Maven也连接超时。将VPN权限放开，设置为&amp;nbsp;允许 HTTP、ICMP、UDP等协议就行了。ping不通，可能是因为 ICMP协议被限制了。ICMP是（Internet Control Message Protocol）Internet控制报文协议。它是TCP/IP协议族的一个子协议，用于在IP主机、路由...</content>
  </entry>
  
  <entry>
    <title>项目日志记录规范和标准</title>
    <link href="https://blog.zollty.com/b/archive/log-record-spec.html"/>
    <updated>2017-10-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/log-record-spec</id>
    <content type="html">《项目日志记录规范和标准》（第二版2017年10月）&amp;nbsp; &amp;nbsp;第一版（2013年3月）参见这里。一、说明日志分类如下：&amp;nbsp; &amp;nbsp; 1. 面向问题排查的日志&amp;nbsp; &amp;nbsp; 2. 面向提醒或告警的日志&amp;nbsp; &amp;nbsp; 3. 面向调试和测试的日志&amp;nbsp; &amp;nbsp; 4. 面向功能的 日志（准确的说，这是数据文件，不是日志）&amp;nbsp; &amp;nbsp; 5. 面向人阅读的日志&amp;nbsp; &amp;nbsp; 6. 面向机器解析的日志本规范&amp;nbsp;v1.0，主要针对于上面的1、2、3、5点。对于第2点的告警信息，仅记录日志是不够的，建议配合...</content>
  </entry>
  
  <entry>
    <title>Java HTTPS 和 证书</title>
    <link href="https://blog.zollty.com/b/archive/java-https-and-certificates.html"/>
    <updated>2017-10-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-https-and-certificates</id>
    <content type="html">说起 HTTP 的那些事，则不得不提 HTTPS ，而说起 HTTPS ，则不得不提数字证书。这篇博客将从 Java 的角度，学习 HTTPS 和数字证书技术，并分享爬虫开发的过程中针对爬取 HTTPS 站点时可能遇到的一些问题。在前面的几篇博客里，其实已经略微提到过 HTTPS 了，譬如使用&amp;nbsp;HttpsURLConnection&amp;nbsp;类发送 HTTPS 请求，在使用代理时 HTTP 和 HTTPS 的一些差异等等。关于 HTTPS 的概念就不废话了，下面直接进入正题。一、访问 HTTPS 站点在前面的第一篇博客《模拟 HTTP 请求》里，介绍了两种方法来模拟发送 HTT...</content>
  </entry>
  
  <entry>
    <title>我的Dockerfile构建笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-docker-build-note.html"/>
    <updated>2017-10-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-docker-build-note</id>
    <content type="html">
一、构建Docker镜像# 构建容器docker build -t 镜像名称 .
# 后面的. 指的是当前文件夹 (其实是Dockerfile存放的文件夹)
docker build --rm=true -t loen/lamp .–rm 选项是告诉Docker，在构建完成后删除临时的Container，Dockerfile的某些指令（比如RUN、ADD、COPY）会创建临时的Container，这些临时生成的Container可以当做下次或者其他构建的缓存层，如果你确定不需要这些缓存，可以加上这个参数。# 查看历史docker history 镜像ID# 格式化显示docker...</content>
  </entry>
  
  <entry>
    <title>数据库开发规范-通用版</title>
    <link href="https://blog.zollty.com/b/archive/database-development-spec.html"/>
    <updated>2017-10-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/database-development-spec</id>
    <content type="html">尽量不使用数据库自带的函数，把逻辑实现在应用程序里。不建议使用整表count。WHERE条件中参数与参数值使用的类型应当匹配，避免MySQL进行隐式类型转化；建议在SELECT语句中只获取实际需要的字段；SELECT、INSERT语句应显式的指明字段名称，不使用SELECT *，不使用INSERT INTO table()；执行模糊查询时，%只能出现在关键字的尾部，例如LIKE ‘jun%’，特殊情况需要单独说明；不建议在WHERE条件中使用非等值条件（&amp;lt;&amp;gt;），建议改造为in或not exists；执行批量INSERT插入，建议使用batch提交；避免单条大SQL，应在写法等...</content>
  </entry>
  
  <entry>
    <title>Spring中Bean初始化逻辑</title>
    <link href="https://blog.zollty.com/b/archive/about-the-spring-bean-initialization.html"/>
    <updated>2017-10-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-the-spring-bean-initialization</id>
    <content type="html">可参考文章：Spring Bean 生命周期Spring容器-Bean的生命周期&amp;nbsp;Spring开闭原则的表现-BeanPostProcessor扩展点-1一次调试打印出来的堆栈如下：PropertyPlaceholderConfigurer.afterPropertiesSet() line: 42	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invokeInitMethods(String, Object, RootBeanDefinition) line: 1687	DefaultListab...</content>
  </entry>
  
  <entry>
    <title>项目多环境配置管理方案</title>
    <link href="https://blog.zollty.com/b/archive/configuration-specification.html"/>
    <updated>2017-10-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/configuration-specification</id>
    <content type="html">针对常见应用场景，可以分为以下几个方面来考虑注意：本文只针对没有接入统一配置中心、配置平台的情况一、Java服务器端项目1、对于项目的框架或者组件，如果支持编程方式配置，则编程根据不同环境读取不同配置，例如Spring框架、Logback日志库都支持；&amp;nbsp; &amp;nbsp; 1)&amp;nbsp; 如果使用Spring Boot，直接采用官方推荐的配置切换方式：设置spring.profiles.active，可以是jvm变量、main启动参数、环境变量等（建议使用jvm变量）；&amp;nbsp; &amp;nbsp; 2)&amp;nbsp; 如果使用Spring框架（但是非Spring Boot），环境相关...</content>
  </entry>
  
  <entry>
    <title>Log4j2配置及与Logback对比</title>
    <link href="https://blog.zollty.com/b/archive/the-best-practice-of-log4j2.html"/>
    <updated>2017-10-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-best-practice-of-log4j2</id>
    <content type="html">
Log4j2 使用和配置一、Maven配置1、与SpringBoot集成&amp;lt;!--&amp;nbsp;====================log&amp;nbsp;related&amp;nbsp;--&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;lt;dependency&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;exclude掉spring-boot的默认log配置&amp;nbsp;--&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;...</content>
  </entry>
  
  <entry>
    <title>REST API安全认证研究</title>
    <link href="https://blog.zollty.com/b/archive/research-of-restful-api-security-authentication.html"/>
    <updated>2017-09-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/research-of-restful-api-security-authentication</id>
    <content type="html">一、概述&amp;nbsp; &amp;nbsp; 对外网暴露的RESTful API，由于是无状态的，如果不做认证，那就相当于裸奔的，任何人都可以调用，随意调用，这样是极不安全的。下面就RESTful API的安全性方案进行了一些研究。&amp;nbsp; （但是首先建议，核心系统的API不对外网暴露，只允许内网调用，而且不建议做成HTTP RESTful形式。如果非要使用RESTful API对外网暴露接口，那么请看下面）。RESTful API的安全性，包括了如下三个方面：&amp;nbsp;a) 对客户端做身份认证&amp;nbsp;b)&amp;nbsp;各种安全防护措施&amp;nbsp;c) 身份认证之后的授权&amp;nbsp;1、对...</content>
  </entry>
  
  <entry>
    <title>JWT技术——基于token的鉴权机制</title>
    <link href="https://blog.zollty.com/b/archive/jwt-technology-a-token-auth-mechanism.html"/>
    <updated>2017-09-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jwt-technology-a-token-auth-mechanism</id>
    <content type="html">本文是《REST API安全认证研究》的一部分。JWT技术（基于token的鉴权机制）流程上是这样的：用户使用用户名密码来请求服务器服务器进行验证用户的信息服务器通过验证后生成一个token发送给用户客户端存储token，并在每次请求时附送上这个token值服务端验证token值，并返回数据这个token必须要在每次请求时传递给服务端，它应该保存在请求头里， 另外，服务端要支持CORS(跨来源资源共享)策略，一般我们在服务端这么做就可以了Access-Control-Allow-Origin: *&amp;nbsp; &amp;nbsp; JWT和Session技术的根本区别在于，Session是把访问...</content>
  </entry>
  
  <entry>
    <title>数据库设计规范-通用版</title>
    <link href="https://blog.zollty.com/b/archive/database-design-spec.html"/>
    <updated>2017-09-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/database-design-spec</id>
    <content type="html">
导读：本文按 “命名规范” “表设计” “字段设计” “索引设计” “其它”&amp;nbsp; 五个部分展开。1 命名规范1.1 总命名规范1、不得使用数据库保留关键字，以及php/java等常用语言的保留关键字，或者可能成为关键字的单词作为完整命名。（对于一些疑似关键字的单词，可以在后面加一个下划线来避免，例如“key_”）。【附：MySQL保留关键字列表：https://dev.mysql.com/doc/refman/5.7/en/keywords.html】&amp;nbsp; &amp;nbsp; 正例：id，ip，admin，config，level，key_，let_，desc_，strin...</content>
  </entry>
  
  <entry>
    <title>RocketMQ安装和用法</title>
    <link href="https://blog.zollty.com/b/archive/rocketmq-usage.html"/>
    <updated>2017-09-25T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/rocketmq-usage</id>
    <content type="html">RocketMQ安装手册详细步骤：参考资料：https://github.com/alibaba/RocketMQ/wiki/Quick-Start步骤一：&amp;nbsp;安装准备1）先下载RocketMQ源码，在Linux下安装Maven然后用Maven编译源代码：cd RocketMQbash install.sh2）在安装之前，可以调用RocketMQ官方提供的脚本对系统进行优化：创建 admin&amp;nbsp;用户，后面会用admin用户来部署。创建用户：adduser&amp;nbsp;admin设置密码：echo admin:admin | chpasswd以root身份执行&amp;nbsp;sh...</content>
  </entry>
  
  <entry>
    <title>Dockerfile最佳实践【原创、很多实践经验】</title>
    <link href="https://blog.zollty.com/b/archive/dockerfile-best-practices.html"/>
    <updated>2017-09-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/dockerfile-best-practices</id>
    <content type="html">
首先，参见官方文档：dockerfile_best-practices有如下几点说明：红色标注的是重点Create ephemeral containers（构建无状态的容器）Understand build context（理解上下文，不引入多余文件）Pipe Dockerfile through stdin（无需上下文的情况，通过stdin构建）Exclude with .dockerignore（排除context中文件，参见&amp;nbsp;.dockerignore文件）Use multi-stage builds（多阶段构建，并合理利用缓存：排序原则-&amp;gt;最基础的RUN放在...</content>
  </entry>
  
  <entry>
    <title>NodeJS下的包管理npm的安装、更新和发布</title>
    <link href="https://blog.zollty.com/b/archive/about-npm-install-update-and-publish.html"/>
    <updated>2017-08-15T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-npm-install-update-and-publish</id>
    <content type="html">npm官方教程很详细，看一遍就懂了：https://docs.npmjs.com/getting-started/what-is-npmpackage.json属性的详细说明：https://docs.npmjs.com/files/package.json临时使用淘宝镜像：npm xxxxxxx --registry=https://registry.npm.taobao.orgnpm 关于 --save-dev 和 --save 的区别--save 会把依赖包 添加到 package.json 文件 dependencies 键下；--save-dev 则添加到 package.js...</content>
  </entry>
  
  <entry>
    <title>Maven的5种scope（加上optional 6种）</title>
    <link href="https://blog.zollty.com/b/archive/maven-scope-runtime-provided-optional.html"/>
    <updated>2017-08-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-scope-runtime-provided-optional</id>
    <content type="html">1. Maven Scope&amp;nbsp;provided 和 optional 的区别它们的传递性是一样的，都不会传递。唯一区别在于，例如 一个 war项目，provided的jar 不会被打进war包，而 optional 的jar 会打进war包。从概念上、本质上来说：provided的包是确实必须要的（如果第三方用到它，则需要第三方提供，如果没有，就会出错）而optional的本意是，这个包是可选的（无论有没有，都不会出错）2. Maven的5种scope对于3种class有否有效&amp;nbsp; &amp;nbsp;scope&amp;nbsp; &amp;nbsp; \&amp;nbsp; &amp;nbsp;class...</content>
  </entry>
  
  <entry>
    <title>tomcat和tomcat-embed的区别比较</title>
    <link href="https://blog.zollty.com/b/archive/the-difference-between-tomcat-and-tomcat-embed.html"/>
    <updated>2017-07-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-difference-between-tomcat-and-tomcat-embed</id>
    <content type="html">1、tomcat和embedded tomcat都是 Apache Tomcat官方发布的，从官网上看，从Tomcat 7开始， tomcat和embedded tomcat版本是同步发布的。如下所示，7.0.78版本：Core:zip&amp;nbsp;(pgp,&amp;nbsp;md5,&amp;nbsp;sha1)tar.gz&amp;nbsp;(pgp,&amp;nbsp;md5,&amp;nbsp;sha1)32-bit Windows zip&amp;nbsp;(pgp,&amp;nbsp;md5,&amp;nbsp;sha1)64-bit Windows zip&amp;nbsp;(pgp,&amp;nbsp;md5,&amp;nbsp;sha1)32-bit/64...</content>
  </entry>
  
  <entry>
    <title>各种Java应用服务器对比</title>
    <link href="https://blog.zollty.com/b/archive/the-comparison-of-Java-ee-based-application-server.html"/>
    <updated>2017-07-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-comparison-of-Java-ee-based-application-server</id>
    <content type="html">
官方介绍：Apache TomcatApache Tomcat is an open source software implementation of the&amp;nbsp;Java&amp;nbsp;Servlet and JavaServer Pages technologies and &amp;nbsp;developed by the Apache Software Foundation (ASF).JBoss Enterprise Application PlatformThe JBoss Enterprise Application Platform which is also know...</content>
  </entry>
  
  <entry>
    <title>Spring AOP AspectJ 切面表达式高级用法</title>
    <link href="https://blog.zollty.com/b/archive/the-usage-of-spring-aop-aspect-expression.html"/>
    <updated>2017-06-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-usage-of-spring-aop-aspect-expression</id>
    <content type="html">
一、Spring AOP 配置首先，明白一点，Spring的AOP代理，分为JDK动态代理和Cglib动态代理，这两种代理的实现方式不一样，他们针对同一Aspect的配置效果也可能不一样。JDK的动态代理，只能代理接口，无法代理非接口的方法。Cglib动态代理，采用的是继承代理对象的方法，所以可以代理非private的所有方法。Spring和AspectJ的关系：AspectJ是Eclipse基金会的一个动态代理框架（官方网站为：http://www.eclipse.org/aspectj/），它发明了一种表达式，按照这种表达式可以很方便的配置AOP的切入点。Spring选择模仿和遵...</content>
  </entry>
  
  <entry>
    <title>Spring Bean配置大全</title>
    <link href="https://blog.zollty.com/b/archive/all-the-config-way-of-spring-bean.html"/>
    <updated>2017-05-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/all-the-config-way-of-spring-bean</id>
    <content type="html">案例一：组合配置（1）枚举类型的属性（2）使用构造函数赋值（3）property结点下面用bean作为value&amp;lt;bean id=&amp;quot;jacksonMapper&amp;quot; class=&amp;quot;org...Jackson2ObjectMapperFactoryBean&amp;quot;&amp;gt;&amp;nbsp; &amp;lt;property name=&amp;quot;objectMapper&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- bean标签嵌套在property标签内部 --&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;bean class=&amp;quot;com.fa...</content>
  </entry>
  
  <entry>
    <title>有赞统一日志平台初探</title>
    <link href="https://blog.zollty.com/b/archive/you-zan-tong-ri-zhi-ping-tai.html"/>
    <updated>2017-03-31T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/you-zan-tong-ri-zhi-ping-tai</id>
    <content type="html">一、引言自有赞成立以来，发展迅猛，业务增长很快，业务系统数量大，每天都会产生大量的系统日志和业务日志(据统计，平均每秒产生日志1.1万条，峰值1.5万条，每天的日志量约9亿条，占用空间2.4T左右)。在信息化时代，日志的价值是无穷的。为了对系统进行有效的监控、维护、优化、改进，都离不开对日志的收集和分析，而这些日志散落在各个服务器上，无论对运维同学、还是业务开发同学，抑或是数据部门的同学而言，查阅或分析日志是一大痛点，实时收集分布在不同节点或机器上的日志，供离线或在线查阅及分析来提升工作效率的需求异常迫切，在此背景下，于是有赞统一日志平台就应运而生了。在互联网高速发展的今天，有那么多优秀...</content>
  </entry>
  
  <entry>
    <title>记一次中小公司的研发问题</title>
    <link href="https://blog.zollty.com/b/archive/company-rd-issues-sample.html"/>
    <updated>2017-03-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/company-rd-issues-sample</id>
    <content type="html">
一、一些不好的现状，及对应的改进方法1、前后端代码绑定在一起，很难维护，前端UI做得太差，后端也需要大的改善。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;前端代码乱，是架构和规范问题。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;前端UI做得太差、很掉档次，是因为不够重视和没有专业的人来设计和制作。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;改进方法：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1）前后端代码分离，一些人做专业的前端，提高前端UI质量，一些人专注于后端优化。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2）前期可以先重构，先从技术上把前端代码和后端代码...</content>
  </entry>
  
  <entry>
    <title>JVM性能调优</title>
    <link href="https://blog.zollty.com/b/archive/jvm-performance-optimization.html"/>
    <updated>2017-03-02T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jvm-performance-optimization</id>
    <content type="html">1、调优原则对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数，过多的GC和Full GC是会占用很多的系统资源（主要是CPU），影响系统的吞吐量。特别要关注Full GC，因为它会对整个堆进行整理，导致Full GC一般由于以下几种情况：旧生代空间不足调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段时间和不要创建过大的对象及数组避免直接在旧生代创建对象&amp;nbsp;Pemanet Generation空间不足增大Perm Gen空间，避免太多静态对象&amp;nbsp;统计得到的GC后晋升到旧生代的平均大小大于旧生代剩余空间控制好新生代和旧生代的比例&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>JVM内存管理和垃圾回收</title>
    <link href="https://blog.zollty.com/b/archive/jvm-memory-management-and-garbage-collection.html"/>
    <updated>2017-03-02T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jvm-memory-management-and-garbage-collection</id>
    <content type="html">
一、堆的内存结构和管理&amp;nbsp; &amp;nbsp; &amp;nbsp; Java堆是被所有线程共享的一块内存区域，在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例，几乎所有的对象实例都在这里分配内存（随着JIT编译器的发展与逃逸分析技术的逐渐成熟，栈上分配、标量替换优化技术使得并非所有对象实例都在堆上分配）。&amp;nbsp;如果从内存分配的角度看，线程共享的Java堆中可能划分出多个线程私有的分配缓冲区（Thread Local Allocation Buffer，TLAB）。1、TLAB分配&amp;nbsp; &amp;nbsp; &amp;nbsp; JVM在内存新生代Eden Space中开辟了一小块区...</content>
  </entry>
  
  <entry>
    <title>JVM基础及结构</title>
    <link href="https://blog.zollty.com/b/archive/jvm-structure.html"/>
    <updated>2017-02-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jvm-structure</id>
    <content type="html">
一、初识JVM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本章讲述JVM概念、发展历史等。1、虚拟机（Virtual Machine)概念&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JRE是由Java API和JVM组成的。JVM的主要作用是通过Class Loader来加载Java程序，并且按照Java API来执行加载的程序。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;虚拟机是通过软件的方式来模拟实现的机器（比如说计算机），它可以像物理机一样运行程序。设计虚拟机的初衷是让Java能够通过它来实现WORA(Write Once Run Anywhere 一次编译，到处运...</content>
  </entry>
  
  <entry>
    <title>Java代码编译执行过程</title>
    <link href="https://blog.zollty.com/b/archive/java-code-compilation-and-execution.html"/>
    <updated>2017-02-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-code-compilation-and-execution</id>
    <content type="html">
Java代码编译和执行的整个过程包含了以下三个重要的机制：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Java源码编译机制&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 类加载机制&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;类执行机制整个流程如下图：一、Java源码编译Java代码编译是由Java源码编译器（Java Compiler，javac）来完成，流程图如下所示：Java 源码编译由以下三个过程组成：&amp;nbsp; &amp;nbsp; 1. 分析和输入到符号表&amp;nbsp; &amp;nbsp; 2. 注解处理&amp;nbsp; &amp;nbs...</content>
  </entry>
  
  <entry>
    <title>JVM运行时数据区</title>
    <link href="https://blog.zollty.com/b/archive/about-JVM-Run-Time-Data-Areas.html"/>
    <updated>2017-02-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-JVM-Run-Time-Data-Areas</id>
    <content type="html">
一、JVM的Run-Time Data Areas（运行时数据区）包含哪些部分？运行时数据区是在JVM运行的时候操作所分配的内存区。运行时内存区可以划分为5个区域，如图：在上图的区域中，其中3个：PC Register，JVM stack 以及Native Method Statck都是按照线程创建的，另外三个：Heap，Method Area以及Runtime Constant Pool都是被所有线程公用的。根据Oracle Java SE8 官方文档：（The Java® SE 8 Edition of The Java Virtual Machine Specification...</content>
  </entry>
  
  <entry>
    <title>Session和Cookie原理</title>
    <link href="https://blog.zollty.com/b/archive/The-principle-of-Session-and-Cookie.html"/>
    <updated>2017-02-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/The-principle-of-Session-and-Cookie</id>
    <content type="html">&amp;nbsp;一、Session术语、通常意义上的概念&amp;nbsp;Session的英文含义为：会议，或者代表进行某活动、会议连续的一段时间（会期、学期）。&amp;nbsp;在计算机里面，通常是指某个连接或者操作的连续时间。Session的含义不仅仅局限于常见的HttpSession、浏览器会话，Session是一个广义的概念，HttpSession只是session的一种代表，比如对象的生命周期其实也可以看做是一个session，一个线程的完整运行也可以说是一个session周期。&amp;nbsp;二、HttpSession原理和基本作用&amp;nbsp;首先，HTTP协议本身是无状态的，每一次请求之间都是...</content>
  </entry>
  
  <entry>
    <title>关于Java多参数方法的设计</title>
    <link href="https://blog.zollty.com/b/archive/the-design-of-java-method-with-multi-parameter.html"/>
    <updated>2017-02-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-design-of-java-method-with-multi-parameter</id>
    <content type="html">先来看问题，&amp;nbsp;【问题】有些方法，内容都差不多，只是参数的个数或者类型不一样。此时，到底是写多个方法呢，还是写一个方法涵盖所有功能（根据传入的标识去执行不同的步骤）？举例1：changeCode(String orgStr, String charSet);changeCode(String orgStr); // 默认charSet为null其实方法2，就是调用的方法1，但之所以再写一个方法2，是为了方便使用，charSet参数不是必须的，可以省略（如果省略，会用策略）。举例2：下面的6个方法，每个方法都有区别，要么参数个数不同，要么参数类型不同。比如方法3和方法4，允许传入S...</content>
  </entry>
  
  <entry>
    <title>mybatis最佳实践</title>
    <link href="https://blog.zollty.com/b/archive/the-best-practice-of-mybatis.html"/>
    <updated>2017-02-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-best-practice-of-mybatis</id>
    <content type="html">
原则：1. sql和代码分离，sql易于维护和 检查评审。2. 高度的自动化和封装，减少开发工作量。从原则上讲：也不能像jdbc那样，SQL和代码混写，不方便检查和审核；不推荐在代码中以任何方式组装任意SQL，比如Mybatis的Example用法，其实不过是sql拼接的语法糖，和sql与代码混写没多少区别（不方便检查和审核），不推荐使用；同样，类似于hibernate那样的对象操作方式，其实也是sql拼接的语法糖，不建议使用；要避免像hibernate那样过度封装，形成很多新的语法（HSQL），最关键是无法控制SQL质量。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;总之，我们不...</content>
  </entry>
  
  <entry>
    <title>Kafka的Log存储解析</title>
    <link href="https://blog.zollty.com/b/archive/kafka-log-storing-analysis.html"/>
    <updated>2016-12-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/kafka-log-storing-analysis</id>
    <content type="html">转载自：http://blog.csdn.net/jewes/article/details/42970799作者：jewes引言Kafka中的Message是以topic为基本单位组织的，不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的)，每个partition存储一部分Message。借用官方的一张图，可以直观地看到topic和partition的关系。partition是以文件的形式存储在文件系统中，比如，创建了一个名为page_visits的topic，其有5个partitio...</content>
  </entry>
  
  <entry>
    <title>消息推送系统的设计</title>
    <link href="https://blog.zollty.com/b/archive/design-and-architecture-of-the-message-push-system.html"/>
    <updated>2016-12-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/design-and-architecture-of-the-message-push-system</id>
    <content type="html">一、消息推送系统设计需求1、高性价比，在有限的硬件资源下，尽可能的提高消息系统的性能和可用性。2、提高数据的一致性。二、分析消息推送，按数据量划分，包括两类：1）持续的大量数据（比如：持续的物联网GPS上报等）推送，单类数据量大于 10 kb 每秒 。2）低频率、数据量小的偶发事件、通知类的数据推送。消息重要性和实时性分级：（ “四象限” 划分）&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 不重要 &amp;nbsp; &amp;nbsp; &amp;nbsp; ...</content>
  </entry>
  
  <entry>
    <title>微服务架构的设计模式与使用到的基础框架</title>
    <link href="https://blog.zollty.com/b/archive/basis-framework-of-micro-service-and-the-architecture.html"/>
    <updated>2016-12-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/basis-framework-of-micro-service-and-the-architecture</id>
    <content type="html">转载自：http://www.infoq.com/cn/articles/basis-frameworkto-implement-micro-service/ 作者：杨波微服务架构的设计模式前不久，Java&amp;nbsp;Code Geeks发表了一篇文章，分析单体应用与微服务的优缺点。近日，该网站又发表了一篇文章，提供了六种微服务架构的设计模式。聚合器微服务设计模式这是一种最常用也最简单的设计模式，如下图所示：聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面，将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务，对检索到的数据增加业务逻辑后进一步发布成一个新...</content>
  </entry>
  
  <entry>
    <title>java中的sleep()和wait()的区别</title>
    <link href="https://blog.zollty.com/b/archive/java-sleep-wait.html"/>
    <updated>2016-12-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-sleep-wait</id>
    <content type="html">转载自：http://www.cnblogs.com/hongten/p/hongten_java_sleep_wait.html 作者：hongten对于sleep()方法，我们首先要知道该方法是属于Thread类中的。而wait()方法，则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间，让出cpu该其他线程，但是他的监控状态依然保持者，当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中，线程不会释放对象锁。而当调用wait()方法的时候，线程会放弃对象锁，进入等待此对象的等待锁定池，只有针对此对象调用notify()方法后本线程才进入对象...</content>
  </entry>
  
  <entry>
    <title>Spring ApplicationListener ContextRefreshedEvent 多次执行问题及源码分析</title>
    <link href="https://blog.zollty.com/b/archive/the-problems-Spring-ContextRefreshedEvent.html"/>
    <updated>2016-11-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-problems-Spring-ContextRefreshedEvent</id>
    <content type="html">我们可能会使用到如下方法，来在Spring初始化完成后，执行某些程序：@Component
public&amp;nbsp;class&amp;nbsp;SpringContextRefreshedListener&amp;nbsp;implements&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ApplicationListener&amp;lt;ContextRefreshedEvent&amp;gt;&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;...</content>
  </entry>
  
  <entry>
    <title>Spring配置加载ContextLoaderListener和DispatcherServlet的区别和关系</title>
    <link href="https://blog.zollty.com/b/archive/The-difference-and-relationship-between-ContextLoaderListener-and-DispatcherServlet.html"/>
    <updated>2016-11-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/The-difference-and-relationship-between-ContextLoaderListener-and-DispatcherServlet</id>
    <content type="html">在Spring应用的web.xml里面可以配置ContextLoaderListener和DispatcherServlet：&amp;lt;context-param&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;param-value&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classpath:spring-main.xml
&amp;nbsp;&amp;nbsp;&amp;lt;/param-value&amp;gt;
&amp;lt;/context-param&amp;gt...</content>
  </entry>
  
  <entry>
    <title>灰度升级方案</title>
    <link href="https://blog.zollty.com/b/archive/production-system-release-strategy.html"/>
    <updated>2016-11-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/production-system-release-strategy</id>
    <content type="html">首要目的：利用线上服务器、线上数据，做系统的测试（主要是功能测试）。其他目的：利用线上服务器、线上数据，做一个特殊用途的应用（只是客户端不一样，内部处理流程都和正式系统一样）。必要原则：1、灰度系统的主要程序流程和正式环境一样，否则灰度系统没有测试和验证的意义。2、从灰度环境，不用再次上线，能够快速地切换到正式环境。关键思路：1、把少部分数据引入灰度系统，数据的结果不影响正式系统。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;限定这一部分数据，只能由某些服务器处理。filter端：比如有5台服务器，其中2台为灰度用。这两台灰度filter只处理指定的部分数据，其他数据交给非灰度filt...</content>
  </entry>
  
  <entry>
    <title>代码分支管理规范</title>
    <link href="https://blog.zollty.com/b/archive/code-branch-management-specification.html"/>
    <updated>2016-11-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/code-branch-management-specification</id>
    <content type="html">代码分支管理规范：（主要基于GIT，但SVN也可借鉴）核心思想：控制代码提交权限，保证主分支和tag分支都是经过测试验证的，保证测试分支不被随意更改。另外支持对提交的代码进行审查。支持多分支并行开发，保证版本管理严谨、不混乱。从项目仓库A（称之为测试和发布仓库）中master拷贝一个分支出来，例如 branch_1.0.0这个仓库A，包括它的master和所有分支，只有项目负责人有写权限。从仓库A克隆出分支branch_1.0.0到仓库X（称之为开发仓库），然后在开发人员在仓库X中开发。开发和自测完成后，向A仓库发起Pull Request，请求代码审查和合并代码。项目负责人审查代码，代...</content>
  </entry>
  
  <entry>
    <title>高吞吐、高可用MQ对比分析</title>
    <link href="https://blog.zollty.com/b/archive/high-throughput-high-availability-MQ-comparative-analysis.html"/>
    <updated>2016-11-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/high-throughput-high-availability-MQ-comparative-analysis</id>
    <content type="html">基本对比信息ActiveMQRabbitMQRocketMQKafkaZeroMQ吞吐量比RabbitMQ低2.6w/s（消息做持久化）11.6w/s17.3w/s29w/s开发语言JavaErlangJavaScala/JavaC主要维护者ApacheMozilla/SpringAlibabaApacheiMatix，创始人已去世成熟度成熟成熟开源版本不够成熟比较成熟只有C、PHP等版本成熟文档和注释多多很少较少很少订阅形式点对点(p2p)、广播（发布-订阅）提供了4种：direct, topic ,Headers和fanout。fanout就是广播模式基于topic/messageT...</content>
  </entry>
  
  <entry>
    <title>Logback最佳实践和使用指导</title>
    <link href="https://blog.zollty.com/b/archive/logback-guide-and-best-practices.html"/>
    <updated>2016-10-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/logback-guide-and-best-practices</id>
    <content type="html">最佳实践最佳实践经验（6条）：1、根据开发环境、测试环境、生产环境等环境的不同，来配置不同的日志策略。2、做到在自己的代码中，合理选择日志输出的级别，不要输出大量无意义的调试日志3、将第三方代码中的不必要的日志过滤掉4、将日志分类输出，分类的原则是便于查看，或便于自动化分析、入库5、控制日志文件的保存时间和文件大小6、最好是能热加载配置，让日志配置的更改能及时生效，便于问题排查使用指导一、概述1、采用dev（开发环境）、test（测试环境）、pre&amp;nbsp;release（预发布、准生产环境）、production（生产环境）等不同的日志配置，根据系统变量、环境变量等自动识别。2、特殊...</content>
  </entry>
  
  <entry>
    <title>Kafka重复消费和丢失数据研究</title>
    <link href="https://blog.zollty.com/b/archive/about-kafka-repeated-consumption-and-lost-data.html"/>
    <updated>2016-09-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-kafka-repeated-consumption-and-lost-data</id>
    <content type="html">Kafka重复消费原因底层根本原因：已经消费了数据，但是offset没提交。原因1：强行kill线程，导致消费后的数据，offset没有提交。原因2：设置offset为自动提交，关闭kafka时，如果在close之前，调用&amp;nbsp;consumer.unsubscribe() 则有可能部分offset没提交，下次重启会重复消费。例如：	try {		consumer.unsubscribe();	} catch (Exception e) {	}	try {		consumer.close();	} catch (Exception e) {	}上面代码会导致部分offset没提交，下...</content>
  </entry>
  
  <entry>
    <title>java线程状态及sleep、wait、notify、notifyAll</title>
    <link href="https://blog.zollty.com/b/archive/java-thread-state-and-sleep-wait-notify-notifyAll.html"/>
    <updated>2016-08-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-thread-state-and-sleep-wait-notify-notifyAll</id>
    <content type="html">一、Java中线程的状态Thread.State枚举类，定义了5种状态：public&amp;nbsp;enum&amp;nbsp;State&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Thread&amp;nbsp;state&amp;nbsp;for&amp;nbsp;a&amp;nbsp;thread&amp;nbsp;which&amp;nbsp;has&amp;nbsp;not&amp;nbsp;yet&amp;nbsp;started.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NEW,

...</content>
  </entry>
  
  <entry>
    <title>kafka shutdown停止关闭很慢问题的解决方案</title>
    <link href="https://blog.zollty.com/b/archive/the-solutio-of-kafka-shutdown-is-very-slow.html"/>
    <updated>2016-07-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-solutio-of-kafka-shutdown-is-very-slow</id>
    <content type="html">kafka shutdown停止很慢问题在数据量大的时候，consumer一次抓取数据的数据很多，进入到业务处理的数据可能有很多，假设一次poll有1万条数据进入业务程序，而且业务程序是和poll绑定在一起线程同步执行的，假设平均每条数据，执行业务程序花费100ms，那么poll一次的数据，至少要执行 1w*0.1s = 1000s = 16.67分钟。所以，在数据量大的时候，停止一个线程（需要先等待业务程序处理完数据），可能要十几分钟。&amp;nbsp;shutdown问题解决方案1、改成异步处理数据，consumer取出来的数据，放到BlockQueue中，由异步线程去处理，当异步线程处理...</content>
  </entry>
  
  <entry>
    <title>Maven发布deploy jar到本地仓库/远程仓库/FTP等</title>
    <link href="https://blog.zollty.com/b/archive/maven-deploy-jar-to-local-or-remote-repo.html"/>
    <updated>2016-06-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-deploy-jar-to-local-or-remote-repo</id>
    <content type="html">一、无源码，直接以文件的形式发布jar包（deploy-file）情况一：前提，有项目的pom文件（如果没有pom文件，可以从jar包中提取出来），自动出pom文件读取groupId等信息（如果没有pom文件，可以看下面的情况二）我已经写成了标准脚本，并经常使用，分享出来：1、deploy-jar.bat@echo&amp;nbsp;off

echo&amp;nbsp;&amp;quot;===&amp;nbsp;start&amp;nbsp;to&amp;nbsp;deploy&amp;nbsp;jar...&amp;nbsp;===&amp;quot;

call&amp;nbsp;mvn&amp;nbsp;deploy:3.0.0-M1:deploy-fil...</content>
  </entry>
  
  <entry>
    <title>Logback的深度使用经验和最佳实践</title>
    <link href="https://blog.zollty.com/b/archive/the-depth-experience-and-best-practice-of-logback.html"/>
    <updated>2016-05-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-depth-experience-and-best-practice-of-logback</id>
    <content type="html">首先，日志的记录方案，在另一篇文章中单独说明：logback-guide-and-best-practices.html 在该文章中，说明了Logback的下面5个功能：1、使用logback的环境变量定义和读取功能；2、在logback启动之前，继承ch.qos.logback.core.status.OnConsoleStatusListener，初始化变量的值；3、使用logback的 if-then 条件语法；4、使用&amp;lt;property file=&amp;quot;xxx&amp;quot; /&amp;gt;和&amp;lt;property resource=&amp;quot;xxx&amp;quot; /&amp;gt...</content>
  </entry>
  
  <entry>
    <title>分布式高性能消息系统(Kafka MQ)的原理与实践</title>
    <link href="https://blog.zollty.com/b/archive/principles-and-practice-of-kafka.html"/>
    <updated>2016-04-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/principles-and-practice-of-kafka</id>
    <content type="html">一、关于Kafka的一些概念和理解Kafka是一个分布式的数据流平台，它基于独特日志文件形式，提供了高性能消息系统功能。也可以用于大数据流管道。Kafka维护了按目录划分的消息订阅源，称之为 Topic。称发布消息到Topic的工程为生产者。称订阅Topic和处理发布的消息的订阅源的工程为消费者。Kafka以一个或者多个服务器组成的集群的形式运行，每个服务器被称为broker。Kafka客户端和服务器端通过TCP协议连接，并提供了Java客户端，许多其他语言的客户端也有。对于每个Topic，Kafka集群维护了分区的日志文件（分区1、分区2、分区3），每个分区（partition）是顺序...</content>
  </entry>
  
  <entry>
    <title>岗位、职位、职务、职级</title>
    <link href="https://blog.zollty.com/b/archive/position-function-and-rank.html"/>
    <updated>2016-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/position-function-and-rank</id>
    <content type="html">
一、首先，先定义清楚 岗位和职位。职位：职位是指承担一系列工作职责的某一任职者所对应的组织位置，它是组织的基本构成单位。职位属于组织。任何时候，一个职位可能有一个、多个或没有任职人员。岗位：岗位是组织要求个体完成的一项或多项责任以及为此赋予个体的权力的总和。一个岗位则是指由一个人所从事的工作，而职位一般是将某些任务、职责和责任组为一体。职位是随组织结构定的，而岗位是随事定的，也就是我们常说的因事设岗。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;职位泛指一个阶层(类)，面更宽泛，而岗位则具体得多。职务与机构没有直接的关系(确切地说，一个职务可为多个部门所有），而岗位与机构有直接的关...</content>
  </entry>
  
  <entry>
    <title>分布式协调服务ZooKeeper的典型应用</title>
    <link href="https://blog.zollty.com/b/archive/the-typical-application-of-distributed-coordination-service-ZooKeeper.html"/>
    <updated>2016-03-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-typical-application-of-distributed-coordination-service-ZooKeeper</id>
    <content type="html">Zookeeper典型应用参考官方文档：http://zookeeper.apache.org/doc/current/recipes.htmlOut of the Box Applications: Name Service, Configuration, Group MembershipBarriersDouble BarriersQueuesPriority QueuesLocksShared LocksRecoverable Shared LocksTwo-phased CommitLeader ElectionBarriers（障碍）Distributed systems us...</content>
  </entry>
  
  <entry>
    <title>ZooKeeper和Curator相关经验总结</title>
    <link href="https://blog.zollty.com/b/archive/experience-summary-of-ZooKeeper-and-Curator.html"/>
    <updated>2016-03-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/experience-summary-of-ZooKeeper-and-Curator</id>
    <content type="html">一、关于ZooKeeper的watch用法，需要注意详细说明如下：ZooKeeper WatchesAll of the read operations in ZooKeeper -&amp;nbsp;getData(),&amp;nbsp;getChildren(), and&amp;nbsp;exists()&amp;nbsp;- have the option of setting a watch as a side effect. Here is ZooKeeper&amp;#39;s definition of a watch: a watch event is one-time trigger, sent to t...</content>
  </entry>
  
  <entry>
    <title>ZooKeeper简介、基础知识和主要配置</title>
    <link href="https://blog.zollty.com/b/archive/the-usage-of-zookeeper-and-cluster.html"/>
    <updated>2016-03-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-usage-of-zookeeper-and-cluster</id>
    <content type="html">一、Zookeeper的一些概念和理解1、数据模型如上图所示，ZooKeeper数据模型的结构与Unix文件系统很类似，整体上可以看作是一棵树，每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识，比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据)，这个特性非常有用，在后面的典型应用场景中会介绍到。另外，每个ZNode上还存储了其Acl信息，这里需要注意，虽说ZNode的树形结构跟Unix文件系统很类似，但是其Acl与Unix文件系统是完全不同的，每个...</content>
  </entry>
  
  <entry>
    <title>粘滞会话、会话保持</title>
    <link href="https://blog.zollty.com/b/archive/about-sticky-sessions.html"/>
    <updated>2016-03-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-sticky-sessions</id>
    <content type="html">粘滞会话、会话保持(Sticky Sessions)当我们使用反向代理做负载均衡时，用户对同一内容的多次请求，可能被转发到了不同的后端服务器，若有3台服务器进行集群，用户发出一请求被分配至服务器A，保存了一些信息在session中，该用户再次发送请求被分配到服务器B，要用之前保存的信息，若服务器A和B之间没有session粘滞，那么服务器B就拿不到之前的信息，这样会导致一些问题。让用户在一次会话周期内的所有请求始终转发到一台特定的后端服务器上，这种机制也称为粘滞会话（Sticky Sessions）,或者叫“会话保持”,要实现它的关键在于如何设计持续性调度算法。既然要让高度器可以识别用户...</content>
  </entry>
  
  <entry>
    <title>软件(汇编)破解 / 防破解方法</title>
    <link href="https://blog.zollty.com/b/archive/software-cracking-methods-and-prevent-cracking.html"/>
    <updated>2016-01-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/software-cracking-methods-and-prevent-cracking</id>
    <content type="html">一、汇编破解参考文章（主要针对Windows软件，包括PC游戏）怎么使用OD 怎么用OD破解 什么是OD利用x64_dbg破解一个最简单的64位小程序破解入门（一）-----常用寄存器利用OD进行软件破解需要用到的基础汇编知识破解入门（二）-----认识OllyDBG破解入门（三）-----脱壳的常用方法破解入门（四）-----实战&amp;quot;单步跟踪法&amp;quot;脱壳破解入门（五）-----实战&amp;quot;ESP定律法&amp;quot;脱壳破解入门（六）-----实战“内存镜像法”脱壳破解入门（七）-----牛刀小试之暴力破解破解入门（八）-----算法分析与注册机编写OD破解常用方法防止程...</content>
  </entry>
  
  <entry>
    <title>接口的作用和使用原则</title>
    <link href="https://blog.zollty.com/b/archive/the-function-and-use-principle-of-interface.html"/>
    <updated>2015-10-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-function-and-use-principle-of-interface</id>
    <content type="html">一、接口的作用：1、作为一个客观的规范，是一类事物所具有的属性的总结，相当于父类。根据接口，就知道一个实例所具有的方法，是一种声明。简而言之，接口的作用是“概括和声明”。如此可知，1）接口下面可能会有多种具体的实现。2）调用接口时，会非常方便。举例：我不知道某人叫什么 我只知道他属于人类 那么我一定知道他有吃饭的行为，我就可以扔给他一个骨头具体代码：IPeople zhang = new Zhangsan();zhang.Eat(&amp;quot;骨头&amp;quot;);2、接口的另外一个作用是构成“多态”。比如一个教师，他既是一个动物，有动物的特性，也是一个人，有人的共性，还是一个教师。换句话说...</content>
  </entry>
  
  <entry>
    <title>SOA集群服务相关知识</title>
    <link href="https://blog.zollty.com/b/archive/about-the-soa-and-cluster-related-technology.html"/>
    <updated>2015-09-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-the-soa-and-cluster-related-technology</id>
    <content type="html">一、一些概念1、SOASOA(Service-Oriented Architecture)，即面向服务的架构。架构就是一套构建系统的准则。通过这套准则，我们可以把一个复杂的系统划分为一套更简单的子系统的集合，这些子系统之间应该保持相互独立，并与整个系统保持一致。而且每一个子系统还可以继续细分下去，从而构成一个复杂的企业级架构。构建企业软件系统时，要考虑架构的可用性，性能问题，容错能力，可重用性，安全性，扩展性，可管理维护性，可靠性等各个相关方面。在基于SOA架构的系统中，具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件（也就是services）组合构建起来的。SOA和其它企...</content>
  </entry>
  
  <entry>
    <title>dubbo分布式服务化框架的使用经验</title>
    <link href="https://blog.zollty.com/b/archive/the-experience-of-distributed-service-framework-dubbo.html"/>
    <updated>2015-09-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-experience-of-distributed-service-framework-dubbo</id>
    <content type="html">初学者可以看看如下文章：http://shiyanjun.cn/archives/1075.htmlDubbo获取不到IP的问题如dubbo官方文档所述：http://dubbo.io/Host+Binding-zh.htm缺省主机IP查找顺序：&amp;nbsp;&amp;nbsp;通过LocalHost.getLocalHost()获取本机地址。&amp;nbsp;&amp;nbsp; 如果是127.*等loopback地址，则扫描各网卡，获取网卡IP。&amp;nbsp;&amp;nbsp; 注册的地址如果获取不正确，比如需要注册公网地址，可以：&amp;nbsp;1. 可以在/etc/hosts中加入：机器名 公网IP，比如： tes...</content>
  </entry>
  
  <entry>
    <title>Redis集群安装和使用</title>
    <link href="https://blog.zollty.com/b/archive/redis-cluster-installation-and-usage.html"/>
    <updated>2015-08-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/redis-cluster-installation-and-usage</id>
    <content type="html">【Ubuntu上快速安装Redis】打开终端，然后键入以下命令：$sudo apt-get update$sudo apt-get install redis-server这将在您的计算机上安装Redis。启动 Redis$redis-server或者：sudo /etc/init.d/redis-server start停止：sudo /etc/init.d/redis-server stop进入cli命令行界面$redis-cli使用：redis 127.0.0.1:6379&amp;gt; SET name &amp;quot;Zollty&amp;quot;OKredis 127.0.0.1:6379&amp;...</content>
  </entry>
  
  <entry>
    <title>Curl用法命令笔记</title>
    <link href="https://blog.zollty.com/b/archive/curl-usage.html"/>
    <updated>2015-07-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/curl-usage</id>
    <content type="html">
在linux下curl GET多个参数问题curl http://mywebsite.com/index.php?a=1&amp;amp;b=2&amp;amp;c=3$_GET只能获取到参数a由于url中有&amp;amp;，其他参数获取不到，而且curl会变成后台运行（因为：在linux系统中 &amp;amp; 会使进程系统后台运行）必须对&amp;amp;进行下转义才能让$_GET获取到所有参数，正确写法：curl http://mywebsite.com/index.php?a=1\&amp;amp;b=2\&amp;amp;c=3指定请求类型：-X-X POST/PUT/DELETE简写：-XPOST、-G（即-X GET）传...</content>
  </entry>
  
  <entry>
    <title>Java程序设计之——代码耦合性与包的结构</title>
    <link href="https://blog.zollty.com/b/archive/package-structure-of-java-program-design.html"/>
    <updated>2015-07-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/package-structure-of-java-program-design</id>
    <content type="html">问题和分析：&amp;nbsp; &amp;nbsp; 如下，一种 常见的 包结构：&amp;nbsp;|--x.y.service&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-------存放service接口（interface）&amp;nbsp;|--x.y.service.impl &amp;nbsp; &amp;nbsp;-------存放service接口的实现类这种设计，从代码结构上来说，是下层（impl层）的代码 依赖于上层（service层）的代码，这样有个好处：代码耦合性低，我们可以把下层代码移除，而上层代码不会受到影响。但是，在某些时候，我们往往违反了这个规则...</content>
  </entry>
  
  <entry>
    <title>百度UEditor本地化配置 笔记</title>
    <link href="https://blog.zollty.com/b/archive/ueditor-config-note.html"/>
    <updated>2015-06-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/ueditor-config-note</id>
    <content type="html">一、修改默认字体我将默认字体修改为：font-family:&amp;nbsp;&amp;quot;Helvetica&amp;nbsp;Neue&amp;quot;,&amp;nbsp;&amp;quot;Helvetica&amp;quot;,&amp;nbsp;&amp;quot;Microsoft&amp;nbsp;YaHei&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;WenQuanYi&amp;nbsp;Micro&amp;nbsp;Hei&amp;quot;,&amp;nbsp;&amp;quot;Hiragino&amp;nbsp;Sans&amp;nbsp;GB&amp;quot;,&amp;nbsp;Simsun,&amp;nbsp;Arial,&amp;nbsp;sans-serif;需要做的工作如下...</content>
  </entry>
  
  <entry>
    <title>异常处理最佳实践</title>
    <link href="https://blog.zollty.com/b/archive/best-practice-for-exceptional-handling.html"/>
    <updated>2015-06-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/best-practice-for-exceptional-handling</id>
    <content type="html">一、异常的分类常规分类：&amp;nbsp; 1、运行时异常（RuntimeException）；&amp;nbsp; 2、编译时异常（CheckedException）用途分类：&amp;nbsp; 1、打断（终止）程序继续往下运行；&amp;nbsp; 2、打断程序继续往下运行，并将异常原因和信息送往上层。特点分类：&amp;nbsp; 1、可以获得异常的原因；&amp;nbsp; 2、可以获得异常的代号；&amp;nbsp; 3、可以获得异常的错误行号；&amp;nbsp; 4、可以获得异常的堆栈信息（程序运行轨迹）；&amp;nbsp; 5、可以获得异常的类型；&amp;nbsp; &amp;nbsp; ……等。判断分类：&amp;nbsp; 1、可以预判（预先判断）、自主...</content>
  </entry>
  
  <entry>
    <title>判断用户关闭浏览器-beforeunload事件</title>
    <link href="https://blog.zollty.com/b/archive/judge-browser-close-event.html"/>
    <updated>2015-06-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/judge-browser-close-event</id>
    <content type="html">用beforeunload事件，在某些浏览器上（chrome、ie、firefox）可以监听到浏览器关闭操作，能够在关闭之前，弹出一个对话框，让用户选择是否关闭。代码如下：//提示用户是否离开此页面（关闭、刷新或者点击后退等）
window.addEventListener(&amp;quot;beforeunload&amp;quot;,&amp;nbsp;function&amp;nbsp;(e)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;var&amp;nbsp;confirmationMessage&amp;nbsp;=&amp;nbsp;&amp;#39;确定离开此页吗？本页不需要刷新或后退&amp;#39;;

&amp;nbsp;&amp;nbsp;(e&amp;...</content>
  </entry>
  
  <entry>
    <title>正则表达式特殊字符</title>
    <link href="https://blog.zollty.com/b/archive/special-characters-of-regular-expression.html"/>
    <updated>2015-05-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/special-characters-of-regular-expression</id>
    <content type="html">转载自：http://maxthon2.i.sohu.com/blog/view/167534943.htm在正则表达式中，许多标点符号具有特殊含义，比较难记，现归纳备个份：这些符号有：^ $ . * + &amp;nbsp;- ? = ! : | \ / ( ) [ ] { }1.“[ ]”表示字符类： 即括号里是个字符集：如/[abc]/,表示和含有a,b,c任何一个字母的字符串都匹配。注：特殊字符类：\s表示空格符、制表符、Unicode空白符。\S表示非Unicode空白符。(也可自定义Unicode字符类：如：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nb...</content>
  </entry>
  
  <entry>
    <title>Linux的cron定时任务使用说明</title>
    <link href="https://blog.zollty.com/b/archive/using-linux-cron-timed-task.html"/>
    <updated>2015-05-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/using-linux-cron-timed-task</id>
    <content type="html">直接使用 crontab -e 命令，进入到编辑器然后输入 crontab指令crontab用法crontab –e : 修改 crontab 文件，如果文件不存在会自动创建。&amp;nbsp;crontab –l : 显示 crontab 文件。&amp;nbsp;crontab -r : 删除 crontab 文件。crontab -ir : 删除 crontab 文件前提醒用户。在crontab文件中写入需要执行的命令和时间，该文件中每行都包括六个域，其中前五个域是指定命令被执行的时间，最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下：&amp;nbsp;minute hour d...</content>
  </entry>
  
  <entry>
    <title>Sonar代码质量管理平台的安装和使用</title>
    <link href="https://blog.zollty.com/b/archive/installation-and-use-of-sonar.html"/>
    <updated>2015-04-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/installation-and-use-of-sonar</id>
    <content type="html">1、下在zip文件，直接解压即可。然后修改配置文件Edit &amp;lt;install_directory&amp;gt;/conf/sonar.properties参见：http://docs.sonarqube.org/display/SONAR/Installing+the+Server#InstallingtheServer-installingWebServerInstallingtheWebServer启动sonar：进入bin目录，选择系统：cd /opt/sonarqube-5.6/bin/linux-x86-64sonar.sh start即可，然后查看启动日志 logs/sona...</content>
  </entry>
  
  <entry>
    <title>实现集群环境下的高可用Session</title>
    <link href="https://blog.zollty.com/b/archive/application-high-availability-of-distributed-session.html"/>
    <updated>2015-02-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/application-high-availability-of-distributed-session</id>
    <content type="html">为了支持海量用户的访问，应用服务器集群这种水平扩展的方式是最常用的。在单机环境中，Session的创建和存储都是由同一个应用服务器实例来完成，而存储也仅是内存中，最多会在正常的停止服务器的时候，把当前活动的Session钝化到本地，再次启动时重新加载。&amp;nbsp;而多个实例之间，Session数据是完全隔离的。而为了实现Session的高可用，多实例间session数据共享是必然的。具体来说，常用有以下几种方案：Ø&amp;nbsp; 会话保持（案例：Nginx、Haproxy）Ø&amp;nbsp; 会话复制（案例：Tomcat，WAS）Ø&amp;nbsp; 会话共享（案例：Memcached、Redis）...</content>
  </entry>
  
  <entry>
    <title>轻量级Java应用开发框架“ZolltyMVC”交流</title>
    <link href="https://blog.zollty.com/b/archive/zollty-mvc-technical-exchange.html"/>
    <updated>2015-01-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/zollty-mvc-technical-exchange</id>
    <content type="html">
ZolltyMVC框架简介（——根据PPT文档整理）ZolltyMVC是基于 Java 语言的极速 WEB 框架，核心设计目标是开发迅速、代码量少、学习简单、轻量级、易扩展。它在传统MVC框架的基础上做了大量优化和创新设计，以适应软件开发的个性化需求，提升了系统性能，具有更好的可扩展性。如同Spring、StrutsMVC、JFinal、Argo（58同城自主开发的框架）一样，ZolltyMVC也完全开源，在Github、Google Code等都能找到。ZolltyMVC自从2013年发布第一个稳定版之后，目前已经更新到了 1.3.0.RELEASE 版本，在多个项目中运行良好。经...</content>
  </entry>
  
  <entry>
    <title>Docker的使用及常用命令</title>
    <link href="https://blog.zollty.com/b/archive/usage-of-docker-and-common-use-command.html"/>
    <updated>2015-01-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/usage-of-docker-and-common-use-command</id>
    <content type="html">
一、docker run 常用参数说明docker run -p 5000:8080 org/proj:1.0小p：暴露指定端口docker run -d -P training/webapp python app.py大P：暴露所有端口，映射到主机的随机端口上。-d：后台运行docker run --name mynginx -d nginx:latest--name：给容器命名docker run -ti --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts--add-host：添加容器内的host-ip的映射docker r...</content>
  </entry>
  
  <entry>
    <title>Docker安装教程</title>
    <link href="https://blog.zollty.com/b/archive/docker-installation-tutorials.html"/>
    <updated>2015-01-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/docker-installation-tutorials</id>
    <content type="html">
一、CentOS安装Docker篇Docker 要求 CentOS 系统的内核版本高于 3.10 ，查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本。超简单CentOS7 配置阿里云yum源1、打开centos的yum文件夹输入命令cd&amp;nbsp; /etc/yum.repos.d/2、用wget下载repo文件输入命令wget&amp;nbsp; http://mirrors.aliyun.com/repo/Centos-7.repo如果wget命令不生效，说明还没有安装wget工具，输入yum -y install...</content>
  </entry>
  
  <entry>
    <title>我的Docker学习笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-docker-note.html"/>
    <updated>2014-12-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-docker-note</id>
    <content type="html">
Docker学习资料：官方：http://docs.docker.com/userguide/中文：http://yeasy.gitbooks.io/docker_practice/content/introduction/what.html docker compose 连接外部容器方法一：将docker compose使用的默认网络指定为外部容器的网络：docker-compose.yml文件如下：version:&amp;nbsp;&amp;#39;2&amp;#39;
services:
&amp;nbsp;&amp;nbsp;kafka:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>持续集成平台Jenkins的搭建和使用</title>
    <link href="https://blog.zollty.com/b/archive/the-construction-and-use-of-the-continuous-integration-platform-Jenkins.html"/>
    <updated>2014-12-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-construction-and-use-of-the-continuous-integration-platform-Jenkins</id>
    <content type="html">Jenkins配置丢弃旧的构建 -&amp;gt; 保持构建的最大个数 ：10MAVEN;Root POM ：pom.xmlGoals and options：clean install sonar:sonar -U -DskipTests=trueGIT：参数化构建过程：方法1：Dynamic Choice Parameter：name: release_branchChoices Script: def ver_keys = [ &amp;#39;bash&amp;#39;, &amp;#39;-c&amp;#39;, &amp;#39;cd ~/.jenkins/workspace/my_project; git pull&amp;gt...</content>
  </entry>
  
  <entry>
    <title>关于SSH协议最完整的讲解</title>
    <link href="https://blog.zollty.com/b/archive/the-most-complete-explanation-of-ssh.html"/>
    <updated>2014-11-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-most-complete-explanation-of-ssh</id>
    <content type="html">首先了解几个概念SSH protocol（SSH协议）&amp;nbsp; &amp;nbsp; The SSH protocol (Secure Shell) is a method for secure remote login from one computer to another. It provides several alternative options for strong authentication, and it protects the communications security and integrity with strong encryption. It is a s...</content>
  </entry>
  
  <entry>
    <title>Java内存模型与延迟实例化-关于DCL</title>
    <link href="https://blog.zollty.com/b/archive/java-memory-model-and-dcl.html"/>
    <updated>2014-09-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-memory-model-and-dcl</id>
    <content type="html">（本篇文章部分翻译，最后总结）What&amp;nbsp;is&amp;nbsp;DCL?什么是DCL？The&amp;nbsp;DCL&amp;nbsp;idiom&amp;nbsp;was&amp;nbsp;designed&amp;nbsp;to&amp;nbsp;support&amp;nbsp;lazy&amp;nbsp;initialization（DCL是一种延迟实例化的编程技巧）,&amp;nbsp;which&amp;nbsp;occurs&amp;nbsp;when&amp;nbsp;a&amp;nbsp;class&amp;nbsp;defers&amp;nbsp;initialization&amp;nbsp;of&amp;nbsp;an&amp;nbsp;owned&amp;nbsp;object&amp;nbsp;until&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>我的C# .NET笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-c-sharp-note.html"/>
    <updated>2014-09-01T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-c-sharp-note</id>
    <content type="html">1、VS (2013) 快捷键VS C# 代码格式化快捷键： 全选代码，Ctrl+K, Ctrl+D行注释： Ctrl+K, Ctrl+C取消行注释： Ctrl+K, Ctrl+U2、C# 语法C# 中的泛型List，可以替换Java中的ArrayListDictionary可以替换Java中的HashMapoverload：重载指的是同一个类中有两个或多个名字相同但是参数不同的方法，(注:返回值不能区别函数是否重载)，重载没有关键字。override：过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”（这也就是有些书将过载翻译为覆盖的原因），但是这种“覆盖”和用new关键字来覆盖是...</content>
  </entry>
  
  <entry>
    <title>巧妙地解决Log4j文件重命名失败的问题</title>
    <link href="https://blog.zollty.com/b/archive/clever-solution-to-the-problem-of-log4j-file-rename-failed.html"/>
    <updated>2014-07-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/clever-solution-to-the-problem-of-log4j-file-rename-failed</id>
    <content type="html">一、问题描述1、大家在用log4j时，可能会遇到下面的一个报错信息：Failed to rename [/opt/proj.log] to [/opt/proj.log.2014-03-20].这个算是log4j.DailyRollingFileAppender的一个BUG，网上很多修改方案，不过我能搜到的，都不理想。2、一般性问题：文件重命名失败详细的内容可以参见论坛的帖子：http://bbs.csdn.net/topics/330195396关键内容如下：我也遇到了和LZ相同的问题，也是无法重命名，但是可以先重命名，然后再执行其他操作！如果先执行其他的操作，比如读这个文件，然后再修...</content>
  </entry>
  
  <entry>
    <title>解决“磁盘空间不足 磁盘上总计 /boot 的空间”问题</title>
    <link href="https://blog.zollty.com/b/archive/solve-the-problem-of-insufficient-disk-space-under-ubuntu.html"/>
    <updated>2014-05-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/solve-the-problem-of-insufficient-disk-space-under-ubuntu</id>
    <content type="html">提示“这个更新需要花去 40.5 M 磁盘上总计 /boot 的空间。请在 25.4 M 磁盘上留出 /boot 空间。清空您的回收站和临时文件，用“sudo apt-get clean”清理以前的安装文件。“ 但是我输入sudo apt-get clean后还是无法安装新的更新呢？Reply:&amp;nbsp;sudo apt-get remove --purge $(dpkg -l &amp;#39;linux-*&amp;#39; | sed &amp;#39;/^ii/!d;/&amp;#39;&amp;quot;$(uname -r | sed &amp;quot;s/\(.*\)-\([^0-9]\+\)/\1/&amp;quot;)&amp;...</content>
  </entry>
  
  <entry>
    <title>Linux下安装VMWare虚拟机（以Ubuntu为例）</title>
    <link href="https://blog.zollty.com/b/archive/install-vmware-virtual-machine-under-linux-system.html"/>
    <updated>2014-05-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/install-vmware-virtual-machine-under-linux-system</id>
    <content type="html">1、下载VMWare安装包比如：VMware-Workstation-Full-10.0.1-1379776.x86_64.bundle【注意选择64位还是32位】2、在网上找到注册序列号，例如任意版本永久KEY注册密钥：CZ7E2-2FY5P-08DUP-6XNXG-WPKE8ZC7WU-2VZ95-08EMZ-R5P5X-MGU94YF3XU-F3F01-4888Q-WENXC-NKUC8FF34U-8FF9N-M81KY-A4ZGG-WAUZ8ZC79R-F3Z15-H8E5Z-TXMEE-PUU8FVF7WK-60E4L-M80JQ-2NQQZ-QKKEDYU7HA-03DD7-...</content>
  </entry>
  
  <entry>
    <title>Apache Web服务器配置——支持JBoss集群</title>
    <link href="https://blog.zollty.com/b/archive/apache-config-for-support-jboss-cluster.html"/>
    <updated>2014-04-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/apache-config-for-support-jboss-cluster</id>
    <content type="html">一、为Apache&amp;nbsp;Web服务器安装mod_cluster插件1安装文件JBoss官方提供了mod_cluster的下载地址：http://mod-cluster.jboss.org/downloads直接把插件文件解压，拷贝到/opt/app/apache2/modules/mod_cluster-1.1.3目录：&amp;nbsp;当然，也可以把这些so文件，直接拷贝到/opt/app/apache2/modules目录。注意：下载的新版本的mod_cluster压缩文件里面的so可能不全，估计是因为那些so没有更新，所以没提供。应该可以下载老版本的那些so文件代替。比如mod_c...</content>
  </entry>
  
  <entry>
    <title>Maven问题解决记录</title>
    <link href="https://blog.zollty.com/b/archive/my-maven-problems-solution.html"/>
    <updated>2014-04-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-maven-problems-solution</id>
    <content type="html">＋ (点击以下标题显示正文内容)远程仓库中有jar，但是编译时找不到：artifacts could not be resolved......was cached in the local repository详细错误信息：Failed&amp;nbsp;to&amp;nbsp;execute&amp;nbsp;goal&amp;nbsp;on&amp;nbsp;project&amp;nbsp;amps-dcm:&amp;nbsp;
Could&amp;nbsp;not&amp;nbsp;resolve&amp;nbsp;dependencies&amp;nbsp;for&amp;nbsp;project&amp;nbsp;com.zollty.pss:amps-dcm:war:0....</content>
  </entry>
  
  <entry>
    <title>我的Maven笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-maven-note.html"/>
    <updated>2014-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-maven-note</id>
    <content type="html">＋ (点击以下标题显示正文内容)扩展Maven变量：从properties文件配置Maven变量使用properties-maven-plugin配置如下：&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;properties-maven-plugin&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ver...</content>
  </entry>
  
  <entry>
    <title>Maven资源排除和包含</title>
    <link href="https://blog.zollty.com/b/archive/maven-resource-exclude-and-include.html"/>
    <updated>2014-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-resource-exclude-and-include</id>
    <content type="html">＋ (点击以下标题显示正文内容)给war包添加静态资源路径（配置多个web静态资源路径）maven-war-plugin：webResources.resource.directory可以配置多个&amp;nbsp;resource，每个resource都可以配置 排除或包含文件（includes 和 excludes）。如下例所示：&amp;lt;!--&amp;nbsp;打war包&amp;nbsp;--&amp;gt;
&amp;lt;plugin&amp;gt;
&amp;lt;artifactId&amp;gt;maven-war-plugin&amp;lt;/artifactId&amp;gt;
&amp;lt;version&amp;gt;2.1.1&amp;lt;/versi...</content>
  </entry>
  
  <entry>
    <title>Maven镜像（mirror）</title>
    <link href="https://blog.zollty.com/b/archive/maven-mirror-config.html"/>
    <updated>2014-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-mirror-config</id>
    <content type="html">1. Maven镜像（mirror）的概念、作用&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mirror相当于一个拦截器，它会拦截maven对remote repository的相关请求，把请求里的remote repository地址，重定向到mirror里配置的地址。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果仓库X可以提供仓库Y存储的所有内容，那么就可以认为X是Y的一个镜像。换句话说，任何一个可以从仓库Y获得的构件，都能够从它的镜像中获取。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Some reasons to use a mirror are:There is ...</content>
  </entry>
  
  <entry>
    <title>Maven配置（settings.xml）</title>
    <link href="https://blog.zollty.com/b/archive/maven-config-settings-xml.html"/>
    <updated>2014-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/maven-config-settings-xml</id>
    <content type="html">＋ (点击以下标题显示正文内容)Maven配置 远程仓库和发布server&amp;lt;servers&amp;gt; 和&amp;nbsp;&amp;lt;repositories&amp;gt;例如下面的模板：&amp;lt;?xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;settings&amp;nbsp;xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nb...</content>
  </entry>
  
  <entry>
    <title>Maven常用命令</title>
    <link href="https://blog.zollty.com/b/archive/common-maven-commands.html"/>
    <updated>2014-04-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/common-maven-commands</id>
    <content type="html">Maven选择模块构建mvn install&amp;nbsp;-pl&amp;nbsp;apollo-client&amp;nbsp; &amp;nbsp;表示手动选择需要构建的项目，项目间以逗号分隔。&amp;nbsp;mvn install&amp;nbsp;-pl&amp;nbsp;apollo-client&amp;nbsp;–am&amp;nbsp; &amp;nbsp;表示同时构建所列模块依赖的其他模块（与-pl连用）&amp;nbsp;从某个模块开始接着构建mvn install -rf apollo-client只构建当前项目，不构建子模块 子mudulemvn install -NPS：N是non-recursive的意思Maven 指定构建时的 set...</content>
  </entry>
  
  <entry>
    <title>OLTP和OLAP的区别</title>
    <link href="https://blog.zollty.com/b/archive/oltp-and-olap.html"/>
    <updated>2014-04-05T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/oltp-and-olap</id>
    <content type="html">一、联机事务处理OLTP（on-line transaction processing） 主要是执行基本日常的事务处理，比如数据库记录的增删查改。比如在银行的一笔交易记录，就是一个典型的事务。&amp;nbsp;OLTP的特点一般有：&amp;nbsp;1.实时性要求高。我记得之前上大学的时候，银行异地汇款，要隔天才能到账，而现在是分分钟到账的节奏，说明现在银行的实时处理能力大大增强。&amp;nbsp;2.数据量不是很大，生产库上的数据量一般不会太大，而且会及时做相应的数据处理与转移。&amp;nbsp;3.交易一般是确定的，比如银行存取款的金额肯定是确定的，所以OLTP是对确定性的数据进行存取&amp;nbsp;4.高并发...</content>
  </entry>
  
  <entry>
    <title>我的PostgreSQL技术笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-postgresql-note.html"/>
    <updated>2014-02-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-postgresql-note</id>
    <content type="html">0、安装PostgreSQL服务器若有不明之处，参见官方手册：https://www.postgresql.org/docs/9.4/static/runtime.html权限配置，参见：https://www.postgresql.org/docs/9.4/static/client-authentication.html1、安装ubuntu直接：apt-get install postgresql-9.4其他参见：https://www.postgresql.org/download/Get:1&amp;nbsp;http://ftp.cn.debian.org/debian/&amp;nbsp;j...</content>
  </entry>
  
  <entry>
    <title>我的JBoss使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-jboss-note.html"/>
    <updated>2014-02-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-jboss-note</id>
    <content type="html">一、JBOSS安装1）直接解压到无空格的目录路径下即可。例如:D:\C\Java\jboss-5.0.1.GA\JBOSS的文件夹说明：\bin 不解释\server 主目录，下面分成default、all、minimal等几个“用户”常用的是：\server\default\该目录下，发布项目的目录是：\server\default\deploy\2）配置WINDOWS环境变量：新建JBOSS_HOME，内容为jboss的安装路径，例如D:\C\Java\jboss-5.0.1.GA然后将：%JBOSS_HOME%/bin 添加到Path变量中。3）验证安装是否成功：运行\bin\ru...</content>
  </entry>
  
  <entry>
    <title>Zollty-Log使用手册</title>
    <link href="https://blog.zollty.com/b/archive/zollty-log-use-manual.html"/>
    <updated>2013-12-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/zollty-log-use-manual</id>
    <content type="html">zollty-logThe ZolltyLog is a simple, generic and flexible logging library for Java, which can work with other logging frameworks, like log4j.一、简单用法示例&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;final&amp;nbsp;Logger&amp;nbsp;LOG&amp;nbsp;=&amp;nbsp;LogFactory.getLogger();&amp;nbsp;//&amp;nbsp;Concise
&amp;nbsp;&amp;nbsp;LOG.error(&amp;quot...</content>
  </entry>
  
  <entry>
    <title>Linux系统文件相关的命令</title>
    <link href="https://blog.zollty.com/b/archive/linux-file-related-commands.html.html"/>
    <updated>2013-12-05T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/linux-file-related-commands.html</id>
    <content type="html">一、拷贝文件（包括隐藏文件）1、cp命令 常用参数说明：-r或-R 递归-f 覆盖-u 仅更新-p&amp;nbsp;&amp;nbsp;保留文件属性 (default:mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all-d或-P&amp;nbsp; 保留符号链接&amp;nbsp;-a （--archive，归档的意思）相当于 -dpR 或者 -dR --preserve=all（-p和--preserve=all意思差不多）2、拷贝目录下的所有文件（包括隐藏文件）：cp&amp;nbsp; &amp;nb...</content>
  </entry>
  
  <entry>
    <title>我的Linux系统使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-linux-system-usage-note.html"/>
    <updated>2013-12-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-linux-system-usage-note</id>
    <content type="html">＋ (点击以下标题显示正文内容)截图功能方法 1：在 Linux 中截图的默认方式你想要截取整个屏幕？屏幕中的某个区域？某个特定的窗口？如果只需要获取一张屏幕截图，不对其进行编辑的话，那么键盘的默认快捷键就可以满足要求了。而且不仅仅是 Ubuntu ，绝大部分的 Linux 发行版和桌面环境都支持以下这些快捷键：PrtSc – 获取整个屏幕的截图并保存到 Pictures 目录。Shift + PrtSc – 获取屏幕的某个区域截图并保存到 Pictures 目录。Alt + PrtSc –获取当前窗口的截图并保存到 Pictures 目录。Ctrl + PrtSc – 获取整个屏幕的截...</content>
  </entry>
  
  <entry>
    <title>Linux文件系统符号链接（软链接）和硬链接的区别</title>
    <link href="https://blog.zollty.com/b/archive/about-the-linux-symlinks-and-hardlinks.html"/>
    <updated>2013-12-02T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-the-linux-symlinks-and-hardlinks</id>
    <content type="html">Linux 文件系统 符号链接（软链接）和 硬链接的区别首先明白一点：Linux下， 对于一个文件来说，有唯一的索引接点(inode)与之对应，而对于一个索引接点号，却可以有多个文件名与之对应。因此，在磁盘上的同一个文件可以通过不同的路径去访问该文件。官方描述：&amp;nbsp;&amp;nbsp;A &amp;quot;hard link&amp;quot; is another name for an existing file; the link and theoriginal are indistinguishable.&amp;nbsp;Technically speaking, they share thesam...</content>
  </entry>
  
  <entry>
    <title>Java多线程设计</title>
    <link href="https://blog.zollty.com/b/archive/java-thread-design.html"/>
    <updated>2013-11-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-thread-design</id>
    <content type="html">在我开发的报表引擎中 ，线程的运用颇多，而且是项目的核心。从最开始的线程设计，到目前为止的设计，有了很大的改进。一、关于Thread和Runnable的选择&amp;nbsp;&amp;nbsp; &amp;nbsp;我们知道用Runnable相对于用Thread有两个优势：1. 避免继承的局限，采用Runnable接口的方式，不占用extends位置。2. 适合于资源的共享，多个Thread可以共用一个Runnable对象。&amp;nbsp;&amp;nbsp; &amp;nbsp;对于第1点，如果线程本身不需要继承其他类，则使用extends Thread更好，这样就可以直接调用很多操作线程的方法，也无需再多一个Runanble...</content>
  </entry>
  
  <entry>
    <title>程序设计模式-“OPGA设计模式”简介</title>
    <link href="https://blog.zollty.com/b/archive/opga-algorithm-design-pattern.html"/>
    <updated>2013-11-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/opga-algorithm-design-pattern</id>
    <content type="html">程序设计模式-“OPGA设计模式”简介即（One Parameter Go Anywhere）“一参走天下”这是个新想法，看起来很不错。能够解决我们在编程时，要考虑太多的参数传递和回传的问题。如果能实现一种模式，让我们无须传递这么多参数，那是多么的好啊！&amp;nbsp;先看看，我们编程中经常会遇到的问题：&amp;nbsp;1、要求Service类回传多个信息。可行的做法：public&amp;nbsp;ResultBean&amp;nbsp;doService(xxx){} 即定义一个返回的ResultBean，用于存放返回的多个信息。&amp;nbsp; 2、要求把一堆参数交给下一个方法去处理。&amp;nbsp;比如，如下代...</content>
  </entry>
  
  <entry>
    <title>关于循环最后一步特殊处理的算法</title>
    <link href="https://blog.zollty.com/b/archive/on-cycles-final-step-special-treatment-algorithm.html"/>
    <updated>2013-10-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/on-cycles-final-step-special-treatment-algorithm</id>
    <content type="html">这是个一般性的问题，算法思路很重要。问题描述：直接看下面的代码（以Java为例）：while&amp;nbsp;((p&amp;nbsp;=in.readLine(buf,&amp;nbsp;0,&amp;nbsp;len))&amp;nbsp;!=&amp;nbsp;-1)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;isBreakStr&amp;nbsp;=&amp;nbsp;new&amp;nbsp;String(buf,&amp;nbsp;0,&amp;nbsp;p);
&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&amp;nbsp;isBreakStr.indexof(breakStr)!=-1&amp;nbsp;){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;...</content>
  </entry>
  
  <entry>
    <title>ZolltyMVC Framework Introduction</title>
    <link href="https://blog.zollty.com/b/archive/zollty-mvc-framework-intro.html"/>
    <updated>2013-10-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/zollty-mvc-framework-intro</id>
    <content type="html">ZolltyMVC框架简介&amp;nbsp;版本信息：版本号日期操作内容操作人V1.02013-10-09新建新建版本1.0zolltyV1.22013-11-19新建新建版本1.2zollty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZolltyMVC框架是一款轻量级的Java应用编程框架（Java Application 
Framework）。&amp;nbsp;1. Web层：它是一个通用纯Servlet请求控制转发器（RESTful URL 路由，代码简洁、效率非常高），基于原生RESTf...</content>
  </entry>
  
  <entry>
    <title>Java设计模式</title>
    <link href="https://blog.zollty.com/b/archive/java-design-pattern.html"/>
    <updated>2013-09-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-design-pattern</id>
    <content type="html">单例模式的使用场景：1、缓存资源，控制资源的并发读、写。（资源即类的属性）例如：有一把锁，需要两把钥匙才能打开。在更换钥匙期间，是不允许开锁的。而且，两把钥匙必须更换完才允许开锁，即，只更换完一把时，是不允许开锁的。假设一个线程修改完了一把钥匙，正准备修改第二把钥匙，而此时另外一个线程又试图开锁。有两种做法：1）此时不允许开锁，必须等第二把钥匙更改完成后才允许。2）允许开锁，仍然用未更改的旧钥匙。读的时候，为提高效率，最好能避免使用synchronized同步。设计模式：ProxyAdapterDecoratorWrapperDelegate区别：Proxy：某个客户端不能直接操作到某个...</content>
  </entry>
  
  <entry>
    <title>一些Java程序设计的原则和建议</title>
    <link href="https://blog.zollty.com/b/archive/some-principles-of-java-program-design.html"/>
    <updated>2013-09-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/some-principles-of-java-program-design</id>
    <content type="html">在写方法（函数）的过程中，总结了如下原则：&amp;nbsp;【问题1】、一个方法执行时走到了错误的流程，应该返回一个标识呢，还是throw一个错误？&amp;nbsp;A、返回一个标识，例如，执行失败，则返回null、-1等。优点：执行失败时，返回null或者-1，调用者根据返回的标识即可判断执行是否有错。不需要try-catch。缺点：通常，调用者不会去判断返回的结果是什么，它也不知道返回值代表的标识是什么，所以当返回null、-1时，可能导致后期无法预知的错误。B、throw一个错误，终止程序。优点：无需定义错误标识，而且throw错误时，可以给出错误信息。缺点：调用者，需要用try-catch去...</content>
  </entry>
  
  <entry>
    <title>Java程序设计之静态方法和单例模式</title>
    <link href="https://blog.zollty.com/b/archive/java-static-method-and-singleton-pattern.html"/>
    <updated>2013-08-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-static-method-and-singleton-pattern</id>
    <content type="html">一、问题的引出目的：设计一个加密的工具类。写法一：【单例模式】public&amp;nbsp;class&amp;nbsp;CipherUtils&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;List&amp;nbsp;key;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;CipherUtils&amp;nbsp;instance;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;CipherUtils(String...&amp;nbsp;args){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nb...</content>
  </entry>
  
  <entry>
    <title>我的正则表达式笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-regular-expression-note.html"/>
    <updated>2013-07-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-regular-expression-note</id>
    <content type="html">-------------匹配【任意字符，任意长度】替换：&amp;nbsp;name: new FormEntity(&amp;#39;规则名称&amp;#39;,&amp;#39;ruleName&amp;#39;,&amp;#39;&amp;#39;,&amp;#39;&amp;#39;),&amp;nbsp;detail: new FormEntity(&amp;#39;规则描述&amp;#39;,&amp;#39;ruleDec&amp;#39;,&amp;#39;&amp;#39;,&amp;#39;&amp;#39;),成：&amp;nbsp;name: &amp;#39;&amp;#39;,&amp;nbsp;detail: &amp;#39;&amp;#39;,正则表达式为： new FormEntity\((.){0,}示例2：正则表达式为：/\*.{1,...</content>
  </entry>
  
  <entry>
    <title>我的GIT使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-git-note.html"/>
    <updated>2013-07-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-git-note</id>
    <content type="html">＋ (点击以下标题显示正文内容)GIT代理设置位置：~/.gitconfig，例如：C:\Users\Administrator\.gitconfig内容如下：[user]
name&amp;nbsp;=&amp;nbsp;zollty
email&amp;nbsp;=&amp;nbsp;zollty@163.com
[http]
proxy&amp;nbsp;=&amp;nbsp;http://170.17.18.80:8080
[https]
proxy&amp;nbsp;=&amp;nbsp;http://170.17.18.80:8080＋ (点击以下标题显示正文内容)GIT命令下 文件中文名 乱码问题下面命令 设置一下就行了：g...</content>
  </entry>
  
  <entry>
    <title>Git基础知识</title>
    <link href="https://blog.zollty.com/b/archive/basic-knowledge-of-git.html"/>
    <updated>2013-07-03T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/basic-knowledge-of-git</id>
    <content type="html">参考资料：Pro Git book：http://git-scm.com/book/zh/v11. 常用命令1.1 本地分支操作命令●&amp;nbsp;查看分支列表：git branch●&amp;nbsp;将当前分支切换到 master：git checkout master●&amp;nbsp;从当前分支创建&amp;nbsp;xxxxx分支：git branch xxxxx●&amp;nbsp;从当前分支创建 xxxxx分支：git checkout -b xxxxx●&amp;nbsp;从master分支创建 xxxxx分支：git checkout -b xxxxxx master●&amp;nbsp;删除&amp;nbsp;本地xxxx...</content>
  </entry>
  
  <entry>
    <title>JSP基础教程</title>
    <link href="https://blog.zollty.com/b/archive/jsp-basic-course.html"/>
    <updated>2013-06-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jsp-basic-course</id>
    <content type="html">JSP的学习路线什么是JSP？——JSP的背景和发展情况简介为什么要用JSP？——普通HTML编程中，我们遇到的了哪些问题？JSP的语法特点简介JSP内置对象EL表达式JSP的标签式语法（指令和动作）JSTL标签库JSP的解析编译执行过程*什么是JSP？1. Java Server Pages(JSP) is a technology that helps software developers create dynamically generated web pages based on HTML. Released in 1999 by Sun Microsystems.（动态生成H...</content>
  </entry>
  
  <entry>
    <title>生成等宽字距字符串的算法</title>
    <link href="https://blog.zollty.com/b/archive/algorithm-of-generation-aequilate-character.html"/>
    <updated>2013-05-05T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/algorithm-of-generation-aequilate-character</id>
    <content type="html">我们知道，在很多字体下面，每个英文字母的宽度是不一样的，就拿W和I来讲，W的字体宽度要大于I的字体宽度，所以有时候我们会不太喜欢这样的定义。以下我以Windows下默认的文件名称为例，我对比发现，等宽字符可以分成下面5组：private static final char [] charsA = new char[]{&amp;#39;V&amp;#39;,&amp;#39;R&amp;#39;,&amp;#39;C&amp;#39;,&amp;#39;K&amp;#39;,&amp;#39;X&amp;#39;};private static final char [] charsD = new char[]{&amp;#39;D&amp;#39;,&amp;#39;G&amp;#39;,&amp;#3...</content>
  </entry>
  
  <entry>
    <title>robbin谈管理：改造团队的经验</title>
    <link href="https://blog.zollty.com/b/archive/build-team-experience.html"/>
    <updated>2013-04-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/build-team-experience</id>
    <content type="html">作者：robbin &amp;nbsp;原文地址：http://robbinfan.com/blog/21/build-team-experience一般来说新官上任三把火，新的高管空降之后往往会大肆招人，快速推进改革。但我在入职之前就考虑过这个问题，以为宜缓不宜急，理由如下：1、做为空降高管，在公司没有任何根基，亦没有做出任何成绩来证明自己，这个时候领导的信任和授权是有限度的。一旦初战不利，领导的信任度被透支，在公司恐怕难有立足之地，更遑论改造团队，发挥自己的才能了。2、我早年做过很多软件咨询项目，给很多公司讲过敏捷开发、领域模型、面向对象建模和ORM。但我能够得到这些公司的信任，却并非因为讲...</content>
  </entry>
  
  <entry>
    <title>深入学习XML和XSD、定制XML数据交互规范</title>
    <link href="https://blog.zollty.com/b/archive/In-depth-study-of-XML-and-XSD-custom-XML-data-exchange-specification.html"/>
    <updated>2013-04-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/In-depth-study-of-XML-and-XSD-custom-XML-data-exchange-specification</id>
    <content type="html">最近制定了报表引擎数据交互的XML规范，没时间写总结，先列出下面的参考资料：http://www.w3school.com.cn/schema/schema_example.asphttp://www.w3.org/TR/xmlschema-0/http://maven.apache.org/xsd/（很好的规范参考）http://www.opentravel.org/Specifications/OnlineXmlSchema.aspx（很好的规范参考）http://blog.csdn.net/zhengyeqing520/article/details/6091656报表引擎XML规...</content>
  </entry>
  
  <entry>
    <title>理解synchronized对象锁</title>
    <link href="https://blog.zollty.com/b/archive/understanding-synchronized-object-lock.html"/>
    <updated>2013-04-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/understanding-synchronized-object-lock</id>
    <content type="html">深入 Java虚拟机层面 去理解：在java虚拟机中，每个对象和类在逻辑上都是和一个监视器相关联的。&amp;nbsp;对于对象来说，相关联的监视器保护对象的实例变量。&amp;nbsp;对于类来说，监视器保护类的类变量。&amp;nbsp;（如果一个对象没有实例变量，或者一个类没有变量，相关联的监视器就什么也不监视。）&amp;nbsp;为了实现监视器的排他性监视能力，java虚拟机为每一个对象和类都关联一个锁。代表任何时候只允许一个线程拥有的特权。线程访问实例变量或者类变量不需锁。&amp;nbsp;但是如果线程获取了锁，那么在它释放这个锁之前，就没有其他线程可以获取同样数据的锁了。（锁住一个对象就是获取对象相关联的监视器...</content>
  </entry>
  
  <entry>
    <title>Zollty Space（个人网络空间）的建设</title>
    <link href="https://blog.zollty.com/b/archive/about-the-design-of-zollty-space.html"/>
    <updated>2013-04-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/about-the-design-of-zollty-space</id>
    <content type="html">一、个人网络空间的意义1. 个人知识的笔记、总结、梳理，资料的查询。（主要的意义）2. 分享某些知识和经验，希望能帮助到别人，起到正面的引导和影响。3. 得到交流和反馈，收集意见和建议。4. 展示自我的能力。（在人际圈或者面试的时候）5. 存放一些固定的、较永久的资料，对外提供浏览或下载。6. 存放一些临时的小资料（大资料需要用网盘去分享）。注意：第1条 和 第2条 有时是冲突的，因为自己的笔记，重点为服务自己，写得非常随意，而对外分享的文章、教程，则要关注读者的兴趣和易接收程度。我的大多数文章是偏第1条的，部分会兼顾到第2条。因此，个人网络空间的规划如下：1. 方便自己使用。2. 要对...</content>
  </entry>
  
  <entry>
    <title>大数据量报表技术研究</title>
    <link href="https://blog.zollty.com/b/archive/research-on-report-technology-with-large-data-volume.html"/>
    <updated>2013-03-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/research-on-report-technology-with-large-data-volume</id>
    <content type="html">&amp;nbsp;&amp;nbsp;大数据量报表技术研究目&amp;nbsp;&amp;nbsp;&amp;nbsp; 录&amp;nbsp;1 基本简介和说明................................................................................... 11.1&amp;nbsp; 研究意义.......................................................................................... 11.2&amp;nbsp; 研究范围.....................................</content>
  </entry>
  
  <entry>
    <title>让程序员跳槽的非钱原因</title>
    <link href="https://blog.zollty.com/b/archive/the-non-money-reasons-for-the-programmer-to-job-hopping.html"/>
    <updated>2013-03-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-non-money-reasons-for-the-programmer-to-job-hopping</id>
    <content type="html">作者：mengyidan1988&amp;nbsp; &amp;nbsp;原文地址：http://www.iteye.com/news/30647马云说员工离职的原因林林总总，但基本上可以归结为两点：钱，没给到位；心，受委屈了。这些归根结底就一条：干得不爽。这篇文章咱就来看看程序员会因为哪些不爽而跳槽——与钱无关的那些哦。&amp;nbsp;领导&amp;nbsp;为什么把“领导”放在第一位？&amp;nbsp;因为相当一部分人离职，是因为他们觉得领导很不通情达理、不专业、不称职、不配领导自己，在这样的领导治下，干活让人绝望。&amp;nbsp;很2的领导通常不把程序员当回事儿，认为程序员就像机器，只要按吩咐干活儿就行。他们通常不尊重...</content>
  </entry>
  
  <entry>
    <title>部分早期文章</title>
    <link href="https://blog.zollty.com/b/archive/some-early-articles.html"/>
    <updated>2013-03-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/some-early-articles</id>
    <content type="html">部分早期文章，发表于CSDN、ChinaUnix、CNBlogs等技术网站。判断一个数是否是整数发表于：http://blog.csdn.net/zollty/article/details/6974132C语言对 位(bit) 进行操作（增删查改）发表于：http://blog.csdn.net/zollty/article/details/7026877C++输入输出流发表于：http://blog.csdn.net/zollty/article/details/6771872C语言的两个工具函数发表于：http://blog.csdn.net/zollty/article/deta...</content>
  </entry>
  
  <entry>
    <title>Learn Markdown</title>
    <link href="https://blog.zollty.com/b/archive/learn-markdown.html"/>
    <updated>2013-03-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/learn-markdown</id>
    <content type="html">

标题 Learn Markdown 标题
Markdown 是一种方便记忆、书写的纯文本标记语言，用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档
Markdown 是一种方便记忆、书写的纯文本标记语言，用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档
标题 Learn Markdown 标题
Markdown 是一种方便记忆、书写的纯文本标记语言，用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档
Markdown 是一种方便记忆、书写的纯文本标记语言，用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档
标题 Learn Markdown...</content>
  </entry>
  
  <entry>
    <title>应用日志记录规范</title>
    <link href="https://blog.zollty.com/b/archive/application-log-record-specification.html"/>
    <updated>2013-03-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/application-log-record-specification</id>
    <content type="html">一、日志分类1、按等级分类1）TRACE级、DEBUG级：理论上“不属于错误”，只是打印一些状态、提示信息，以便开发过程中观察，开发完成、正式上线后，要把它们都屏蔽掉。2）INFO级： 理论上”不属于错误”，只是一些提示性的信息，但是即使在开发完成、正式上线的系统中，也有保留的价值。3）WARN级：属于轻微的“警告”，程序中出现了一些异常情况，但是影响不大，还可以正常使用。4）ERROR级：属于“普通的错误”，在程序可以控制的范围内，不会造成连锁影响或巨大影响。5）FATAL级：属于“致命错误”，可导致整个系统或者一系列功能无法使用，甚至导致系统瘫痪、关闭。2、按用途分类a）仅用于开发时...</content>
  </entry>
  
  <entry>
    <title>基于互联网络的文件数据传输</title>
    <link href="https://blog.zollty.com/b/archive/the-file-data-transmission-based-on-internet.html"/>
    <updated>2013-02-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-file-data-transmission-based-on-internet</id>
    <content type="html">注：本文是《大数据量报表技术研究》专著的一部分一、问题的提出w&amp;nbsp;&amp;nbsp;适用于Web方式传输文件的网络协议有哪些？各有哪些优劣？w&amp;nbsp;&amp;nbsp;这些协议如何在Web应用中实现？&amp;nbsp;二、问题的研究网络协议，在ISO标准的“OSI模型”中分为7层：应用层、传输层、网络层、数据链路层、物理层。与互联网相关的，我们只需要考虑“TCP/IP协议族”就可以了。“TCP/IP协议”是“TCP/IP协议族”的简称，是一系列协议的合集，按“TCP/IP参考模型”划分，这些协议可以分为4层：应用层、传输层、网络互连层、网络接口层。在TCP/IP协议族旗下，常用协议有：w&amp;nb...</content>
  </entry>
  
  <entry>
    <title>Java文件IO流和字符编码</title>
    <link href="https://blog.zollty.com/b/archive/file-io-stream-and-character-encoding.html"/>
    <updated>2013-02-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/file-io-stream-and-character-encoding</id>
    <content type="html">注：本文是《大数据量报表技术研究》专著的一部分一、问题的提出w&amp;nbsp;&amp;nbsp;Java有哪些基础的IO流？各有什么特点？w&amp;nbsp;&amp;nbsp;如何读写文本文件？考虑效率和编码问题。w&amp;nbsp;&amp;nbsp;如何读写二进制文件？考虑大文件问题和效率问题。&amp;nbsp;二、问题的研究在Java的API里面，IO流最基础的是InputStream、OutputStream、Reader、Writer，前两种是基于字节（byte）输入输出设计的，后两种是基于字符（char，UCS-2）输入输出设计的。&amp;nbsp;1、编码知识Java的字符（char）是采用的UCS-2编码方式，占2个字...</content>
  </entry>
  
  <entry>
    <title>JavaScript进阶学习笔记</title>
    <link href="https://blog.zollty.com/b/archive/note-of-learning-javascript.html"/>
    <updated>2013-02-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/note-of-learning-javascript</id>
    <content type="html">一、基本语法很简单。（略）二、JavaScript HTML DOM1、documentJavaScript 提供了&amp;nbsp;document对象 来操作 HTML DOM，例如： document.write(&amp;quot;&amp;lt;h1&amp;gt;Hello world!&amp;lt;/h1&amp;gt;&amp;quot;);var x=document.getElementById(&amp;quot;main&amp;quot;);var y=x.getElementsByTagName(&amp;quot;p&amp;quot;);document.getElementById(&amp;quot;p1&amp;quot;).innerHTML=&amp;...</content>
  </entry>
  
  <entry>
    <title>常用的JS/jQuery技术和技巧</title>
    <link href="https://blog.zollty.com/b/archive/common-js-and-jquery-technology.html"/>
    <updated>2013-02-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/common-js-and-jquery-technology</id>
    <content type="html">获取指定id的某个属性的值：例如获取id=myForm的表单的action属性的值document.getElementById(&amp;quot;myForm&amp;quot;).action也可以设置它的值：document.getElementById(&amp;quot;myForm&amp;quot;).action = &amp;quot;/cqrd/aa.action&amp;quot;获取指定name的某个属性的值，例如document.myForm.action通过js去提交表单：document.getElementById(&amp;quot;myForm&amp;quot;).submit();即使myForm这个表单中没...</content>
  </entry>
  
  <entry>
    <title>资料备份和多终端同步经验</title>
    <link href="https://blog.zollty.com/b/archive/experience-of-data-backup-and-multi-terminal-synchronization.html"/>
    <updated>2013-02-05T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/experience-of-data-backup-and-multi-terminal-synchronization</id>
    <content type="html">我有一个台式电脑、一个笔记本电脑、一个Android平板电脑、一部Android智能手机，怎么来管理自己的资料和文件？还有，如果硬盘坏了无法修复，怎么办？我做了如下工作：首先是资料分类，按用途、文件类型分类，比如图片、重要软件、学习相关的文档、公司资料等。分类不是固定的，自己觉得满意就OK了。将一些文件size&amp;nbsp;较小的备份到网盘上。现在免费网盘那么多，例如金山网盘、百度网盘、115网盘、华为网盘等等，我的重要资料都会备份到两个网盘上。将一些文件较大的，直接备份到移动硬盘或者U盘上。具体的文件备份和管理策略已经非常完善：参见这篇文章《个人文件管理和备份策略》。</content>
  </entry>
  
  <entry>
    <title>深入解读JSP的底层解析过程</title>
    <link href="https://blog.zollty.com/b/archive/jsp-parse-and-compile-process.html"/>
    <updated>2013-01-26T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jsp-parse-and-compile-process</id>
    <content type="html">互联网上，这方面的资料实在太少了，故把自己研究的一些结果公布出来。&amp;nbsp;首先，问大家几个问题，看大家能不能回答出来，或者在网上能不能找到答案：1、page、include、taglib这三个编译指令，执行的顺序是什么？2、JSP文件中的Java代码、编译指令、动作指令、EL标签、第三方标签、静态文本等，被编译的顺序是什么？3、常用的、与JSP解析/编译相关的类有哪些？换句话说，JSP解析、编译技术是建立在哪些接口和工具之上的？4、JSP技术所有的编译指令和动作指令有哪些？5、JSP技术是由谁发起的，现在有哪几个标准？都有哪些服务器或者项目支持JSP的解析和编译？&amp;nbsp;&amp;nbs...</content>
  </entry>
  
  <entry>
    <title>搭建个人网站、个人博客经验</title>
    <link href="https://blog.zollty.com/b/archive/experience-of-build-personal-site.html"/>
    <updated>2013-01-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/experience-of-build-personal-site</id>
    <content type="html">1. 注册域名【 域名服务商有很多，怎么选择？】看个人的想法了，像万网的域名一个月是139元，而新网的只要55元。有人说万网、新网的用户多，域名解析比较慢，而新网有过几次域名解析服务瘫痪的历史（被黑客攻击或者硬件故障）。可以考虑在国外的域名服务商那里注册，像godaddy.com，专业而且比较便宜，用支付宝付款即可。2. 购买主机Hosting、或者使用免费的主机有虚拟主机、VPS、专属主机等，一般来说用Linux系统，网站用LAMP架构比较好，也是最流行的方式，还有就是ASP.NET也可以。Java+Tomcat的话要贵一点、使用得较少。看自己的资金预算，选择购买虚拟主机、VPS或者专...</content>
  </entry>
  
  <entry>
    <title>设置事务超时时间的问题及数据库update和锁</title>
    <link href="https://blog.zollty.com/b/archive/spring-transaction-timeout-and-db-update.html"/>
    <updated>2013-01-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/spring-transaction-timeout-and-db-update</id>
    <content type="html">	Oracle的update语句问题：update config t set t.value =1 where t.key=&amp;#39;DB_ KEY&amp;#39;	或者：select * from config t where t.key=&amp;#39;DB_KEY&amp;#39; for update	这个update会试图为where条件指定的那些数据加上行级锁，但如果此时这些数据已经被其他事务加锁了，则会一直等待，直到锁被释放，然后再去竞争这些数据的锁。	问题是，我不想让它一直等待，如果加不上锁就立即返回失败信息。对于select ... for update语句，可以用如下方式：select ...</content>
  </entry>
  
  <entry>
    <title>关于公司建设的一些思考</title>
    <link href="https://blog.zollty.com/b/archive/thinking-of-company-management.html"/>
    <updated>2013-01-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/thinking-of-company-management</id>
    <content type="html">
序： 一些经历，过了就可能忘了，不能形成经验。所以有时间把自己的一些亲身经历和思考总结出来，可供以后参考。（以下总结，大多数实践于研发类的公司，特别是软件研发类的公司）先摘录一些公司的优秀案例，部分想法和我类似：1、绩效管理，小米的与众不同◇ 强调个体价值互联网行业天天变化，如果过于强调组织价值，那公司的决策和布局都会变得缓慢，所以小米要强调注重个体的价值。◇ 设置考核上限小米认为，如果一名管理者，直接下属过多的话会影响他去记住每个人的实际工作表现。所以在小米，每一位管理者绩效评价员工的人数都有上限，这个上限数为10个人。但在实际应用层面比10个更少，因为只有这样才能让绩效的效率提高...</content>
  </entry>
  
  <entry>
    <title>大数据量报表系统的改进方案</title>
    <link href="https://blog.zollty.com/b/archive/large-data-reporting-system.html"/>
    <updated>2012-12-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/large-data-reporting-system</id>
    <content type="html">	如果是行家，提起报表，你是否想起了JasperReports(&amp;nbsp;iReport&amp;nbsp;)、Birt、JFreeReport、水晶报表等？但是，在海量数据问题面前，这些工具都弱爆了。怎么说呢，这些报表工具，的确功能强大、支持可视化的“报表模板”制作，用它来制作公文文件、财务报表、统计汇总表等，非常实用。但是我讲的是一种大数据量的报表，可能不是一张word或者几千条的excel能够导出的，比如说订单报表、销售明细报表，1天就是几万条，1个月几十万的数据，体现到报表文件（excel或者csv、txt等）就是几十Mb、上百Mb的文件大小，这个数量级的报表文件，excel或者记事本...</content>
  </entry>
  
  <entry>
    <title>网站国际化多语言之Struts2实现研究</title>
    <link href="https://blog.zollty.com/b/archive/research-on-the-internationalization-of-struts2.html"/>
    <updated>2012-12-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/research-on-the-internationalization-of-struts2</id>
    <content type="html">一、基本原理先不提Struts这一工具，也不用其他现成的工具，如何实现国际化？最基本的实现就是，根据不同的Locale读取不同的文本。例如有两个资源文件：第一个：ApplicationResources_zh_CN.properties第二个：ApplicationResources_en_US.properties当Locale=zh_CN时，就去第一个文件查找；当Locale=en_US时，就去第二个文件查找。&amp;nbsp;二、自己写方案去实现明白这个原理后，我们可以自己编写一套工具类，去实现国际化。通常，为了方便，我们需要自定义一个页面标签，类似于&amp;lt;s:text&amp;gt;那种，可...</content>
  </entry>
  
  <entry>
    <title>多线程是否能加快处理速度</title>
    <link href="https://blog.zollty.com/b/archive/can-multi-thread-speed-up-the-processing-speed.html"/>
    <updated>2012-12-15T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/can-multi-thread-speed-up-the-processing-speed</id>
    <content type="html">
问：多线程是不是能加快处理速度？一个实际例子我最近做的一个报表引擎项目：在单线程的情况下，生成10个报表文件需要1个小时。&amp;nbsp;如果是在多线程的情况下呢，生成10个文件要多少个小时？同样要1个小时。不管启动多少个线程，就算有100个线程，一样需要1个小时。&amp;nbsp;单线程是先执行完第一个报表，用了6分钟，再执行第二个报表，也用6分钟，……一直到第十个还是6分钟，总耗时=10*6 = 60分钟。多线程，是10个报表一起执行，但是每一个报表线程都要1个小时。这就是问题所在。单线程和多线程的区别在哪里？&amp;nbsp;同一个线程，比如说一个servlet，一个人去访问，执行它，只需要2...</content>
  </entry>
  
  <entry>
    <title>我的Linux常用命令</title>
    <link href="https://blog.zollty.com/b/archive/my-linux-common-commands.html"/>
    <updated>2012-12-04T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-linux-common-commands</id>
    <content type="html">
后台启动，并忽略标准输出三个不同例子：nohup start.sh &amp;amp;
# 重定向标准输出到 app.log 文件
nohup start.sh &amp;gt; app.log &amp;amp;
# 忽略标准输出
nohup start.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;解释：2&amp;gt;&amp;amp;1的含义/dev/null 表示空设备文件；0 表示stdin标准输入；1 表示stdout标准输出；2 表示stderr标准错误。&amp;amp;1代表“引用1”即：将stderr输出沿用stdout的输出，最终都输出到了/dev/null空设备上。具体解释...</content>
  </entry>
  
  <entry>
    <title>精通Log4j配置</title>
    <link href="https://blog.zollty.com/b/archive/proficient-in-log4j-config.html"/>
    <updated>2012-11-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/proficient-in-log4j-config</id>
    <content type="html">&amp;nbsp;一、logger、appender、layout&amp;nbsp;Log4j&amp;nbsp;can&amp;nbsp;send&amp;nbsp;your&amp;nbsp;log&amp;nbsp;messages&amp;nbsp;to&amp;nbsp;the&amp;nbsp;console,&amp;nbsp;a&amp;nbsp;text&amp;nbsp;file,&amp;nbsp;an&amp;nbsp;html&amp;nbsp;file,&amp;nbsp;an&amp;nbsp;xml&amp;nbsp;file,&amp;nbsp;and&amp;nbsp;so&amp;nbsp;on.&amp;nbsp;日志制造者logger:&amp;nbsp;send&amp;nbsp;your&amp;nbsp;message&amp;nbsp;strin...</content>
  </entry>
  
  <entry>
    <title>多服务器数据同步问题</title>
    <link href="https://blog.zollty.com/b/archive/database-synchronization-problem.html"/>
    <updated>2012-11-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/database-synchronization-problem</id>
    <content type="html">多服务器并发的操作同一个数据库的同一张表。有如下一张表：/* Table: APP_TASK */TASKNO VARCHAR2(22) not null,TASK_TYPE VARCHAR2(2) not null,EXECUTE_TIME DATE,PARMAS_XML VARCHAR2(2000),STATUS VARCHAR2(1) default &amp;#39;0&amp;#39;……表中的一条数据我们称之为一个task。我们的程序有个方法每次取出50个task，每5秒钟重复执行一次，然后根据每个task的参数去处理task，处理过程中和处理完成后 会更新task的STATUS等参数。如果...</content>
  </entry>
  
  <entry>
    <title>我的Spring技术笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-spring-technology-note.html"/>
    <updated>2012-11-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-spring-technology-note</id>
    <content type="html">Spring很强大，代码写得非常好，像是一件艺术品。我个人对Spring框架也是非常欣赏，拜读过它很多功能的源代码，比如BEAN（IOC）、MVC、JDBC、AOP等。一、我的Spring总结&amp;nbsp; &amp;nbsp;&amp;nbsp;Spring可以用来管理前端的业务控制器，中间的业务逻辑组件，以及底层的DAO组件，方便集成各组件，而且可以大大的降低各组件之间的耦合度。&amp;nbsp; &amp;nbsp; Spring有如下几个流行的应用：1. IOC ( Inversion of Control，控制反转)，又称为DI（依赖注入），值的依赖注入和自动装配；2. AOP（面向切面编程），例如前置通知、...</content>
  </entry>
  
  <entry>
    <title>提高网页性能的23条规则</title>
    <link href="https://blog.zollty.com/b/archive/23-rules-to-improve-the-performance-of-web-pages.html"/>
    <updated>2012-11-15T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/23-rules-to-improve-the-performance-of-web-pages</id>
    <content type="html">Yslow-23条规则YslowYahoo发布的一款基于FireFox的插件，主要是为了提高网页性能而设计的，下面是它提倡了23条规则，还是很不错的，分享一下：1.减少HTTP请求次数合并图片、CSS、JS，改进首次访问用户等待时间。2. 使用CDN就近缓存==&amp;gt;智能路由==&amp;gt;负载均衡==&amp;gt;WSA全站动态加速3. 避免空的src和href当link标签的href属性为空、script标签的src属性为空的时候，浏览器渲染的时候会把当前页面的URL作为它们的属性值，从而把页面的内容加载进来作为它们的值。测试4. 为文件头指定Expires使内容具有缓存性。避免了接下来的页...</content>
  </entry>
  
  <entry>
    <title>Hibernate学习和使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/hibernate-use-and-study-note.html"/>
    <updated>2012-11-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/hibernate-use-and-study-note</id>
    <content type="html">一、学习Hibernate的官方Reference文档从3.6版本之后，Hibernate的xml推荐使用如下的声明&amp;nbsp;即，用http://www.hibernate.org/dtd/替换原来sourceforge那种格式。&amp;nbsp;以前C3P0驱动是如下配置的：&amp;nbsp;在新版本中应该用如下配置：org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProviderHibernate官方文档从一开始就开始介绍Hibernate是和JBoss数据库结合在一起的，Hibernate的required包里面就有...</content>
  </entry>
  
  <entry>
    <title>标准SQL与数据库技术</title>
    <link href="https://blog.zollty.com/b/archive/standard-sql-and-database-technology.html"/>
    <updated>2012-10-28T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/standard-sql-and-database-technology</id>
    <content type="html">SQL是Structured Query Language简写Data Definition Language(DDL数据定义语言) (create、alter、drop)Data Manipulation Language(DML数据操作语言) (select、insert等)Data Control Language(DCL数据控制语言) (commit、rollback、savepoint)Transaction Language(TL数据事务语言) (grant、revoke)关系模式的范式&amp;nbsp; &amp;nbsp; 主要有4种范式，1NF，2NF，3NF，BCNF，按从左至右的...</content>
  </entry>
  
  <entry>
    <title>我的Eclipse使用笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-eclipse-note.html"/>
    <updated>2012-09-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-eclipse-note</id>
    <content type="html"> 新安装的Eclipse，首先得做几个事情：1. 设置默认编码，用UTF-82. 根据个人喜好，设置默认字
体3. 设置默认的JDK4. 设置Maven5. 设置项目统一的Code Formatter（代码格式）6. 设置统一的Code 
Template（代码模板）7. 设置Tomcat  1、修改字体无反应 直接修改工作空间下的配置文件：D:\C\Java\Workspaces\EclipseCC\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.workbench.prefs 找到eclip...</content>
  </entry>
  
  <entry>
    <title>Java理论知识和编程问题总结</title>
    <link href="https://blog.zollty.com/b/archive/java-language-theory-and-programming-problem-summary.html"/>
    <updated>2012-08-15T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/java-language-theory-and-programming-problem-summary</id>
    <content type="html">1、class.getResource 和 class.getClassLoader().getResource的区别它们的区别在于路径上的区别：Class.getResource(String path)&amp;nbsp; &amp;nbsp; path不以 &amp;#39;/&amp;#39; 开头时，默认是从此类所在的包下取资源；&amp;nbsp; &amp;nbsp; path 以 &amp;#39;/&amp;#39; 开头时，则是从ClassPath根下获取；Class.getClassLoader().getResource(String path)&amp;nbsp; &amp;nbsp; path不能以 &amp;#39;/&amp;#39; 开头；（否则什...</content>
  </entry>
  
  <entry>
    <title>我的Oracle技术笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-oracle-technical-notes.html"/>
    <updated>2012-08-10T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-oracle-technical-notes</id>
    <content type="html">ORACLE添加数据库连接的方法在：{安装目录}\db_1\NETWORK\ADMIN下面打开tnsnames.ora文件添加类似于下面的字符串：rdtest&amp;nbsp;=
&amp;nbsp;(DESCRIPTION&amp;nbsp;=
&amp;nbsp;&amp;nbsp;(ADDRESS_LIST&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;(ADDRESS&amp;nbsp;=&amp;nbsp;(PROTOCOL=TCP)(HOST=11.6.31.120)(PORT=1422))
&amp;nbsp;&amp;nbsp;)
&amp;nbsp;&amp;nbsp;(CONNECT_DATA&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;(S...</content>
  </entry>
  
  <entry>
    <title>URL传递中文解决方案</title>
    <link href="https://blog.zollty.com/b/archive/solution-of-url-contains-chinese.html"/>
    <updated>2012-05-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/solution-of-url-contains-chinese</id>
    <content type="html">首先，弄清楚为什么url传递中文会转码或者乱码，以及http头contentType=&amp;quot;text/html; charset=GBK&amp;quot;的作用。html代码会经过web服务器，浏览器处理，所以造成转码或者乱码的原因，可能涉及到：页面本身的设置、web服务器的设置、浏览器的设置。&amp;nbsp;在动态页面，比如jsp、php中，可以设置contentType=&amp;quot;text/html; charset=GBK&amp;quot;在服务器，比如apache中可以在web.xml中设置&amp;lt;Connector port=&amp;quot;8080&amp;quot; protocol=&amp;quo...</content>
  </entry>
  
  <entry>
    <title>我的Struts技术笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-struts-note.html"/>
    <updated>2012-05-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-struts-note</id>
    <content type="html">Struts 21. Struts主要是充当控制器（Controller）的作用，同时也给V端提供了许多标签，这些标签能够和AJAX结合起来。2. 要使用Struts 2，需要把相关的jar文件拷贝到WEB-INF/lib目录下，并在web.xml配置文件中配置Filter（过滤器）。3. Filter配置好后，就可以使用Struts 2了，为控制层配置Action 处理结果和视图文件之间的映射，配置文件为src/struts.xml。示例如下：&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&amp;lt;!DO...</content>
  </entry>
  
  <entry>
    <title>做程序员多年的经验总结</title>
    <link href="https://blog.zollty.com/b/archive/years-of-experience-as-a-programmer.html"/>
    <updated>2012-05-12T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/years-of-experience-as-a-programmer</id>
    <content type="html">1. 程序员是很nice的职业，智慧与艺术并存，如果你无法这么想，甚至是经常厌烦的话，我想你还是转行比较好。的确，很多人都在抱怨，也许你就是其中之一，程序猿、码农、苦逼！即使你做到了较高的职位，项目经理，依然改变不了苦逼的命运。唯一能改变苦逼命运的，就是心态。热爱它，劳逸结合，驾轻就熟。&amp;nbsp; &amp;nbsp; 1）大家无非对现实极为不满，所以才嘲笑、自嘲。的确，在以前，程序员是很牛B的职业，什么图灵、冯诺依曼、香农等等大科学家都爱称自己是程序员，但是如今已经是白热化，程序员多如牛毛……所以说程序员快和农民工差不多了，这个确实是！&amp;nbsp; &amp;nbsp; 2）程序员单纯，很容易被老板...</content>
  </entry>
  
  <entry>
    <title>JavaEE技术手册</title>
    <link href="https://blog.zollty.com/b/archive/javaee-study-note.html"/>
    <updated>2012-04-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/javaee-study-note</id>
    <content type="html">JavaEE技术手册作者：zollty&amp;nbsp;一、几个术语ASF：Apache Software Foundation，即Apache自由软件基金会。Jakarta：ASF这个组织包含了很多软件项目，Jakarta是ASF旗下的一套Java解决方案的开源项目的名称，它包括了很多子项目，比如Tomcat、Ant、Struts等。JVM：即Java虚拟机，包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。它屏蔽了与具体操作系统平台相关的信息，使Java程序只需生成在Java虚拟机上运行的目标代码（字节码），就可以在多种平台上不加修改地运行。JSP：即Java Se...</content>
  </entry>
  
  <entry>
    <title>JSP技术</title>
    <link href="https://blog.zollty.com/b/archive/jsp-technology.html"/>
    <updated>2012-04-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/jsp-technology</id>
    <content type="html">1、include动作指令和jsp:include标签的使用特别注意其路径的书写方式。我相信有90%的程序员都会忽略一个细节：以include动作指令为例，写法有二&amp;lt;%@ include file=&amp;quot;/WEB-INF/views/common/taglibs.jsp&amp;quot;%&amp;gt;&amp;lt;%@ include file=&amp;quot;../common/taglibs.jsp&amp;quot;%&amp;gt;第一种是绝对路径，第二种是相对路径。这两种写法都正确。再看看html标签中的写法，以css文件的引入为例：&amp;lt;link href=&amp;quot;../resources/c...</content>
  </entry>
  
  <entry>
    <title>我收录的智力测试题</title>
    <link href="https://blog.zollty.com/b/archive/my-intelligence-test-questions.html"/>
    <updated>2012-03-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-intelligence-test-questions</id>
    <content type="html">公司面试题B：&amp;nbsp; &amp;nbsp; 有12颗珍珠，其中1颗的重量与其他11颗的重量不同，除此之外这12颗珍珠完全相同。现在要用一台没有砝码的天秤，将那颗重量不同的珍珠找出来，并且确定它比其它11颗重还是轻。你至少要称多少次？给出测量方法。zollty给出的答案：&amp;nbsp; &amp;nbsp; 只需要称三次即可。&amp;nbsp; &amp;nbsp; 首先将12颗珍珠从1到12编号，先将1-4号放在左边，5-8号放在右边。&amp;nbsp;1、2、3、4 （左） &amp;nbsp;--------------- &amp;nbsp; 5、6、7、8 （右） &amp;nbsp; &amp;nbsp;剩下9、10、11、12可以肯定： ...</content>
  </entry>
  
  <entry>
    <title>程序员需要的能力</title>
    <link href="https://blog.zollty.com/b/archive/the-ability-of-programmers-to-be-required.html"/>
    <updated>2012-02-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-ability-of-programmers-to-be-required</id>
    <content type="html">总的来说，还是因工作性质不同而异，但是就我的经验和做过的东西看来，需要以下几点：1、学习能力，我曾经就接受了一项任务，要完成这项任务，我必须得学习新的语言和技术……而且要在很短的时间内完成；2、细心，我曾经被无数的Bug困扰，印象深刻的一次是仅仅漏写了一个英文单引号，但是我半天都没发现错误（因为一个小小的单引号根本看不出来，而且错误提示不清楚，调试也不方便）。3、英文水平，我做东西的时候经常要用到一些插件或者某项技术，而这些东西最好的参考资料就是官方网站上的资料或者Reference。再退一步讲，程序好的话看代码也方便很多，一看英文单词就大概知道什么意思了……4、兴趣、钻研精神，要想成为...</content>
  </entry>
  
  <entry>
    <title>嵌入式开发总结</title>
    <link href="https://blog.zollty.com/b/archive/embedded-development-summary.html"/>
    <updated>2012-01-11T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/embedded-development-summary</id>
    <content type="html">序：&amp;nbsp; &amp;nbsp; 读大学时学过计算机组成原理、操作系统、计算机网络等等课程，但是大学生都知道，上完那些课只是懂一点皮毛而已，打打酱油就过去了。特别是对于软件工程师，一定要多实践、多思考才行。理论知识显得并没有搞硬件或者偏硬件开发的那么重要，因为软件的重点在于逻辑和算法。&amp;nbsp; &amp;nbsp; 我认为，在中、高级阶段，偏硬莫非就是一种知识活儿，而偏软莫非就是一种体力活儿……只有到达专家阶段才能够有所突破。对比一下培训机构的软件开发和硬件开发的培训费用就知道了，一般的软件培训（JAVA/C++/PHP/C#），收费大概是一个月3000，强调是“一个月”，一般的培训都是2~6...</content>
  </entry>
  
  <entry>
    <title>技术学习的方法研究</title>
    <link href="https://blog.zollty.com/b/archive/research-on-technology-learning.html"/>
    <updated>2011-12-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/research-on-technology-learning</id>
    <content type="html">&amp;nbsp; &amp;nbsp; 我有一个困惑，我曾经系统地学过XML、PHP、Javascript，基础知识差不多都学会了。但是我发现时隔2~3个月不用，就会忘记，大概还记得有哪些东西，但是不记得具体怎么使用了。甚至我以前学习C语言一年半，隔了半年没用就忘了很多。&amp;nbsp; &amp;nbsp; 所以我非常希望能找到一种好的学习方法，运用这种方法可以快速的学会一门技术，而且深深地印在脑中，即使1年不用也不会忘记。下面就是我总结的方法，多少有些靠谱。&amp;nbsp;1.首先打好学习提纲，列出需要学习的知识条目，并分清主次；2.准备两个本子放在手边，一个用来打草稿，一个用来做笔记；3.将笔记内容整理成WO...</content>
  </entry>
  
  <entry>
    <title>Windows系统使用经验</title>
    <link href="https://blog.zollty.com/b/archive/experience-with-windows-system.html"/>
    <updated>2011-12-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/experience-with-windows-system</id>
    <content type="html">
一、CMD操作大全CMD列出目录文件信息：dir *.* /s -&amp;gt; d:/a1.txt查看端口占用：查看所有端口：netstat -ano查找指定端口：netstat -ano | findstr &amp;quot;172.26.1.133:1521&amp;quot;命令行删除文件夹：rmdir /s/q XXXDIR二、运行（WIN+R）远程连接： mstsc远程连接时，可以共享本地磁盘，这样远程服务器和本地电脑可以互相拷贝文件。方法如下：打开mstsc远程桌面，有一个 “本地资源” 菜单，下面有一个 “本地设备和资源” 选项，打开详细信息就可以勾选共享的磁盘。打开远程共享文件：\\1...</content>
  </entry>
  
  <entry>
    <title>将Windows的桌面目录、收藏夹等设置到D盘</title>
    <link href="https://blog.zollty.com/b/archive/set-windows-desktop-favorites-to-d-disk.html"/>
    <updated>2011-12-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/set-windows-desktop-favorites-to-d-disk</id>
    <content type="html">PS：我们有很多东西放在桌面上，但是一旦系统出了故障要还原或者重装，桌面上的东西就没救了（当然，如果你是高手，当系统出了故障进不去时，可以试着用U盘启动，然后把C盘下桌面上的东西拷贝出来）。&amp;nbsp;最好的办法是，将桌面目录设置到其他盘（比如D盘）。 C盘中，尽量不要放重要的资料。&amp;nbsp;我以前系统坏过一次，桌面上好多重要的资料都丢了。&amp;nbsp;方法如下：&amp;nbsp;1、打开注册表：运行（WIN键+R键），输入regedit2、依次点开：HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\She...</content>
  </entry>
  
  <entry>
    <title>WIN7+LINUX双系统</title>
    <link href="https://blog.zollty.com/b/archive/dual-system-of-win7-and-linux.html"/>
    <updated>2011-11-24T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/dual-system-of-win7-and-linux</id>
    <content type="html">WIN7+Fedora16双系统装上了，太折磨人了，不是这里出问题，就是那里出问题。PS：主要问题如下1. menu.lst的写法；2. 辨认(hd0,0)和sda1；3. XP和WIN7，Fedora和Ubuntu，安装方法和难易程度都不同；4. 硬盘分区的问题，用Acronis Disk 分的EXT3分区，Fedora和Ubuntu都识别不了，总显示“不可使用”。&amp;nbsp;下面总结经验，便于快速搞定双系统的安装（1个小时内搞定）分类一：&amp;nbsp; &amp;nbsp; 1.光盘安装&amp;nbsp; &amp;nbsp; 2.U盘安装&amp;nbsp; &amp;nbsp; 3.硬盘安装分类二：&amp;nbsp; &amp;nb...</content>
  </entry>
  
  <entry>
    <title>硬盘类型和Linux分区</title>
    <link href="https://blog.zollty.com/b/archive/hard-disk-type-and-linux-partition.html"/>
    <updated>2011-11-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/hard-disk-type-and-linux-partition</id>
    <content type="html">真怪自己知识不够啊，Linux系统倒是安装过几次了，但是一些知识还是不懂……&amp;nbsp;比如说，/dev/hda，/dev/hdb，/dev/sda，这个hda和sda是什么呢？它们有什么区别？&amp;nbsp;嗯，百度一下，查到了IDE，SATA，SCSI。这是什么东西啊？是硬盘接口名，代指不同类型的硬盘，我的硬盘是“希捷7200转SATA硬盘”，中关村OL上的硬盘分类为：SATA3.0，SATA2.0，SATA1.0，PATA，SAS。目前最流行的当然就是SATA3.0硬盘了，最贵最高档的是企业专用SAS硬盘。&amp;nbsp;说明：IDE，SATA，SCSI是硬盘的三个大类，技术上有较大区别。...</content>
  </entry>
  
  <entry>
    <title>随机洗牌算法</title>
    <link href="https://blog.zollty.com/b/archive/random-shuffling-algorithm.html"/>
    <updated>2011-11-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/random-shuffling-algorithm</id>
    <content type="html">随机洗牌算法，或者叫“排列组合算法”，或者叫“生成不重复的随机数”，是一种很常用的算法。先看看肖舸老师的文章：《随机洗牌算法复杂度的比较实例》http://tonyxiaohome.blog.51cto.com/blog/925273/313362其实我最初想到的也是那3个方法：1判断生成的随机数有没有重复，2.生成一张布尔表，3.双随机数。下面给出我的算法：（利用C++的vector向量极大的简化了算法）#include&amp;nbsp;&amp;lt;iostream&amp;gt;
#include&amp;nbsp;&amp;lt;vector&amp;gt;
#include&amp;nbsp;&amp;lt;time.h&amp;gt;
...</content>
  </entry>
  
  <entry>
    <title>数组下标处理问题（0和1）</title>
    <link href="https://blog.zollty.com/b/archive/array-index-processing-0-and-1.html"/>
    <updated>2011-09-30T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/array-index-processing-0-and-1</id>
    <content type="html">数组下标处理问题（0和1）&amp;nbsp;主要是针对于插入排序算法写的程序，其他情况可以借鉴这些思路。&amp;nbsp;数学上或者通常意义上，下标都是从1开始的，但是在多数编程语言里面数组下标都是从0开始的，这就很恼火了，简单一个下标处理起来却异常麻烦！请看例如：（1）典型的数组下标越界问题假设有个数组：a[0] a[1]，我们要用插入法排序，把a[1]插入到a[0]前面，插入法是这样写的while( a[j]&amp;gt;temp) &amp;nbsp; &amp;nbsp; &amp;nbsp; // j=0; temp=a[1];{a[j+1]=a[j--];}a[j+1]=temp;其原理是把比temp（即a[1]）小...</content>
  </entry>
  
  <entry>
    <title>由排序算法引出的数据结构</title>
    <link href="https://blog.zollty.com/b/archive/data-structure-and-sorting-algorithm.html"/>
    <updated>2011-09-29T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/data-structure-and-sorting-algorithm</id>
    <content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp;本文较为深入地研究了各类基本的排序算法，并由此引伸到对于数据结构的认识。&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; 怎样选择算法？哪种排序算法最好？要回答这些问题首先要建立在数据特征和对数据的操作要求上，根据不同的数据特征和操作要求选择合适的数据存储结构。&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;数据存储结构分类如下：（1）顺序存储（2）链表结构（3）索引（4）散列表&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;对于顺序表和链表，实际应用中又分栈、队列、树、图等。再回头来看排序算法：&amp;nbsp; &amp;nbsp; &amp;nbs...</content>
  </entry>
  
  <entry>
    <title>B2C、C2C电子商务分析</title>
    <link href="https://blog.zollty.com/b/archive/b2b-and-c2c-electronic-commerce-analysis.html"/>
    <updated>2011-09-27T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/b2b-and-c2c-electronic-commerce-analysis</id>
    <content type="html">1.何谓B2C、C2C、I2C、EC？&amp;nbsp; &amp;nbsp; EC即是电子商务（Electronic Commerce）的缩写；&amp;nbsp; &amp;nbsp; B即Business，意为商家，C即Customer，意为顾客，2即英文单词to；&amp;nbsp; &amp;nbsp; B2C：商家对个人的电子商务模式（商家开网店）；&amp;nbsp; &amp;nbsp; C2C：个人对个人（任何人都可以自己开网店）；&amp;nbsp; &amp;nbsp; M2C（Manufacturers to Customer）——生产厂商对个人（厂家直销）；&amp;nbsp;2.C2C和B2C的比较&amp;nbsp; &amp;nbsp; 在市场成长阶段初期...</content>
  </entry>
  
  <entry>
    <title>现实网络组网分析</title>
    <link href="https://blog.zollty.com/b/archive/real-networking-analysis.html"/>
    <updated>2011-09-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/real-networking-analysis</id>
    <content type="html">最近在 柯莱特信息系统有限公司 学习网络知识和网络编程。收集整理资料如下：先看一个实际案例：案例出处：http://zhidao.baidu.com/question/244623928.html主题：公司搬家，要重新设置路由器及网络配置。解决时间：2011-5-26 13:44 提问者：&amp;nbsp;问： 现有设备是飞鱼星VE1000、深信服S5100 VPN 和几台交换机，联通给了一个外网的 IP 别的就不管了，现在我不知道该从何下手，请各位帮帮忙吧，不胜感激！&amp;nbsp;最佳答案：网络的连接方式很简单，联通的外网线接飞鱼星 WAN&amp;nbsp; 然后LVN口连接你的电脑和s5100 v...</content>
  </entry>
  
  <entry>
    <title>网络设备及网络基础知识</title>
    <link href="https://blog.zollty.com/b/archive/network-equipment-and-network-knowledge.html"/>
    <updated>2011-09-21T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/network-equipment-and-network-knowledge</id>
    <content type="html">最近在 柯莱特信息系统有限公司 学习网络知识和网络编程。收集整理资料如下：集线器(Hub)：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;基本上已经被淘汰了（被交换机取代），集线器的主要功能是对接收到的信号进行再生整形放大，以扩大网络的传输距离，同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层，即“物理层”。&amp;nbsp;交换机(Switch)：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;工作在数据链路层。交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上，控制电路收到数据包以后，处理端口会...</content>
  </entry>
  
  <entry>
    <title>邮件和邮件服务器</title>
    <link href="https://blog.zollty.com/b/archive/email-and-email-server.html"/>
    <updated>2011-09-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/email-and-email-server</id>
    <content type="html">1. 我们普通个人使用163邮箱、QQ邮箱、雅虎邮箱、Gmail邮箱、新浪邮箱等等就足够了。2. 大型企业或者有特殊需求的公司需要一个“自己的”邮件服务器，例如下面列举的企业邮件的地址：问问 &amp;lt;wenwen@tencent.com&amp;gt;飞信&amp;lt;service-no-reply@mail.fetion.com.cn&amp;gt;博雅php &amp;lt;php@boyaa.com&amp;gt;珍爱网&amp;lt;sal@cherish.com&amp;gt;柯莱特&amp;quot;milan&amp;quot; &amp;lt;milan@camelotchina.com&amp;gt;中华英才网&amp;lt;reminder@mychinah...</content>
  </entry>
  
  <entry>
    <title>C、C++容易出错的几个地方</title>
    <link href="https://blog.zollty.com/b/archive/error-prone-areas-of-c-and-cpp.html"/>
    <updated>2011-09-14T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/error-prone-areas-of-c-and-cpp</id>
    <content type="html">1. sizeof()和strlen()函数sizeof常见标准用法：(1)char buff[6];&amp;nbsp; &amp;nbsp; strncpy(buff, argv[1], sizeof(buff));(2)int array[] = { 3, 1, 4, 1, 5, 9 };&amp;nbsp; unsigned int array_size = sizeof(array) / sizeof(array[0]);(3)&amp;nbsp; &amp;nbsp; &amp;nbsp;typedef struct data_type {&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int age;&amp;nbsp; ...</content>
  </entry>
  
  <entry>
    <title>Vi、Vim及Gedit编辑器</title>
    <link href="https://blog.zollty.com/b/archive/vi-vim-and-gedit.html"/>
    <updated>2011-09-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/vi-vim-and-gedit</id>
    <content type="html">Linux doc by: zollty&amp;nbsp;搜索（注意，不需要输入:号。也可以先输入:号再键入命令）&amp;nbsp;/string……………………向后搜索，从光标处向文件尾搜索，按n键继续搜索下一个?string……………………向前搜索注意：搜索时会将所有匹配的字符串高亮显示，但是使用/和？时光标所移动的方向不一样。搜索中可使用通配符。高级用法：/int \| sum……………用\|来匹配多个分支/get_sum\&amp;amp;...————匹配get_sum中的前三个字符，即get.*Peter\&amp;amp;.*Bob———匹配同时包括 &amp;quot;Peter&amp;quot; 和 &amp;quot...</content>
  </entry>
  
  <entry>
    <title>多态性与虚函数</title>
    <link href="https://blog.zollty.com/b/archive/cpp-polymorphism-and-virtual-function.html"/>
    <updated>2011-08-22T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cpp-polymorphism-and-virtual-function</id>
    <content type="html">多态性与虚函数 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; 面向对象理论中的3个术语：对象、方法和消息。对象（object）：不言而喻，它是构成系统的基本单位，有属性和行为两个要素，在C++中，每个对象都是由数据和函数这两部分组成的，数据即是对象的属性，行为称之为方法（method），方法是对数据的操作，通常由函数实现。调用对象中的函数就是向该对象传送一个消息（message），所谓“消息”，其实就是一个命令。例如：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stud.display();就是向对象stud发出的一个“消息”，通...</content>
  </entry>
  
  <entry>
    <title>C语言中的几个问题</title>
    <link href="https://blog.zollty.com/b/archive/some-problems-in-c-language.html"/>
    <updated>2011-08-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/some-problems-in-c-language</id>
    <content type="html">1. 数组的最大长度问题int n[1000000];这样肯定是不行的，因为这样定义的数组用的是栈内存，系统默认值为最大1Mb，一个int型占4字节这样最大可以申请1024*1024/4=264144个，如果考虑到系统自身的占用最大值约为25000个。int *p=(int *)malloc(1000000*sizeof(int));，这样用的是堆内存，只要你内存有那么多的连续空间就可以。例子如下：#include&amp;lt;stdio.h&amp;gt;&amp;nbsp;&amp;nbsp;
#include&amp;lt;malloc.h&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;
int&amp;nbsp;m...</content>
  </entry>
  
  <entry>
    <title>C++运算符重载</title>
    <link href="https://blog.zollty.com/b/archive/cpp-operator-overloading.html"/>
    <updated>2011-08-18T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cpp-operator-overloading</id>
    <content type="html">序：比如常见的&amp;nbsp;cout&amp;lt;&amp;lt;c3&amp;lt;&amp;lt;c2&amp;nbsp; &amp;nbsp; “&amp;lt;&amp;lt;”和“&amp;gt;&amp;gt;”本来是在C++中被定义为左/右位移运算符的，由于在iostream头文件中对它们进行了重载，所以使用它们能用作标准数据类型数据的输入和输出运算符。因此，在使用它们的程序中必须包含：#include &amp;lt;iostream&amp;gt;&amp;nbsp;1. 运算符重载例子：例1 重载函数作为Complex类的成员函数class&amp;nbsp;Complex
{
public:
	Complex&amp;nbsp;operator&amp;nbsp;+(Complex&amp;nbsp...</content>
  </entry>
  
  <entry>
    <title>将函数的返回值引用定义为引用</title>
    <link href="https://blog.zollty.com/b/archive/define-a-reference-for-the-return-value-of-a-function.html"/>
    <updated>2011-08-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/define-a-reference-for-the-return-value-of-a-function</id>
    <content type="html">“将函数的返回值定义为引用”是一种比较有效的做法。例如（分析见程序的注释）：#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
using&amp;nbsp;namespace&amp;nbsp;std;
char&amp;nbsp;&amp;amp;&amp;nbsp;get_val(string&amp;nbsp;&amp;amp;str,int&amp;nbsp;i)//返回类型为引用
{//若去掉返回值的引用，则返回的是一个无名变量，其值是返回内容的一个拷贝而已，见下一个程序。
	return&amp;nbsp;str[i];
}
int&amp;nbsp;main()
{
	string&amp;nbsp;s(&amp;quot...</content>
  </entry>
  
  <entry>
    <title>函数指针和指针函数</title>
    <link href="https://blog.zollty.com/b/archive/cpp-function-pointer-and-pointer-function.html"/>
    <updated>2011-08-17T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cpp-function-pointer-and-pointer-function</id>
    <content type="html">看一个例子就懂了：下面的程序，当程序接收用户输入时，如果用户输入d，则求数组的最大值，如果输入x，则求数组的最小值，如果输入p，则求数组的平均值。前面4个函数分别实现求最大值、最小值、平均值和未知算法，然后实现了GetOperation函数。这个函数根据字符的返回值指向上面4个函数。它是以函数指针的形式返回的，从后面的main函数的GetOperation(c)(dbData, iSize)可以看出，通过这个指针可以调用函数。#include&amp;lt;stdio.h&amp;gt;
#include&amp;nbsp;&amp;lt;assert.h&amp;gt;

double&amp;nbsp;GetMin(double&amp;...</content>
  </entry>
  
  <entry>
    <title>C++输入输出流</title>
    <link href="https://blog.zollty.com/b/archive/the-input-and-output-stream-of-cpp.html"/>
    <updated>2011-08-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/the-input-and-output-stream-of-cpp</id>
    <content type="html">输入输出流1. 用控制符输出格式，例：#include&amp;nbsp;&amp;lt;iostream&amp;gt;&amp;nbsp;&amp;nbsp;
#include&amp;nbsp;&amp;lt;iomanip&amp;gt;//利用控制符输出必须包含iomanip头文件&amp;nbsp;&amp;nbsp;
using&amp;nbsp;namespace&amp;nbsp;std;&amp;nbsp;&amp;nbsp;
int&amp;nbsp;main()&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;a;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&amp;quot;input&amp;nb...</content>
  </entry>
  
  <entry>
    <title>Windows下设置文件共享</title>
    <link href="https://blog.zollty.com/b/archive/file-sharing-on-windows-system.html"/>
    <updated>2011-08-09T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/file-sharing-on-windows-system</id>
    <content type="html">一、直接共享文件夹（不推荐，但是可以用来做网站调试）1.启用来宾帐户。&amp;nbsp;控制面板-用户帐户-启用来宾帐户2.查看本地安全策略设置是否禁用了GUEST账号。&amp;nbsp;控制面板——管理工具——本地安全策略——用户权利指派——查看“拒绝从网络访问这台计算机”项的属性——看里面是否有GUEST帐户，如果有就把它删除掉。(快捷打开方式，运行——输入gpedit.msc打开组策略)3.设置共享文件夹。直接在你想要共享的文件夹上点击右键,通过“共享和安全”选项即可设置共享。4.其他我的电脑→工具→文件夹选项→查看→去掉“使用简单文件共享（推荐）”前的勾。&amp;nbsp;设置好共享后，在其他局域...</content>
  </entry>
  
  <entry>
    <title>C++结构和类</title>
    <link href="https://blog.zollty.com/b/archive/cpp-struct-and-class.html"/>
    <updated>2011-08-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cpp-struct-and-class</id>
    <content type="html">序：结构和类，是面向对象程序设计语言C++的基础和核心。我特意花时间整理了一下这部分的知识点，还包括了延伸知识点和静态成员等相关内容。1. 结构和类的区别一个结构如下：struct&amp;nbsp;Student
{
private:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;num;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;name[20];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;sex;
public:...</content>
  </entry>
  
  <entry>
    <title>PHP留言板 PHP在线咨询留言系统</title>
    <link href="https://blog.zollty.com/b/archive/php-message-board.html"/>
    <updated>2011-07-19T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/php-message-board</id>
    <content type="html">本文详细介绍本人最近在公司做的一个PHP留言板（PHP在线咨询留言系统）。该模块是公司CMS系统中的一部分。主要功能：&amp;nbsp; &amp;nbsp; 留言，回复，注册，管理。技术细节：&amp;nbsp;1.注册与登录页面无刷新（AJAX）验证；&amp;nbsp;2.一条留言下可显示多条回复（一个原创的算法）；&amp;nbsp;3.留言分页显示；4.留言管理（删除）；&amp;nbsp;5.页面布局（HTML+DIV+CSS）；&amp;nbsp;6.PHP操作MySQL数据库。要使用此留言板，必须先创建数据库，而且MySQL账号设置为root,密码为root（或者自行修改多个php文件中默认的账号和密码）。数据库弄好之后，把...</content>
  </entry>
  
  <entry>
    <title>PHP访问MySQL数据库</title>
    <link href="https://blog.zollty.com/b/archive/php-connect-mysql.html"/>
    <updated>2011-07-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/php-connect-mysql</id>
    <content type="html">PHP访问MySQL数据库因为连接数据库需要较长的时间和较大的资源开销，所以如果在多个网页中都要频繁地访问数据库，则可以建立与数据库的持续连接。即调用mysql_pconnect()代替mysql_connect()。基本步骤：1.连接服务器：mysql_connect();2.选择数据库：mysql_select_db();3.执行SQL语句：mysql_query();————————————————————————查询：select显示：show插入：insert into更新：update删除：delete————————————————————————4.关闭结果集：mysql...</content>
  </entry>
  
  <entry>
    <title>我的MySQL技术笔记</title>
    <link href="https://blog.zollty.com/b/archive/my-mysql-note.html"/>
    <updated>2011-07-16T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/my-mysql-note</id>
    <content type="html">一、MySQL Connector for J （MySQL Java JDBC驱动）1、Java数据类型 和 MySQL数据类型的对应关系：参见：https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html2、MySQL 的 JDBC API 实现参见：https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-implementation-notes.html3、JDBC URL 格式、语法和参数...</content>
  </entry>
  
  <entry>
    <title>PHP安装配置要点</title>
    <link href="https://blog.zollty.com/b/archive/php-installation-configuration-key-points.html"/>
    <updated>2011-07-13T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/php-installation-configuration-key-points</id>
    <content type="html">首先，分为以下几种：WIMP: Windows+IIS+MySQL+PHPWAMP: Windows+Apache+MySQL+PHPLAMP: Linux+Apache+MySQL+PHPAPPSERV：集成环境&amp;nbsp; &amp;nbsp; 企业一般用Linux作为网站的服务器，所以一般都是LAMP架构；但是我们个人学习和开发，通常用Windows系统。&amp;nbsp; &amp;nbsp; 推荐个人学习用APPSERV或者WAMP，不要用IIS，IIS安装和设置非常麻烦而且功能远远没有Apache专业。APPSERV安装很简单，一键安装，安装好之后无需配置就可以直接使用。下面讲解WAMP安装的一些...</content>
  </entry>
  
  <entry>
    <title>安装完ADT后重启eclipse出现JVM terminated.Exit code=-1的错误解决方法</title>
    <link href="https://blog.zollty.com/b/archive/android-eclipse-ADT-problem.html"/>
    <updated>2011-07-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/android-eclipse-ADT-problem</id>
    <content type="html">发表于：http://blog.csdn.net/zollty/article/details/6587689
</content>
  </entry>
  
  <entry>
    <title>XML学习总结</title>
    <link href="https://blog.zollty.com/b/archive/xml-learning-summary.html"/>
    <updated>2011-06-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/xml-learning-summary</id>
    <content type="html">&amp;nbsp;1.&amp;nbsp;XML文件在网络环境下的传输与显示&amp;nbsp;&amp;nbsp;&amp;nbsp;在B/S模式下，客户端以后台或者异步的方式下载XML，并在客户端处理XML内容，主要包括：（1）用CSS和XSLT样式表在浏览器中显示XML内容；（2）用DOM、XSLT以及JavaScript和VBScript等脚本语言在浏览器中处理XML文档；&amp;nbsp;&amp;nbsp;&amp;nbsp;（3）也可用Flash、AS等显示和处理XML文档。&amp;nbsp;1.1用XSLT在浏览器中显示XML&amp;nbsp;&amp;nbsp;&amp;nbsp;应用XSLT样式表时，通常还会用到XPath,XPath是一种文档寻址语言，...</content>
  </entry>
  
  <entry>
    <title>Linux网络篇</title>
    <link href="https://blog.zollty.com/b/archive/linux-network.html"/>
    <updated>2011-06-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/linux-network</id>
    <content type="html">
    1. RedHat+WM网络设置


    ifconfig……………………查看网络状况：


    相关信息如下：


    inet…………网卡的IP地址


    bcast…………广播地址


    mask…………子网掩码


    lo…………回环地址（即127.0.0.1，没多大作用，本地服务可能需要）


    &amp;nbsp;


    知识补充：


    （1）广播地址（Broadcast address）：


    受限的广播地址为255.255.255.255（指本地），指向所有子网的广播（例如IP地址为192.168.0.2，广播地...</content>
  </entry>
  
  <entry>
    <title>Linux文件系统</title>
    <link href="https://blog.zollty.com/b/archive/linux-file-system.html"/>
    <updated>2011-06-20T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/linux-file-system</id>
    <content type="html">1、Ubuntu文件结构如下图：/bin&amp;nbsp;bin是Binary的缩写。存放系统中最常用的可执行文件（二进制）。/boot这里存放的是linux内核和系统启动文件，包括Grub、lilo启动器程序。/devdev是Device(设备)的缩写。该目录存放的是Linux的外部设备，如硬盘、分区、键盘、鼠标、usb等。/etc这个目录用来存放所有的系统管理所需要的配置文件和子目录，如passwd、hostname等。/lib&amp;nbsp;存放共享的库文件，包含许多被/bin和/sbin中程序使用的库文件。/lost+found这个目录一般情况下是空的，当系统非法关机后，这里就存放了一些零...</content>
  </entry>
  
  <entry>
    <title>Shell编程笔记</title>
    <link href="https://blog.zollty.com/b/archive/common-use-linux-shell-command.html"/>
    <updated>2011-06-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/common-use-linux-shell-command</id>
    <content type="html">
Linux doc &amp;nbsp;2011 by: zollty（如无特殊说明，本文所有的shell都是基于bash shell，而非dash sh）有些linux的sh指向bash，两者等价，但有些则不一样。两者的区别参见：https://www.cnblogs.com/macrored/p/11548347.htmlhttps://www.jianshu.com/p/762d4cccee7e布尔类型的定义和判断the_world_is_flat=true
# …do something interesting…
if [ &amp;quot;$the_world_is_flat&amp;quo...</content>
  </entry>
  
  <entry>
    <title>VMware, RedHat, VirtualBOX, Ubuntu以及Fedora的安装和配置</title>
    <link href="https://blog.zollty.com/b/archive/VMware-RedHat-VirtualBOX-Ubuntu-Fedora-install-config.html"/>
    <updated>2011-06-08T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/VMware-RedHat-VirtualBOX-Ubuntu-Fedora-install-config</id>
    <content type="html">一、VMware下RedHat的安装和配置1.本人使用的安装文件1.1 RedHat9.0包括三个光盘镜像文件：shrike-i386-disc1.iso，shrike-i386-disc2.iso，shrike-i386-disc3.iso1.2精简版VMware Workstation 7.1.2&amp;nbsp; &amp;nbsp; &amp;nbsp; 压缩文件HB_VMwareWorkstation.rar，里面包含：VMware_Workstation_7.1.2_Micro_Eng.exe和汉化补丁&amp;nbsp;2.安装VMware&amp;nbsp; &amp;nbsp; &amp;nbsp; 很简单，点击VMwar...</content>
  </entry>
  
  <entry>
    <title>学习CSS总结-CSS经验总结</title>
    <link href="https://blog.zollty.com/b/archive/learning-css-summary.html"/>
    <updated>2010-10-23T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/learning-css-summary</id>
    <content type="html">在HTML里面，有3种方式加入CSS：1.内嵌（Inline Style）2.内部样式（Internal Style Sheet）3.外部样式表（Extenal Style Sheet）举例如下：&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;背景图片background-image&amp;lt;/title&amp;gt;
&amp;lt;STYLE&amp;nbsp;type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;内嵌样式&amp;nbsp;--&amp;gt;
H1.mylayout&amp;nbsp;{border-width:1;&amp;nbsp;bo...</content>
  </entry>
  
  <entry>
    <title>指针深入分析</title>
    <link href="https://blog.zollty.com/b/archive/cpp-poiter-learning.html"/>
    <updated>2009-11-06T00:00:00+08:00</updated>
    <id>https://blog.zollty.com/b/archive/cpp-poiter-learning</id>
    <content type="html">指针学习资料（zollty-2009）1.指向普通变量或者某个数或者字符串。例如int j,a[10];int *pointer_1,*pointer_2;pointer_1=&amp;amp;j;pointer_2=&amp;amp;a[7];&amp;nbsp;2.指针作为函数参数。例如&amp;nbsp;(主函数部分)pointer_1=&amp;amp;a;pointer_2=&amp;amp;b;if(a&amp;lt;b) swap(pointer_1,pointer_2);（交换两数的函数）void swap(int *p1，int *p2){ int temp;&amp;nbsp; temp=*p1;&amp;nbsp; *p1=*p2;&amp;n...</content>
  </entry>
  

</feed>
