![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java后台--稳健
勤奋的菜才是我
每天一小点进步,也要与你分享
展开
-
java.security.InvalidKeyException: Public Key cannot be used to decrypt.
昨天,ma报错——java.security.InvalidKeyException: Public Key cannot be used to decrypt.百度了一下,很可能是jdk不兼容的问题,本地环境也一直没有动过,所以很可能就是。查看构建配置: 修改完成,然后启动就成功了。其实很多时候没有代码修改的时候,都是定位网络和本地环境问题!!!!!! ...原创 2019-01-24 14:17:04 · 1596 阅读 · 0 评论 -
java项目之——坦克大战09
问题:由于上一个版本的方向控制出现一个问题,比如向右走,然后向下走,不过此时坦克将不会向下走,而是向右下走,而且是一去不回头。 功能:实习坦克八个方向运动(2) 内容:创建键盘抬起监听,每次抬起坦克将会使坦克脱离按键控制。1.在tankClient中 public void keyReleased(KeyEvent e) { myTank.原创 2016-08-13 20:54:47 · 531 阅读 · 0 评论 -
java常见笔面试题和答案
int和Integer有什么区别? 答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装类。String和StringBuffer的区别? 答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新的对象,StringBuffer是可变的字符序列,所以如果要经常改变某个字符串的话建议使用转载 2016-09-04 16:19:27 · 1809 阅读 · 2 评论 -
阿狸面经(牛客网)
1. 面:你用过哪些集合类?我: arrayList linkedlist hashmap vector hashtable hashset treemap,不过前面三个比较常用,后面的不常用 2. 面 : 那你说说 arraylist 和 linkedlist的区别? 我:底层: arraylist 底层是数组, linkedlist是双链转载 2016-09-04 16:05:32 · 592 阅读 · 0 评论 -
java项目之——坦克大战08
功能:然坦克向八个方向行走。(以前只有四个方向)。内容:添加代表方向的量(枚举) 添加记录按键状态的布尔量 根据按键状态确定坦克方向 根据方向进行下一步的移动(move方法)以下修改的全为tank类中的代码:1.为了方便改变移动速度:常量public static final int XSPEED原创 2016-08-12 19:51:47 · 568 阅读 · 0 评论 -
java代码编码出现问题
JAVA的中文字符乱码问题一直很让人头疼。特别是在WEB应用中。网上的分析文章和解决方案都很多,但总是针对某些特定情况的。很多次遇到乱码问题后, 经过极为辛苦的调试和搜索资料后终于解决,满以为自己已经掌握了对付这些字符乱码怪兽的诀窍。可当过段时间,换了个应用或换了个环境,又会碰到那讨厌的火 星文,并再次无所适从。于是下决心好好整理一下中文字符编码问题,以方便自己记忆,也为其他程序员兄弟们提供一份参转载 2016-09-04 10:57:28 · 1534 阅读 · 0 评论 -
java项目之——坦克大战07
功能:将坦克单独包装成类内容:1.建立坦克类十分重要,体现了面向对象的思想。(考虑问题不再是这一步干嘛,下一步干嘛,以对象为方向) 2.添加成员变量 3.添加相应的类(修改主类TankClient)添加成员变量,x,y;在主类中,创建坦克对象。 public Tank(int x,int y){ this.x=x;原创 2016-08-12 18:22:54 · 507 阅读 · 1 评论 -
java项目之——坦克大战06
功能:让坦克运动由我们来控制内容:添加键盘监听类keyMonitor。 TankClient添加键盘监听器。 针对不同的键改变坦克的位置,与重画线程结合产生不同方向。一、键盘监听类 private class KeyMonitor extends KeyAdapter{ public void keyPressed(Key原创 2016-08-12 17:43:53 · 436 阅读 · 0 评论 -
java项目之——坦克大战05
功能:代码重构(设置常量,比较简单)内容:需要多处改变的量定义为常量。public static final int GAME_WIDTH =800;public static final int GAME_HEIGHT=800;然后想改成多少,就在这个位置改变 GAME_WIDTH 和GAME_HEIGHT的值public static final int GAME_W原创 2016-08-12 16:36:59 · 357 阅读 · 0 评论 -
java项目之——坦克大战04.1
功能:使用双缓冲消除闪烁现象(消除闪烁是应该的,不过处理有点不太好理解)方法:将是所有的图像都画在虚拟图片上面然后显示出来。关键代码:Image offScreenImage = null;public void update(Graphics g) { if(offScreenImage == null){ offScreenImage = this.createI原创 2016-08-12 16:25:42 · 460 阅读 · 0 评论 -
java项目之——坦克大战 04
功能:让坦克动起来内容:改变位置,坦克就会动。a.设置成员变量,x , y; b.每一段时间重画一次:y+=5; c.重画线程类。(优点:线程重画坦克,比较均匀。)原创 2016-08-12 16:18:13 · 330 阅读 · 0 评论 -
大话数据结构之——时间复杂度O
一、时间复杂度同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。原创 2016-09-03 08:17:28 · 611 阅读 · 1 评论 -
java项目之——坦克大战13
上一版本设置了炮筒,使得坦克静止时也可以打出炮弹。但是还有 一个小问题,每次只能打出一发子弹,子弹会被覆盖。本版本:使坦克可以打出多发子弹。原创 2016-08-22 22:20:15 · 431 阅读 · 0 评论 -
java项目之——坦克大战03
功能:画出代表坦克的实心圆内容:print()方法 调用fillOval画坦克public class TankClient extends Frame {public void paint(Graphics g) { Color c = g.getColor();g.setColor(Color.RED);g.fillOval(30, 30, 30, 40);g.setColor(c);}p原创 2016-08-08 20:10:39 · 342 阅读 · 0 评论 -
java项目之——坦克大战02
功能:添加关闭窗口的处理事件。 不允许改变窗口的大小。知识点:引入上一个版本的内容,重写方法,匿名类的使用public class TankClient extends Frame { public void lauchFrame(){ this.setSize(400,300); this.setTitle("TankWar"); this.原创 2016-08-08 20:05:55 · 398 阅读 · 0 评论 -
java项目之——坦克大战01
功能:产生一个窗口。知识点:主类继承Frame类import java.awt.Frame;public class TankClient extends Frame { public void lauchFrame(){ this.setSize(400,300); this.setTitle("TankWar"); this.setLocation(800, 6原创 2016-08-08 20:01:18 · 650 阅读 · 0 评论 -
java项目之——坦克大战10
实现了坦克的移动,现在要实现坦克可以打出炮弹:功能:添加子弹类,添加方法和参数。1.位置和方向属性 int x,y; Tank.Direction dir;2.构造方法public Missile(int x, int y,Tank.Direction dir) { this.x = x; this.y = y; this.dir=dir; }原创 2016-08-13 21:34:51 · 654 阅读 · 1 评论 -
java项目之——坦克大战11
功能:1.根据主战坦克的方向和位置,打出子弹,Ctrl键的按键处理 2.根据“坦克打出一发子弹”这句话,来确定Tank中的方法fire,其返回值为Missle 3.根据Tank方向和位置设定子弹的方向和位置并new出来,然后返回(fire方法的实现)1.在按键监听里面加ctrl按键处理,代码如下 public Ta原创 2016-08-13 23:05:48 · 657 阅读 · 0 评论 -
java项目之——坦克大战12
解决坦克停下来也可以打出炮弹:画出炮筒,在fire中把子弹方向给炮筒1.创建坦克炮筒常量并初始化:private Direction ptDir = Direction.D;2.在draw方法里面画出炮筒public void draw(Graphics g) { Color c = g.getColor(); g.setColor(Color.RED);原创 2016-08-14 11:45:20 · 422 阅读 · 0 评论 -
java文件上传后台
上一篇写了文件上传,是springMVC,因为返回值问题,没有引入转json依赖的jar包,虽然文件上传成功但是前台返回报406错误。导入依赖的两个jar包即可。今天来用跟简单的方式实现文件上传:首先lib目录下导入文件上传两个依赖的jar包,如下图: 然后,前台index.jsp:<%@ page language="java" pageEncoding="UTF-8"%&...原创 2018-03-17 16:58:44 · 6933 阅读 · 0 评论 -
jdk--could not open jvm.cfg
上次为了用jdk1.6编译打java补丁,结果单独安装了一个1.6,其实不需要,因为向下兼容。然后我删除jdk1.6后eclipse打不开了,报could not open jvm.cfg。 出现error:could not open '...jvm.cfg'大多是安装jdk的时候在注册表里注册过,在网上看到很多关于error:could not open '...jvm.cfg'的问原创 2018-01-30 14:13:11 · 474 阅读 · 0 评论 -
文件上传——java后台代码
最近,要测试文件上传API,文件上传的东西还挺多的。要测试,首先得有后台吧,所以,简单搭了个springMVC,引入必要的jar包,然后写了个文件上传接口。 @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public ResponseResult upload原创 2018-02-02 18:18:27 · 2449 阅读 · 0 评论 -
springMVC之——@ResponseBody、@RequestBody
SpringMVC层跟JSON,使用@ResponseBody、@RequestBody,返回json数据。1、@ResponseBody (返回json数据)该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。如果需要返回页面,去掉即可。2、@Request原创 2018-01-10 11:26:58 · 186 阅读 · 0 评论 -
jdk 1.8环境下编译打包1.6版本的jar包
ma是1.6的jdk环境,我的开发工具是1.8的jdk,打了个补丁,要改为jdk1.6,然后重新编译。一直以为还要再装一个1.6jdk(一个笔记本上面可以装两个版本jdk的),其实jdk是向下版本兼容的,只要在编译的时候改为jdk1.6的就行。 然后呢,稍微总结一下jdk向下兼容, 注意:高版本编译的java代码,在低版本无法运行。反之,则可以。原创 2018-01-24 21:36:26 · 10603 阅读 · 0 评论 -
ArrayList、Linkedlist和Vector
一、个人感觉,三个中最常用的是ArrayListVector和ArrayList(线程安全)1、vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。2、记住并发修改异常 java.util.ConcurrentModificationException ,优先考虑ArrayList,除非你在使用多线程所需。Aarraylist和Link原创 2016-10-04 16:58:11 · 378 阅读 · 0 评论 -
ECharts——第一个图标
一点基础都没有,做一个简单的图标也是不容易,整了一下午1.新建一个maven项目2.修改web.xml文件,name3.官网下载echarts.min.js,导入 注意index.jsp里面 script是echarts.min.js放在哪个目录。4.在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。 5.然后就原创 2017-03-30 17:12:30 · 1277 阅读 · 0 评论 -
debug的使用--必备
eclipse是软件开发人员必备的IDE之一. 由于语言障碍或者是经验不足,许多刚刚新手并不清楚如何高效使用eclipse. 甚至使用eclipse很久的朋友也对eclipse的功能不甚了解.为此我总结了eclipse常用的技巧,希望通过一系列的总结让eclipse真正成为开发朋友们的利器!程序错误通常有2种,一种是运行时错误,这种错误ide会抛出异常,我们可以根据异常寻找转载 2017-02-23 20:52:47 · 426 阅读 · 0 评论 -
设置环境变量,解压到相应位置
String path = System.getenv("CLASS_HOME"); if(path==null || "".equals(path)){ System.out.println("设置环境变量CLASS_HOME,设置安装路径"); ZipUtil.upzipFile("./ma3.0.zip",path); return ;原创 2017-02-22 17:02:41 · 1259 阅读 · 0 评论 -
Tomcat的简单认识
tomcat 中的war 部署一、本地构建生成war包 在本地项目中的terminal下,使用命令 “mvn clean install”或 先执行“mvn clean”再执行“mvn install”,将本地项目中的target目录清除,重新生成新的目录及war包, 比如此处我生成的war包的名称是 “demos.war”。二、本地tomc原创 2017-02-21 10:20:58 · 414 阅读 · 0 评论 -
组合、继承与接口
一、组合:has-a(鸟有翅膀)需要显示创建被组合对象 继承:is-a(麻雀继承鸟类)隐式1、组合可以让我们有选择的复用某些功能,而不像继承,不管怎么样复用所有非私有的功能,当我们只需要其中的某一部分的时候,这个时候就应该考虑组合而不是继承,2、private 类型绝对只能在本类中直接使用 至于一些间接使用的除外(用的比较少嘛)(错误说法:组合产生一个实例就可以应原创 2016-10-31 11:13:20 · 625 阅读 · 0 评论 -
java程序运行
程序先在硬盘上 ,然后加载到内存区,从main方法开始执行,执行过程中的内存管理:new出来的放到堆里面(对象)、局部变量和地址放到栈里面、静态变量和字符串常量放在数据段,代码存放在代码段。 对于代码执行顺序:静态代码块 》 父类 》 子类 》 构造方法 堆和栈的区别:1.堆中内存需要手动释放,栈不需要释放原创 2016-11-09 22:46:56 · 293 阅读 · 0 评论 -
String和StringBuffer的区别
大家都知道String和StringBuffer的主要区别是:string不可变类,stringbuffer是可变类(都是对字符串操作)关键:String:value 是一个被final修饰的数组对象StringBuffer:value [] char 没有被final修饰String 对象不可变 源码分析(String 的底层是使用字符数组来实现的)jdk原创 2016-10-19 00:42:32 · 5511 阅读 · 2 评论 -
坦克项目总结
跑了一个月的招聘会,老是让技术面试官觉得我的项目经验太少,也只有顺丰的面试官抓着我的项目问了很多很多,仔细想想大公司都是注重基础的,只有那些小公司才会挑你的项目。其实,现在最重要的是可以把自己的这个项目说好,等有空了再去做一个项目。所以,我借十一这次机会把这个项目重新总结一下。 1.项目介绍:(功能和技术) 简历:这是一款平面射击游戏,通过原创 2016-10-04 13:22:42 · 667 阅读 · 0 评论 -
我的校招——同花顺
1.面向对象的特征?答:三大特性:继承、封装、多态。(抽象) 继承是通过关键字extends实现的,子类继承父类的非私有方法(实现代码重用)。封装是将客观事务抽象成类,每个类对自身数据和方法实现保护(隐藏数据)。多态是子类继承父类非私有方法,在编译和运行时产生不同的结果(一种接口,多种方法)。2.单例模式会不会?答:会一点,有两种经典的模式,懒汉(在第一原创 2016-10-09 23:36:56 · 2933 阅读 · 2 评论 -
Dalvik虚拟机
一、什么是Dalvik?Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用,和在低速CPU上表现出的高性能,确实令人刮目相看。 依赖于底层Posix兼容的操作系统,它可以简单的完成进程隔离和线程管理。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例, 其代码在转载 2016-08-08 19:53:01 · 847 阅读 · 0 评论 -
java项目之——坦克大战26
本版本做最后的修正:敌人死光重新加入,主战坦克死掉F2重新开始。1.主类中: 画方法里面判断,如果无敌方坦克,就添加。 if(tanks.size()<=0){ for(int i=0;i<10;i++){ tanks.add(new Tank(50+40*(i+1),50,false,Tank.Direction.D,this)); } }2.坦克类中:原创 2016-08-30 10:25:13 · 772 阅读 · 0 评论 -
进程与线程理解
一.概念 进程:执行中的程序,有自己独立的一块类存空间,一组系统资源。 线程:同类多线程共用一块类存空间,一组系统资源。二.a.通过继承实现多线程(Thread) class 类名称 extends Thread { 属性 方法 修饰符 run(){原创 2016-03-15 08:33:49 · 245 阅读 · 0 评论 -
全面解释java中StringBuilder、StringBuffer、String类之间的关系
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似1. String 类 String的值是不可变的,这就导致每次对S转载 2016-02-27 22:29:18 · 577 阅读 · 1 评论 -
java面试概念题01
一、1.Java支持的数据类型有哪些?什么是自动拆装箱?答:数据类型:byte, short,int, long, char, boolean, float, double;自动拆箱:自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。 2.接原创 2016-02-27 16:28:28 · 647 阅读 · 0 评论 -
多态小结
一 什么是多态:父类引用了子类的重写方法。二 产生多态的条件:1.子类继承父类。2.子类重写父类。3.父类引用指向子类对象。(A aa=new B() )三 为什么产生多态:加载时 引用类型变量aa类型是父类A 运行时 引用类型变量aa类型是子类B附:有main方法的是启动类,不要继承启原创 2016-03-17 23:22:13 · 259 阅读 · 0 评论