Here

谈谈Java常用类库中的设计模式

99封情书 提交于 2020-07-28 17:44:11
背景 最近一口气看完了Joshua Bloch大神的 Effective Java (下文简称EJ)。书中以tips的形式罗列了Java开发中的最佳实践,每个tip都将其意图和要点压缩在了标题里,这种做法我很喜欢:一来比较亲切,比起难啃的系统书,EJ就像是一本Java的《俚语指南》;二来记忆起来十分方便,整本书过一遍就能望标题生义。 在通读这本书时,我发现作者多次列举现有类库中的实现的设计模式,我有意将其收集起来,这些实现相当经典,我觉得有必要落成一篇文章。随着以后对类库的理解越来越深,我也会持续追加上自己发现的Pattern。 概述 由于篇幅限制,本主题会做成一个系列,每个系列介绍3-4个模式。 本文介绍的设计模式(可跳转): 建造者 工厂方法 享元 桥接 Here We Go 建造者 (Builder) 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 场景:创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式时;对象内部结构复杂;对象内部属性相互依赖。 类型:创建型 建造者模式在Java中最广泛的用途就是复杂对象创建。比起类构造器或Getter/Setter,它同时保证了创建过程的 可读性(和属性名一致的设参方法) 和 安全性(未创建完毕的对象不会逸出) ,同时它还有: 参数可选、可在类继承层次中复用、对集合类字段更加友好 等等优点

发送意图到浏览器以打开特定的URL [重复]

微笑、不失礼 提交于 2020-07-28 09:30:49
问题: This question already has an answer here: 这个问题已经在这里有了答案: How can I open a URL in Android's web browser from my application? 如何从我的应用程序在Android的网络浏览器中打开URL? 32 answers 32个答案 I'm just wondering how to fire up an Intent to the phone's browser to open an specific URL and display it. 我只是想知道如何在手机浏览器中启动一个Intent以打开特定的URL并显示它。 Can someone please give me a hint? 有人可以给我提示吗? 解决方案: 参考一: https://stackoom.com/question/Cbbv/发送意图到浏览器以打开特定的URL-重复 参考二: https://oldbug.net/q/Cbbv/Sending-an-Intent-to-browser-to-open-specific-URL-duplicate 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4335148

安装软件时出现错误提示:无效类

跟風遠走 提交于 2020-07-28 09:03:48
Skip to content Home VMware Microsoft Site Archives About Search Microsoft WMI – Invalid Class Error [0x80041010] November 19, 2015 by Daniel You can receive error 0x80041010 from multiple applications that call WMI. For my example it was received in SCCM while patches were being applied. No matter where you got the error the underlying issue is probably with WMI. Here is how to check! Confirm WMI is Broken: Launch the WMI MMC snapin by Start -> Run -> then enter WMIMGMT.MSC Right click WMI Control (Local) and click Properties If WMI is working properly then it will show that Good Properties.

nagios报错:./stdio.h:456:1: error: 'gets' undeclared here (not in a function)

拥有回忆 提交于 2020-07-28 08:14:14
[root@localhost nagios-plugins-1.4.16]# ./configure [root@localhost nagios-plugins-1.4.16]# make mv -f .deps/full-write.Tpo .deps/full-write.Po gcc -DHAVE_CONFIG_H -I. -I.. -I../intl -g -O2 -MT localcharset.o -MD -MP -MF .deps/localcharset.Tpo -c -o localcharset.o localcharset.c In file included from localcharset.c:26:0: ./stdio.h:456:1: error: ‘gets’ undeclared here (not in a function) _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ^ make[4]: *** [localcharset.o] Error 1 make[4]: Leaving directory `/usr/local/monitor/nagios-plugins-1.4.16/gl' make[3]: *** [all

Git工作流程和rebase与合并问题

前提是你 提交于 2020-07-28 07:53:51
问题: I've been using Git now for a couple of months on a project with one other developer. 我和其他开发人员一起在一个项目上使用Git几个月了。 I have several years of experience with SVN , so I guess I bring a lot of baggage to the relationship. 我有几年的 SVN 经验,所以我想我给这段关系带来了很多包袱。 I have heard that Git is excellent for branching and merging, and so far, I just don't see it. 我听说Git非常适合分支和合并,到目前为止,我只是没有看到它。 Sure, branching is dead simple, but when I try to merge, everything goes all to hell. 当然,分支很简单,但是当我尝试合并时,一切都变得很糟糕。 Now, I'm used to that from SVN, but it seems to me that I just traded one sub-par versioning system for

Java 可重入锁内存可见性分析

邮差的信 提交于 2020-07-28 06:33:40
作者:周童 来自酒店搜索报价中心,主要负责酒店报价缓存,计算相关系统的开发以及性能优化等工作,热爱摩旅。 一个习以为常的细节 之前在做 ReentrantLock 相关的试验,试验本身很简单,和本文相关的简化版如下:**(提示:以下代码均可左右滑动) 就是通过可重入锁的保护并行对共享变量进行自增。 突然想到一个问题:**共享变量 count 没有加 volatile 修饰,那么在并发自增的过程当中是如何保持内存立即可见的呢?**上面的代码做自增肯定是没问题的,可见 LOCK 不仅仅保证了独占性,必定还有一种机制保证了内存可见性。 可能很多人和我一样,对 LOCK 的认知是如此 “理所应当”,以至于从没有去思考为什么。就好像每天太阳都会从东方升起而不觉得这有什么好质疑的。现在既然问到这儿了,那就准备一探究竟。 几个概念 Java Memory Model (JMM) 即 Java 内存模型,直接引用 wiki 定义: "The Java memory model describes how threads in the Java programming language interact through memory. Together with the description of single-threaded execution of code, the memory

万字长文|如何定义“失败的产品经理”

霸气de小男生 提交于 2020-07-28 06:01:29
前言:总有一种错觉,别人家的产品经理都是神一样,动不动改变世界的那种。就没有失败的产品经理吗? 提出问题的背景 前阵子刚刚和阿里、百度的产品经理聊过产品这块,总结输出了《腾讯产品流程》和《阿里系项目复盘》两篇文章。但是听到这么个故事,给了我当头一棒。 “过了这么些年,他每每谈起之前他就职过的公司,他参与的项目,唏嘘不已。他觉得还是自己眼光毒辣,他说他早就说过事情不能这么干,不能那么干,但那些人就是不听他的,因此失败已经注定,他们都是活该。他说他的老板和几个同事都是大傻逼。 他开始和我谈互联网,谈虚拟现实,谈未来方向,我听得云里雾里,他唾沫横飞,激情四射。似乎自己是那个「 Crazy One 」,只是时运不济。 他说很多人都不喜欢他,他觉得是自己太独特了,所以才不合群。他觉得有太多需要变革的东西,他都跃跃欲试。他说他就差一个伯乐和一个称心如意的平台了。 他又谈到他的阅读,对于《人人》、《结网》、《乌合》、《怪诞心理》、《体验要素》、《需求》 ……哦,还有那本他说张小龙推荐必看的书,和我谈他的一些阅读见解。他还谈到历史,常说的一句话是「历史总在不断重演」,意思是为什么有些人就是不知道教训,老是重复犯错,真是傻逼。 他是一个彻头彻尾的失败的产品经理。 你问我他是谁? 他有时是我,有时是你。 ” 听完这个故事,我和你们一样,感到很困惑。所以特意去产品社区提出了这样的一个问题: 如何定义 “

Hacker News 简讯 2020-07-14

寵の児 提交于 2020-07-28 03:57:13
更新时间: 2020-07-14 23:00 Eventual Consistency isn’t for Streaming - (materialize.io) 最终一致性不适合流式传输 得分:51 | 评论:8 The TikTok War - (stratechery.com) 伊拉克战争 得分:54 | 评论:35 Grant Imahara Has Died - (hollywoodreporter.com) 格兰特·今原去世了 得分:1386 | 评论:190 Show HN: Is It Worth the Cost? - (isitworththecost.com) 给HN看:值得吗? 得分:182 | 评论:43 Ex-googler's startup comes out of stealth with simple, clever robot design - (ieee.org) 前谷歌公司的初创公司以简单、巧妙的机器人设计摆脱了隐身状态 得分:374 | 评论:249 Poland puts computer game “This War of Mine” on school reading list - (notesfrompoland.com) 波兰将电脑游戏“我的这场战争”列入学校阅读清单 得分:75 | 评论:29 Andean condor

SAP ME01创建货源清单

邮差的信 提交于 2020-07-28 02:49:44
1 业务说明 此文档使用函数: ME_DIRECT_INPUT_SOURCE_LIST 创建货源清单 2 前台实现 事务代码:ME01 输入抬头信息 保存即可 3 代码实现 3.1 调用函数 定义参数 字段 调用函数 3.2 问题解决 3.3 源代码 DATA : LT_EORD TYPE TABLE OF EORDU , LS_EORD TYPE EORDU , LV_MATNR TYPE EORD - MATNR , LV_WERKS TYPE EORD - WERKS . LV_MATNR = '000000000000000431' . "物料 LV_WERKS = '2000' . "工厂 CLEAR : LS_EORD . LS_EORD - MATNR = '000000000000000431' . "物料 LS_EORD - WERKS = '2000' . "工厂 LS_EORD - VDATU = '20191210' . "有效期从 LS_EORD - BDATU = '20191230' . "有效期至 LS_EORD - LIFNR = '0070003311' . "供应商 LS_EORD - EKORG = '2000' . "采购组织 LS_EORD - RESWK = '' . "采购物料的工厂 LS_EORD - EORTP = '0' .

Android“只有创建视图层次结构的原始线程才能触摸其视图。”

落花浮王杯 提交于 2020-07-28 01:46:42
问题: I've built a simple music player in Android. 我已经在Android中构建了一个简单的音乐播放器。 The view for each song contains a SeekBar, implemented like this: 每首歌曲的视图都包含一个SeekBar,实现如下: public class Song extends Activity implements OnClickListener,Runnable { private SeekBar progress; private MediaPlayer mp; // ... private ServiceConnection onService = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder rawBinder) { appService = ((MPService.LocalBinder)rawBinder).getService(); // service that handles the MediaPlayer progress.setVisibility(SeekBar.VISIBLE); progress