java 服务器后端开发
文章平均质量分 59
好一个大布丁
手游服务器研发工程师。有参与射击类型手游《雷霆战机》。MMO《末日危机》,SLG+ARPG《末日生存》开发经验。现在主要研究全球游戏服务器SLG类型游戏开发。研究分布式和微服务在游戏服务器中的应用。
展开
-
CA证书签发系统(web版)
一个pki证书申请,审核和证书下载安装的管理系统软件,通过调用java自带的工具,将信息存入数据库,同时也是一个学习ssh框架的好demo,系统采用Java自带的加密算法实现CA证书的签发和发布,采用mvc模式实现证书下载,安装和统一管理。系统采用java自带秘钥工具生成CA证书,通过WEB形式展现出来,管理员审核生成证书,普通用户提交证书信息。采用idea编译环境,采用maven结构项目,可配置系统环境,方便查询,优化代码。详细代码:https://github.com/twjitm/pki-new。原创 2023-02-06 22:46:00 · 1731 阅读 · 1 评论 -
PKI证书签发系统(2.0web版)
一个pki证书申请,审核和证书下载安装的管理系统软件,通过调用java自带的工具,将信息存入数据库,同时也是一个学习ssh框架的好demo,系统采用Java自带的加密算法实现CA证书的签发和发布,采用mvc模式实现证书下载,安装和统一管理。系统采用java自带秘钥工具生成CA证书,通过WEB形式展现出来,管理员审核生成证书,普通用户提交证书信息。采用idea编译环境,采用maven结构项目,可配置系统环境,方便查询,优化代码。详细代码:https://github.com/twjitm/pki-new。原创 2023-02-05 10:31:49 · 793 阅读 · 1 评论 -
基于Scyther 协议安全模型的验证 协议攻击与演练(web)版本
协议形式化分析Scyther原创 2022-04-10 11:50:25 · 922 阅读 · 0 评论 -
java mongodb orm 实现-基于mongodb-driver开发的ORM(二:连接维护和主键自增)
导论:MongoDB是一个非常有前途的数据库,MongoDB官方对自己的定位是通用数据库,其实这个定位跟MySQL有些像。虽其流行度还远未达到MySQL的水平,但笔者有个可能不恰当的比较,MongoDB就像N年前的MySQL,随着时间的推移,会变得越来越强大,也会越来越流行。上篇文章说到,通过mongodb-driver原生包进行开发,封装易用的接口,降低使用门槛,去除冗余的代码。使得项目更简洁一、:连接维护(编码/解码)二、:自定义-主键自增Ticket一:连接维护(编码/解码)1.1 连接c原创 2021-12-25 15:37:03 · 1269 阅读 · 0 评论 -
java mongodb orm 实现-基于mongodb-driver开发的ORM(一:功能总览)
导论:MongoDB是一个非常有前途的数据库,MongoDB官方对自己的定位是通用数据库,其实这个定位跟MySQL有些像。虽其流行度还远未达到MySQL的水平,但笔者有个可能不恰当的比较,MongoDB就像N年前的MySQL,随着时间的推移,会变得越来越强大,也会越来越流行。由于基于mongo 官方提供的api使用比较复杂,不方便与业务开发,所以本项目基于官方api进行封装,简化了关于文档的查询,创建以及索引维护。m-dbEnglish 简体中文简介这是个什么?欢迎使用本项目。本项目基于mo原创 2021-11-28 17:58:30 · 1531 阅读 · 0 评论 -
PKI证书签发系统(web版)新
原来的项目进行翻新功能维护采用新的加密算法和生成证书方式。pki-new 新版本一个pki证书申请,审核和证书下载安装的管理系统软件,通过调用java自带的工具,将信息存入数据库,同时也是一个学习ssh框架的好demo,系统采用Java自带的加密算法实现CA证书的签发和发布,采用mvc模式实现证书下载,安装和统一管理。 .新版本特点:(1):采用跨平台方式进行证书生成;(2):优化证书算法(3):添加动态权限控制(4):支持异步处理功能介绍系统采用java自带秘钥工具生成CA证书,通过原创 2020-09-03 22:56:02 · 1548 阅读 · 14 评论 -
exclusions来进行排除依赖
xclusions 但依赖调节并不解决所有问题,我们还需要exclusions来进行排除依赖。 例如这样一个情况,工程中引入了A,A依赖B,但是B的版本过旧。 此时可以使用exclusions排除该传递性依赖,并显示声明一个最新版本的B依赖。 比如这样:<dependency> <groupId>com.lowagie</groupId转载 2018-07-02 11:28:29 · 8735 阅读 · 0 评论 -
Connection reset by peer的常见原因
Connection reset by peer的常见原因:1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭; 如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。可以使用netstat -an查看网络连接情况。2)客户关掉了浏览器,而服务器还在给客户端发送数据;3)浏览器端按了Stop;这两种情况一般不会...转载 2018-08-28 18:11:24 · 19201 阅读 · 0 评论 -
如何优雅地用Redis实现分布式锁
如何优雅地用Redis实现分布式锁锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同一个JVM进程里的时候,使用Java语言提供的锁机制可以起到对共享资源进行同步的作用。如果分布式环境下多个不同线程需要对共享资源进行同步,那么用Java的锁机制就无法实现了,这个时候就必须借助分布式锁来解决分布式环境下共享资源的同步问...转载 2018-09-05 16:01:08 · 397 阅读 · 0 评论 -
Apache Curator实战
Apache Curator入门实战 Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。1.Zookeeper安装部署Zookeeper的部署很简单,如果已经有Java运行环境的话,下载tarball解压后即可运行。[root@vm Temp]$ wge...转载 2018-09-17 17:06:16 · 1213 阅读 · 0 评论 -
Netty游戏服务器实战开发(5):利用Netty打造轻量级RPC组件
简介:什么是RPC?RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。Net...原创 2018-09-18 12:34:43 · 3105 阅读 · 3 评论 -
idea 创建maven子项目报错
错误日志 Failed to create a Maven project: '******/pom.xml' already exists in VFS产生原因: 在创建maven子项目的步骤中,需要手动拼接父项目和子项目路径原创 2018-07-08 18:36:35 · 682 阅读 · 0 评论 -
spring包扫描规则
包扫描详解 <context:component-scan base-package =“xx.test.*”use-default-filters =“false”>base-package:要扫描的包 use-default-filters:是否使用默认的过滤器,默认为true,即扫描@Component, @Repository, @Service, @Contro...原创 2018-05-16 09:48:55 · 1619 阅读 · 0 评论 -
为什么 Redis 不支持回滚 roll back
如果你有使用关系式数据库的经验, 那么 “Redis 在事务失败时不进行回滚,而是继续执行余下的命令”这种做法可能会让你觉得有点奇怪。以下是这种做法的优点:Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令用在了错误类型的键上面:这也就是说,从实用性的角度来说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中。 因...原创 2018-05-26 14:39:40 · 4371 阅读 · 0 评论 -
springMVC +mybatis+mysql多套数据源配置
导读- 在项目中可能有时候我们需要配置多套数据源,网上巴拉巴拉半天,都讲得太潦草了,对于第一次搞的人来说确实有点头疼,与其说在网上瞎找,还不如认真的自己动手操练一波,下面我就来介绍一下mybatis实现多套数据源的方式。 刚开始我也是和大家一样,利用mybatis的mybatis-generator-core-1.3.2从表生成xml文件,这里写个小插曲,照顾一下新手,(原创 2018-03-13 11:53:16 · 11012 阅读 · 22 评论 -
org.springframework.context.ApplicationContextAware使用理解
一、这个接口有什么用? 当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。 二、怎么用? 举个例子吧: 例如我有一个方法类AppUtil,这个方法类中需要使用到的ApplicationContext中的某个转载 2017-11-06 15:44:10 · 1821 阅读 · 0 评论 -
MyBatis传入参数为集合 list 数组 map写法
oreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,clos转载 2017-10-15 20:27:49 · 606 阅读 · 2 评论 -
redis 数据结构
redis五种数据结构 (1)String——字符串 (2)Hash——字典 (3)List——列表 (4)Set——集合 (5)Sorted Set——有序集合String——字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr转载 2017-11-07 09:32:55 · 329 阅读 · 0 评论 -
Redis数据结构详解之Zset
Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zset叫做有序集合,而set是无序的,zset怎么做到有序的呢?就是zset的每一个成员都有一个分数与之对应,并且分数是可以重复的。有序集合的增删改由于有啦排序,执行效率就是非常快速的,即便是访问集合中间的数据也是非常高效的。下面我来展示下操作zset的re转载 2017-09-29 17:02:50 · 1307 阅读 · 2 评论 -
mybatis异步操作数据库
很多时候我们需要用mybatis来做数据库orm,基于mybatis 优秀的基因,我们能够轻松的搞定数据库的orm。 但是mybatis一般的使用方法都是一个同步查询,主线程调用数据库查询操作,等待返回结果,这样在高并发网络情况下代价是很高的。所以我们需要封装一套提供异步查询回调机制。异步操作。提到异步操作,我们就得提到回调接口。回调接口就是通过在主线程监听其他线程执行完的结果取得返回值。或...原创 2018-09-13 10:54:43 · 11375 阅读 · 1 评论 -
分布式 - RPC同步和异步说明
要实时就用同步,要吞吐率就用异步。 同步调用流程略实现负载均衡:连接池中建立了与一个RPC-server集群的连接,连接池在返回连接的时候,需要具备负载均衡策略。 实现故障转移:连接池中建立了与一个RPC-server集群的连接,当连接池发现某一个机器的连接异常后,需要将这个机器的连接排除掉,返回正常的连接,在机器恢复后,再将连接加回来。 实现发送超时:因为是同步阻塞调用,拿到一个...转载 2018-09-13 17:20:12 · 9326 阅读 · 0 评论 -
微服务架构设计基础-(1)微服务方法论和文化
微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来讨论的问题是如何在保持服务尽可能自主的同时实现微服务之间的耦合。在这里,将描述四个选项,并在结论中选择一个明确最好的方式。对我来说,微服务是一种自主服务,它对一项业务能力负全部责任。完整的职责包括演示,API,数据存储和业务逻辑。Autonomous是我的关键词,通过使服务自治,可以...原创 2018-09-19 10:16:40 · 900 阅读 · 0 评论 -
Netty游戏服务器实战开发(15):游戏服务器中的数据缓存
导读游戏服务器缓存作用非常重要:很大部分决定游戏服务器性能问题。缓存的作用在很多游戏服务器开发过程中,有需要提前加载到内存中的数据,有不需要加载到内存中的数据,当然,加载到内存中的数据可分为字典数据和部分玩家数据。比如:配表信息,玩家查询信息,玩家基础信息等。通常我们使用redis作为一个缓存中间件,当然,redis不仅用于游戏服务器,也适用于很多传统互联网行业。是一款优秀的KV缓存数据库...原创 2019-08-31 15:21:10 · 3005 阅读 · 7 评论 -
[已解决] java.net.ConnectException: Connection refused: no further information
程序抛出这个异常的原因多数是因为在此[host:port]没有监听,那么该如何解决这个问题呢,如下第一个要做的是看你的host和port是否写错了,如 [ 127.00.1:8080 ]第二个要看你的server是否真正的运行起来了,比如server在启动过程某些组件加载异常,会导致服务启动不成功。第三个有可能是防火墙的原因,关闭防火墙试试第四个就是如果你是自己写的socket那么检查如下...原创 2018-12-27 11:38:01 · 103064 阅读 · 11 评论 -
Netty游戏服务器实战开发(12):线程任务组件开发
Netty游戏服务器实战开发(11):原创 2018-12-15 11:51:48 · 1398 阅读 · 0 评论 -
kafka 创建消费者报错 consumer zookeeper is not a recognized option
在做kafka测试的时候,使用命令bin/kafka-console-consumer.sh --zookeeper 192.168.0.140:2181,192.168.0.141:2181 --topic test --from-beginning启动消费者,发现一只报错consumer zookeeper is not a recognized option,搜索了半天,一只没有解决,最后,...转载 2018-11-17 10:36:25 · 518 阅读 · 0 评论 -
【已解决】AbstractRoutingDataSource的determineCurrentLookupKey
在分布分表开发过程中,我们常常利用spring整合开发,在上篇文章中我们学习了如何使用分库分表策略,在测试过程中,博主偶然发现public class DynamicDataSource extends AbstractRoutingDataSource { Logger logger = LoggerFactory.getLogger("DynamicDataSource"); ...原创 2018-10-24 17:12:22 · 7996 阅读 · 4 评论 -
Netty游戏服务器实战开发(10):Netty结合kafka实现分布式消息队列
在分布式游戏服务器系统中,消息处理队列主要解决问题就是解耦系统中的业务,使得每个系统看起来功能比较单一,而且解决一些全服数据共享等问题。通常我们知道kafka是作为消息队列比较火的一种方式,其实还有(Active MQ,Rabbit MQ,Zero MQ)个人觉得kafka比较好用点,哈哈,习惯吧。同样我们来复习kafka基础。kafka基础。的内容来介绍kafka的基本安装。首先我们要...原创 2018-10-19 18:00:13 · 8900 阅读 · 10 评论 -
idea中搭建基于maven的spring-boot项目
其实我一直很想写一篇文章来说明一下如何在idea中创建一个spring-boot项目的,但是由于找工作和换工作的时间一直耽搁到现在,趁今天晚上加班的时间,终于挤出半个小时来讲述如何在idea中创建spring-boot项目。在上篇文章关于在《idea中搭建基于maven的ssm整合框架》得到读者的好拼反馈,但是由于spring配置使得spring的使用起来入门比较困难,所以有了 spring-b...原创 2018-10-18 21:30:06 · 10426 阅读 · 1 评论 -
深入学习理解(9):java:AbstractQueuedSynchronizer详解
导读:前一阵子在写轻量级RPC框架的时候,由于系统中所需要用异步RPC模型,由于系统所要求性能比较苛刻,所以基本所有耗时的操作都会采用异步调用的方式:比如异步读写DB,IO,更可能redis的操作都需要异步(主程说了,我咋办,做呗)。基于Netty的轻量级rpc框架已经开源,想去了解的小伙伴可以查看我另一篇文章。https://blog.csdn.net/baidu_23086307/art...原创 2018-10-01 16:18:25 · 425 阅读 · 0 评论 -
微服务架构设计基础-(2):微服务架构的特性
导读:天下大势,分久必合合久必分。软件也是一样。微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来说一下微服务架构的特性。让我们学习微服务不在迷茫。特性1. 单一职责微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。2. 轻...原创 2018-09-25 14:03:14 · 775 阅读 · 0 评论 -
idea中搭建基于maven的ssm整合框架
自从进入一家游戏公司以后,就抛弃了eclipse转战于idea,刚开始一直很不习惯,但是用了一周以后,在打开eclipse的时候,有一种想卸载掉的冲动,好吧,我是觉得idea比eclipse好用,关于它们的战争我们就不讨论了,下面介绍一下idea中怎么搭建ssm基于maven的整合框架吧。 作为一个优秀的框架,spring一直横穿整合javaee的世界,在学习javaweb的时候,由原原创 2017-08-26 15:58:03 · 17042 阅读 · 8 评论 -
application/x-www-form-urlencoded
关于application/x-www-form-urlencoded等字符编码的解释说明 在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。 下边是说明: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data:转载 2017-08-22 18:13:17 · 1305 阅读 · 0 评论 -
linux tar.gz zip 解压缩 压缩命令
tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出下面的参数-f原创 2017-07-17 09:19:17 · 563 阅读 · 0 评论 -
js的$(document).Ready()与jquery的OnLoad
(document).Ready()方法VS∗∗OnLoad∗∗事件VS(document).Ready()方法 VS **OnLoad**事件 VS (window).load()方法 接触JQuery一般最先学到的是何时启动事件。在曾经很长一段时间里,在页面载入后引发的事件都被加载在”Body”的Onload事件里. 对于Body的Onload事件和JQuery的Ready方法相比,有很多弊原创 2016-09-23 11:51:47 · 615 阅读 · 0 评论 -
基于jQuery的AJAX和JSON实现纯
通过jQuery内置的AJAX功能,直接访问后台获得JSON格式的数据,然后通过jQuer把数据绑定到事先设计好的html模板上,直接在页面上显示。 我们先来看一下html模板: <table id="datas" border="1" cellspacing="0" style="border-collapse: collapse"> <tr>原创 2016-08-09 07:15:49 · 1882 阅读 · 2 评论 -
ajax异步请求刷新
在网站刷新的方法中,ajax刷新是一种用户体验良好的刷新方式,在结合ssh等流行的框架!最为常用了!下面就是常用一个ajax刷新表单的一个demo,$(document).ready(function () { testchaxun(); setInterval("testchaxun()",5000); }); function testchaxun(){原创 2016-08-09 06:41:41 · 2739 阅读 · 0 评论 -
prefuse同时做多个图---解决不连通图的坐标原点
最近一直在研究prefuse,prefuse是一款优秀的开源拓扑布局框架!可以嵌入到网页中,也可以用于客户端形式!但是在使用的过程中,发现不少原有的bug,比如在节点有不连通的情况下,后续节点的坐标全部在原点,而没有进行网络拓扑 布局,所以,我就看看源码!然后进行改动了改动,原创 2016-08-09 06:32:12 · 598 阅读 · 0 评论 -
jdbc查询数据库返回实体对象集合
最近做prefuse中用到原始的数据库查询 try { ResultSet rs = null; String hqltonode="SELECT * FROM report_result_external where device_name='"+m_text+"'"; rs = con.prepareStat原创 2016-08-03 16:03:20 · 6788 阅读 · 2 评论 -
BaseAction的写法
baseaction是javaweb在ssh框架上面最常用的一个工具,防止丢失,大家可以用package com.lrdd.base.dao;import java.applet.AppletContext;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingExcep原创 2016-07-19 08:59:25 · 4379 阅读 · 0 评论