一个关于Hibernate的奇葩问题 HibernateSystemException

这是在公司的项目中遇到的问题,很奇怪。它不是每次都出现,有的时候出现,自己尝试解决,可实践了很久都不知道异常的原因。项目使用的是Hibernate+Spring,是客户端程序。具体异常详见:
2015-05-18 19:37:21,288-[TS] ERROR http-bio-8080-exec-4 org.hibernate.property.BasicPropertyAccessor - IllegalArgumentException in class: com.erp.pojo.OaWorkFlow, getter method of property: id
2015-05-18 19:37:21,290-[TS] WARN http-bio-8080-exec-4 org.springframework.remoting.support.RemoteInvocationTraceInterceptor - Processing of HttpInvokerServiceExporter remote call resulted in fatal exception: com.erp.service.RiskReviewService.findCurrentRiskReview
org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of com.erp.pojo.OaWorkFlow.id; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.erp.pojo.OaWorkFlow.id

根据异常来看,说是OaWorkFlow类的id没有getter方法,可实际上是有的,这就是我为什么说奇葩的问题。下面是OaWorkFlow代码片段:
图片说明

还请大家驻足帮忙看一看,以前是否有遇到这种问题,谢谢!

3个回答

id的类型和它的getter返回值类型可能不是同一种类型。
建议检查下,统一成一种数据类型。祝好!

ccf199201261
石楠烟斗的雾 谢谢你的回答,有可能会有这种情况,但是我的id都是Integer类型的,怎么会出现不一致的类型呢,这好像也说不通,哎,这是个难题,还在寻找问题的答案中。
大约 5 年之前 回复

如果是用的spring的话,不知道是不是缺少注解的原因。我之前项目开发中也遇到过类似的问题,就是缺少注解和new对象。比如在controller中要new service的东西。

ccf199201261
石楠烟斗的雾 非常感谢你的回答,应该是不存在你说的问题的,我觉得。
大约 5 年之前 回复

表中id是大写的ID吗?你程序中使用integer 肯定跟表中的int不对应,的时候不需要指明对应关系吗

tianyazaiheruan
y_keven 回复EricCho1992: 不是大写但是你注解那里使用的是大写啊,还有就是你使用的是注解的方式,我不知道这种方式的注入int和integer他会怎么给处理;如果是使用配置文件来做肯定会有指定类型对应的。
大约 5 年之前 回复
ccf199201261
石楠烟斗的雾 你好,请问你意思是?我没理解,不好意思。麻烦能说的详细点吗?这个问题一直到现在都没找到原因,主要问题是不是说一直都会出这个问题,而是偶尔出现。表里的id不是大写,是小的的id,没统一,有的地方是大学有的地方是小写。谢谢。
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于hibernate的问题,一个项目刚导入时可以运行,但在果断时间后再次运行就报500错误

具体情况介绍,在某网站下载了一份开源代码之后,第一次导入Eclipse,是可以运行的。但在一段时间之后,再次运行报500错误。期间没有对代码有过任何修改。删除该项目重新解压一份并导入后又可以运行,但过段时间后又不能运行。感觉这个问题很奇怪,有没有大神懂。 下面我说一下今天的情况:下午又导入了一次,运行时没问题的,然后我停掉tomcat后,紧接着又运行了一遍,还是可以的。之后我就不再运行这个项目。看了另一个,做测试的作业。结果晚上回来后想要再次验证下该项目,重新运行,又报500错误。 疑惑: 1.假如说是hibernate或其他相关包导入错误的问题,那么,为什么重新导入后第一次可以运行 2.加入不是hibernate或其他相关包导入错误的问题,那为什么报500错误跟其有关 3.感觉这个问题很是奇葩,难道是内存回收机制方面的问题 …… 很奇怪的一个现象,希望能有大神解答。PS:我会在下面贴报错信息。

问一个关于hibernate的问题?

多对一关系,DataDic对DataDicType, 然后通过查询获得DataDic的表数据,放在dataDicList数组中,怎么在jstl的c:foreach标签中显示DataDicType中的某个字段值,即dataDic.dataDicType.getXXX() 这是DataDic的表和映射文件 ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446973373_744922.jpg) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446973387_215358.jpg) 这是DataDicType表,和DataDic有一对多 多对一关系 ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446973399_805041.jpg) 这是页面要显示的列表内容,问题就在这里,第2列的ddTypeName怎么获取? ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446973407_794797.jpg)

关于hibernate的一个问题

Configuration config = new Configuration().configure("hibernate.oracle.cfg.xml"); Session session = config.buildSessionFactory().openSession(); TUser tUser = (TUser) session.load(TUser.class, new Integer(10002)); List<String> emails = tUser.getEmail(); //List<String> emails = new ArrayList<String>(); emails.add("jerry.zhou@163.com"); emails.add("jerry.zhou@163.com"); session.beginTransaction(); TUser userInfo = new TUser(); userInfo.setName("Peter"); userInfo.setEmail(emails); session.save(userInfo); session.getTransaction().commit(); 我刚学hibernate,我今天在测试hibernate的用户自定类型的时候发现一个很有趣的问题; 我用load方法调用原来的一条记录. 取这条记录的email值,并增加2个email. 做为一条新的记录保存, 但我发现当我保存的时候他会将我load出来的那条纪录的更新(email变成增加后的了). 我查看hibernate的SQL日志发现他多执行了一条update语句 Hibernate: select tuser0_.USERID as USERID0_0_, tuser0_.USERNAME as USERNAME0_0_, tuser0_.EMAIL as EMAIL0_0_ from hibernate.t_user tuser0_ where tuser0_.USERID=? Hibernate: select seq_id.nextval from dual Hibernate: insert into hibernate.t_user (USERNAME, EMAIL, USERID) values (?, ?, ?) Set method executed [color=red]Hibernate: update hibernate.t_user set USERNAME=?, EMAIL=? where USERID=? [/color] 我如果将save方法屏蔽 保留事务 代码改成如下: Configuration config = new Configuration().configure("hibernate.oracle.cfg.xml"); Session session = config.buildSessionFactory().openSession(); TUser tUser = (TUser) session.load(TUser.class, new Integer(10002)); List<String> emails = tUser.getEmail(); //List<String> emails = new ArrayList<String>(); emails.add("jerry.zhou@163.com"); emails.add("jerry.zhou@163.com"); session.beginTransaction(); session.getTransaction().commit(); 他还是会执行update语句. 这是怎么回事呢?

关于Hibernate一对一用多对一取代的问题

最近看了很多关于hibernate优化方面的帖子,发现不少帖子有:“不用一对一,用多对一取代”,但是我个人不明白为什么?于是在网上寻找相关问题的答案无果,提问这样做有什么好处?

关于hibernate 事务提交的问题

近期做项目,遇到了一个问题,用hibernate做数据持久化,可是有的业务逻辑要求是这样的,三张表是独立的。 如何将三张表的增删改放到一个事务里面? 比如:我先保存一个新的人员信息。然后再查询出保存完之后的人员信息同时要update另外一张表里面。 问题就是:session.save(obj) 之后再查询的话。这个对象还是游离状态。会查询不到。 所以就不能后面的update操作

请教个关于hibernate中转化成EntityMode.DOM4J的问题

请教个问题,关于hibernate的 [code="java"] public void getXmlCom(){ Document doc = DocumentHelper.createDocument(); //Element rootElement = doc.addElement("root"); Session session = (Session) HibernateSessionFactory.getSession(); //Session session = factory.openSession(); Session dom4jSession = (Session) session.getSession(EntityMode.DOM4J); Transaction tx = session.beginTransaction(); List results = dom4jSession .createQuery(" select m.f1,s.f2 from table1 m ,table2 s where m.id=s.id and rownum < ? ") .setInteger(0 , 2) .list(); for ( int i=0; i<results.size(); i++ ) { //add the customer data to the XML document Element customer = (Element) results.get(i); //rootElement.add(customer); doc.add(customer); } System.out.println(doc.asXML()); tx.commit(); session.close(); } [/code] 这种情况下会出问题:如果把hql改成(select m.f1 from table1 m where rownum < ?)就没问题,怎么解释? 出错的行为:[code="java"]Element customer = (Element) results.get(i);[/code] 并不是说执行语句有问题 谁能解释下,谢谢各位

提问:Hibernate一级缓存的生命周期是多长?

我最近读了一本《Java Persistence with Hibernate》. 我有一个关于Hibernate的一级缓存的生命期的疑问, 书上说hibernate的一级缓存是unit of work(可能是transaction?)级别的,但是又说一个persistence context(session)内有一个一级缓存。 1.但是我不明白unit of work指的是什么,请问是transaction吗? 2.对于一级缓存,是在一个transaction结束之后就消失了,还是在一个session对象被垃圾回收之后才结束呢? 3.还有一个问题我也很困惑,就是,如果我现在的线程1的一级缓存内已经有读出来的数据,然后线程2修改了数据库的内容,那么线程1的一级缓存内的数据就和数据库的数据不一样了,这样当线程1的程序读一级缓存内的数据的时候,读出来的不就是dirty的数据了吗?这个问题应该如何解决呢? 谢谢了!:)

关于hibernate 外键问题

本人新手,刚接触hibernate.想请问下定义外键是否都用manyto等标签,而不是直接定义id

关于hibernate的一个批量操作

我在做项目遇到一个很经典的问题,就是用hibernate做批量插入的问题。 方法1: 读取一行数据,dao保存一行数据,所有的保存放在一个事务; 方法2:读取所有的数据,拼接成一个hql,一次性执行; 请问那个效率会好一点?

关于hibernate更新数据库的问题

写了一个小项目,用hibernate连接数据库,运行后,直接在数据库中修改了数据,但在项目中进行增删改查操作时,显示的数据仍然是修改前的数据,感觉应该是缓存的问题,求助,使用hibernate,怎样可以在修改完数据库后,项目中的数据可以同步进行更新

关于hibernate单向一对多的一个问题

一个学生一个班级,班级一对多学生,班级中有一个Set里面存放学生,我执行下面的代码 ``` @Test public void testUpdateStuToNewClass(){ Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); Student stu = session.get(Student.class, 2L); Classes clazz = new Classes(); clazz.setCname("2班"); Set<Student> students = new HashSet<Student>(); students.add(stu); clazz.setStudents(students); transaction.commit(); session.close(); } ``` 我并没有session.save(classes),但是为什么会执行insert和update呢,classes不是临时状态的么 hibernate生成的sql如下 ``` Hibernate: select student0_.pid as pid1_1_0_, student0_.pname as pname2_1_0_, student0_.description as descript3_1_0_ from Student student0_ where student0_.pid=? Hibernate: select max(cid) from Classes Hibernate: insert into Classes (cname, cid) values (?, ?) Hibernate: update Student set cid=? where pid=? ```

关于Hibernate映射子类的问题

报错如下 Hibernate: select muser0_.id as id2_, muser0_.password as password2_, muser0_.email as email2_, muser0_.username as username2_, muser0_.type as type2_ from mysql.muser muser0_ where muser0_.id=? org.hibernate.WrongClassException: Object with id: 1 was not of the specified subclass: com.study.dao.Muser (Discriminator: Guest) at org.hibernate.loader.Loader.getInstanceClass(Loader.java:1477) at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308) at org.hibernate.loader.Loader.getRow(Loader.java:1230) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603) at org.hibernate.loader.Loader.doQuery(Loader.java:724) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2232) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) at org.hibernate.loader.Loader.list(Loader.java:2124) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) at com.study.test.hqltest.test(hqltest.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995784_29915.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995800_306146.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995813_518047.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995777_297880.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995732_448814.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995743_685026.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995750_872812.png) UserDao: ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995789_589837.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995894_346457.png) UserServlet: ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995821_27147.png) ![图片说明](https://img-ask.csdn.net/upload/201511/08/1446995917_199693.png)

关于hibernate实体类ID自增长的问题

一个Java web项目,实体ID是这样的:BEIJING00000001 自增长的 用的ORM是hibernate。 现在用的自增长只能这么增长:1 ,2,3,4... 不能自己补上的前面的部分。 必须在服务层给补上或去掉,很满帆,不知道hibernate有解决这个问题更简单的方案吗?

关于hibernate删除记录的问题

我要删除的表记录在整个系统中有很多外键,我在service删除 org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update Caused by: java.sql.BatchUpdateException: ORA-02292: 违反完整约束条件 (DCMIS.FK_DZ_GZHB_CYXX_ID_DZ_CYXX) - 已找到子记录 但是在service里面又无法捕获这个异常,请问怎么才能捕获这个异常。 [b]问题补充:[/b] runtime异常无法捕获,但是它在后台还是要报异常错误,这对系统的健壮性有影响吗 [b]问题补充:[/b] 比如我是在A实体里这样配置,这就是一个外键关系关联SysGroup 这个实体 @ManyToOne(cascade = { CascadeType.MERGE }) @JoinColumn(name = "parentid") private SysGroup sysGroup; 然后删除sysGroup实体的时候就要报错

关于hibernate的session.saveOrUpdate()底层实现的问题

这个问题会有点模糊,因为我的目的是想知道 session的增删改查底层实现原理,所以我详细看了下(以saveOrUpdate()方法为主)saveOrUpdate的流程,它的底层相当的庞大,我很认真的看源码,但是其中有很大一部分我都看不懂,我想知道从session.saveOrUpdate(Object javaBean)此方法开始到结束,那个作者是怎么想出来的,那么多的成员变量和局部变量,都是用在哪里的,要怎么看hibernate的源码? Session.saveOrUpdate()目的是为了 新增或者更新 ---执行sql语句 insert或者update 但是insert 或update是自动生成所以要有org.hibernate.sql包来生成sql,还有事物的设置, 但是我能想到的做一个hibernate的需求就这么多了,可是源码中的变量和类多的都不敢想象,我在想它们都用在那个流程,起到什么作用,真是没有办法啦、啊啊啊啊啊啊 最好-->能够给我提供一些好的书本或者文章(专门针对hibernate底层框架<其他的框架spring、struts2也要>的书或者文章),我在网上完全搜不到hibernate的底层的知识,根本就没有半个人写过关于hibernate底层的东西,我渴望了解它的底层,希望有IT界的朋友帮帮忙,我会感激不尽,真的、谢谢

有没有hibernate高手啊,求助,很奇葩的问题

有没有hibernate高手啊,我遇到个很奇葩的问题,用hql写in查询,只要id以0开头,id中带有8或者9就会报错..例如0418/0480报错,4018/0417不报错

一个hibernate连接oracle11g的问题

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:ORCL</property> <property name="connection.username">scott</property> <property name="connection.password">tiger</property> <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- Database config setting --> <!--<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">123</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property>--> <!-- JDBC connection pool (use the built-in) --> <!--<property name="connection.pool_size">1</property>--> <!-- SQL dialect --> <!--<property name="dialect">org.hibernate.dialect.MySQLDialect</property>--> <!-- Enable Hibernate's automatic session context management --> <!--<property name="current_session_context_class">thread</property>--> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create</property> <!-- 使用xml配置方法的需要对下面的resource进行配置--> <mapping resource="com/sjy/hibernate/model/Student.hbm.xml"/> <mapping class="com.sjy.hibernate.model.Teacher"/> <!-- 使用annotation的需要对下面的class进行配置--> <!--<mapping class="org.hibernate.tutorial.domain.Event.hbm.xml" />--> </session-factory> </hibernate-configuration> 这个是我的hibernate配置文件 -------------------------------- <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.sjy.hibernate.model"> <class name="Student" table="student"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <property name="age"></property> </class> </hibernate-mapping> 这个是类的配置文件 ------------------------------ package com.sjy.hibernate.model; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class StudentTest { private static SessionFactory sf; @BeforeClass public static void beforeClass(){ Configuration cfg = new Configuration(); cfg.configure(); ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); sf = cfg.buildSessionFactory(sr); } @Test public void studentTest(){ Student s = new Student(); s.setAge(2); s.setName("hello"); Session session = sf.openSession(); session.beginTransaction(); session.save(s); session.getTransaction().commit(); session.close(); } @AfterClass public static void afterClass(){ sf.close(); } } 这个是我的测试代码 -------------- package com.sjy.hibernate.model; public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 这个是student这个类 ------------------------- 我出的问题是连接oracle11g的时候老出空指针错误而且它里面报的是sf = cfg.buildSessionFactory(sr);sf 的空指针错误求告说解答下这个是什么错误啊 我这个配置换成mysql是好的能建表和插入数据但是换成oracle就成了空指针错误还有我的oracle里面导入的是classes12.jar 和ojdbc1.4jar这个两个包但是我认为不是导入jar包的问题

关于配置Hibernate乐观锁的问题

直接上代码: <br /><pre name="code" class="java">public class DzCyxx extends BaseEntity&lt;dzcyxx&gt; { private static final long serialVersionUID = 1L; @ManyToOne(cascade = { CascadeType.MERGE }) @JoinColumn(name = "RSXX_ID") private HrArchive hrArchives; @ManyToOne(cascade = { CascadeType.MERGE }) @JoinColumn(name = "ZZJG_ID") private DzZzjg dzZzjg; private Date jrzz_d; private String zw_type; private String zzmm_type; private String bm; private Integer sign; @OptimisticLock(excluded=true) @Version private Integer version; } </pre> <br /> <br /> <br />这样配置version好像不对,启动Tomcat就报错: <br />Caused by: org.hibernate.AnnotationException: @OptimisticLock.exclude=true incompatible with @Id, @EmbeddedId and @Version: com.gkhb.mis.sxzz.dzz.bean.DzCyxx.version <br /><br /><strong>问题补充</strong><br />Version用的JPA <br />OptimisticLock用的Hibernate  Annotation

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

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

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

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

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

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

和黑客斗争的 6 天!

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

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

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

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

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

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

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

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

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

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

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

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

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

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

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

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

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

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

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

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中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多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

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

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

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

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

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

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

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

立即提问
相关内容推荐