目前在阿里巴巴搬砖
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
1.1、什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是最大限度地减少无谓的字符串比较,查询效率比较高。
背景 记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高的线程? 当然一个正常的程序员不会写出上述代码,这里只是为了让一个线程占用较高的cpu资源。
一、分布式数据一致性 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。 (1)什么是数据一致性 在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。
提纲 问题的产生 观察者模式主要内容,定义 模式UML结构 使用场景 用户自定义观察者模式通用模式代码(java) 模式分类(推模型和拉模型) 模式实现(推模型) 模式实现(拉模型) 推拉两种模式的比较 优缺点 模式总结 JAVA提供的对观察者模式的支持 怎样使用JAVA对观察者模式的支持 Ruby中的观察者 Ruby提供的观察者模式库 Js中的观察者 问题讨论 问题的产生 一个软件系统里面包含了各种对象,就像一片欣欣向荣的森林充满了各种生物一样。
摘要: 本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。 本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。 一、摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。
最近在整理数据库中的慢SQL,同时也查询了相关资料。记录一下,要学会使用执行计划来分析SQL。 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。
1. 背景 Elasticsearch 在公司的使用越来越广,很多同事之前并没有接触过 Elasticsearch,所以,最近在公司准备了一次关于 Elasticsearch 的分享,整理成此文。此文面向 Elasticsearch 新手,老司机们可以撤了。
1 基本概念 1.1 索引 索引是Elasticsearch存放数据的地方,可以看作是关系数据库中的一张表,相比于关系数据库,Elasticsearch可以快速、高效地对索引中的数据进行全文检索,并且不需要存储元原始数据。
Java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类。@Override,@Deprecated,@SuppressWarnings为常见的3个注解。
1 基本概念介绍 1.1 存储空间(Bucket) 存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。
动态规划( dynamic programming )算法是解决多阶段决策过程最优化问题的一种常用方法,难度比较大,技巧性也很强。利用动态规划算法,可以优雅而高效地解决很多贪婪算法或分治算法不能解决的问题。
《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized. synchronized是Java中的关键字,是一种同步锁。
1、进入webstorm官网 http://www.jetbrains.com/webstorm/,点击DOWNLOAD,开始下载webstorm安装包。 untitled.png 2、开始安装 双击安装包,将下图中左边图标按住拖到右边文件夹里 2.png 勾选Activation code 3.png 进入网站http://idea.lanyus.com 4.png 点击“获得注册码,出现如下弹框 5.png 复制注册码,黏贴到刚才出现的这个对话框里。
Java是如何读到hbase-site.xml 的内容的 Java客户端使用的配置信息是被映射在一个HBaseConfiguration 实例中. HBaseConfiguration有一个工厂方法, HBaseConfiguration.create(); 运行这个方法的时候,他会去CLASSPATH,下找Hbase-site.xml,读他发现的第一个配置文件的内容。
在idea中使用ctrl+b跟踪进入函数之后,每次返回都不知道用什么快捷键,在idea中使用ctrl+alt+方向键首先会出现与win7屏幕方向的快捷键冲突,右键桌面,选择图形属性,将win7的快捷键关闭。
Unitils在集成DBunit时,如果数据库是mysql时,就会出现一些如下: org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method.
Unitils集成DBUnit、Spring-单元测试 1、maven-pom文件中引入相关jar包 org.unitils unitils-dbunit 3.
使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中。理解 gitignore 的 pattern 规则十分重要。
记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库。 请记住,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。
$ git status On branch feature/20160420_complain_630222 Untracked files: (use "git add ..." to include in what will be committed) 在文件夹中,经常会有些“其他”文件,比如上节课最后提到的,编辑器产生~结尾的备份文件,或者一些临时文件。
问题 在使用git时,在未添加.ignore文件前使用 git add . 将所有文件添加到库中,不小心将一些不需要加入版本库的文件加到了版本库中。由于此时还没有提交所以不存在HEAD版本,不能使用 git reset HEAD命令。
git pull 时 往往会遇到各种各样的问题 ,下面是常遇到的一种状况 Updating 7c9e086..936acacerror: The following untracked working tree files would be overwritten by merge:Common/HFHttpRequest/HFHttpRequestParameters.
1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载、实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean缓存池中,以供外层的应用程序进行调用。
对于Maven项目来说,日常使用的多数第三方java库文件都可以从Maven的Central Repository中自动下载,但是如果我们需要的jar文件不在Central Repository中,那么我们就需要手动将自己下载的jar文件加入到Maven的local reposotory中了,此时我们需要向Maven提供用于识别jar文件(可能多个)的groupId, artifactId和version等信息。
在使用ssh等框架开发web程序时配置文件(xml和properties)存放的路径一般为src下,当部署程序时则必须存在于classes路径下,具体如下 src不是classpath, WEB-INF/classes,lib才是classpathWEB-INF/ 是资源目录, 客户端不能直接访问, 这话是没错,不过现在的IDE编译器在编译时会把src下的文件(是文件,不是.java)移到WEB-INF/classes下。
需要引入的JAR net.sourceforge.jexcelapi jxl 2.6.8 com.
在多人合作的项目里,git pull origin master执行完之后出现以下问题: Auto-merging .DS_Store CONFLICT (content): Merge conflict in .DS_Store Automatic merge failed; 原因是.DS_Store这样的文件在项目提交时需要忽略掉。
jar依赖冲突解决实践 前言 随着功能的增多,各种中间件的引入。应用以来的各种jar的规模极具膨胀,出现jar冲突和Class冲突的问题层出不穷,让人不胜其扰。本文针对冲突,提供一个排查和定位问题的最佳实践。
1. 什么是URL编码。 URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value,将他们以name/value编码方式作为URL的一部分或者分离的发送到服务器上。
Git与TortoiseGit基本操作 1. GitHub操作 本节先简单介绍 git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作. 先看看SVN的操作吧, 最常见的是 检出(Check out .
今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久。 首先在看遇到的问题: 在浏览器地址输入,表示传入一个参数test,值为123 http://localhost:8888/Test/index.jsp?test=123 在index.jsp中尝试使用EL表达式取出,代码如下: ${test} 发现毫无结果,再使用requestScope尝试取出: ${requestScope.test} 发现还是毫无结果,感到非常诧异,遂干脆使用java脚本尝试取出。
C3P0: 一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。 默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。
最近需要用到MySQL,从官网上下载了一个安装文件,但是安装时一直弹出如下提示信息: Configuration of MySQL Server 5.7 is taking longer than expected.
不知道什么时候开始,在idea里新建maven项目时,在new module页面,一直显示loading archetype list....,导致一直没办法新建。后来我以为是防火墙问题,各种设置还是不行,最终我怀疑可能是它一直读的自己的配置里缓存,导致的。
修改mvn archetype:create 改成mvn archetype:generate 刚开始学习用Maven, 装好了以后生成一个新的project mvnarchetype:generate -DgroupId=org.
当出现错误Class mocking requires to have objenesis library in the classpath时,缺少了objenesis库文件。。。下载objenesis-1.2.jar导入依赖中,运行成功。
电脑没有C/C++的开发环境了,只能找找在线的编译器。。IDEone不错。。。 本文要推荐9个最好用的在线编译器,以下顺序不按排名先后: 1、ideone 可以在线编译、调试C/C++,JAVA,PHP,Python,Perl,以及其他40多种编程语言。
在使用Junit进行测试时,出现如下问题: 找不到junit.framework.testcase 解决方法: 选中项目->属性->Java构建路径->库->添加外部jar 在eclipse的安装目录中找到 eclipse/plugins/org.junit_3.8.1/junit.jar 添加上就可以了。
1,下载最新版本的MySQL Workbench,下载地址: http://www.mysql.com/downloads/workbench/ 2,安装Workbench的依赖组件两个 http://dev.mysql.com/resources/wb52_prerequisites.html 在这连接里时可以看到两个组件,分别进入两个连接,下载两个组件,总共不到10M。
1、下载。 下载地址:http://downloads.mysql.com/archives/get/file/mysql-5.6.17-winx64.zip。 2、解压MySQL压缩包 解压到指定目录,D:\Dev\mysql-5.6.17-winx64。
1 下载qemu wget http://wiki.qemu-project.org/download/qemu-2.4.1.tar.bz2 2 解压qemu tar -jxvf qemu-2.
一、LVM的基本概念在对磁盘进行分区大小规划时,有时往往不能确定这个分区要使用的总空间大小,而用fdisk对磁盘分区后,每个分区的大小已经固定了,如果分区设置的过大,就白白浪费了磁盘空间,而分区设置的过小,就会导致空间不够用的情形,此时最常见的方法是重新划分磁盘分区,或者通过软连接的方式将此分区的目录链接到另一个分区,虽然能临时解决问题,但是给管理带来了麻烦。
Centos 6.4配置java环境 1 查看CentOS自带JDK是否已安装。 输入:yum list installed |grep java 2 若有自带安装的JDK,如何卸载CentOS系统自带Java环境? ◆卸载JDK相关文件输入:yum -y remove java-1.7.0-openjdk*。
最近在修改内核源码的时候一直出现格式化磁盘的时候,进程会出现状态D,看内核日志会看到如下信息: INFO: task filebench:7143 blocked for more than 120 seconds. 21794 Oct 24 13:21:33 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. 如是,查了一下为什么会出现这种情况,以及为什么进程的状态显示D之后是kill不了的。
tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能等,不过性能相比iet来说要稍差一点。
IET(iSCSI Enterprise Target)是内核态实现的iscsi target,相比于用户态实现的target(比如tgt),iet比较稳定,并且也算是历史悠久,io都直接经过内核态,性能比较好。
随着企业级的数据呈指数增长,传统的集中式存储方案已无法满足其存储要求,因而存储区域网(storage area network,SAN)技术被广泛应用,但其存在距离短、价格贵和构建复杂等不足。基于iSCSI协议的IP存储技术是一种新兴的网络存储技术,它将IP网络技术集成到存储I/O之中,在构建异构的存储网络方面具有其它数据访问协议无法比拟的优势?,已经成为当前网络存储技术的研究热点。
1 tgt程序架构 tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能等,不过性能相比iet来说要稍差一点。
由于测试导致系统启动不了,需要将系统中的数据拷贝出来,所以想到将磁盘挂载到另一个能用的系统中进行拷贝,但是由于创建的系统都是用默认的方式创建的,所以一般的系统盘都是由两个分区组成,例如/dev/sda,/dev/sda1用来存放启动项,而/dev/sda2是一个逻辑卷,都是由/dev/VolGroup/lv_root、/dev/VolGroup/lv_home、/dev/VolGroup/lv_swap三部分组成的,由于逻辑卷的名字是一样的,所以这样导致将系统盘/dev/sdb挂载后,其中的逻辑卷部分不能挂载。