自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

唐僧打怪兽

热爱互联网,编程,关注高并发分布式架构,喜欢运动,健身→_→ ~微信公众号:tangtech

  • 博客(75)
  • 资源 (9)
  • 收藏
  • 关注

原创 Redis实现消息队列

基于Redis消息队列-实现短信服务化1.Redis实现消息队列原理常用的消息队列有RabbitMQ,ActiveMQ,个人觉得这种消息队列太大太重,本文介绍下基于Redis的轻量级消息队列服务。 一般来说,消息队列有两种模式,一种是发布者订阅模式,另外一种是生产者和消费者模式。Redis的消息队列,也是基于这2种原理的实现。 发布者和订阅者模式:发布者发送消息到队列,每个订阅者都能收到一样的消

2016-04-25 22:48:34 60496 17

原创 Java数据结构和算法系列3--ThreadLocal类原理详解

1.ThreadLocal介绍Java实现多线程的2种方式,继承Thread类和实现Runnable接口。今天我们介绍下另外一种常用的多线程类ThreadLocal类。 ThreadLocal在维护变量时,为每个使用变量的线程提供了独立的副本,所以每个线程都可以独立的改变自己的副本,而不影响其他线程对应的副本。2.原理ThreadLocal类接口很简单,只有4个方法,我们先来了解一下:void s

2016-01-04 22:09:31 2401

原创 Java数据结构和算法系列2--数组

1.介绍Java最常用的数据结构就是数组了,Java中得数组有2种数据类型:基本类型(如int,long)和对象类型。在许多编程语言中数组是基本类型,但在Java中把它们当做对象来对待,因此在创建数组时必须使用new操作符: int[] intArray = new int[100];[]操作符对编译器来说是一个标志,它说明正在命名的是数组对象而不是普通变量,当然数组变量还可以这么写,就是将它放

2015-12-28 00:20:51 1232

原创 Java数据结构和算法系列1--链表

在Java编程道路上已经行走了6年多了,平时在工作当中,一般都是应用层面的开发,很少涉及到底层,就算有些逻辑算法要写,也可以找到现成的框架来完成,这里不得不自吹自擂下Java的好处了,因为Java开源框架太多了,而且非常成熟丰富。 对于Java数据结构和算法可能有些模糊了,那么现在就来对Java基础知识–数据结构和算法做些整理。 今天就来介绍下链表的数据结构,简单实现一个单向链表。 1 链表数

2015-12-23 15:08:11 930

原创 Redis和MongoDB原理简析

1. Redis1.1 NIO通信因都在内存操作,所以逻辑的操作非常快,减少了CPU的切换开销,所以为单线程的模式(逻辑处理线程和主线程是一个)。 reactor模式,实现自己的多路复用NIO机制(epoll,select,kqueue等) 单线程处理多任务1.2 数据结构hash+bucket结构,当链表的长度过长时,会采取迁移的措施(扩展原来两倍的hash表,把数据迁移过去,e

2015-12-21 22:11:28 911

原创 Spring IOC原理分析

1. IOC简介Spring IOC:英文全拼 Inversion of Control,翻译中文就是控制权反转的意思。大家都知道,在编程时会经常用到1个或者多个对象来完成业务操作。在普通的Java代码中,常常使用new关键字来实例化对象。现在有了Spring IOC,不需要自己去管理对象,而是将对象的管理交由Spring平台框架,由它来负责对象的生命周期和对象间的关系。所以叫做控制权反转。 比如

2015-12-21 11:56:56 970

原创 一致性Hash算法与Java实现

1.简介1.1 普通hash算法普通hash算法是通过key将数据映射到具体节点上,如key%N,key为数据的hash值,N为节点数量,如果有机器加入或者退出集群,则key映射失效了,导致数据丢失。 1.2 一致性hash算法相比普通hash算法,一致性hash就可以解决这种问题。一致性hash是分布式系统常用的一种算法,常用于负载均衡。2.原理分析2.1 环形Hash空间一致性hash算法,将

2015-12-17 17:14:02 2239 1

转载 大型web系统数据缓存设计

前言 在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型、常见缓存系统的特点和数据指标、缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速、系统的了解相关知识。数据库的瓶颈 2.1 数据量 关系型数据库的数据量是比较小的,以我们常用的MySQ

2015-12-08 11:27:03 1433

原创 iOS新闻客户端开发教程-完整教程目录

终于完整写完了iOS新闻客户端App的教程了,其中有些不够详细的,请查看源码。所有的教程在下面目录iOS新闻客户端开发教程1–项目框架搭建iOS新闻客户端开发教程2–应用图标和启动图片设置iOS新闻客户端开发教程3–基类编写iOS新闻客户端教程4-Home主页iOS新闻客户端开发教程5-二级栏目导航条iOS新闻客户端开发教程6-新闻列表iOS新闻客户端开发教程8-加载更多和新闻详情g

2015-12-05 22:02:23 2785 5

原创 iOS新闻客户端开发教程8-加载更多和新闻详情

今天介绍下iOS新闻客户端App的2个功能点的开发:新闻列表加载更多 和 新闻详情页。新闻列表加载更多1.新建加载更多的单元格Cell,NewsMoreCell.xib 拖拽Label和Loading框,设置约束,如下图: 2.新建NewsMoreCell类 //NewsMoreCell.h#import "BaseCell.h"@interface NewsMoreCell : BaseC

2015-12-05 21:41:23 1899

原创 iOS新闻客户端开发教程7-新闻列表

在上教程中,我们介绍了二级导航栏的开发,今天我们来讲解iOS开发中非常常用和重要的组件:“列表”,即UITableView。本节课程将会介绍横向滚动列表和竖向滚动列表,分别来实现二级栏目滑动切换和新闻内容列表的功能。UITableView介绍横向滚动列表-二级栏目滑动切换新闻内容列表UITableView介绍在OC中,UITableView是用来展示列表数据的控件,基本使用方法是: 1.首先

2015-11-25 22:00:13 3029

原创 iOS新闻客户端开发教程6-二级栏目导航条

今天我们来介绍下新闻二级栏目。二级栏目在我们的新闻Tab页里,分别有头条,娱乐,体育,财经,科技等等不同类别的新闻,我们是使用一个二级栏目条来展示不同类别的新闻。1.服务器json接口// column.json{ "result":"ok", "data":[ { "id":"1",

2015-11-20 09:07:35 2073

原创 Spring MVC中使用Mongodb总结

近期项目做了次架构调整,原来是使用MySQL+GeoHash来存储LBS数据(地理位置信息),现在使用NOSQL数据库Mongodb来存储LBS数据(地理位置信息)。由于项目是基于Spring MVC开发的,今天就Mongodb的使用做下总结。Spring MVC 集成Mongodb1.加载jar,maven配置 <!-- 新加入的spring整合mongodb的包 开始 -->

2015-11-13 11:47:17 13715 3

原创 iOS新闻客户端教程5-Home主页

在iOS App中,常用的主页布局是上面是导航栏,下面是TabBar。本教程将介绍如何开发一款这样的新闻主页。导航栏TabBar导航栏打开之前基类里的BaseController类,在.m文件中增加下面代码 BaseController.m-(void)viewDidLoad{ [super viewDidLoad]; [self setNavigationLeft:@"Na

2015-11-09 22:32:06 1469

原创 Git命令总结

git config –global user.name “your name” git config –global user.email “[email protected]” git init 初始化 git add readme.txt 添加 git add . 添加所有 git commit -m ” commit mark ” 提交 git status 工作区状态 git

2015-11-09 14:08:57 744

原创 《高并发Web网站构建-徐汉彬》攒课-- 在线学习笔记

高并发Web网站构建-徐汉彬浏览器并发连接数一次HTTP通信TCP三次握手(保持连接) 请求数据/响应数据(达到超时条件) TCP四次断开短连接,长连接Keep-alive==================Apacheapachctl -v 版本Prefock模式多进程成熟文档,允许线程不安全

2015-11-04 21:09:05 1752

原创 《企业应用架构模式》读书笔记1-并发

避免并发隔离性和不变性1、隔离 划分数据,使得每一片数据只能被一个执行单元访问。 隔离是一种减少错误发生的有效技术。可以使用隔离方法安排资源,以便程序进入的是隔离区,而无需考虑并发问题。 好的并发设计应该是:找个各种创建隔离区的方法,并且保证每个隔离区里能够完成尽可能多的任务。2、不变性 只有共享数据可以修改的情况下,才会出现并发问题。所以,一个避免并发冲突的方法是识

2015-11-04 16:13:13 742

原创 《企业应用架构模式》读书笔记2-分布策略

远程接口和本地接口本地接口最好是细粒度的比如,如果有一个地址类,则一个好的接口应该有单独的方法,分别获取城市,地区,街道等。细粒度接口非常好,因为它符合一般面向对象的原则,即尽可能细分,使我们可以以不同方式组合和覆盖这些方法以便在将来进行设计扩展。远程接口应该是粗粒度的。应该在一次调用里得到城市,地区,街道信息,而不是三次调用。虽然这样扩展性较差,但是为了性能值得这么做。分布对象设计第一定律不

2015-11-04 16:02:39 721

原创 iOS新闻客户端开发教程3--基类编写

在面向对象编程中,常用的就是抽象和封装,今天来完成Model,ViewController,View基类(父类)的编写。日志宏定义Model基类ViewModel基类ViewController基类日志宏定义为了更好查看日志信息,我们封装了一些宏定义,取代了NSLog,让日志信息更方便我们调试 新建Defineds.h#if (DEBUG || TESTCASE)#define Log

2015-11-01 20:09:00 2931

原创 iOS和JS互调--WebViewJavascriptBridge使用说明

因为最近项目需要跨平台,在网上找到这个demo拿来用。 首先简单说一下跨平台。由于现在很多产品都是有安卓版跟ios版,就意味着同一样东西要出两套,由两组人去完成,不仅增加了开发成本,也大大加剧了维护成本。聪明的coder想出了跨平台的思路,用html写页面,分别用webview(ios),(安卓)来加载,对某些html无法调用的硬件,通过双方的交互来实现方法的互调和传值。这个过程就是跨平台。 下

2015-10-22 14:55:55 7268 2

原创 数据抽取工具Kettle使用

在我们开发的过程中,经常碰到多个系统之间需要相互抽取数据的问题,以往我们可以通过写Webservices接口,或者FTP共享来完成,但是这样会存在工作量大,不便于维护,性能不高的问题。今天介绍一款常用的数据抽取工具—-Kettle。 Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。下面我们使用一个Demo程序介绍下其常用组件

2015-10-20 09:09:31 9486 2

原创 iOS新闻客户端开发教程2--应用图标和启动图片设置

在教程1中,我们搭建了项目的基本框架,可以按照这套框架结构开始正式开发了,具体见:http://blog.csdn.net/jacman/article/details/49071443今天主要介绍如何设置App应用图标和启动图片设置App应用图标设置启动图片设置预编译头文件设置App应用图标1.取消默认从Main.storyborad启动

2015-10-17 23:12:17 2028

原创 Python轻量Web框架Flask使用

Python语言近些年越来越火,其特点是开发迅速,语法简单,可移植等。本人就Python3基础语法写了Demo:https://github.com/tangthis/python3_demo,可以当作基础教程和手册查阅。Python Web开发框架常用的包括Django,Flask,Tornado,Bottle,web.py,Quixote等。Django功能比较全面,比较重,相对来说,Flask

2015-10-13 17:36:09 26769 6

原创 iOS新闻客户端开发教程1--项目框架搭建

经过学习了2个多月的Objective-C基础知识学习,终于迎来了实战了,本教程将系列介绍使用Objective-C开发一款仿网易新闻客户端App。下面将介绍Xcode项目框架搭建,包括以下内容:开发环境安装MVVM框架模型介绍搭建项目框架开发环境安装1.安装Mac上开发工具Xcode   Xcode:https://itunes.apple.com/us/app/xcode/id49779

2015-10-12 16:13:39 4543

原创 iOS第三方库利器cocoapods安装和使用,深度解决被墙的问题

Mac下安装和使用cocoapods,深度解决被墙的问题

2015-10-12 11:37:29 1892

原创 Spring集成Shiro权限管理

Spring集成Shiro实例

2015-10-09 11:58:29 2811

原创 《30岁前每一天》 读书心得体会

在某社交网站上看到很多人推荐的一本书,名为《30岁前的每一天》,于是当天就在亚马逊上购买了。书中的内容,并没有具体到30岁前的每一天要干什么,其主要目的,按照作者自序写的说,是为了帮助读者作出改变的书,能够帮助你清楚生命当中,到底哪些是真正值得去珍惜的,哪些是真正值得去奋斗的。在30岁之前,能帮助读者形成优秀的习惯,用梦想做指引,积聚正能量,打败“小怪兽”,作好职业、学习、爱情的规划,踏上财富

2013-03-06 16:06:47 3141

转载 分析Redis架构设计

一、前言因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场景,需要对Redis设计与实现深入的理解。我分析流程是按照从main进入,逐步深入分析Redis的启动流程。同时根据Redis初始化的流程,理解Redis各个模块的功能及原理。二、redis启动流程1.初始化server变量,设置redis相关的默认

2015-12-21 18:35:05 127

转载 springMVC工作原理

SpringMVC框架介绍    1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Sprin

2015-12-21 18:15:00 721

转载 Spring的AOP原理

一、什么是 AOPAOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为(日志、安全、事务)的时候,OOP则显得无能为力。也就是说,OOP允许

2015-12-21 18:07:41 1739

转载 JVM工作原理学习笔记

一、         JVM的生命周期1.       JVM实例对应了一个独立运行的java程序它是进程级别a)     启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点b)     运行。main()作为该程序初始线程的起点,任何其他线程均由该

2015-12-21 18:03:16 575

转载 JVM 优化经验总结

开始之前Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 Java 虚拟机上运行的目标代码 (字节码), 就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。注意:本文仅针对 JDK7、HotSPOT

2015-12-21 17:48:10 667

转载 JVM 垃圾回收器工作原理及使用实例介绍

垃圾收集基础Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。拥有垃圾收集器可以说是 Java 语言与 C++语言的一项显著区别。在 C++语言中,程序员必须小心谨慎地处理每一项内存分配,且内存使用完后必须手工释放曾经占用的内存空间。当内存释放不够完全

2015-12-21 17:34:27 676

转载 Java的内存泄漏

问题的提出Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器程序采用Java技术,

2015-12-21 16:58:48 924

转载 探索 ConcurrentHashMap 高并发性的实现机制

简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代

2015-12-21 16:40:42 705

转载 分布式文件系统FastDFS设计原理

FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB Storage serverStorage server(后简称storage)以组(卷,group或volume)为单位组

2015-12-18 18:05:04 813

转载 OC内存管理详解

前言由于移动设备的内存有限,所以我们需要对内存进行严格的管理,以避免内存泄露造成资源浪费。在OC中,只有对象才属于内存管理范围,例如int、struce等基本数据类型不存在内存管理的概念。在iOS开发中,对内存的管理实际上就是对引用计数器的管理。OC内存管理的三种方式自动垃圾收集(Automatic Garbage Collection);手动引用计数器(Manual Re

2015-11-17 17:27:43 763

原创 TDDL最佳实践

尽一切可能利用单机资源单机事务 单机join 好的存储模型,就是尽可能多的做到以下几点:尽可能走内存 尽可能将一次要查询到的数据物理的放在一起 通过合理的数据冗余,减少走网络的次数 合理并行提升响应时间 读取数据瓶颈,可以通过加slave节点解决 写入瓶颈,用规则sharding和扩容来解决

2015-11-13 10:27:39 849

转载 深入学习微框架:Spring Boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。多年以来,Spring IO平台饱受非议的一点就是大量的XML配置

2015-11-10 13:38:33 1516 1

转载 被误解的 Node.js

如果经常浏览各大技术网站,那么你会发现自己很难错过 Node.js,程序员们兴奋地说:JavaScript 也可以开发服务器端的程序了!没错,Node.js 的确为我们提供了这种便利,前台后台都用同一种语言实现。但这种兴奋,却极易掩盖 Node.js 另外一个重要的特性:基于事件驱动的编程模型。而后者,才真正使得 Node.js 成为开发高并发大型网络应用的关键。本文详细介绍了 Node.js 的

2015-11-05 11:12:20 783

Quartz_net官方开发指南

Quartz 教程 官方开发指南,非常实用和详细。

2012-04-06

JAVA穿越NAT

JAVA穿越NAT,实现P2P的UDP通信。

2012-04-06

HTML5与手机游戏的未来.ppt

当前HTML5处于迅猛发展之势,手机游戏也必是一头猛兽,ppt剖析了HTML5与手机游戏的未来

2011-12-15

maximo开发指南 maximo maximo开发

maximo开发指南 maximo maximo开发

2009-09-25

字符转换Unicode编码

字符转换Unicode编码 HTML 转换 编码

2009-07-03

firebug javacscript调试工具 快来下吧 很好用的

firebug javascript调试工具

2009-04-21

硬盘分区工具 快速的将现有分区大小和格式改变

硬盘分区工具 快速的将现有分区大小和格式改变 很方便的

2009-03-20

mysql常用命令 mysql5.0

mysql常用命令集合,mysql命令整理,很实用的

2009-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除