RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-245865

R1zen's questions

Martin Hope
R1zen
Asked: 2020-02-21 18:14:46 +0000 UTC

Spring Data JPA 关闭数据库连接

  • 1

有一个 Spring Boot 应用程序可以将通过 API 接收到的大量数据传输到远程数据库(MySQL)。我使用 HikariCP 作为连接池,下面是它在应用启动时的配置:

HikariPool-1 - configuration: 
allowPoolSuspension.............false 
autoCommit......................false 
catalog.........................none 
connectionInitSql...............none 
connectionTestQuery.............none 
connectionTimeout...............30000 
dataSource......................none 
dataSourceClassName.............none 
dataSourceJNDI..................none 
dataSourceProperties............{password=<masked>} 
driverClassName................."com.mysql.cj.jdbc.Driver" 
healthCheckProperties...........{} 
healthCheckRegistry.............none 2019-02-21 13:00:32:351 [main] DEBUG c.z.h.HikariConfig.logConfiguration() - idleTimeout.....................600000 
initializationFailTimeout.......1 
isolateInternalQueries..........false 
jdbcUrl.........................jdbc:mysql://url/db_name?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&failOverReadOnly=false 
leakDetectionThreshold..........0 
maxLifetime.....................1800000 
maximumPoolSize.................10 
metricRegistry..................none 
metricsTrackerFactory...........none 
minimumIdle.....................10 
password........................<masked> 
poolName........................"HikariPool-1" 
readOnly........................false 
registerMbeans..................false 
scheduledExecutor...............none 
schema..........................none 
threadFactory...................internal 
transactionIsolation............default 
username........................"name" 
validationTimeout...............5000 

在运行过程中,会出现一个日志:HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)

工作几分钟后,抛出异常:

2019-02-21 12:56:22:323 [HikariPool-1 connection closer] DEBUG c.z.h.p.PoolBase.quietlyCloseConnection() - HikariPool-1 - Closing connection com.mysql.cj.jdbc.ConnectionImpl@4169569c: (connection is dead) 
2019-02-21 12:56:22:327 [HikariPool-1 connection adder] DEBUG c.z.h.p.HikariPool.createPoolEntry() - HikariPool-1 - Cannot acquire connection from data source 
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
    at com.zaxxer.hikari.pool.HikariPool.access$100(HikariPool.java:71)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:706)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:692)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
    at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:91)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:152)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:955)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
    ... 14 common frames omitted
Caused by: java.net.ConnectException: В соединении отказано (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65)
    ... 17 common frames omitted

2019-02-21 12:56:28:238 [HikariPool-1 housekeeper] DEBUG c.z.h.p.HikariPool.logPoolState() - HikariPool-1 - Pool stats (total=0, active=0, idle=0, waiting=1) 
2019-02-21 12:56:30:417 [HikariPool-1 connection adder] DEBUG c.z.h.p.HikariPool.createPoolEntry() - HikariPool-1 - Cannot acquire connection from data source 

试图安装max-lifetime: 25800, maximum-pool-size: 20, minimum-idle: 0, idle-timeout: 30000- 结果总是一样的。可能是什么问题呢?

升级版:

从数据库输出超时:

connect_timeout 10
deadlock_timeout_long 50000000
deadlock_timeout_short 10000
delayed_insert_timeout 300
innodb_lock_wait_timeout 50
innodb_rollback_on_timeout OFF
interactive_timeout 28800
lock_wait_timeout 31536000
net_read_timeout 30
net_write_timeout 600
slave_net_timeout 3600
thread_pool_idle_timeout 60
wait_timeout 28800

UPD2。

在工作过程中,出现日志:

[yourPoolName connection closer] DEBUG c.z.h.p.PoolBase.quietlyCloseConnection() - yourPoolName - Closing connection com.mysql.cj.jdbc.ConnectionImpl@742e0612: (connection has passed maxLifetime) 
[yourPoolName connection adder] DEBUG c.z.h.p.HikariPool.call() - yourPoolName - Added connection com.mysql.cj.jdbc.ConnectionImpl@16e8fb27 

UPD3

原来 MySQL 在远程服务器上崩溃了。提供商说内存不足。什么会阻塞记忆?也许某种 MySQL 缓存?

java
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-01-09 19:36:50 +0000 UTC

基巴纳。如何为日志设置不同的索引

  • 0

有一个堆栈ELK为它们收集应用程序日志和指标。logstash配置了一个为指标添加前缀的过滤器:

filter {
    if [logger_name] =~ "metrics" {
        kv {
            source => "message"
            field_split => ", "
            prefix => "metric_"
        }
...
}

有必要以某种方式将日志与“指标”分开,以便Kibana为不同的索引设置可视化。告诉我,是否有可能实现这一点以及在哪里挖掘?

elasticsearch
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-12-26 23:13:21 +0000 UTC

禁止将某些日志输出到控制台

  • 1

我有一个在 docker 容器中运行的 Spring Boot 应用程序。使用 slf4j + logback 配置的日志记录。应用程序日志写入 Logstash,同时显示在容器控制台上。是否可以仅关闭特定类的控制台输出?例如 com.hazelcast.internal.diagnostics.HealthMonitor 写道:

2018-12-26 08:59:39.068  INFO 1 --- [s.HealthMonitor] c.h.internal.diagnostics.HealthMonitor   :  
processors=6, physical.memory.total=17.5G, physical.memory.free=1.8G, swap.space.total=7.9G, 
swap.space.free=4.7G, heap.memory.used=586.6M, heap.memory.free=1.4G, heap.memory.total=2.0G, 
heap.memory.max=2.0G, heap.memory.used/total=29.21%, heap.memory.used/max=29.21%, minor.gc.count=26,
...

我想将此类日志保留在 Logstash 中,但禁用它们以进行控制台输出。

当前的 logback-spring.xml 配置包含:

...

<configuration scan="true">
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <appender name="LOGSTASH" class="ch.qos.logback.classic.net.SocketAppender">
        <remoteHost>host</remoteHost>
        <port>port</port>
        <reconnectionDelay>10000</reconnectionDelay>
    </appender>

    <logger name="com.hazelcast.internal.diagnostics.HealthMonitor" level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </logger>
...
</configuration>

但是,日志仍然显示在控制台中

java
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-07-27 17:21:59 +0000 UTC

在 TextArea JavaFX 中插入大量行

  • 1

有ArrayList<String>一个,它存储了大约 40,000 行。它们需要输出到TextArea. 试图Observer通过一个循环来实现并插入。在这两种情况下,我都会收到一个错误:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException...
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException: -1

如果将行数减少到 ~100,则错误只会间歇性地发生。实现此类功能的最佳组件是什么?

添加示例:

new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 40000; i++) {
                    messagesArea.appendText(i + "\n");
                }
            }
        }).start();

堆:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
    at com.sun.javafx.text.PrismTextLayout.addTextRun(PrismTextLayout.java:755)
    at com.sun.javafx.text.GlyphLayout.addTextRun(GlyphLayout.java:140)
    at com.sun.javafx.text.GlyphLayout.breakRuns(GlyphLayout.java:210)
    at com.sun.javafx.text.PrismTextLayout.buildRuns(PrismTextLayout.java:770)
    at com.sun.javafx.text.PrismTextLayout.layout(PrismTextLayout.java:1021)
    at com.sun.javafx.text.PrismTextLayout.ensureLayout(PrismTextLayout.java:223)
    at com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:246)
    at javafx.scene.text.Text.getLogicalBounds(Text.java:358)
    at javafx.scene.text.Text.impl_computeGeomBounds(Text.java:1168)
    at javafx.scene.Node.updateGeomBounds(Node.java:3577)
    at javafx.scene.Node.getGeomBounds(Node.java:3530)
    at javafx.scene.Node.getLocalBounds(Node.java:3478)
    at javafx.scene.Node$MiscProperties$2.computeBounds(Node.java:6472)
    at javafx.scene.Node$LazyBoundsProperty.get(Node.java:9306)
    at javafx.scene.Node$LazyBoundsProperty.get(Node.java:9276)
    at javafx.scene.Node.getBoundsInLocal(Node.java:3156)
    at com.sun.javafx.scene.control.skin.TextAreaSkin$ContentView.layoutChildren(TextAreaSkin.java:207)
    at javafx.scene.Parent.layout(Parent.java:1087)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Parent.layout(Parent.java:1093)
    at javafx.scene.Scene.doLayoutPass(Scene.java:552)
    at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2397)
    at com.sun.javafx.tk.Toolkit.lambda$runPulse$29(Toolkit.java:398)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:397)
    at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:424)
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:518)
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:498)
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:491)
    at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$403(QuantumToolkit.java:319)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    at java.lang.Thread.run(Thread.java:748)
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
javafx
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-04-09 16:59:39 +0000 UTC

android小部件重置数据

  • 0

该应用程序有一个常规小部件,其中包含三个TextView. 数据从方法中加载SharedPreferences和处理,处理结果输入到TextView. 重启手机后,所有数据都重置为单位,小部件不再可点击。在设置中指定的时间后更新小部件后问题得到解决。此外,在将小部件从一个屏幕移动到另一个屏幕时,在弱手机上也注意到了这个问题。告诉我如何处理这个问题?

小部件类:

public class NewAppWidget extends AppWidgetProvider {
SharedPreferences mSettings;

void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
    loadSettings(context); //загрузка данных из SP

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.template_widget);
    views.setTextViewText(R.id.appwidget_time_value, getDays(context));

    RemoteViews views2 = new RemoteViews(context.getPackageName(), R.layout.template_widget);
    views2.setTextViewText(R.id.appwidget_count_value, getCount());

    RemoteViews views3 = new RemoteViews(context.getPackageName(), R.layout.template_widget);
    views3.setTextViewText(R.id.appwidget_money_value, getMoney());

    Intent intent = new Intent(context, MainActivity.class);
    PendingIntent pIntentMainActivity = PendingIntent.getActivity(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.widget, pIntentMainActivity);

    appWidgetManager.updateAppWidget(appWidgetId, views);
    appWidgetManager.updateAppWidget(appWidgetId, views2);
    appWidgetManager.updateAppWidget(appWidgetId, views3);
}

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    for (int appWidgetId : appWidgetIds) {
        updateAppWidget(context, appWidgetManager, appWidgetId);
    }
}

@Override
public void onEnabled(Context context) {
    // Enter relevant functionality for when the first widget is created
}

@Override
public void onDisabled(Context context) {
    // Enter relevant functionality for when the last widget is disabled
}

提供者

<appwidget-provider
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialKeyguardLayout="@layout/template_widget"
    android:initialLayout="@layout/template_widget"
    android:minHeight="20dp"
    android:minWidth="120dp"
    android:resizeMode="horizontal"
    android:previewImage="@drawable/example_appwidget_preview"
    android:updatePeriodMillis="1800000"
    android:widgetCategory="home_screen">
</appwidget-provider>
android
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-04-04 16:00:29 +0000 UTC

爪哇。计算两个日期之间经过的年月日

  • 3

下午好。给出了日期间隔,例如:01/28/2009 - 03/05/2013。任务是计算此间隔内的完整年数、月数和天数。告诉我怎么做?

我只是找到这样的天数

    Date startDate = new SimpleDateFormat("dd.MM.yyyy").parse(s1);
    Date endDate = new SimpleDateFormat("dd.MM.yyyy").parse(s2);

    Calendar calendarStart = Calendar.getInstance();
    calendarStart.setTimeInMillis(startDate.getTime());

    Calendar calendarEnd = Calendar.getInstance();
    calendarEnd.setTimeInMillis(endDate.getTime());

    long difference = calendarEnd.getTimeInMillis() - calendarStart.getTimeInMillis();
    long days = difference /(24* 60 * 60 * 1000);

    System.out.println(days);

结果应显示为:年:7,月:5,天:10

java
  • 2 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-02-14 21:44:05 +0000 UTC

游标加载器。预处理数据库中的数据

  • 1

下午好。实现了一种商店。有一个包含ImageView两个TextView. View来自数据库的数据使用CursorLoader. 单击View产品时,数据库中的字段会更新,这表明该产品已被购买(零或一)。到目前为止,一切都运行良好。以及如何在加载商店时处理数据?有必要这样做:如果产品在数据库中有一个单元,那么它是View不可点击的。

public class ShopActivity extends AppCompatActivity implements LoaderCallbacks<Cursor>{
    SimpleCursorAdapter scAdapter;
    ListView lvData;
    DBHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop2);
        dbHelper = new DBHelper(this);

        String[] from = new String[] { DBHelper.ITEMS_IMAGE, DBHelper.ITEMS_NAME, DBHelper.ITEMS_COST };
        int[] to = new int[] { R.id.radioImageIV, R.id.radioDescriptionTV, R.id.radioCostTV}; 

        scAdapter = new SimpleCursorAdapter(this, R.layout.shop_item_radio, null, from, to, 0);

        lvData = (ListView) findViewById(R.id.lvData);

        lvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                view.setClickable(false);

                new ProgramManager(Shop2Activity.this).setBought(view); //обновляет запись в БД
            }
        });

        lvData.setAdapter(scAdapter); 
        getSupportLoaderManager().initLoader(0, null, this);
    }

    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
        return new MyCursorLoader(this, dbHelper);
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        scAdapter.swapCursor(cursor);
    }

   static class MyCursorLoader extends CursorLoader {
        DBHelper dbHelper;

        public MyCursorLoader(Context context, DBHelper db) {
            super(context);
            this.dbHelper = db;
        }

        @Override
        public Cursor loadInBackground() {
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            Cursor cursor = db.query(DBHelper.ITEMS_TABLE_NAME, null, null, null, null, null,null);
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return cursor;
        }

    }

shop_item_radio.xml

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true"
    android:background="@drawable/border_shop"
    android:fillViewport="true"
    android:isScrollContainer="true">

    <ImageView
        android:id="@+id/radioImageIV"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginBottom="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/border"
        android:padding="4dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/radio" />

    <TextView
        android:id="@+id/radioDescriptionTV"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="8dp"
        android:textAlignment="textStart"
        android:textColor="#004D40"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/radioImageIV"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/radioCostTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:drawableLeft="@drawable/ic_money_24dp"
        android:text="10000"
        android:textAlignment="gravity"
        android:textColor="#004D40"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/radioDescriptionTV" />
</android.support.constraint.ConstraintLayout>
android
  • 2 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-01-17 18:21:23 +0000 UTC

爪哇。从 Excel 打印

  • 1

问题的实质如下:有2个xls-files。第一个包含从数据库中选择的数据,第二个用于从第一个文件手动输入数据。第二个文件中的单元格被拉伸到需要的大小,这样在非标准纸上打印是正确的(其实第二个文件只是一个打印的模板(他们手动更改数据,打印出来等等)一个圆圈))。

在 library 的帮助下org.apache.poi,我从第一个文件中获取了必要的数据。

  • 是否可以绕过模板文件打印此数据(使用必要的缩进和字体大小设置文本)?
  • 或者也许有一种方法可以将此数据插入模板并立即开始在后台打印(这样用户不必每次打印时都打开修改过的 Excel 文档)?
java
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-10-31 16:52:19 +0000 UTC

从 TextView 和 ImageView 创建一个图像

  • 1

下午好。您需要实现一种将文本添加到图像的方法。给用户10张图片,他可以添加任何文字。最初,我尝试通过 Canvas 完成并返回已添加文本的图像。但是在这里我们遇到了一个多行文本的伏击,这是事先未知的。是否可以将 TextView 与 ImageView 组合成一个图像,然后将其保存在应用了文本的画廊中?

谢谢你。

android
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-10-24 20:05:07 +0000 UTC

安卓 SQLite。多个查询条件

  • 2

有一个包含 3 列的表 - id、描述(文本)、位置(文本)。根据任务的条件,设置一个过滤器,指示应该显示哪个位置。还有这个方法:

Cursor getFromTableWithFilter(String table, String[] columns, String selection,
                              String[] selectionArgs, String groupBy,
                              String having, String sortOrder) {

    return myDataBase.query(table, columns, selection, selectionArgs,
            groupBy, having, sortOrder);

我试着这样做:

Cursor cursor = dbHelper.getFromTableWithFilter("myTable",
        new String[] {"descriptions"},
        "prof= ? OR prof = ?", selectionArgs, null, null, null);

问题是这种方法只有在过滤器中有 2 个值时才有效(可以是 1 也可以是 5)。如何使“selection”参数不绑定到“selectionArgs”中的数量?或者有没有更好的方法来解决这个问题?谢谢你。

android
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-10-12 22:52:11 +0000 UTC

保存对象

  • 0

我开始写我想到的第一件事——一本有食谱的书。底线是主屏幕位于ListView标题和“添加”按钮。当您单击“添加”时,将打开另一个活动,您可以在其中输入配方的名称及其描述。从此数据创建一个新对象:

public class Recipe implements Parcelable{
private String recipeName;
private String recipeDescriptions;

public Recipe(String recipeName, String recipeDescriptions) {
    this.recipeName = recipeName;
    this.recipeDescriptions = recipeDescriptions;
   }
} //дальше реализация Parcelable

点击Item应该ListView编辑这个食谱。目前,已经实现了一个新的Activity,其中 recipeName 和 recipeDescriptions 被传递并输入到相应EditText的 's 中。一切都被完美地编辑和保存。但是,当出现保存对象的问题时,为了在加载应用程序时恢复它们,我就卡住了。真的在这里没有数据库是不可能的吗?我想我被带到了错误的草原。

请告诉我,在启动时实现存储和恢复的最佳方法是什么?也许我需要完全重新考虑应用程序的概念并以其他方式做所有事情?也许您根本不需要上课Recipe,但是用String's?

java
  • 1 个回答
  • 10 Views
Martin Hope
R1zen
Asked: 2020-04-15 19:11:58 +0000 UTC

爪哇。如何仅将文件夹中的某些文件存档到一个存档中

  • 0

大家好。也许这个问题很老套,但我是 Java 的新手,我就是想不出来。

问题是这样的:

有一个文件夹,它包含许多不同的文件。我只选择我需要的(在更改日期之前)。我正在使用 java.util.zip.ZipOutputStream。当我将文件传递给存档方法时,它使我为每个文件创建一个单独的存档。有没有什么方法可以让您制作一个存档,而无需将必要的文件复制/移动到单独的文件夹?

我从文件数组中选择必要文件并将其传输以进行存档的代码:

for (File s : files) {

            BasicFileAttributes attr = Files.readAttributes(s.toPath(), BasicFileAttributes.class);
            if (dateChecker(attr.lastModifiedTime())) {                            
                ZipOutputStream out = new ZipOutputStream(new FileOutputStream(s.getPath() + ".zip"));
                doZip(s, out);
                out.close();
            }
        }

存档方式:

 void doZip(File dir, ZipOutputStream out){
    try {
        out.setLevel(9);
        out.putNextEntry(new ZipEntry(dir.getName()));
        write(new FileInputStream(dir), out);
    }
    catch (IOException e) {
        e.printStackTrace();
    }

}

private static void write(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int len;
    while ((len = in.read(buffer)) >= 0)
        out.write(buffer, 0, len);
    in.close();
}
java
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5