记录精彩的程序人生
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/mxdxm8899/article/details/83813712 Netbeans Platform: 注册与发现的机制 Netbeans Platform是模块化的设计。我们看一下最基本的开发思路: 例如,我们想要写一个XML验证器模块。我们会做以下几个事情: 设计Validator接口, 定义一些验证所需的方法。方便以后提供Manifest验证器,html验证器等。 设计实现Validation类,这个类维护一个Validator的Map, 允许添加和删除Validatior,如果需要验证的话,这个类会遍历Validator找出响应的Validator实现。 设计实现XMLValidator类,实现Validator接口 实现XMLModuleInstall类,继承ModuleInstall类。这个类维护一个静态的Validation类,完成XMLValidator的注册和反注册任务 这里有个问题,就....
https://www.cnblogs.com/fps2tao/p/9854321.html windows服务器下,mysql运行一段时间之后忽然无法连接,但是mysql服务启动正常,连接时报错: can't connect to mysql server on 'localhost' (10055) 网上搜索了很久,最终确定原因为: Win32 error code 10055: 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作 出现这种情况我认为重启服务器可以解决,但是治标不治本,一段时间之后仍然会出现此问题。 此问题不是mysql应用程序的问题而是windows server system 的配置问题。因此需要修改windows server system的配置。 具体办法为修改windows 注册表: 有两个相关值,一是修改MaxUserPort(最大连接数);另一个是修改TcpTimedWaitDelay(TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间) 据我的经验推断修改MaxUserPort为最佳。 注册表位置如下,如果没有此项,需要手动添加 HK....
https://www.cnblogs.com/dnn179/p/DatabaseMetaData.html DatabaseMetaData类是java.sql包中的类,利用它可以获取我们连接到的数据库的结构、存储等很多信息。如: 1、数据库与用户,数据库标识符以及函数与存储过程。 2、数据库限制。 3、数据库支持不支持的功能。 4、架构、编目、表、列和视图等。 通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。 ** (1) DatabaseMetaData实例的获取** Connection conn = DriverManager.getConnection(……); DatabaseMetaData dbmd = Conn.getMetaData(); 创建了这个实例,就可以使用它的方法来获取数据库得信息。主要使用如下的方法: ** (2) 获得当前数据库以及驱动的信息** dbmd.getDatabaseProductName():用以获得当前数据库是什么数据库。比如o....
https://www.cnblogs.com/huangdabing/p/9189532.html 使用JDBC进行批处理 JDBC实现批处理有两种方式:statement和preparedstatement 一、使用Statement完成批处理 1.1、使用Statement完成批处理范例 1、使用Statement对象添加要批量执行SQL语句,如下: Statement.addBatch(sql1); Statement.addBatch(sql2); Statement.addBatch(sql3); 2、执行批处理SQL语句:Statement.executeBatch(); 3、清除批处理命令:Statement.clearBatch(); 1.2、采用Statement.addBatch(sql)方式实现批处理的优缺点 采用Statement.addBatch(sql)方式实现批处理: 优点:可以向数据库发送多条不同的SQL语句。 缺点:SQL语句没有预编译。 当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很....
https://blog.csdn.net/qq_15437667/article/details/82875474 ##方法一: 使用==比较的是两个字节数组是否为同一个字节数组,此处不是比较两个字节数组的内容是否相同。 ##方法二: 使用equals方法比较,该方法也是比较是两个字节数组是否为同一个字节数组,即equals也不是比较内容的。 ##方法三: 如果是比较字节数组内容是否相等,使用Arrays.equals(a,b)方法比较,返回值为true或false。 ##最后一点: 使用HashMap的键类型时,最好是重写了hashcode和equals的类型,不要使用数组。
http://blog.sina.com.cn/s/blog_13785e1370102xjh7.html 注意: 使用DataSourceUtils.getConnection(dataSource);方式获取连接,而不是dataSource.getConnection()。 dataSource.getConnection()会取到非当前线程的连接导致和当前线程的事务中的连接不相同导致事务不生效的问题。 mybatis插入语句结合connection执行自定义sql插入语句的事务例子: 注意:结合mybatis插入语句事务时,必须保证connection是相同的,通过DataSourceUtils.getConnection(dataSource);来获取当前线程的connection,使用数据源时执行connection后必须要对PreparedStatement和ResultSet进行关闭,不能关闭connection(关闭将会抛出“提交事务时,连接已被关闭”) 下面是java代码 service层 @Autowired private DataSource dataSourc....
https://www.cnblogs.com/qf-dd/p/10329558.html 如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。 检查数组是否包含某个值的方法 使用List public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } 使用Set public static boolean useSet(String[] arr, String targetValue) { Set<String> set = new HashSet<String>(Arrays.asList(arr)); return set.contains(targetVal....
properties中都是以name=value这样的k-v字符串对形式保存的。 在写properties文件时,如果value非常长,看起来是非常不方便的,可以用\来换行(最后一行不需要\),如下: template.file.exclude=impl.dbconverter.java.vm \ idbconverter.java.vm \ bean.converter.utils.java.vm \ impl.dbconverter.generic.java.vm \ table.manager.java.vm \ tableinstance.java.vm \ tablelistener.java.vm \ wrapdaoexception.java.vm \ manager.interface.java.vm \ manager.java.vm 这里的坑就是\必须是每行的最后一个字符! 如果像下面第二行这样一不小心多了一个空格。那么数据就会从这里截断。 template.file.exclude的值就成了impl.dbconverter.java.vm idbconverte....
https://ask.hellobi.com/blog/cimen/9133 Maven 配置 <dependency> <groupId>com.github.shyiko</groupId> <artifactId>mysql-binlog-connector-java</artifactId> <version>0.13.0</version> </dependency> Java文件 import com.github.shyiko.mysql.binlog.BinaryLogFileReader; import com.github.shyiko.mysql.binlog.event.Event; import com.github.shyiko.mysql.binlog.event.deserialization.ChecksumType; import com.github.shyiko.mysql.binlog.event.deserialization.EventDes....
https://blog.csdn.net/Const_Gong/article/details/51459226 声明:本教程翻译自:Box 2D C++ turorials - Jumping,仅供学习参考。 跳跃(Jumping) 水平滚轴游戏中的角色可以进行跳跃,是吧?现在就让我们看看几种不同实现跳跃的方法。我们已经在之前力和冲量(force and impulses)的话题中进行过相关问题的讨论,但是现在就让我们考虑一下如何把这些方法整合到游戏中。我们可以从匀速运动(moving at constant speed)这个话题开始,在一定范围内左/右控制移动一个动态物体。 直接设置速度 当玩家跳跃的时候他们的速度就会改变,让我们以此为起点。首先在Keyboard()方法中添加一个case分支,来获得玩家的跳跃输入: case 'j': //jump { b2Vec2 vel = body->GetLinearVelocity(); vel.y = 10;//upwards - don't change x velocity body->SetLinear....
https://blog.csdn.net/Const_Gong/article/details/51469033 声明:本文翻译自Box2D C++ tutorial-Setting up (iPhone),仅供学习参考。 简介 这篇文章针对在iOS上使用Box2D和OpenGL进行开发的环境设置问题。既然这跟环境设置话题中使用testbed框架不一样,那么我么也就让这个教程页单独分离出来,但是如果你现在的情况依然是我六个月前提到的情况,那么这篇文章依然对你有用: 想用Box2D基于iOS开发物理类游戏 比较熟悉C++,并且对于学习Obj-C没有顾虑 想在你的游戏中使用OpenGL 比起使用cocos2d来说,你更愿意使用自己的代码 你从来都没有用过XCode(甚至是Mac) 本篇文章可以作为’绝对的新手’导读,引导大家在XCode工具上使用Box2D创建一个基本的iPhone项目,假设用户对于XCode和Obj-C一无所知。本次将会创建一个正在掉落盒子的场景作为教程的简单例子。 项目仅使用OpenGL ES 1.1,基于XCode 3.2.4以及Box2D 2.1.2. 让项目....
https://blog.csdn.net/Const_Gong/article/details/51469024 声明:本文翻译自Box2D C++ tutorial-Joints-prismatic,仅供学习参考。 平移连接器(Prismatic joints) 平移连接器可能更多的俗称为滑动连接器。连接器上的两个物体相对于彼此来说保持固定的旋转,它们只能够沿着特定的轴线一起移动。平移连接器可以进行限定,保证其只能沿着某个轴在一定范围内进行移动。还可以设定此连接器的马达,连接的物体会以给定的力矩,以相应的速度进行移动。平移连接器经常使用的场景为: 电梯 移动平台 滑动门 活塞 创建平移连接器 平移连接器第一次创建的时候需要先定义b2PrismaticJointDef并进行设置,然后作为参数传入CreateJoint方法,此方法返回b2PrismaticJoint对象。我们已经在连接器-概述中看到了定义连接器所需要设置的一些共同的属性-连接器中的两个物体,以及它们之间是否会发生碰撞。下面先对这些参数进行设置: b2PrismaticJointDef prismaticJoint....
https://blog.csdn.net/Const_Gong/article/details/51469019 声明:本文翻译自Box2D C++ tutorial-Joints-revolute,仅供学习参考。 旋转连接器(Revolute joints) 旋转连接器可以想象成枢纽,锚点,或者转轴。每个物体上都定义一个锚点,物体移动的时候锚点总是重合的,之间的相对转动也是没有限制的(译者注:详细可见Box2D手册第八章旋转连接器部分,此处有一张图,一目了然)。 旋转连接器可以设置限制,让物体的旋转限定在一个固定范围内。也可以设定马达(motor),通过指定扭矩,物体会试着按照给定的速度进行旋转。对于旋转连接器场常见的包括如下: 滚轮或滚筒 链条或悬桥(使用多个旋转连接器) 破布娃娃的关节 转门,弹射器,杠杆 创建旋转连接器 创建旋转连接器首先设置b2RevoluteJointDef属性,然后传递给CreateJoint方法从而获得一个b2RevoluteJoint对象实例。我们在连接器-概述中看到所有连接器的定义都有一些共同的属性-连接两个物体,它们之间是否会发生碰撞。那么先....
https://blog.csdn.net/Const_Gong/article/details/51469017 声明:本文翻译自Box2D C++ tutorial-Joints-overview,仅供学习参考。 连接器 Box2D中有大量的’连接器(joints)’用来把两个物体连接到一起。这些连接器可以模拟物体之间的相互作用,以此形成铰链,活塞,绳索,车轮,滑轮,汽车,链子,等等吧。学习使用连接器可以高效的帮你创建更吸引人和有趣的场景。 让我们快速浏览一些有效的连接器,然后回顾一下这些特性,最后我们将用其中几个常用的特性完成一个例子。这里是Box2D v2.1.2版本中的一些连接器: 旋转连接器(Revolute)-一个允许物体围绕公共点旋转的铰链顶点的连接器 距离连接器(Distance)-在每个物体上都有一个点以保持之间距离的连接器 平移连接器(Prismatic)-两个物体之间的相对旋转是固定的,它们可以沿着一个坐标轴进行平移 线性连接器(Line)-由旋转和平移组合而成的连接器,对于构建汽车悬架模型很有用 焊接连接器(Weld)-可以把物体固定在相同方向上。 滑轮连接....
https://blog.csdn.net/Const_Gong/article/details/51464588 声明:本教程翻译自:Box2D C++ tutorials-Collision filtering,仅供学习参考。 碰撞过滤(Collision filtering) 到目前为止所有场景都是我们自己创建的,场景中的每个定制器(fixture)之间可以互相发生碰撞。这是默认的物理环境,但是可以通过设置’碰撞过滤’(Collision filtering)来控制定制器之间的碰撞状态。在创建定制器的时候,可以设置一些标志位来实现碰撞过滤的功能,具体标志位有: 类别标志位(categoryBits) 遮罩标志位(maskBits) 分组索引(groupIndex) 每一个标志位是一个16位的整数,因此你可以设置16种不同的碰撞类型。其实还是有很大灵活度的,因为可以组合这些标志位,以此可以决定两个定制器之间是否会发生碰撞。带有分组索引标志位的定制器,可以覆盖带有类别/遮罩标志位的定制器集合。 类别和遮罩标志位(category and mask bits) 为定制器设置....
https://blog.csdn.net/Const_Gong/article/details/51464572 声明:本教程翻译自:Box 2D C++ turorials - Source code,仅供学习参考。 教程源代码 这里你可以下载到教程中所提到相关话题的例子源代码。zip文件中包含了标准的并带有一些额外添加测试的Box2D v2.1.2源码树,所以你应该可以使用cmake或者在Setup话题中提到的相关code::blocks方法进行编译。 教程中例子的源代码(更新到’连接器-棱柱(Joints-prismatic)’)(创建时间:2012年1月1日) 源代码中个别地方可能与教程中讲解页面上的源代码不完全一样,但是大部分都是一样的。 因为测试例子做为头文件都包含在一个.cpp文件中,所以之前早期做过的一些例子和后来做的一些宏定义或者变量名有不一样的地方。 二进制文件 如果你只是想看一下教程里例子运行的效果,你可以下载由上面源代码编译好的二进制文件。除非这就像网站上所使用的flash那样容易获取,这部分是我必须做的 :)。 -Winodws binary(更....
https://blog.csdn.net/Const_Gong/article/details/51464486 声明:本教程翻译自:Box2D C++ tutorials - User data,仅供学习参考。 用户数据(User data) 在上一个话题中,我们看到在游戏实体中存储物理对象的的用处。有时候情况相反也许也很有用-在游戏中,一个物理实体指针存储游戏实体。在Box2D中这叫做user data,这是一个能够让你存储有用数据的指针。下面这些类都有这个功能: b2Body b2Fixture b2Joint Box2D不会在意具体内容是什么,而且不会对内容有任何操作。Box2D只是进行存储,然后当你想调用这些数据的时候可以随时获取。上面所提到的类都有下面这两个方法: // in b2Body, b2Fixture, b2Joint void SetUserData(void* data); void* GetUserData(); 在后面的话题中,物体(bodies)和定制器(fixtures)里设置用户数据(user data)会非常有用。那么让我们实现一个简....
https://blog.csdn.net/Const_Gong/article/details/51459237 声明:本教程翻译自:Box 2D C++ turorials - Drawing your own objects,仅供学习参考。 画自己的图像 从之前的话题中可以看出,很显然使用debug draw不能做出视觉上具有吸引力的游戏。通常我们都会使用我们自己的方法在场景中画图像,然后访问Box2d获取物体的物理信息以此知道在哪里画图像。在本次话题中,我们将会专门定义一个类用作渲染游戏实体,然后我们来看看如何保证实体的物理状态。 现在所有实体类将会进行自身渲染,但是之后我们在其它话题中使用。那些话题中的焦点就不再是渲染图形,所以这里我们在一个圆弧上,画了一张带有微笑的笑脸,并且保证其能够正确移动和旋转。 那么在本话题中,让我们创建一个四方形空的区域作为开始。 FooTest() { // a static body b2BodyDef myBodyDef; myBodyDef.type = b2_staticBody; myBodyDef.position.Set(0,....
https://blog.csdn.net/Const_Gong/article/details/51459230 声明:本教程翻译自:Box 2D C++ turorials - Using debug draw,仅供学习参考。 使用debug draw testbed使用一个称为“debug draw”的特性来画你所见到的形状。不过很显然,如果你想让游戏能够更加吸引眼球,还是需要替换那些无聊的多边形的,但是当物理场景中产生问题时,debug draw会变的非常有用。有时候问题发生在游戏场景中的某个部分,比如精灵被显示在错误的位置或错误的旋转方式,产生不正确的物理现象。如果你想准确的检测Box2d世界正在发生什么,那么我建议你保留debug draw的功能。 它的工作方式非常简单。它会告诉你Box2d中所有的形状以及这些形状的位置等。“在x,y位置,半径为r的弧形”,或者“一条从a到b的边”,等其他你所需要的形状。你不必做任何的变换或者担心物体的位置或者哪个定制器属于哪个物体,你可以轻松的画出这些几何形状。这就是说如果你只会画几条线段,也不会把事情搞砸:-)。 testbed中默....
https://blog.csdn.net/Const_Gong/article/details/51459208 声明:本教程翻译自:Box2D C++ tutorials-Custom gravity,仅供学习参考。 为每一个物体指定不同的重力 我们经常会遇到的一个问题是,在其他物体依然遵循重力规则的情况下,如何让指定的物体不受重力影响。其实这实现起来很简单,现在就用我们所了解的力矩试着实现它。我们还是以上一个话题的场景为基础,使用三个独立的物体。 // class member variable to keep track of three bodies b2Body* bodies[3]; FooTest() { //body definition b2BodyDef myBodyDef; myBodyDef.type = b2_dynamicBody; // shape definition b2PolygonShape polygonShape; polygonShape.SetAsBox(1, 1); // a 2x2 rectangle // fixture de....