- 博客(18)
- 收藏
- 关注
原创 软件设计精粹
以下来自—— Rob Pike—— 一、终极目标软件设计的终极目标不是增加功能,而是消除需求。二、设计原则1. 你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。2. 估量。在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度。3. 花哨的算法在 n 很小时通常很慢,而 n 通常很小。花哨算法的常数复杂
2017-03-15 18:30:48 281
转载 windows交叉编译golang
1、下载相关程序。 Golang下载:http://www.golangtc.com/download Git下载:http://git-scm.com/download/ TDM-GCC下载:http://tdm-gcc.tdragon.net/download2、Go编译环境配置 安装 TDM-GCC,程序会自动设置PATH环境变量,如果没有设置成功请手动设置。 安装Go,安装完后需要
2017-01-10 15:08:14 712
转载 redis数据淘汰策略
在 redis 中,允许用户设置最大使用内存大小 server.maxmemory,在内存限定的情况下是很有用的。譬如,在一台 8G 机子上部署了 4 个 redis 服务点,每一个服务点分配 1.5G 的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:volatile-
2016-06-15 19:12:26 7575 1
转载 redis持久化策略
一、Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。 3). 无持久化: 我们可以通过配置
2016-06-15 18:10:54 550
转载 kafka设计理念浅析
Kafka设计背景及原因Kafka最初被LinkedIn设计来处理活动流数据(activity stream data)和系统处理数据(operaitonal data)。活动流数据是指像page view、用户搜索关键词等等通过用户操作产生的数据,它的常见场景有时间线(time line)即新鲜事提醒、用户浏览量 搜索量排名等等。系统处理数据是服务器性能相关的数据,如CPU、负载、用户请求数等,它
2016-06-06 16:12:24 663
原创 安装nginx及tcp代理
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。(百度百科- http://www.dwz.cn
2016-06-03 13:16:24 4545
转载 再谈java内存模型
不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结java的内存模型,要解决两个主要的问题:可见性和有序性。 我们都知道计算机有高速缓存的存在,处理器并不是每次处理数据都是取内存的。JVM定义了自己的内存模型,屏蔽了底层平台内存管理细节,对于java开发人
2016-05-19 15:00:08 296
原创 kafka消费API理解
主要消费部分API:ConsumerConnector connector = Consumer.create(consumerConfig);interface ConsumerConnector { public Map<String,List<KafkaStream>> createMessageStreams(Map<String,Int> topicCountMap); p
2016-05-12 17:29:48 5065
原创 linux部署kafka
1、关闭SELINUXvi /etc/selinux/configSELINUX=enforcing #注释掉SELINUXTYPE=targeted #注释掉SELINUX=disabled #增加:wq! #保存退出 setenforce 0 #使配置立即生效 2、配置防火墙,开启9092端口 vi /etc/sysconfig/iptables #编辑防火墙配置文件-A INPUT
2016-05-12 12:48:51 447
转载 分布式系统中的一致性协议之两阶段提交协议(2PC)
两阶段提交协议是很常见的解决分布式事务的方式,他可以保证分布式事务中,要么所有参与的进程都提交事务成功,要么都取消事务,这样做可以在分布式环境中保持ACID中A(原子性)。 在两阶段提交协议中,包含了两种角色:协调者与参与者。参与者就是实际处理事务的机器,而协调者就是其中一台单独的处理分布式事务的机器。 该算法分为两个阶段: 1.投票阶段 2.提交阶段阶段1:请
2016-04-19 17:04:26 435
转载 java泛型
一、java泛型的好处 1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。3,潜在的性能收益。 泛型为
2016-04-13 19:57:36 414
转载 Linux Shell根据进程名杀死进程
功能是给出一个进程名,就会把关联进程Id全部kill掉。Shell脚本源码如下:#!/bin/sh#根据进程名杀死进程if [ $# -lt 1 ]then echo "缺少参数:procedure_name" exit 1fiPROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`for i in $
2015-12-01 16:53:18 1619
原创 android中M页唤醒app及信息传递
一,采用openapp协议 1,在AndroidManifest.xml中声明接收请求的activity:<activity android:name=".OpenAppActivity"> <intent-filter> <action android:name="android.intent.action.VIEW"/>
2015-10-13 14:26:56 1052
原创 linux安装git
一般linux自带git版本很旧,会有一定问题,可以先卸载系统自带git: yum remove git下载及安装git:wget https://github.com/git/git/archive/v2.2.1.tar.gztar zxvf v2.2.1.tar.gzcd git-2.2.1make configure./configure --prefix=/usr/local
2015-09-15 10:31:50 494
原创 AtomicBoolean的妙用
在开发中,经常要设置开关,通常的做法如下: //这是一个全局变量 boolean isStart = false;然后在某一个需要设置开关的位置:if(!isStart ){ isStart = true; doSomething();}显然这是线程不安全的,通过使用AtomicBoolean可以这样做:private static AtomicBoolean isStart
2015-09-15 09:38:26 1132
原创 CountDownLatch和CyclicBarrier的应用场景
jdk1.5之后,java的concurrent包提供了一些并发工具类,比如CountDownLatch和CyclicBarrier,这里只讲它们的应用场景,暂不作原理剖析。 CountDownLatch:一个线程A等待其它线程都执行完毕后,线程A继续执行。这个线程A也可以是一组线程(使用同一个CountDownLatch来控制即可). CyclicBarrier:一组线程互相等待,所有线程都达
2015-09-15 09:07:49 2047
原创 ThreadLocal的个人理解
本文只讲诉实现原理用来记录。ThreadLocal的核心对象就是ThreadLocalMap,但是它却声明在Thread类里面,所以才能关联一个线程,以达到存储共享变量的作用: ThreadLocal.ThreadLocalMap threadLocals = null;它的初始化和操作都在ThreadLocal类里面,也就是说ThreadLocal只是工具类,ThreadLocalMap 才是共
2015-09-14 17:08:03 414
原创 即时通讯 - netty4纪要
netty4的NioEventLoopGroup是一个线程池,专门负责处理io事件,boss NioEventLoopGroup负责监听网络事件,worker NioEventLoopGroup负责读写,都不能发生阻塞,否则会影响并发性能,可以在handler通道ChannelPipeline中使用内置的线程池EventExecutorGroup来处理耗时业务,相关代码如下:Channel
2015-04-30 18:08:34 918
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人