需要大屏,顺便上来点分辨率就更好了。 一直是 23 寸的双屏幕,最近有个屏幕时间可能比较长了,有点闪了,在准备败一次。 考虑的 Dell,USB-C 供电,DP 可以桥接的屏。 桌上少点电线,看着心情好。 https://www.ossez.com/t/topic/13272
需要大屏,顺便上来点分辨率就更好了。 一直是 23 寸的双屏幕,最近有个屏幕时间可能比较长了,有点闪了,在准备败一次。 考虑的 Dell,USB-C 供电,DP 可以桥接的屏。 桌上少点电线,看着心情好。 https://www.ossez.com/t/topic/13272
和社会风气有很大关系:笑贫不笑娼。 礼义廉耻,多年前都已经没有了。有市场,总有一些跃跃欲试的人。 金钱乃过眼烟云,就那点收入很快就会被花掉,然后呢?然后又能怎么样呢? 不管社会怎么变,但社会一定还是积极的,用身体换不来未来,只能换来经济收入。如果你认为经济收入的一些改善就是未来的话,那只能定义为一个交易。 在交易中,你得到了什么,你失去了什么?
有需求就会有市场。 航空这个职业慢慢的已经从高大上变成了普通职业。不管怎么样,空乘这个职业其实很辛苦的,但是相对市场上其他职业来说,收入尚可。 既然这样的话,那么就会有需求了,有需求自然就有市场。 这个和客户和廉航没有关系,廉航是对客户廉价,只是相对大航空公司来说,空乘职业需要做的事情更多,但是并不是说空乘这个职业的基本要求改变了呀。 另外,想说的是廉价航空公司并不廉价,坑多着呢。别被名字搞晕了。
Happy Coding,好相处,无形之间解决麻烦。 程序员的水平高低没有绝对值,有学习能力的高低,有发现问题能力的强弱。大部分人是知其然不知其所以然,这个和个人没有太大关系,因为语言部分的变化太快,概念太多。 所以水平高低也只局限于在自己了解比较多的领域,很多人定义是给你一个语言,琢磨琢磨几个月能上手,写点代码,来点 debug,如果可以还能来点设计思路啥的,这就算不错了。 程序员其实永远不要把自己定义为自己就是程序员,如果你自己觉得你自己就是写代码的,那你可能在某个代码领域水平很好,但是其实缺失去了很多。 语言,代码就是为了解决生活中的问题的,解决企业需要的。 举个栗子:要求非常简单 CSV 数据导入数据库。 有些人喜欢玩花,搞个 Python 顺便来个数据分析,有些人就中规中矩 Core Java,有些人直接 OpenCSV + SQL,有些人干脆 SQL 工具,有些人 Spring Data,有些人 Hibernate,有些人 PHP,有些干脆做个 API。 上面的解决方案有错吗?其实都没有错,这个时候有些人会多嘴问一句,你数据量有多大,你需要导入多少次,需要做批量吗?就 10 万数据量,你随便写都没问题。如果几千万,上亿?这怎么办? 数据是一次性导入又不是很大,无所谓了,随便写个Test 跑跑就 OK 了。 如果是多次调用,需要多次导入,需要容错,怎么设计呢? 另外数据从哪里来?数据结构怎么样?有没有重复数据?有没有特殊字符?导入的目的是什么?可以有其他方案吗? 如果能够比较准确理解需求,并且能够用语言,框架,工具提出解决方案,并且解决方案符合当前数据量和结构需求的,就是好的程序员;如果什么都不问,上手就哼哧哼哧写的,哪怕把很多高级特性都用出一朵花,可能都算不上是一个好程序员。 https://www.ossez.com/t/topic/13268
应该要明确一个问题就是在中国会赚钱的公司不一定是厉害和令人尊敬的公司。其实在外面也差不多,只是外面市场环境更好,你能做出好东西,养活自己有点发展的问题不大。 编程语言其实说白了也是计算机的一个工具罢了,你只需要使用编程语言来告诉计算机去做什么样的事情。 我们互联网公司的生态不好,公司不怎么鼓励员工的创新,当然这个现状也有一些改变了,比开始的时候好多了,只是要真正从语言开始确实还有很长很长的路要走。 一个语言的存在就是因为一些人对当前的环境不满,然后又找不到替代的方案,然后就自己闲着蛋疼鼓捣一个出来,自己鼓捣肯定没戏,然后就放到网上大家一起折腾,自己的东家公司也比较支持,你就倒腾吧。半年,一年下来,小样还真不错,那我们在一些项目中用用看。然后就继续改进,然后,然后就有了我们伟大互联网公司的拿来主义,帮着一起用。 然后的然后,一门语言就诞生了。 在这个流程中,你看看我们的公司缺了什么? 我们的公司一直都是实用主义,不赚钱的基础研究我们一般不做,在中国的公司有想法,喜欢折腾的人都是另类,领导不喜欢,同事不待见。好不容易找个志同道合的可能开发个半年,发现食不果腹,还要奶孩子,真心没有办法玩呀,项目也就烂尾了。 一些项目放到网上,流言蜚语也一大堆,鼓励的少,BB 的多,生态不好。在这个时候谁有心思去研究那些东西,哪怕是别人把源代码都公开了,我们都还没有读透。 别说语言了,哪怕是 Spring 这个框架,有多少公司和人能真正深入的研究过。Spring 最早的来源就是大家对 EJB 的极度不满,臃肿的部署和开发,为什么我们没有想到再换个思维呢? 与其他所有东西都一样,我们奉行拿来主义,没有创新的土壤,没有狂躁和狂野的内心,我们公司需要的是听话的 Worker,我们公司不需要真正的 Builder。 短期内看不到有这个方面的突破,这个不突破就难有自己的语言。 https://www.ossez.com/t/topic/13267
StringBuffer 和 StringBuilder 的存在是为了解决 String 对象的 immutable (不可变对象)的问题。 因此 StringBuffer 和 StringBuilder 都是可变对象,但是它们之间还是有一点点不同的,主要是在线程安全上面。 No. StringBuffer StringBuilder 1) StringBuffer 是同步的 可以说 StringBuffer 是线程安全的。 StringBuilder 是不同步的。因此 StringBuilder 是线程不安全的。 2) StringBuffer 比 StringBuilder 效率要低。 StringBuilder 的效率比 StringBuffer 更高 因为涉及到线程同步的问题,所以 StringBuffer 和 StringBuilder 的效率是有所差异的。 StringBuilder 是从 JDK 1.5 版本才添加进来的。 在进行字符串拼接或者对字符串涉及到一些操作的时候,可以尽量先使用 StringBuffer 和 StringBuilder 来构建字符串,然后再转换为 String 以提高效率。 因为 JVM 中的对象创建和销毁是需要资源的。 https://www.ossez.com/t/java-stringbuffer-stringbuilder/13266
Mutable object(可变对象) :当对象被创建后,你可以修改对象的状态以及字段。例如 StringBuilder, java.util.Date Immutable object (不可变对象):当对象被创建后,你不能修改对象的状态以及字段,例如包装类,如: Integer, Long,String 等。 绕的地方 当对象被创建后不能被改变?这个说法可能有点绕。其实说的是当对象被创建后就会一直在那里,如果你对对象进行调整,其实不是对老的对象的调整,其实等于你创建了一个新的对象,并对新的对象进行赋值。 Immutable 在 Spring 的 Autowired 注解中比较重要。在 Spring 的 Autowired 三种方式中,只有构造方法的 Autowired 是限制对象不能为 NULL 的,主要也是针对 Immutable 的问题。 实例 下面的代码来自 MIT 的教程,并且以比较常见的 Spring 和 StringBuffer and StringBuilder 为例子。 考察下面的代码: String s = "a"; s = s.concat("b"); // s+="b" and s=s+"b" also mean the same thing 官方的说法有点绕,上面的方法是我们常用的方法连接字符串。在第一步 String 创建对象的时候,我们赋值给对象 s。 在第二行代码,我们将对象 s 的后面再添加一个字符串。 在完成第二行代码后的 s 和 第一行代码的 s 不是同一个对象,等于 JVM 在第二行为你创建了一个新的对象并进行赋值。 StringBuilder sb = new StringBuilder("a"); sb.append("b"); 上面有关可变对象的 StringBuilder 的方法却完全不一样,在完成第一行和第二行后,sb 的这个对象没有改变。 一直都是 sb 这个对象,但是我们 sb 对象中的值改变了。 这就是很多人在编程的时候,会告诉你如果你需要使用 for 循环,或者是使用字符串拼接的时候,尽量使用 StringBuffer,在完成所有的 append 获得需要的字符串后,再使用 toString 转换为 String。 上面的小技巧的根源就在于可变对象或者不可变对象,通过这样可以避免在循环中过多的创建对象,因为在 JVM 中创建对象和销毁对象是占用资源的。 https://www.ossez.com/t/java-mutable-immutable/13265
Field injection is not recommended 警告的主要原因是:使用变量的依赖注入不被推荐。 @Autowired private REListingRepository reListingRepository; 可能很多人都会使用上面代码来进行依赖注入,因为上面的代码最简单,也是可以用的,但有时候你会遇到 IJ 的提示。 原因和处理 这个代码与 Spring 的 Autowired 3 种类注入依赖有关。 变量注入 上面的写法就是变量注入,这是我们遇到警告提示的地方。 Set 方法注入 为了避免上面的警告,我们可以使用 Set 方法来进行注入。 使用 Set 方法的代码如下: private REListingRepository reListingRepository; @Autowired public void setReListingRepository(REListingRepository reListingRepository) { this.reListingRepository = reListingRepository; } 构造器方法注入 另外的,我们还可以使用构造器的方法来进行注入。 上面的代码可以简化为: private REListingRepository reListingRepository; private TownRepository townRepository; @Autowired public TaxServiceImpl(REListingRepository reListingRepository, TownRepository townRepository) { this.reListingRepository = reListingRepository; this.townRepository = townRepository; } 的构造器方法来进行注入。 IJ 快捷键 在 IDEA 中是可以使用快捷键的。 在代码的空白地方,使用快捷键 Alt + Insert。 在弹出的对话框中,你可以看到为你生成构造方法和 Setter 方法的快捷键。 然后选择需要的生成相应的方法即可,而不需要你再手动敲一次。 使用何种依赖注入 我们现在知道了 Spring 有 3 中依赖注入方式。那么我们应该使用何种依赖注入方式? 是使用: Constructor-based or setter-based DI 其实在官方里面已经有一个解释说明了:6. The IoC container 简单来说 Set 方法依赖注入中使用的依赖是可选的,选择依赖的意思是注入的依赖是可以为 NULL 的,当然你也可以在 Set 方法中通过添加 @Required 让依赖不为 NULL。 如果使用构造方法注入依赖的话,那么依赖是不能为 NULL 的。 变量方式注入应该尽量避免,使用set方式注入或者构造器注入,这两种方式的选择就要看这个类是强制依赖的话就用构造器方式,选择依赖的话就用set方法注入。 根据 Spring 官方的说法,如果注入的对象是 immutable objects (不可变对象)的话,依赖的注入是不能为 NULL 的。因此基于上面的示例和说法,Spring 官方是推荐使用构造方法来进行依赖注入,以便于针对不可变对象的注入。 唯一感觉不是非常好的就是代码比较长,看起来不太舒服。 不过使用 IEDA 可以在修改变量后重新使用快捷键生成构造方法。 https://www.ossez.com/t/spring-autowired-field-injection-is-not-recommended/13264/2
这个状态是在卖家接受了买家的出价,并且双方的合同都已经开始执行后的一种状态。 这种状态表示的是合同正在执行的过程中。 为什么会有这个状态,是因为合同的执行过程比较长,通常在 3 个星期到 3 个月都有可能。比如说买家需要进行房屋检查,买家的贷款银行需要获得房产的估价,比如说买家需要这个合同去执行另外一个销售合同等等的一些情况。正是因为这些情况的执行是比较耗费时间的,因此房源在这个时候就会使用这个状态。 在真实的搜索引擎或者 APP 的房源数据中,可能一些公司会使用下面的 2 种状态,也有公司怕麻烦,就使用 Pending 这一个状态。 Pending Pending 是 Under Contract 这状态的一种。这个状态包含了上面描述的情况。表达的意思是房源现在正在执行合同中的条款和时间限制,但是买家还没有入住完成交割。 这个状态还有一个意思是,卖家不再接受新的看房要求。如果有些买家想看房子的话,卖家也不会让你去看了。 Active Under Contract 这个状态和 Pending 的状态一致。但是,这个 Active Under Contract 与 Pending 比较起来唯一的区别就是:卖家继续接受看房。 为什么会有这个情况呢?这个是因为买家可能对现在的合同不是非常满意,或者卖家希望市场上还有更高的出价者。如果你给的价格足够让卖家心动的话,卖家有可能会终止现在的合同。 上面说的是 Under Contract 的 2 个状态,在实际的实践中,卖家怕麻烦,一般懒得让买家再去看房了;反过来,买家也怕麻烦也懒得去看了。因为买家觉得看了也不一定买得到,也懒得花时间去看了。当然,这个情况也不是绝对的,其实也差不多是对半开,都有。这个状态主要看卖家的意愿,一般来说 Agent 都会根据卖家的要求设置状态。 Zillow 的误导 Zillow 是很多人都喜欢用的一个手机 APP,在 Zillow 上面进行搜索的时候,你需要把 Pending & Under Contract 的选项去掉。否则的话,在没有最后 Closed 之前都是可以显示的。 你可能会遇到一种情况就是你找到房子,但是却显示 Pending 也没有办法看房。 例如下面的房子,显示的是 Contingent, 这个状态就是 Active Under Contract 这个状态,但是 Zillow 拉的这个数据是从 MA 的 MLS 系统拉过来的,在 MA 的系统中会显示 Active Under Contract,但是在 NH 的系统中已经显示为 Pending 了。 如下图,Zillow 又会显示 Pending 的状态,所以这里会经常让人很困惑。 有些 Agent 为了增加曝光率,如果 Agent 有多个 MLS 的使用许可的话,通常会多系统录入。 目的是系统会分配不同的 MLS #,很多 Agent 认为这样会增加曝光率,其实作用不大。 因为搜索引擎和信息系统的索引是按照地址索引的,不是按照 MLS# 索引的,如果有重复数据,他们也只会显示认为权重最高的,当然在有多 MLS # 的情况下,后面的 MLS # 也会继续被显示,通常会在第 2 页,或者更加后面了。 不管 Zillow 显示什么状态,通常来说你都需要和你的 Agent 去确认当前的情况,是否可以继续看。如果一套房子你非常满意的话,也许可以让你的 Agent 再和卖家沟通下,否则的话绝大部分人都会忽略掉上面有关 Pending 状态中的房子了。 https://www.ossez.com/t/mls-under-contract/13263
考试是肯定需要的。在考试之前,你需要完成 40 个小时的课时,有些州认可在线的,有些州必须要到课堂上学才可以。 NH 是必须要到课堂上学的。一般来说考试分为联邦的州内的考试。在 NH 70% 算通过。不同州考试内容不一样,一般来说联邦的内容是一样的。如果你已经持有某个州的经纪人资格,但是你希望成为另外一个州的经纪人。 你可以不用从头开始学,你可以申请只考你不具有资格的州的州内部分考试就可以了。 一个大致成为房地产经纪人的流程如下图所示: 这里有几个要点: 考试是联邦和州内的内容同时考的,如果你在第一次考试的时候通过了联邦部分的内容,州内部分内容没有通过的话,下次考试的时候只有州内部分内容。 考试全部通过后,需要在 60 天内找到一个挂靠的经纪公司(Broker)你的许可证才会生效,否则考试成绩会作废的。 挂靠后的许可证可以选择是激活还是不激活,如果你的许可证是不激活状态的话,不能进行房地产交易来获得佣金。 在许可证生效后,每2 年会进行一次年审和更新,在更新之前需要 20 个小时的 CE(Continuing Education)继续教育的证明,否则不能进行许可证更新。 获得的许可证只在本州有效,如果你还希望到其他州进行交易的话,你需要获得其他州的许可证,例如 NH 的许可证是不能在 MA 使用的。