有个想不通的问题,请大神帮我一下~java返回值的问题 50C

http://tieba.baidu.com/p/4889944890
整体代码如下:
父类是这个样子的
package login;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.security.AccessController;
import java.security.PrivilegedAction;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRootPane;
import javax.swing.JTextField;

public class loginFrame
{ Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int)screensize.getWidth();
int height = (int)screensize.getHeight();
JFrame loginin1 = new JFrame(); //窗体框架
JPanel login1 = new JPanel();
//窗体主面板
public JTextField user = new JTextField();
public JPasswordField password = new JPasswordField();

protected String user1 ="空值";
protected String password1="空值";
protected String verifycode1="空值";
protected String character1="空值";

JLabel l1 = new JLabel("账号");
JLabel l2 = new JLabel("密码");
JLabel l3 = new JLabel("权限");
JLabel l4 = new JLabel("验证");
public String code2;
public JComboBox cb1 = new JComboBox();
public JTextField verify = new JTextField();
ImageIcon bg = new ImageIcon("src\\image\\loginbj.jpg");
ImageIcon bg1 = new ImageIcon("src\\image\\robot.jpg");
ImageIcon bg2 = new ImageIcon("src\\image\\dian.jpg");
JLabel background = new JLabel(bg);//底色背景图片
JLabel background1 = new JLabel(bg1);//机器人背景图片
JLabel background2 = new JLabel(bg2);//让密码明文显示的图片
public JTextField passwordclear = new JTextField();
JButton bt1 =new JButton("登录");

protected void cleartextpre()   //这个是鼠标按压后显示明文的方法
{
    Point mousepoint = MouseInfo.getPointerInfo().getLocation();
    if(mousepoint.x>=1163&&mousepoint.x<=1174&&mousepoint.y>=420
            &&mousepoint.y<=430)
    {
        System.out.println("成功点击密码明文显示!");
        char[] passwordclearword = password.getPassword();
        String clearword = new String(passwordclearword);
        password.setVisible(false);
        passwordclear.setVisible(true);
        passwordclear.setText(clearword);
        passwordclear.setBounds(335, 99, 110, 25);
        login1.add(passwordclear);
        loginin1.repaint();
        loginin1.setVisible(true);
    };

}

protected void cleartext()  //鼠标松开后还原密文
{
        passwordclear.setVisible(false);
        password.setVisible(true);
        loginin1.repaint();
        loginin1.setVisible(true);
}

public loginFrame() 
{
    // TODO Auto-generated method stub
    VerifyCodeUtils code1 = new VerifyCodeUtils();

    JLabel pic = null;
    try 
    {
        code2 = code1.run1();
        //验证码的String
        pic= new JLabel(new ImageIcon("src\\verifycode\\"+code2+".jpg"));
        pic.setBounds(455, 180, 110, 60);

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.print("加载验证码出错");
    }//验证码的生成,四位验证码
    ImageIcon icon = new ImageIcon("src\\image\\loginbutton.jpg");
    bt1.setIcon(icon);
    bt1.setBounds(335, 240, 110, 27);
    login1.add(bt1);
    bt1.addActionListener(al1);
    background.setBounds(0,-25,600,300);
    loginin1.getLayeredPane().add(background,new Integer(Integer.MIN_VALUE));
    //最上层面板透明
    JPanel jp=(JPanel)loginin1.getContentPane(); 
    jp.setOpaque(false);
    //设置透明
    background1.setBounds(30,30,200,200);
    login1.add(background1);
    login1.add(pic);
    login1.setSize(600, 300);
    login1.setLocation(0,0);
    login1.setOpaque(false);
    login1.setLayout(null);
    loginin1.add(login1);
    l1.setBounds(270, 40, 200, 50);
    l1.setFont(new Font("楷体",Font.BOLD, 20));
    l2.setBounds(270, 90, 200, 50);
    l2.setFont(new Font("楷体",Font.BOLD, 20));
    l3.setBounds(270, 140, 200, 50);
    l3.setFont(new Font("楷体",Font.BOLD, 20));
    l4.setBounds(270, 190, 200, 50);
    l4.setFont(new Font("楷体",Font.BOLD, 20));
    user.setBounds(335, 49, 110, 25);
    user.setBackground(new Color(204,249,236));
    user.setForeground(Color.RED);
    password.setBounds(335, 99, 110, 25);
    password.setBackground(new Color(204,249,236));
    verify.setBounds(335, 199, 110, 25);
    verify.setBackground(new Color(204,249,236));

    background2.setBounds(450, 105, 10, 10);//让密码明文显示的小点

    background2.addMouseListener(m1);
    cb1.addItem("管理员");
    cb1.setSelectedItem("管理员");
    cb1.setBounds(335, 149, 110, 25);
    login1.add(verify);
    login1.add(l4);
    login1.add(background2);
    login1.add(cb1);
    login1.add(user);
    login1.add(password);
    login1.add(l3);
    login1.add(l1);
    login1.add(l2);
    loginin1.setBounds(width/2-250,height/2-250,600,300);
    loginin1.setTitle("无人仓储系统登录");
    loginin1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    loginin1.setResizable(false);
    loginin1.setIconImage((new ImageIcon("src\\image\\warehouse.png").getImage()));


    loginin1.setVisible(true);
}


MouseListener m1 = new MouseListener(){

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        cleartextpre();
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        cleartext();
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }};


    ActionListener al1 = new ActionListener()
    {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub

            user1=user.getText();
            character1=cb1.getSelectedItem().toString();
            password1=new String(password.getPassword());
            verifycode1 = verify.getText();
            loginproof lp = new loginproof();
            lp.runloginproof();
            loginin1.setVisible(false);

        }

    };



    public String getcharacter()
    {   
        return character1;

    }

    public String getUser()
    {   
        if(user.getText()==null&&user.getText()==""&&
                user.getText().length()==0
                &&user1.equals("空值")&&user==null)
        {return "bingo 终于出错了";}
        else
        {
        return user1=user.getText();
        }

    }

    public String getPassword()
    {
        return password1;
    }

    public String getVerifycode()
    {
        return verifycode1;
    }

}

子类是这个样子的
package login;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.plaf.ProgressBarUI;

import common.sqlconnext;
public class loginproof extends loginFrame {
Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int)screensize.getWidth();
int height = (int)screensize.getHeight();
int progressint = 0;
JFrame f = new JFrame();
JPanel p = new JPanel();
ImageIcon bg = new ImageIcon("src\image\logincheck.jpg");
ImageIcon bg1 = new ImageIcon("src\image\loading.gif");
JLabel background = new JLabel(bg); //加载背景
JLabel background1 = new JLabel(bg1); //加载旋转轮
JLabel information = new JLabel("欢迎使用,请稍候......");
JLabel errorinformation = new JLabel("加载中,进度0%",JLabel.CENTER);
JProgressBar progressbar = new JProgressBar();
//加载过程中的进度条
public void progressbar()
{
progressbar.setOrientation(JProgressBar.HORIZONTAL);
progressbar.setMinimum(0);
progressbar.setMaximum(100);
progressbar.setValue(progressint);
progressbar.setBounds(0,275,600,25);
progressbar.setStringPainted(true);
p.add(progressbar);
}//添加进度条
public void addprogress()
{

System.out.println(super.getUser()); //显示获得到的父类的用户名
String us = super.getUser();
System.out.println(super.getPassword()); //显示获得到的父类的密码
String ps = super.getPassword();
System.out.println(super.getVerifycode()); //显示获得到的父类的验证码
String vc = super.getVerifycode();
System.out.println(super.getcharacter()); //显示获得到的父类的群组
String ca = super.getcharacter();
sqlconnext a = new sqlconnext();
int code = 0;
boolean a1 =a.GetAdminUser(us,ps,ca);
if(a1==true)
{progressbar.setValue(progressint=progressint+10);
errorinformation.setText("账户密码用户组验证成功,当前进度"+progressint+"%");
System.out.println("账户密码用户组验证成功");
}
else
{System.out.println("账户密码用户组没验证成功");
code =1;

    };
    if(vc.equalsIgnoreCase(code2))
    {
        progressbar.setValue(progressint=progressint+10);
        errorinformation.setText("验证码验证成功,当前进度"+progressint+"%");
        System.out.println("验证码验证成功");
    }else
    {System.out.println("验证码没验证成功");
    code =2;
    };
    if(code ==1)
    {errorinformation.setText("账户密码验证用户组未成功,请重新输入账户密码,按ESC退出");}
    else if(code ==2)
    {errorinformation.setText("验证码验证未成功,请重新输入验证码,按ESC退出");}
}//进度条进度添加


public void runloginproof() {
    // TODO Auto-generated method stub

    progressbar();
    addprogress();
    f.setLayout(null);
    p.setLayout(null);
    f.setUndecorated(true);
    f.setBounds(width/2-250,height/2-250,600,300);
    p.setBounds(0,0,600,300);
    f.getLayeredPane().add(background,new Integer(Integer.MIN_VALUE));
    f.getLayeredPane().add(background1,new Integer(Integer.MIN_VALUE));
    //最上层面板透明
    JPanel jp=(JPanel)f.getContentPane(); 
    jp.setOpaque(false);
    errorinformation.setBounds(0,225,600,50);
    errorinformation.setFont(new Font("宋体",Font.BOLD, 14));
    information.setBounds(220,175,160,50);
    information.setFont(new Font("宋体",Font.BOLD, 14));
    background.setBounds(0,0,600,300);
    background1.setBounds(265,20,70,70);



    p.add(errorinformation);
    p.add(information);
    p.add(background1);
    p.add(background);
    f.add(p);
    f.setVisible(true);

}

}

2个回答

loginproof lp = new loginproof();
后面你访问的lp是一个和当前对象毫无关系的新的loginproof的对象实例,它的基类protected成员自然不是当前调用它的loginFrame对象实例的

另外,你在基类中创建派生类的对象实例并调用,这本身就违背面向对象的基本常识,基类都知道派生类的存在了它还要人家继承它干嘛,它直接把派生类要做的做好就行了。你这种写程序的方式就好像打扑克牌你一上来把你的牌摊开来给大家看,那还打什么牌。

XiongBaDaoFengXueL
XiongBaDaoFengXueL 能详细讲一下怎么改么~
大约 3 年之前 回复

能不能再详细一些,光有代码也不知道你出了啥錯啊,还有异常信息贴一下啊。

XiongBaDaoFengXueL
XiongBaDaoFengXueL 没有异常信息哦,他不报错的,但是每次文本框获得后不是我输入的内容
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
下拉框返回值问题求大神帮忙
一个web项目,修改和增加用的是一个页面.在增加的弹框中 有三个下拉框, 2个是从数据库取数据 一个是自己加的4个下拉选 增加都正常. 在修改的时候, 取回来的值, 其他值都可以正确显示. 下拉框那还是下拉框 什么都没有 我是一个新手 我看以前别的项目 在那个option中 c:if test=此处写的表达式 是什么和什么比 才可以在 编辑的时候 让数据显示回来. 问题描述 可能不太清晰。 有大神来帮帮忙吗。
java方法返回值类型问题请教大神
看源码的时候(AbstractQueuedSynchronizer类)if条件判断中调用的一个方法的返回类型是布尔类型,但方法体中没有返回布尔类型,这事怎么回事有知道的吗?if是否会执行? ![图片说明](https://img-ask.csdn.net/upload/201805/30/1527647646_8026.png) 调用下面的方法 ![图片说明](https://img-ask.csdn.net/upload/201805/30/1527645406_170056.png)
求大神指点 java无参带返回值方法问题
max=(age>max)?age:max; 这这话是什么意思?
求解答 JAVA 自定义JDialog 外部调用 如何返回值
自定义一个字体Jdialog 很粗糙 结构是 构造函数构造界面,构造函数的参数的 JTextArea类型 然后一个总的actionPerformed 处理事件 总的actionPerformed 我尝试不能返回值 问老师 老师讲两种jdialog返回值形式 一种 类似 showconfirmdialog 直接返回值,这个不会 另外一种 类似 fileopendialog 调用get函数 获得返回值,但是 fileopendialog 是一个fiechooser类中的函数 我不知道如何在类的子函数中弄出一个界面,而且不清出构造一个类的实例,但是这个类的实例什么时候运行完,如何在实例运行结束前调用get函数。 想过定义static 但是当第二次调用dialog时返回值返回值的问题虽然可以正确返回,但感觉不是很好,fieopendialog中当点确认时会返回一个int,帮助确定对话框运行结束并点击确定但是,我不会返回值 。或者可以用返回值是否为null确定 当时当第二次时就没办法用了 求大神解答 谢谢
求大神指导一下啊,java的问题
为什么函数名上的返回值类型是int,而函数里面的返回值类型是char。![图片说明](https://img-ask.csdn.net/upload/201702/17/1487322786_588491.png)
java中POI的HSSFRow.getCell(short cellnum)返回值问题
1.org.apache.poi.hssf.usermodel.HSSFRow。 2.HSSFRow.getCell(short cellnum).toString().trim()。我想这么使用,但是不知道HSSFRow.getCell(short cellnum)这个返回的值是不是都可以使用toString()(非null的情况),还望使用过的大神指点下。
java掉用bat返回值和错误信息获取不到的问题
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; public class Gcollect { public static void main(String[] args) { // TODO Auto-generated method stub Gcollect test1 = new Gcollect (); test1.runbat("2017-03-30T11:19","2017-03-31T11:19"); System.out.println("处理结束..."); Gcollect test2 = new Gcollect (); test2.runbat("2017-04-01T11:19","2017-04-02T11:19"); System.out.println("处理结束..."); Gcollect test3 = new Gcollect (); test3.runbat("2017-04-03T11:19","2017-04-04T11:19"); System.out.println("处理结束..."); } public String createCmd(String from, String to) { String cmd = "cmd /c start C:\\Users\\xxx\\Desktop\\dropdata\\execStatusStreamLogGC.bat"+" " + from + " " + to; return cmd; } public void runbat(String from, String to) { String cmd = "cmd /c start C:\\Users\\xxx\\Desktop\\dropdata\\execStatusStreamLogGC.bat"+" " + from + " " + to; try { Process ps = Runtime.getRuntime().exec(cmd); System.out.println(ps.getInputStream()); InputStream in = ps.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String tmp = null; while((tmp=br.readLine())!=null){ System.out.println(tmp); } } catch(IOException ioe) { ioe.printStackTrace(); } } public static void printList(List<String> list){ for (String string : list) { System.out.println(string); } } } 前提:最近要写一个多次调用cmd命令调用外部jar的程序,传入不同时间段的参数,上面代码能够调用外部jar了,但是我需要判断是否是正常结束,如果出错要重新调用一遍。 现状:执行这段代码的时候,cmd成功调用了,但是ps.getInputStream()取不到cmd窗口打印出的执行信息,无法判断是否是正常结束。 问题:ps.getInputStream()是否可以获取cmd窗口打印出来的信息,如果可以,我的问题是什么呢,为什么我取不到cmd窗口显示的信息呢?请大神们指点。。多谢 下面是cmd窗口执行打印出的信息 ![图片说明](https://img-ask.csdn.net/upload/201802/07/1518000689_151298.jpg) 这个是eclipse控制台出的信息: java.io.BufferedInputStream@15db9742 处理结束... java.io.BufferedInputStream@6d06d69c 处理结束... java.io.BufferedInputStream@7852e922 处理结束...
问问大神们 我刚开始学面向对象 求大神帮忙解释一下
这是自己创建的一个类![图片说明](https://img-ask.csdn.net/upload/201504/10/1428642717_9446.png) 然后有参无返回都运行成功了,就是有参数有返回值的那里出问题了 运行不了 按运行键后 控制台出的程序是别的 请问大神们这是什么原因?这是程序![图片说明](https://img-ask.csdn.net/upload/201504/10/1428642832_444120.png) 求大神们帮帮忙
关于ajax的URL路径及返回值问题
以下为HTML页面: <input id="btnok" type="button" value="单击返回hello" /> 以下为我的js页面: $(function () { $("#btnok").click(function () { $.ajax({ type:"post", url: "myclass.java/Hello", contentType: "application/json", success: function (data) { alert(data.d); }, error:function(jqXHL){ alert("错误:"+jqXHL); }, }) ; }) ; }); 以下为我写的一个java类myclass.java,用于返回值: public class myclass { public String Hello() { return "Hello Ajax!"; } } 运行后alert弹出404错误,刚开始学,好多不明白,望大神指教哪里出问题了?
Socket 无线通信 问题
1.这几天公司来了一个无线通信项目表示以前没做过啊 查阅了网上很多资料大致分为两种情况,下面 代码是其中一种的 也是百试不同,首先我们先确保设备是完好的 ,用网络调试助手先测一下。 ![图片说明](https://img-ask.csdn.net/upload/201912/21/1576917952_983775.jpg) 发送框内一串命令发出后 可以收到设备给返回的另一串返回值,这说明设备是没有问题的。那么我们进入到程序中。 我们先把输入值写死,以下为代码 ``` public class TestDemo3 { public static void main(String[] args) throws UnknownHostException, IOException { try { Socket socket; socket = new Socket("192.168.1.7",23); System.out.println("连接成功!"); OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os); String sendInfo="01 03 0451 0001 D4 EB"; pw.write(sendInfo); System.out.println("发送成功!"); pw.flush(); socket.shutdownOutput(); String replyInfo=null; InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); System.out.println(br.readLine()); while(!((replyInfo=br.readLine())==null)){ System.out.println("接收服务器的数据信息:"+replyInfo); } br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ``` 这基本也是网上抄的其中一种,返回的值却为null 这说明没有接收到端口返回的值或者发送的值错误。有很多不解还请各位网络通信大神指点一二。
在java项目中用json传值的get请求,接收返回值时直接跳到错误?
现在做的一个项目要调用其他的一个url接口,并且附带上值传递过去(传值的方式规定了只能用json),而且提交方式是Get,前面所有的都没问题,但是接收返回参数的时候就出问题了 HttpURLConnection conn=null;然后这个conn后面得到了所需要的值的,下面的就是接收返回结果的代码: nputStream oppo = conn.getInputStream();当执行到这一步的时候就直接跳到catch (Exception e){}里面了以至于本来该继续执行的以下代码都不执行了!跪求各位大神、大佬指点迷津! InputStream opppo = conn.getErrorStream(); Reader oppoi = new InputStreamReader(oppo,encoding); in = new BufferedReader(oppoi);
Java中setter()和getter()问题
自学Java一个星期以来,一直疑惑,在getter()方法和setter()方法中,为什么前者的返回值类型是 String,后者的返回值类型是void。急切希望大神前辈们解惑。
请教一个JAVA线程的奇怪问题
在学习JAVA线程时候的遇到一个很奇怪的现象。让我们先来看代码 ```java public class TestThread { public static void main(String[] args) { IRun ir = new IRun(); Thread it = new Thread(ir); it.start(); try { Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(TestThread.class.getName()).log(Level.SEVERE, null, ex); } ir.setStop(); } static class IRun implements Runnable { boolean exec = true; public void setStop() { exec = false; System.out.println("exec = " + exec); } @Override public void run() { int c = 0; while (exec) { c++; } System.out.println("退出了循环"); } } } ``` 在上述程序首先创建一个Runnable对象ir,然后创建一个线程对象it,通过it.start()启动线程,执行IRun类中的run()函数,执行一个while循环。while循环的条件由布尔变量exec控制。主程序中等待1秒钟后,修改exec的值为false,按照正常的逻辑应该是在exec值为false后,循环结束执行下面输出语句,然后线程结束,程序退出。 但是,上述代码在运行后,将不会执行run()函数中的System.out.println("退出了循环");语句,程序一直保持运行。对这种现象,在帖子”关于JAVA线程,请大神帮忙“中still_rain给出的这种现象的原因是线程访问的同步问题导致,当主线程(main函数所在的线程)中修改变量exec的值后,在创建执行的线程中访问的exec的值没有发生变化(或者说可能是主线程、执行线程这两个线程exec变量是不同的对象,好像是说java会将一些资源在每个线程中复制一份?有待确认)。在exec变量前加上volatile修饰符后,程序运行正常,问题似乎解决。 现在以上述代码为基础,进行一次小小的修改。在run()函数中的while循环中加上一个类对象操作,比如新建一个字符串,则run()函数为 ```java public void run() { int c = 0; while (exec) { String s = new String(""); c++; } System.out.println("退出了循环"); } } ``` 运行程序,程序按预期的顺序执行,顺利结束。这时候不管exec变量是否有volatile修饰符,且只在while循环中存在类对象操作(新建对象、对象函数调用(调用的函数不能返回基本数据类型),以及像System.out.println这样的操作),程序的运行都很正常,对这种现象就不是上述的同步问题能够解释的了。在帖子”关于JAVA线程,请大神帮忙“中still_rain(感谢热情的回复)从编译器优化的角度进行了解释。当while循环中只有简单的基本数据类型参与运算的时候由于执行速度太快,将while循环编译成了while(true)语句。导致循环不会退出,从而循环后的输出不会执行,且程序不会退出。 为了探究这个奇怪现象的原因,让我们看看编译后的字节码,下图是用jclasslib查看的字节码,是修改前的run()函数字节码。 ![](http://img.blog.csdn.net/20150210165255055?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ2Rhdmlk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 从图中可以看到,循环体从aload_0开始,到goto 2结束。控制跳转的语句是ifeq 15,意思是如果值为0则跳转到15,否则执行下面的语句。 当将上面的while(exec)语句修改为while(true)后,字节码为: ![](http://img.blog.csdn.net/20150210165209410?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ2Rhdmlk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 由两图可以看出,编译器并没有将while(exec)语句优化为while(true)。再看修改后的代码编译的字节码: ![](http://img.blog.csdn.net/20150210165320125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ2Rhdmlk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 循环体从aload_0起,到goto 2结束。从ifeq 25下面的一行到astotre_2行,为String s = new String("");语句的字节码,将这段去掉则字节码与修改前的一样。所以基本可以排除编译器优化导致的程序不正常运行。 请看到这篇文章的大神们能够给予指导,探究出现这种情况的原因,谢谢
SpringCloud Feign调用返回结果封装后异常问题
我一个项目采用SpringCloud框架,服务端客户端采用Feign调用。 服务端返回结果封装了一个Result对象来进行包装 ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789530_208977.png) ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789552_561331.png) ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789566_505603.png) 然后服务端的一个登录方法 ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789576_928948.png) 客户端用Feign调用 ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789587_486238.png) 但是测试的时候,无论服务端返回各种结果都是报错,报枚举类超出范围异常,Feign已拿到值,但是都是报那个Code的超出枚举类异常,但是枚举类是已经定义了。 ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789601_125790.png) 麻烦各位大神能帮忙看看解决一下嘛,谢谢各位大神
求大神帮忙,基于SSH框架的ajax异步提交的几个问题!谢谢了!
我这边有几个问题 1.基于SSH框架的ajax异步提交,在action中返回值怎么写? 2.在struts.xml中的result怎么配置? 3.还有一个问题就是我在jsp页面怎么不能触发失去焦点事件。 楼下我会贴出的我的代码
hql数据库操作,返回结果有问题,求解?
``` public int createNameCheck(String createName,String saleId){ String sql = ""; sql = "select * from DATA_RRYX.T_PC_COMBINATION_SALE T where T.editor='"+createName+"'and T.id ='"+saleId+"'and T.is_delete = 'N'"; int t = tpcCombinationSaleDAO.getRecordCountBySQL(sql); log.info("t"+t); return t; } ``` ``` public int getRecordCountBySQL(String sql) { Session session = null; sql = "select count(*) from (" + sql +")"; int result = 0; try { session = super.getSession(); logger.debug("sql = " + sql); Query qry = session.createSQLQuery(sql); result = ((Number) qry.uniqueResult()).intValue(); } catch (Exception e) { logger.error("获取SQL查询行数异常!getRecordCountBySQL(String)中。"); } finally { } return result; } ``` 这个查询数据库语句主要是查询 创建人、id以及是否删除的语句,然后调用的方法返回值就是查询到的数量,可是我传入创建人中文参数正确的时候,返回值为0,但是传入英文、数字都可查询到,如图下,plsql也能查到,请问大神有知道是什么原因吗? ![图片说明](https://img-ask.csdn.net/upload/201911/12/1573541835_980042.png) ![图片说明](https://img-ask.csdn.net/upload/201911/12/1573542381_146866.png)
mybatis session.selectOne(key,value)问题
各位大神们,mybatis session.selectOne(key,value)调用xml的sql语句无返回值,怎么回事? 情况是这样的,今天领导给我一个完成的项目代码,是用spring,struts,mybatis编写的java项目,让我把里面连接的sqlserver数据库改为连接mysql,改完连接的驱动,用户名,密码之后,运行发现连接不上,数据库没问题,看完各种逻辑代码之后,发现是使用到了session.selectOne()方法时无法从数据库查询到的数据返回,不知什么原因,这问题困扰了我一整天,实在没办法,请各位有相关经验的高手指点指点,本人之前没接触过mybatis,请各位帮我解答,小弟万分感谢!!!!
尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,求大神帮忙指正
java新人,尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,调用 insert 指令没问题,而 select 指令出现如下报错: com.microsoft.sqlserver.jdbc.SQLServerException: ')' 附近有语法错误。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792) at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616) at com.javaee.servletxm.comm.MSSQLJDBC.select(MSSQLJDBC.java:160) at com.javaee.servletxm.comm.MSSQLJDBC.select(MSSQLJDBC.java:195) at com.javaee.servletxm.comm.MSSQLJDBC.selectFirstValue(MSSQLJDBC.java:172) at com.javaee.servletxm.comm.MSSQLJDBC.getPageNumber(MSSQLJDBC.java:221) at com.javaee.servletxm.comm.MSSQLJDBC.selectByFY(MSSQLJDBC.java:259) at com.javaee.servletxm.kqgl.KqManager.getAllKqxx(KqManager.java:38) at com.javaee.servletxm.kqgl.Kqwh.doGet(Kqwh.java:47) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760) at java.lang.Thread.run(Thread.java:724) 这是具体的代码,求大神帮忙指正 package com.javaee.servletxm.comm; /** * jdbc下 SQL Server 2005 数据库的封装类 */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.List; import java.util.Properties; public class MSSQLJDBC { // 配置文件名称 private String iniFileName = MSSQLJDBC.class.getClassLoader().getResource("/com/javaee/servletxm/comm").getPath()+ "mssql.properties"; // 连接数据库 private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private String url = "jdbc:sqlserver://localhost;DatabaseName=jdms"; private String user = "sa"; private String password = ""; // 定义连接属性 private Connection connect = null; // 与连接有关三个通道 private Statement stmt = null; private PreparedStatement pstmt = null; private CallableStatement cstmt = null; public static final String stmtType = "stmt"; public static final String pstmtType = "pstmt"; public static final String cstmtType = "cstmt"; // 定义参数类型的静态常量值 public static final String varCharType = "varchar"; public static final String intType = "int"; public static final String doubleType = "decimal"; public static final String dateType = "datetime"; public static final String timeType = "timestamp"; // 定义全局的结果集 private ResultSet rs = null; // 在构造方法中对属性进行初始化赋值操作 public MSSQLJDBC() { // 读取配置文件 readIni(); // 初始化连接 initConnect(); } // 可配置文件 .properties // 读取配置文件 private void readIni() { File file = new File(iniFileName); if (!file.exists()) { // 创建一个文件 try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } // 判断文件是否有值 if (file.length() == 0) {// 说明是一个空文件 // 初始化值 try { Properties p = new Properties(); p.put("driver", driver); p.put("url", url); p.put("user", user); p.put("password", password); FileOutputStream fos = new FileOutputStream(file); p.store(fos, "配置文件信息"); fos.close(); } catch (IOException e) { e.printStackTrace(); } } else {// 如果有值 // 将信息读取出来 try { FileInputStream fis = new FileInputStream(file); Properties p = new Properties(); p.load(fis); this.driver = p.getProperty("driver"); this.url = p.getProperty("url"); this.user = p.getProperty("user"); this.password = p.getProperty("password"); fis.close(); } catch (IOException e) { e.printStackTrace(); } } } // 建立连接 private void initConnect() { try { Class.forName(driver); this.connect = DriverManager.getConnection(url, user, password); this.connect.setAutoCommit(false);// 设置手动提交事务 this.stmt = connect.createStatement(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } /*/ 从tomcat缓冲池获取连接 private void initConnectFromDataSource() { try { InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/oracleds"); this.connect = ds.getConnection(); this.connect.setAutoCommit(false); this.stmt = connect.createStatement(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }*/ // 需要调用者控制事务的两个方法 // 提交方法 private void commit() { try { this.connect.commit(); } catch (SQLException e) { e.printStackTrace(); } } // 回滚事务 private void rollBack() { try { this.connect.rollback(); } catch (SQLException e) { e.printStackTrace(); } } // 定义一组与操作有关的方法 // 使用普通通道执行的select public ResultSet select(String sql) { ResultSet prs = null; if (stmt != null) { try { prs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } return prs; } // 根据传入的sql直接获取单一值 // 使用此方法的时候sql语句返回的单一的值 public String selectFirstValue(String sql, String type, List<String> csList) { String rstr = ""; rs = select(sql, type, csList);// 确定此结果集只有一条记录 if (rs != null) {// 说明结果集有值,且只有一条记录 try { ResultSetMetaData rsmd = rs.getMetaData(); if (rs.next()) { // 移动到第一条记录 String p_type = rsmd.getColumnTypeName(1); rstr = getResultSetValue(rs, 1, p_type); } } catch (SQLException e) { e.printStackTrace(); } } return rstr; } // 使用普通通道执行的select /** * sql 参数 type 使用通道的类型 stmt pstmt cstmt List<String> csList 预编通道执行的参数队列 * String 最少必须满足如下条件的字符串 数据类型 ,数据值 数据类型定义说明 字符串 数字(整数、小数) 日期(DATE、TIMESTAMP) */ public ResultSet select(String sql, String type, List<String> csList) { ResultSet prs = null; if (type.equals(stmtType)) {// 说明使用普通通道来执行 prs = select(sql); } else if (type.equals(pstmtType)) {// 说明使用预编译通道来执行 if (connect != null) { try { pstmt = connect.prepareStatement(sql); // 验证传入的参数和sql中的参数个数一致 setPrepareStatement(pstmt, csList);// 将参数设置进当前的预编译通道 prs = pstmt.executeQuery(); } catch (Exception e) { e.printStackTrace(); } } } return prs; } // 获取 总页数 public int getPageNumber(String sql, String type, List<String> csList, int pageSize) { // 处理总页数 int pageNumber = 0; // 第一步获取sql总记录数 String psql = "select count(*) from (" + sql + ")"; String result = selectFirstValue(psql, type, csList); int rows = 0; if (result != null && result.trim() != "") { rows = Integer.valueOf(result); } if (rows % pageSize == 0) { pageNumber = rows / pageSize; } else { pageNumber = rows / pageSize + 1; } return pageNumber; } /** * 自动添加分页查询方法 * * @param sql * 要执行的sql * @param type * 执行方式 * @param csList * 参数列表 * @param curPage * 当前页数 * @param pageSize * 每页记录数 默认为10 * @return */ public ResultSet selectByFY(String sql, String type, List<String> csList, int curPage, int pageSize) { ResultSet prs = null; // 处理 每页记录数 if (pageSize <= 0) { pageSize = 10;// 默认页面10条记录 } int pageNumber = getPageNumber(sql, type, csList, pageSize); // 处理当前页数 if (curPage < 0) { curPage = 1;// 默认第一页 } if (curPage > pageNumber) { curPage = pageNumber; } String psql = "select tmpaa.* from (select tmpa.*,(select (ROW_NUMBER() over (order by id))) as rn from (" + sql + ") tmpa where (select (ROW_NUMBER() over (order by id))) <= " + (curPage * pageSize) + ") tmpaa where tmpaa.rn >= " + ((curPage - 1) * pageSize + 1); prs = select(psql, type, csList); return prs; } // 将预编通道执行的参数队列按照指定规则设置进通道中 private void setPrepareStatement(PreparedStatement p, List<String> csList) throws Exception { if (csList != null && csList.size() > 0) { for (int i = 0; i < csList.size(); i++) { // 此处的str是数据类型 ,数据值 // 解析出数据类型和数据值 String[] s = csList.get(i).split(","); String sType = s[0]; String sData = s[1]; if (varCharType.equals(sType)) { p.setString(i + 1, sData); } else if (intType.equals(sType)) { p.setInt(i + 1, Integer.valueOf(sData)); } else if(doubleType.equals(sType)){ p.setDouble(i+1, Double.valueOf(sData)); } else if (dateType.equals(sType)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd"); java.util.Date d = sdf.parse(sData); p.setDate(i + 1, new Date(d.getTime())); } else if (timeType.equals(sType)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd"); java.util.Date d = sdf.parse(sData); p.setTimestamp(i + 1, new Timestamp(d.getTime())); } } } } // 定义一个执行insert update delete的方法 public int iudSql(String sql) { int ri = -1; if (stmt != null) { try { ri = stmt.executeUpdate(sql); commit(); } catch (SQLException e) { e.printStackTrace(); rollBack(); } } return ri; } public int iudSql(String sql, String type, List<String> csList) { int ri = -1; if (stmtType.equals(type)) { ri = iudSql(sql); } else if (pstmtType.equals(type)) { if (connect != null) { try { pstmt = connect.prepareStatement(sql); setPrepareStatement(pstmt, csList); ri = pstmt.executeUpdate(); commit(); } catch (Exception e) { e.printStackTrace(); rollBack(); } } } return ri; } /** * 编写一个通用的遍历ResultSet结果集的方法 */ public void iteratorResultSet(ResultSet rs) { try { if (rs != null) {// 说明有值 // ResultSetMetaData 此对象里封装了与结果集有关所有信息 // 此结果有几列组成,每列的列名,每列的数据类型 ResultSetMetaData rsmd = rs.getMetaData(); // 得到结果集列数 int columnCount = rsmd.getColumnCount(); // 输出此结果集的所有列名 for (int i = 1; i <= columnCount; i++) { System.out.print(rsmd.getColumnName(i) + "\t"); } System.out.println(""); // 遍历输出所有的数据 while (rs.next()) { // 如何在获取rs中的数据? for (int i = 1; i <= columnCount; i++) { String type = rsmd.getColumnTypeName(i); System.out.print(getResultSetValue(rs, i, type) + "\t"); } System.out.println(""); } } } catch (SQLException e) { e.printStackTrace(); } } // 从ResultSet中根据数据类型来得到数据值的方法 // 先处理常用的sqlserver的数据类型的对应 private String getResultSetValue(ResultSet rs, int index, String type) { String rstr = ""; try { if (rs != null && !"".equals(type) && index > 0) { if ("char".equals(type.trim()) || "varchar".equals(type.trim())) { if (rs.getString(index) != null) { rstr = rs.getString(index); } } else if ("int".equals(type.trim())) { rstr = rs.getInt(index) + ""; } else if ("decimal".equals(type.trim())) { rstr = String.valueOf(rs.getDouble(index)); } else if ("date".equals(type.trim())) { Date date = rs.getDate(index); if (date != null) { rstr = new SimpleDateFormat("yyyy年MM月dd日").format(date); } } else if ("timestamp".equals(type.trim()) || "datetime".equals(type.trim())) { Timestamp tt = rs.getTimestamp(index); if (tt != null) { rstr = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(tt); } } } } catch (SQLException e) { e.printStackTrace(); } return rstr; } /* //统一事务管理的批量sql的封装 public boolean iudSql(List<String> sqlList){ int ri = -1; if(stmt!=null){ try { ri = stmt.executeUpdate(sql); commit(); } catch (SQLException e) { e.printStackTrace(); rollBack(); } } return ri; }*/ // 关闭连接 public void close() { try { // 关闭所有的与数据库有关的对象 if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (pstmt != null) { pstmt.close(); pstmt = null; } if (cstmt != null) { cstmt.close(); cstmt = null; } if (connect != null) { connect.close(); connect = null; } } catch (SQLException e) { e.printStackTrace(); } } }
java web的jsp和后台的问题 望大神解惑。。。
学习servlet的时候说 request是传到后台的值,返回的话要把值放到response中, 返回给页面,可是为什么看好多源码 ,servlet给页面传值都是request.setAttribute。。。。呢? 然后前台jsp页面也是通过request.getAttribute。。。获取值,而不是通过response获取呢?那还要response干嘛。。。。。。
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
网络(8)-HTTP、Socket、TCP、UDP的区别和联系
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 一、TCP与UDP的不同 1. 是否需要建立连接。 UDP在传送数据之前不需要先建立连接;TCP则提供面向连接的服务; 2. 是否需要给出确认 对方的传输层在收到UDP报文后,不需要给出任何确认,而 TCP需要给出确认报文,要提供可靠的、面向连接的传输服务。 3.虽然UDP不提供可靠交...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
开挂的人生!那些当选院士,又是ACM/IEEE 双料Fellow的华人学者们
昨日,2019年两院院士正式官宣,一时间抢占了各大媒体头条。 朋友圈也是一片沸腾,奔走相告,赶脚比自己中了大奖还嗨皮! 谁叫咱家导师就是这么厉害呢!!! 而就在最近,新一年度的IEEE/ACM Fellow也将正式公布。 作为学术届的顶级荣誉,不自然地就会将院士与Fellow作比较,到底哪个含金量更高呢? 学术君认为,同样是专业机构对学者的认可,考量标准不一,自然不能一概而论。 但...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库——点这里跳转 文章目录Python语言高频重点汇总**GitHub面试宝典仓库——点这里跳转**1. 函数-传参2. 元类3. @staticmethod和@classmethod两个装饰器4. 类属性和实例属性5. Python的自省6. 列表、集合、字典推导式7. Python中单下划线和双下划线8. 格式化字符串中的%和format9.
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
代码详解:如何用Python快速制作美观、炫酷且有深度的图表
全文共12231字,预计学习时长35分钟生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图本文将探讨三种用Python可视化数据的不同方法。以可视化《2019年世界幸福报告》的数据为例,本文用Gapminder和Wikipedia的信息丰富了《世界幸福报告》数据,以探索新的数据关系和可视化方法。《世界幸福报告》试图回答世界范围内影响幸福的因素。报告根据对“坎特里尔阶梯问题”的回答来确定幸...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全就相信了高中老师的话:“进入大学你们就轻松了”。因此在大一的时候自己学习的激情早就被抛地一干二净,每天不是在寝室里玩游戏就是出门游玩,不过好在自己大学时买的第一台笔记本性能并不是很好,也没让我彻底沉...
如何写一篇技术博客,谈谈我的看法
前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 我一直推崇学技术可以写技术博客去沉淀自己的知识,因为知识点实在是太多太多了,通过自己的博客可以帮助自己快速回顾自己学过的东西。 我最开始的时候也是只记笔记,认为自己能看得懂就好。但如果想验证自己是不是懂了,可以写成技术博客。在写技术博客的...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【设计模式】单例模式的八种写法分析
网上泛滥流传单例模式的写法种类,有说7种的,也有说6种的,当然也不排除说5种的,他们说的有错吗?其实没有对与错,刨根问底,写法终究是写法,其本质精髓大体一致!因此完全没必要去追究写法的多少,有这个时间还不如跟着宜春去网吧偷耳机、去田里抓青蛙得了,一天天的....
《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺
欢迎关注文章系列,一起学习 《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《面试知识,工作可待篇》-Java笔试面试基础知识大全 前言 是不是感觉找工作面试是那么难呢? 在找工作面试应在学习的基础进行总结面试知识点,工作也指日可待,欢...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
微博推荐算法简述
在介绍微博推荐算法之前,我们先聊一聊推荐系统和推荐算法。有这样一些问题:推荐系统适用哪些场景?用来解决什么问题、具有怎样的价值?效果如何衡量? 推荐系统诞生很早,但真正被大家所重视,缘起于以”facebook”为代表的社会化网络的兴起和以“淘宝“为代表的电商的繁荣,”选择“的时代已经来临,信息和物品的极大丰富,让用户如浩瀚宇宙中的小点,无所适从。推荐系统迎来爆发的机会,变得离用户更近: 快...
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问