- 浏览: 514094 次
- 性别:
- 来自: 杭州
博客专栏
-
集群高可用架构
浏览量:193982
最新评论
-
lgh1992314:
使用 volatile 的原因是可以保证线程在本地不会存有 i ...
java单例模式的正确写法 -
aguai0:
厉害了
推荐几个自己写的Java后端相关的范例项目 -
liwenjie:
找不到数据库初始化脚本
推荐几个自己写的Java后端相关的范例项目 -
bo_hai:
juvconan 写道./redis-trib命令建立集群时, ...
Redis Cluster集群主从方案(附Jedis Cluster教程) -
苟且偷生:
楼主 Sentinel集群的时候 master shutd ...
Redis Sentinel主从高可用方案(附Jedis Sentinel教程)
文章列表
Netty学习:搭建一个简单的Netty服务
Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开发。Netty 已逐渐成为 Java NIO 编程的首选框架。
项目官方地址:http://netty.io/index.html
一. Netty 的优点:
API 使用简单,开发门槛低;
1、什么是线程?
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。
2、线程和进程有什么区别?
线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。
3、如何在Java中实现线程 ...
java的concurrent包为我们提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天就来介绍下这三个辅助类并进行对比:
CountDownLatch的介绍和使用可见我之前的博客:
http://wosyingjun.iteye.com/blog/2223933
CyclicBarrier的介绍和使用可见我之前的博客:
http://wosyingjun.iteye.com/blog/2299857
Semaphore的介绍和使用可见我之前的博客:
一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。通过acquire()和release()获取和释放访问许可。
Semaphore类位于java.util.concurrent包下,它提供了2个构造器:
//参数permits表示许可数目,即同时可以允许多少线程进行访问
public Semaph ...
CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
CyclicBarrier类位于java.util.concurrent包下,CyclicBarrier提供2个构造器,参数parties指让多少个线程或者任务等待至barrier状态;参数barrierAction为当这些线程都达到barrier状态时会执行 ...
Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。
那么好的「标记语言」也需要一款好的编辑器,这里推荐MarkdownPad,MarkdownPad是Windows下的一个全功能Markdown编辑器。在MarkdownPad里你可以自己定义样式、字体,大小等,还能将md文件导出成html ...
纪录一些linux服务器下查看系统配置的常用命令,系统主要采用CentOS,方便下次查找。
修改用户分组以及文件权限:
chown -R user:user apache-tomcat-admin/chown -R user apache-tomcat-admin/chmod -R 777 apache-tomcat-admin/
修改服务器防火墙
[root@test ~]# vim /etc/sysconfig/iptables添加一行:-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT/etc/rc ...
Nginx的基本配置与优化
Nginx的配置文件默认在Nginx程序安装目录的conf二级目录下面,主配置文件为nginx.conf,对nginx还不是很了解的可以看下我之前对Nginx介绍:
http://wosyingjun.iteye.com/blog/2252941
Nginx 的配置组成:
....
events{
....
}
http{
....
serer{
....
}
serer{
....
}
....
}
Nginx 的基本配置:
user root; #使用 ...
一、懒汉式(线程不安全)
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
介绍:线程不安全,在多线程情况下容易创建多个实例。
...
CentOS下实现一个tomcat项目的部署,也是最基本的项目部署范例:
1、创建用户并设定密码
[root@test ~]# useradd tgame[root@test ~]# passwd tgameChanging password for user tgame.New password: Retype new password: passwd: all authentication tokens updated successfully.
2、创建相应文件夹并放入jdk安装包解压
[root@test home]# mkdir /usr/local/java[root@te ...
Redis Sentinel主从高可用方案(附Jedis Sentinel教程)
本文介绍一种通过Jed和Sentinel实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在Redis2.4中,Redis2.8中Sentinel更加稳定),
附:Redis Cluster集群主从方案:http://wosyingjun.iteye.com/blog/2289220Redis Sentinel主从高可用方案:http://wosyingjun.iteye.com/blog/22 ...
Redis Cluster集群主从方案(附Jedis Cluster教程)
本文介绍一种通过Jedis和Cluster实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.8.0(推荐),Redis3.0及以上版本(强制).
附:Redis Cluster集群主从方案:http://wosyingjun.iteye.com/blog/2289220Redis Sentinel主从高可用方案:http://wosyingjun.iteye.com/blog/2289593
一、Redis集群介绍
Redis 集群是一个提供在多个Redis间节点间共享数据的程 ...
在Eclipse中开发lua代码
LuaEclipse 是 Eclipse 用来开发 Lua 程序的插件,功能比较完备,它可以实现编Lua脚本代码、语法高亮、编译错误提示,代码和注释的折叠、调试等。
LuaEclipse:http://luaforge.net/projects/luaeclipse/
一、LuaEclipse插件安装
下载LuaEclipse的离线安装包,下载地址:
Lua语言介绍
2015/9/10 14:09:11
Lua 不仅是易于扩展的语言,同时也是一种易整合的语言( Glue Language), Lua 支持基于组件的软件开发,在这种开发模式下,仅通过将高级组件整合在一起就能实现一个应用程序。一般情况下,组 ...
最近做聊天界面时,点击底部的EditTextView时弹出的键盘框把EditTextView给挡住了,显然不符合预期。查询资料发现了有如下三种解决方案:
方法一:
在项目的AndroidManifest.xml文件中界面对应的里加入android:windowSoftInputMode="adjustPan"这样键盘就会覆盖屏幕。通过实践发现方法一并没有起作用,查询资料得知我的布局是