- 博客(112)
- 资源 (4)
- 收藏
- 关注
原创 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 184
原创 Spring AOP实现方式的实现和特点
SpringAOP的前置知识点如下文章Spring AOP 前置知识链接目标代理对象的创建Spring创建目标代理对象的方式如下JDK动态代理CGLIBObjenesisCglibAopProxy(Spring 4.0开始引入,默认方式)JDK动态代理jdk代理源码org.springframework.aop.framework.JdkDynamicAopProxy#getProxy(java.lang.ClassLoader)@Override public Obje
2020-11-30 19:50:16 265
原创 Spring 从IoC到AOP
上面两篇文件讲解了IOC的基础,下面来讲解Spring的另一项基础AOP。aop的目标如图AOP和继承的关系AOP 的核心概率Advice 通知-- 定义在连接点处的行为,围绕方法调用而进入注入Pointcunt 切点-- 确定在那些连接点处应用通知Advisor 通知器 – 组合Advice 和PointcuntSpringAOP实现ProxyFactoryBeanFactoryBean和BeanFactory的区别Spring AOP的底层实现与源头构成:targ
2020-11-30 19:16:23 82
原创 游戏项目中注解[Annotation]使用的正确姿势
为什么使用注解?注解是JDK1.5之后出现的产物,那么为什么使用注解了,使用xml不香么? 其实注解和XML都可以理解为对某个类或方法进行配置。那么使用注解我们可以直接放入到代码中,这样既可以方便开发,也方便我们理解代码。因此注解是比较适合做一些与代码相关度高的操作,如将Bean对应的服务暴露出去。如何定义一个注解?@Retention(RUNTIME) //运行时生效@Target(ElementType.METHOD) // 可以放到方法中public @interface UseItem {
2020-11-30 17:27:44 202
原创 Spring精髓-源码级别分析
内容Spring源码分析环境搭建Spring IOC和Aop思想解读Spring IOC根容器BeanFactory分析DefaultListableBeanFactory及资源载入BeanFactory与FactoryBean详解何时使用FactoryBean及其意义XmlBeanDefinitionReader与ResourceSpring对于各种资源的抽象化BeanDefinitionParserDelegate与委托设计模式的应用Spring配置文件的读取和容器装配配置文件在
2020-11-25 18:05:04 155
原创 游戏福利系统设计实践
简介作为一款游戏要拉动用户日活必须要有一点的奖励或者是付费,这就要设计到福利系统的,包括每日登录,日卡,月卡等等的。而我们要面对这么多的福利功能的时候,一个设计得当的福利系统框架会减少我们很多的工作量,而且系统稳定,后续维护少等优点。哪问题来了,该如何设计了?设计的思路要设计一个系统或一个框架的时候,我们第一时间需要搬出来的就是设计模式。对设计模式六大原则中的两个原则进项里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有
2020-11-20 11:53:36 1003 5
原创 git在日常工作中的常规使用
项目终于抛弃来svn拥抱git来,但是第一次真正项目来面对这个git还是有点茫然的。今天特点来学习一下git。远程的github操作删除github上fork的项目,进入到项目中的setting,然后拉到最下面有一个删除仓库的选项git init git statusgit commit git config --local user.name "your name "git config --local user.email "[email protected]"git add tes.
2020-11-15 17:04:39 200
原创 mac安装Homebre
查看来很多方法都无法安装homebrew错误都原因都是curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused但是可以使用国内源都方式来安装:如下亲测有效/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"...
2020-11-14 16:18:49 581
原创 FastJson例子以及工作实践
在我们的开发中会经常的用到Json,可能是用来作为交互的字符串,也可能是用来保存到MySQL数据库中,方便保存。下面来讲解一下FastJson的一些使用方式吧。将对象和字符串之间转换 //创建一个对象并将 给对象赋值 然后使用fastjson转化为json类型的数据 GoodsGrid student = new GoodsGrid(); student.setWorth(1999); String studentJson = JSON.toJSONString(student);/.
2020-11-04 16:25:32 127
原创 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 973
原创 Python归集线上所有游戏服日志到本地
最近游戏上线了,接到老大的指令说要用python做一个归集指定日期的个类别的日志,如错误日志,查询指定字符串日志并归集到本地来。而且外网是不能通过ssh的方式连接上去的。上面的需求只能通过在外网部署一个线程,然后通过连接这个线程,并对其做一些处理,并吧归集好的数据传送回来本地的方式。对于外网如何部署一个线程,上节文章讲述过,大家可以看看部署SpringBoot项目到Linux并以Jar方式启动下面讲解如何使用Python来归集数据交互是的方式那就使用函数raw_input("请输入开始那天的错.
2020-07-30 15:50:39 200 1
原创 部署SpringBoot项目到Linux并以Jar方式启动
今天用Python写了一个收集日志的系统,目的就是将每个服务器系统中的日志归总到本地。写了一天终于在本地服上测试完成了。可以将每个服务器id以及对应的过滤的日志都收集到本地,完美!正要到Boss面前报告进度,并拿外网的用户名和密码来测试外网。Duang~ 访问禁止!What,不能用SSH的方式来访问外网服务器,这就尴尬了,那我能怎么操作呢?思考一番,用请求的方式来操作吧。在每个服务器中部署一个进程,并访问这个进程去做外网服的数据归总。归总完毕之后将数据发送或者下载外网归总好的日志。好像也只有.
2020-07-08 21:08:06 785
原创 Java游戏服务器开发2--上线项目出Bug之热更代码
本来想着今天要更新Java游戏开发中的架构设计,但是中午前老板问突然问题java项目怎么实现热更新,我想想了,现在很多java开发人员都对热更这个比较陌生,那我今天就来更新一篇关于java热更的文章。文章中有讲的不对的地方请大佬指出。对于一个游戏来说,停服一分就会流失很多用户。所以因为一个小bug就停服是不能够被接受的。幸好JVM给我们提供了一些接口,可以简单做一些热更新。修复一些小Bug而不用重启服务。JVM可以给运行中的服务器绑定一个代理,在这个代理中可以拿到Instrumentation 这个.
2020-07-04 15:50:27 398 1
原创 Java服务器开发之搭建游戏基础框架
Java服务器开发之搭建游戏基础框架最开始的项目是一个Maven构建的Java Web项目,使用Tomcat作为Web容器来提供服务。上图是游戏的一个最基础架构的脑图,下面是对应搭建好项目的目录组织下面讲解这基础的项目中最最最重要的一个文件:web.xml文件当启动Web项目会先读取项目中的Web.xml配置文件。 <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welc
2020-06-19 11:56:11 3412
原创 一篇文章搞懂多线程和高并发
文章目录一篇文章搞懂多线程和高并发Java内内存模型线程栈Thread Strack:线程堆Teap:线程堆栈的总结点:CPU:寄存器CPU Registers:高级缓存:主存总结:共享对象可见性Race Conditions原子性锁synchronized锁Lockvolatile关键字读写锁:未完待续~~~一篇文章搞懂多线程和高并发基于之前对多线程的理解不全面且在实际应用缺乏相关的经验问...
2019-07-27 18:53:03 547
原创 synchronized的注意事项和项目中的应用方案
文章目录Synchronized锁注意事项对象锁Synchronized类锁总结在项目中的应用方案Synchronized锁注意事项synchronized关键字,用它来修饰需要同步的方法和需要同步代码块,默认是当前对象作为锁的对象。在修饰类时(或者修饰静态方法),默认是当前类的Class对象作为所的对象故存在着方法锁、对象锁、类锁 这样的概念在使用到锁的时候有锁方法,锁对象,和锁类,那...
2019-07-24 11:55:30 953
原创 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 980
原创 Java设计模式--原型模式Prototype
原型模式Prototype 原型模式使得用户可以通过复制对象样本来创建新对象。与通过调用构造函数创建对象相比,二者主要区别在于:通过复制创建的新对象一般会包含原始对象的某些状态。原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意客户(Client)角色:客户类提出创建对象的请求。抽象原型(Proto
2017-11-13 23:09:38 315
原创 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 255
原创 Java设计模式--工厂模式
工厂模式意图:定义一个用于创建对象的接口,并控制返回哪个类的实例。工厂方法模式不仅要求有一个能够创建新对象的方法,还需要让客户代码无须了解具体实例化的类。工厂方法模式通常包含了若干类,这些类实现了相同的操作,返回了相同的抽象类型,然而这些操作的内部,实际上却实例化了不同的类,并且这些类都实现了上述抽象类型。当客户代码请求一个新对象时,这些新对象该由哪个类实例化,取决于工厂对象接收创建请求时的行为。
2017-11-08 23:54:22 251
原创 Java设计模式--构建者模式(Builder)
构造性模式:一般情况下iain,需要为自己开发的类提供构造函数使其能够被初始化。这些构造函数相互协作,并且类种的每个构造函数最终都会去带调用超类的构造函数。调用构造函数的方式有两种: 使用new操作符使用发射来初始化和使用对象构造者模式创建一个对象时,并不一定拥有创建该对象的全部信息.而是需要逐步的获得创建对象的信息,更方便的做法就时分步骤构建对象。意图:将类的构建逻辑转移到类的实例化外部
2017-11-06 23:48:12 513
原创 NoClassDefFoundError错误解决方法
NoClassDefFoundError错误发生的原因NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。与ClassNotFoundException的不同在于,
2017-11-02 09:27:24 21480 1
原创 Java设计模式--享元模式
享元模式意图:通过共享来有效地支持大量细粒度的对象。抽象出对象中不变的部分仅仅只是完成了享元模式的一半。另一半包括创建享元工厂/实例化享元,以及让客户对象共享享元对象。还需要确保客户对象应使用享元工厂来创建享元对象,而不是自己创建。共享模式是支持大量细粒度对象的复用,所以享元模式要求能够共享的对象必须是细粒度对象。在了解享元模式之前我们先要了解两个概念:内部状态、外部状态。内部状态:在享元对象内部不
2017-11-01 23:17:27 606
原创 Java设计模式--责任链模式
目的:通过给予多个对象处理请求的机会,以解除请求的发送者与接收者之间的耦合。在运用责任链模式时,客户端不必事先知道对象集合中那个对象可提供自己需要的服务。当客户端发出调用请求后,该请求会沿着责任链转发请求,直到找到提供该服务的对象为止。责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这
2017-10-31 23:45:39 280
原创 Java设计模式--代理模式proxy
代理模式意图:通过提供一个代理或者占位符来控制对该对象的访问。一个经典例子:避免在使用图像前将图像都加载进内存,就需要为这些图像创建一些代理,以便在真正需要使用图像时,才执行加载的操作。使用代理模式有时时非常的脆弱的,因为它依赖于将方法调用转发到底层对象。静态代理静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.代码如下:package website
2017-10-27 00:40:50 360
原创 Java设计模式--调停者模式Mediator
调停者模式场景:一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一旦某个类发生问题,进行修改,无疑会影响到所有调用它的类,甚至它调用的类,可见这种情况下,类与类之间的耦合性极高。应用:调停者犹如第三方中介一般,将所有的类与类之间的引用都导向调停者类,所有类的请求,一致发向调停者,由调停者再发向目标类,这样原本复
2017-10-25 23:55:50 329
原创 Java设计模式--观察者模式
观察者模式意图是在多个对象之间定义一对多的依赖关系,当一个对象的状态发生改变时,会通知依赖于它的对象,并根据新状态做出相应的反应。也就是当一个对象发生改变是,通知调用它的对象。package website.dengta.observer;/** * @author www.dengta.website * @date 2017-10-23 22:58 */public interface
2017-10-23 23:43:18 231
原创 cocos2d-x--使用doxygen+graphviz生成源码文档
需要使用到的工具如下:1.Doxygen:http://www.stack.nl/~dimitri/doxygen/download.html#srcbin2.Graphviz:http://www.graphviz.org/Download_windows.php安装完成之后打开doxygen工具,并设置好相关的参数,点击run doxygen即可生成文档。最后打开生成目录文件中的index.ht
2017-10-22 13:19:48 412
转载 游戏服务器开发的基本体系与服务器端开发的一些建议
把一些游戏开发方面的东西整理一下,希望能对那些想做游戏服务器开发的朋友有所帮助。 首先,要明确一点,做游戏服务器开发和做传统的web开发有着本质的区别。游戏服务器开发,如果没有经验,一开始根本没有一个明确清析的目标,不像web那样,有些明确的MVC架构,往往就是为了尽快满足策划的需求,尽快的实现功能,尽快能让游戏跑起来。但是随着功能越来越多,在老代码上面修改的越来越频繁,游戏测试
2017-10-21 09:52:16 810
原创 Java设计模式--单例模式
单例模式单例模式意图就时为了确保一个类有且只有一个实例,并为它提供一个全局访问点。为了避免多线程对单例模式的同时初始化这种竞争,需要使用锁机制来协调不同线程对同一个方法的执行。饿汉式和懒汉式区别从名字上来说,饿汉和懒汉,饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,而懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。懒汉式单例/
2017-10-20 00:14:26 229
原创 Java设计模式--桥接模式
桥接模式关注抽象的设计,抽象包含一组抽象方法的类,而这些抽象方法可能包含多个实现。每个子类提供了抽象方法的不同实现,但是当需要对该层次进行子类的化的时候就出现了不足。此时可创建一个桥,然后将这些抽象的方法都移到接口中,那么,抽象就将依赖接口的实现了。桥接的意图就时将抽象和抽象方法的实现相互分离来实现解耦,以便二者可以相互独立地变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了
2017-10-17 00:36:11 218
原创 Java设计模式--合成模式
合成模式组合建模时注意1.组对象包含单对象也包含其他的组对象2.要为组合对象和单对象定义共同的行为合成模式的意图:为保证客户端调用单对象与组合对象的一致性。合成模式是对象的结构模式,在以后的项目中,如果遇到对象组合的情况(即也符合树结构的),可以考虑下此模式。此模式中讲述了安全方式和透明方式:安全方式:抽象构件上只提供树叶和树枝公共的方法,没提供树枝独有的管理等方法(add(),remove(
2017-10-16 23:21:58 286
原创 数据分析--概率--002
事件关系:事件运算定律概率的性质古典概率:对亍试验E,若满足:1. 试验的样本空间只包含有限个元素2. 试验中每个基本事件发生的可能性相同,即每个基本事件发生的概率相等则称这样的试验E为古典概型,也叫等可能概型几何概型:排列组合
2017-10-14 19:31:31 278
原创 数据分析--描述性统计-001
描述数据离散程度:极差:最大值-最小值,简单地描述数据的范围大小。缺点就是只描述了最末端的两个数据,中间的数据无法参与。方差:标准差=方差开根号—直方图频数直方图频率直方图:频数/总数箱线图茎叶图线图以时间为横坐标,变量为纵坐标,反映变量随时间推秱的变化趋势柱形图显示一段时间内的数据变化或显示各项乊间的比较情冴 柱形图和直方图的区别:从横坐标看,直方图是同一个变量的分组划分,而柱形图则是丌同
2017-10-14 17:58:39 1511
原创 Java设计模式--外观模式(Facade)
外观模式(Facade)外观模式意图就是为子系统提供一个接口,便于它的使用。外观模式(Facade),隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。使用场景:1- 为复杂的模块或子系统提供外界访问的模块;2- 子系统相互独立;3- 在层析结构中,可以使用外观模式定义系
2017-10-12 23:26:20 260
原创 Java设计模式--适配器模式
接口型模式职责型模式构造型模式操作型模拟扩展型模式UML: http://blog.csdn.net/fatherican/article/details/44966891接口型模式每个设计模式都旨在解决不同场景的问题,面向接口的设计模式适用于需要对一个类或一组类的方法进行定义或者重定义的场景。适配器(Adapter)模式目的:使用不同的接口的类所提供的服务为客户端提供其所期望的接口。当没有din
2017-10-12 08:07:36 231
原创 Eclipse出现Widget is disposed错误
在Eclipse中切换正常磨损和Debug模式的时候出现了这种问题。可以通过关闭toggle breakcrumb。来屏蔽这种错误。如图所示:
2017-10-10 16:49:25 12877
原创 Cocos2d-x中的精灵
精灵的继承关系—精灵的性能优化: 使用纹理图集:也称为精灵表,是将许多小的精灵图片组合到一张大图里面。优点有 :1.减少文件读取次数2.减少OpenGL ES绘制调用并且加速渲染3.减少内存消耗运用图片集方式为什么会减少内存碎片?原因:OpenGL分配给每个图片2的n次幂大小的内存空间,及时这张图片达不到这样的高度和宽度也会分配大于次图片的2的n次幂大小的空间。通常使用Zwoptex和T
2017-10-06 23:24:03 213
原创 Cocos2d-x坐标系/重要概念/设置屏幕大小等
导演类:Director单例对象,能够保持一致的配置信息,便于管理场景对象 Director::getInstance()职责:1.访问和改变场景2.访问Cocos2d-x的配置信息3.暂停/继续和停止游戏4.转换坐标继承关系:Ref <-- Director <-- DisplayLinkDirector场景类:Sence场景是构建游戏的界面,分以下几类:1.展示场景:播放视频或者简单
2017-10-06 17:02:22 348
Unity 5实战(使用C#和Unity开发多平台游戏)官方源码
2018-10-07
Tensorflow 实战Google深度学习框架
2017-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人