java两个数组比较,相同为1,不同为0;(刚刚没有说明白)

图片说明
刚刚估计描述的不清楚,我用图代替了我说的话。
也就是数组n中的数字 知道有哪些 ----而且最上面的那个用来比较的数字是固定的。

两者的数字比较,也就是equals比较,当数组n中的数字里面含有最上面的那个比较的数字时候,二维数组在对应的地方标1,否者标0;

需要用java代码实现。。刚刚我写的错了,就不献丑了

3个回答

不知道是不是这意思:

 public static void main(String[] args) {
        String[] a={"4","2"};
        String[][] b={{"3","1","5","2"},{"4","5","6","1"}};


        for (int k = 0, countK = b.length; k < countK;++k)
        {
            for (int i = 0, count = b[k].length;i < count;++i)
            {   
                for (int j = 0, countJ = a.length;j < countJ;++j)
                {
                    if (b[k][i].equals(a[j]))
                    {
                        b[k][i] = "1";
                        break;
                    }else if (j == countJ - 1)
                    {
                        b[k][i] = "0";
                    }
                }
            }
        }

        for (int k = 0, countK = b.length; k < countK;++k)
        {
            System.out.println("第" + (k+1) + "个组");
            for (int j = 0, countJ = b[k].length;j < countJ;++j)
            {
                System.out.println("第" + (j+1) + "个元素:" + b[k][j]); 
            }
        }
    }
zhangyanyue2016
唐宋源码清 回复唐宋源码清: 不用多维数组怎么弄。。
3 年多之前 回复
zhangyanyue2016
唐宋源码清 回复seeze: 一次读取所有的啊
3 年多之前 回复
zhangyanyue2016
唐宋源码清 把几个文本中的词都提取出来了,用的hashset ,然后对比这些关键词,是否在这个hashset出现,出现为1,不出来为0 。我看你的代码。。然后不会改.看晕了
3 年多之前 回复
seeze
Zedee 需要数组处理的话也应该一次读取一行,不需要用到多维数组
3 年多之前 回复
seeze
Zedee 回复唐宋源码清: 如果是整个字符串查找的话不用这么复杂,比如"1,2,3,4,5"这种,直接变换为",1,2,3,4,5,"然后字符串查找",1,"这样就行了
3 年多之前 回复
zhangyanyue2016
唐宋源码清 回复seeze: 先读取分割后比较,一个一个文本读取,相当于一个一个数组。这个怎么弄呢?。。对循环太不了解了
3 年多之前 回复
zhangyanyue2016
唐宋源码清 回复seeze: 如果是在多个文本中已经分割好的文本,读取之后,想比较成这样,也是可以的?例如中国 人民 是 优秀 的 人才
3 年多之前 回复
seeze
Zedee 回复唐宋源码清: 不知道有什么好说明的,有什么不懂的直接问吧
3 年多之前 回复
zhangyanyue2016
唐宋源码清 确实实验是对的,能简要说明一下吗?
3 年多之前 回复
zhangyanyue2016
唐宋源码清 谢谢你,我看一下
3 年多之前 回复

你的这个需求,逻辑上有问题。

例如有两个数组String a[2]={"0","1"}
String[2][4] b={{"第一个元素","第二个元素","第三个元素","第四个元素"},{"4","5","6","1"}}

那你会把 数组a和二维数组b的所有元素比较,这时,肯定是会被你认为 “不同”,然后,全部置为 0.

所以,你的结果恒是0

那你会把 数组a和二维数组b的所有元素比较

拿数组a[0],即"0" 和b的所有项比较,b里面是没有 "0"的,所以,第一次循环完了,数组b里面,全部是 "0"了

zhangyanyue2016
唐宋源码清 你看一下我的这次描述,,上次的有点不是啊
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
进行对包含整型变量的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循环不能对对象操作?好像有这个说法?忘了,
求助Java算法,这两个算法问题有Java代码实现
1. 从N个元素集合里面随机抽取M个元素(M<N)。 C/C++: void randomChoose(int*data, intn, int *result, int m); Java: void randomChoose(int data[], int result[]); 说明: 1.Data是待抽取的元素集合,n是data的长度,result是抽取的结果,m是结果集的长度。 2.同一个元素不能被反复抽取。 3.每个元素被抽取到的概率必须相同。 4.不需要自己写随机函数,C版本中允许使用rand()函数,java版本中允许使用Random对象 5.算法效率尽可能高 6.必须要有代码注释和算法说明。 例如:data里面的数据是{3, 4, 9}。n = 3, m = 2。此时result的可能输出结果有{3, 4},{3, 9},{4, 9},{4,3},{9, 3},{9, 4},每种可能的输出概率相同。 2.交换链表的奇偶顺序 函数说明: swap函数交换链表第2i和第2i+1个元素(如果都有的话),并返回交换之后的链表。 示例: 交换前链表的顺序 交换后链表的顺序 1→2→3→4→5 ==> 2→1→4→3→5 1 ==> 1 (链表仅含一个元素) 1→2 ==> 2→1 ==> (链表为空) C/C++: 链表节点定义为: struct node { struct node *next; … }; struct node *swap(struct node *list); Java: 链表节点定义为: class Node { public Node next; … } Node swap(Node list) 注意点和要求如下: 0. swap函数返回新的链表指针 1. swap函数要求对节点的指针/引用进行操作(不得创建任何新的链表节点) 2. 不得使用任何库函数/API,如需使用类似功能, 请自行实现 3. 不得将链表转化为其他类型数据结构再进行交换,如数组等
数字连连看的java代码怎么把随机数改成字母啊
本来按钮上是1-26的随机数字,改成随机字母应该怎么改呢? ![图片说明](https://img-ask.csdn.net/upload/201711/29/1511943957_611428.png) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Llk implements ActionListener { JFrame mainFrame; //主面板 Container thisContainer; JPanel centerPanel,southPanel,northPanel; //子面板 JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮 JLabel fractionLable=new JLabel("0"); //分数标签 JButton firstButton,secondButton; //分别记录两次被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; //判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标 int i,j,k,n;//消除方法控制 public void init(){ mainFrame=new JFrame("数字连连看"); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLayout()); centerPanel=new JPanel(); southPanel=new JPanel(); northPanel=new JPanel(); thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); centerPanel.setLayout(new GridLayout(6,5)); for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){ diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } } exitButton=new JButton("退出"); exitButton.addActionListener(this); resetButton=new JButton("重列"); resetButton.addActionListener(this); newlyButton=new JButton("再来一局"); newlyButton.addActionListener(this); southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(newlyButton); fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()))); northPanel.add(fractionLable); mainFrame.setBounds(280,100,500,450); mainFrame.setVisible(true); } public void randomBuild() { int randoms, cols,rows; for(int twins=1;twins<=15;twins++) { randoms=(char)(int)(Math.random()*25+1); for(int alike=1;alike<=2;alike++) { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]!=0) { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=randoms; } } } public void fraction(){ //计分 fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100)); } public void reload() { int save[] = new int[30]; int n=0,cols,rows; int grid[][]= new int[8][7]; for(int i=0;i<=6;i++) { for(int j=0;j<=5;j++) { if(this.grid[i][j]!=0) { save[n]=this.grid[i][j]; n++; } } } n=n-1; this.grid=grid; while(n>=0) { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]!=0) { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=save[n]; n--; } mainFrame.setVisible(false); pressInformation=false; //这里一定要将按钮点击信息归为初始 init(); for(int i = 0;i < 6;i++){ for(int j = 0;j < 5;j++ ){ if(grid[i+1][j+1]==0) diamondsButton[i][j].setVisible(false); } } } public void estimateEven(int placeX,int placeY,JButton bz) { if(pressInformation==false) { x=placeX; y=placeY; secondMsg=grid[x][y]; secondButton=bz; pressInformation=true; } else { x0=x; y0=y; fristMsg=secondMsg; firstButton=secondButton; x=placeX; y=placeY; secondMsg=grid[x][y]; secondButton=bz; if(fristMsg==secondMsg && secondButton!=firstButton){ xiao(); } } } public void xiao() { //相同的情况下能不能消去。 if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻 remove(); } else{ for (j=0;j<7;j++ ) { if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空 if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮 if (grid[x][i]!=0) { k=0; break; } else{ k=1; } //K=1说明通过了第一次验证 } if (k==1) { linePassOne(); } } if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮 if (grid[x][i]!=0){ k=0; break; } else { k=1; } } if (k==1){ linePassOne(); } } if (y==j ) { linePassOne(); } } if (k==2) { if (x0==x) { remove(); } if (x0<x) { for (n=x0;n<=x-1;n++ ) { if (grid[n][j]!=0) { k=0; break; } if(grid[n][j]==0 && n==x-1) { remove(); } } } if (x0>x) { for (n=x0;n>=x+1 ;n-- ) { if (grid[n][j]!=0) { k=0; break; } if(grid[n][j]==0 && n==x+1) { remove(); } } } } } for (i=0;i<8;i++ ) { //列 if (grid[i][y0]==0) { if (x>i) { for (j=x-1;j>=i ;j-- ) { if (grid[j][y]!=0) { k=0; break; } else { k=1; } } if (k==1) { rowPassOne(); } } if (x<i) { for (j=x+1;j<=i;j++ ) { if (grid[j][y]!=0) { k=0; break; } else { k=1; } } if (k==1) { rowPassOne(); } } if (x==i) { rowPassOne(); } } if (k==2){ if (y0==y) { remove(); } if (y0<y) { for (n=y0;n<=y-1 ;n++ ) { if (grid[i][n]!=0) { k=0; break; } if(grid[i][n]==0 && n==y-1) { remove(); } } } if (y0>y) { for (n=y0;n>=y+1 ;n--) { if (grid[i][n]!=0) { k=0; break; } if(grid[i][n]==0 && n==y+1) { remove(); } } } } } } } public void linePassOne(){ if (y0>j){ //第一按钮同行空按钮在左边 for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮 if (grid[x0][i]!=0) { k=0; break; } else { k=2; } //K=2说明通过了第二次验证 } } if (y0<j){ //第一按钮同行空按钮在与第二按钮之间 for (i=y0+1;i<=j ;i++){ if (grid[x0][i]!=0) { k=0; break; } else{ k=2; } } } } public void rowPassOne(){ if (x0>i) { for (j=x0-1;j>=i ;j-- ) { if (grid[j][y0]!=0) { k=0; break; } else { k=2; } } } if (x0<i) { for (j=x0+1;j<=i ;j++ ) { if (grid[j][y0]!=0) { k=0; break; } else { k=2; } } } } public void remove(){ firstButton.setVisible(false); secondButton.setVisible(false); fraction(); pressInformation=false; k=0; grid[x0][y0]=0; grid[x][y]=0; } public void actionPerformed(ActionEvent e) { if(e.getSource()==newlyButton){ int grid[][] = new int[8][7]; this.grid = grid; randomBuild(); mainFrame.setVisible(false); pressInformation=false; init(); } if(e.getSource()==exitButton) System.exit(0); if(e.getSource()==resetButton) reload(); for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){ if(e.getSource()==diamondsButton[cols][rows]) estimateEven(cols+1,rows+1,diamondsButton[cols][rows]); } } } public static void main(String[] args) { Llk llk = new Llk(); llk.randomBuild(); llk.init(); } }
java连连看数字换图片后重列的问题
我有一个源代码,是只有数字的,然后我加入了调用图片并且修改了一点代码后 不知道为什么点击重列就有问题了。reload函数那里是不是缺了什么,拜托各位大神帮我解决一下了~~~小女子谢过~ 下面是我的代码: import javax.swing.*; //AWT的扩展 import java.awt.*; //抽象窗口工具包 import java.awt.event.*; import java.io.*; class lianliankan implements ActionListener //实现ActionListener接口 { JFrame mainFrame; //主面板 ,JFrame定义的是一个容器,可向里面添加组件 Container thisContainer; //定义一个容器 JPanel centerPanel,southPanel,northPanel; //子面板 ,JPanel是个轻量级容器,可添加入JFrame中 JButton diamondsButton[][] = new JButton[6][5];//定义存储游戏按钮的数组 JButton exitButton,resetButton,newlyButton; //定义退出,重列,重新开始按钮 JLabel fractionLable=new JLabel("0"); //定义分数标签,并初始化为0. JButton firstButton,secondButton; //分别记录两次先后被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; // 声明了一个静态布尔类型的变量,判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标 int i,j,k,n;//消除方法控制 //调用图片// private static Icon[] icons=new ImageIcon[6*6]; private static final String imgDir="c:/宠物连连看"; static{ try { File dir=new File(imgDir); File[] imgFiles=dir.listFiles(new FilenameFilter(){ public boolean accept(File dir,String name){ return name.toLowerCase().endsWith(".jpg"); } }); for(int i=0;i<10*10;i++){ icons[i]=new ImageIcon(imgFiles[i].getAbsolutePath()); } }catch(Exception e){ e.printStackTrace(); } } public void init(){ //init方法 mainFrame=new JFrame("连连看"); //定义主面板为命名为“连连看”的JFrame容器 thisContainer = mainFrame.getContentPane(); //初始化mainFrame. thisContainer.setLayout(new BorderLayout()); //定义布局为东西南北中的形式 centerPanel=new JPanel(); //初始化centerPanel southPanel=new JPanel(); //初始化southPanel northPanel=new JPanel(); //初始化northPanel thisContainer.add(centerPanel,"Center"); //将centerPanel加入mainFrame中的Center位置 thisContainer.add(southPanel,"South"); //将southPanel加入mainFrame中的South位置 thisContainer.add(northPanel,"North"); //将northPanel加入mainFrame中的North位置 centerPanel.setLayout(new GridLayout(6,5)); //将centerPanel初始化为6*5的网格布局 for(int cols = 0;cols < 6;cols++){ //依次对第0列到第5列进行操作 for(int rows = 0;rows < 5;rows++ ){ //依次对第0行到第4行进行操作 diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));//新建按钮 diamondsButton[cols][rows]=new JButton(icons[grid[cols+1][rows+1]-1]); diamondsButton[cols][rows].addActionListener(this);//向此按键添加动作监听以接收来自它的动作 centerPanel.add(diamondsButton[cols][rows]);//将按键添加到centerPanel中 } } exitButton=new JButton("退出"); //新建“退出”按钮 exitButton.addActionListener(this); //向“退出”按钮添加事件监听 exitButton.setPreferredSize(new Dimension(150, 50)); exitButton.setFont(new Font("黑体", Font.PLAIN, 25)); //exitButton.setForeground(Color.red); //exitButton.setBackground(Color.white); resetButton=new JButton("重列"); //新建“重列”按钮 resetButton.addActionListener(this); //向“重列”按钮添加事件监听 resetButton.setPreferredSize(new Dimension(150, 50)); resetButton.setFont(new Font("黑体", Font.PLAIN, 25)); newlyButton=new JButton("再来一局"); //新建“再来一局”按钮 newlyButton.addActionListener(this); //向“再来一局”按钮添加事件监听 newlyButton.setPreferredSize(new Dimension(150, 50)); newlyButton.setFont(new Font("黑体", Font.PLAIN, 25)); southPanel.add(exitButton); //将“退出”按钮添加到southPanel southPanel.add(resetButton); //将“重列”按钮添加到southPanel southPanel.add(newlyButton); //将“再来一局”按钮添加到southPanel fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()))); northPanel.add(fractionLable); //将“分数”标签加入northPanel fractionLable.setPreferredSize(new Dimension(50,50)); fractionLable.setFont(new Font("黑体", Font.PLAIN, 25)); mainFrame.setBounds(280,100,1000,950); // x:X轴上的起点 ,y:Y轴上的起点 , width:长度, height:宽度 mainFrame.setVisible(true); //框架可见 } public void randomBuild() { int randoms,cols,rows; for(int twins=1;twins<=15;twins++) { randoms=(int)(Math.random()*25+1); //在1-25之间随机产生一个数字 for(int alike=1;alike<=2;alike++) { cols=(int)(Math.random()*6+1); //选中一个网格 rows=(int)(Math.random()*5+1); while(grid[cols][rows]!=0) { cols=(int)(Math.random()*6+1); //如果该格已经存在数字,则重新选择网格 rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=randoms; //将随机产生的数字放入网格中 } } } public void fraction(){ fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));//在原有数字上加100分 } public void reload() { int save[] = new int[30]; int n=0,cols,rows; int grid[][]= new int[8][7]; for(int i=0;i<=6;i++) { for(int j=0;j<=5;j++) { if(this.grid[i][j]!=0) { save[n]=this.grid[i][j]; //将现在任然存在的数字存入save中 n++; } } } n=n-1; this.grid=grid; while(n>=0) { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); //重新选择格子 while(grid[cols][rows]!=0) { cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); //如果格子非空,则重新选择格子 } this.grid[cols][rows]=save[n];//将save中的数字放入所选择的的格子中 n--; } mainFrame.setVisible(false); pressInformation=false; //这里一定要将按钮点击信息归为初始 init(); //调用init for(int i = 0;i < 6;i++){ for(int j = 0;j < 5;j++ ){ if(grid[i+1][j+1]==0) //如果格子的值为0 diamondsButton[i][j].setVisible(false); //则按键不可见 } } } public void estimateEven(int placeX,int placeY,JButton bz) { if(pressInformation==false) //尚未有按键被选中 { x=placeX; y=placeY; secondMsg=grid[x][y]; //将该键的值存储到secondMsg secondButton=bz; //令secondButton为按下的键 pressInformation=true; //标示已经有键被选中 } else { //已经有按键被选中 x0=x; //将second中的值转存到first y0=y; fristMsg=secondMsg; firstButton=secondButton; x=placeX; y=placeY; //将该键存入second secondMsg=grid[x][y]; secondButton=bz; if(fristMsg==secondMsg && secondButton!=firstButton){ //如果两个格子数字相等且格子不相同 xiao(); //调用xiao方法 } } } public void xiao() { if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻 remove(); //调用remove } else{ for (j=0;j<7;j++ ) { if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空 if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮 if (grid[x][i]!=0) { k=0; break; } else{ k=1; } //K=1说明通过了第一次验证 } if (k==1) { linePassOne(); } } if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮 if (grid[x][i]!=0){ k=0; break; } else { k=1; } } if (k==1){ linePassOne(); } } if (y==j ) { linePassOne(); } } if (k==2) { if (x0==x) { remove(); } if (x0<x) { for (n=x0;n<=x-1;n++ ) { if (grid[n][j]!=0) { k=0; break; } if(grid[n][j]==0 && n==x-1) { remove(); } } } if (x0>x) { for (n=x0;n>=x+1 ;n-- ) { if (grid[n][j]!=0) { k=0; break; } if(grid[n][j]==0 && n==x+1) { remove(); } } } } } for (i=0;i<8;i++ ) { //列 if (grid[i][y0]==0) { if (x>i) { for (j=x-1;j>=i ;j-- ) { if (grid[j][y]!=0) { k=0; break; } else { k=1; } } if (k==1) { rowPassOne(); } } if (x<i) { for (j=x+1;j<=i;j++ ) { if (grid[j][y]!=0) { k=0; break; } else { k=1; } } if (k==1) { rowPassOne(); } } if (x==i) { rowPassOne(); } } if (k==2){ if (y0==y) { remove(); } if (y0<y) { for (n=y0;n<=y-1 ;n++ ) { if (grid[i][n]!=0) { k=0; break; } if(grid[i][n]==0 && n==y-1) { remove(); } } } if (y0>y) { for (n=y0;n>=y+1 ;n--) { if (grid[i][n]!=0) { k=0; break; } if(grid[i][n]==0 && n==y+1) { remove(); } } } } } } } public void linePassOne(){ if (y0>j){ //第一按钮同行空按钮在左边 for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮 if (grid[x0][i]!=0) { k=0; break; } else { k=2; } //K=2说明通过了第二次验证 } } if (y0<j){ //第一按钮同行空按钮在与第二按钮之间 for (i=y0+1;i<=j ;i++){ if (grid[x0][i]!=0) { k=0; break; } else{ k=2; } } } } public void rowPassOne(){ if (x0>i) { for (j=x0-1;j>=i ;j-- ) { if (grid[j][y0]!=0) { k=0; break; } else { k=2; } } } if (x0<i) { for (j=x0+1;j<=i ;j++ ) { if (grid[j][y0]!=0) { k=0; break; } else { k=2; } } } } public void remove(){ firstButton.setVisible(false); //第一个按键不可见 secondButton.setVisible(false); //第二个按键不可见 fraction(); //调用fraction, 在当前分数上加100分 pressInformation=false; //使该静态变量还原为false k=0; grid[x0][y0]=0; //清除该游戏按钮 grid[x][y]=0; //清除该游戏按钮 } public void actionPerformed(ActionEvent e) { if(e.getSource()==newlyButton){ //如果newlyButton产生动作 int grid[][] = new int[8][7]; //产生新的存储按键的数组 this.grid = grid; randomBuild(); //调用randomBuild mainFrame.setVisible(false); //使当前mainFrame不可见 pressInformation=false; //使该静态变量还原为false init(); //调用init } if(e.getSource()==exitButton) //如果exitButton产生动作 System.exit(0); //退出程序 if(e.getSource()==resetButton) //如果resetButton产生动作 reload(); //调用reload for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){ if(e.getSource()==diamondsButton[cols][rows]) //如果游戏按键产生动作 estimateEven(cols+1,rows+1,diamondsButton[cols][rows]); //调用estimateEven } } } public static void main(String[] args) { lianliankan llk = new lianliankan(); //初始化 llk.randomBuild(); //调用randomBuild llk.init(); //调用init } } ![图片说明](https://img-ask.csdn.net/upload/201606/18/1466244507_872958.png)
如何快速从大量图片中,查找出相似图片
1 需求:学员的训练图片,经常有几百张,要求从几百张找出很类似的图片,展现在页面 2 方法:采用计算“汉明距离”来计算图片的相似度 /** * 计算"汉明距离"(Hamming distance)。 * 如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。 * @param sourceHashCode 源hashCode * @param hashCode 与之比较的hashCode */ public static int hammingDistance(String sourceHashCode, String hashCode) { int difference = 0; int len = sourceHashCode.length(); for (int i = 0; i < len; i++) { if (sourceHashCode.charAt(i) != hashCode.charAt(i)) { difference ++; } } return difference; } /** * 生成图片指纹 * @param filename 文件名 * @return 图片指纹 */ public static String produceFingerPrint(String filename) { BufferedImage source = ImageHelper.readPNGImage(filename);// 读取文件 int width = 8; int height = 8; // 第一步,缩小尺寸。 // 将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。 BufferedImage thumb = ImageHelper.thumb(source, width, height, false); // 第二步,简化色彩。 // 将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。 int[] pixels = new int[width * height]; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { pixels[i * height + j] = ImageHelper.rgbToGray(thumb.getRGB(i, j)); } } // 第三步,计算平均值。 // 计算所有64个像素的灰度平均值。 int avgPixel = ImageHelper.average(pixels); // 第四步,比较像素的灰度。 // 将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。 int[] comps = new int[width * height]; for (int i = 0; i < comps.length; i++) { if (pixels[i] >= avgPixel) { comps[i] = 1; } else { comps[i] = 0; } } // 第五步,计算哈希值。 // 将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。 StringBuffer hashCode = new StringBuffer(); for (int i = 0; i < comps.length; i+= 4) { int result = comps[i] * (int) Math.pow(2, 3) + comps[i + 1] * (int) Math.pow(2, 2) + comps[i + 2] * (int) Math.pow(2, 1) + comps[i + 2]; hashCode.append(binaryToHex(result)); } // 得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。 return hashCode.toString(); } public static void main(String args[]){ String srcFile = "E:\\src.jpg"; String descFile = "E:\\src.jpg"; String srcHashCode = produceFingerPrint(srcFile); String descHashCode = produceFingerPrint(srcFile); int diff = hammingDistance(srcHashCode, descHashCode); if(diff == 0) System.out.println("两张图片一样"); } 3 问题:两种图片比对大约几百MS,几百张图片循环比对花费时间太长,有什么方式提高效果?
求强连通分量入门题hdu1269迷宫城堡wa掉了大神帮忙看看
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17155 Accepted Submission(s): 7507 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间。Gardon需要请你写个程序确认一下是否任意两个房间都是相互连通的,即:对于任意的i和j,至少存在一条路径可以从房间i到房间j,也存在一条路径可以从房间j到房间i。 Input 输入包含多组数据,输入的第一行有两个数:N和M,接下来的M行每行有两个数a和b,表示了一条通道可以从A房间来到B房间。文件最后以两个0结束。 Output 对于输入的每组数据,如果任意两个房间都是相互连接的,输出"Yes",否则输出"No"。 Sample Input 3 3 1 2 2 3 3 1 3 3 1 2 2 3 3 2 0 0 Sample Output Yes No 下面是我写了 注释是我自己理解的不知道对不对 求指点! import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; public class Main { private static int n; private static int m; private static int[] dfn; private static int[] low; private static int time; private static Stack<Integer> stack; private static int sum; private static ArrayList[] list; public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { scn(scanner);//输入 bud(); //算法 out(); //输出 } } private static void out() { // TODO 自动生成的方法存根 if (sum==1) { System.out.println("Yes"); }else { System.out.println("No"); } } private static void bud() { dfn = new int [n+1];//次序数组 low = new int [n+1];//记录此点所能到达最早栈中的值 time = 0;//时间戳 sum = 0;//记录此图有几个强连通分量 stack = new Stack<Integer>(); //强连通分量一定是个环 此栈相当于这个环中的任意一条弧 Targan_bfs(1); } private static void Targan_bfs(int i) { dfn[i] = low[i] = ++time;//low先初始跟次序相同 stack.push(i);//将点i压入栈 //之后进行bfs搜索 枚举每一种成环的可能 for (int j = 0; j <list[i].size() ; j++) { int k= (int) list[i].get(j); if(dfn[k]==0){ Targan_bfs(k); low[i] = Math.min(low[i], low[k]); //如果进行了递归存在下一个连通点并且这点不在栈里 //那么根据low的定义 low = min{low[i],low[k]} }else { low[i] = Math.min(low[i], dfn[k]); //不进行递归那么表示下一个连通点在栈中 //根据low的的定义 low = min{low[i],dnf[k]} } } if (low[i]==dfn[i]) { //当low[i]=dfn[i]表示他自身构成了环 所以他是一个独立的连通分量 sum ++;int k = 0; //为什么循环出栈呢 //如果所有的点都相互连通那么在最后搜到的点low【最后】=low【首先】 //同理 每当你找到一个强连通分量那么请都弹出去 do { k = stack.pop(); } while (low[k]!=dfn[k]&&!stack.isEmpty()); } } private static void scn(Scanner scanner) { n = scanner.nextInt(); m = scanner.nextInt(); if(n==0&&m==0){java.lang.System.exit(0);} list = new ArrayList[n+1]; for(int i=0;i<=n;i++){list[i]=new ArrayList<Integer>();} for (int i = 0; i <m; i++) { int a = scanner.nextInt(); int b = scanner.nextInt(); list[a].add(b); } } }
(Java WEB)http-404,新手卡着好几天了。
最近改写别人的Java Web项目练习,遇到这个问题卡着两三天了。 ![图片说明](https://img-ask.csdn.net/upload/201705/10/1494384669_341338.png) 以下是JSP代码 ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>left</title> <base target="body"/> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script> <script type="text/javascript" src="<c:url value='/menu/mymenu.js'/>"></script> <link rel="stylesheet" href="<c:url value='/menu/mymenu.css'/>" type="text/css" media="all"> <link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/left.css'/>"> <script language="javascript"> /* * 1. 对象名必须与第一个参数相同! 2. 第二个参数是显示在菜单上的大标题 */ var bar = new Q6MenuBar("bar", "仙林大学城网上书城"); $(function() { bar.colorStyle = 4;//指定配色样式,一共0,1,2,3,4 bar.config.imgDir = "<c:url value='/menu/img/'/>";//小工具所需图片的路径 bar.config.radioButton=true;//是否排斥,多个一级分类是否排斥 /* 1. 程序设计:一级分类名称 2. Java Javascript:二级分类名称 3. /goods/jsps/book/list.jsp:点击二级分类后链接到的URL 4. body:链接的内容在哪个框架页中显示 */ <c:forEach items="${parents}" var="parent"> <c:forEach items="${parent.children}" var="child"> bar.add("${parent.cname}", "${child.cname}", "/goods/BookServlet?method=findByCategory&cid=${child.cid}", "body"); </c:forEach> </c:forEach> $("#menu").html(bar.toString()); }); </script> </head> <body> <div id="menu"></div> </body> </html> ``` 以下servlet代码 ``` package cn.itcast.goods.book.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.itcast.commons.CommonUtils; import cn.itcast.goods.book.domain.Book; import cn.itcast.goods.book.service.BookService; import cn.itcast.goods.pager.PageBean; import cn.itcast.servlet.BaseServlet; public class BookServlet extends BaseServlet { private BookService bookService = new BookService(); /** * 获取当前页码 * * @param req * @return */ private int getPc(HttpServletRequest req) { int pc = 1; String param = req.getParameter("pc"); if (param != null && !param.trim().isEmpty()) { try { pc = Integer.parseInt(param); } catch (RuntimeException e) { } } return pc; } /** * 截取url,页面中的分页导航中需要使用它做为超链接的目标! * * @param req * @return */ /* * http://localhost:8080/goods/BookServlet?methed=findByCategory&cid=xxx&pc=3 * /goods/BookServlet + methed=findByCategory&cid=xxx&pc=3 */ private String getUrl(HttpServletRequest req) { String url = req.getRequestURI() + "?" + req.getQueryString(); /* * 如果url中存在pc参数,截取掉,如果不存在那就不用截取。 */ int index = url.lastIndexOf("&pc="); if (index != -1) { url = url.substring(0, index); } return url; } /** * 按bid查询 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String load(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String bid = req.getParameter("bid");//获取链接的参数bid Book book = bookService.load(bid);//通过bid得到book对象 req.setAttribute("book", book);//保存到req中 return "f:/jsps/book/desc.jsp";//转发到desc.jsp } /** * 按分类查 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByCategory(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String cid = req.getParameter("cid"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByCategory(cid, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 按作者查 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByAuthor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String author = req.getParameter("author"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByAuthor(author, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 按出版社查询 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByPress(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String press = req.getParameter("press"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByPress(press, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 按图名查 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByBname(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String bname = req.getParameter("bname"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByBname(bname, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 多条件组合查询 * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByCombination(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ Book criteria = CommonUtils.toBean(req.getParameterMap(), Book.class); PageBean<Book> pb = bookService.findByCombination(criteria, pc); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } } ``` 以下是web.xml相关配置 ``` <servlet> <servlet-name>BookServlet</servlet-name> <servlet-class>cn.itcast.goods.book.web.servlet.BookServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>BookServlet</servlet-name> <url-pattern>/BookServlet</url-pattern> </servlet-mapping> ``` 相关文件位置 ![图片说明](https://img-ask.csdn.net/upload/201705/10/1494385059_583764.png)
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
mybaties 中 根据两个字段进行自关联分组并查询信息
![图片说明](https://img-ask.csdn.net/upload/201712/04/1512355249_392639.png) 上边是表的字段。实体类都是表明,本身是打算先查出分类,然后再根据分类查询对应的信息 但是使用group by 的话 mybatis中的 resultType该怎么填写啊 我记得可以使用自关联一步到位,sql语句倒是出来了。映射文件该怎么写还没头绪 我是打算根据screenWidth和screenHeight 进行分组并查询到宽高相同的并获取同 组的每条信息
OpenGL(ES版)为什么用文件导入的数据进行三维绘制会失败?
同样两个数组,只不过一个是在程序语句中赋值的,一个是从文件导入数值的。已经用测试类确定了他们是相同的:![图片说明](https://img-ask.csdn.net/upload/201702/12/1486882640_541686.png) 但是一个渲染的结果是这样的(正常版本) :![图片说明](https://img-ask.csdn.net/upload/201702/12/1486882874_703978.png) 导入的数组渲染出来的是这样的(失败版):![图片说明](https://img-ask.csdn.net/upload/201702/12/1486882662_319665.png) ![图片说明](https://img-ask.csdn.net/upload/201702/12/1486882670_390462.png) WTF?会是哪出了问题?
viewPager滑动浏览一组大图,滑动倒数第二张时请求新数据追加数据
* 在listView中点击例如“美女图片”后打开一个largeActivity; * largeActivity中有一个viewPager实现左右滑动浏览大图; * 在largeActivity打开的时候会通过okHttp从服务器请求一组5张图片链接,图片通过glide加载在viewPager中实现左右滑动浏览; * 因为每次网络请求只能返回5张图片链接,所以我在监听每次滑动viewPager的时候判断当前 postion小于存储图片链接的imageList.size() -1的时候,也就是每次滑动到倒数第二张的时候去网络请求下一组图片的链接; * 然后通过add将新请求到的图片链接添加进imageList,然后再执行一次pagerAdapter.notifyDataSetChanged()来实现viewPager继续滑动浏览新请 求到的图片。 > 现在问题是如果用户以正常速度滑动viewPager来浏览每张图片的时候是没有任何问题的,但是如果用户飞速滑动viewPager的进行浏览的时候就会出现在某一次请求新数据后就会出现APP崩溃的情况;错误信息在两部不同的手机上报错不一样,但是都是在相同的情况下崩溃。Google遍都没有找到解决办法 **华为荣耀报错如下:** ![图片说明](https://img-ask.csdn.net/upload/201703/21/1490110449_933152.jpg) > 通过华为手机的报错在网上找到通过设置 android:hardwareAccelerated="false"来关闭硬件加速的办法,但是通过测试在快速滑动时还是会导致APP崩溃自动重启的情况 **乐视max2报错如下:** ``` 03-21 05:42:44.071 18730-18730/com.abcd.reader.abcdreader E/InputEventReceiver: Exception dispatching input event. 03-21 05:42:44.071 18730-18730/com.abcd.reader.abcdreader E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback 03-21 05:42:44.084 18730-18730/com.abcd.reader.abcdreader E/MessageQueue-JNI: java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 25, found: 30 Pager id: com.abcd.reader.abcdreader:id/vp_pager Pager class: class android.support.v4.view.ViewPager Problematic adapter: class com.abcd.reader.abcdreader.adapter.FollowDetailViewPagerAdapter ``` > 通过乐视手机的报错怀疑是当新请求的数据add进imageList后,但是还没来得及执行notifyDataSetChanged,刚好在这时用户在滑动viewPager的时候导致的;为了验证猜测我修改了在当前 postion小于存储图片链接的imageList.size() -2的时候,也就是每次滑动到倒数第三张的时候去网络请求下一组图片的链接;给imageList.add和notifyDataSetChanged预留了充分的执行时间,这时候再次测试问题消失,华为手机和乐视手机均没有再出现APP崩溃重启的情况 > 但是我这个服务器请求回来的数据是不固定的,有时候可能每次返回5条,有时候10条,有时候只有1条,所以我现在的解决办法并不能彻底解决烦请老师们给予指点一二,万分感谢!
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
【资源】一个C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔)【内附资源页】
声明: 1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐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岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻… 作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候,就被它的美貌给吸引住了… 就在我用了一段时间之后,我坚决的卸载了电脑上其它碍眼的浏览器,并觉得在之前的搬砖生涯中,我不配当哥,我只配是个沙雕… ...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞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 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
从顶级黑客到上市公司老板
一看标题,很多老读者就知道我在写什么了。今天Ucloud成功上市,季昕华成为我所熟悉的朋友里又双叒叕一个成功上市的案例。我们认识大概是十五年多吧,如果没记错,第一次见面应该是2004年,...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
立即提问