2017 年互联网校招已近尾声,作为一个非 CS 专业的应届生,零 ACM 经验、零期刊论文发表,我通过自己的努力和准备,从找实习到校招一路运气不错,面试全部通过,谨以此文记录我的校招感悟。
本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。 ## 什么是NLP? 简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务。 这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。 这并不是NLP能做的所有事情。 ## NLP实现 **搜索引擎**: 比如谷歌,Yahoo等。谷歌搜索引擎知道你是一个技术人员,所以它显示与技术相关的结果; **社交网站推送**:比如Facebook News Feed。如果News Feed算法知道你的兴趣是自然语言处理,就会显示相关的广告和帖子。 **语音引擎**:比如Apple的Siri。 **垃圾邮件过滤**:如谷歌垃圾邮件过滤器。和普通垃圾邮件过滤不同,它通过了解邮件内容里面的的深层意义,来判断是不是垃圾邮件。 ## NLP库 下面是一些开源的自然语言处理库(NLP): * Natural language toolkit (NLTK); * Apache OpenNLP; * Stanford NLP suite; * Gate NLP library 其中自然语言工具包(NLTK)是最受欢迎的自然语言处理库(NLP),它是用Python编写的,而且背后有非常强大的社区支持...
最近公司的一台开发机器坏了,需要把部分工作相关的系统转移到另一台机器上,在转移mantis的过程中发现mysql连不上了,而且错误居然是No such file or directory,这个错误信息很明显告诉我文件不存在,但是我是通过网络连mysql,何故会提示文件不存在?于是写了一段测试代码。 $mysqli = new mysqli('localhost', 'root', '', 'bugtracker');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . '): '. $mysqli->connect_error);
} 果然,还是报错!!!! PHP Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in /root/test.php on line 2 为了确保参数没错,使用mysql客户端进行测试 mysql -uroot -hlocalhost 嗯,连上了,完全没有任何错误,那说明参数是没有问题的,可为什么相同的参数,mysql客户端连接正常,php连接不上?为了一探究竟,于是使用strace再次跑了一下这段代码,发现系统调用的connect居然不是使用tcp,而是unixdomain,文件路径是/tmp/mysql.sock,而这个文件确实不存在 connect(3, {sa_family=AF_FILE, path="/tmp/mysql.sock"}, 17) = -1 ENOENT (No such file or directory) 到这里,我已...
## 方案八:CockroachDB cockroachdb是分布式、支持事务、支持SQL操作、K-V存储模式的数据库。CockroachDB的三位创始人全部来自Google,其架构受到Google的 Spanner和F1的启发,[cockroach开源地址](https://github.com/cockroachdb/cockroach/)。  具有: - 标准SQL接口, 使用PostgreSQL协议,支持标准SQL接口,兼容关系型数据库SQL生态; - 扩展能力强、高并发,支持类MPP并行查询框架; - 弹性扩容,持按需扩容, 自动负载均衡; - 多副本强一致,使用raft算法保证数据一致性; - 服务高可用,上去中心化,无SPOF; - 分布式事务,基于MVCC实现事务控制,支持SI和SSI两种隔离级别; [](http://wiki.baidu.com/pages/viewpage.action?pageId=279391634) ### 调研 #### 建表 ```SQL DROP TABLE IF EXISTS "tracks"; CREATE TABLE IF NOT EXISTS "tracks" ( "id" SERIAL PRIMARY KEY , "third_tracks_id" varchar(32) NOT NULL DEFAULT '' , "tracks_title" varchar(255) NOT NULL DEFAULT '' , "tracks_title_other" varchar(255) NOT NULL DEFAULT '', "tracks...
科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlog)来恢复数据。 系统环境: 操作系统:CentOS 6.5 X64 (虚拟机); WEB服务:PHP+Mysql+apache; 网站:为方便,直接在本地搭建一个DEMO站点; 操作步骤: 1.开启binlog功能及基本操作; 2.往站点添加数据; 3.刷新binlog日志; 4.删除数据; 5.binlog日志内容解析; 6.恢复指定数据; 1.开启binlog功能及基本操作 要使用Mysql的binlog日志功能,首先要在Mysql的配置文件中开启该功能,操作很简单。找到Mysql的配置文件,在文件中添加一行”log_bin = mysql-bin”即可。其实在我安装的各种Mysql环境中,该功能通常都是默认开启的。 开启binlog功能后,在mysql的数据库目录下就会有诸如mysql-bin.000001、mysql-bin.000002等文件,这就是mysql的二进制日志文件。每当mysql启动或手动刷新日志后都会新建一个二进制日志文件。 首先我们mysql命令行中,用”show master logs”命令查看已有的binlog文件。 2.往站点添加数据 在网站后台文章模块里,我添加了几条...
4 配置文件读取与数据源配置 本书代码目录:https://fron.com.cn/yangenxiong/CrazyActiviti 要点 掌握Activiti的配置文件读取方式 掌握Activiti的数据源配置 4.1流程引擎配置对象 ProcessEngineConfiguration对象代表一个Activiti流程引擎的全部配置,该类提供一系列创建ProcessEngineConfiguration实例的静态方法,这些方法用于读取和解析相应的配置文件,并返回ProcessEngineConfiguration的实例。除这些静态方法外,该类为其他可配置的引擎属性提供相应的setter和getter方法。本小节主要讲解如何使用这些静态方法创建ProcessEngineConfiguration实例。 4.1.1 读取默认的配置文件 ProcessEngineConfiguration的createProcessEngineConfigurationFromResourceDefault方法,使用Activiti默认的方式创建ProcessEngineConfiguration的实例。这里所说的默认方式,是指由Activiti决定读取配置文件的位置、文件的名称和配置bean的名称这些信息。Activiti默认到ClassPath下读取名为“activiti.cfg.xml”的Activiti配置文件,启动并获取名称为“processEngine...
1、在讲到配置时,不得不说 SpringCloud 提供了一套解决分布式的配置管理方案,它既包含了服务端ConfigServer也包含了客户端ConfigClient; 2、SpringCloud 将配置文件当作源代码一样存储到 git 或者 svn 服务器上,虽然说这样没有什么管理界面配置啥的,既然能用 svn 上传上去,那也能做成管理界面,只是花的工作量多少而已了,而既然都说了是配置,那就是只要会稍微学些git或者svn的提交文件方式,基本上任何都极易掌握; 3、当我们把配置文件放在 git 上的时候,我们如果要做到更新的话,我们需要借助于 git 网页上的 push 操作来触发更新操作;
分布式事物往往是服务化的痛点,很多场景通过业务避免了分布式事物,但是还是存在一些场景必须依赖分布式事物,下面来讲讲如何处理分布式事物
好的开始,是成功的一半。 自我介绍几乎是面试的必备节目,面试官见面寒暄后很可能提出的第一个问题就是“请你简单地做一下自我介绍”。如果你的自我介绍给他留下了深刻的印象,接下来的面试会朝着你预期的好的方向发展;而如果你的自我介绍做的稀碎稀碎的,面试官的“先入为主”恐怕会让你的人生更多一次悲催。 有的求职者很困惑:简历中我的情况已经写的很清楚了,还让我做自我介绍不是多此一举吃饱了撑的吗?你可千万别脑子一热和面试官说“我叫驴得水,我的基本情况,简历里都写了”,这潜台词分明是“你瞎啊,不会自己看啊,问个毛线”,面试官对你的印象分会一下子降为负数…… 面试官想从自我介绍中看到什么? 面试官想从自我介绍中看到什么? 第一,可以考察你自我介绍的内容和递交的简历内容是否相冲突 如果简历是真实的,口述的自我介绍就不会有明显出入;但如果简历有虚假成分,自我介绍可能就会漏出马脚。钓鱼者不建议求职者造假,绝大多数人都无法把谎话说得和真的一样,何况对面坐着的都是老油条。谎言一旦被揭穿,面试就到此为止,而且,还会有避免不了的尴尬与鄙视。就算侥幸没被揭穿,想像下,n年以后,回想这段不光...
“人生是持续而反复的构造”,是一场马拉松。“种一棵树最好的时间是十年前,其次是现在”-《精进》
个性满满!那些有意思的艺术图像生成工具推荐
原
荐
随着深度学习的快速发展以及技术的开源,越来越多的人开始接触和了解深度学习,也出现了越来越多的开源的深度学习项目。其中不乏一些非常有意思的项目,在帮助用户了解深度学习原理的同时,还能生成一些奇特、颇具艺术感的图像。 1、DeepDream DeepDream 是 Google 开源的用来分类和整理图像的 AI 程序 Inceptionism 。Google 把一个人工神经网络项目放到了互联网上“造梦”,它可以挖掘可视的数据,“增强”图像中某些部分,而且其特性是依靠自己的数据集来“识别”里面(的内容)。出图效果是朦胧的、旋涡状有噪点的彩釉色,里面的物体可以反复变化。 2、Neural style Neural style 可以说是一款画风迁移工具,就是让机器模仿已有画作的绘画风格来把一张图片重新绘制的算法。它将计算机算法和艺术相结合,可以将照片风格化为名家大师的画风,而且整个过程十分迅速,在笔记本 CPU 上十几秒就可以风格化一张图片。 3、Neural Doodle Neural Doodle 则是一款将涂鸦变成艺术画的工具。比如说随手涂鸦一幅画,它会使用深层神经网络借鉴真实艺术家的风格,将这幅画变成充满艺术感的画像。整个过程差不多类似于人脑对物体的解析和重构的过程。 4、Image Analogies Image Analogi...
2.任务创建 开始源码阅读,这里我使用了TI cc3200 cortex m4的学习板,由TI提供移植后的freertos。 xTaskGenericCreate 函数用来创建一个新任务,在调度器启动前和启动后都可以创建。Freertos在调度器启动后至少会有一个任务在运行,即使开发者不去创建任务。源码中使用TCB结构体存放一个任务的所有信息,控制了某个TCB便是控制一个任务的运行状态。一个TCB将会根据需要在不同链表内重复插入和移除,比如等待被调度的任务插在readylist中,被taskDelay等函数睡过的任务则乖乖的放入xDelayedTaskList1或xDelayedTaskList2中,这两个链表有点意思,它们解决了systick变量溢出的问题,不过今天它不是主角,以后再细细说来。 先贴一些结构体图片(//亿图画的,绘画水平勉强能看。。。) (TCB) 一个TCB中有两个链表节点,链表本身和节点并不完全相同,链表只保留了几个指针,其它元素根本使用不到,所以被叫做mini_list_item: (LIST) 看清楚了任务及链表结构体组成,开始主流程分析。 (任务创建流程图) 2.1 prvAllocateTCBAndStack函数: 创建TCB Freertos在堆上分配一块TCB大小的空间,分配成功后便给任务分配一块任务栈空间,大小由开发者参数决定。注意栈分配...
Java 9 特性以及解决的问题 Java 9 模块化的一个最大的变化体现在Java结构上。 本文将介绍关于“Java 9模块系统的”高级特性。 Java 9 模块化 我们将探讨关于Java 9模块化系统的以下主题: 1.介绍 2.JavaSe9之Jigsaw Project 3.当前Java系统的问题 4.Java9模块系统的特性 5.Jdk9和Jdk8的对比 6.Java9模块化是什么? 7.Java9模块化系统之母 8.Java9和Java8程序的对比。 介绍 Oracle 将Java 9从2017年3月延期到2017年9月进行发行。 我们知道, Java SE 8提供了三大新特性(加上少量改进和新特性)。 Lambda 表达式 Stream API Date API 同样地, Java SE 9提供了三大新特性(加上少量改进和新特性): Java模块系统(Jigsaw项目) Java REPL(交互式编程) Milling project coin(主要是语法改进的一个项目,Java7的时候就已经开始) 接下来,我们将谈论关于Oracle的Jigsaw项目。 Java SE 9 :Jigsaw项目 接下来我们将对Jigsaw项目--> Java SE 9: Java模块系统中的一些新特性,做一个简单的介绍。 JavaSE9中的Jigsaw项目来源与Oracle项目中一个非常出名的大项目。其实在Java7的版本开始就已经启动。 但是由于变动巨大被延期到JavaSE8,最终是随着17年9月份发布的JavaSE9一起发布。 Jigs...
警告:多图杀猫! 每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,这里我推荐SAS的Li Hui的这篇博客,讲述了如何选择机器学习的各种方法。 另外,Scikit-learn 也提供了一幅清晰的路线图给大家选择: 其实机器学习的基本算法都很简单,下面我们就利用二维数据和交互图形来看看机器学习中的一些基本算法以及它们的原理。(另外向Bret Victor致敬,他的 Inventing on principle 深深的影响了我) 所有的代码即演示可以在我的Codepen的这个Collection中找到。 首先,机器学习最大的分支的监督学习和无监督学习,简单说数据已经打好标签的是监督学习,而数据没有标签的是无监督学习。从大的分类上看,降维和聚类被划在无监督学习,回归和分类属于监督学习。 无监督学习 如果你的数据都没有标签,你可以选择花钱请人来标注你的数据,或者使用无监督学习的方法。 首先你可以考虑是否要对数据进行降维。 降维 降维顾名思义就是把高维度的数据变成为低维度。常见的降维方法有PCA, LDA, SVD等。 主成分分析 PCA 降维里最经典的方法是主成分分析PCA,也就是...
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名。 百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链、404页面)进行提交,可快速删除死链,帮助网站SEO优化。在提交死链的文件中逐个手动填写死链的话太麻烦,工作中我们提倡复杂自动化,所以本文我们一起交流分享Apache服务中通过shell脚本整理网站死链,便于我们提交。 1.配置Apache记录搜索引擎 Apache是目前网站建设最为主流的web服务,但是apache的日志文件默认是不记录百度、谷歌等各大搜索引擎的爬取程序的,所以首先需要我们设置Apache的配置文件。 找到Apache的配置文件httpd.conf,在配置文件中找到下面两行: CustomLog "logs/access_log" common
#CustomLog "logs/access_log" combined 默认采用的是common,这里我们只需要将common这一行前面加#注释掉,然后将combined这一行前的#去掉即可。然后保存重启Apache服务。 注:如果你的服务器上添加了多个站点,每个站点有单独的配置文件,则我们只需要在相应站点的配置文件中设置CustomLog项即可,例如: vim /usr/local/apach...
作为一名前端开发人员,想要的大多都是,在开发过程中,看着自己制作的动画的炫酷以及困难的解决;开发结束后,自己的项目、成果可以被他人认可接受。人们浏览网页时,若一个网页动画效果丰富炫酷,性能良好,体验度良好,自然会受到吸引去打来浏览。吸引用户,自然少不了网页的布局优美、色彩搭配的恰当,更重要的是其中吸引人的炫酷动画效果。
碰到一些需求需要放入可重复key的HashMap,比如Excel需要报错的行号。 那么如果对象实现过hashCode方法和equals 那么放入到hashMap中会出现可能互相覆盖的情形。 原来你是这样的HashMap 正如这篇文章中的测试所说,互相覆盖。 那么就是IdentityHashMap出场的时候啦~ 首先了解一下Object的hashCode方法 /**
* Returns a hash code value for the object. This method is
* supported for the benefit of hash tables such as those provided by
* {@link java.util.HashMap}.
* <p>
* The general contract of {@code hashCode} is:
* <ul>
* <li>Whenever it is invoked on the same object more than once during
* an execution of a Java application, the {@code hashCode} method
* must consistently return the same integer, provided no information
* used in {@code equals} comparisons on the object is modified.
* This integer need not remain consistent from one execution of an
* application to another execution of the same application.
* <li>If two objects are equal according to the {@code equals(Obje...
1、因为在后面要利用 SpringCloud 集成异构系统,所以才有了本章节的 nodejs 微服务; 2、本章节使用了最简单的 http 请求截取 url 的方式,截取不同 url 的后缀做不同的响应处理,简直 so easy;
推荐阅读: 可能是最火的开源项目 —— Java 篇 可能是国内最火的开源项目 —— PHP 篇 可能是国内最火的开源项目 —— Python 篇 截止目前技术前沿网收录了 44513 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,而 C 和 C++ 语言作为最基础的语言,在各类编程语言排行榜中高居不下,因此本文整理了 C/C++ 语言中评分最高并且收藏量超过 100 的几款项目,以供开发者选择和交流,排名如下: 高性能 TCP/UDP/HTTP 通信框架 HP-Socket 评分:9.8,收藏:1404 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示...
Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个主要的功能版本。以下总结了Java SE 9和JDK 9的特点和增强功能,Oracle 对于 Java SE 9的实现。 JDK增强提案(JEP)是对JDK设计和实施非常重要更改的提案。参阅JEP 1:JDK增强提案和路线图流程。Java规范请求(JSR)描述了Java平台的建议和最终规范。请参阅JSR概述。 JDK 9中的重要变化 这些变化影响了多个技术领域。 特征 描述 Java平台模块系统 推出了一种新的Java编程组件--模块,是一个指定的,自描述代码和数据的集合。 模块系统: 引入一个新可选阶段,link time,它在编译和运行时之间,在此期间,可以将一组模块组合并且优化到一个自定义的运行时映像中;在 Java Platform, Standard Edition Tools Reference 中查看 jlink 工具。 添加选项到工具javac,jlink和java,可以指定模块路径在哪里,哪一个定义模块的定位。 引入模块化JAR文件,它是一个在根目录下包含module-info.class的JAR文件。 推出JMOD格式,它是一种类似于JAR的打包格式,除了它可以包含原生代码和配置文件外; 参见jmod工具。 JDK本身已经被分为一组模...
科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
1 Activiti介绍 在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下,对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现。随着电脑的普及,这些工作的参与者只需要在电脑的系统中填入工作内容,系统就会按照定义好的流程自动执行,各级审批者可以得到工作的信息并作出相应的审批和管理操作,数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率,在这种背景下,各种的工作流应用以及中间件应运而生。 工作流应用在日常工作中的应用越来越广泛,JavaEE领域出现了许多优秀的工作流引擎,例如JBoss社区的jBPM、OpenSymphony的OSWorkflow等,在2010年5月17日,以Tom Baeyens为首的工作流小组发布了一个全新的工作流引擎——Activiti,该工作流引擎的第一个版本为5.0alpha1,由于Tom Baeyens是jBPM的创始人(由于意见分歧离开JBoss),因此Activiti的团队希望该流程引擎是jBPM4的延伸,希望在jBPM中积累的经验和知识的基础上,继续进行新一代工作流解决方案的建设,因此将...
1、API 服务网关顾名思义就是统一入口,类似 nginx、F5 等功能一样,统一代理控制请求入口,弱化各个微服务被客户端记忆功能; 2、本章节主要讲解了使用 zuul 的代理功能与反向代理功能,当然 zuul 还有很多属性设置,我就没一一列举所有的测试方法了; 3、http://localhost:8150/routes 地址可以查看该zuul微服务网关代理了多少微服务的serviceId;
很多开发者在看到自己感兴趣的项目时会使用 Star 功能,可以说 Star 的数量在一定程度上代表了开源项目的热门程度,本文整理了 Java 语言中 star 数最多的十五款开源项目,这些项目在 GitHub 上的 star 数均超过 15000,排名如下: Rx 的 Java 实现 RxJava star:26782;fork:4718 .Net响应式编程框架 Rx 的Java版本开源实现,有Groovy, Clojure, Scala and JRuby版本的实现。 分布式搜索引擎 ElasticSearch star:24646;fork:8723 Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决越来越多的用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。这个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 REST 客户端 Retrofit star:23443;fork:4731 retrofit 是一个类型安全的 REST 客户端,用于 Android 平台。 RestAdapter restAdapter = new RestAdapter.Builder()
.setServer("https://api.github.com")
.build();
GitHubService service = restAdapter.create(GitHubService.class); HTTP+SPDY 客户端开发包 okhttp star:2...
昨天我们上线了码云封面人物的栏目,多数人叫好,但也有不少人唱衰。当然你推出任何东西都会有各种评论,这很正常,我们也习以为常。但是还是想说一说我们推出这个栏目的初衷。 码云作为一个平台,在这个平台上的项目和人的成功,才是平台的成功。 所以呢,我们的运营思路有两方面: 1. 推广项目 技术前沿网一直在致力于开源项目的推广,在码云上我们会对好的开源项目进行推荐和分类,方便用户找到这些项目。此外我们上个月刚刚推出的 GVP 计划,就是为了发掘更多有价值的开源项目。 2. 推广人 也就是这次封面人物的目的。互联网让人与人之间的关系越来越淡漠,每个躲在屏幕前的 ID 其实都是一个个活生生的人。因为物理的隔阂,以及身份的隐秘,使得不少人在网上肆无忌惮,喷别人,被别人喷。久而久之,大家就厌恶了这种网络人际关系,然后氛围越来越差。 其实回到真实生活中,大家不会那么的狂躁。举个例子,@宏哥 以语不惊人死不休的特质闻名于 OSC 好几年,到现在也还是这样。但是鄙人在线下与 @宏哥 会面多次,这其实是一个非常 Nice 的人,技术很牛,对人温文尔雅,沟通非常顺畅,虽然长得有点对不起观众。 码云封面人物这个栏目的初衷就是为了展示真实的程序员风采,...
官方文档:https://docs.oracle.com/javase/9/index.html 关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew/toc.htm 这玩意就是一个列表,具体的技术细节需要根据官方文档挖一挖。 modular-模块系统 --- java9的模块化,从一个独立的开源项目而来,名为Jigsaw。 项目官网:http://openjdk.java.net/projects/jigsaw/ ### 为什么要使用模块化 java开发者都知道,使用java开发应用程序都会遇到一个问题,Jar hell,他就像windows里的dll hell。 比如我们启动一个不算大的应用,但依赖了很多的jar,如下图:  摘自:Mark Reinhold的演讲 https://www.youtube.com/watch?v=l1s7R85GF1A 这是很常见的。虽然你可以使用 "java -Djava.ext.dirs=lib xxx" 让命令行小一些,但不可否认,他的classpath就是那么长。顺便说一句,java9中不允许使用extdirs了。 另一方面,jdk本身有很多的api:  对于一些小设备,它太庞大了。 ### helloworld...
jshell 在学习JSHELL之前确保,已经安装过jdk9,可以参阅Java9安装。 为什么要学Jshell 学习Jshell需要知道他的特性, Read-Eval-Print-Loop (REPL) 交互式解释器(REPL)既可以作为一个独立的程序运行, 也可以很容易地包含在其他程序中作为整体程序的一部分使用。 REPL为运行Java脚本与查看运行结果提供了一种交互方式, 通常REPL交互方式可以用于调试、测试以及试验某种想法。 开始使用 切换jdk环境 检查环境 切换到Jshell环境 Hello World 命令 输入-help 进行查看,会展示出Jshell所支持的命令 /history,查看在Jshell输入的的所有指令(不管正确与否) /list,列出所有你输入过的Java源代码(非命令相关) 也可以根据id进行查询 上图列出了我历史操作的一些与Jshell交互的Java代码命令。 根据ID查看Java命令并执行。 /exit ,退出Jshell命令行 /edit,根据id修改曾经输入过的Java代码,一般配合/list进行使用 利用List命令查找你要修改代码的Id。 输入你要更改代码的Id,回车确认。 回车后出来如下页面。 将Java代码修改为你想要的结果,点击Accept进行保存和执行,出现如下图所示结果。默认不会自动退出,需要手动exit。 重新查看list,发现多出一个修改过的历史。 /drop 删...
推荐阅读: 可能是最火的开源项目 —— Java 篇 可能是国内最火的开源项目 —— PHP 篇 截止目前技术前沿网收录了 44478 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,而 Python 语言近年来发展势头一路攀升,因此本文整理了 Python 语言中评分超过 8.0 分的几款项目,并附上评分和收藏量,以供开发者选择和交流,排名如下: 开源 ERP 系统 GoodERP 评分:8.7,收藏:74 GOODERP是一个开源ERP项目,软件采用agpl协议,版权归代码提交者所有,项目范围是一组功能模块,包括财务加进销存的核心模块及满足行业特殊需求的模块,这些模块都以openobject8.0为平台开发,模块全部放在 osbzr/gooderp mater分支的根目录下,每个模块一个目录,参照 ys 的功能菜单和输出布局重新设计。 Go 运行 Python Grumpy 评分:8.6,收藏:85 Grumpy 是一个 Python to Go 源代码翻译编译器和运行时,旨在替代 CPython 2.7。 关键的区别是它将 Python 源代码编译为 Go 源代码,然后将其编译为本机代码,而不是字节码。这意味着 Grumpy 没有 VM。编译的 Go 源代码是对 Grumpy 运行时的一系列调用,Go 库服务与 Python C API 类似的目的(尽管不直...
软件周刊(09.17 — 09.23):本周热门软件更新 — 国内自主物联网操作系统 RT-Thread 3.0 发布;zbus 0.9.0 新版发布,MQ、RPC、微服务总线;Apollo 1.5.0 发布,百度开源的自动驾驶平台;Sharding-JDBC 1.5.4 发布,1.x 系列的最终版本;Gitlab 10.0 发布,代码托管平台
推荐阅读:可能是最火的开源项目 —— Java 篇 很多开发者在看到自己感兴趣的项目时会使用 Star 功能,可以说 Star 的数量在一定程度上代表了开源项目的热门程度,本文整理了 PHP 语言中 star 数最多的十款开源项目,这些项目在 Gitee 上的 star 数均超过 600,排名如下: 轻量级PHP后台接口开发框架 PhalApi star:1007, fork:343 PhalApi是一个PHP轻量级后台接口开发框架。在iOS、Android、Windows Phone、PC版、Web版等各种终端和各种垂直应用不停更新迭代的大背景下,显然很是需要一组乃至一系列稳定的后台接口支撑。 所以,这里希望通过提供一个快速可用的后台接口开发框架,可以: 一来,支撑各业务场景下接口开发; 二来,阐明如何进行接口开发、设计和维护,以很好支持海量访问、大数据、向前向后兼容等; 三来,顺便分享一些好的思想、技巧和有用的工具、最佳实践。 如果您有接口项目开发的需要,又刚好需要一个PHP接口框架,欢迎使用! 我们也争取致力于将我们的PhalApi维护成像恒星一样:不断更新,保持生气;为接口负责,为开源负责! 基于Yii的协同办公管理系统 IBOS star:808, fork:513 IBOS 是一个基于PHP开发,Yii框架的,开源的,快速、高效的协...
工欲善其事必先利其器,在此给 Web 开发人员推荐几款优秀的开源文档生成工具,希望能对大家有所帮助。 1、JavaScript JSDoc 3 这是一款根据 Javascript 文件中注释信息,生成 JavaScript 应用、库、模块的 API 文档的工具。你可以使用它记录如:命名空间、类、方法、方法参数等。该项目还衍生出了许多模板和其他工具来帮助生成和自定义文档,比如: 模板 jaguarjs-jsdoc DocStrap (example) jsdoc3Template (example) minami docdash (example) tui-jsdoc-template (example) 构建工具 JSDoc Grunt plugin JSDoc Gulp plugin 其它工具 jsdoc-to-markdown Integrating GitBook with JSDoc ESDoc 一个 JavaScript 文档生成器,按照规范编写代码注释,即可生成友好的 JavaScript 代码文档。它可以将测试代码和用户手册一并集成到文档中,支持通过插件添加自定义功能。 Demo 2、API apiDoc 这是一款 RESTful Web API 文档生成工具,一个在注释里边编写 API 文档的小工具。有了它,只需在写源码的时候顺手写上一些简单的注释,就可以生成出漂亮的文档了。项目支持大部分主流语言,注释维护起来也比较方便,不需要额外再维护一份文档。 Demo GraphQL Voyager 这是一款将任意 ...
并发程序存在不确定性,出现的方式也没有固定规则。这对程序的应用会造成一些困难,如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。
2 安装与运行Activiti 要点 安装JDK与MySQL 安装Eclipse以及Activiti插件 运行官方的Activiti例子 Activiti的第一个正式版本发布于2010年12月1日,经过多年的发展,Activiti已经成为一个较为成熟的工作流引擎,作为一个开源的工作流引擎,它在工作流领域吸引了众多开发者的目光,在当前的工作流框架角逐中,慢慢成为众多企业的首选。在2017年5月26日,Activiti迎来全新篇章:6.0版本正式发布。本书将以6.0版本为基础,讲解基于Activiti的工作流应用开发。 本章将介绍Activiti的安装与运行、Activiti开发环境的搭建等内容,本书除了最后一章的项目案例外,其他所有的案例均以本章的开发环境为基础。搭建Activiti的开发环境,需要安装JDK、Eclipse、MySQL等软件,除此之外,还会编写第一个Activiti应用,让大家对Activiti有一个初步的了解。 注:本书全部的案例均在Windows7下开发和运行。 ...
前面整合ssm的时候就说要写一个整合jpa的,周末有点空就写下,时间短写得不是特别好,代码有点不规范,注释也没怎么写,将就了哈。
![图片描述][1] 首先声明,我**不是标题党**,你可以说我是老司机,但是这次绝对不会把你带沟里去,关于技术类的文章千篇一律,估计早就看烦了,不妨细细品味这篇文章,带你认识一个不一样的web前端世界,文章主要结合金瓶梅中的人物属性和web前端架构的模块划分关系,分享一个关于我对web前端架构的一点点别致的看法,如果能耐心的看完,对你构建复杂的web应用一定有所收获,当然,有讲的不好的地方,也希望各路大神多多指点,废话不多说,上正文。 大家知道《金瓶梅》中几个重要角色:`武大郎`,`潘金莲`,`西门庆`,`武松`,`王婆`。在故事情节中,各种角色扮演起到不同的作用,互相关联,将故事情节紧密联系在一起,这样的情节构造堪称经典,已然成为经典,而在构建复杂的web前端应用时候,也需要一些模块互相作用,构造一个完整的系统。 **潘金莲(插件)**:我觉得这个比喻再合适不过了,如果这里你只看到公用性,那你就想简单了,潘金莲除了公用性,还有美,没错,插件不仅要有公用性,还要美。这里的美是指代码的简洁,轻量,高维护,对于一个复杂的项目来说,往往会对插件有些特殊的要求,在使用插件的时候,你必须对插件有较深入的了解,确保你能驾驭她,当然在必...
在项目发展初期,可能由于数据量和用户访问量的原因,系统不会出现性能问题,但是随着项目发展,数据量发生具体变化,系统访问量也不断增多,此时对代码的优化就显得迫在眉睫。本文首先讲解如何使用perf4j和aop定期的完成相关日志的统计,其次讲解了如何使用ThreadLocal变量记录一个请求从开始到结束过程中所产生的调用链,并且记录相关方法的调用时间,最后将演示如何使用shell脚本对生成的日志文件进行处理,并生成性能统计报告。 perf4j是一种日志统计工具,其不仅可以进行日志的实时统计,也可以进行定时汇总统计。实时统计主要是记录项目运行过程中的一些消息日志,以便后续排查问题;而定时汇总统计则可用于对方法调用时间进行汇总,并且perf4j能够进行计算每个时间间隔内所有方法的最小调用时间,最大调用时间,平均调用时间,调用次数以及调用方差。这里主要讲解如何使用perf4j进行定时时间统计,如下是在log4j.xml中对service方法进行时间统计的配置: ```xml ``` 这里name属性用于指定log的名称,其与代码中LogFactory.getLog(name)中的name对应,level表示打印info及以上级别的日志,appender-ref则配置了日志的相关...
3 Spring Boot简介与配置 本书代码共享地址:https://fron.com.cn/yangenxiong/SpringCloud 本章要点 Spring Boot简介 Spring Boot使用 3.1 Spring Boot Spring Cloud基于Spring Boot搭建,本小节将对Spring Boot作一个大致的讲解,读者知道Spring Boot作用即可。 3.1.1 Spring Boot简介 开发一个全新的项目,需要先进行开发环境的搭建,例如要确定技术框架以及版本,还要考虑各个框架之间的版本兼容问题,完成这些繁琐的工作后,还要对新项目进行配置,测试能否正常运行,最后才将搭建好的环境提交给项目组的其他成员使用。经常出现的情形是,表面上已经成功运行,但部分项目组成员仍然无法运行,项目初期浪费大量的时间做这些工作,几乎每个项目都会投入部分工作量来做这些固定的事情。 受Ruby On Rails、Node.js等技术的影响,JavaE...
官方文档:https://docs.oracle.com/javase/9/index.html 关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew/toc.htm 这玩意就是一个列表,具体的技术细节需要根据官方文档挖一挖。 modular-模块系统 --- java9的模块化,从一个独立的开源项目而来,名为Jigsaw。 项目官网:http://openjdk.java.net/projects/jigsaw/ ### 为什么要使用模块化 java开发者都知道,使用java开发应用程序都会遇到一个问题,Jar hell,他就像windows里的dll hell。 比如我们启动一个不算大的应用,但依赖了很多的jar,如下图:  摘自:Mark Reinhold的演讲 https://www.youtube.com/watch?v=l1s7R85GF1A 这是很常见的。虽然你可以使用 "java -Djava.ext.dirs=lib xxx" 让命令行小一些,但不可否认,他的classpath就是那么长。顺便说一句,java9中不允许使用extdirs了。 另一方面,jdk本身有很多的api:  对于一些小设备,它太庞大了。 ### helloworld...
疯狂Activiti6.0连载(三)———Activiti开发环境搭建
原
荐
3 Activiti开发环境搭建 本书代码目录:https://fron.com.cn/yangenxiong/CrazyActiviti 本书的common-lib项目,是各个案例的依赖项目,可从以下地址获得: https://fron.com.cn/yangenxiong/CrazyActiviti/tree/master/codes 要点 安装JDK与MySQL 安装Eclipse以及Activiti插件 编写第一个Activiti程序 3.1 安装开发环境 本小节所说的Activiti开发环境包括以下内容: Eclipse IDE Eclipse的Activiti插件 3.1.1 下载Eclipse 本书使用Eclipse作为开发工具,如果想使用Activiti的Eclipse设计器,官方建议使用Kepler(4.3)或者 Luna(4.4)版本,本书所使用的版本为Luna,大家可以从以下的地址得到该版本的Eclipse: h...
作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 KPI 或者是技术宣传的手段。但是在我们看来,大多数人开源做的并不好,大多数开源项目也没有被很好的维护。比如前一段时间微博上流传关于 Tengine 的讨论,一个优秀的开源项目不止是公布源代码就 OK 了,还需要后续大量的精力去维护,包括制定 RoadMap、开发新功能、和社区交流、推动项目在社区中的使用、对使用者提供一定程度的支持,等等。 目前我们在国内没看到什么特别好的文章讲如何运营一个开源项目,或者是如何做一个顶级的开源项目。TiDB 这个项目从创建到现在已经有两年多,从开发之初我们就坚定地走开源路线,陆续开源了 TiDB、TiKV、PD 这三个核心组件,获得了广泛的关注,项目在 GitHub 的 Trending 上面也多次登上首页。在这两年中,我们在这方面积累了一些经验和教训,这里和大家交流一下我们做开源过程中的一些感受,以及参与开源项目(至少是指 TiDB 相关项目)的正确姿势。 ### 什么是开源 Open-source software (OSS) is computer software with its source code made available with a license in which the copyright ...
1、API 服务网关顾名思义就是统一入口,类似 nginx、F5 等功能一样,统一代理控制请求入口,弱化各个微服务被客户端记忆功能; 2、本章节主要讲解了使用 zuul 的代理功能与反向代理功能,当然 zuul 还有很多属性设置,我就没一一列举所有的测试方法了; 3、http://localhost:8150/routes 地址可以查看该zuul微服务网关代理了多少微服务的serviceId;
1 Activiti介绍 在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下,对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现。随着电脑的普及,这些工作的参与者只需要在电脑的系统中填入工作内容,系统就会按照定义好的流程自动执行,各级审批者可以得到工作的信息并作出相应的审批和管理操作,数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率,在这种背景下,各种的工作流应用以及中间件应运而生。 工作流应用在日常工作中的应用越来越广泛,JavaEE领域出现了许多优秀的工作流引擎,例如JBoss社区的jBPM、OpenSymphony的OSWorkflow等,在2010年5月17日,以Tom Baeyens为首的工作流小组发布了一个全新的工作流引擎——Activiti,该工作流引擎的第一个版本为5.0alpha1,由于Tom Baeyens是jBPM的创始人(由于意见分歧离开JBoss),因此Activiti的团队希望该流程引擎是jBPM4的延伸,希望在jBPM中积累的经验和知识的基础上,继续进行新一代工作流解决方案的建设,因此将...
Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个主要的功能版本。以下总结了Java SE 9和JDK 9的特点和增强功能,Oracle 对于 Java SE 9的实现。 JDK增强提案(JEP)是对JDK设计和实施非常重要更改的提案。参阅JEP 1:JDK增强提案和路线图流程。Java规范请求(JSR)描述了Java平台的建议和最终规范。请参阅JSR概述。 JDK 9中的重要变化 这些变化影响了多个技术领域。 特征 描述 Java平台模块系统 推出了一种新的Java编程组件--模块,是一个指定的,自描述代码和数据的集合。 模块系统: 引入一个新可选阶段,link time,它在编译和运行时之间,在此期间,可以将一组模块组合并且优化到一个自定义的运行时映像中;在 Java Platform, Standard Edition Tools Reference 中查看 jlink 工具。 添加选项到工具javac,jlink和java,可以指定模块路径在哪里,哪一个定义模块的定位。 引入模块化JAR文件,它是一个在根目录下包含module-info.class的JAR文件。 推出JMOD格式,它是一种类似于JAR的打包格式,除了它可以包含原生代码和配置文件外; 参见jmod工具。 JDK本身已经被分为一组模...
- OmniGraffle 和 Graphviz - Why draw when you can code? - Graphviz 简介 - 最佳 Graphviz 实践(一):流程图、数据结构图、网络路径 Trace Route - 最佳 Graphviz 实践(二):复杂社会关系链分析(《红楼梦》、《权力的游戏》) - 最佳 Graphviz 实践(三):机器学习算法-决策树(Decision Tree)
列表是最常用的数据类型之一,本文整理了 StackOverflow 上关于列表操作被访问最多的10个问答,如果你在开发过程中遇到这些问题,不妨先思考一下如何解决。 1、迭代列表时如何访问列表下标索引 普通版: items = [8, 23, 45]
for index in range(len(items)):
print(index, "-->", items[index])
>>>
0 --> 8
1 --> 23
2 --> 45 优雅版: for index, item in enumerate(items):
print(index, "-->", item)
>>>
0 --> 8
1 --> 23
2 --> 45 enumerate 还可以指定元素的第一个元素从几开始,默认是0,也可以指定从1开始: for index, item in enumerate(items, start=1):
print(index, "-->", item)
>>>
1 --> 8
2 --> 23
3 --> 45 2、append 与 extend 方法有什么区别 append表示把某个数据当做新元素追加到列表的最后面,它的参数可以是任意对象 x = [1, 2, 3]
y = [4, 5]
x.append(y)
print(x)
>>>
[1, 2, 3, [4, 5]] extend 的参数必须是一个可迭代对象,表示把该对象里面的所有元素逐个地追加到列表的后面 x = [1, 2, 3]
y = [4, 5]
x.extend(y)
print(x)
>>>
[1, 2, 3, 4, 5]
# 等价于:
for i in y:
x.append(i) 3、检查列表是否为空 普通版:...
导语 虽然已经红了很久,但是“微服务架构”正变得越来越重要,也将继续火下去。 各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我们发现,目前网上的这些相关文章中,要么上来就是很有借鉴意义的干货,要么就是以高端的专业术语来讲述何为微服务架构。就是没有一个做到成熟地将技术传播出来,同时完美地照顾“初入微服务领域人员”,从0开始,采用通俗易懂的语言去讲解微服务架构的系列。 所以,本文试图开启微服务架构专题“Re:从0开始的微服务架构”,为还没有入门该领域的技术人员开路,也帮助微服务架构老手温故知新。 这是专题的第一篇文章,从最基础的地方入手,让我们重识微服务架构。 前言 得益于2013年Docker的诞生,微服务概念及架构的推广和落地变得更加的可靠和方便。在2016年及之前,微服务架构的讨论更多的是活跃于互联网企业及社区。现如今,随着Docker和微服务架构组件与Docker等相关技术的逐步成熟,微服务架构已然步入传统企业及传统行业。 但是,程序员作为一个理性消费的群体,需要冷静地思考,避免挖个大坑把自己给埋了。所以,我们需要冷静地搞清楚:微服务(架构)是什么?它有什么优势劣势?我们为什么需要采用微服务架构?如...
## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出。 文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue)。 在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](https://github.com/answershuto/learnVue/tree/master/vue-src),希望可以对其他想学习Vue源码的小伙伴有所帮助。 可能会有理解存在偏差的地方,欢迎提issue指出,共同学习,共同进步。 ## VNode 在刀耕火种的年代,我们需要在各个事件方法中直接操作DOM来达到修改视图的目的。但是当应用一大就会变得难以维护。 那我们是不是可以把真实DOM树抽象成一棵以JavaScript对象构成的抽象树,在修改抽象树数据后将抽象树转化成真实DOM重绘到页面上呢?于是虚拟DOM出现了,它是真实DOM的一层抽象,用属性描述真实DOM的各个特性。当它发生变化的时候,就会去修改视图。 但是这样的JavaScript操作DOM进行重绘整个视图层是相当消耗性能的,我们是不是可以每次只更新它的修改呢?所以Vue.js将DOM抽象成一个以JavaScript对象为节点的虚拟...
微服务治理的特点,网络延迟、分布式事务、异步消息。因此我们针对微服务的梳理也是从这几个方面入手。微服务后依赖关系从代码依赖变成了通讯依赖,我们梳理微服务系统的关键点,就是找出通讯依赖,确定是强依赖,还是弱依赖。
本文简单分析一下JDK1.7的LinkedList源码,看一下其内部的结构以及典型方法的实现~ LinkedList内部结构 查看LinkedList的源码,发现其继承自AbstractSequentialList,实现了List,Deque,Cloneable以及Serializable接口,如: public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
} 也就意味着: LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行列表操作。 LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。 LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。 LinkedList 实现java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。 public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
transient int size = 0;
/**
* Pointer to first node.
* Invariant: (first == null && last == null) ||
...
数据库是所有应用系统的核心,故保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据库系统一旦出现问题无法提供服务,有可能导致整个系统都无法继续工作。所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的。下面就为大家介绍一下如何构建一个高可用的MySQL数据库系统。 做过DBA或者是运维的同学都应该知道,任何设备或服务,存在单点就会带来巨大风险,因为这台物理机一旦宕机或服务模块crash,若在短时间内无法找到替换的设备,势必会影响整个应用系统。因而如何保证不出现单点就是我们的重要工作,使用MySQL高可用方案可以很好地解决这个问题,一般有以下几种: 一、利用MySQL自身的Replication来实现高可用 MySQL自带的Replication就是我们常说的主从复制(AB复制),通过对主服务器做一个从机,在主服务器宕机的情况下快速地将业务切换到从机上,保证应用的正常使用。利用AB复制做高可用方案也分为几种不同的架构: 1、常规的MASTER---SLAVE解决方案 普通的MASTER---SLAVE是目前国内外大多数中小型公司最常用的一种架构方案,主要的好处就是简单、使用设备较少(成本较低)、维护方便。这种架构能解决单点的问题,而且还能在很大程度上...
## 基本环境 * 总共四台虚拟机,安装CentOS 7 X64系统。 * 每台虚拟机两张网卡,分别连接两个网络,NAT网络192.168.195.0,仅主机网络192.168.162.0。 * Target主机安装iSCSI TGT服务,提供共享存储服务。 * Test1和Test2主机利用Target主机提供的共享存储对外提供A/P结构的NFS服务,使用PaceMaker进行集群管理。 * Develop主机mount有Test主机提供的NFS服务并测试其功能。 ## 网络配置 ### IP地址 使用静态IP地址,并按如下的方式进行配置。 Target eth0 : 192.168.195.131 eth1 : 192.168.162.131 Test1 eth0 : 192.168.195.132 eth1 : 192.168.162.132 Test2 eth0 : 192.168.195.133 eth1 : 192.168.162.133 Develop eth0 : 192.168.195.136 eth1 : 192.168.162.136 NFS使用的浮动IP为:192.168.195.200。 ### 域名解析 在四台机器的域名解析文件下增加如下部分,并确保相互可以ping通。 $ vi /etc/hosts 192.168.195.131 target 192.168.195.132 test1 192.168.195.133 test2 192.168.195.136 develop ## 配置iSCSI ### 安装tgt服务 在Target主机上执行如下操作: 安装软件包 $ yum install -y scsi-target-utils iscsi-initiator-utils 配置tgt服务,使用/dev/sdd1分区...
## LVM支持的锁类型 0. 无锁(No Locking) - 不使用锁,此状态下不能并行执行命令,或者由使用者处理并行问题。 1. 本地锁(Local Locking) - 当使用本地flock锁,只能在单机环境下使用;当use_lvmlockd=1时,同时使用lvmlockd提供的锁,可用于集群环境。 2. 外部锁(External Locking) - 使用外部共享库提供的锁功能,可以在配置文件中设置库的名称,在共享库中只要按要求。 3. 集群锁(Clustered Locking) - 使用内建的集群锁,必须配合clvmd来使用,同时必须关闭lvmetad缓存功能。 4. 只读锁(Read-Only Locking) - 只读模式,禁止元数据修改。 5. 哑巴锁(Dummy Locking) - 只读模式,被不需要锁的工具使用。 配置文件: ```sh $ cat /etc/lvm/lvm.conf ... # Configuration option global/locking_type. # Type of locking to use. # # Accepted values: # 0 # Turns off locking. Warning: this risks metadata corruption if # commands run concurrently. # 1 # LVM uses local file-based locking, the standard mode. # 2 # LVM uses the external shared library locking_library. # 3 # LVM uses built-in clustered locking with clvmd. # This is inco...
这是多线程系列第四篇,偏重于线程的实践,对锁的几种应用做个简要介绍
正好项目碰到这个需求,花了一下午基本搞定,记录一下实现步骤以及一些需要注意的坑,本实例后端使用node express,Multer作为处理multipart/form-data的中间件,完整代码:https://fron.com.cn/gaisama/codes/xwus19y6crjnm0vf25dza10
## 什么是vue组件 组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式。 ## 组件使用步骤 ### 1. 定义组件 var myComponent = Vue.extend({ template:" this is my first component" }); ### 2. 注册组件 全局注册组件 Vue.component('myComponent',myComponent) 局部注册组件 var apk = new Vue({ el:"#apk", components:{ "myComponent":myComponent } }) ### 3. 使用组件 ### 4. 上面的定义过程比较繁琐,也可以不用每次都调用Vue.component和Vue.extend方法: // 在一个步骤中扩展与注册 Vue.component('my-component', { template: ' A custom component!' }) // 局部注册也可以这么做 var Parent = Vue.extend({ components: { 'my-component': { template: ' A custom component!' } } }) ## 组件常用方法使用 ### 1. 嵌套组件 组件本身也可以包含组件,下面的parent组件就包含了一个命名为child-component组件,但这个组件只能被parent组件使用: var myComponent = Vue.extend({ template:" this is my first component" }...
关于JDK 和 JRE 的介绍 JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。 如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。 以上解释来源:知乎 在Eclipse我们项目中的Libraries库默认是JRE的,一般需求都能满足,但是当需要编译java文件时就不行了,这就需要我们把它换成JDK。 步骤: 点击相应项目->右键BuildPath-> configureBuildPAth 点击Libraries 出现下面的界面 点击一下JRE System Library(选中) 然后 -> 点击右边的 Edit (不选中Edit是灰的) 出现下面的界面 (这个JDK是我已经加进来后的,你的可能没有) 如果开始你就有那直接选一下就行了。。。。QAQ 如果没有就 点击Installed JREs 出现下面界面 这个JDK(黄色箭...
用docker搭建elasticsearch集群
原
荐
## 概述 用docker进行elasticsearch的部署非常简单,如果要实现集群配置,需要进行一些特殊的处理,本文介绍如何利用docker进行elasticsearch集群的搭建。 具体的配置可以参照该 [示例](https://github.com/qihaiyan/fluentd-boot) ## 主节点配置 ### docker-compose.yml配置文件 ```yml es: image: elasticsearch volumes: - ./es:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: - 9200:9200 - 9300:9300 ``` 其中的```./es:/usr/share/elasticsearch/data```是将elasticsearch的数据文件挂在到本机的一个目录上,这儿指定的本机目录是./es,可以修改为其它有权限的目录。 ### elasticsearch.yml配置文件 ``` yml cluster.name: elasticsearch_cluster node.name: node-master node.master: true node.data: true http.port: 9200 network.host: 0.0.0.0 network.publish_host: master-ip discovery.zen.ping.unicast.hosts: ["master-ip"] ``` ```network.publish_host: master-ip```指定了本机ip,需要将master-ip修改为真实的机器ip。```discovery.zen.ping.unicast.hosts```中的master-ip同样需要修...