Java
文章平均质量分 51
零下三度撸代码
每天进步一丢丢。
展开
-
SpringBoot项目简单优雅停服方式
由于是使用kill的方式,它会想java程序发送一个信号,当项目接收到这个信号的时候会去调用醒目中的@PreDestory注解备注的方法。从而关闭服务器。原创 2022-11-14 16:37:53 · 655 阅读 · 0 评论 -
Java中的Lambda表达式[集合]
Java中的lambda表达式的相关知识点集合原创 2022-08-09 09:26:41 · 735 阅读 · 0 评论 -
IDEA插件开发
插件的用途:提升开发效率改变界面显示plugin.xml文件属性说明id:表示当前插件的唯一id号name:插件的名称version:插件的版本号vendor:填写开发人的邮箱,公司名称description:插件的描述,如果将插件上传到IDEA的仓库后,在进行下载的时候就会显示该描述idea-version:表示当前插件所支持的所有Intellij Idea 的版本extensions:这里一般会放一些我们自己的扩展的东西,比如新增高亮显示,新增语言支持都是需要在这里进行扩展a原创 2021-08-30 11:36:41 · 1011 阅读 · 2 评论 -
IDEA的Spring项目配置本地Tomcat来启动报错排解
错误提示:HTTP Status 404 – 未找到Type Status Report描述 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.大概意思就是找不到路径。然后看console控制台信息org.springframework.web.servlet.DispatcherServlet原创 2021-06-23 11:43:00 · 487 阅读 · 0 评论 -
IDEA调试远程游戏服务器代码-解决线上Bug终极武器
1.先在本地建立一个测试的项目我就先建立一个test服务器用于调试远程的例子,只有一个controller一个调用接口如下(SpringBoot项目)上图中有一个jar包我已经使用maven打包工具将其打包出来了。2.上传项目到服务器3.配置IDEA本地的远程调试配置4.远程启动服务器启动参数:java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 test-1.0-SNAPSHOT.jar原创 2021-04-16 14:42:03 · 292 阅读 · 1 评论 -
Java热更代码在Linux下使用的坑(提供项目下载地址)
1.将写好的热更测试类放到Linux。我是直接将项目放到了svn上面,然后通过svn在linux下直接拉取源码。但是在使用mvn clean package将tools.jar安装为本地仓库,并导入到pom表中>mvn install:install-file -DgroupId=com.extrajar -DartifactId=tools -Dversion=v1.0.0 -Dpackaging=jar -Dfile=tools.jar2.更换掉使用到的tools.jar包为linu原创 2021-04-16 10:23:41 · 179 阅读 · 1 评论 -
Jav8不能错过的时间操作
java8之前的时间操作都过于复杂,java8之后推出了一个新的时间类,方便了时间上的操作。下面我们来解析一个基于java8新的时间类的各种操作方式将时间格式转为对应的LocalDateTimeString openTimeStr = "2021-03-09 10:00:00";LocalDateTime serverOpenDate = LocalDateTime.parse(openTimeStr, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:s.原创 2021-03-09 16:14:55 · 7945 阅读 · 0 评论 -
Java反射实践-检查关联数据的合法性
今天收到老大布置的任务,就是要起服的时候校验一下某些数据的合法性,防止策划配错表格导致运行出错。本来想着就是写一个方法,然后在每个配置文件数据中去进行校验的。就是谁建表,谁校验,我只提供一个校验的方法出来,你调用即可。但是这种方式很明显会增加无畏的工作量,且容易漏掉(不是每一个程序员都是负责任的程序员)。好吧,那就只能通过做成通用的方式咯。怎么才能通用呢?要想通用,无非就是在配置文件加载完成的时候,在内存中对他们进行校验数据。但是我怎么知道哪一个配表数据文件是我要去检验的,而且他们的命名方式也不一样啊原创 2020-12-09 21:21:03 · 229 阅读 · 0 评论 -
Java代理模式的实现方式——静态代理&动态代理
静态代理一个代理对象代理一个具体的对象,而动态代理是一个代理对象可以代理多个具体的代理对象。静态代理的实现方式如下:1.定义一个目标类public interface Target { void myRequest();}2.定义一个具体的实现类(被代理的类)public class RealTarget implements Target { public void myRequest() { System.out.println("RealTarget"); }}3.定义原创 2020-12-01 11:17:49 · 194 阅读 · 0 评论 -
游戏福利系统设计实践
简介作为一款游戏要拉动用户日活必须要有一点的奖励或者是付费,这就要设计到福利系统的,包括每日登录,日卡,月卡等等的。而我们要面对这么多的福利功能的时候,一个设计得当的福利系统框架会减少我们很多的工作量,而且系统稳定,后续维护少等优点。哪问题来了,该如何设计了?设计的思路要设计一个系统或一个框架的时候,我们第一时间需要搬出来的就是设计模式。对设计模式六大原则中的两个原则进项里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有原创 2020-11-20 11:53:36 · 1098 阅读 · 5 评论 -
FastJson例子以及工作实践
在我们的开发中会经常的用到Json,可能是用来作为交互的字符串,也可能是用来保存到MySQL数据库中,方便保存。下面来讲解一下FastJson的一些使用方式吧。将对象和字符串之间转换 //创建一个对象并将 给对象赋值 然后使用fastjson转化为json类型的数据 GoodsGrid student = new GoodsGrid(); student.setWorth(1999); String studentJson = JSON.toJSONString(student);/.原创 2020-11-04 16:25:32 · 151 阅读 · 0 评论 -
Java游戏服务器开发3--货币系统
维系一个游戏的交易系统,货币和道具系统是密不可分的。那么我们这一样来学习一个货币系统。货币存储类型com.server.game.scene.currency.CurrencyStore/** * 货币自定义储存 */public interface CurrencyStore { /**货币增加操作*/ ResultCode add(Long roleId, int size); /** 货币减少操作 */ ResultCode reduce(Long roleId, int size)原创 2020-08-07 10:49:39 · 1091 阅读 · 0 评论 -
Python归集线上所有游戏服日志到本地
最近游戏上线了,接到老大的指令说要用python做一个归集指定日期的个类别的日志,如错误日志,查询指定字符串日志并归集到本地来。而且外网是不能通过ssh的方式连接上去的。上面的需求只能通过在外网部署一个线程,然后通过连接这个线程,并对其做一些处理,并吧归集好的数据传送回来本地的方式。对于外网如何部署一个线程,上节文章讲述过,大家可以看看部署SpringBoot项目到Linux并以Jar方式启动下面讲解如何使用Python来归集数据交互是的方式那就使用函数raw_input("请输入开始那天的错.原创 2020-07-30 15:50:39 · 219 阅读 · 1 评论 -
部署SpringBoot项目到Linux并以Jar方式启动
今天用Python写了一个收集日志的系统,目的就是将每个服务器系统中的日志归总到本地。写了一天终于在本地服上测试完成了。可以将每个服务器id以及对应的过滤的日志都收集到本地,完美!正要到Boss面前报告进度,并拿外网的用户名和密码来测试外网。Duang~ 访问禁止!What,不能用SSH的方式来访问外网服务器,这就尴尬了,那我能怎么操作呢?思考一番,用请求的方式来操作吧。在每个服务器中部署一个进程,并访问这个进程去做外网服的数据归总。归总完毕之后将数据发送或者下载外网归总好的日志。好像也只有.原创 2020-07-08 21:08:06 · 813 阅读 · 0 评论 -
Java游戏服务器开发2--上线项目出Bug之热更代码
本来想着今天要更新Java游戏开发中的架构设计,但是中午前老板问突然问题java项目怎么实现热更新,我想想了,现在很多java开发人员都对热更这个比较陌生,那我今天就来更新一篇关于java热更的文章。文章中有讲的不对的地方请大佬指出。对于一个游戏来说,停服一分就会流失很多用户。所以因为一个小bug就停服是不能够被接受的。幸好JVM给我们提供了一些接口,可以简单做一些热更新。修复一些小Bug而不用重启服务。JVM可以给运行中的服务器绑定一个代理,在这个代理中可以拿到Instrumentation 这个.原创 2020-07-04 15:50:27 · 449 阅读 · 1 评论 -
Java游戏服务端开发系列文章
搞事情!预告:搞事情!原创 2020-06-18 19:39:15 · 3105 阅读 · 6 评论 -
Java高级开发必备技能之JMX监控
文章目录JMX监控java项目内容 之 标准MBean第一步:编写MBean接口和对应的实现类第二步:创建对应的jmx代理并将mbean注册到代理中第三步:查看MBean数据JMX监控java项目内容 之 MXBeanJMX监控java项目内容 之 标准MBeanJMX是Java Management Extensions 的简写,即Java管理扩展.通过JMX,我们可以监控的内容包括:1...原创 2019-07-22 10:53:44 · 1168 阅读 · 0 评论 -
一篇文章搞懂多线程和高并发
文章目录一篇文章搞懂多线程和高并发Java内内存模型线程栈Thread Strack:线程堆Teap:线程堆栈的总结点:CPU:寄存器CPU Registers:高级缓存:主存总结:共享对象可见性Race Conditions原子性锁synchronized锁Lockvolatile关键字读写锁:未完待续~~~一篇文章搞懂多线程和高并发基于之前对多线程的理解不全面且在实际应用缺乏相关的经验问...原创 2019-07-27 18:53:03 · 924 阅读 · 0 评论 -
Java定时器
import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * Created by Administrator on 2017/11/10. * (1)Timer.schedule(TimerTask task,Date time)安排原创 2017-11-10 12:31:42 · 282 阅读 · 0 评论 -
Java I/O操作
package website.dengta.javaio;import org.junit.Test;import java.io.*;/** * Created by Administrator on 2017/9/26. */ public class TestJavaIO {/** * 制定目录创建文件 */@Testpublic void TestCreateFile()原创 2017-09-26 19:18:34 · 218 阅读 · 0 评论 -
synchronized的注意事项和项目中的应用方案
文章目录Synchronized锁注意事项对象锁Synchronized类锁总结在项目中的应用方案Synchronized锁注意事项synchronized关键字,用它来修饰需要同步的方法和需要同步代码块,默认是当前对象作为锁的对象。在修饰类时(或者修饰静态方法),默认是当前类的Class对象作为所的对象故存在着方法锁、对象锁、类锁 这样的概念在使用到锁的时候有锁方法,锁对象,和锁类,那...原创 2019-07-24 11:55:30 · 1092 阅读 · 0 评论 -
Java设计模式--原型模式Prototype
原型模式Prototype 原型模式使得用户可以通过复制对象样本来创建新对象。与通过调用构造函数创建对象相比,二者主要区别在于:通过复制创建的新对象一般会包含原始对象的某些状态。原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意客户(Client)角色:客户类提出创建对象的请求。抽象原型(Proto原创 2017-11-13 23:09:38 · 330 阅读 · 0 评论 -
Java设计模式--调停者模式Mediator
调停者模式场景:一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一旦某个类发生问题,进行修改,无疑会影响到所有调用它的类,甚至它调用的类,可见这种情况下,类与类之间的耦合性极高。应用:调停者犹如第三方中介一般,将所有的类与类之间的引用都导向调停者类,所有类的请求,一致发向调停者,由调停者再发向目标类,这样原本复原创 2017-10-25 23:55:50 · 347 阅读 · 0 评论 -
Java设计模式--代理模式proxy
代理模式意图:通过提供一个代理或者占位符来控制对该对象的访问。一个经典例子:避免在使用图像前将图像都加载进内存,就需要为这些图像创建一些代理,以便在真正需要使用图像时,才执行加载的操作。使用代理模式有时时非常的脆弱的,因为它依赖于将方法调用转发到底层对象。静态代理静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.代码如下:package website原创 2017-10-27 00:40:50 · 371 阅读 · 0 评论 -
Java中JFreeChart图表库的使用
JFree是java下的一个图表库,也是生成丰富图表的一个库。下面我们来简单的学习一下这个图表库吧。下载的地址可以去官网:http://www.jfree.org/jfreechart/download.html也可以在我的网盘中下载:链接:http://pan.baidu.com/s/1bpbEwaj 密码:iu6n要启动这个库,电脑必须是先要安装JDK1.6或以上版本下载之后就是解压,解压后原创 2017-09-21 23:07:11 · 534 阅读 · 0 评论 -
(转)8个华丽而实用的Java图表应用
1、JFreeChart - 多功能Java图表类库JFreeChart是一款基于Java的多功能图表类库,并且是完全开源免费的。JFreeChart可以绘制饼状图、柱状图、散点图、时序图、甘特图等等多种图表,生成的图表还能以PNG和JPEG格式的图片输出,功能十分强大,更重要的一点是JFreeChart生成的图表操作起来非常流畅,因此性能也挺不错。官方网站:http://转载 2017-09-21 16:06:12 · 2737 阅读 · 0 评论 -
SwaggerUI API在线文档神器
http://www.jianshu.com/p/d6626e6bd72c转载 2017-09-28 18:47:51 · 1018 阅读 · 1 评论 -
Zookeeper客户端的使用
Zookeeper客户端的使用在zookeeper/bin中启动命令./zkCli.sh -timeout 0 -r -server ip:porttimeout:表示超时时间,毫秒为单位(检测心跳时间)-r :只读模式如:./zkCli.sh -timeout 5000 -server 192.168.168.129:2181zookeeper的工作原理:1.每个Server在内存中存储了一份原创 2017-09-17 23:07:26 · 465 阅读 · 0 评论 -
Zookeeper全解析——Paxos作为灵魂
原计划在介绍完ZK Client之后就着手ZK Server的介绍,但是发现ZK Server所包含的内容实在太多,并不是简简单单一篇Blog就能搞定的。于是决定从基础搞起比较好。那么ZK Server最基础的东西是什么呢?我想应该是Paxos了。所以本文会介绍Paxos以及它在ZK Server中对应的实现。先说Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年转载 2017-09-17 20:35:22 · 150 阅读 · 0 评论 -
Zookeeper集群安装
Zookeeper安装三台CentOS7虚拟机:步骤如下:http://blog.csdn.net/huanghailiang_ws/article/details/78009931在Linux中 /opt 安装应用软件的目录/var 存放应用的动态数据目录安装JDK:解压:tar zxvf jdk_name.gz配置环境:1 vim /etc/profile2. JAVA_HOME=原创 2017-09-17 17:48:01 · 199 阅读 · 0 评论 -
Java错误集--错误定位方法
一般遇到上图的错误你会怎么取查错误? 对于这种错误的一般查询方式如你看到的一样,先点击错误的代码行。从下往上来点。因为Java在捕捉错误的时候,堆栈信息是从下往上呈现出来的。最末尾的就是出错的最后的地方,而最开始的错误就是最开始传入的有问题的参数。所有从末尾定位到开始的错误信息。那么我们知道了上面的信息之就需要查这个参数的问题。另种方法1.好像我上面的打原创 2017-09-25 11:08:40 · 2697 阅读 · 0 评论 -
Java设计模式--单例模式
单例模式单例模式意图就时为了确保一个类有且只有一个实例,并为它提供一个全局访问点。为了避免多线程对单例模式的同时初始化这种竞争,需要使用锁机制来协调不同线程对同一个方法的执行。饿汉式和懒汉式区别从名字上来说,饿汉和懒汉,饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,而懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。懒汉式单例/原创 2017-10-20 00:14:26 · 235 阅读 · 0 评论 -
Java设计模式--构建者模式(Builder)
构造性模式:一般情况下iain,需要为自己开发的类提供构造函数使其能够被初始化。这些构造函数相互协作,并且类种的每个构造函数最终都会去带调用超类的构造函数。调用构造函数的方式有两种: 使用new操作符使用发射来初始化和使用对象构造者模式创建一个对象时,并不一定拥有创建该对象的全部信息.而是需要逐步的获得创建对象的信息,更方便的做法就时分步骤构建对象。意图:将类的构建逻辑转移到类的实例化外部原创 2017-11-06 23:48:12 · 553 阅读 · 0 评论 -
Java设计模式--适配器模式
接口型模式职责型模式构造型模式操作型模拟扩展型模式UML: http://blog.csdn.net/fatherican/article/details/44966891接口型模式每个设计模式都旨在解决不同场景的问题,面向接口的设计模式适用于需要对一个类或一组类的方法进行定义或者重定义的场景。适配器(Adapter)模式目的:使用不同的接口的类所提供的服务为客户端提供其所期望的接口。当没有din原创 2017-10-12 08:07:36 · 239 阅读 · 0 评论 -
Java设计模式--桥接模式
桥接模式关注抽象的设计,抽象包含一组抽象方法的类,而这些抽象方法可能包含多个实现。每个子类提供了抽象方法的不同实现,但是当需要对该层次进行子类的化的时候就出现了不足。此时可创建一个桥,然后将这些抽象的方法都移到接口中,那么,抽象就将依赖接口的实现了。桥接的意图就时将抽象和抽象方法的实现相互分离来实现解耦,以便二者可以相互独立地变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了原创 2017-10-17 00:36:11 · 232 阅读 · 0 评论 -
Java设计模式--合成模式
合成模式组合建模时注意1.组对象包含单对象也包含其他的组对象2.要为组合对象和单对象定义共同的行为合成模式的意图:为保证客户端调用单对象与组合对象的一致性。合成模式是对象的结构模式,在以后的项目中,如果遇到对象组合的情况(即也符合树结构的),可以考虑下此模式。此模式中讲述了安全方式和透明方式:安全方式:抽象构件上只提供树叶和树枝公共的方法,没提供树枝独有的管理等方法(add(),remove(原创 2017-10-16 23:21:58 · 304 阅读 · 0 评论 -
NoClassDefFoundError错误解决方法
NoClassDefFoundError错误发生的原因NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。与ClassNotFoundException的不同在于,原创 2017-11-02 09:27:24 · 22110 阅读 · 1 评论 -
Java设计模式--享元模式
享元模式意图:通过共享来有效地支持大量细粒度的对象。抽象出对象中不变的部分仅仅只是完成了享元模式的一半。另一半包括创建享元工厂/实例化享元,以及让客户对象共享享元对象。还需要确保客户对象应使用享元工厂来创建享元对象,而不是自己创建。共享模式是支持大量细粒度对象的复用,所以享元模式要求能够共享的对象必须是细粒度对象。在了解享元模式之前我们先要了解两个概念:内部状态、外部状态。内部状态:在享元对象内部不原创 2017-11-01 23:17:27 · 657 阅读 · 0 评论 -
Java设计模式--责任链模式
目的:通过给予多个对象处理请求的机会,以解除请求的发送者与接收者之间的耦合。在运用责任链模式时,客户端不必事先知道对象集合中那个对象可提供自己需要的服务。当客户端发出调用请求后,该请求会沿着责任链转发请求,直到找到提供该服务的对象为止。责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这原创 2017-10-31 23:45:39 · 294 阅读 · 0 评论 -
Java设计模式--观察者模式
观察者模式意图是在多个对象之间定义一对多的依赖关系,当一个对象的状态发生改变时,会通知依赖于它的对象,并根据新状态做出相应的反应。也就是当一个对象发生改变是,通知调用它的对象。package website.dengta.observer;/** * @author www.dengta.website * @date 2017-10-23 22:58 */public interface原创 2017-10-23 23:43:18 · 240 阅读 · 0 评论