- 博客(44)
- 资源 (12)
- 收藏
- 关注
原创 java 绑定线程池中的线程 BindThreadPool
package com.sibo.concurrent;import io.netty.util.concurrent.DefaultEventExecutor;import io.netty.util.concurrent.EventExecutor;import java.util.concurrent.atomic.AtomicInteger;/** * @author YU...
2018-10-09 20:01:52 774
原创 go reentrant lock(可重入锁) 简单实现
import ( "fmt" "runtime" "strconv" "strings" "sync")type ReentrantLock struct { mu *sync.Mutex cond *sync.Cond owner int holdCo
2018-09-07 19:56:08 3115
原创 java DiskQueue
package com.sibo.concurrent;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.nio.file.*;import java.util.ArrayList;import java.util.List;import java.util.co...
2018-08-27 16:34:11 434
原创 java CappedBufferQueue
package com.sibo.concurrent;// queue interfacepublic interface EventQueue<T> { void put(T event); EventBuffer<T> swap(EventBuffer<T> eventBuffer); boolean isEmpty()...
2018-08-27 16:32:37 204
原创 Peterson lock互斥
Peterson lock是并发中实现两个线程互斥的经典算法// 假设两个thread的id分别为0,1public class Peterson { private volatile boolean[] flag = new boolean[2]; private volatile int last; // 声明为volatile保证last在线程间的可见性 p...
2018-04-02 23:21:16 411
原创 websocket详解
Websocket详解websocket草案版本websocket主要有两种协议草案,一种是早期的draft-hixie-thewebsocketprotocol,另外一种是延用至现在的draft-ietf-hybi-thewebsocketprotocol。两种草案中又有各自对应的细化版本。详细可见 https://tools.ietf.org/html/draft-hixie-t...
2018-03-21 18:40:03 1276
原创 go利用最小堆实现优先队列
实现代码package coreimport "container/heap"type Item struct { Value interface{} Index int Priority int}type PriorityQueue []*Itemfunc NewPriorityQueue(cap int) PriorityQueue {...
2018-03-21 00:14:37 2300
原创 java double-check-lock并发问题
// thread 1class Singleton { private static Singleton INSTANCE public static Singleton getInstance() { if (INSTANCE == null) { synchronized (Singleton.class) { ...
2018-03-20 22:13:19 992
原创 sun.misc.Unsafe详解
1. sun.misc.Unsafe类源码注释中文翻译//下面是sun.misc.Unsafe.java类源码package sun.misc;import java.lang.reflect.Field;/*** * This class should provide access to low-level operations and its * use should be ...
2018-03-20 22:05:45 802
原创 内存屏障
1. 什么是内存屏障它是一条CPU指令: a)确保一些特定操作执行的顺序; b)影响一些数据的可见性(可能是某些指令执行后的结果)。2. 内存屏障与处理器重排序现代的处理器使用写缓冲区来临时保存向内存写入的数据,每个处理器都有自己的缓冲区。写缓冲区可以保证指令流水线持续运行,它可以避免由于处理器停顿下来等待向内存写入数据产生的阻塞。同时,通过以批处理的方式刷新写缓冲区,以及合并写缓...
2018-03-20 00:38:13 4701
转载 Java中的伪共享(false sharing)以及应对方案
1. 什么是伪共享CPU缓存系统中是以缓存行(cache line)为单位存储的。目前主流的CPU Cache的Cache Line大小都是64Bytes。在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。2. 缓存行由于共享变量在CPU缓存中的存储是以缓存行为单位,一个缓存行可以存储多个变量(存满当前缓存...
2018-03-19 23:11:27 6026
原创 golang使用sync.Cond实现CappedBlockingQueue
sync.Cond需要结合互斥量使用,生产者与消费者的流程基本如下图 本例子中的queue使用链表实现,最好修改为数组或切片package structureimport ( "container/list" "sync")// 队列内部结构,封装了listtype MessageBuffer struct { buf *list.List}...
2018-03-17 16:10:15 889 1
翻译 mysql导入导出数据
// 导入数据source xxx.sql// 导出数据// 1. 导出整个数据库(包含数据)mysqldump -u用户名 -p密码 --single-transaction --set-gtid-purged=off 数据库名// 2. 导出整个数据库结构mysqldump -u用户名 -p密码 --single-transaction --set-gtid-purged=off...
2018-03-17 15:39:30 142
原创 go实现tcp游戏服务器sibo——服务器实现篇
package serverimport ( "net" "time" "sync" "crypto/tls" log "github.com/sirupsen/logrus" "runtime" "bufio" "strings" "io" &q
2018-02-27 20:01:29 558
原创 go实现tcp游戏服务器sibo——序列化及压缩篇
1. 序列化上篇sibo协议的定制里其header部分包含了序列化类型及压缩类型的定义。 由于序列化为占用3个bit,因此最多可支持8种序列化方式。同理,压缩类型最多支持4种。sibo协议定义支持的序列化类型如下(共5种):const ( SerializeNone SerializeType = iota // 原始二进制 JSON ProtoBu...
2018-02-26 16:35:26 791
原创 go实现tcp游戏服务器sibo——协议篇
1. 协议格式任何游戏在动手编写代码前服务器与客户端的开发人员的首要任务是商定好协议的规则格式。下面以sibo协议为例:协议解析:---Header [8]bytepayloadLength [4]bytepayload [payloadLength]byte------Header各个byte...
2018-02-23 19:46:52 584
转载 MySQL数据库自增主键归零的几种方法
MySQL数据库自增主键归零的几种方法如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数:truncate table table_name;当用户没有truncate的权限时且曾经的数据不需要时:删除原有主键:ALTER TABLE 'table_name' DROP 'id';添加新主键:ALTER TABLE 'table_name' ADD 'id' int
2016-11-16 11:08:28 11532 1
转载 mysql命令行备份数据库
MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: ““ 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb ““备份数据库到D盘跟目录 mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql 备份到当前目录
2016-08-08 23:47:10 337
原创 android与服务端websocket通讯示例
服务端库依赖详见章末spring websocket服务端代码(会话过程)public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor { private static final Logger logger = LoggerFactory.getLogger(HandshakeInterceptor.cl
2016-08-08 23:43:30 3066
原创 java实现单例singleton的几种模式
Singleton的4种实现方式1.静态工厂实现法静态工场估计是最常用的单例实现方式,例子如下(详细见注解)// 静态工厂实现法public class CommonSingleton { // 此处声明为final,一旦类被加载就立即实例化,确保类只有一个实例,同时也确保了线程安全 // 注意:我们仍然可以通过反射再创建新的实例,且序列化反序列化时会有问题 /*序列化问题可
2016-08-08 23:37:15 1154
原创 使用spring容器管理和配置netty
使用spring容器管理和配置netty 为了使程序达到方便配置和管理,spring的ioc容器是特效药之一。本文将使用ioc来管理和配置netty服务器服务端使用Reactor多线程模型,详见 李林锋老师的博文 Netty系列之Netty高性能之道 在本程序中Reactor Thread Acceptor对应BossGroup,Reactor Thread P
2016-08-07 15:20:19 12444 7
原创 beego框架 sql: unknown driver "mysql" (forgotten import?)
在使用beego框架接入mysql时需要在main.go中引入自己使用的mysql驱动 "github.com/go-sql-driver/mysql" // import your used driver否则会报sql: unknown driver "mysql" (forgotten import?)
2015-11-12 17:30:12 4079
原创 jedis高版本的JedisPoolConfig没有maxActive和maxWait
jedis包括2.4.1,2.5.1等高版本的JedisPoolConfig没有maxActive属性,不能按照网上那些方式去配置redis了,网上大部分搜索出来的redis配置都是基于旧版本的jedis,在jedis新版本,JedisPoolConfig没有maxActive属性,JedisPoolConfig没有maxWait属性,以及被替换成其他的命名。通过查找可知高版本的jedis使用
2015-10-22 17:54:44 4985 1
转载 MMORPG服务器架构
MMORPG服务器架构一.摘要1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。3.网络游戏的场景管理,AI,脚本的应用等。4.开源的网络服务器引擎5.参考书籍,博客二.关键词网络协议 网络IO 消息 广播 同步 CS TCP/UDP IP 集群 负载均衡
2015-10-10 18:00:29 410
原创 ssh插入信息报异常!don't flush the Session after an exception occurs
HTTP Status 500 - null id in com.news.entity.News entry (don’t flush the Session after an exception occurs)type Exception reportmessage null id in com.news.entity.News entry (don’t flush the Session af
2015-10-06 02:34:34 598
转载 Hibernate各种主键生成策略与配置详解
1、assigned主键由外部程序负责生成,在 save() 之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免。generator class="assigned" />“ud”是自定义的
2015-10-06 01:35:23 328
转载 iOS的UDID废用以及UUID配合keychain的替换方案实现
首先,简单介绍一下UDID这个东西:UDID是Unique Device Identifier的简称,也就是唯一设备标识的意思。于iOS SDK中取得的方法是UIDevice的一个叫uniqueIdentifier的NSString*,由于这个ID字符串是基于设备的,应用开发人员可以通过获取此ID来用于记录区分设备。正是由于这个特性,可能会导致一些隐私等等相关的问题,Apple于iOS5中
2015-10-05 17:15:05 772
转载 Java数据类型和MySql数据类型对应表
java mysql 数据类型对照类型名称显示长度数据库类型JAVA类型JDBC类型索引(int)描述 VARCHARL+NVARCHARjava.lang.String12 CHARN
2015-10-02 16:02:53 321
转载 git提交代码至远程仓库
代码提交代码提交一般有五个步骤:1.查看目前代码的修改状态2.查看代码修改内容3.暂存需要提交的文件4.提交已暂存的文件5.同步到服务器1. 查看目前代码的修改状态提交代码之前,首先应该检查目前所做的修改,运行git status命令a) 已暂存 (changes to be committed) new fil
2015-09-30 00:12:31 746
转载 HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap
本文由 ImportNew - 唐小娟 翻译自 Programcreek。欢迎加入翻译小组。转载请见文末要求。Map是最重要的数据结构。这篇文章中,我会带你们看看HashMap, TreeMap, HashTable和LinkedHashMap的区别。1. Map概览Java SE中有四种常见的Map实现——HashMap, TreeMap, Hashtable和Lin
2015-09-29 14:14:01 674
转载 HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入
2015-09-29 10:40:59 461 1
转载 最详细的Log4j使用教程
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.proper
2015-09-28 16:23:45 447
转载 为你的Android App实现自签名的 SSL 证书
阅读目录HTTPS是什么?SSL/TLS:SSL/HTTPS and X.509 证书概述TLS (SSL)中的加密MITM 攻击什么是自签名证书( self-signed certicates)在使用自己签署的证书时一般性的错误证书锁定实现的步骤第1步: 创建自签名证书和.bks 文件第2步第3步介绍网络安全已成为大家最关心的问题. 如果你利用服务器存储客
2015-09-24 18:23:14 1024
转载 有效选择七个关于Java的JSON开源类库
April 4, 2014 By Constantin Marian Alin翻译:无若 (英语原文:http://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-available-today.html) 简介JSON是JavaScript Object Notatio
2015-09-23 15:16:34 634
转载 Spring的事务 之 9.4 声明式事务 ——跟我学spring3
9.4 声明式事务9.4.1 声明式事务概述 从上节编程式实现事务管理可以深刻体会到编程式事务的痛苦,即使通过代理配置方式也是不小的工作量。 本节将介绍声明式事务支持,使用该方式后最大的获益是简单,事务管理不再是令人痛苦的,而且此方式属于无侵入式,对业务逻辑实现无影响。 接下来先来看看声明式事务如何实现吧。9.4.2
2015-09-21 15:58:17 452
实时碰撞检测算法技术
2014-10-28
phonegap-2.9.0
2014-10-06
OpenGL Developement Cookbook
2014-10-01
OpenGL编程指南
2014-10-01
卡雷尔机器人学Java 英文版
2014-09-28
Making_Things_Happen
2014-08-23
Android游戏开发大全10-11章
2014-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人