java源码剖析(java的源码要看哪些)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
今天给各位分享java源码剖析的知识,其中也会对java的源码要看哪些进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、帮分析一下 java.sql.SQLException: 源代码 和 报错 情况如下.
- 2、java画直方图,饼图的源码分析
- 3、如何快速读懂项目源码javaWeb
- 4、java 解析 eml的源代码
- 5、有没有详解Java代码的软件?
帮分析一下 java.sql.SQLException: 源代码 和 报错 情况如下.
先检查是不是密码用户名端口都正确
还不行就,别用localhost,改用127.0.0.1
还不行你就安装sqlserver 2000 sp3
还不行,你看看是不是sqlserver禁止使用你的tcp/ip协议
还不行换个端口别用1433,1433好像有bug
再不行,你就祈祷吧

java画直方图,饼图的源码分析
我更改了一点,完善一点。希望你能理解
import javax.swing.*;
import java.awt.*;
public class Histogram extends JPanel {
private int[] count;//方图的数值
private int x = 50;//x坐标为50
public Histogram(){
this.count = new int[]{0,0,0,0,0};//默认count
repaint();
}
public Histogram(int[] count){
this.count = count;//传入count
repaint();
}
public void setHistogram(int[] count) {//设置count
this.count = count;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
if (count == null) return; //如果没有数值就不绘制
super.paintComponent(g);
//设置五个方图显示的颜色不一样
Color[] color = {new Color(245,125,46),new Color(143,184,216),new Color(184,217,136),new Color(255,203,15),new Color(168,169,171)};
int width = getWidth();//方图的宽度
int height = getHeight();//方图的高度
int interval = (width - 40) / count.length;//方图之间的间隔
int individualWidth = (int)(((width - 40) /5) * 0.60);//单个方图的宽度
int maxCount = 0;//方图的最大值,即高度
for (int i = 0; i count.length; i++) {//获得最大值
if (maxCount count[i])
maxCount = count[i];
}
maxCount+= 5 - maxCount%5;
//绘制背景
g.setColor(new Color(210,212,215));
g.fillRect(30, 30, width - 40, height - 75);
//绘制左边线、底边线和数
g.setColor(Color.BLACK);
g.drawLine(30, height - 45, width - 10, height - 45);//这条底边线重复,下面的for重画了
g.drawLine(30,30,30, height - 45);
g.drawString("数",5,15);//左上角写“数”字
//绘制六条行线和左边的数值标识
for(int i = 0, num = 45;i = maxCount;i+=maxCount/5){
g.drawString(i + "", 10,height-num );
g.drawLine(30, height - num, width - 10, height - num);
num +=((height-75)/5.0+0.3);
}
for (int i = 0; i count.length; i++) {
int barHeight =
(int)((count[i]/(maxCount/5.0))*((height-75)/5.0)-0.3);//获得在每个方图上方写数值的高度
// g.setColor(new Color(73,168,213));
//绘制方图
g.setColor(color[i]);
g.fillRect(x, height - 45 - barHeight, individualWidth,barHeight);
//在方图上方标识该数值
g.setColor(Color.black);
g.drawString(count[i]+"", x + individualWidth/2,height - 50 - barHeight);
//绘制底边的数值标识
g.setColor(Color.BLACK);
if(i==0){
g.drawString("60", x, height - 30);
}
else if(i==4){
g.drawString("90", x, height - 30);
}
else{
g.drawString((50+10*i) + "-" + (59+10*i) + "", x, height - 30);
}
x += interval;//保证了数值左边一定与方图左边线靠齐
}
}
}
如何快速读懂项目源码javaWeb
一:学会如何读一个JavaWeb项目源代码 步骤:表结构-web.xml-mvc-db-spring
ioc-log- 代码
1、先了解项目数据库的表结构,这个方面是最容易忘记 的,有时候我们只顾着看每一个方法是怎么进行的,却没
有去了解数据库之间的主外键关联。其实如果先了解数据 库表结构,再去看一个方法的实现会更加容易。
2、然后需要过一遍web.xml,知道项目中用到了什么拦
截器,监听器,过滤器,拥有哪些配置文件。如果是拦截 器,一般负责过滤请求,进行AOP 等;如果是监 可能是定时任务,初始化任务;配置文件有如使用了 spring
后的读取mvc 相关,db 相关,service 相关,aop 相关的文件。
3、查看拦截器,监听器代码,知道拦截了什么请求,这
个类完成了怎样的工作。有的人就是因为缺少了这一步, 自己写了一个action,配置文件也没有写错,但是却怎么
调试也无法进入这个action,直到别人告诉他,请求被拦
4、接下来,看配置文件,首先一定是mvc相关的,如 springmvc
中,要请求哪些请求是静态资源,使用了哪些 view 策略,controller 注解放在哪个包下等。 然后是db 相关配置文件,看使用了什么数据库,使用了
什么orm框架,是否开启了二级缓存,使用哪种产品作 为二级缓存,事务管理的处理,需要扫描的实体类放在什 么位置。最后是spring 核心的ioc
功能相关的配置文件, 知道接口与具体类的注入大致是怎样的。当然还有一些如 apectj 置文件,也是在这个步骤中完成
5、log
相关文件,日志的各个级别是如何处理的,在哪些 地方使用了log 记录日志
6、从上面几点后知道了整个开源项目的整体框架,阅读 每个方法就不再那么难了。
7、当然如果有项目配套的开发文档也是要阅读的。
java 解析 eml的源代码
// 从EML文件得到MimeMessage对象
MimeMessage message = new MimeMessage(session, new FileInputStream(emlFile));
public static String getMailSubject(Message message) throws Exception {
return MimeUtility.decodeText(message.getSubject());
}
public static String getMailSender(Message message) throws Exception {
String emailSender = null;
Address[] addresses = message.getFrom();
if (addresses == null || addresses.length 1) {
throw new IllegalArgumentException("该邮件没有发件人");
}
// 获得发件人
InternetAddress address = (InternetAddress) addresses[0];
String senderName = address.getPersonal();
if (senderName != null) {
senderName = MimeUtility.decodeText(senderName);
emailSender = senderName + "" + address.getAddress() + "";
} else {
senderName = address.getAddress();
}
return emailSender;
}
public static String getMailRecipients(Message message, Message.RecipientType recipientType) throws Exception {
StringBuilder builder = new StringBuilder();
Address[] addresses = null;
if (recipientType == null) {
addresses = message.getAllRecipients();
} else {
addresses = message.getRecipients(recipientType);
}
if (addresses == null || addresses.length 1) {
throw new IllegalArgumentException("该邮件没有收件人");
}
for (Address address : addresses) {
InternetAddress iAddress = (InternetAddress) address;
builder.append(iAddress.toUnicodeString()).append(", ");
}
return builder.deleteCharAt(builder.length() - 1).toString();
}
public static String getMailSendDate(Message message, String pattern) throws Exception {
String sendDateString = null;
if (pattern == null || "".equals(pattern.trim())) {
pattern = "yyyy年MM月dd日 E HH:mm";
}
Date sendDate = message.getSentDate();
sendDateString = new SimpleDateFormat(pattern).format(sendDate);
return sendDateString;
}
public static boolean containsAttachment(Part part) throws Exception {
boolean flag = false;
if (part != null) {
if (part.isMimeType("multipart/*")) {
MimeMultipart mp = (MimeMultipart) part.getContent();
for (int i = 0; i mp.getCount(); i++) {
BodyPart bodyPart = mp.getBodyPart(i);
String disposition = bodyPart.getDisposition();
if (disposition != null (Part.ATTACHMENT.equalsIgnoreCase(disposition)
|| Part.INLINE.equalsIgnoreCase(disposition))) {
flag = true;
} else if (bodyPart.isMimeType("multipart/*")) {
flag = containsAttachment(bodyPart);
} else {
String contentType = bodyPart.getContentType();
if (contentType.indexOf("application") != -1) {
flag = true;
}
if (contentType.indexOf("name") != -1) {
flag = true;
}
}
if (flag)
break;
}
} else if (part.isMimeType("message/rfc822")) {
flag = containsAttachment((Part) part.getContent());
}
}
return flag;
}
public static boolean isSeen(Message message) throws Exception {
if (message == null) {
throw new MessagingException("Message is empty");
}
return message.getFlags().contains(Flags.Flag.SEEN);
}
public static boolean isReplaySign(Message message) throws Exception {
if (message == null) {
throw new MessagingException("Message is empty");
}
boolean replaySign = false;
String[] headers = message.getHeader("Disposition-Notification-To");
if (headers != null headers.length 0) {
replaySign = true;
}
return replaySign;
}
public static String getMailPriority(Message message) throws Exception {
if (message == null) {
throw new MessagingException("Message is empty");
}
String priority = "普通";
String[] headers = message.getHeader("X-Priority");
if (headers != null headers.length 0) {
String mailPriority = headers[0];
if (mailPriority.indexOf("1") != -1 || mailPriority.indexOf("High") != -1) {
priority = "紧急";
} else if (mailPriority.indexOf("5") != -1 || mailPriority.indexOf("Low") != -1) {
priority = "低";
} else {
priority = "普通"; // 3或者Normal;
}
}
return priority;
}
public static void getMailTextContent(Part part, StringBuilder content) throws Exception {
if (part == null) {
throw new MessagingException("Message content is empty");
}
boolean containsTextInAttachment = part.getContentType().indexOf("name") 0;
if (part.isMimeType("text/*") containsTextInAttachment) {
content.append(part.getContent().toString());
} else if (part.isMimeType("message/rfc822")) {
getMailTextContent((Part) part.getContent(), content);
} else if (part.isMimeType("multipart/*")) {
Multipart mp = (Multipart) part.getContent();
for (int i = 0; i mp.getCount(); i++) {
BodyPart bodyPart = mp.getBodyPart(i);
getMailTextContent(bodyPart, content);
}
} else if (part.isMimeType("image/*")) {
// TODO part.getInputStream()获得输入流然后输出到指定的目录
} else {
// TODO 其它类型的contentType, 未做处理, 直接输出
content.append(part.getContent().toString());
}
}
public static void saveAttachment(Part part, String destDir) throws Exception {
if (part == null) {
throw new MessagingException("part is empty");
}
// 复杂的邮件包含多个邮件体
if (part.isMimeType("multipart/*")) {
Multipart mp = (Multipart) part.getContent();
// 遍历每一个邮件体
for (int i = 0; i mp.getCount(); i++) {
BodyPart bodyPart = mp.getBodyPart(i);
// bodyPart也可能有多个邮件体组成
String disposition = bodyPart.getDisposition();
if (disposition == null (Part.ATTACHMENT.equalsIgnoreCase(disposition)
|| Part.INLINE.equalsIgnoreCase(disposition))) {
InputStream in = bodyPart.getInputStream();
saveFile(in, destDir, decodeText(bodyPart.getFileName()));
} else if (bodyPart.isMimeType("multipart/*")) {
saveAttachment(bodyPart, destDir);
} else {
String contentType = bodyPart.getContentType();
if (contentType.indexOf("name") != -1 || contentType.indexOf("application") != -1) {
saveFile(bodyPart.getInputStream(), destDir, decodeText(bodyPart.getFileName()));
}
}
}
} else if (part.isMimeType("message/rfc822")) {
saveAttachment((Part) part.getContent(), destDir);
}
}
public static void saveFile(InputStream in, String destDir, String fileName) throws Exception {
FileOutputStream out = new FileOutputStream(new File(destDir + fileName));
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
out.close();
in.close();
}
public static String decodeText(String encodedText) throws Exception {
if (encodedText == null || "".equals(encodedText.trim())) {
return "";
} else {
return MimeUtility.decodeText(encodedText);
}
}
有没有详解Java代码的软件?
有一些工具可以帮助您详解 Java 代码,包括以下几种类型:
集成开发环境(IDE):如 Eclipse、IntelliJ IDEA 和 NetBeans 等。IDE 可以对 Java 代码进行分析,提供代码提示、自动补全、重构等功能,帮助开发者快速编写、修改和理解 Java 代码。
静态分析工具:如 Checkstyle、PMD 和 FindBugs 等。这些工具可以对 Java 代码进行静态分析,检测潜在的代码问题,例如代码风格不符合规范、空指针异常等。
反编译工具:如 JD-GUI、FernFlower 和 Procyon 等。这些工具可以将 Java 字节码反编译为 Java 源代码,帮助开发者理解和分析 Java 代码。
UML 工具:如 Visual Paradigm、StarUML 和 PlantUML 等。这些工具可以通过 UML 图形化表示 Java 代码,帮助开发者更好地理解 Java 代码的结构和关系。
代码注释工具:如 Javadoc、Doxygen 和 NaturalDocs 等。这些工具可以自动生成 Java 代码的文档注释,帮助开发者更好地理解和使用 Java 代码。
以上是一些常见的 Java 代码详解工具,您可以根据自己的需求选择合适的工具使用。
java源码剖析的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java的源码要看哪些、java源码剖析的信息别忘了在本站进行查找喔。
