JAVA-and-J2EE
升级spring4.1.6和支持java8
星期五, 四月 24th, 2015 | JAVA-and-J2EE, linux | 没有评论
系统使用的是spring-core-3.2.1.RELEASE 的版本,在使用jdk8的时候启动tomcat报错,发现无法启动 servlet 启动报错;
但是使用jdk7的版本是好的,网上google了下发现是jdk8引起的,spring3.x的系列不支持,于是有了下列升级问题,记录
1.替换spring3.x的版本到spring4.x的版本,使用到的spring包都替换(废话了)
下载地址:http://repo.spring.io/libs-release-local/org/springframework/spring/
2.系统有用到 quartz的定时任务,也需要替换 老版本是用的是quartz-all-1.6.0 需要升级到 2.x的版本下载了最新的 quartz-2.2.1.jar,quartz-jobs-2.2.1.jar
下载地址:http://quartz-scheduler.org/
3.调整 applicationContext-quartz.xml 使用的触发类
org.springframework.scheduling.quartz.CronTriggerBean 替换成 org.springframework.scheduling.quartz.CronTriggerFactoryBean
到此,升级成功,还要检测系统稳定性部分,测试下应该没有大问题后,即可更新到正式服了
拆解游戏开发中策划配置动态公式问题
星期一, 四月 13th, 2015 | JAVA-and-J2EE, 游戏开发 | 没有评论
游戏开发中,策划总希望自己能配置奖励等公式,从程序这边对于这种太动态的东西是有点不太想去实现添加它;
既然有需求也要实现,从spring里剥离的SpelExpressionParser 可以很好的解决这个问题, 支持常见的 +—X/(加减乘除) 和指数计算^等
依赖 spring-expression-3.2.8.RELEASE.jar, 运行还需要 核心库 spring-core-3.2.8.RELEASE.jar
上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.i5a6.semp.test; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestExpress { public static void main(String[] args) { int num = dynamicCalOutput(2, 2, "#playerLevel^(1/2.7)*100*#num"); System.out.println((Math.pow(2, (1 / 2.7)) * 100)); System.out.println(num); } public static int dynamicCalOutput(int lev, int num, String arithmetic) { if (arithmetic == null || arithmetic.length() <= 0) { return 0; } ExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression(arithmetic); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("playerLevel", lev); context.setVariable("num", num); return expression.getValue(context, Integer.class); } } |
一个类说明Java 信号量 Semaphore 的用法
星期五, 四月 10th, 2015 | JAVA-and-J2EE | 没有评论
在用Semaphore 信号量的时候,感觉对公平调度比较有用,可以控制多线程争夺资源时候,最大可以几个在执行,随手写了代码测试下,如下:
说明: 1. acquire() 获取一个许可,如果没有就等待
2. release() 释放一个许可
3. Semaphore可以控制某个资源可被同时访问的个数,自行初始化的数量,为1当然就顺序执行了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | package com.i5a6.semp.test; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; public class SemaphoreTest { private Semaphore semp; private ExecutorService executorPool; public SemaphoreTest(int threadNum) { semp = new Semaphore(threadNum); executorPool = Executors.newFixedThreadPool(threadNum); } public void doEnd() { this.executorPool.shutdown(); } public void doMsg(int num) { try { semp.acquire(); executorPool.execute(new HelloUExecutor(num)); } catch (InterruptedException e) { e.printStackTrace(); } } class HelloUExecutor implements Runnable { private int num; public HelloUExecutor(int num) { this.num = num; } Random r = new Random(); @Override public void run() { try { System.out.println(num); Thread.sleep(r.nextInt(1000)); } catch (Exception e) { e.printStackTrace(); } finally { semp.release(); } } } public static void main(String[] args) { // 初始化为1 顺序执行 SemaphoreTest st = new SemaphoreTest(5); for (int i = 0; i < 20; i++) { st.doMsg(i); } st.doEnd(); } } |
解决:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
星期二, 四月 7th, 2015 | JAVA-and-J2EE | 没有评论
装了apache-maven-3.2.3-bin 并做好配置,在eclipse中新建maven工程时报错:
Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories.
Could not resolve artifact
Missing org.apache.maven.archetypes:maven-archetype-quickstart:pom:RELEASE
解决办法:在本地库中装载maven-archetype-quickstart
1.从http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/
或者国内的镜像
http://maven.oschina.net/content/groups/public/org/apache/maven/archetypes/maven-archetype-quickstart/
下载最新版maven-archetype-quickstart-1.1.jar
2.cmd窗口执行mvn install:install-file -DgroupId=org.apache.maven.archetypes -DartifactId=maven-archetype-quickstart -Dversion=1.1 -Dpackaging=jar -Dfile=maven-archetype-quickstart-1.1.jar
即可
Mac下启动和停止Mysql及查看端口
星期三, 三月 18th, 2015 | JAVA-and-J2EE, mac | 没有评论
启动Mysql服务
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
停止Mysql服务
sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
重启Mysql服务
sudo /Library/StartupItems/MySQLCOM/MySQLCOM restart
查看是否启动成功可以输入:netstat -an -p tcp 看到3306端口启动成功
//—————————————————————
打开终端,输入:
vim ~/.bash_profile
输入 i
然后粘贴以下内容
# mysql
alias mysql=’/usr/local/mysql/bin/mysql’
alias mysqladmin=’/usr/local/mysql/bin/mysqladmin’
# ls
alias ls=’ls -G’
按ESC键
输入 :x
重新启动终端程序
在终端中 直接输入 mysql 就可以进入mysql
http协议的手游通信安全构想
星期一, 二月 16th, 2015 | JAVA-and-J2EE, linux, 游戏开发 | 没有评论
手游中使用http协议,很容易被劫包,获取对应的api接口地址和参数信息,用于篡改数据等制作脱机外挂等.
提升安全必须要做的事情,记忆下一个初步的构想方案.
1. api+key+时间戳+随机key(按照一定算法得出),MD5后生成摘要
2. 如果抓包拿到封装后的地址,照样可以封包访问,所以需要在服务端做限制,对于同一个请求只有第一次访问是有效的
3. 为了前端的反编译安全性,封装成.so包进行调用(提升破解门槛)
对只提供手机api的手机后台服务应用也适用
CentOS Linux解决Device eth0 does not seem to be present
星期四, 八月 21st, 2014 | JAVA-and-J2EE, linux | 没有评论
直接复制了Oracle VM VirtualBox的镜像文件vdi 可以直接创建新的系统镜像真是方便,不过遇到了
Device eth0 does not seem to be present 的问题,在网上找到遇到同样问题的解决方法,
很顺利的解决,记录之:
ifconfig…没有看到eth0.。然后重启网卡又报下面错误。
故障现象:
service network restart
Shutting down loopback insterface: [ OK ]
Bringing up loopback insterface: [ OK ]
Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization. [FAILED]
CentOS Linux解决Device eth0 does not seem to be present
解决办法:
› Continue reading
mac下常用的快捷键和花键对应
星期二, 八月 19th, 2014 | JAVA-and-J2EE, mac | 没有评论
顺带说下 eclipse的luna版本中智能提示快捷键变成 了 control + space(空格)
各种app或文件下(加粗是我常用的,也是推荐的)
Command + M 当前窗口最小化(中间窗口模式化下,最大化以后无法最小化)
Command + control + F 当前窗口最大化|还原状态
control + 方向键 左右 切换屏幕(等价于三指左右扫)
Command + shift + F 全屏 or 退出全屏(和上面的有区别。自己试验去)
Command + Q 退出当前窗口程序(最好以屏幕左上角提示为准!)
Command + W 退出当前所在网页(finder、chrome、safari、终端。。)
Command + T 新开窗口(finder、chrome、safari、终端。。都好使!)
Command + shift + G Finder时,可打开资源位置(很方便)
Command ~ 在同一程序的不同窗口下切换(比如邮件,终端。。。没找到前,最憋屈的事情。)
ITunes
option + 方向键 左右 换歌
MySQL表类型和存储引擎的修改遭遇版本不一致
星期五, 七月 25th, 2014 | Database, JAVA-and-J2EE | 没有评论
使用的是老版本的mysql客户端Navicate 8 ,mysql 服务端用的是mysql5.6的版本,在修改版本引擎的时候出现版本不对;
mysql error ‘TYPE=MyISAM’
解决办法:
Replace
TYPE=MyISAM
with
ENGINE=MyISAM
The problem was “TYPE=MyISAM” which should be “ENGINE=MyISAM” as per MySQL version updates – a simple search / replace has fix it.
附 修改表引擎sql:alter table db.user engine =MyISAM;
中文URL资源定位遭遇空格
星期五, 七月 18th, 2014 | JAVA-and-J2EE | 没有评论
今天在抓取音乐文件中,遇到中文的资源文件名,对URL地址进行String src = URLEncoder.encode(src, “utf-8”); 可以获取一部分资源;
有一部分总是报错,一时看不出什么问题,本来以为是资源不存在产生,尝试在浏览器直接访问,竟然是可以;对比url一下子发现是文件名中空格搞的鬼,再替换即可;
String src = URLEncoder.encode(src, "utf-8"); //已经转空格为+了 src = src.replace("+", "%20"); |
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (86)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (144)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)