这段代码main方法的作用是什么?感觉没什么用啊

public class Take {
public static void main(String[] args) {
Take s = new Take();
s.go();
}

void go() {
    int boo =22;
    int coo =23;
    Take t = new Take();
    takeTwo(boo,coo);

}

void takeTwo(int x, int y) {
    int z = x + y;
    System.out.println("Total is" + z);
}

}

3个回答

main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,

u012516914
Spring_java_gg 直接复制过去当然可以了,但是如果你把方法改成static 那么 你就不用Take t = new Take();直接就可以调用方法体,因为静态方法自动初始化。
接近 6 年之前 回复
feiyun0112
feiyun0112 如果go方法复制过去,takeTwo方法必须改为static 才能被访问到
接近 6 年之前 回复
u011505840
cybest 不用s变量直接把go方法下的代码复制到main方法下可以吗
接近 6 年之前 回复

如果你的Take 类只是一个普通的业务类,不需要作为程序执行入口,那么它是没什么用。
但是在这里,由于这个类比较简单,没有外部依赖,main()的用处是可以对Take类的go()和takeTwo(int x, int y)方法做简单的测试,而不需要依赖Junit等测试框架。
当然在正式开发中这种做法是不被推荐的,但是自己写程序玩的时候,谁也阻止不了你这么做。

逐级调用可以打印出"Total is" 45 ,如果不能执行没有结果把go改成gosts,因为go是保留字可能不会允许.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求大神帮我看看这段代码main函数里赋值有什么问题,新手没金币,抱歉!
``` <textarea readonly="readonly" name="code" class="c++"> #include<iostream> #include<string> using namespace std; class Teacher { public: //Teacher(){} Teacher(string n, int a, string s, string ad, string c, string t); void display(); protected: string name; int age; string sex; string add; string call; string title; }; class Cadre {public: //Cadre(){} Cadre(string n, int a, string s, string ad,string c, string p); void display(); protected: string name; int age; string sex; string add; string call; string post; }; class Teacher_Cadre:public Teacher,public Cadre { public: //Teacher_Cadre(){} Teacher_Cadre(string n,int a,string s,string add,string c,string t,string p,double w):Teacher(n,a,s,add,c,t),Cadre(n,a,s,add,c,p),wages(w){} void show(); protected: double wages; }; void Teacher::display() { cout<<"姓名: "<<name<<endl; cout<<"年龄: "<<age<<endl; cout<<"性别: "<<sex<<endl; cout<<"地址: "<<add<<endl; cout<<"电话: "<<call<<endl; cout<<"职称: "<<title<<endl; } void Cadre::display() { cout<<"姓名: "<<name<<endl; cout<<"年龄: "<<age<<endl; cout<<"性别: "<<sex<<endl; cout<<"地址: "<<add<<endl; cout<<"电话: "<<call<<endl; cout<<"职务: "<<post<<endl; } void Teacher_Cadre::show() //在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数 { Teacher::display(); cout<<"职务: "<<Cadre::post<<endl; //指定作用域 cout<<"工资: "<<wages<<endl; } Teacher::Teacher(string n,int a,string s,string ad,string c,string t) { name=n; age=a; sex=s; add=ad; call=c; title=t; } Cadre::Cadre(string n,int a,string s,string ad,string c,string p) { name=n; age=a; sex=s; add=ad; call=c; post=p; } /*Teacher_Cadre::Teacher_Cadre(string n,int a,char s,string add,string c,string t,string p,double w=0):Teacher(n,a,s,add,c,t),Cadre(n,a,s,add,c,p) { wages=w; }*/ #include"Teacher&Cadre.h" int main() { Teacher_Cadre tc[3]={ {"zhang",20,"male","Build 305-503","6081202","tuyor","staff",8000}, {"chen",38,"male","Build 3A-302","6088132","associate professor","subdecanal",20000}, {"fan",30,"female","Build 2A-202","6088099","lectuer","staff room director",15000}}; for(int i;i<3;i++) tc[i].show(); return 0; }</textarea> ```
python 这段代码我这里为什么说15行出现错误呢
``` def div(num1,num2): growth = (num1-num2)/num2 percent = str(growth*100) + '%' return percent def warning(): print('警告:你确定上个月不亏也不赚吗?') def main(): num1 = int(input('请输入这个月的利润:')) num2 = int(input('请输入上个月的利润:')) while 1: if nmu2 == 0: print(warning()) else: print('本月的利润增长率为:'+div(num1,num2)) main() ``` 就是最后一行报错 但是感觉没啥错呀... ![图片说明](https://img-ask.csdn.net/upload/202001/03/1578037015_451018.png) 感谢
初学者提问,为什么这段代码在VC6.0上会报错
#include<stdio.h> #include<math.h> main() {int s; float n , t , pi; t = 1.0; pi = 0; n = 1.0; s = 1; while( fabs(t) >= 1e - 6) { pi = pi + t; n += 2.0; s = -s; t = s/n; } pi = pi*4; printf("pi = %f\n", pi) } 就是这段代码,我个人看也觉得没什么错误,可就是调试不了
一段关于C++空间分配的代码的疑问
代码如下: #include"stdafx.h" class X{ public: X(){} ~X(){printf("end");} }; void f(int i) { if(i<10) { //goto jump1; } X x1; jump1: switch(i){ case 1: X x2; break; //case 2: X x3; break; } } int main() { f(1); return 0; } 为什么把//goto jump1,//case 2 任意一个去掉注释,程序就会有定义被跳过的问题?比如就算去掉//goto jump1的注释,jump1之后的代码中没有用到x1啊,为什么非要定义 x1呢? 另外,如果去掉//case2注释,那这和 if(i==1) X x2; else if(i==2) X x3 这段代码貌似没啥区别啊,为什么后者可以通过编译呢? 求好心人解释,谢谢。
请问下java高手,这段swing中paint()代码为什么被执行了两次
我按照书上的介绍,写了一个swing中画图的代码,但是运行时发现他paint()执行了 两次,请问这是为什么呢 另外public void paint(Graphics g)在这段代码中是在哪个地方被调用的,我感觉只 是被重写,没有被调用啊,之前提问有人跟我说这是因为此处的paint算是Jframe的 事件,和方法不一样,但是我还是不理解,代码如下: ``` import java.awt.BorderLayout; import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Shape; import java.awt.image.ImageObserver; import java.text.AttributedCharacterIterator; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class Gtonew extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Gtonew frame = new Gtonew(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Gtonew() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); } public void paint(Graphics g){ g.drawRoundRect(300, 150, 50, 50, 100, 100); System.out.println("wobeidiaoyongle");//此处打印没执行了2次 } } ```
java编程,我这段代码是在ecplise上实现的,但DEBUG都没问题,运行后却什么都没有弹出
Dubug上显示, <terminated>SLinkedList [Java Application] <terminated, exit value: 0>C:\Program Files\Java\jdk1.7.0_07\bin\javaw.exe (2013-5-7 下午8:46:10) 系统变量的Path为C:\Program Files\Java\jdk1.7.0_07\bin; classpath.;%JAVA_HOME%\lib; 以下为代码: @author Administrator * */ //java ADT import java.awt.*; class SLinkedList{//插入和删除操作分为头尾和中间,对于头,前一个为空,对于尾,后一个结点为空,需要分别对待. public class book{ protected int number; protected String title; protected String writer; protected double pricing; protected String publishinghouse; book next; //这便是一个指针,只不过它是引用. public book(int number,double pricing,String title,String writer,String publishinghouse) { this.number=number; this.pricing=pricing; this.title=title; this.writer=writer; this.publishinghouse=publishinghouse; this.next=null; } } protected book head,tail;//链表类的保护数据成员 public SLinkedList() { head = tail = null; } //创建空链表 public boolean isEmpty() { return head == null; } //判断链表是否为空 public void addToHead(int number,double pricing,String title,String writer,String publishinghouse) { head=new book(number,pricing,title,writer,publishinghouse); //创建头结点 if(tail==null) tail=head; } public void addToTail(int number,double pricing,String title,String writer,String publishinghouse) { if(!isEmpty()) {//若链表非空那么将为指针的next初始化为新元素 tail.next=new book(number,pricing,title, writer, publishinghouse); tail=tail.next; //以书号number作为标识符 }else { //如果为空则创建新的,并将头尾指向它 head=tail=new book(number,pricing,title,writer,publishinghouse); } } public void addFirst(int number,double pricing,String title,String writer,String publishinghouse) { book newNode=new book(number,pricing,title,writer,publishinghouse); newNode.next = head; head = newNode; } //表头插入节点,高效率,这是插入操作之一 public void addLast(int number,double pricing,String title,String writer,String publishinghouse) { book newNode = new book(number,pricing,title,writer,publishinghouse); book p = head; while (p.next != null) p = p.next;//一直到next到表尾 p.next = newNode; newNode.next = null; } //表尾插入结点,在表尾接一个 public void removeFirst() { if (!isEmpty()) head = head.next; else System.out.println("The list have been emptied!"); } //表头删除结点,只需让表头指向下一个结点 public void removeLast() { //prev为前一个结点的指针,curr为当前的指针 book prev = null, curr = head; //删除表尾的结点 while(curr.next != null) { prev = curr; curr = curr.next; if(curr.next == null) prev.next=null; //使前一个结点指向空,则原本的表尾结点便断开了 } }//removeLast public boolean insert(int appointednumber,int number,double pricing,String title,String writer,String publishinghouse) {//结点插入到链表某一位置 book prev = head, curr = head.next; book newNode; newNode = new book(number, pricing, title, writer, publishinghouse); if(!isEmpty()) { while( (curr!= null) && (appointednumber==curr.number) ) { //两个判断条件不能换 当前不为空,且指定num一致. prev = curr; curr = curr.next; //appointednumber为指定插入的位置 } newNode.next = curr;//新结点的next指针指向当前cur,即要插入的位置的下一个结点 prev.next = newNode; //cur指向了要插入的结点 return true; } return false; } public void remove(int number){//删除指定位置的结点 book curr=head; book prev=null; boolean found=false; while((curr!=null)&&(!found)) { if(number==curr.number ) { if(prev==null) removeFirst(); else prev.next=curr.next; found=true; } else{ prev=curr; curr=curr.next ;//未找到要删除的位置则继续找,指针后移 } }//while }//remove public book index(int number)//查询操作 { //用index确定要找的number book p; for(p=head;p!=null;p=p.next ){ if(p.number==number) return p; number++; } System.out.print("Error!"); return null;//找不到,返回-1 } public int Length(SLinkedList L){//返回链表长度 int l=0; book p=head; while(p.next!=null) { p=p.next ; l=l+1;} return l; } public void Insertsort(SLinkedList L) { //按关键字即number非递减排序 //对链表L作直接插入排序(不需要移动元素) book p=L.head.next; book q=L.head;//q为前面的,p为后面的 book ptr=null; if(!isEmpty()){ for(int j=2;j<=Length(L);j++) { if(p.number>q.number) p=p.next; else { ptr=L.head ; if(q==L.head) { book ptr0=head; while(ptr0.next!=q) {ptr0=ptr0.next ;} ptr0.next=p.next; p.next=q; //找到p结点的后一个结点,将p结点的前一个结点的指针指向p之后的那个结点 }//q为头结点,第一趟 while(ptr.next!=q) {ptr=ptr.next ;}//while book ptr1=q; while(ptr1.next !=p) {ptr1=ptr1.next; } ptr.next =p; ptr1.next=p.next; p.next=q; //换了指针,结点的next域没变,故结点位置也没变 book m=q; q=p; p=m; p=p.next;q=q.next; }//else }//for }//if else System.out.print("排序失败,记录为空");//-1表示为空,错误,不能排序 }//insert public book SelectMinKey(SLinkedList L,int i){//为了简单选择排序,返回最小的number book pt=L.head; book p1; while(i>1){ ; pt=pt.next; i--; } p1=pt.next; while(p1.next!=null){ if(pt.number>p1.number) {book s=p1;p1=pt;pt=s; } p1=p1.next; }//比pt所指number小的则交换,p1与ptr一直比较下去直到链表全部都已经比较过了 return pt; }//SelectMinKey public void Selectionsort(SLinkedList L) {//简单选择排序,堆排序是一维数组存储才比较方便 if(L.head==null) System.out.print("Error,linkedlist is empty!"); if(L.head.next==null) System.out.print("Okay!There is only one book"); //以上需要修饰,给出友好互动界面 for(int i=1;i<=Length(L);i++){ //仍以number作为关键字进行排序 book j=null;book p=L.head ; while(i>1){ ; p=p.next; i--; } j=SelectMinKey(L,i); if(p!=j) //链表结点的交换,只需改变指针,改变next域 { book j1=head; book j2=head; while(j1.next!=p){j1=j1.next ;}//利用两个指针j1j2储存指向p和j的next域 while(j2.next!=j){j2=j2.next ;} j1.next=p.next ;j2.next=j.next ;p.next=j2.next;j.next=j1.next ; } } } public static void main(String[] args) { Frame frm=new Frame("SlinkedList!"); frm.setSize(300,200); frm.setLocation(500, 400); Panel pan=new Panel(); pan.setSize(150,100); pan.setLocation(50,50); pan.setBackground(Color.gray ); Button bun=new Button("yes"); bun.setSize(80, 20); bun.setLocation(50, 50); bun.setBackground(Color.yellow ); frm.setLayout(null); pan.setLayout(null); pan.add(bun); frm.add(pan); SLinkedList L=new SLinkedList(); L.addToHead(00,80.2,"AB", "Steven", "xx publishinghouse"); L.index(00); } }//class SLinkedList
大佬们能帮我看看这段代码为什么会显示运行超时吗,感激不尽!
大佬们能帮我看看这段代码为什么会显示运行超时吗,我再devc++上运行没问题,但是上传oj时就超时了,恳请各位大佬帮我看看这是为什么 题目 ![图片说明](https://img-ask.csdn.net/upload/201905/14/1557797414_211145.png) **#include <stdio.h> int main() { int fun(int x); int t,y[11]; int i; int a; scanf("%d",&t); for (i=0;i<=t-1;i++) { scanf("%d",&a); y[i]=fun(a); } for(i=0;i<=t-1;i++) { printf("%d\n",y[i]); } } int fun(int x) { int y,n,m; int sum=0; if(x==10) y=1; else while(x>=1) { sum=sum+x%10; x=x/10; } if(sum>=1&&sum<=9) return (sum); else sum=fun(sum); }**
【python】亲们,看下这段Python单元测试代码该怎么调用啊?
代码如下: #coding=utf-8 import unittest def createsuite(self): testunit=unittest.TestSuite() test_dir="C:\\Users\\***\\Desktop\\myprogram" discover=unittest.defaultTestLoader.discover(test_dir,pattern="test*.py",top_level_dir=None) for test_suite in discover: for test_case in test_suite: testunit.addTest(test_case) print testunit return testunit if __name__=="__main__": runner=unittest.TextTestRunner() runner.run(createsuite) 为什么运行的时候提示:Ran 0 tests in 0.294s,一个测试用例都没运行呢?明明打印输出的testunit是正常的,显示有4条测试用例;估计是下边runner调用的时候出问题了,求大神指导
请问下java高手我这段代码哪出问题了
学习swing时练手写了一段代码 运行时jframe可以运行,但是panel中却无法加载那个文本框,请问这是为什么呢 很不理解,我检查了很长时间都不知道哪错了 先建了一个对象panel,然后通过setContentPane设置panel为中间容器,之后add 加载,甚至我还对照了几个范本,也没找出错误在哪 ``` public static void main(String[] args) { JFrame frame1 = new JFrame(); frame1.setLayout(null); frame1.setBounds(0, 0, 450, 350); frame1.setResizable(false); frame1.setLocationRelativeTo(null); frame1.setVisible(true); frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); frame1.setContentPane(panel); JTextField text = new JTextField(17); text.setBounds(100, 100, 150, 20); panel.add(text,BorderLayout.SOUTH); } ```
java请问这段关于线程的代码出了什么问题?
``` package 线程优先级; import java.awt.*; import javax.swing.*; public class MyThread extends JFrame{ static private Thread thread[]=new Thread[4]; static int k=0; public MyThread(String title) { super(title); Container container=this.getContentPane(); container.setLayout(null); JProgressBar pb[]=new JProgressBar[4]; for(int i=0;i<4;i++) { pb[i]=new JProgressBar(); pb[i].setStringPainted(true); } for(k=0;k<4;k++) { thread[k]=new Thread(new Runnable(){ public void run() { for(int i=0;i<=100;i++) { try{ Thread.sleep(100); }catch(Exception e) { e.printStackTrace(); } ** pb[k].setValue(i);** //这句话似乎是错误的 } } } ); } thread[0].setPriority(5); thread[1].setPriority(5); thread[2].setPriority(4); thread[3].setPriority(3); for(int i=0;i<4;i++) thread[i].start(); this.setSize(400,400); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { new MyThread("线程优先级"); } } ``` 错误提示是数组下标越界,我没找到究竟怎么会越界的?求解
进行对包含整型变量的list进行操作造成计算错误
问题很简单,可以复现。也可能是太久没接触代码的简单问题。 看了一个短视频,说人类的贫富差距28定律,用计算机随机可以发现是一样的。 想了一下觉得并不难实现,所以想要试一下。 思路是循环创建100个包含name和money字段的对象。 并把它们存进list 取随机坐标的两个对象实现一次money的随机数额的交易。 该交易是单向的,一方减少多少,另一方就增加多少。如果要被减少的一方已经是0,便不操作 代码如下: function start() { var objects=new Array(); for(var i=1;i<101;i++){ var object=new Map() ; object.set('name',i); object.set('money',10); objects.push(object) } //这里是单纯为验证当前数组里money的总和是多少这里输出是正常的10000 var moneysxm=0; for(var w=0;w<objects.length;w++){ moneysxm+=objects[w].get('money') } console.log(moneysxm); for(var z=0;z<$('#f').val();z++){ //随机取两个数 var demo1int=sum(0,99); var demo2int=sum(0,99); //获得随机数字对应的数组对象 var demo1object=objects[demo1int]; var demo2object=objects[demo2int]; //获得对象1的金钱数额 var demo1money=demo1object.get('money'); //获得对象2的金钱数额 var demo2money=demo2object.get('money'); console.log(demo1object.get('name')+'##'+demo1money) console.log(demo2object.get('name')+'##'+demo2money) //当该对象金钱数额为0时不作为 //如果两个对象是同一个时不作为 if(demo1money!=0||demo1int!=demo2int){ //获得符合该对象当前金钱范围内的随机支出数额 var demo1zhichu=sum(1,demo1money); //获得对象1的剩余数额 demo1money-=demo1zhichu; //将对象1剩余数额存入数组 objects[demo1int].set('money',demo1money); //获得对象二获得数额后的总数额 demo2money+=demo1zhichu; //将对象2获得数额后的总数额存入数组 objects[demo2int].set('money',demo2money); } console.log(objects[demo1int].get('name')+'##'+objects[demo1int].get('money')); console.log(objects[demo1int].get('name')+'##'+objects[demo2int].get('money')); } var moneysxm=0; for(var s=0;s<objects.length;s++){ moneysxm+=objects[s].get('money') } console.log(moneysxm); //排序 for(var o=0;o<objects.length;o++){ for(var u=0;u<objects.length;u++){ if(objects[o].get('money')<objects[u].get('money')){ var g=objects[o]; objects[o]=objects[u]; objects[u]=g; } } } setobjects=objects; console.log(setobjects); moneysxm=0; for(var q=0;q<setobjects.length;q++){ moneysxm+=setobjects[q].get('money') } console.log(moneysxm); } function sum (m,n){ var num = Math.floor(Math.random()*(m - n) + n); return num; } #f是一个输入框 输入的是循环次数 ![图片说明](https://img-ask.csdn.net/upload/202002/25/1582578096_764127.jpg) 但是问题这段逻辑感觉并没有什么问题,但是问题却出现了 当主要的对象随机交易这段循环走过之后,money的总量发生了变化,循环次数越多,出错概率越大,越离谱 ![图片说明](https://img-ask.csdn.net/upload/202002/25/1582578268_555800.jpg) 由于之前主要做的后端,之所以用js来试,是因为js不用jdk。但是之前调试前端时也总是出现各种各样的问题,最后我怀疑是又遇到了什么莫名其妙的前端都知道的潜在bug 所以决定用相同的逻辑再用java试一下。 java是强类型的,应该不会再出现这种事情了吧。但是显然,我错了。 public class test1234 { public static void main(String[] args) { ArrayList<persion> arrayList = new ArrayList<persion>(); //创建100个对象 for(int i=1;i<101;i++){ persion persion = new persion(); persion.setName(String.valueOf(i)); persion.setMoney(10); arrayList.add(persion); } for(int z=0;z<1000;z++){ //随机取两个数 int demo1int=sum(0,99); int demo2int=sum(0,99); //获得随机数字对应的数组对象 persion demo1object=arrayList.get(demo1int); persion demo2object=arrayList.get(demo2int); //获得对象1的金钱数额 int demo1money=demo1object.getMoney(); //获得对象2的金钱数额 int demo2money=demo2object.getMoney(); //当该对象金钱数额为0时不作为 if(demo1money!=0){ //获得符合该对象当前金钱范围内的随机支出数额 int demo1zhichu=sum(1,demo1money); //获得对象1的剩余数额 demo1money-=demo1zhichu; //将对象1剩余数额存入数组 demo1object.setMoney(demo1money); //获得对象二获得数额后的总数额 demo2money+=demo1zhichu; //将对象2获得数额后的总数额存入数组 demo2object.setMoney(demo2money); } } int moneysxm=0; for(int s=0;s<arrayList.size();s++){ moneysxm+=arrayList.get(s).getMoney(); } System.out.println(moneysxm); } ![图片说明](https://img-ask.csdn.net/upload/202002/25/1582578602_162708.jpg) java也输出了一些令人害怕的money总量 那么肯定是我犯了什么弱智错误了吧,可无论如何也不知道哪里错了,去网上查,大部分计算错误是由于浮点计算造成的,这个我遇到过,但是整型不涉及二进制的缺陷啊。另外我记得list循环不能对对象操作?好像有这个说法?忘了,
外部函数的if结构不起作用
如题,我想要根据输入的字符,用if结构对score进行累加 代码: ``` #include <stdio.h>/*包含头文件*/ extern int add(); extern result(); char option1, option2, option3, option4; extern int score; main() { char option1,option2,option3,option4; int add(); printf("1.你会选择哪种仪式来告别一段旧恋情?\n"); printf("A.开始一段旅行,迎接新的邂逅\n"); printf("B.清理旧物,清空回忆\n"); option1 = getchar(); getchar(); printf("%d\n", score); printf("2.突然有帅哥/美女来搭讪,你的反应?\n"); printf("A.惊喜\n"); printf("B.惊吓\n"); option2 = getchar(); getchar(); printf("%d\n", score); printf("3.关于婚姻与爱情的态度?\n"); printf("A.相爱了,结婚不就是个本么?\n"); printf("B不行!结婚是终身大事,必须慎重\n"); option3 = getchar(); getchar(); printf("%d\n", score); printf("4.你愿意做海王吗?\n"); printf("A.坦然接受,渣一点也无妨\n"); printf("B.果断拒绝,爱的太多是灾难\n"); option4 = getchar(); getchar(); printf("%d\n", score); result(); printf("%c\n", option1); printf("%c\n", option2); printf("%c\n", option3); printf("%c\n", option4); printf("%d",score); } ``` ``` #include<stdio.h> extern char option1, option2, option3, option4; int score = 0; int add() { if (option1 == 'a' || option1== 'A')score = score + 1; if (option2 == 'a' || option2 == 'A')score = score + 1; if (option3 == 'a' || option3 == 'A')score = score + 1; if (option4== 'a' || option4 == 'A')score = score + 1; return score; } ``` ``` #include<stdio.h> extern int score; extern int time; result() { if (score == 4)printf("你对待感情的态度可谓是妥妥的浪啊。因为你的不羁放纵爱自由,你在青年时期烂桃花不断;而随着年岁渐长,人老珠黄的你,也只能哀叹风光不再了!\n"); if (score == 3 )printf("你放浪形骸,但不排斥过平静的生活,因此,在经过渣男/渣女的洗礼后,你也找到了自己的真爱,最终桃花结果!\n"); if (score == 2)printf("你在爱情方面比较中立,既能保持一个人的潇洒,也能享受两个人的甜蜜。你的桃花属于正常,将来很可能遇见对的人,然后相伴一生\n"); if (score == 1)printf("你有些谨慎保守哦!如果把你的同龄人比作可乐,那你就是一壶苦茶,属于徒手撕桃花的存在,不过别担心,迟来的春天总是会来的,中年成熟的魅力会让你离桃花更近一步哦!\n"); if (score == 0 )printf("你...您贵庚哪?看来你已经不适合浪漫的邂逅了,不仅青年没桃花,就连中年看见小情侣秀恩爱你都会觉得肉麻,仿佛对桃花过敏!看来,你还是适合相顾相知,细水长流的黄昏恋啊\n"); } ``` 然而尽管全部输入a,score的值还是没有改变。 ``` 1.你会选择哪种仪式来告别一段旧恋情? A.开始一段旅行,迎接新的邂逅 B.清理旧物,清空回忆 a 0 2.突然有帅哥/美女来搭讪,你的反应? A.惊喜 B.惊吓 a 0 3.关于婚姻与爱情的态度? A.相爱了,结婚不就是个本么? B不行!结婚是终身大事,必须慎重 a 0 4.你愿意做海王吗? A.坦然接受,渣一点也无妨 B.果断拒绝,爱的太多是灾难 a 0 你...您贵庚哪?看来你已经不适合浪漫的邂逅了,不仅青年没桃花,就连中年看见小情侣秀恩爱你都会觉得肉麻,仿佛对桃花过敏!看 来,你还是适合相顾相知,细水长流的黄昏恋啊 a a a a 0 C:\Users\jyz_1\source\repos\Project1\Debug\demo.exe (进程 14256)已退出,代码为 0。 ``` 请问,这是为什么?
C++ 为什么同一段代码第一次提示左操作数必须为左值,改过运行之后再改回原来的,就不提示错误了。
选择排序 template<class T> void selectSort(T a[],int size) { int i,j,k; T tmp; for(i=0;i<size-1;i++) { k=i; for(j=i+1;j<size;j++) { if(a[j]<a[k]) k=j; } tmp=a[i];a[i]=a[k]; a[k]=tmp; } int main() {...} vs2010 第一次编译的时候,会出现error,说左操作数必须为左值,所有的tmp,a[i]的赋值语句都有 错误提示。实在没办法,我不用函数模板了,把template注释掉,T改成int型的,编译通过没有错误。 然后我又加上函数模板,int改回T,也就是完全变成开始的代码,编译也没错误了。 我又试着建了几个类似的项目,发生了同样的问题。这是怎么回事啊。
java 局部变量与全局变量问题
![图片说明](https://img-ask.csdn.net/upload/201612/02/1480676001_341464.png) 整个代码求的是一个文件夹的大小 (文件夹里可能还有文件夹) 用的递归 问题1:原代码是书上例子 结果正确 红色标出的是我自己重写遇到的 结果是很大的负数 按我的理解 size 在方法里面是局部变量 作用整个方法 在外面是类变量 作用整个类 但是在这段代码中应该没什么不同吧,因为我只有一个方法,SIZE意思是固定的 问题2: 第14行的 files != null && 能不能省掉? 代码如下: import java.io.File; import java.util.Scanner; public class Directory{ public static void main(String []args){ System.out.println("Enter a directory of file ") ; Scanner input = new Scanner (System.in); String directory = input.nextLine(); System.out.println(getSize(new File(directory)) + "bytes"); } public static long getSize(File file ){ long size = 0; if (file.isDirectory()){ File[]files = file.listFiles(); for (int i =0;files != null && i<files.length; i++) size+=getSize(files[i]); } else size +=file.length(); return size; } }
求大神帮我看看这段代码,打印完“12345”结束for循环后为什么还能继续运行?新手没金币,抱歉!
public class Test { public static void main(String[] args) { prints(0, 0, 0, 0, 0); } public static void prints(int k1,int k2,int k3,int k4,int k5){ if(k5!=0){ System.out.println(k1*10000+k2*1000+k3*100+k4*10+k5); } for(int i=1;i<=5;i++){ if(k1==0) prints(i,k2,k3,k4,k5); else if(k2==0){ if(i==k1) continue; else prints(k1,i,k3,k4,k5); } else if(k3==0){ if(i==k2||i==k1) continue; else prints(k1,k2,i,k4,k5); } else if(k4==0){ if(i==k3||i==k2||i==k1) continue; else prints(k1,k2,k3,i,k5); } else if(k5==0){ if(i==k4||i==k3||i==k2||i==k1) continue; else prints(k1,k2,k3,k4,i); } } } }
JavaFx Main中怎么绑定Java类中的一个static变量呢?
最近遇到一个很烦的问题,搞了很久搞不定,想请各位帮忙,看看有没有解决的办法,我建了个JavaFx应用程序,Main里面要监测一个Java线程中的一个变量的变化,并把变化呈现出来,我搞了很久也没搞定... [code="java"] var output = Group { content: Text{ x : 550 y : 143 content: bind OutputInfo.getIntance().outputInfo font:Font{ size:30 } } } [/code] 这是Main.fx里面的一小段代码,里面的content内容是绑定到另一个类中的变量 [code="java"] public class OutputInfo { public String outputInfo; private static OutputInfo outputInstance = new OutputInfo("Output:"); OutputInfo(String outputInfo){ this.outputInfo = outputInfo; } public static OutputInfo getIntance() { return outputInstance; } } [/code] 这里就是需要监测的变量outputInfo 我有一个线程,在运行之中把outputInfo改变了 [code="java"] public void run() { DBSession db1 = new DBSession(); DBSession db2 = new DBSession(); //设置隔离级别 1为 TRANSACTION_READ_UNCOMMITTED 2为 TRANSACTION_READ_COMMITTED 4为 TRANSACTION_REPEATABLE_READ 8为 TRANSACTION_SERIALIZABLE db1.setIsolationLevel(value); db2.setIsolationLevel(value); db1.setIsAutoCommit(false); db2.setIsAutoCommit(false); String sql1 = "UPDATE example SET VALUE=2 WHERE id=1"; String sql2 = "UPDATE example SET VALUE=1 WHERE id=2"; String sql3 = "UPDATE example SET VALUE=2 WHERE id=2"; String sql4 = "UPDATE example SET VALUE=1 WHERE id=1"; OutputInfo.getIntance().outputInfo = db1.executeUpdate(sql1); OutputInfo.getIntance().outputInfo = db2.executeUpdate(sql2); OutputInfo.getIntance().outputInfo = db1.executeUpdate(sql3); OutputInfo.getIntance().outputInfo = db2.executeUpdate(sql4); db1.rollback(); db2.rollback(); db1.close(); db2.close(); [/code] 我这上面的executeUpdate方法会返回操作是否成功的信息,并把信息赋给OutputInfo中的outputInfo 我自己感觉我应该写的没错,但是为什么不起作用呢,有没有那个大牛帮忙解决一下困惑,感激不尽! 不一定非要按照我的思路来想办法,其他的办法也行,总之,JavaFx中怎么监测Java类中变量的变化呢?
我的代码虽然写得很业余,但是没报错的情况下为什么连printf都执行不了。
要求从一个字符串里搜寻另一个字符出现的次数。下面是小白的代码。 #include <stdio.h> int main(int argc, const char * argv[]) { char hah[120],haha[120]; int i,j,num=0; printf("sting1 is "); gets(hah); printf("%s\n",hah); printf("string2 is "); gets(haha); printf("%s\n",haha); printf("ooocoo"); //你到底去哪儿了呢? for (i=0; hah[i]!='\0';) { for (j=0; haha[j]!='\0'; ) { if (haha[j]==hah[i]) { i++; j++; } }num++; } printf("\n%d",num); return 0; } 第一次运行结果貌似还是对的。 warning: this program uses gets(), which is unsafe. sting1 is rr rr string2 is r r ooocoo 2Program ended with exit code: 0 第二次运行结果就这样了: warning: this program uses gets(), which is unsafe. sting1 is wakakaka,wsmlaoshi wakakakaka,jiushi buduine wakakaka,wsmlaoshi wakakakaka,jiushi buduine string2 is ka ka 就到输出第二个字符串为止,就连oocooo都不给我输出,这不是摆明欺负菜鸟么,求大神解释。 本来oocooo后面那些代码我另外弄了个函数表示搜寻查找,我以为是调用函数原因,哪知道代码全扔进主函数里它还是不行。 暂时不需要其他的思路解决原题目,我只是想知道我这一段东西错在哪儿了。
CRC校验代码看不懂,请求高手支招。目前我看不懂的一篇CRC校验文章和一套逆序CRC校验。
#各位大神,我看不懂这篇文章还有一段逆序CRC代码。请各位大神帮帮忙: ## 1、文章(链接地址:https://wenku.baidu.com/view/9f7b55876f1aff00bed51ec0.html) 下面为不完全版 CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理解,编程实现简单。用了一天时间研究了CRC的C语言实现,理解和掌握了基本原理和C语言编程。结合自己的理解简单写下来。 1、CRC简介 CRC检验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个检验码r位(就是CRC码),附在信息后面,构成一个新的二进制码序列数共(k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。接收端有两种处理方式:1、计算k位序列的CRC码,与接收到的CRC比较,一致则接收正确。2、计算整个k+r位的CRC码,若为0,则接收正确。 CRC码有多种检验位数,8位、16位、32位等,原理相同。16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(即乘以2的16次方后),除以一个多项式,最后所得到的余数就是CRC码。 求CRC码所采用的是模2运算法则,即多项式除法中采用不带借位的减法运算,运算等同于异或运算。这一点要仔细理解,是编程的基础。 CRC-16: (美国二进制同步系统中采用) G(X) = X16 + X15 + X2 + 1 CRC-CCITT: (由欧洲CCITT推荐) G(X) = X16 + X12 + X5 + 1 CRC-32: G(X) = X32 + X26 + X23 + X22 + X16 +X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X1 + 1 2、按位计算CRC 采用CRC-CCITT多项式,多项式为0x11021,C语言编程时,参与计算为0x1021,这个地方得深入思考才能体会其中的奥妙,分享一下我的思路:当按位计算CRC时,例如计算二进制序列为1001 1010 1010 1111时,将二进制序列数左移16位,即为1001 1010 1010 1111 (0000 0000 0000 0000),实际上该二进制序列可拆分为1000 0000 0000 0000 (0000 0000 0000 0000) + 000 0000 0000 0000 (0000 0000 0000 0000) + 00 0000 0000 0000 (0000 0000 0000 0000) + 1 0000 0000 0000 (0000 0000 0000 0000) + …… 现在开始分析运算: <1>对第一个二进制分序列求余数,竖式除法即为0x10000 ^ 0x11021运算,后面的0位保留; <2>接着对第二个二进制分序列求余数,将第一步运算的余数*2后再和第二个二进制分序列一起对0x11021求余,这一步理解应该没什么问题。如果该分序列为0,无需计算。 <3>对其余的二进制序列求余与上面两步相同。 <4>计算到最后一位时即为整个二进制序列的余数,即为CRC校验码。 该计算方法相当于对每一位计算,运算过程很容易理解,所占内存少,缺点是一位一位计算比较耗时。 下面给出C语言实现方法: 复制代码 代码如下: ## 第一段代码 unsigned char test[16] = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff}; unsigned char len = 16; void main( void ) { unsigned long temp = 0; unsigned int crc; unsigned char i; unsigned char *ptr = test; while( len-- ) { for(i = 0x80; i != 0; i = i >> 1) { temp = temp * 2; if((temp & 0x10000) != 0) temp = temp ^ 0x11021; if((*ptr & i) != 0) temp = temp ^ (0x10000 ^ 0x11021); } ptr++; } crc = temp; printf("0x%x ",crc); } 上面的程序根据运算分析而来,很容易理解。为了节约内存空间,我们对程序作进一步的简化。分析可知,当二进制序列中上一位计算的余数第15bit位为1时,即( 上一位计算的余数 & 0x8000) != 0,计算本位时,上一位余数 * 2后可对0x11021作求余运算,然后再加上本位计算所得余数。这个很好理解,也就是说,打个比方,把它看作简单的除法,计算上一位时的余数乘以2后,如果比较大可以当被除数,就再去除除数求余。有一点和普通除法不同的是,因为多项式除法中采用不带借位的减法运算,所以0x10000也可以被0x11021除,余数并非为0x10000,而是0x1021。这个自己动手算一下就知道了。余数之和也是不带进位的加法运算,即异或。最后还强调一点,因为二进制序列是左移16位后参与运算的,所以,一直算到序列的最后一位也是可以被除的,这点大家要明白。下面给出简化后的C语言实现。 复制代码 代码如下: ## 第二段代码 unsigned char test[16] ={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff}; unsigned char len = 16; void main( void ) { unsigned int crc = 0; unsigned char i; unsigned char *ptr = test; while( len-- ) { for(i = 0x80; i != 0; i = i >> 1) { if((crc & 0x8000) != 0) { crc = crc << 1; crc = crc ^ 0x1021; } else { crc = crc << 1; } if((*ptr & i) != 0) { crc = crc ^ 0x1021; } } ptr++; } printf("0x%x ",crc); } 上面这段程序网上较为常见,但冇得详细的解释。通过我上面的详细分析,如果对此段程序理解还有困难,可以对比一下没简化之前的程序,细细品味一哈,还是比较容易理解的。要是还理解不了,还是从头再看下,我码这么多字容易吗。。。。。 按位计算CRC代码比较简单,所占内存少,但要一位一位去计算,下面再介绍一种按字节查表快速计算CRC的方法。 3、按字节计算CRC 有了上面按位计算的知识,理解这个就是小case了。还是举前面的例子:当字节计算CRC时,例如计算二进制序列为1001 1010 1010 1111时,即0x9a9f时,将二进制序列数左移16位,即为0x9a9f(0 0 0 0),实际上该二进制序列可拆分为0x9a00(0 0 0 0) + 0x009f(0 0 0 0),分析计算时和上面的步骤一样,唯一不同的是计算中上一步的余数CRC要乘以2的八次方参与下一步的运算,这个应该好理解撒。为了简化编程,将计算中的CRC拆成高八位和低八位的形式,高八位的值直接与本位值相加求余,低八位的值乘以2的八次方后作为余数和计算得的余数相加。为了提高计算速度,我们把8位二进制序列数的CRC全部计算出来,放在一个表中,采用查表法可大大提高计算速度。 表是怎么得到的呢?当然是计算出来的,下面的程序给出了多项式是0x11021的计算程序。 复制代码 代码如下: ## 第三段代码 void main( void ) { unsigned int crc = 0; unsigned char i; unsigned int j; for(j = 0; j < 256; j++) { crc = 0; for(i = 0x80; i != 0; i = i >> 1) { if((crc & 0x8000) != 0) { crc = crc << 1; crc = crc ^ 0x1021; } else { crc = crc << 1; } if((j & i) != 0) { crc = crc ^ 0x1021; } } printf("0x"); if(crc < 0x10) { printf("000"); } else if(crc < 0x100) { printf("00"); } else if(crc < 0x1000) { printf("0"); } printf("%x, ",crc); } } 如果你不是使用的0x11021多项式,只需把程序中0x1021换成其他的就可以了。后面的几个printf语句为了控制使生成的表比较整齐,如果无所谓,可直接用printf("0x%x, ",crc);代替。生成的表如下: 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, 好了,我们来写按字节计算的源程序: ## 第六段代码(CRC逆序校验代码) uint8 xCal_crc(uint8 *ptr,uint32 len) { uint8 crc; uint8 i; uint32 lenBak = len; uint8 *ptrBak = ptr; uint32 Debuglen = lenBak; uint8 *Debugptr = ptrBak; char CrcSendBuf[100] = {0}; crc = 0; while(len--) { crc ^= *ptr++; memset(CrcSendBuf, 0, 100); sprintf(CrcSendBuf, "head->crc = %02x \r\n", crc); UartSendString(CrcSendBuf, strlen(CrcSendBuf)); for(i = 0;i < 8;i++) { if(crc & 0x01) { crc = (crc >> 1) ^ 0x8C; } else { crc >>= 1; } } } return crc; }
小白求大神帮忙分析代码。因为刚学没多久,辛苦各位啦!
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; //f,m=24,这个是什么意思啊?为什么要设置等于24? for(int i=3; i<=M; i++) { //这一段循环体又是什么意思呢? f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } }
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
使用 Python 和百度语音识别生成视频字幕
文章目录从视频中提取音频根据静音对音频分段使用百度语音识别获取 Access Token使用 Raw 数据进行合成生成字幕总结 从视频中提取音频 安装 moviepy pip install moviepy 相关代码: audio_file = work_path + '\\out.wav' video = VideoFileClip(video_file) video.audio.write_...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
立即提问