小编lbr*_*anl的帖子

迈耶斯如何实施单身人士实际上是一个单身人士

我一直在阅读很多关于单身人士的信息,他们应该和不应该使用它们,以及如何安全地实施它们.我正在用C++ 11编写,并且遇到了Meyer对单例的懒惰初始化实现,如本问题所示.

这个实现是:

static Singleton& instance()
{
     static Singleton s;
     return s;
}
Run Code Online (Sandbox Code Playgroud)

我理解这对于SO的其他问题是如何线程安全的,但我不明白的是这实际上是一个单例模式.我用其他语言实现了单例,这些总是像维基百科这样的例子:

public class SingletonDemo {
        private static volatile SingletonDemo instance = null;

        private SingletonDemo() {       }

        public static SingletonDemo getInstance() {
                if (instance == null) {
                        synchronized (SingletonDemo .class){
                                if (instance == null) {
                                        instance = new SingletonDemo ();
                                }
                      }
                }
                return instance;
        }
}
Run Code Online (Sandbox Code Playgroud)

当我看第二个例子时,这是一个单例,它是非常直观的,因为该类拥有对其自身的一个实例的引用,并且只返回该实例.但是,在第一个示例中,我不明白这是如何防止存在对象的两个实例的.所以我的问题是:

  1. 第一个实现如何强制执行单例模式?我假设它与static关键字有关,但我希望有人能够深入地向我解释发生在幕后的事情.
  2. 在这两种实现方式之间,是否优于另一种?优缺点都有什么?

谢谢你的帮助,

c++ singleton design-patterns c++11

43
推荐指数
2
解决办法
3万
查看次数

UIView上的圆圈层的Swift蒙版

我试图用swift中的圆形CAShapeLayer掩盖方形UIView.我有以下内容:

    var snapFrame = self.snapButton.frame
    var innerFrame = CGRect(x: snapFrame.minX + 1, y: snapFrame.minY + 1, width: snapFrame.width - 2, height: snapFrame.height - 2)

    maskLayer = CAShapeLayer()
    var circlePath = UIBezierPath(roundedRect: innerFrame, cornerRadius: innerFrame.width)
    maskLayer.path = circlePath.CGPath
    maskLayer.fillColor = UIColor.clearColor().CGColor

    shutterOverlay = UIView()
    shutterOverlay.frame = innerFrame
    shutterOverlay.backgroundColor = BUBConstants.primaryColor_blue

    self.view.addSubview(shutterOverlay)
    self.view.layer.addSublayer(maskLayer)

    shutterOverlay.layer.mask = maskLayer
Run Code Online (Sandbox Code Playgroud)

如果我注释掉最后两行,则图层和视图都会显示在正确的位置和正确的大小.但是,添加最后一行会导致视图和图层都不显示.

此外,我需要这样做,因为我的最终目标是制作一个动画,其中方形UIView填充圆圈.我不能只显示一个圆形视图.

谁能指出我哪里出错了?

ios swift

9
推荐指数
1
解决办法
1万
查看次数

使用GridView的Android drawSelectorOnTop

我正在开发一个标签式应用程序,其中一个片段CollectionsFragment在每个插槽中包含一个带有ImageView的GridView.我希望当用户点击其中一个图像时,使用选择器向用户提供反馈.

我已经成功实现了选择器,但是,我的问题是选择器只是在图像的背景中绘制,但我希望选择器可以绘制整个图像.我已经看到其他地方引用了这个问题,但是,许多人选择的解决方案,设置GridView的drawSelectorOnTop属性,对我来说不起作用.

带有相关适配器代码的相关片段:

public class CollectionsFragment extends Fragment {
    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
             View view = inflater.inflate(R.layout.activity_collections, container, false);
             // Grid view is inside the xml view inflated above
             GridView gridView = (GridView)view.findViewById(R.id.gridview);
             gridView.setDrawSelectorOnTop(true);
             ((GridView) gridView).setAdapter(new CustomGridViewAdapter(getActivity()));
             return view;
        }

        private class CustomGridViewAdapter extends BaseAdapter {
            @Override
            public View getView(int i, View view, ViewGroup viewGroup) {
                View v = view;
                ImageView picture;
                TextView name;

                if(v == null) {
                    v = inflater.inflate(R.layout.collections_item, viewGroup, false);
                    v.setTag(R.id.picture, …
Run Code Online (Sandbox Code Playgroud)

java android android-gridview android-selector

8
推荐指数
1
解决办法
1万
查看次数

使用sqlite4java的UnsatisfiedLinkError,没有sqlite4java-osx-amd64

我对这个问题有类似的问题:

在Mac OS X NetBeans上使用sqlite4java Jar的UnsatisfiedLinkError

我正在运行一个使用sqlite的脚本,虽然我能够通过命令行成功运行sqlite3,但是当我尝试运行脚本时,我总是遇到这个错误:

SEVERE: [sqlite] SQLiteQueue[master.catalog]: error running job queue
com.almworks.sqlite4java.SQLiteException: [-91] cannot load library: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path
Run Code Online (Sandbox Code Playgroud)

当我在我的lib文件夹中运行"java -jar sqlite4java.jar -d"时,我看到:

140428:170139.831 FINE [sqlite] Internal: loading library
140428:170139.853 FINE [sqlite] Internal: java.library.path=/Users/lee33/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
140428:170139.853 FINE [sqlite] Internal: sqlite4java.library.path=null
140428:170139.853 FINE [sqlite] Internal: cwd=/Users/lee33/Desktop/myria_workspace/myria/lib/sqlite4java-282/.
140428:170139.853 FINE [sqlite] Internal: default path=null 
140428:170139.853 FINE [sqlite] Internal: forced path=null 
140428:170139.854 FINE [sqlite] Internal: os.name=mac os x; os=osx
140428:170139.854 FINE [sqlite] Internal: os.arch=amd64
140428:170139.854 FINE [sqlite] Internal: trying to …
Run Code Online (Sandbox Code Playgroud)

java sqlite

8
推荐指数
1
解决办法
3077
查看次数

更改Android音频记录默认输入源

我目前正在编写一个应用程序,要求录制和实时处理音频数据.为此,我正在使用AudioRecord类.除了在我的主要测试设备(一个星系连接点)上录制音频的默认设置是从后置扬声器录制时,这一切都很好.我假设大多数手机默认录音源都是背部或底部麦克风,因为当你使用手机拨打电话时,你的嘴巴接近底部.

但是,我的应用程序要求我从手机正面的扬声器录制,所以我希望有人可以帮助我如何以编程方式更改AudioRecord输入源.我已经广泛搜索了这个问题的答案.

我考虑过的一些事情是:

  • 使用AudioManager类并打开扬声器电话,例如:

    AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    am.setSpeakerphoneOn(true);

  • 在我的AudioRecord对象的构造中更改AudioSource参数:

    AudioRecord ar = new AudioRecord(AudioSource.????, ..., ..., ..., ...);

  • 我发现API对于哪种AudioSource格式并不太具体,所以我想知道是否有其他人在这个问题上遇到了困难,并且可以指出我正确的方向.

    提前致谢,

    android speakerphone speaker audiorecord android-audiomanager

    5
    推荐指数
    1
    解决办法
    5025
    查看次数

    c#泛型接口解决方案

    我有一个名为的接口Man.在这个接口中,我有一个getList()返回类型T列表的方法(依赖于实现接口的类).我有3类实现Man:small,normal,和big.每个类都有方法getList()thart返回列表small或列表normal或列表big.

    interface Man<T>{
      List<T>getList();
    }
    
    class small : Man<small>{
      List<small> getList(){
        return new List<small>(); 
      }
    }
    
    class normal : Man<normal>{
      List<normal> getList(){
        return new List<normal>(); 
      }
    }
    
    class big : Man<big>{
      List<big> getList(){
        return new List<big>(); 
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在我有了类:Home 它包含一个参数bed,它是一个实例Man. Bed可以是各种类型的:small,normal,big.如何声明类型参数bed

    class Home{
      Man bed<> // …
    Run Code Online (Sandbox Code Playgroud)

    c# generics interface

    3
    推荐指数
    1
    解决办法
    142
    查看次数

    从Python程序向命令行提示符发送输入

    我认为这是一个非常简单的问题,但我一直没有找到一个简单的答案.

    我正在运行一个终止AWS集群的python程序(使用starcluster).我只是使用子进程从我的python程序调用一个命令,如下所示.

    subprocess.call('starcluster terminate cluster', shell=True)
    
    Run Code Online (Sandbox Code Playgroud)

    实际命令在很大程度上与我的问题无关,但提供了一些背景信息.此命令将开始终止集群,但在继续之前将提示输入yes/no,如下所示:

    Terminate EBS cluster (y/n)? 
    
    Run Code Online (Sandbox Code Playgroud)

    如何在我的python程序中自动输入yes作为此提示的输入?

    python starcluster

    3
    推荐指数
    2
    解决办法
    2364
    查看次数

    简单的Bash脚本文件复制

    我正在编写一个简单的评分脚本.我有一个名为HW5的目录,其中包含该类中每个学生的文件夹.从我当前的目录,其中包含HW5文件夹,我想将所有以单词mondial开头的文件复制到每个学生的文件夹中.我的脚本运行但不复制任何文件.有什么建议?

    #!/bin/bash                                                                                                         
    
    for file in ./HW5; do
        if [ -d $file ]; then
            cp ./mondial.* ./$file;
        fi
    done
    
    Run Code Online (Sandbox Code Playgroud)

    谢谢,

    bash

    1
    推荐指数
    1
    解决办法
    3万
    查看次数