Class<? extends |X|>,这段语句什么意思?

public final Class<?> getClass()
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass。 例如,以下代码片段中不需要强制转换:
Number n = 0;
Class<? extends Number> c = n.getClass();
返回:
表示此对象运行时类的 Class 对象。

Class<? extends |X|>;什么意思??问号代表啥???

1个回答

 表示这是一个泛型方法,返回一个 Class<XXX> 类型,而这个XXX必须是Number类的派生类。
wb_snail
wb_snail 回复suwu150: 当然可以,是泛型的一种扩展,在原来<T>的基础上加了一个边界约束,共有两种,上边界和下边界,分别是<? extends T>表示泛型类必须为T或者其子类 和<? super T>表示泛型类必须是T或者其父类,相比<T>多加了一个约束
3 年多之前 回复
suwu150
suwu150 程序中能不能这样使用??这样呢CLass<?>,今天怎么看见过后面这种,一直搞不懂??
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
struts2中控制器中if语句判断前端传来值总是结果失败问题

struts2的控制器的代码: ``` package cn.web.action; import com.opensymphony.xwork2.ActionSupport; import cn.web.daoimp.UserDaoImp; import cn.web.service.Users; public class UserAction extends ActionSupport { private String username; private String password; public UserAction(){} public UserAction(String username,String password){ this.username=username; this.password=password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String execute() throws Exception{ UserDaoImp userimp = new UserDaoImp(); // User user=new User(); Users u =new Users(1,username,password); // users.setId(1); // users.setUsername(username); // users.setPassword(password); System.out.println(username); System.out.println(password); if ("a".equals(username)&&"a".equals(password)){ return "error"; } else { return "success"; } } /* * 有一段代码 * */ } ``` execute()方法中的数据当用户名和密码都是a的时候应该跳转到error.jsp 但是无论输入什么值跳转的都是else语句中的success.jsp 这到底是怎么回事

一个典型的问题,关于继承成员内部类的子类的构造函数

初学JAVA,没有C币,但是希望大家能够帮忙解决一下问题: 先上代码: ``` package Test; public class test9 { public static void main(String[] args){ Outer outer=new Outer("test"); new Extender(outer,10); } } class Outer{ public Outer(String str){} class Inner{ public Inner(){} public Inner(int a){ System.out.println("Inner class has been created"); } } } class Extender extends Outer.Inner{ public Extender(Outer outer,int a){ //outer.super(a); //语句1 outer.new Inner(a); //语句2 } } ``` 问题出在对Extender类的构造函数的定义上: 之前都一直习惯,直接在构造函数的首行显示引用超构造函数,但是也是一知半解。前几天突然发现这个问题: 我们都知道,super这个关键字其实就是代替了一段字符串“new 父类名”,所以我就想既然用“outer.super(a)”能够编译通过,那“outer.new Inner(a)”应该也能编译通过,于是我做了以下几个实验: 1、执行语句1,不执行语句2:编译通过,打印出“Inner class has been created" 2、执行语句1,也执行语句2:编译通过,打印出两行“Inner class has been created” 3、不执行语句1,执行语句2:编译不通过,报错:“由于某些中间构造函数调用,没有任何类型 Outer 的外层实例可用” 我想不明白的就是,既然实验2中,new outer.Inner(a)能够创建对象成功,为什么在实验3里面,单独运行时就报错呢???

java继承 在子类中声明同名变量的问题???

如下代码: ``` class Person { String name; int age; public void introduce(){ System.out.println("姓名是" + name + ",年龄是" + age); } } public class Students extends Person{ // String name; public static void main(String[] args) { Students students = new Students(); students.name = "小明"; students.age = 24; students.introduce(); } } ``` 这段代码执行结果打印 姓名是小明,年龄是24 但是把那行注释语句加上的话 打印结果是姓名是null,年龄是24 为什么呢? 貌似有继承中变量的覆盖或者说是隐藏的问题,不是很理解,求助了。

用java建立一个screen,如何在这个screen里面上传视频

如题,小弟新学java, 现在要建立一个screen,在这个screen里面上传视频,然后如果其他的class想要播放这个视频,就可以调用这个screen的screenID即可。在网上查到好多通过extends JFrame的方法来插入视频,但是很少有如何通过建立screen来插入视频的资料,所以特来请教各位大牛。奉上代码,小弟新手上路,所以代码中有很多问题,比如mediaPlayer这个类就从来没有被使用过等等。希望各位前辈能告知,我需要怎么更改才可以成功在这个screen里面插入这段视频?或者如果这段代码实在没有修改的价值,能否拜托诸位大神帮助重写?拜托拜托!多谢多谢! P.S. class mediaPlayer extends JFrame 之前的语句都是Screen这个superclass 里面的规定,比如一个screen必须要有screenID,parameter等。 import java.awt.BorderLayout; import javax.print.DocFlavor.URL; import javax.swing.JFrame; import com.sun.xml.internal.ws.api.Component; import edu.kit.exp.client.gui.screens.Screen; public class FXTest1 extends Screen { public static class ParamObject extends Screen.ParamObject { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 333L; /** The message. */ private String message; /** * This method gets a info message. * * @return the message */ public String getMessage() { return message; } /** * This method sets a info message. * * @param message * The new message. */ public void setMessage(String message) { this.message = message; } /** * This constructor instantiates a new ParamObject. */ public ParamObject() { } /** * This constructor instantiates a new ParamObject with an info message * as a parameter. * * @param message * A String which contains a message. */ public ParamObject(String message) { this.message = message; } } /** The Constant serialVersionUID. */ private static final long serialVersionUID = 3333L; public FXTest1(String gameId, ParamObject parameter, String screenId, Long showUpTime) { super(gameId, parameter, screenId, showUpTime); class mediaPlayer extends JFrame { private static final long serialVersionUID = 2L; public mediaPlayer() { setLayout(new BorderLayout()); URL mediaURL = new URL("file:/C:/Users/DellAd-ad/Desktop/preCalibration1.mp4"); Player mediaPlayer= Manager.createRealizedPlayer(mediaURL); Component video = mediaPlayer.getVisualComponent(); Component controls = mediaPlayer.getControlPanelComponent(); add(video,BorderLayout.CENTER); add(controls,BorderLayout.SOUTH); } private void add(Component video, String center) { // } } } }

java的多态会极大影响速度吗?

给出以下代码和运行结果,盼各位指点。。。。。。 对于接口A,抽象类B,一般类C,各自只有一个共同的方法,通过get()方法返回一个值 设计另外三个类:AA实现接口A,BB继承抽象类B,CC继承一般类C 设计test()方法,初始化三个类后,执行各个对象中的get()方法1000000000次,在形如B b = new BB()的前提下,通过b.get()样式运行后时间消耗远远大于通过((BB)b).get()循环的时间消耗,其他几个类似,代码附下 哪位能给出个比较详细的解释吗? [code="java"]package cn.edu.uestc.dmlab.clusterers.dbscan; public class InheritancePerformanceTest { interface A { public int get(); } abstract class B { public abstract int get(); } class C { public int get() {return 2;} } class AA implements A { @Override public int get() {return 1;} } class BB extends B { @Override public int get() {return 1;} } class CC extends C { @Override public int get() {return 1;} } public void test() { A a = new AA(); B b = new BB(); C c = new CC(); int s = 1000000000; long t =System.currentTimeMillis(); System.out.println("--start--"); for (int i = 0; i < s; i++) { get(); } System.out.println("this: \t" + (System.currentTimeMillis()-t)); System.out.println("\n- polymorphism -----------"); t =System.currentTimeMillis();; for (int i = 0; i < s; i++) { a.get(); } System.out.println("implements interface: \t"+(System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { b.get(); } System.out.println("extends abstract: \t"+ (System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { c.get(); } System.out.println("extends class: \t"+ (System.currentTimeMillis()-t)); System.out.println("\n-no polymorphism -----------"); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { ((AA)a).get(); } System.out.println("implements interface: \t"+ (System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { ((BB)b).get(); } System.out.println("extends abstract: \t"+ (System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { ((CC)c).get(); } System.out.println("extends class: \t"+ (System.currentTimeMillis()-t)); System.out.println("\n--end--"); } public int get() { return 1; } public static void main(String[] args) { InheritancePerformanceTest a = new InheritancePerformanceTest(); a.test(); } } [/code] [b]问题补充:[/b] to jansel: 调换过了也一样,由于结果不在一个数量级,所以先后顺序并不会影响多少。谢谢回答。 [b]问题补充:[/b] 另外,这里并不是突发奇想来测试这个,确实是在编写一个算法的时候感觉到了时间消耗的巨大差军,才专门做这个试验以求根本性解释问题,指导试验,请各位指点。谢谢! [b]问题补充:[/b] to qqxiaodi: 请问需要加什么样的“清理语句”呢?谢谢! to lovewhzlq: 不好意思,我没从那些文章里看出关于这段代码问题的所以然来,麻烦你能不能解释下我的测试为什么有问题呢?谢谢! [b]问题补充:[/b] 另外,整个实验就在于使用b.get()方法和((BB)b).get()方法的区别,代码顺序可以随便变换,也可以分成两个来测试 由于使用b.get()时间消耗和使用((BB)b).get()差距在5倍以上,所以我觉得跟机器的关系不大,由代码来看,跟垃圾收集也应该没多大关系。 [b]问题补充:[/b] to walsh: 很奇怪你的测试结果,我当然不会随便测试一下就拿上来请教大家,而是分别在10多台机子上测试了这个程序,无论机子配置好坏,得到的结果都是类似如下的结果(比例类似,绝对值不同) [quote]--start-- this: 1812 - polymorphism ----------- implements interface: 1782 extends abstract: 8859 extends class: 8578 -no polymorphism ----------- implements interface: 1328 extends abstract: 1344 extends class: 1313 --end--[/quote] 另外,就算你这里关于B的结果不能说明问题,那C的又如何解释呢,甚至A的也不符合你的说法呢? [b]问题补充:[/b] to walsh: 不好意思,我没有不相信你的意思,但是我又在8台不同机子上做了同样的测试,整个实验过程近20台机子的测试结果仍然和我上述的结果差不多,我真的不能重复你的实验结果。 整个过程中我最关心的只是b.get()方法和((BB)b).get(),c.get()方法消耗时间多一些可以理解,我不理解的只是b.get()这个抽象方法在继承以后为什么会和c.get()类似。既然你不能重复我的实验结果,而我也不能重复你的实验结果,这个。。。。。难道还有什么其他的问题导致的这个问题啊???看来我还需要继续等待以及测试一下。

一段关于线程代码的思考

由于是第一次在技术坛发帖,写的不好请各位大大勿拍! <br /><pre name="code" class="java"> public class InterruptTest extends Thread{ static int result=0; public InterruptTest(String name) { super(name); } public static void main(String args[]) { System.out.println("开始主线程"); Thread t1 = new InterruptTest("计算机线程"); t1.start(); //System.out.println("result:"+result); try { long time1 = System.nanoTime(); t1.join(2000); long time2 = System.nanoTime(); t1.interrupt();//中断线程 System.out.println((time2-time1)/1000000+"毫秒后"+result); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void run() { System.out.println(this.getName()+"开始计算......"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println(this.getName()+"线程被中断......"); return; //e.printStackTrace(); } result = (int)(Math.random()*10000); System.out.println("------"+result); System.out.println(this.getName()+"结束计算....."); } } </pre> <br />console的输出信息为: <br /><img src="http://dl.iteye.com/upload/attachment/509789/a0ae29fe-3de3-32bd-8821-fd9bd9f3b69a.jpg" /> <br />按照正常情况来说的话,线程interrupt后,后面的语句应该是不执行的。以前对线程总是半知半解的,这次希望大家给我解解惑! <br /><br/><strong>问题补充</strong><br/><div class="quote_title">悲剧了 写道</div><div class="quote_div">哥们你 Thread t1 = new JoinTest("计算机线程");&nbsp; <br />中JoinTest来自哪?</div> <br />额,不好意思,写错了!<img src="/images/smiles/icon_redface.gif"/> <br/><strong>问题补充</strong><br/>恩,线程中断之后应该是不会执行后面的语句了吧?<br/><strong>问题补充</strong><br/><div class="quote_title">悲剧了 写道</div><div class="quote_div"><div class="quote_title">java_xiaoyi 写道</div><div class="quote_div">恩,线程中断之后应该是不会执行后面的语句了吧?</div> <br />你说的是这个么? <br />System.out.println((time2 - time1) / 1000000 + "毫秒后" + result); <br />如是,你只是中断你的t1线程,关main线程什么事情 <br /> <br /></div> <br />不是这个,因为我在主线程里调用了join方法,然后突然interupt掉,这个时候在run方法应该会报异常,进入到catch里面去,输出"System.out.println(this.getName()+"线程被中断......");"这个吧?<br/><strong>问题补充</strong><br/><div class="quote_title">引用</div><div class="quote_div"> <br />不中断的原因是你的join时间太长, 改成t1.join(800) <br /></div> <br /><img src="/images/smiles/icon_cry.gif"/> 明白了!哎,现在知道这个帖子太烂了~~<img src="/images/smiles/icon_redface.gif"/> 下次发帖一定注意!<br/><strong>问题补充</strong><br/><div class="quote_title">blackbeans 写道</div><div class="quote_div">哥们你这个程序在 <br />t1.interrupt();//中断线程&nbsp; <br />这一步的时候Thread.sleep(1000)已经过期了,从sleep可中断块已经走出来了,而这个时候interrupt是已经失效了,interrupt只能打断能够接收中断的信号的操作,比如阻塞的take(),poll()这些</div> <br />你的意思是说不能中断sleep的操作?<br/><strong>问题补充</strong><br/><div class="quote_title">悲剧了 写道</div><div class="quote_div"><div class="quote_title">java_xiaoyi 写道</div><div class="quote_div"><div class="quote_title">引用</div><div class="quote_div"> <br />不中断的原因是你的join时间太长, 改成t1.join(800) <br /></div> <br /><img src="/images/smiles/icon_cry.gif"/> 明白了!哎,现在知道这个帖子太烂了~~<img src="/images/smiles/icon_redface.gif"/> 下次发帖一定注意!</div> <br /> <br />没事,大家都是这么过来的,只要态度好就很好 <br /></div> <br />呵呵,共勉!<img src="/images/smiles/icon_idea.gif"/> <br/><strong>问题补充</strong><br/><div class="quote_title">icewubin 写道</div><div class="quote_div">实际工作中,一般不使用interrupt这种方式。</div> <br />冰神,你太全能了吧,编程也懂?<img src="/images/smiles/icon_surprised.gif"/>

JAVA中在JPanel里调用Graphics实现循环产生动画的问题。

想要实现用JAVA绘制简单的动画效果,大致就是先建一个JFrame对象,在里面添加一个JPanel,然后在JPanel里面用Graphics来进行画图,重复进行绘制一个与背景相同颜色的一张图像,在绘制一张其他的图像,经过一段时间之后重复进行。效果就是在一个背景中图像像右方移动。 在Graphics里面添加for语句在JFrame里面可以实现的。但是放到了JPanel里面就不行了,只会显示循环结束之后的图像,希望能够知道这个是什么原因造成的,能够用什么方法解决,望高手指教。 代码如下: package Jpg_2; import javax.swing.*; import java.awt.*; public class jpg_2 { public static void main(String[] args) { frame f=new frame(); } } class frame extends JFrame { CJPanel c; frame() { super("图片"); setSize(500,500); c=new CJPanel(); this.add(c); c.repaint(); setVisible(true); } class CJPanel extends JPanel { ImageIcon icon=new ImageIcon("f:/3.png"); ImageIcon icon2=new ImageIcon("f:/4.png"); Image image=icon.getImage(); Image image2=icon2.getImage(); public void paint(Graphics g) { g.drawImage(image,20,20,this); g.setColor(Color.red); g.fillRect(0,0,500,500); for (int i=20;i<180;i++) { g.drawImage(image2,i,20,this); g.drawImage(image,i+1,20,this); try { Thread.sleep(10); } catch(InterruptedException e){} } } } }

如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。

class Person { private String name; private int age; public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public String getName(){ return name; } public int getAge(){ return age; } } class Student extends Person { private String school; public String getSchool() { return school; } public void setSchool(String school) { this.school =school; } } public class Test { public static void main(String args[]){ Student student = new Student(); student.setName("John"); student.setAge(18); student.setSchool("SCH"); System.out.println(student.getName()); System.out.println(student.getAge()); System.out.println(student.getSchool()); } } 这段代码有问题吗? 根据”如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。”这句话,此段代码中,子类Student没有显示调用父类构造方法,而父类Person中又没有无参数的构造方法,编译应该出错啊???

spring data jpa 的一些疑问

http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/ 《使用 Spring Data JPA 简化 JPA 开发》这篇文章相信大家一定拜读过   但是这2天我在继续试用spring data jpa中遇到了不少挫折。   首先遇到的是原文中写到“默认情况下,Spring Data JPA 实现的方法都是使用事务的。针对查询类型的方法,其等价于 @Transactional(readOnly=true);增删改类型的方法,等价于 @Transactional。可以看出,除了将查询的方法设为只读事务外,其他事务属性均采用默认值。”但是我配置了很长一段时间,发现dao这一层没用上@Transactional注解,而在service层用上@Transactional,JPA会发出SQL语句,但是不会存储到数据库,数据被回滚了。   第二,原文中还提到“与继承 Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition 注解,并为其指定 domainClass 和 idClass 属性。”两种等价的继承接口方式示例 [code="java"] public interface UserDao extends Repository<AccountInfo, Long> { …… } @RepositoryDefinition(domainClass = AccountInfo.class, idClass = Long.class) public interface UserDao { …… } [/code] 我搞了半天就是报错 [code="java"]java.lang.ClassCastException: $Proxy23 cannot be cast to org.springframework.data.repository.Repository[/code] 网上查了很多资料,包括官方文档,都没提及这种错误的原因,我反复对照配置文件,实在找不出错误所在,不知谁能解答下疑惑。使用的是spring3.1.1,hibernate4,spring data jpa 1.03   

JAVA初学者 为什么这个程序先执行完主线程再执行子线程?

按照书上给的代码输入后的到的结果不太一样 ``` public class Example8_2 { public static void main(String[] args) { WriteWordThread1 zhang; WriteWordThread1 wang; zhang = new WriteWordThread1("张晓红",200); wang = new WriteWordThread1("JamsKeven",100); zhang.start(); for(int i=1;i<=8;i++){ System.out.println("我是主线程中的语句"); } wang.start(); } } class WriteWordThread1 extends Thread{ int n=0; WriteWordThread1(String s,int n){ setName(s); this.n=n; } public void run(){ for(int i=1;i<=8;i++){ System.out.println("我是一个线程,我的名字是"+getName()); try{ sleep(n); } catch(InterruptedException e){} } } } ``` 结果如下 ![结果如下] (https://img-ask.csdn.net/upload/201702/13/1486950981_212367.png)

关于S2SH3大框架整合后,hibernate无异常提醒问题。

调用查询数据库操作的时候,HQL语句写错也没有错误提示。其中我的代码封装如下: hibernate、struts2配置已经整合到spring中。 1. 处理页面传来的值的 action类: public class ManagerAction extends BaseAction{ @Resource private ManagerInter managerImpl; private Manager manager; public String recManager(){ String account = manager.getAccount(); String paswd = manager.getPassword(); System.out.println(account+" "+paswd); List<Manager> managers = managerImpl.executeQuery("from Manager",account,paswd); return "success"; } public Manager getManager() { return manager; } public void setManager(Manager manager) { this.manager = manager; } public void setManagerImpl(ManagerInter managerImpl) { this.managerImpl = managerImpl; } 这段代码中的HQL语句是明显错误,但却没有异常抛出。在HQL语句正确的情况下,是能正常的查询出数据,故已经排除数据库异常,代码错误,没织入spring容器等错误。 2. 这个查询方法是调用了 ManagerInter 接口里的方法,已经织入spring,其中ManagerInter接口代码如下: public interface ManagerInter extends BaseDaoInter{ //这个接口写入该业务专有方法 } 这个接口是继承了一个基础接口,基础接口代码如下: public interface BaseDaoInter { /** * 查询方法 * */ public List executeQuery(String hql , Object...prameters); } 其中实现类如下: @Transactional public abstract class BaseDaoImpl implements BaseDaoInter{ @Resource private SessionFactory sessionFactory; //查询方法 public List executeQuery(String hql, Object... prameters) { Query query = sessionFactory.getCurrentSession().createQuery(hql); if(prameters!=null&&prameters.length>0){ for (int i = 0; i < prameters.length; i++) { query.setParameter(i, prameters[i]); } } return query.list(); } } 问:要怎样做才能让错误抛出。 我已经尝试过的方法: public List executeQuery(String hql, Object... prameters) { Query query = null; try { query = sessionFactory.getCurrentSession().createQuery(hql); if (prameters != null && prameters.length > 0) { for (int i = 0; i < prameters.length; i++) { query.setParameter(i, prameters[i]); } } } catch (Exception e) { throw new RuntimeException(e.getMessage()); } return query.list(); } 对这个实现类 进行 异常扑捉,可是不行。 问:怎么办?

(Java) Android的Room数据库,通过date查询某一个月的数据,写好接口但似乎并没有返回数据,什么原因呢?

根据谷歌安卓开发者文档开发,使用了room+livedata+viewmodel+repository多个架构。 1.bean文件,存Date ``` @ColumnInfo(name = "date") private Date date; public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } ``` 2.dao文件接口 ``` @Query("SELECT * FROM Bill WHERE date BETWEEN :From AND :To ORDER BY id ASC") LiveData<List<Bill>> getBillsByMon(Date From,Date To); ``` 3.room数据库不支持直接使用date,需要使用Converters ``` public class DateConverters { @TypeConverter public static Date fromTimestamp(Long value) { return value == null ? null : new Date(value); } @TypeConverter public static Long dateToTimestamp(Date date) { return date == null ? null : date.getTime(); } } ``` 4.billdatabase相关代码 ``` @Database(entities = {Bill.class},version = 1,exportSchema = false) @TypeConverters({DateConverters.class}) public abstract class BillRoomDatabase extends RoomDatabase { public abstract BillDao billDao(); } ``` 5.问题主要在这里吧,activity中传了calendar,在repository转为date ``` public LiveData<List<Bill>> getAllBillsByMonth(Calendar calendar) { Date dateFrom= Utils.ToMinDateInMonthByCal(calendar); Date dateTo= Utils.ToMaxDateInMonthByCal(calendar); LiveData<List<Bill>> mAllBillsByMonth = mbillDao.getBillsByMon(dateFrom, dateTo); return mAllBillsByMonth; } ``` utils方法代码,测试过应该对。 ``` //Cal-->date:当月最后一天 public static Date ToMaxDateInMonthByCal(Calendar calendar){ Date date = calendar.getTime(); date.setMonth(date.getMonth() + 1); date.setDate(0); return date; } //Cal-->date:当月第一天 public static Date ToMinDateInMonthByCal(Calendar calendar){ Date date = calendar.getTime(); date.setDate(1); return date; } ``` 然后返回mAllBillsByMonth这个LiveData数据似乎为空,在recycler的adapter像返回全部数据那样调用,数据没有获取到,感觉是date的问题?

程序片段后面添加方法

我有一个程序片段,是一个“计时器”,它可以添加在任何地方。在片段中我以程序的方式改变一个textView,它可以很好的运行。我的问题是当从布局中使用一个视图时,如何在片段下面的另外一个方法中用构造函数实现? public class Timer_fragment extends android.support.v4.app.Fragment { int testpins; String testedpin; TextView text; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.timer_frag, container, false); TextView text = (TextView) v.findViewById(R.id.pwd_status); text.setText("Setting text in fragment not main"); /* set the TextView's text, click listeners, etc. */ updateStatus(); return v; } 所有这些代码都能很好的运行,但是当我添加下面这段代码时, private void updateStatus() { TextView text = (TextView) findViewById(R.id.pwd_status); testPin(); text.setText(testedpin); } indViewById下面会出现红线说findViewById(int)方法不是Timer_fragment类型

Android 开发中,访问网络的问题

``` public class MainActivity extends Activity { private EditText address; private Button getbutton; private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { //版本4.0后需加这个,不然就报错android.os.NetworkOnMainThreadException StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().detectLeakedClosableObjects() .penaltyLog().penaltyDeath().build()); // super.onCreate(savedInstanceState); setContentView(R.layout.test); //初始化 address = (EditText) findViewById(R.id.address); getbutton = (Button) findViewById(R.id.getbutton); text = (TextView) findViewById(R.id.text); getbutton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String url = address.getText().toString(); getPDAServerData(url); } }); } public void getPDAServerData(String url) { HttpClient client = new DefaultHttpClient(); HttpPost request; try { request = new HttpPost(url); //调用HttpClient对象的execute(HttpUriRequest request)发送请求,返回一个HttpResponse HttpResponse response = client.execute(request); //返回响应码为200 if (response.getStatusLine().getStatusCode() == 200) { //从响应中获取消息实体 HttpEntity entity = response.getEntity(); if (entity != null) { String out = EntityUtils.toString(entity); text.setText(out); } } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ``` 请问, ``` StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().detectLeakedClosableObjects() .penaltyLog().penaltyDeath().build()); ``` 这段代码的意思是什么呢,为什么不加,就无法执行访问网络的代码语句呢。

这个问题该如何解决啊,求大神指点

选择两个城市作为预选旅游目标,实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。请用Runnable接口或Thread类实现。 下面是用Thread类的实现,参考程序如下,用Runable接口实现方法类似。 public class Ex82 { public static void main(String[] args){ String[] citys = {"合肥","淮南"}; ThreadCity1 thread1 = new ThreadCity1(citys); ThreadCity2 thread2 = new ThreadCity2(citys); thread1.start(); thread2.start(); /* * 请在下面补充几行代码,保证thread1和thread2都允许结束再执行后面的if语句。 */ While(thread1.isAlive() || thread2.isAlive()){ } if(thread1.getTime()<thread2.getTime()){ System.+ out.println("决定去:"+citys[0]); } else{ System.out.println("决定去:"+citys[1]); } } } class ThreadCity1 extends Thread{ private String[] citys; private long time; public long getTime(){ return time; } ThreadCity1(String[] citys){ this.citys=citys; } public void run(){ long start = System.currentTimeMillis(); for(int i=0;i<10;i++){ try{ System.out.println("Thread1:"+citys[0]); Thread.sleep((int)(Math.random()*1000)); } catch(Exception e){ } } time = System.currentTimeMillis() - start; System.out.println("Thread1 Ends!"); } } class ThreadCity2 extends Thread{ private String[] citys; private long time; public long getTime(){ return time; } ThreadCity2(String[] citys){ this.citys=citys; } public void run(){ long start = System.currentTimeMillis(); for(int i=0;i<10;i++){ try{ System.out.println("Thread2:"+citys[1]); Thread.sleep((int)(Math.random()*1000)); } catch(Exception e){ } } time = System.currentTimeMillis() - start; System.out.println("Thread2 Ends!"); } }

struts 2 com.opensymphony.xwork2.u报错

六月 29, 2016 8:47:55 上午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error 严重: Exception occurred during processing request: null java.lang.NullPointerException 提示在这一个代码段里面 if语句错误 package cn.itcast.actionT; import cn.itcast.domain.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class LoginAction extends ActionSupport implements ModelDriven<User>{ private static final long serializableUID = 1L; private User user; @Override public User getModel() { return user; } @Override public String execute()throws Exception{ //获取ActionContext ActionContext context = ActionContext.getContext(); if("tom".equals(user.getUsername())&&"123".equals(user.getPassword())){ context.getSession().put("user","user"); return SUCCESS; }else { context.getSession().put("msg", "登录失败"); return INPUT; } } } 我把所有代码都复制上来 package cn.itcast.actionT; import cn.itcast.domain.User; import com.opensymphony.xwork2.ActionSupport; public class BookAction extends ActionSupport{ private User user; public String add(){ System.out.println("book add"); return SUCCESS; } public String del(){ System.out.println("book del"); return SUCCESS; } public String update(){ System.out.println("book update"); return SUCCESS; } public String find(){ System.out.println("book find"); return SUCCESS; } } package cn.itcast.domain; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } struts.xml package name="default" namespace="/" extends="struts-default"> interceptors> interceptor name="privilege" class="cn.itcast.interceptor.PrivilegeInterceptor"/> /interceptors> action name="login" class="cn.itcast.actionT.LoginAction"> result>/main.jsp /result> result name="input">/login.jsp /result> /action> action name="book_*" class="cn.itcast.actionT.BookAction" method="{1}"> result>/success.jsp /result> result name="login">/login.jsp /result> interceptor-ref name="privilege"/> /action> /package> /struts> main.jsp a href="/Two/book_del">book_del /a> a href="/Two/book_add">book_add /a> a href="/Two/book_find">book_find /a> a href="/Two/book_update">book_update /a> login.jsp form action="/Two/login.action" method="post"> 用户名:input type="text" name="username"/>br> 密码:input type="password" name="password"/>br> input type="submit" value="登录™†"/> /form>

安卓sqlite的问题,不能点注册按钮,点了就出错。

安卓sqlite的问题,不能点注册按钮,点了就出错。然后控制台那边提示说是such no table,网上也查找过解决办法,说是把路径定死,可惜不知道哪里写合适,或者试了也不行? 注册java的代码 import java.io.File; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.widget.Button; import android.widget.EditText; import android.widget.RadioGroup; import android.widget.Toast; import android.view.View; import android.view.View.OnClickListener; import android.widget.RadioButton; public class ZhuceActivity extends Activity { private EditText edityhm,edityhmm,edityhxm,edityhsfz,edityhdh,edityhyx; private RadioButton rdman,rdwomen; private RadioGroup rdgroup; private Button yhzhuce; private Button yhfanhui; SQLiteDatabase db; // 声明一个变量zhuceOK。布尔类型 private boolean zhuceok = false; Handler handler; @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); db.close(); //不在当前页时会注销此页面 } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.zhuce); //获取控件 edityhm = (EditText)findViewById(R.id.edityhm); edityhmm = (EditText)findViewById(R.id.edityhmm); edityhxm = (EditText)findViewById(R.id.edityhxm); edityhsfz = (EditText)findViewById(R.id.edityhsfz); edityhyx = (EditText)findViewById(R.id.edityhyx); edityhdh = (EditText)findViewById(R.id.edityhdh); rdman = (RadioButton) findViewById(R.id.rdman); rdwomen = (RadioButton) findViewById(R.id.rdwomen); rdgroup = (RadioGroup)findViewById(R.id.rdgroup); yhzhuce = (Button)findViewById(R.id.yhzhuce); yhfanhui = (Button)findViewById(R.id.yhfanhui); // 添加监听 yhzhuce.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO 自动生成的方法存根 // 获取所有的用户信息,访问网络服务器端,将信息发送给服务器端去处理。 User user = new User(); user.setName(edityhm.getText().toString()); user.setPassword(edityhmm.getText().toString()); user.setYhsfz(edityhsfz.getText().toString()); user.setYhxm(edityhxm.getText().toString()); user.setYhyx(edityhyx.getText().toString()); user.setYhdh(edityhdh.getText().toString()); if (rdman.isChecked()) user.setSex("男"); else user.setSex("女"); if (zhuce(user)) {// 调用zhuce方法,如果注册成功 // 跳转到登录界面 Intent in = new Intent(); in.setClass(ZhuceActivity.this,LoginActivity.class); startActivity(in); // 销毁当前activity ZhuceActivity.this.onDestroy(); } else {// 注册不成功 Toast.makeText(ZhuceActivity.this, "sorry!!,注册失败", Toast.LENGTH_SHORT).show(); edityhm.requestFocus(); } }}); yhfanhui.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent in1 = new Intent(); in1.setClass(ZhuceActivity.this,LoginActivity.class); ZhuceActivity.this.startActivity(in1); } }); } // 添加用户 // User user这段语句是直接 public Boolean zhuce( User user) { Boolean zhuceok = false; String str = "insert into user values(?,?,?,?,?,?,?) "; LoginActivity main = new LoginActivity(); db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() +"/test.dbs",null); main.db = db; try { db.execSQL(str, new String[] { user.getName(),user.getPassword(),user.getYhsfz(),user.getYhxm(), user.getYhyx(),user.getYhdh(),user.getSex()}); zhuceok = true; } catch (Exception e) { main.createDb(); return zhuceok; } return zhuceok; } } 登录java代码 import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class LoginActivity extends Activity { // 声明控件变量 注意变量为null时能 private EditText login_username; private EditText login_password; private Button zhuce; private Button denglu; public static SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); login_username = (EditText)findViewById(R.id.login_username); login_password = (EditText)findViewById(R.id.login_password); zhuce = (Button)findViewById(R.id.zhuce); denglu = (Button)findViewById(R.id.denglu); zhuce.setOnClickListener(new zhuceListener()); denglu.setOnClickListener(new dengluListener()); db = SQLiteDatabase.openOrCreateDatabase(LoginActivity.this.getFilesDir().toString() + "/test.dbs", null); //getFilesDir().toString()是获取存放数据库文件的路径. } //添加一个监听器 class zhuceListener implements OnClickListener{ @Override public void onClick(View arg0) { // TODO 自动生成的方法存根 //生成一个Intent对象 Intent intent = new Intent(); intent.setClass(LoginActivity.this, ZhuceActivity.class); LoginActivity.this.startActivity(intent); } } class dengluListener implements OnClickListener{ @Override public void onClick(View arg0) { // TODO 自动生成的方法存根 String name = login_username.getText().toString(); String password = login_password.getText().toString(); if (name.equals("") || password.equals("")) { // 弹出消息框 AlertDialog 通过Builder方法,然后用show()来实现 new AlertDialog.Builder(LoginActivity.this).setTitle("错误") .setMessage("帐号或密码不能空").setPositiveButton("确定", null) .show(); } else { isUserinfo(name, password); } } } // 判断输入的用户是否正确 public Boolean isUserinfo(String name, String pwd) { try{ String str="select * from user where name=? and password=?"; Cursor cursor = db.rawQuery(str, new String []{name,pwd}); //Cursor 是每行的集合。SQLite 数据库,,,,db.rawQuery执行本地SQL语句查询 if(cursor.getCount()<=0){ new AlertDialog.Builder(LoginActivity.this).setTitle("错误") .setMessage("帐号或密码错误!").setPositiveButton("确定", null) .show(); return false; }else{ new AlertDialog.Builder(LoginActivity.this).setTitle("正确") .setMessage("成功登录").setPositiveButton("确定",new DialogInterface.OnClickListener(){ //设置确定按钮点击的事件Listener,可以直接在这边设置,纠结了好久 @Override public void onClick(DialogInterface dialog, int which) { //实现你的onclick方法 Intent it = new Intent(LoginActivity.this,JiemianActivity.class); startActivity(it); }} ). show(); return true; } }catch(SQLiteException e){ createDb(); } return false; } // 创建数据库和用户表 public void createDb() { db.execSQL("create table user( name varchar(30) primary key,password varchar(30),yhsfz varchar(50)," + "yhxm varchar(30),yhyx varchar(50),yhdh varchar(50),sex varchar(20)"); } //举例如果你触发startButton按钮事件启动线程,而没有触发stopButton按钮事件停止线程,在离开该页面时onDestroy()中的停止线程功能就发挥了作用 protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); db.close(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.login, menu); return true; } } 还有就是声明user对象的属性 public class User { private String name; private String password; private String yhsfz; private String yhxm; private String yhyx; private String yhdh; private String sex; public String getName(){ return name; } public void setName(String name){ this.name = name; } public String getPassword(){ return name; } public void setPassword(String password){ this.password = password; } public String getYhsfz(){ return yhsfz; } public void setYhsfz(String yhsfz){ this.yhsfz = yhsfz; } public String getYhxm(){ return yhxm; } public void setYhxm(String yhxm){ this.yhxm = yhxm; } public String getYhyx(){ return yhyx; } public void setYhyx(String yhyx){ this.yhyx = yhyx; } public String getYhdh(){ return yhdh; } public void setYhdh(String yhdh){ this.yhdh = yhdh; } public String getSex(){ return sex; } public void setSex(String sex){ this.sex = sex; } 不知道该如何解决,可能是哪里的代码写错了,望各路大神能指点下,感谢!

萌新关于跳转问题的问题!!!!!!

package com.example.application; import actionmovie.LoginActivity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.widget.ImageView; public class MainActivity extends Activity { private ImageView welcomeImg = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); welcomeImg = (ImageView) this.findViewById(R.id.welcome_img); AlphaAnimation anima = new AlphaAnimation(0.3f, 1.0f); anima.setDuration(3000);// 设置动画显示时间 welcomeImg.startAnimation(anima); anima.setAnimationListener(new AnimationImpl()); } private class AnimationImpl implements AnimationListener { @Override public void onAnimationStart(Animation animation) { welcomeImg.setBackgroundResource(R.drawable.boot_0000); } @Override public void onAnimationEnd(Animation animation) { skip(); // 动画结束后跳转到别的页面 } @Override public void onAnimationRepeat(Animation animation) { } } private void skip() { startActivity(new Intent(MainActivity.this, LoginActivity.class)); finish(); } } 上述是开机动画,要跳到 LoginActivity,动画结束后失败。 package actionmovie; import com.example.application.BMainActivity; import com.example.application.R; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity implements OnClickListener { private Button logbtn = null; private EditText username = null; private EditText password = null; private String pswd, name; private CheckBox checkboxButton = null; SharedPreferences sp = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); init(); } private void init() { // TODO Auto-generated method stub username = (EditText) findViewById(R.id.login_edit_account); password = (EditText) findViewById(R.id.login_edit_pwd); logbtn = (Button) findViewById(R.id.login_btn_login); checkboxButton = (CheckBox) findViewById(R.id.Login_Remember); if (sp.getBoolean("checkboxBoolean", false)) { username.setText(sp.getString("username", null)); password.setText(sp.getString("password", null)); checkboxButton.setChecked(true); } logbtn.setOnClickListener(LoginActivity.this); } @Override public void onClick(View v) { // TODO Auto-generated method stub name = username.getText().toString().trim(); pswd = password.getText().toString().trim(); if (v == logbtn) { if (name.equals("admin") && pswd.equals("123456")) { if (name.trim().equals("")) { Toast.makeText(this, "请您输入用户名!", Toast.LENGTH_SHORT).show(); return; } if (pswd.trim().equals("")) { Toast.makeText(this, "请您输入密码!", Toast.LENGTH_SHORT).show(); return; } boolean CheckBoxLogin = checkboxButton.isChecked(); if (CheckBoxLogin) { Editor editor = sp.edit(); editor.putString("username", name); editor.putString("password", pswd); editor.putBoolean("checkboxBoolean", true); editor.commit(); } else { Editor editor = sp.edit(); editor.putString("user", null); editor.putString("pass", null); editor.putBoolean("checkboxBoolean", false); editor.commit(); } Intent intent = new Intent(); intent.setClass(LoginActivity.this, BMainActivity.class); startActivity(intent); finish(); } else { AlertDialog.Builder builder = new Builder(LoginActivity.this); builder.setTitle(" 请确认!"); builder.setMessage(" 账号或密码错误"); builder.setPositiveButton("是", null); builder.show(); } } } } 两段代码,我一段段的切掉运行,发现在 if (sp.getBoolean("checkboxBoolean", false)) { username.setText(sp.getString("username", null)); password.setText(sp.getString("password", null)); checkboxButton.setChecked(true); } 缺少这个if语句是不会停止运行,且跳转成功,请问怎么解决啊。

求助 小白debug不到是哪空指针了。

public class MainActivity extends Activity { private GraphicalView chart; private Timer timer = new Timer(); private TimerTask task; private Float addY; private String addX; Tool_Sqls mysql = new Tool_Sqls(); String[] xkedu = new String[20] ;//x轴数据缓冲 Float[] ycache = new Float[20]; //private final static int SERISE_NR = 1; //曲线数量 private XYSeries series;//用来清空第一个再加下一个 private XYMultipleSeriesDataset dataset1;//xy轴数据源 private XYMultipleSeriesRenderer render; SimpleDateFormat shijian = new SimpleDateFormat("hh:mm:ss"); Handler handler2; TextView guangzhi2; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.guangzhao); //guangzhi2=(TextView)findViewById(R.id.guangzhi2); //制作曲线图 LinearLayout linearLayout = (LinearLayout)findViewById(R.id.guangzhexian); chart = ChartFactory.getLineChartView(this, getdemodataset(), getdemorenderer()); linearLayout.removeAllViews();//先remove再add可以实现统计图更新 linearLayout.addView(chart, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); handler2 = new Handler(){ public void handleMessage(Message msg) { updatechart(); //guangzhi2.setText(String.valueOf(addY)); } }; task = new TimerTask(){ public void run() { Message msg=new Message(); msg.what=200; handler2.sendMessage(msg); } }; timer.schedule(task, 0, 2000); }//oncreate结束 //更新折线图 private void updatechart() { //判断当前点集中到底有多少点,因为屏幕总共只能容纳20个,所以当点数超过20时,长度永远是20 int length=series.getItemCount(); int a=length; if(length>20){ length=20; } // try { // if(guangzhi2.getText().toString()!=null){ // addY = Float.valueOf(guangzhi2.getText().toString());//要不要判断再说 // } // } catch (NumberFormatException e) { // e.printStackTrace(); // } addX=shijian.format(new java.util.Date()); try { mysql.getROID_4("hoestry2","id"); while (mysql.rs.next()) { addY = Float.valueOf(mysql.rs.getFloat("outlet_temperature"));//(float)(Math.random()*10); } mysql.rs.close(); mysql.stmt.close(); mysql.con.close(); } catch (SQLException e) { e.printStackTrace(); } //移除数据集中旧的点集 dataset1.removeSeries(series); if(a<20)//当数据集中不够20个点的时候直接添加就好,因为初始化的时候只有一个点,所以前几次更新的时候直接添加 { series.add(a+1, addY);//第一个参数代表第几个点,要与下面语句中的第一个参数对应 render.addXTextLabel(a+1, addX); xkedu[a]=addX; } else //超过了20个点要去除xcache【0】换成【1】的..... { //将旧的点集中x和y的数值取出来放入backup中,造成曲线向左平移的效果 for(int i =0 ;i<length-1;i++){ ycache[i]=(float) series.getY(i+1); xkedu[i]=xkedu[i+1]; } //点集先清空,为了做成新的点集而准备 series.clear(); //将新产生的点首先加入到点集中,然后在循环体中将坐标变换后的一系列点都重新加入到点集中 for(int k =0 ;k<length-1;k++){ series.add(k+1, ycache[k]); render.addXTextLabel(k+1, xkedu[k]); } xkedu[4]=addX; series.add(20, addY); render.addXTextLabel(20, addX); } //在数据集中添加新的点集 dataset1.addSeries(series); //视图更新,没有这一步,曲线不会呈现动态 chart.invalidate(); } private XYMultipleSeriesRenderer getdemorenderer() { // TODO Auto-generated method stub render = new XYMultipleSeriesRenderer(); render.setChartTitle("三新锅炉温度曲线图"); render.setChartTitleTextSize(20);//设置整个图表标题文字的大小 render.setAxisTitleTextSize(16);//设置轴标题文字的大小 render.setAxesColor(Color.BLACK); render.setXTitle("时间/hh:mm:ss"); render.setYTitle("温度/℃"); render.setLabelsTextSize(16);//设置轴刻度文字的大小 render.setLabelsColor(Color.BLACK); render.setXLabelsColor(Color.BLACK); render.setYLabelsColor(0, Color.BLACK); render.setLegendTextSize(15);//设置图例文字大小 //render.setShowLegend(false);//显示不显示在这里设置,非常完美 XYSeriesRenderer r = new XYSeriesRenderer();//设置颜色和点类型 r.setColor(Color.RED); r.setPointStyle(PointStyle.CIRCLE); r.setFillPoints(true); r.setChartValuesSpacing(3); render.addSeriesRenderer(r); render.setYLabelsAlign(Align.RIGHT);//刻度值相对于刻度的位置 render.setShowGrid(true);//显示网格 render.setYAxisMax(60);//设置y轴的范围 render.setYAxisMin(-10); render.setYLabels(20);//设置Y轴标签数 render.setDisplayChartValues(true);//设置Y轴曲线上的点的数值是否显示,实测当点数密集的时候不会全部显示,会隔一段时间显示 render.setInScroll(true); render.setLabelsTextSize(14); render.setLabelsColor(Color.BLACK); //render.getSeriesRendererAt(0).setDisplayChartValues(true); //显示折线上点的数值 render.setPanEnabled(false,false);//禁止报表的拖动 render.setPointSize(5f);//设置点的大小(图上显示的点的大小和图例中点的大小都会被设置) render.setMargins(new int[]{40,40,40,40}); //设置图形四周的留白 render.setMarginsColor(Color.WHITE); render.setXLabels(0);// 取消X坐标的数字zjk,只有自己定义横坐标是才设为此值 return render; } private XYMultipleSeriesDataset getdemodataset() { // TODO Auto-generated method stub dataset1=new XYMultipleSeriesDataset();//xy轴数据源 series = new XYSeries("矿大温度 ");//这个事是显示多条用的,显不显示在上面render设置 //这里相当于初始化,初始化中无需添加数据,因为如果这里添加第一个数据的话, //很容易使第一个数据和定时器中更新的第二个数据的时间间隔不为两秒,所以下面语句屏蔽 //这里可以一次更新五个数据,这样的话相当于开始的时候就把五个数据全部加进去了,但是数据的时间是不准确或者间隔不为二的 //for(int i=0;i<5;i++) //series.add(1, Math.random()*10);//横坐标date数据类型,纵坐标随即数等待更新 dataset1.addSeries(series); return dataset1; } public void onDestroy() { //当结束程序时关掉Timer timer.cancel(); super.onDestroy(); } } ``` ```

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

ArrayList源码分析(入门篇)

ArrayList源码分析 前言: 写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

玩转springboot启动banner定义所得

最近接手了一个springboot项目,不是不熟悉这个框架,启动时打印的信息吸引了我。 这不是我熟悉的常用springboot的打印信息啊,我打开自己的项目: 还真是的,不用默认的感觉也挺高大上的。一时兴起,就去研究了一下源代码,还正是有些收获,稍后我会总结一下。正常情况下做为一个老程序员,是不会对这种小儿科感兴趣的,不就是一个控制台打印嘛。哈哈! 于是出于最初的好奇,研究了项目的源代码。看到

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

立即提问
相关内容推荐