小编Kus*_*hal的帖子

直接从Java中的模型类创建JSON对象

我的项目中有一些模型类,比如Customer,Product等等,它们有几个字段和它们的setter-getter方法,我需要通过套接字这些类的对象作为JSONObject与客户端和服务器进行交换.

有没有什么方法可以JSONObject直接从模型类的对象创建,使对象的字段成为键,该模型类对象的值成为此JSONObject的值.

例:

Customer c = new Customer();
c.setName("Foo Bar");
c.setCity("Atlantis");
.....
/* More such setters and corresponding getters when I need the values */
.....
Run Code Online (Sandbox Code Playgroud)

我创建JSON对象为:

JSONObject jsonc = new JSONObject(c); //I'll use this only once I'm done setting all values.
Run Code Online (Sandbox Code Playgroud)

这让我有点像:

{"name":"Foo Bar","city":"Atlantis"...}
Run Code Online (Sandbox Code Playgroud)

请注意,在我的一些模型类中,某些属性本身就是其他模型类的对象.如:

Product p = new Product();
p.setName("FooBar Cookies");
p.setProductType("Food");
c.setBoughtProduct(p);
Run Code Online (Sandbox Code Playgroud)

在上面这样的情况下,正如我所期望的那样,产生的JSON对象将是:

{"name":"Foo Bar","city":"Atlantis","bought":{"productname":"FooBar Cookies","producttype":"food"}}
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建类似于toJSONString()每个模型类的东西并且创建并操作它的JSON友好字符串,但是在我之前使用Java创建RESTful服务的经验中(这完全脱离了这个问题的上下文),我可以返回通过使用服务方法的JSON字符串@Produces(MediaType.APPLICATION_JSON)并具有返回模型类的对象的方法.所以它产生了我可以在客户端使用的JSON字符串.

我想知道它是否有可能在当前场景中获得类似的行为.

任何帮助或建议表示赞赏.谢谢.

java sockets json

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

C中宏的括号需要

我试着SQR在下面的代码中使用宏的定义:

#define SQR(x) (x*x)
int main()
{
    int a, b=3;
    a = SQR(b+5);      // Ideally should be replaced with (3+5*5+3), though not sure.
    printf("%d\n",a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它打印23.如果我将宏定义更改为SQR(x) ((x)*(x))然后输出是预期的,64.我知道在C中调用宏会用宏的定义替换调用,但是我仍然无法理解它是如何计算的23.

c macros parentheses c-preprocessor

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

在Android中以动画方式将ImageView移动到不同位置

我有几个ImageView在A S RelativeLayout.现在,当用户点击任何ImageView时,我希望将它移动到具有微妙动画的指定位置.

例如; 我最初设置LayoutParamsImageViewas 关联的边距layoutparams1.setMargins(90,70,0,0);,然后将其添加到布局中.

当点击imageview时,我希望它的新位置是200,200动画.

那么,有可能吗?如果有,那怎么样?

请注意,我以编程方式创建了它们的RelativeLayout所有子项ImageView.

而且我是Android开发的新手,所以预计会有一个详尽的答案.

animation android android-animation

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

LiveReload(和其他类似的应用程序)在技术上如何工作?

有一些很棒的网络开发工具可以让开发人员的生活变得轻松.像应用LiveReloadCodeKit都是很好的例子.

我对它们感兴趣的是当文件更改写入硬盘时,它们在网页浏览器(无论是Chrome,Firefox还是其他)中进行网页实时重新加载的方式.

他们实际上是怎么做到的?是否有任何Web浏览器供应商公开的API来执行此操作?或者它只是自定义服务器端脚本,它在到达浏览器之前注入到网页(实际上不是由web-developer编写),并且当驱动器上的文件被更改时会发生一些Ajax魔法.

我打算在Python或Vala(Linux)和.NET(Windows)中开发类似的东西,所以如果有可用的文档,请告诉我.

.net python browser live

11
推荐指数
2
解决办法
1981
查看次数

适用于Windows 7的免费C/C++ IDE,适用于GCC

我在Borland的Turbo C++ IDE中学习了C和C++,这是16位版本,具有旧的蓝屏背景,我开始为Windows构建控制台程序.现在Windows Vista和7不支持该IDE以全屏模式运行,我正在寻找GCC附带的类似IDE(不一定来自Borland),并且不需要太多学习使用如果一个人已经使用过Turbo C.那么有没有适用于Windows 7的免费GCC IDE?我不会用它来开发Windows应用程序,因为我需要它来练习数据结构控制台程序.

c c++ ide gcc windows-7

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

Windows和Linux中的设计友好的JSP/Servlet Web开发(Ubuntu等人)

我是我的大学JSP项目的前端开发人员,到目前为止我使用Sublime Text 2编写标记和我的CSS/Less并直接从Apache Tomcat运行项目,我将项目目录放在webapps文件夹中,但是后来,该项目需要使用Servlets(显然),我意识到IDE的需要,而开发部分的同事现在坚持使用IDE.

我们将整个项目移植到NetBeans 7.1.1,到目前为止,项目工作正常,NetBeans负责创建/管理Servlet及其web.xml配置的所有麻烦,但我主要处理标记和Less,这是这里真的很乏味.以下是我面临的问题:

  • 较少的文件根本没有语法突出显示.(虽然我提到了这种.less文件添加语法高亮的方式).

  • 每次我对标记或CSS进行更改时,我都需要按F5并等到浏览器中的新选项卡启动以反映更改.(浏览器中的刷新页面不像以前的JSP开发方式那样工作).如果我看到之后没有关闭标签,想象10个标签可以进行10次更改.

  • 我经常使用jQuery,在我的.js文件中看到警告真的很烦我(我知道NetBeans可能指向正确的问题,但我根本不希望它对我的代码"过于聪明").

  • Web设计人员会知道"在浏览器中保存更改到css和刷新页面"的频率.而IDE只会减慢整个过程.

我知道使用IDE的明显优势,但有没有解决上述问题?

另外,我想移植我的项目到Eclipse(它只是疯了的精缩jQuery的文件),转向NetBeans的面前,但它只是拒绝使用相对路径为我.js,.css而且.less<script><alt>标签,即使所有的文件和文件夹存在在Web内容目录中.我得到的只是我的脚本和样式表的404错误,尽管我可以访问这些文件,我手动访问URL.如下:

<link rel="stylesheet/less" href="less/styles.less" media="all" />
<!-- Above line doesn't include the file and I get 404 error -->
Run Code Online (Sandbox Code Playgroud)

Visiting to localhost:8080/MyProject/less/styles.less 
   shows me its content in the browser.
Run Code Online (Sandbox Code Playgroud)

此外,我试图在不使用IDE的情况下使用Servlet(我的Java代码非常简单,以至于我觉得不需要类似IntelliSense的编辑)并提到了这个链接,并且如果我以与解释,但我不明白为什么我需要指定servlet-api.jarapache-tomcat\libclasspath在编译的inspite的事实,我有路径已经加入到Apache的lib文件夹的时间CLASSPATH变量在Windows中.

我知道在这个单一问题中有太多问题可能会被SO主持人"缓和",但我的所有问题都暗示了必须开发JSP/Servlet并在不使用IDE的情况下设计页面的单个问题,以及只是相当有能力的文本编辑器AKA Sublime Text.

请建议我一个坚定的解决方案.

ide jsp servlets

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

在Visual Basic.NET中获取Sleep/Hibernate和Resume/Wakeup事件

我有VB.NET应用程序与一些外部服务器通信(通过Intranet维护登录会话),我想听取Sleep/Hibernate事件,这样当它发生时,我想在计算机进入睡眠状态之前注销现有的会话系统,虽然我的应用程序将继续在后台运行,但不会做任何事情.

反之亦然,当计算机从Hibernate恢复或从睡眠状态唤醒时,我想立即登录服务器.

如何获取这些事件并执行我的代码?我相信这与我应该在VB中使用的Win32 API有关.

谢谢.

vb.net winapi system-calls

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

如何在没有边框的Windows窗体上获得Aero Glass?

我正在尝试使用DWM API在VB.NET 2010应用程序中查看Aero Glass的表单,但是正如函数调用所示,它将Frame的外观扩展到客户区,如果表单没有边框,则不会发生任何事情和形式将变得无形.那么,我可以在没有任何边框的情况下获得Aero玻璃吗?

vb.net dwm winforms aero-glass

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

在服务于Socket连接的两个线程之间共享公共数据

我在SO上看到了很多类似的问题,但Socket在图片中几乎没有任何问题.所以请花些时间阅读这个问题.

我有服务器应用程序(使用ServerSocket),它监听请求,当客户端尝试连接时,创建新线程以服务客户端(并且服务器返回到新请求的监听模式).现在,我需要根据其他客户端发送到服务器的内容来响应一个客户端.

例:

  • ServerSocket侦听传入连接.
  • 客户端A连接,创建新线程以服务A.
  • 客户端B连接,创建新线程以服务B.
  • A向服务器发送消息"Hello from A".
  • 将此消息作为对客户B的响应发送.

我对这整个"线程间通信"的事情不熟悉.显然,上面提到的情况听起来很简单,但我正在描述这个以获得提示,因为我将在客户端之间交换大量数据,将服务器保持为中间状态.

另外,如果我想将共享对象限制为10个特定客户端,该怎么办?这样,当第11个客户端连接到服务器时,我创建了新的共享对象,该对象将用于在第11,第12,第13 ......到第20个客户端之间交换数据.等等每一组10个客户端.

我尝试了什么:(我猜是愚蠢的)

  • 我有一个public类,该对象应该被共享为public static,所以我可以使用它作为全局而不实例化它,就像MyGlobalClass.SharedMsg.
  • 这不起作用,我无法将一个线程中收到的数据发送给另一个线程.

我知道存在明显的锁定问题,因为如果一个线程正在写入一个对象,则其他线程在第一个线程完成写入之前无法访问它.

那么这个问题的理想方法是什么呢?

更新

由于我创建线程来提供传入的连接请求的方式,我无法理解如何在线程之间共享相同的对象,因为如上所述使用Global对象不起作用.

以下是我如何监听传入连接并动态创建服务线程.

// Method of server class
public void startServer()
{
    if (!isRunning)
    {
        try
        {
            isRunning = true;
            while (isRunning)
            {
                try
                {
                    new ClientHandler(mysocketserver.accept()).start();
                }
                catch (SocketTimeoutException ex)
                {
                    //nothing to perform here, go back again to listening.
                }
                catch (SocketException ex)
                {
                    //Not to …
Run Code Online (Sandbox Code Playgroud)

java sockets multithreading

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

在命令提示符下的`java`命令中设置要使用的默认类路径

我正在试图做的是运行.java使用命令通过编译,并从命令提示符下运行它(不使用任何IDE)源javacjava和程序与MySQL连接,所以每次我从运行CMD程序,我需要指定的路径使用-classpath开关的MySQL连接器java.并且运行该程序的整个命令如下所示:

java -class .;path/to/connector/mysql-connector.jar MySQLConnect

我希望它像其他程序一样简单java MySQLConnect ,它应该运行程序.

有没有什么办法可以添加连接器的路径到Windows的环境变量java使用它.我已经尝试过CLASSPATH在Windows环境变量中创建一个新变量,并添加了带文件名的连接器的绝对路径,但是没有用.

请提供此Windows和Ubuntu的解决方法.

谢谢.

java mysql windows command-line

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