小编ini*_*mfs的帖子

Java数组,查找重复项

我有一个数组,我正在寻找重复.

duplicates = false;
for(j = 0; j < zipcodeList.length; j++){
    for(k = 0; k < zipcodeList.length; k++){
        if (zipcodeList[k] == zipcodeList[j]){
            duplicates = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当没有重复时,此代码不起作用.为什么?

java arrays

59
推荐指数
4
解决办法
21万
查看次数

AudioTrack采样率不一致

使用AudioTrack进行播放时,我有时需要重新采样不符合AudioTrack支持的采样率的音频.在这样做时,我需要在当前音频配置下确定当前设备下AudioTrack支持的最大采样率.

由于AudioTrack的允许采样率很难记录,我决定窥探源代码AudioTrack并发现这个惊人的界限:

private static final int SAMPLE_RATE_HZ_MAX = 96000;
Run Code Online (Sandbox Code Playgroud)

AudioTrack无论设备的实际播放能力如何,实例似乎都在应用96 KHz的硬限制.

更令人困惑的是在AudioFormat类中,我将其传递给AudioTrack包含以下行的构造函数(API 21):

if ((sampleRate <= 0) || (sampleRate > 192000)) {
Run Code Online (Sandbox Code Playgroud)

在它的setSampleRate()方法.现在这是192 KHz的硬限制.所以,传递> 192千赫到的AudioFormat(或它的助洗剂)将导致IllegalArgumentExceptionAudioFormat与传递一个配置192千赫<X <96 kHz采样率的AudioFormat成AudioTrack也将引发IllegalArgumentException.


到目前为止,我发现最令人困惑的是getNativeOutputSampleRate()AudioTrack中的方法实际上确实返回了正确的输出采样率(好吧,鉴于它直接从本机层运行,但不那么令人惊讶).

并且最重要的是,该方法setPlaybackRate()声称:

有效采样率范围是1 Hz到getNativeOutputSampleRate(int)返回值的两倍.

事实上,我确实尝试过,它有效吗?请考虑以下代码段:

int nativeRate = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC);

android.util.Log.i("UI", "Native stream rate: " + nativeRate + " Hz");

// Build audio attributes

AudioAttributes.Builder attribBuilder = new AudioAttributes.Builder();

attribBuilder.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC);
attribBuilder.setUsage(AudioAttributes.USAGE_MEDIA); …
Run Code Online (Sandbox Code Playgroud)

java android sample-rate audiotrack

30
推荐指数
1
解决办法
2184
查看次数

MediaStyle LargeIcon的大小

我正在使用新的Notification.MediaStyle类为FTP流媒体音乐播放器应用程序实现Lollipop风格的通知.我将专辑封面设为我的"大图标".

鉴于专辑封面直接取自当前正在播放的文件,此专辑封面的大小取决于来源(可能高达5000x5000).

从我的棒棒糖前代码中,我在以下定义的最大大小下解码位图: android.R.dimen.notification_large_icon_width

android.R.dimen.notification_large_icon_height

这适用于解码时间更快,内存使用是理想的.

但是,当此代码应用于我的MediaStyle样式时,展开的视图使用比尺寸参数定义的图标大得多的图标,从而在展开时产生模糊的专辑封面.

是否有一些常量来定义MediaStyle大图标的展开视图的最大大小?或者这个问题有一些解决方法吗?就目前而言,以全分辨率解码艺术是不可接受的,因为它可能导致应用程序因OOM而崩溃.

android android-notifications bitmapfactory android-bitmap

10
推荐指数
1
解决办法
934
查看次数

在外部进程关闭之前,ProcessBuilder的InputStream没有输入

在为控制台应用程序构建包装器时,我遇到了这个奇怪的问题,其中连接到外部进程的输出(stdout)的输入流完全空白,直到外部进程退出.

我的代码如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;

public class Example{

    public static void main(String args[]) throws IOException{
        File executable = ...

        ProcessBuilder pb = new ProcessBuilder(executable.getCanonicalPath());

        pb.redirectErrorStream(true);

        Process p = pb.start();

        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), Charset.forName("UTF-8")));

        String line;

        while((line = br.readLine()) != null){
            System.out.println(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种从输入流中读取的变体,并且都导致了相同的行为.

我试过了:

CharBuffer charBuf = CharBuffer.allocate(1000);

InputStreamReader isr = new InputStreamReader(p.getInputStream(), Charset.forName("UTF-8"));

while(isr.read(charBuf) != -1){
    System.out.print(charBuf.flip().toString());
}
Run Code Online (Sandbox Code Playgroud)

byte[] buf = new byte[1000];
int r;

while((r = p.getInputStream().read(buf)) …
Run Code Online (Sandbox Code Playgroud)

java external-process inputstream processbuilder

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

从AJAX中的onreadystatechange事件返回值

我试图val在下面的代码中为变量赋值:

var cmdValue = "/cmd/fetch?x=";
var val;
var returned_data;

function what(){
    val = update('#TAG#');
}


function update(tag) {
    var req1 = newXMLHttpRequest();
    req1.open("GET",cmdValue + tag, true);
    req1.send("");

    return req1.onreadystatechange= function () {
        if (req1.readyState == 4 && req1.status == 200) {
            returned_data = req1.responseText;
            return returned_data;
        }else{

        }
    };
}
Run Code Online (Sandbox Code Playgroud)

我正在跟踪Firebug中的变量,事实证明它val被分配了函数.有没有办法让代码运行,然后将值赋给变量val

javascript ajax jquery

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

多个条件与多个锁

对于特定的线程安全数据结构,我需要保护对中央数据结构(即字节数组)的访问.在这种情况下,我选择使用ReentrantLocks,因为它的公平性政策以及创建多个条件的高级功能.

并发的条件很复杂,如下所示:

  1. 中心字节数组必须独占保护(即一次一个线程).
  2. 两个访问方法(foo和bar)必须能够并发运行(如果它们尝试访问中心字节数组,则在内部阻塞).
  3. 对任何方法(foo和bar)的调用都需要是独占的(即从不同的线程多次调用foo将导致一个线程阻塞).

在我最初的实现中,我选择实现两个嵌套锁,如下所示:

ReentrantLock lockFoo = new ReentrantLock(true);
ReentrantLock lockCentral = new ReentrantLock(true);

Condition centralCondition = lockCentral.newCondition();

public void foo(){
    // thread-safe processing code here

    lockFoo.lock();        
    lockCentral.lock();

    try{
        // accessing code here

        try{
            // waits upon some condition for access
            while(someCondition){
                centralCondition.await();
            }
        }catch(InterruptedException ex){
            // handling code here
        }

        // more processing
    }finally{
        lockCentral.unlock();
        lockFoo.unlock();
    }
}
Run Code Online (Sandbox Code Playgroud)

结构在方法上是等效的bar,只需用另一个锁对象lockBar.此外,代码减少了我更复杂的多条件等待,并为简单起见信号到单一条件.

使用这个,我不禁感到代码看起来不必要地复杂和模糊不仅因为有两个嵌套的锁,它们共享一个try-finally,更不用说如何在整个过程中lockCentral释放和重新获取多次lockFoo.

相反,我试图重新组织外锁(lockFoolockBar)作为一个条件lockCentral,如下所示:

ReentrantLock lockCentral …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading locking reentrantlock

4
推荐指数
1
解决办法
1859
查看次数

InputStream.available() 什么时候有用?

Java 套接字编程InputStream.available()什么时候有用?BufferedInputStream.available()

java sockets

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

mysqli_stmt::execute() 返回 false 并且语句未执行

我有一个简单的登录系统保护机制,通过将用户的 IP、失败的尝试次数和上次尝试时间记录到名为bannedusers. 但是,当我尝试使用下面的代码将新条目插入数据库时​​,execute() 函数返回 false 并且无法执行。

代码如下:

private $con;

function updateTable($IP, $attempt, $exists){
    $time = time();

    //The following statement is actually in the constructor, moved here for completeness
    $this->con = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); //All these constants are predefined and verified to be correct.

    if($this->con->connect_error){
        return true; //If there is a connection error, just let the user log in... We'll deal with this later
    }

    //Another function already determines if the entry exists or not.
    if(!$exists){
        //ip, …
Run Code Online (Sandbox Code Playgroud)

php mysql sql mysqli

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

从Bouncy Castle的byte []获取ECPoint/ECPublicKeyParameters

到目前为止,我已经设法在充气城堡的轻量级API中生成ECDHE对.但是,我尝试从byte []重新创建公钥时遇到问题.

由于ECPublicKeyParameters对象只有一个方法getQ(),我假设重建密钥所需的全部内容.其他参数如使用的曲线(P-521)保持不变.

我正在做以下事情:

AsymmetricCipherKeyPair kp = kpgen.generateKeyPair(); //ECDHE Key Generator

ECPublicKeyParameters pubKey = (ECPublicKeyParameters)kp.getPublic();
byte[] aPubKeybytes = pubKey.getQ().getEncoded(false); //Should I set to true or false?
Run Code Online (Sandbox Code Playgroud)

除非有另一种方法来获取公钥pubKey的原始字节,否则我没有看到在不调用返回ECPoint对象的方法getQ()的情况下获取字节的方法.

我的问题是如何使用bouncy castle的轻量级API将byte []重建为ECPoint对象.或者,更好的是,如何使用从原始pubKey对象派生的字节数组重建整个ECPublicKeyParameter对象.

java bouncycastle elliptic-curve public-key-encryption diffie-hellman

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

更新列表视图时保持当前滚动位置

我想使用下面的代码获取新数据并将其更新到我的 listView 中,我想要的是当我滚动到 listView 底部时,它会自动更新并将新数据添加到列表中。

例如:像facebook一样,只在底部添加新数据而不滚动并保持当前位置

但我最终遇到了一些问题。哪个是

1) 列表视图已更新,但它滚动回顶部。

listview .setOnScrollListener(new OnScrollListener() {
    private int currentVisibleItemCount;
    private int currentScrollState;
    private int currentFirstVisibleItem;
    private int totalItem;

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        this.currentScrollState = scrollState;
        this.isScrollCompleted();
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
                         int visibleItemCount, int totalItemCount) {

        this.currentFirstVisibleItem = firstVisibleItem;
        this.currentVisibleItemCount = visibleItemCount;
        this.totalItem = totalItemCount;

    }
    private void isScrollCompleted() {

        if (totalItem - currentFirstVisibleItem == currentVisibleItemCount
                && this.currentScrollState == SCROLL_STATE_IDLE) {

            Log.d("this is", "the end");
            page …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-adapter onscrolllistener

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

JScrollPane绘图问题中的JPanel

我已经在JScrollPane中放置了一个JPanel对象,并且滚动按预期工作.通过覆盖paintComponent(),我试图在JPanel对象中进行自定义绘制.但是,当JPanel对象放在JScrollPane中时,JPanel不再正确绘制(而只显示其背景颜色).

因为我的应用程序要求不断更新JPanel,所以构造一个单独的线程以特定间隔重新绘制JPanel.

以下代码摘录显示了我当前的项目:

a)来自我的JPanel的paintComponent()(此方法已被裁减为仅绘画,实际绘制将是从另一个线程而不是这个大粉红色静态框提供的不断更新的BufferedImage):

@Override
public void paintComponent(Graphics g){
    super.paintComponent(g);

    //Render Frame
    // 'RXDisplayCanvas' is the JPanel.
    Graphics2D G2D = (Graphics2D)RXDisplayCanvas.getGraphics();

    G2D.setColor(Color.PINK);
    //800 and 600 are arbitrary values for this example, real values are calculated at runtime. The value calculation code is verified to work (as its used elsewhere in a similar scenario)
    G2D.fillRect(0, 0, 800, 600);
    G2D.dispose();
}
Run Code Online (Sandbox Code Playgroud)

b)定期重新绘制帧的'updater'线程:

@Override
public void run() {
    long MaxFrameTime;
    long Time;

    while(isVisible()){
        // 'FPSLimit' is a integer value (default to 30)
        MaxFrameTime …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jscrollpane paintcomponent

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

如何重构这种类型的switch-case语句?

基于minIndex,我设置了不同的视图可见性.我认为它可以被重构为简单的方式.

switch (minIndex) {
    case 0:
        viewOne.setVisibility(View.VISIBLE);
        break;
    case 1:
        viewTwo.setVisibility(View.VISIBLE);
        break;
    case 2:
        viewThree.setVisibility(View.VISIBLE);
        break;
    case 3:
        viewFour.setVisibility(View.VISIBLE);
        break;
    case 4:
        viewFive.setVisibility(View.VISIBLE);
        break;
    case 5:
        viewSix.setVisibility(View.VISIBLE);
        break;
}
Run Code Online (Sandbox Code Playgroud)

如何将此代码重构为更易读的代码?

java refactoring

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

我对j2ee和php感到困惑

作为开发人员进行Web开发,我想知道是否J2EEPHP更好地构建网站.

我最初的想法是J2EE更好,因为它是Java基于的,但在阅读了几篇文章后,我读到PHP可能更容易,更专注于Web开发.

在这个主题上,我有另一个问题,在查看关于网页设计和构造的不同文章时,我遇到了声称用J2EE,Java和Ruby构建的网站.J2EE与Java相同吗?或者是完全不同的东西.

php java java-ee

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