java开发过程中遇到过哪些困难
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java开发过程中遇到过哪些困难相关的知识,希望对你有一定的参考价值。
java开发过程中会遇到JDK的安装和环境配置的问题和做课程设计的过程中遇到代码的调试等问题,java开发推荐千锋教育,千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。课程包含html5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训等培训。Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。
想要了解更多有关Java培训的相关信息,推荐咨询千锋教育。采用全程面授高品质、高体验培养模式,学科大纲紧跟企业需求,拥有国内一体化教学管理及学员服务,在职业教育发展道路上不断探索前行,公司总部位于北京,目前已在20个城市成立分公司,现有教研讲师团队300余人。 参考技术A
工作中,以C/C++开发为主,难免与其服务和Web进行交换,Java开发必不可少,又不想动用Eclipse大家伙,只能动手编写脚本进行Java代码的编译和运行。
1、JDK的安装和环境配置的问题
2、做课程设计的过程中遇到代码的调试等
3、数据库的连接等
4、数据库的设计
5、开发工具的使用等
《初识Java微信公众号开发》 学习中遇到的困难
前一段时间无聊的时候,在慕课网上自学了一点点微信公众号开发(受学姐威胁)。
慕课网教程的地址:http://www.imooc.com/learn/368
毕竟是免费的课程,不可能讲的那么详细。所以我吧我遇到的问题跟大家分享一下。
这是我照着课程敲的代码(IDE是Eclipse): https://github.com/Zuosy/WeiXin 发到github上面了。
为了这个,我还专门到廖大的网站上学了一遍Git。
廖大的Git教程传送们:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
-
那个映射工具不见尿
不见了,我就用了另一个映射工具,名字叫natapp。米纳桑可以自行百度一下,就有上面还有图文教程。
因为是玩玩,开个免费的就行了。这个工具不会超时,不错的。
发个图片秀一下:
-
基本配置token验证失败
主要的问题是老毕没有分享sha1加密算法。百度的可能百度到假的“傻一”加密算法。
“傻一”加密算法的传送门:http://www.cnblogs.com/blackdeng/p/6060781.html
防止代码丢失,我贴出来
傻一加密算法工具类:
1 package org.fc.Util; 2 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 import java.util.Arrays; 6 7 import com.sun.mail.handlers.message_rfc822; 8 9 public class SignUtil { 10 11 private static String token="XXXXXX"; 12 13 /** 14 * 传入三个参数以及微信的token(静态自己设定)验证, 15 * @param signature 签名用来核实最后的结果是否一致 16 * @param timestamp 时间标记 17 * @param nonce 随机数字标记 18 * @return 一个布尔值确定最后加密得到的是否与signature一致 19 */ 20 public static boolean checkSignature(String signature, 21 String timestamp,String nonce){ 22 //将传入参数变成一个String数组然后进行字典排序 23 String[] arr=new String[]{token,timestamp,nonce}; 24 Arrays.sort(arr); 25 //创建一个对象储存排序后三个String的结合体 26 StringBuilder content=new StringBuilder(); 27 for(int i=0;i<arr.length;i++){ 28 content.append(arr[i]); 29 } 30 31 32 //启动sha1加密法的工具 33 MessageDigest md=null; 34 String tmpStr=null; 35 try { 36 md=MessageDigest.getInstance("SHA-1"); 37 //md.digest()方法必须作用于字节数组 38 byte[] digest=md.digest(content.toString().getBytes()); 39 //将字节数组弄成字符串 40 tmpStr=byteToStr(digest); 41 } catch (NoSuchAlgorithmException e) { 42 // TODO Auto-generated catch block 43 e.printStackTrace(); 44 } 45 content=null; 46 47 return tmpStr!=null?tmpStr.equals(signature.toUpperCase()):false; 48 49 } 50 51 52 /** 53 * 将字节加工然后转化成字符串 54 * @param digest 55 * @return 56 */ 57 private static String byteToStr(byte[] digest){ 58 String strDigest=""; 59 for(int i=0;i<digest.length;i++){ 60 //将取得字符的二进制码转化为16进制码的的码数字符串 61 strDigest+=byteToHexStr(digest[i]); 62 } 63 return strDigest; 64 } 65 66 /** 67 * 把每个字节加工成一个16位的字符串 68 * @param b 69 * @return 70 */ 71 public static String byteToHexStr(byte b){ 72 //转位数参照表 73 char[] Digit= {\'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'A\', \'B\', \'C\', \'D\', \'E\', \'F\'}; 74 75 76 //位操作把2进制转化为16进制 77 char[] tempArr=new char[2]; 78 tempArr[0]=Digit[(b>>>4)&0X0F];//XXXX&1111那么得到的还是XXXX 79 tempArr[1]=Digit[b&0X0F];//XXXX&1111那么得到的还是XXXX 80 81 //得到进制码的字符串 82 String s=new String(tempArr); 83 return s; 84 } 85 }
这个是好用的,可以直接替换老毕的CheckUtil 就行了。
-
XStream报错
缺少xmlpull的jar包
传送门: http://blog.csdn.net/ljg888/article/details/7711852
其实那些jar包,到网上都能下载,我发的gitbug项目里面应该都已经有了。
-
中文乱码问题
这个是我粗心导致的。
1 response.setCharacterEncoding("UTF-8");
这行代码一定要写在doPost方法的第一行。
-
注意大小写
注意textMessage类里面的属性(变量名) 一定要注意大小写。否则封装成xml的时候你就会打出GG。
-
MessageUtil工具类
在开发的时候,我发现这个工具类是可以循环利用的。我就贴出来吧,以后会用到的。
1 package com.misaka.util; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Date; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 import javax.servlet.http.HttpServletRequest; 10 import org.dom4j.Document; 11 import org.dom4j.DocumentException; 12 import org.dom4j.Element; 13 import org.dom4j.io.SAXReader; 14 15 import com.misaka.po.TextMessage; 16 import com.thoughtworks.xstream.XStream; 17 18 public class MessageUtil { 19 20 // 注意大小写 21 public static final String MESSAGE_TEXT = "text"; 22 public static final String MESSAGE_IMAGE = "image"; 23 public static final String MESSAGE_VOICE = "voice"; 24 public static final String MESSAGE_VIDEO = "video"; 25 public static final String MESSAGE_SHORTVIDEO = "shortvideo"; 26 public static final String MESSAGE_LINK = "link"; 27 public static final String MESSAGE_LOCATION = "location"; 28 // 事件 29 public static final String MESSAGE_EVENT = "event"; 30 public static final String EVENT_SUBSCRIBE = "subscribe"; 31 public static final String EVENT_UNSUBSCRIBE = "unsubscribe"; 32 public static final String EVENT_SCAN = "SCAN";// 扫码 33 public static final String EVENT_LOCATION = "LOCATION";// 上报地理位置 34 public static final String EVENT_CLICK = "CLICK"; 35 public static final String EVENT_VIEW = "VIEW"; 36 37 /* 38 * 需要有一个xml --> map 的方法 还要有一个map --> xml 的方法 39 */ 40 41 /** 42 * xml --> map 43 * @param request 44 * @return 45 * @throws IOException 46 * @throws DocumentException 47 */ 48 public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException { 49 Map<String, String> map = new HashMap<>(); 50 SAXReader reader = new SAXReader(); 51 InputStream input = request.getInputStream(); 52 53 Document doc = reader.read(input); 54 Element root = doc.getRootElement(); 55 List<Element> list = root.elements(); 56 57 for (Element e : list) { 58 map.put(e.getName(), e.getText()); 59 } 60 input.close(); 61 return map; 62 } 63 64 /** 65 * textMessage --> xml 66 * @param textMessage 67 * @return 68 */ 69 public static String textMessageToXml(TextMessage textMessage) { 70 XStream xstream = new XStream(); 71 xstream.alias("xml", textMessage.getClass()); 72 return xstream.toXML(textMessage); 73 } 74 75 public static String initText(String toUserName, String fromUserName, String content) { 76 TextMessage text = new TextMessage(); 77 text.setFromUserName(toUserName); 78 text.setToUserName(fromUserName); 79 text.setMsgType(MESSAGE_TEXT); 80 text.setCreateTime(new Date().getTime()); 81 text.setContent(content); 82 return textMessageToXml(text); 83 } 84 85 }
这是我在慕课网上发的手记:http://www.imooc.com/article/20238
不会用慕课网上的手记,别举报我抄袭啊。
以上是关于java开发过程中遇到过哪些困难的主要内容,如果未能解决你的问题,请参考以下文章