小编Dav*_*vid的帖子

Java - 从缓冲读取器(从套接字)读取正在暂停线程

我有一个线程从缓冲读取器读取字符(从套接字创建如下):

inputStream = new BufferedReader(new InputStreamReader(clientSock.getInputStream()));
Run Code Online (Sandbox Code Playgroud)

此代码只能运行一次.例如,如果客户端连接并发送:"这是一个测试"和"这是另一个测试",则主机输出为:

 Reading from stream:
 Chars read from stream: 16
 This is a test

 Reading from stream:
Run Code Online (Sandbox Code Playgroud)

请注意,程序不会收到"这是另一个测试",因为它一直在读取流.有没有办法处理这个而不减少缓冲区大小?这是线程的代码:

public void run() {
        boolean dataRecieved = false;
        char[] inputChars = new char[1024];
        int charsRead = 0;

        while (!stopNow) {

            try {
                Thread.sleep(getDataDelay);

                //Read 1024 characters. Note: This will pause the thread when stream is empty.
                System.out.println("Reading from stream:");
                charsRead =  inputStream.read(inputChars); //<< THIS LINE IS PAUSING THE THREAD!> 


                if ((charsRead =  inputStream.read(inputChars)) != -1)
                {
                    System.out.println("Chars …
Run Code Online (Sandbox Code Playgroud)

java sockets networking buffer

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

在java中的套接字上发送屏幕截图(bufferedImage)

我正在通过套接字发送bufferedImage,我正在使用帖子中的示例:

寄件人

   BufferedImage image = ....;
   ImageIO.write(image, "PNG", socket.getOutputStream());
Run Code Online (Sandbox Code Playgroud)

接收器

   BufferedImage image = ImageIO.read(socket.getInputStream());
Run Code Online (Sandbox Code Playgroud)

它工作 - 如果,只有在这一行之后我关闭发送者的outputStream:

 ImageIO.write(image, "PNG", socket.getOutputStream());
Run Code Online (Sandbox Code Playgroud)

除了关闭outputStream之外我还能做些什么吗?

另外,我还能做些什么来避免一共使用ImageIO吗?似乎需要很长时间才能做任何事情.另请注意,由于性能问题,应该不惜一切代价避免读取或写入硬盘.我需要尽可能快地进行这种传输,(我正在尝试并尝试创建类似于VNC的客户端并将每个屏幕截图保存到硬盘上会大大减慢一切)

@Jon Skeet

编辑3:

发件人:(请注意,我发送的JPG图像不是PNG).

                    int filesize;
                    OutputStream out = c.getClientSocket().getOutputStream();

                    ByteArrayOutputStream bScrn = new ByteArrayOutputStream();
                    ImageIO.write(screenshot, "JPG", bScrn);
                    byte[] imgByte = bScrn.toByteArray();
                    bScrn.flush();
                    bScrn.close();

                    filesize = bScrn.size();
                    out.write(new String("#FS " + filesize).getBytes()); //Send filesize
                    out.write(new String("#<IM> \n").getBytes());        //Notify start of image

                    out.write(imgByte); //Write file
                    System.out.println("Finished");                                 
Run Code Online (Sandbox Code Playgroud)

收件人:( input套接字输入流在哪里)

尝试#1:

String str = input.toString();
imageBytes = …
Run Code Online (Sandbox Code Playgroud)

java sockets bufferedimage

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

Java慢速2D性能 - 调整大小

我正在使用Windows 7和Aero,并且有一个非常快的显卡(Radeon 6870),我用它来玩游戏.

调整我使用java制作的非常简单的程序时,我遇到了一些问题.例如,这个程序绝对没有.它没有动作侦听器,没有循环.它只是一个带按钮的GUI界面.

使用OpenGL加速关闭调整大小:

[查看全屏] 缓慢的大小调整

大约需要一秒钟来调整组件的大小.对我来说非常明显.

使用OpenGL加速调整大小:

在此输入图像描述

我试图启用OpenGl加速来解决这个问题.我编译了JAR并运行它java -Dsun.java2d.opengl=true -jar C:\Test.jar.结果是窗口周围的黑色区域略微减少,但更多的是闪烁.实际上,闪烁在上面的屏幕截图中显示为灰色.

问题是否存在于任何其他软件中?

不,Eclipse,Netbeans,Chrome和其他应用程序已经过测试.没有这个问题.因此,我必须得出结论,代码必定存在一些问题.各种各样的人都运行了这段代码并说他们有"没有问题".如果您要测试它,请确保您将窗口从最小尺寸调整到最大尺寸,同时以圆周运动移动鼠标.

码:

import java.awt.*;
import javax.swing.*;

public class JFrameWithButtonsTest {
    private int iScreen = 25;  
    private int iLocation = 10;
    JFrame frame = new JFrame();
    Container contentPane = frame.getContentPane();

    public JFrameWithButtonsTest() {
        JPanel northButtonPanel = new JPanel();
        northButtonPanel.setLayout(new GridLayout(2,2));
        northButtonPanel.add(new JButton(" I do nothing"));
        northButtonPanel.add(new JButton(" I do nothing"));
        northButtonPanel.add(new JButton(" I do nothing"));
        northButtonPanel.add(new JButton(" I do nothing"));
        contentPane.add(northButtonPanel, BorderLayout.NORTH);

        JPanel southButtonPanel …
Run Code Online (Sandbox Code Playgroud)

java swing 2d jframe

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

将JScrollPane滚动到JTable上的特定行

可能重复:
JTable滚动到指定的行索引

我有一个JTable,我在程序上需要使用以下代码选择一行:

  myTable.setRowSelectionInterval(i, j);
Run Code Online (Sandbox Code Playgroud)

(其中i和j分别是有效的行号和列号).

问题是,当你跳到一行时,JScrollPane不会移动.在这种情况下,表格很长,并且通常在屏幕上看不到"选定行",因此用户必须手动上/下滚动才能找到它.我想知道如何让JScrollPane自动跳转到该行的特定位置.

编辑:找到这一个可以做到这一点的班轮:

table.scrollRectToVisible(table.getCellRect(row,0, true)); 
Run Code Online (Sandbox Code Playgroud)

java swing jtable jscrollpane

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

为ASP.Net MVC开发,Visual Studio选项卡名称毫无意义

对于所有Visual Studio ASP.Net MVC开发人员 - 我确信您之前遇到过这个问题:

在此输入图像描述

在我的每个控制器中,通常都有索引,创建,编辑和详细信息视图.ASP.Net的脚手架生成的所有默认视图文件都具有相同的名称,例如:index.cshtml.当然,他们在不同的文件夹中.

因此,当您打开四个或五个选项卡时,很容易迷失在Visual Studio中,所有选项卡都具有相同的名称!是否有方法/插件让visual studio向我展示更有意义的东西,比如控制器名称/视图文件夹?或者,开发人员只是在生成文件后重命名所有文件?如果可能的话,我已经有resharper所以奖励分数.

c# asp.net-mvc visual-studio-2012

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

检查typescript类是否有setter/getter

我有一个typescript类,它具有以下属性:

export class apiAccount  {
    private _balance : apiMoney;
    get balance():apiMoney {
        return this._balance;
    }
    set balance(value : apiMoney) {
        this._balance = value;
    }

    private _currency : string;
    get currency():string {
        return this._currency;
    }
    set currency(value : string) {
        this._currency = value;
    }
    ...
Run Code Online (Sandbox Code Playgroud)

我需要创建这个类的空白实例:

let newObj = new apiAccount();
Run Code Online (Sandbox Code Playgroud)

然后检查它是否具有"货币"的设置器.我认为这正是getOwnPropertyDescriptor这样,但显然我错了:

Object.getOwnPropertyDescriptor(newObj, 'currency')
Object.getOwnPropertyDescriptor(newObj, '_currency')
Run Code Online (Sandbox Code Playgroud)

这两个都返回undefined.但铬似乎做到了!当我将鼠标悬停在实例上时,它会向我显示属性,并将它们显示为未定义.如何获取这些属性名称的列表,或检查对象中是否存在属性描述符? 在此输入图像描述

javascript typescript

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

消除初始按键延迟

当您键入文本框并按住某个键时,您将获得(a ....... aaaaaaaaaaaaaa),具体取决于初始按键延迟.

addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        // Handle key press here
    }
Run Code Online (Sandbox Code Playgroud)

我正在创建一个用户反应非常重要的游戏.如何完全消除这种延迟?上面的代码不起作用.我也尝试重写processKeyEvent而没有运气.

java keyboard swing awt

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

使用正则表达式从字符串中提取多个数字

我有一个包含两个或更多数字的字符串.这里有一些例子:

"(1920x1080)"
" 1920 by 1080"
"16 : 9"
Run Code Online (Sandbox Code Playgroud)

如何从中提取单独的数字,如"1920"和"1080",假设它们只是由一个或多个非数字字符分隔?

.net c# regex

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

String为Nullable返回false

为什么:

 string s = "";
 bool sCanBeNull = (s is Nullable);
 s = null;
Run Code Online (Sandbox Code Playgroud)

sCanBeNull 等于假?

我正在编写代码生成器,并且需要确保传递给它的每个类型都可以为空(如果还没有).

       //Get the underlying type:
       var type = field.FieldValueType;

        //Now make sure type is nullable:
        if (type.IsValueType) 
        {
            var nullableType = typeof (Nullable<>).MakeGenericType(type);
            return nullableType.FullName;
        }
        else
        {
            return type.FullName;
        }
Run Code Online (Sandbox Code Playgroud)

我是否需要明确检查字符串或我错过了什么?

.net c#

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

如何从字段中提取类型?

在SharePoint Server端代码中,您可以编写如下内容:

field.fieldvalueType
Run Code Online (Sandbox Code Playgroud)

有时会给你类型(DateTime,或其他).令人讨厌的是,有时,它只返回Null(例如,ID字段).

在CSOM中,您没有该字段.但是,有以下TypeAsString类型的SharePoint类型:

  • 计算
  • 整数
  • 注意

我想做的是从MSDN中获取这个巨大的表格:

当我知道我正在处理"整数"字段时,提取"Int32",并从SharePoint的注释中提取"System.String".

这种方法有效,但它是所有黑客的母亲:

var myTempItem = list.AddItem(new ListItemCreationInformation());
myTempItem.Update();
context.ExecuteQuery();

context.Load(myTempItem);
context.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)

创建后,您可以使用:

myTempItemCreated[fieldImTryingToGetTypeOf.Title].GetType().FullName - > Gives-> System.Int32

现在,做到这一点的正确方法是什么?我只是希望答案不是十英尺长的开关案例声明.

c# sharepoint-2013 csom

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