标签 随笔 下的文章 - 第 4 页 - 酷游博客
首页
关于
友链
Search
1
阿里的简历多久可以投递一次?次数多了有没有影响?可以同时进行吗?
45 阅读
2
Java中泛型的理解
40 阅读
3
Java 14 发布了,再也不怕 NullPointerException 了!
38 阅读
4
Java中的可变参数
37 阅读
5
该如何创建字符串,使用" "还是构造函数?
29 阅读
技术
登录
/
注册
找到
26
篇与
随笔
相关的结果
- 第 4 页
2025-01-22
聊聊买房
今天不发技术文章了,来随便聊聊。 很多我的老读者都知道,我2017年我在杭州买了房,已经三年多过去了,为什么这时候又要拿出来说呢? 其实,这篇文章不是想说买房的成功经验,而是想说说我失败的经历。 虽然房子早就买好了,但是我在买房失败这条道路上越走越远。 1 我是2017年买的房子,当时是因为刚需,所以从家里拿了一些钱,又从公司的ihome(阿里员工购房无息贷款)中借了一部分钱,最终凑上了首付。 但是,这是我失败的第一步。 因为,现在回头想想,当时买房的时候,实在是考虑的因素太少了,匆匆忙忙的就上车了。 第一个错误,没有考虑新房 首先,当时买房的时候,直接考虑了二手房,当时的想法很简单,觉得二手房买过来就能住,图省事儿。 但是,实际上当时杭州的房价已经处于倒挂的状态了。二手房要比新房更贵一些。 而且二手房交易还有中介费、并且当时我买的这个装修其实并没有多好。。。 而现在很多新房都是自带精装修的,也是交付之后差不多就可以直接住的。 很多人说新房是不是没有那么完善的配套设施呢?但是说实话,我自己买的这一套,配套设施也很差,而且没有什么发展空间了。而新房至少还会有一些新的规划。 现在想想,当时我之所以这么热衷于二手房,还有一个重要的原因,那就是我太在乎离公司近这件事情了。 这就是我当时犯下的第二个错误。 第二个错误,只考虑离公司近的因素 因为当时我在滨江上班,所以,买房的时候主要,或者说是只考虑滨江的房子。 而当时滨江已经没什么新的楼盘了,而因为受到手里资金的限制,所以能选择的余地非常有限。 因为当时相当于拿出自己所有的积蓄,并且还处于负债的情况下凑的首付。所以当时觉得短期内很难买车,就想着离公司近,会舒服一些。 但是,现在想想真的是太傻了。 首先,公司不可能是一直不变的。尤其是对于我们做软件开发的人来说。买房子的时候,不仅仅要考虑自己当前的工作地点,还需要考虑后面哪里的机会会多一些。 另外,一辆车其实没有多少钱,十几万的车,付上几万的首付就能开回家了。所以,买车是很快的事情,所以,距离根本不是什么大问题。 因为只考虑离公司近,所以就忽略了很多其他的因素,比如周边的其他配套设置。 比如商圈、医院、地铁,还有最重要的学区! 这就是犯下的第三个错误。 第三个错误,没有考虑学区 当时买房的时候,感觉孩子这件事离我很遥远,先上车再说。 当时考虑的是先上车,反正房价也在涨,然后后面再置换就好了。 但是,我忽略了一个问题,好的地段,涨价空间更大,并且卖的时候也更好卖很多。 而学区,是很多人刚开始可能不太会考虑,觉得这个事情还很遥远。但是,这是一个后面必然会面对的问题。而且,现在很多好学校,对于落户时间都有要求。有时候即使是学区,落户晚的话也一样没有学上。 我今年我想着换一个学区房。于是最近看了一些。 发现,好学区的房子,挂出去之后很快就没了。而不好的学区的房子,就很难卖。 而且,价格差距也很大。 小结 前面说了我犯下的3个错误。 以上这三个错误,可以说是环环相扣的,可能因为一个不正确的想法导致了另一个想法,进而导致最终的决定。 可能有人会说,是不是因为钱不够才导致没能选上好地段,好学区呢? 但是,其实也不完全是。 当时和我几乎同时买房,差不多同样预算的同事有很多。 大家现在的情况千差万别。 某同事A,买了我们公司另外一个园区附近的新房,当时那里还比较荒凉,房子这两年刚刚交付,他转岗到那面了,已经搬进去住了,现在房价已经翻了一倍。 某同事B,买了离公司10公里左右的学区房,现在这个房子从3万涨到了7万。孩子即将入学那所杭州排名前十的小学。他们家附近就是地铁站,还有各种商场。地段真的超级好。 某同事C,买了当时刚刚开发中的奥体商圈,现在房价已经翻了一倍多,但是小孩子不能上杭州市区的高中。 某同事D,从17年开始看房,到现在还没买成。 同样是三四年过来了,大家当初做的不同的决定,最终造就了不同的结果。 所以,我在这里奉劝大家,买房的时候,要全方面的考虑,把各种因素全部都考虑进去,然后再慎重的做一个决定。 不管你的目的是什么,刚需还是投资,要把自己的目光放长远点。虽然什么事情都不能一步到位,但是就算你后面要换,也更加容易一些。 2 关于户口 我是2017年买的房子,户口也是2017年落到杭州的。 我其实2015年就来了杭州,但是当时户口并没有迁过来。 主要原因是因为我自己是农村户口,都说农村户口值钱怎样怎样的,我也不懂,所以一直没迁过来。 但是后面了解下来,我家那面的农村户口没啥用,因为宅基地已经在拆迁后就没有了。而分的地也不值钱。 所以,在2018年之后我才迁过来。 为啥说这个呢。 因为2020年刚开年,杭州出了新政。在杭州落户不满5年的家庭,不能买二套房。。。 而我的户口,如果2015年就迁过来,现在已经满5年了。而且我还能申请杭州的E级人才,人才可以参与杭州红盘的摇号。 而我的同事就摇到红盘了,周边房价达到6万多,他摇中的新盘只需要4万多。。。 关于房票 杭州的购房政策,现在是首套房付3成,二套房付6成。 我自己的第一套房,在前面讲过了,匆匆忙忙的用掉了。 而我老婆,在当时还是我女朋友,她做了一个”更错误”的决定,那就是在老家买了一套房子。 杭州的政策是认房认贷的,只要有贷款记录,在杭州买房都算6成首付!!! 虽然,从其他的角度讲,我完全她买了老家那套房子的。但是,如果站在投资的角度,她的那个房票,完完全全是浪费掉了。 但是,其实有很多其他的操作方式可以两全其美的,比如用父母的名字在老家购房等等。 而我们,当时没想那么多,就觉得可能短时间内也买不起第二套房,所以就这样浪费掉了。 关于结婚 我和我媳妇儿是2028年领的证。当时领证的时候确实考虑到会不会影响购房指标的事情。 因为在领证之前,我(单身)已经没有在杭购房资格了,但是她(单身)还有,只不过需要付6成。 在领证之后,我们(家庭)在杭州是可以再买一套的,也是6成首付。 所以,当时我们觉得,领不领证,对我们没啥影响,都是还能再买一套,付6成。 但是,2020年初,出了新政。家庭购房更加严格,需要落户满五年才能买二套房。 而如果我们还没领证的话,她作为单身,是符合缴满2年社保这项要求,可以买她在杭州的首套房的。 小结 这部分说了几件事,我不是劝大家尽早迁移户口,也不是劝大家拖着不领证。 而是想告诉大家,政策是变化的,而且只会越来越严。 不仅仅是北上广深杭这样的城市,任何城市的政策都只会越来越严格。 所以,在做任何决定之前,一定要考虑这个因素。 我们这几年,就是每一步都被政策隔离在外了。感觉每一条政策都是针对我们制定的一样。 3 说了这么多,就是通过我自己的亲身经历,奉劝大家一定要珍惜自己的购房者资格,做决定值钱要全方位考虑,并且要考虑政策是在不断缩紧的。 但是,其实现在很多城市的房子,慢慢的投资属性越来越小了,因为门槛越来越高,流通性越来越差了。 所以很多人说,这对于刚需来说时间好事儿。但是我其实并不完全赞同。 这里,其实还想吐槽一下杭州的新政。 政策的制定目的是落实房住不炒,限制房价。但是其实很多人,比如我,并不是要炒,而是单单纯纯的改善、置换,也被完全限制住了。 我其实最近才了解到,早些年,很多人有各种办法上车,上多辆车。那办法真的是层出不穷,了解下来之后才发现,自己真的是太年轻了。 最重要的是,政策限制的永远都是那些还没上车的人。。。
技术
# 随笔
酷游
1月22日
0
7
0
2025-01-22
[好书推荐]Java编程思想
Java编程思想(第4版) 原作名: Thinking in Java 中文版: Java编程思想(第4版) 作者: Bruce Eckel 译者: 陈昊鹏 出版社: 机械工业出版社 出版时间: 2007-6 豆瓣评分: 9.1 分 推荐理由 本书赢得了全球程序员的广泛赞誉,并斩多项奖项: 2003年《Software Development》杂志最佳书籍Jolt大奖 2003年《Java Developer’s Journal》读者选择最佳书籍奖 2001年《Java World》编辑选择最佳书籍奖 2000年《Java World》读者选择最佳书籍奖 1999年《Software Development》杂志最佳产品奖 1998年《Java Developer’s Journal》编辑选择最佳书籍奖 从本书获得的各项大奖中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。 有人说这本书是Java开发入门的经典书籍,也有人说这本书并不适合初学者阅读。本人以为,该书绝对是一本十分经典的Java书籍,但是适合于有一定Java基础并且对面向对象有一定理解的人阅读。通过本书把自己零散的知识连贯成一个体系。 简介 本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。 作者简介 Bruce Eckel是MindView公司(www.MindView.net)的总裁,该公司向客户提供软件咨询和培训。他是C++标准委员会拥有表决权的成员之一,拥有应用物理学学士和计算机工程硕士学位。除本书外,他还是《C++编程思想》的作者,并与人合著了《C++编程思想 第2卷》(这两本书的英文影印版及中文版均已由机械工业出版社引进出版)及其他著作。他已经发表了150多篇论文,还经常参加世界各地的研讨会并进行演讲。 目录 出版者的话 专家指导委员会 读者评论 关于《Thinking in C++》 译者序 译者简介 前言 绪论 第1章 对象导论 1 1.1 抽象过程 1 1.2 每个对象都有一个接口 2 1.3 每个对象都提供服务 4 1.4 被隐藏的具体实现 4 1.5 复用具体实现 5 1.6 继承 6 1.6.1 “是一个”与“像是一个”关系 8 1.7 伴随多态的可互换对象 8 1.8 单根继承结构 11 1.9 容器 11 1.9.1 参数化类型(范型) 12 1.10 对象的创建和生命期 13 1.11 异常处理:处理错误 14 1.12 并发编程 14 1.13 Java与Internet 15 1.13.1 Web是什么 15 1.13.2 客户端编程 16 1.13.3 服务器端编程 19 1.14 总结 20 第2章 一切都是对象 21 2.1 用引用操纵对象 21 2.2 必须由你创建所有对象 22 2.2.1 存储到什么地方 22 2.2.2 特例:基本类型 23 2.2.3 Java中的数组 24 2.3 永远不需要销毁对象 24 2.3.1 作用域 24 2.3.2 对象的作用域 25 2.4 创建新的数据类型:类 25 2.4.1 字段和方法 26 2.5 方法、参数和返回值 27 2.5.1 参数列表 27 2.6 构建一个Java程序 28 2.6.1 名字可见性 28 2.6.2 运用其他构件 28 2.6.3 static 关键字 29 2.7 你的第一个Java程序 30 2.7.1 编译和运行 31 2.8 注释和嵌入式文档 32 2.8.1 注释文档 32 2.8.2 语法 33 2.8.3 嵌入式HTML 33 2.8.4 一些标签示例 34 2.8.5 文档示例 35 2.9 编码风格 36 2.10 总结 36 2.11 练习 37 第3章 操作符 38 3.1 更简单的打印语句 38 3.2 使用Java操作符 39 3.3 优先级 39 3.4 赋值 39 3.4.1 方法调用中的别名问题 40 3.5 算术操作符 41 3.5.1 一元加、减操作符 43 3.6 自动递增和递减 43 3.7 关系操作符 44 3.7.1 测试对象的等价性 44 3.8 逻辑操作符 45 3.8.1 短路 46 3.9 直接常量 47 3.9.1 指数记数法 48 3.10 按位操作符 49 3.11 移位操作符 49 3.12 三元操作符 if-else 52 3.13 字符串操作符 + 和 += 53 3.14 使用操作符时常犯的错误 54 3.15 类型转换操作符 54 3.15.1 截尾和舍入 55 3.15.2 提升 56 3.16 Java没有sizeof 56 3.17 操作符小结 56 3.18 总结 63 第4章 控制执行流程 64 4.1 true和false 64 4.2 if-else 64 4.3 迭代 65 4.3.1 do-while 65 4.3.2 for 66 4.3.3 逗号操作符 67 4.4 Foreach语法 67 4.5 return 69 4.6 break和 continue 69 4.7 臭名昭著的goto 70 4.8 switch 73 4.9 总结 75 第5章 初始化与清理 76 5.1 用构造器确保初始化 76 5.2 方法重载 77 5.2.1 区分重载方法 79 5.2.2 涉及基本类型的重载 79 5.2.3 以返回值区分重载方法 82 5.3 默认构造器 83 5.4 this关键字 84 5.4.1 在构造器中调用构造器 85 5.4.2 static的含义 86 5.5 清理:终结处理和垃圾回收 87 5.5.1 finalize()的用途何在 87 5.5.2 你必须实施清理 88 5.5.3 终结条件 88 5.5.4 垃圾回收器如何工作 89 5.6 成员初始化 91 5.6.1 指定初始化 93 5.7 构造器初始化 94 5.7.1 初始化顺序 94 5.7.2 静态数据的初始化 95 5.7.3 显式的静态初始化 96 5.7.4 非静态实例初始化 97 5.8 数组初始化 98 5.8.1 可变参数列表 102 5.9 枚举类型 105 5.10 总结 107 第6章 访问权限控制 109 6.1 包:库单元 110 6.1.1 代码组织 110 6.1.2 创建独一无二的包名 111 6.1.3 定制工具库 114 6.1.4 用 import改变行为 115 6.1.5 对使用包的忠告 115 6.2 Java访问权限修饰词 116 6.2.1 包访问权限 116 6.2.2 public:接口访问权限 116 6.2.3 private: 你无法访问 118 6.2.4 protected:继承访问权限 118 6.3 接口和实现 120 6.4 类的访问权限 121 6.5 总结 123 第7章 复用类 125 7.1 组合语法 125 7.2 继承语法 127 7.2.1 初始化基类 129 7.3 代理 130 7.4 结合使用组合和继承 132 7.4.1 确保正确清理 133 7.4.2 名称屏蔽 135 7.5 在组合与继承之间选择 137 7.6 protected关键字 138 7.7 向上转型 139 7.7.1 为什么称为向上转型 139 7.7.2 再论组合与继承 140 7.8 final关键字 140 7.8.1 final 数据 140 7.8.2 final 方法 143 7.8.3 final 类 144 7.8.4 有关final的忠告 145 7.9 初始化及类的加载 145 7.9.1 继承与初始化 146 7.10 总结 147 第8章 多态 148 8.1 再论向上转型 148 8.1.1 忘记对象类型 149 8.2 转机 150 8.2.1 方法调用绑定 150 8.2.2 产生正确的行为 151 8.2.3 可扩展性 153 8.2.4 缺陷:“覆盖”私有方法 156 8.2.5 缺陷:域与静态方法 156 8.3 构造器和多态 157 8.3.1 构造器的调用顺序 157 8.3.2 继承与清理 159 8.3.3 构造器内部的多态方法的行为 162 8.4 协变返回类型 164 8.5 用继承进行设计 165 8.5.1 纯继承与扩展 166 8.5.2 向下转型与运行时类型识别 167 8.6 总结 168 第9章 接口 169 9.1 抽象类和抽象方法 169 9.2 接口 172 9.3 完全解耦 174 9.4 Java中的多重继承 178 9.5 通过继承来扩展接口 180 9.5.1 组合接口时的名字冲突 181 9.6 适配接口 181 9.7 接口中的域 183 9.7.1 初始化接口中的域 184 9.8 嵌套接口 185 9.9 接口与工厂 186 9.10 总结 188 第10章 内部类 190 10.1 创建内部类 190 10.2 链接到外部类 191 10.3 使用.this与.new 193 10.4 内部类与向上转型 194 10.5 在方法和作用域内的内部类 195 10.6 匿名内部类 196 10.6.1 再访工厂方法 199 10.7 嵌套类 201 10.7.1 接口内部的类 202 10.7.2 从多层嵌套类中访问外部类的 成员 203 10.8 为什么需要内部类 204 10.8.1 闭包与回调 205 10.8.2 内部类与控制框架 207 10.9 内部类的继承 212 10.10 内部类可以被覆盖吗 212 10.11 局部内部类 214 10.12 内部类标识符 215 10.13 总结 215 第11章 持有对象 216 11.1 泛型和类型安全的容器 216 11.2 基本概念 219 11.3 添加一组元素 220 11.4 容器的打印 221 11.5 List 223 11.6 迭代器 226 11.6.1 ListIterator 227 11.7 LinkedList 228 11.8 Stack 229 11.9 Set 231 11.10 Map 233 11.11 Queue 236 11.11.1 PriorityQueue 237 11.12 Collection和Iterator 238 11.13 Foreach与迭代器 241 11.13.1 适配器方法惯用法 243 11.14 总结 248 第12章 通过异常处理错误 248 12.1 概念 249 12.2 基本异常 249 12.2.1 异常参数 250 12.3 捕获异常 250 12.3.1 try块 250 12.3.2 异常处理程序 250 12.4 创建自定义异常 251 12.4.1 异常与记录日志 253 12.5 异常说明 256 12.6 捕获所有异常 256 12.6.1 栈轨迹 257 12.6.2 重新抛出异常 258 12.6.3 异常链 260 12.7 Java标准异常 263 12.7.1 特例:RuntimeException 263 12.8 使用finally进行清理 264 12.8.1 finally用来做什么 265 12.8.2 在return中使用finally 267 12.8.3 缺憾:异常丢失 268 12.9 异常的限制 269 12.10 构造器 271 12.11 异常匹配 275 12.12 其他可选方式 276 12.12.1 历史 277 12.12.2 观点 278 12.12.3 把异常传递给控制台 279 12.12.4 把“被检查的异常”转换为“不受 检查的异常” 279 12.13 异常使用指南 281 12.14 总结 281 第13章 字符串 283 13.1 不可变String 283 13.2 重载“+”与StringBuilder 283 13.3 无意识的递归 287 13.4 String上的操作 288 13.5 格式化输出 289 13.5.1 printf() 289 13.5.2 System.out.format() 289 13.5.3 Formatter类 290 13.5.4 格式化说明符 291 13.5.5 Formatter转换 292 13.5.6 String.format() 294 13.6 正则表达式 295 13.6.1 基础 295 13.6.2 创建正则表达式 297 13.6.3 量词 299 13.6.4 Pattern和Matcher 300 13.6.5 split() 305 13.6.6 替换操作 306 13.6.7 reset() 307 13.6.8 正则表达式与Java I/O 307 13.7 扫描输入 309 13.7.1 Scanner定界符 310 13.7.2 用正则表达式扫描 311 13.8 StringTokenizer 312 13.9 总结 312 第14章 类型信息 313 14.1 为什么需要RTTI 313 14.2 Class对象 314 14.2.1 类字面常量 318 14.2.2 泛化的Class引用 320 14.2.3 新的转型语法 322 14.3 类型转换前先做检查 322 14.3.1 使用类字面常量 327 14.3.2 动态的instanceof 329 14.3.3 递归计数 330 14.4 注册工厂 331 14.5 instanceof 与 Class的等价性 333 14.6 反射:运行时的类信息 334 14.6.1 类方法提取器 335 14.7 动态代理 337 14.8 空对象 341 14.8.1 模拟对象与桩 346 14.9 接口与类型信息 346 14.10 总结 350 第15章 泛型 352 15.1 与C++的比较 352 15.2 简单泛型 353 15.2.1 一个元组类库 354 15.2.2 一个堆栈类 356 15.2.3 RandomList 357 15.3 泛型接口 358 15.4 泛型方法 361 15.4.1 杠杆利用类型参数推断 362 15.4.2 可变参数与泛型方法 363 15.4.3 用于Generator的泛型方法 364 15.4.4 一个通用的Generator 364 15.4.5 简化元组的使用 366 15.4.6 一个Set实用工具 367 15.5 匿名内部类 369 15.6 构建复杂模型 371 15.7 擦除的神秘之处 372 15.7.1 C++的方式 373 15.7.2 迁移兼容性 375 15.7.3 擦除的问题 376 15.7.4 边界处的动作 377 15.8 擦除的补偿 380 15.8.1 创建类型实例 381 15.8.2 泛型数组 383 15.9 边界 386 15.10 通配符 389 15.10.1 编译器有多聪明 391 15.10.2 逆变 393 15.10.3 无界通配符 395 15.10.4 捕获转换 399 15.11 问题 400 15.11.1 任何基本类型都不能作为类型 参数 400 15.11.2 实现参数化接口 401 15.11.3 转型和警告 402 15.11.4 重载 403 15.11.5 基类劫持了接口 404 15.12 自限定的类型 404 15.12.1 古怪的循环泛型 404 15.12.2 自限定 405 15.12.3 参数协变 407 15.13 动态类型安全 409 15.14 异常 410 15.15 混型 412 15.15.1 C++中的混型 412 15.15.2 与接口混合 413 15.15.3 使用装饰器模式 414 15.15.4 与动态代理混合 415 15.16 潜在类型机制 416 15.17 对缺乏潜在类型机制的补偿 420 15.17.1 反射 420 15.17.2 将一个方法应用于序列 421 15.17.3 当你并未碰巧拥有正确的接口时 423 15.17.4 用适配器仿真潜在类型机制 424 15.18 将函数对象用作策略 426 15.19 总结:转型真的如此之糟吗? 430 15.19.1 进阶读物 432 第16章 数组 433 16.1 数组为什么特殊 433 16.2 数组是第一级对象 434 16.3 返回一个数组 436 16.4 多维数组 437 16.5 数组与泛型 440 16.6 创建测试数据 442 16.6.1 Arrays.fill() 442 16.6.2 数据生成器 443 16.6.3 从Generator中创建数组 447 16.7 Arrays实用功能 450 16.7.1 复制数组 450 16.7.2 数组的比较 451 16.7.3 数组元素的比较 452 16.7.4 数组排序 454 16.7.5 在已排序的数组中查找 455 16.8 总结 457 第17章 容器深入研究 459 17.1 完整的容器分类法 459 17.2 填充容器 460 17.2.1 一种Generator解决方案 460 17.2.2 Map生成器 462 17.2.3 使用Abstract类 464 17.3 Collection的功能方法 470 17.4 可选操作 472 17.4.1 未获支持的操作 473 17.5 List的功能方法 474 17.6 Set和存储顺序 477 17.6.1 SortedSet 479 17.7 队列 480 17.7.1 优先级队列 481 17.7.2 双向队列 482 17.8 理解Map 483 17.8.1 性能 484 17.8.2 SortedMap 486 17.8.3 LinkedHashMap 487 17.9 散列与散列码 488 17.9.1 理解hashCode() 490 17.9.2 为速度而散列 492 17.9.3 覆盖hashCode() 495 17.10 选择接口的不同实现 499 17.10.1 性能测试框架 499 17.10.2 对List的选择 502 17.10.3 微基准测试的危险 507 17.10.4 对Set的选择 508 17.10.5 对Map的选择 509 17.11 实用方法 512 17.11.1 List的排序和查询 514 17.11.2 设定Collection或Map为不可 修改 515 17.11.3 Collection或Map的同步控制 516 17.12 持有引用 518 17.12.1 WeakHashMap 519 17.13 Java 1.0/1.1 的容器 520 17.13.1 Vector 和 Enumeration 520 17.13.2 Hashtable 521 17.13.3 Stack 521 17.13.4 BitSet 522 17.14 总结 524 第18章 Java I/O系统 525 18.1 File类 525 18.1.1 目录列表器 525 18.1.2 目录实用工具 528 18.1.3 目录的检查及创建 532 18.2 输入和输出 533 18.2.1 InputStream类型 534 18.2.2 OutputStream类型 535 18.3 添加属性和有用的接口 535 18.3.1 通过FilterInputStream从InputStream 读取数据 535 18.3.2 通过FilterOutPutStream向Output- Stream写入 536 18.4 Reader和Writer 537 18.4.1 数据的来源和去处 537 18.4.2 更改流的行为 538 18.4.3 未发生变化的类 539 18.5 自我独立的类:RandomAccessFile 539 18.6 I/O流的典型使用方式 539 18.6.1 缓冲输入文件 540 18.6.2 从内存输入 540 18.6.3 格式化的内存输入 541 18.6.4 基本的文件输出 542 18.6.5 存储和恢复数据 543 18.6.6 读写随机访问文件 544 18.6.7 管道流 545 18.7 文件读写的实用工具 545 18.7.1 读取二进制文件 548 18.8 标准I/O 548 18.8.1 从标准输入中读取 548 18.8.2 将System.out转换成PrintWriter 549 18.8.3 标准I/O重定向 549 18.9 进程控制 550 18.10 新I/O 551 18.10.1 转换数据 554 18.10.2 获取基本类型 556 18.10.3 视图缓冲器 557 18.10.4 用缓冲器操纵数据 560 18.10.5 缓冲器的细节 560 18.10.6 内存映射文件 563 18.10.7 文件加锁 566 18.11 压缩 568 18.11.1 用GZIP进行简单压缩 568 18.11.2 用Zip进行多文件保存 569 18.11.3 Java档案文件 570 18.12 对象序列化 571 18.12.1 寻找类 574 18.12.2 序列化的控制 575 18.12.3 使用“持久性” 581 18.13 XML 586 18.14 Preferences 588 18.15 总结 589 第19章 枚举类型 590 19.1 基本enum特性 590 19.1.1 将静态导入用于enum 591 19.2 向enum中添加新方法 591 19.2.1 覆盖enum的方法 592 19.3 switch语句中的enum 593 19.4 values()的神秘之处 594 19.5 实现,而非继承 596 19.6 随机选取 596 19.7 使用接口组织枚举 597 19.8 使用EnumSet替代标志 600 19.9 使用EnumMap 602 19.10 常量相关的方法 603 19.10.1 使用enum的职责链 606 19.10.2 使用enum的状态机 609 19.11 多路分发 613 19.11.1 使用enum分发 615 19.11.2 使用常量相关的方法 616 19.11.3 使用EnumMap分发 618 19.11.4 使用二维数组 618 19.12 总结 619 第20章 注解 620 20.1 基本语法 620 20.1.1 定义注解 621 20.1.2 元注解 622 20.2 编写注解处理器 622 20.2.1 注解元素 623 20.2.2 默认值限制 624 20.2.3 生成外部文件 624 20.2.4 注解不支持继承 627 20.2.5 实现处理器 627 20.3 使用apt处理注解 629 20.4 将观察者模式用于apt 632 20.5 基于注解的单元测试 634 20.5.1 将@Unit用于泛型 641 20.5.2 不需要任何“套件” 642 20.5.3 实现@Unit 642 20.5.4 移除测试代码 647 20.6 总结 649 第21章 并发 650 21.1 并发的多面性 651 21.1.1 更快的执行 651 21.1.2 改进代码设计 653 21.2 基本的线程机制 653 21.2.1 定义任务 654 21.2.2 Thread类 655 21.2.3 使用Executor 656 21.2.4 从任务中产生返回值 658 21.2.5 休眠 659 21.2.6 优先级 660 21.2.7 让步 661 21.2.8 后台线程 662 21.2.9 编码的变体 665 21.2.10 术语 669 21.2.11 加入一个线程 669 21.2.12 创建有响应的用户界面 671 21.2.13 线程组 672 21.2.14 捕获异常 672 21.3 共享受限资源 674 21.3.1 不正确地访问资源 674 21.3.2 解决共享资源竞争 676 21.3.3 原子性与易变性 680 21.3.4 原子类 684 21.3.5 临界区 685 21.3.6 在其他对象上同步 689 21.3.7 线程本地存储 690 21.4 终结任务 691 21.4.1 装饰性花园 691 21.4.2 在阻塞时终结 694 21.4.3 中断 695 21.4.4 检查中断 701 21.5 线程之间的协作 702 21.5.1 wait()与notifyAll() 703 21.5.2 notify()与notifyAll() 707 21.5.3 生产者与消费者 709 21.5.4 生产者-消费者与队列 713 21.5.5 任务间使用管道进行输入/输出 717 21.6 死锁 718 21.7 新类库中的构件 722 21.7.1 CountDownLatch 722 21.7.2 CyclicBarrier 724 21.7.3 DelayQueue 726 21.7.4 PriorityBlockingQueue 728 21.7.5 使用ScheduledExecutor的温室控 制器 730 21.7.6 Semaphore 733 21.7.7 Exchanger 735 21.8 仿真 737 21.8.1 银行出纳员仿真 737 21.8.2 饭店仿真 741 21.8.3 分发工作 744 21.9 性能调优 748 21.9.1 比较各类互斥技术 748 21.9.2 免锁容器 754 21.9.3 乐观加锁 760 21.9.4 ReadWriteLock 761 21.10 活动对象 763 21.11 总结 766 21.12 进阶读物 767 第22章 图形化用户界面 768 22.1 applet 769 22.2 Swing基础 769 22.2.1 一个显示框架 771 22.3 创建按钮 772 22.4 捕获事件 773 22.5 文本区域 774 22.6 控制布局 776 22.6.1 BorderLayout 776 22.6.2 FlowLayout 776 22.6.3 GridLayout 777 22.6.4 GridBagLayout 777 22.6.5 绝对定位 778 22.6.6 BoxLayout 778 22.6.7 最好的方式是什么 778 22.7 Swing事件模型 778 22.7.1 事件与监听器的类型 779 22.7.2 跟踪多个事件 783 22.8 Swing组件一览 785 22.8.1 按钮 785 22.8.2 图标 787 22.8.3 工具提示 788 22.8.4 文本域 789 22.8.5 边框 790 22.8.6 一个迷你编辑器 791 22.8.7 复选框 792 22.8.8 单选按钮 793 22.8.9 组合框 793 22.8.10 列表框 794 22.8.11 页签面板 796 22.8.12 消息框 796 22.8.13 菜单 798 22.8.14 弹出式菜单 802 22.8.15 绘图 803 22.8.16 对话框 805 22.8.17 文件对话框 808 22.8.18 Swing组件上的HTML 809 22.8.19 滑块与进度条 810 22.8.20 选择外观 811 22.8.21 树、表格和剪贴板 812 22.9 JNLP与Java Web Start 812 22.10 Swing与并发 816 22.10.1 长期运行的任务 816 22.10.2 可视化线程机制 822 22.11 可视化编程与JavaBean 823 22.11.1 JavaBean是什么 824 22.11.2 使用Introspector抽取出BeanInfo 825 22.11.3 一个更复杂的Bean 829 22.11.4 JavaBean与同步 831 22.11.5 把Bean打包 834 22.11.6 对Bean更高级的支持 835 22.11.7 有关Bean的其他读物 836 22.12 Swing的可替代选择 836 22.13 用Flex构建Flash Web客户端 836 22.13.1 Hello, Flex 837 22.13.2 编译MXML 838 22.13.3 MXML与ActionScript 838 22.13.4 容器与控制 839 22.13.5 效果与样式 840 22.13.6 事件 841 22.13.7 连接到Java 841 22.13.8 数据模型与数据绑定 843 22.13.9 构建和部署 843 22.14 创建SWT应用 844 22.14.1 安装SWT 845 22.14.2 Hello, SWT 845 22.14.3 根除冗余代码 847 22.14.4 菜单 848 22.14.5 页签面板、按钮和事件 849 22.14.6 图形 852 22.14.7 SWT中的并发 853 22.14.8 SWT还是Swing 855 22.15 总结 855 22.15.1 资源 855 附录A 补充材料 856 附录B 资源 859 索引 863 购买地址 淘宝购买
技术
# 随笔
酷游
1月22日
0
6
0
2025-01-22
技术面试,面试官竟然给我出了一个脑筋急转弯,还问我王者荣耀什么段位?
我叫小志,是一个毕业3年的Java后端开发,在一家传统银行的研发中心负责主要的研发岗位。虽然这份工作并不是很忙,给我的薪水也算不错,但是用到的技术都是比较落后的,而且银行都比较保守,所以迭代速度也没那么快。 身边的同事大多数也都是比较安于现状的,有一些新的技术也不乐于尝试,甚至有些老员工就是每天摸鱼,从早上混到晚上。 最近和一个前同事聊天,他之前和我水平差不多,后来跳去了国内的一家互联网大厂,在他的怂恿下,我决定尝试换一家公司。 于是我准备了一份简历,投递了几家我有意向的大厂。我还是比较有自信的,一方面我有几年银行的开发经验,而且我那个前同事水平还不如我呢,都轻轻松松拿到了P6+的Offer。 很快我就接到了第一家面试邀约。打电话过来约我的是一个大厂的面试官,他问我什么时候有空,想要和我约一下电话面试的时间。我想都没想,直接约了当天晚上。 我还挺佩服大厂的效率,这么快就约面试了。面试之前为了保证有一个好的心情,我出去看了一场电影,《半个喜剧》,演的还不错。 到了晚上开始面试了,很久没面试了,但是我丝毫不紧张,毕竟我并不是初出茅庐的学生了。 面试官一上来让我做自我介绍,我也没什么准备,就简单说了一下自己的经历以及最近做过的一些项目这样的。 这时候我才知道,面试我的部门是一个互联网金融相关的部门,面试官似乎对业务比较感兴趣,可是这明明应该是一场技术面试啊,为什么上来就问我一些和信贷、支付相关的业务呢。 这些东西我接触的并不多啊。虽然工作中都是做这些业务的开发,但是我只负责其中一个模块的功能实现,哪能对整个业务了解的那么清楚啊。 所以我简单的应付了他一下,友善提醒他问我一些技术问题。 面试官还挺识趣的,接着问我一些和我做过的项目有关的问题,但是我感觉问的这些问题都太偏了,或者说有些问题根本不是我该考虑的呀,还有一些场景我根本没遇到过让我怎么回答。 比如都是这样的问题: 你们为什么要使用消息中间件,技术选择是怎么做的?对其他消息中间件对比过吗? 你们和上下游系统之间的交互,怎么解决数据一致性问题的?超时了怎么办? 你们的数据量有多大,峰值QPS是多少? 这些问题我平时都不太关心的呀,所以我基本没怎么回答。 可能是他也发现自己问的问题太偏门了,所以转而问我 你对Java基础知识掌握的怎么样啊? 这种问题让我怎么回答呢,我能说不好吗?肯定是说还可以啊。 接着他开始问我一些和并发相关的问题,上来就是Java内存模型,我向来不爱背概念,所以这个我回答的不好。 他又追问我一些和锁原理有关的知识,但是我平时工作的时候很少直接用到并发编程,所以和面试官说了下这个情况,让他问一些其他方面的问题,毕竟并发在工作中直接用到机会确实不多,面试官也表示理解。 接着他开始问我的知识,都是我上大学时候一些知识,都是很基础的东西,我现在基本都忘的差不多了。先问了JVM,又问了集合类,最后还问我和异常有关的东西。 但是这些知识很久没有复习了,也不是太能想的起来的,但是我还是对于一些知识根据我自己的印象回答上一些关键字的,虽然不是很顺畅,但是我觉得我回答的还可以的。 这段关于Java知识的问题问了挺久的,接着有大概4-5秒的沉默,接下来的事情我万万没想到。 “我们讨论一道概率的问题吧” “要不然我们轻松一下,脑筋急转弯你怎么样?” “你平时看书吗?最近在看什么技术书籍啊?” “那你平时的时间都做什么呢?打王者荣耀吗?那你什么段位啊?” 这个面试官问的东西越来越让我摸不到头脑,这都是什么鬼问题。后来他似乎听出我言语中的不满了。然后就又简单的说了几句就结束了这一场莫名其妙的面试。 我是Leo,在家时我是一个技术宅,在工作时我是个后端技术专家,业余时间我又是一个技术博主。 今天收到一份同事推荐的简历,看到候选人是某个985高校毕业的,并且在国内某大型国有银行做过后端开发,很适合我们部门,于是满怀期待的想要约一下候选人的面试 。 电话打过去之后,很顺利,约在了当天晚上的面试。这位候选人答应的如此爽快,看了最近应该也接到了很多其他公司的面试,一定是准备非常充分。晚上面试的时候一定要想办法争取下这位优秀的候选人。 晚上面试的时候,候选人做自我介绍的时候好像有点紧张,有一点点不是很流畅,但是我还是听懂了他是负责银行信贷系统的业务开发的。 正好我们部门也有信贷相关的业务,于是我想着问他几个业务上的问题,一方面看看他适不适合我们这个部门,另外也看下他是不是一个懂业务的技术开发。 这一点我认为还是很重要的,我们本次要招的是一个高级Java开发的岗位,要求要懂业务。不懂业务的业务开发不是个好开发。 不过不知道是不是传统企业内部体系的问题,候选人好像对自己负责的业务的上下游了解的并不是特别多。只是对自己负责的模块还有一些了解。 我面试的时候,从来不会事先准备题库,都是根据面试者回答的情况,从他的回答中摘选出我感兴趣的点追问下去。 大多数情况都是从业务问到技术选型,问到技术架构,再问到如何解决遇到的技术难点,再过渡到一些技术细节,进而问一下Java基础知识。 所以,业务上问过了之后,我问了一些关于项目的内容,主要是想考察下这位候选人有没有钻研精神,我们不喜欢那种只会用,而不去考虑为什么用的人。 但是由于候选人回答的并不好,只能转而问一些他可能比较擅长的就是工程开发内容,那就是Java基础知识吧。 因为面试一个3年的,有丰富经验的开发,所以我会比较关注一些比较高级一点的知识,比如并发编程、JVM等 什么是Java内存模型 synchronized的原理 JVM运行时区域有哪些? GC算法有了解吗? 如何判断一个对象可回收? 了解Java的类加载机制吗? 但是候选人说这两部分内容平时工作中接触的不多。有些问题还能回答上一些,而有些问题好像面试者对于一些名词都比较陌生,比如”双亲委派”。 虽然这些日常开发用到的不多,但是这些都是很基础的知识,一旦线上出现故障,不了解这些知识只能是个无头苍蝇。 好吧,没用过的我不问了,那集合类一定用过咯。先来个开胃的吧: 你知道HasMap和concurrentHashMap的区别吗? 不知道啥是concurrentHashMap? 那HasMap和hashtable的区别呢? 平时只用了一些ArrayList。 那说说ArrayList和LinkedList的区别呢? 额、额、、额额、、、我本来还准备问一些和并发包有关的,比如CAS、COW之类的,看来也用不到了。 气氛越来越尴尬,作为一个面试官,我必须保持冷静,保持微笑,保持礼貌! 试图问一下面试者自己觉得自己对Java中哪部分了解最多吧。 异常有几种类型? 工作中遇到过哪些运行时异常 异常应该如何处理? 额、还是回答的不是很好吗?可是面试时间才过了20分钟,我不能就草草的结束啊 ,那样对他太不尊重了,我还是要尽力挖掘下他的潜力。 那我们讨论一道概率学的问题吧。 假设有一个村子,所有夫妻约定如果生出一个女孩,就停止。如果生出一个男孩,就继续生,直到生出女孩位置。那么估算下,很久很久以后,这个村子的男女比例 概率学的问题有一个好处,就是候选人可以多些时间思考,这样又过了大概5分钟。 作为一个面试官,我代表的是公司形象,我不能笑,怎么样也得再坚持5分钟,凑够半小时的面试时间。不然会给候选人留下不好的印象,甚至阴影。 要不然我们出一个脑筋急转弯吧? 上课老师抽查背课文,小猪,小狗,小猫都举手了,老师会叫谁? …. …. OK。时间差不多了,问下候选人有没有什么问题要问我吧。 我都准备好要回答他我们的部门是做什么的,主要用哪些技术之类的了。 但是结果候选人说没有了… 好吧,在对候选人表示感谢之后,在尴尬中结束了这次尴尬的面试。 不过呢,作为一个面试官,通过这样的面试过程,还是有一些建议给到大家: 1、珍惜面试机会,一定要做好准备再参加面试。 2、不管是什么程度的技术人员,最基础的技术知识还是要了解的。 3、不要只闷头做业务,还要没事儿回顾下自己的技术,千万不能荒废。 4、面试的时候,其实可以引导面试官问一下自己擅长的东西。 5、别试图蒙混过关,在我这,没这可能。 本故事纯属虚构,如有雷同,纯属见鬼。 最后,祝大家都能拿到满意的Offer,顺手打个广告: 阿里巴巴新零售技术部,企业金融服务技术部有大量后端Java研发的HC,目标层级P6-P7,工作地点杭州,欢迎投递简历:hollischuang@gmail.com 岗位描述及要求:
技术
# 随笔
酷游
1月22日
0
7
0
2025-01-22
世界上最难学的编程语言,Java只排第三,第一你绝对想不到!
TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据,反映某个编程语言的热门程度。 2018年12月的编程语言排行榜已经出炉,Python重回前三,Go语言跌出前十,Visual Basic.NET涨幅明显,保持第五名。  在这全世界排名前二十的所有编程语言中,哪种语言最难学呢? 关于到底是什么算难学,很多人有自己的看法,衡量标准各不相同。 本文从一个全新的!无可反驳的!!角度来分析一下各个编程语言哪学程度。 本次参与最难学编程语言排名的选手我从以上榜单中筛选了10位大家比较熟知的,他们分别是:Java、C、Python、C++、.NET、JavaScript、PHP、Objective-C、Go、R。 接下来看看这十种语言的难学程度的排名情况吧。 第十名、R语言 颁奖词 R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R基于S语言的一个GNU计划项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。R的语法是来自Scheme。 提名词 R语言作者,George Ross Ihaka:在奥克兰大学统计系任副教授,是R语言的最初作者。 排名理由 作者头发浓密度:100%  第九名、Python 颁奖词 Python是一种广泛使用的高级编程语言,属于通用型编程语言。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。 提名词 Python语言作者,Guido van Rossum:生于荷兰哈勒姆,计算机程序员,为Python程序设计语言的最初设计者及主要架构师。 排名理由 作者头发浓密度:95%  第八名、C语言 颁奖词 C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点。C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。 提名词 C语言作者,Dennis MacAlistair Ritchie:美国计算机科学家。黑客圈子通常称他为“dmr”。他是C语言的创造者、Unix操作系统的关键开发者,对计算机领域产生了深远影响,并与肯·汤普逊同为1983年图灵奖得主。 排名理由 作者头发浓密度:85%(+胡须)  第七名、Go 颁奖词 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。 提名词 Go语言作者,Robert C. Pike:来自加拿大的程序员,曾经加入贝尔实验室,为 UNIX小组的成员。他与肯·汤普逊共同开发了UTF-8。目前为 google的工程师,参与编程语言 Go与Sawzall的研发工作。 排名理由 作者头发浓密度:80%  第六名、JavaScript 颁奖词 JavaScript,通常缩写为JS,是一种高级的,解释执行的编程语言。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它已经由ECMA(欧洲计算机制造商协会)通过ECMAScript实现语言的标准化5。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。 提名词 JavaScript语言作者,Brendan Eich:美国程序员与企业家,JavaScript主要创造者与架构师,曾任Mozilla公司的首席技术官,并曾短暂担任首席执行官。 排名理由 作者头发浓密度:75%  第五名、Objective-C 颁奖词 Objective-C是一种通用、高级、面向对象的编程语言。它扩展了标准的ANSI C编程语言,将Smalltalk式的消息传递机制加入到ANSI C中。目前主要支持的编译器有GCC和Clang(采用LLVM作为后端)。 提名词 Objective-C作者,Brad Cox:美国计算机科学家。于傅尔曼大学主修化学与数学,于芝加哥大学取得数学生物学博士学位。Objective-C主要作者。 排名理由 作者头发浓密度:70%  第四名、PHP 颁奖词 PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。 提名词 PHP语言作者,Rasmus Lerdorf:出生于格陵兰岛凯凯塔苏瓦克,是一个丹麦程序员,他拥有加拿大国籍。他也是编程语言PHP的创始人,其中PHP的头两个版本是由他编写的,后来他也参与PHP后续版本的开发。 排名理由 作者头发浓密度:60%  第三名、Java 颁奖词 Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 提名词 Java语言作者,James Gosling:出生于加拿大,软件专家,Java编程语言的共同创始人之一,一般公认他为“Java之父”。 排名理由 作者头发浓密度:50%  第二名、C++ 颁奖词 C++是一种使用广泛的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。 提名词 C++语言作者,Bjarne Stroustrup:生于丹麦奥胡斯郡,计算机科学家。他以创造C++编程语言而闻名,被称为“C++之父”。 排名理由 作者头发浓密度:40%  第一名、Visual Basic .NET 颁奖词 Visual Basic .NET(VB.NET)是.NET Framework框架下的一种多重编程范式高级语言。Visual Basic .NET属Basic系语言,其语法特点是以极具亲和力的英文单词为基础标识,以及与自然语言极其相近的逻辑表达,有时候你会觉得写VB.NET代码就好像在写英文句子一样,从这个角度来说,VB.NET似乎是最高级的一门编程语言,当然在Basic系语言中VB.NET也确实是迄今为止最强大的一门编程语言。 提名词 Visual Basic .NET作者,Alan Cooper:交互设计的提倡者。库珀有些时候被叫做 Visual Basic 之父,虽然大多数的工作是由微软的内部开发团队完成的,但是对于Windows可视化设计工具的创意是来源于库珀的。 排名理由 作者头发浓密度:0%  以上,就是世界上最难学的编程语言前十名,本次大赛组委会认为,作者的头发越稀少,说明这种语言在学习过程中要掉越多的头发,所以,推导出这种语言越难学。 此排名纯属娱乐,如有雷同,纯属见鬼。最后,希望大家都可以好好的保护自己的头发!
技术
# 随笔
酷游
1月22日
0
12
0
2025-01-22
除了996 ICU,GitHub上还有哪些奇葩的项目?
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。是全球最大的同性交友网站,哦不,最大的程序员交流网站。  GitHub是通过Git进行版本控制的软件源代码托管服务,并且,GitHub还引入了一些社交属性。号称是世界上最大的程序员(同性)交友网站。   虽然定位只是一个项目托管工具,但是,显然,GitHub近几年有点被玩坏了,本文就来盘点一下,GitHub上有哪些奇葩的项目!? 996.ICU 工作996,生病ICU 996.ICU项目是一位匿名人士在Github上建立的项目,项目名字调侃近些年IT界流行的一种工作制度:996是指工作日早9点上班,晚上9点下班,中午和晚上休息1小时(或不到),总计10小时以上,并且一周工作6天的工作制度。名字非常形象的形容为只要你天天996早晚进ICU,非常真切的反应了现代加班制度下许多员工过劳死在工作岗位的现实。  地址:https://github.com/996icu/996.ICU Star数:163k FreeCodeCamp 全宇宙Start数最多的项目 FreeCodeCamp 是目前为止(2019年4月)GitHub上Star数最多的项目,Star总数30+万。  FreeCodeCamp 是 GitHub 上排名第一的开源项目,致力于帮助人们利用零散时间学习编程。它的使命是Learn to code and help nonprofits(学习编程,去帮助那些非盈利组织)。FCC涵盖HTML5、CSS、React、JavaScript、Database等课程,游戏化程度非常高,学员可以通过线上聊天室和线下社区活动(Coffee and Code)相互帮助。目前覆盖全球160+个国家、1000+个城市,40W+开发者在平台学习。 地址:https://github.com/freeCodeCamp/freeCodeCamp Start数:300k Dress – 女装大佬聚集地 有129名贡献者在这个名为Dress的项目里集结,上传了数千张女装照,收获了8000余颗星。  你敢相信这是个码农? 地址:https://github.com/komeiji-satori/Dress Star数:8.5k core-values-encoder 核心价值观编码 这程序使用社会主义核心价值观作为编码器,旨在通过编程学习党的十八大提出的社会主义核心价值观。 社会主义核心价值观:富强、民主、文明、和谐;自由、平等、公正、法治;爱国、敬业、诚信、友善  地址:https://github.com/sym233/core-values-encoder Star数:1.6k Thanos – 灭霸命令 Thanos.sh是一个开源的个灭霸命令,可随机删除电脑上一半文件。  地址:https://github.com/hotvulcan/Thanos.sh Star数:0.7k logoly 自动生成 Pornhub 风格 Logo  地址:https://github.com/bestony/logoly Star数:1.8k WTFPL 你XX想干啥都行协议  地址:https://github.com/anak10thn/WTFPL Star数:0.1k nocode – 一行代码都没有 这是一个Issue比项目更精彩的项目,项目中一行代码都没有,但是竟然有2万多人关注。  想问下,Star这个项目的2.7万人是有多无聊??? 地址:https://github.com/kelseyhightower/nocode Star数:27k programmer-job-blacklist 码农找工作黑名单 程序员列出的找工作黑名单,记录了一些不建议大家入职的公司。  地址:https://github.com/shengxinjing/programmer-job-blacklist Star数:19k hangzhou_house_knowledge 杭州买房攻略 作者根据自己2017年买房经历,总结出来的买房购房知识。在这里,作者从杭州区域划分、房产基础概念、购房渠道、杭州房产规划、杭州发展规划、房产配套设施、综合分析几个角度分析了杭州的购房现状。  地址:https://github.com/houshanren/hangzhou_house_knowledge Star数:19k howmanypeoplearearound 通过 Wi-Fi 信号估计附近有多少人  地址:https://github.com/schollz/howmanypeoplearearound Star数:5.8k chinese-xinhua 新华字典数据库 中华新华字典数据库和 API 。收录包括 14032 条歇后语,16142 个汉字,264434 个词语,31648 个成语。  地址:https://github.com/pwxcoo/chinese-xinhua Star数:4.8k seq2seq-couplet 用深度学习对对联  地址:https://github.com/wb14123/seq2seq-couplet Star数:1.5k 另外,你还知道哪些奇葩的项目呢?欢迎评论!!!
技术
# 随笔
酷游
1月22日
0
5
0
上一页
1
...
3
4
5
6
下一页
易航博客