记误删服务器文件后系统重装
最近在自己的云服务器上配置分布式服务,不小心误删除了文件。删除文件不要紧,关键是删除的是 /usr/local 目录,数据库、nginx、tomcat、dubbo、redis、zookeeper 全都在上面;这么一来以前部署的应用如极客之家、微营销、忆邮手机官网都挂掉了。 应用程序挂掉不要紧,重要的…
最近在自己的云服务器上配置分布式服务,不小心误删除了文件。删除文件不要紧,关键是删除的是 /usr/local 目录,数据库、nginx、tomcat、dubbo、redis、zookeeper 全都在上面;这么一来以前部署的应用如极客之家、微营销、忆邮手机官网都挂掉了。 应用程序挂掉不要紧,重要的…
单例模式是常用设计模式,核心结构里只包含一个被称为单例的特殊类:一个类只有一个实例,也就是只有一个对象实例。 系统里有些类必须唯一。例如可以有多个打印任务,但同时只能有一个在工作;售票时一共 100 张票、多个窗口同时卖,余量必须是单例,否则会超售。窗口对象如果不唯一化,会弹出多个窗口;内容相同却重…
这篇对机器学习做概要介绍,让即便完全不了解的人也能上手实践;它也是 EasyPR 开发的番外,往后讲内核必须先懂机器学习。 机器学习让计算机用数据而不是指令工作。支撑它能跑起来的,是统计和「相关」而不是处处因果。 下文从「等人故事」讲到定义、范围、方法、大数据、深度学习、人工智能,以及计算机的潜意识…
我特别迷信数字六:2016 年写这篇文章,刚好总结前六年程序生涯,选了六月六号下午六点发出。1987 年生我那年阴历有两个六月,我生于前六月;时隔 30 年又碰上两个六月,30 岁也刚好五个六年。今天还是只回顾入行最初的六年。 工作六年对一个程序员意味什么?职位上:高级开发、架构师、技术经理?能力上…
写下的不仅仅是代码,还有文章。假如你是开源社区的一员,你能够通过代码帮助别人提高编程水平。写作也是一样:不但可以提升自己的知名度,还能让好的想法传播得更广。更重要的是,写作本身就是思考。没有比写作更好的方法来理解技术了。 无论你专业宽窄与否,只要你比其他人更懂得如何分析纽约地铁时刻表,那么请把它写出…
把行为当作数据传递,是 Java 8 函数式编程的关键:函数接口、Stream 和 Collector 让同一份列表可以叠上求和、分组、排序等多种计算。 下文从 Function / Stream / Collector 读到自定义聚合器和 Pipeline,再看精练、通用、可测和组合这几项实际收益…
JDK 5 引入 Future,把「把任务交出去、过会儿再取结果」写成接口;Java 8 的 CompletableFuture 补上回调和组合,才算有完整的 Future / Promise / Callback。 Future 模式:我有任务交给 Future,期间我可以干别的,稍后再 get。…
旧日期 API 不好用:Date / Calendar 不是线程安全的,日常加减和时区都要绕弯,不少人只能上 joda-time。 JSR 310 给 Java 8 加了 java.time:ZoneId、Instant、LocalDate、LocalTime、LocalDateTime、Clock…
调用方法拿到返回值却不能直接往下传,往往要先判断是不是 null。Guava 和 Scala 的 Option 都在解决这件事;Java 8 在核心 API 里引入了 Optional。 Javadoc 的说法:这是一个可以为 null 的容器对象。值存在则 isPresent() 为 true,g…
Java 8 两个最重要的变化是 Lambda 和 Stream API。Stream 用来操作数据源生成的元素序列,Collection 上的 stream() 返回顺序流,parallelStream() 返回并发流。 Stream 自己不存元素、不改源对象,操作延迟执行。多个中间操作连成流水线…