搭建GitLab私服 介绍GitLab与Github一样,是个代码托管平台。github上只能创建公有代码库,私有的就要收费,gitlab则可以创建公有的和私有的仓库。同时gitlab还是开源的。如果小团队要使用的话,相比Gtihub来说可以减少很多成本。 Gitlab主要功能: 仓库管理 公仓和私仓 (权限分配) 工作流 团队和群组管理 持续集成及自动化 下面就介绍如何搭建Gitlab私服,当然都是参考官网的步骤 2017-08-26 #gitlab
为Hexo的增加置顶功能 主要操作 修改generator.js文件 在文章的front-matter中增加top和sticky属性 操作方法修改generator.js文件修改node_modules\hexo-generator-index\lib\generator.js文件。这个文件是控制生成文章的顺序的。修改成按 top排序。没有top,则按时间来排序。文件内容如下: 123456789101112131415 2017-08-23 #hexo
如何停止一个正在运行的java线程 对于线程来说,执行完特定任务后,自然的结束,当然是当好的选择。但实际有很多情况,在任务没有执行完时,要求停止或者退出。安全的停止一个正在运行的线程,也不是一件容易的事。 错误的关闭方法已废弃的Thread.stop() 原因: 该方法天生是不安全的。使用thread.stop()停止一个线程,导致释放(解锁)所有该线程已经锁定的监视器(因沿堆栈向上传播的未检查异常ThreadDeath而解锁)。 2017-08-22 #java #thread
使用多播技术动态更新系统配置 multicast(多播技术)多播是指把信息同时传递给一组目的地址。它使用的策略是最高效的,因为消息在每条网络链路上只需传递一次,且只有在链路分叉的时候,消息才会被复制。 解决什么问题有这样一个模块A,管理系统的很多配置,其它模块很多地方都是需要从A中读取配置。A中的初始配置数据是从数据库中读取出来的,然后保存在一个缓存map当中。其它模块读取配置时,就直接由map中取出数据。方便快捷。但这又引出 2017-08-21 #multicast
对称加密算法AES实践 对称加密算法简单的来说,对称加密算法就是加密的密钥与解密的密钥是相同的。常用对称加密算法 DES(Data Encryption Standard) 3DES(DES加强版,使用3次DES计算,Triple DES,DESede) AES(Advanced Encryption Standard,3DES加强版) AESAES的具体实现,在下面的参考文章中。在这里了解到,AES的几个模式 E 2017-08-20 #aes
用Firebase给Hexo博客文章添加阅读次数统计 介绍firebase之前也听过,但没怎么注意。今天再找blog统计数时,看到了它的这个统计计数的应用。发现它也是有很多可用之处的。它的产品见这里 它是提供中文的文档的,面向中国地区。但实测中,还是会部分域名遭屏蔽。免费版100连接,1G存储,10G/M的流量,完全够自己用。 回到主题,这里只用到了它的实时数据库。实时显示页面文章的阅读次数。 后面完全可以基于它,写一个评论模块。 下面来说 2017-08-19 #firebase
进程死锁与银行家算法 介绍上篇中,看到在单个进程中,多个线程中可能会形成死锁,并用jstack检测出来了。那是怎么进行检测的呢?产生死锁也就意味着先生之间的等待关系出现了闭合环路,发生死锁。我们可以将等待关系想象成一个单项链表。那么也就将问题转化为判断这个链表中是否出现环路。 当然这里中间个线程中的等待关系。 在操作系统中,也存在类的情况。只是抽象层次更高。并发进程,等待锁,变为等待资源。 死锁的概念在多道程序系统中, 2017-08-19
Jstack来判断死循环、线程等待、死锁、IO等待情况 介绍上一篇介绍了jstack基本用法,在一篇里将对具体的几种情况进行演示和分析。 死循环示例代码 1234567891011package jstack;public class Demo1 { public static void loop() { while (true) { } } public static void main(Stri 2017-08-18 jvm #jstack
Jstack的基本使用与线程介绍 介绍jstack简直给我找到了一扇打开jvm的门。jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合。可以帮助自己分析线程与线程的组织。定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。通过查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。可以直观的看到程序在 2017-08-17 jvm #jstack #分析
用BlockingQueue解决生产消费者问题 阻塞队列(BlockingQueue)介绍阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列提供了四种处理方法: 抛出异常:当操作无法正常完成时,抛出异常 返回特殊值: 当操作无法正常完成时,给出特殊值 一直阻塞 超时退出 方法\处理方式 抛出异常 返 2017-08-13 #java #thread