我的开发工作中的一个重复主题是使用或创建内部插件架构.我已经看到它涉及多种方式 - 配置文件(XML,.conf等),继承框架,数据库信息,库等.在我的经验中:
当我试图从我曾经使用过的各种架构中学习时,我也在寻求社区的建议.您是如何实现SOLID插件架构的?你最糟糕的失败是什么(或者你看到的最严重的失败)?如果要实现新的插件架构,您会怎么做?您使用过的SDK或开源项目是否具有良好架构的最佳示例?
我自己找到的几个例子:
这些例子似乎发挥了各种语言优势.一个好的插件架构是否必然与语言相关?最好使用工具来创建插件架构,还是在自己的以下模型上进行?
收集器的Javadoc显示如何将流的元素收集到新的List中.是否有一个单行程序将结果添加到现有的ArrayList中?
是否可以使用Python为iOS和Android编写跨平台应用程序
我最近开始学习和探索Java中GUI编程的基础知识.
经过一段时间的编程后,我只完成了后端工作或工作,因此最接近用户界面的是命令控制台(我知道这令人尴尬).
我正在使用Swing,据我所知,这意味着我也使用AWT.
我的问题是基于这段代码:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frame.setVisible(true);
}
} );
Run Code Online (Sandbox Code Playgroud)
我一直在研究这一段时间,因为我想完全理解这种奇怪的代码和所遇到的术语"事件派发线程"多次.如果我错了,但正如我所理解的那样纠正我; 它与使用多个线程以及Java Swing如何解释这些线程有关.我也收集到上面的代码用于确保所有线程在创建窗口之前是"安全的",因此invokeLater?
我读过:
"你只能从Event-Dispatching Thread中调用对框架进行操作的方法"
并且只有在某些情况下才能调用main方法对框架进行操作的方法.
有人可以向我澄清一下Event-Dispatching Thread到底是什么吗?
它如何与多个执行线程相关,以及如何从main方法调用这些线程是不安全的?为什么我们需要这个invokeLater?
我们不能像其他任何对象一样创建窗口吗?
我在研究中遇到了一些障碍,因为我没有抓住这些关系和想法.
一个侧面说明,我喜欢将我的知识建立在深入理解的基础上,因为我相信这会带来最好的整体结果,并因此成为最好的计划.如果我深入了解某些东西是如何工作的,那么你可以有效地使用提示和调整,而不仅仅是将它们重新编入代码中,所以请不要害怕给我一些额外的深入解释并扩展我的知识.
谢谢.
我正在寻找一个开源Java拼写检查库,它至少包含以下语言的字典:法语,德语,西班牙语和捷克语.有什么建议吗?
从今天起,我在 GitHub CI 中收到如下错误:
File "/home/runner/.local/lib/python3.8/site-packages/fb4/login_bp.py", line 12, in <module>
from fb4.sqldb import db
File "/home/runner/.local/lib/python3.8/site-packages/fb4/sqldb.py", line 8, in <module>
db = SQLAlchemy()
File "/home/runner/.local/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 758, in __init__
_include_sqlalchemy(self, query_class)
File "/home/runner/.local/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 112, in _include_sqlalchemy
for key in module.__all__:
AttributeError: module 'sqlalchemy' has no attribute '__all__'
CRITICAL: Exiting due to uncaught exception <class 'ImportError'>
Run Code Online (Sandbox Code Playgroud)
不知道任何可能导致这种情况的重大提交。我的本地测试和 Jenkins CI 仍然有效。
我更改了矩阵以坚持使用 python 3.8,而不是尝试 3.9、3.10 和 3.11,还考虑到python 3.9 AttributeError: module 'posix' has no attribute '__all__'中的类似问题是由于缺少 3.9 支持。
如何调试和缓解上述错误?
我的假设是问题出在设置/环境中,或者 …
情况:
作为尚未实现的功能的解决方法,将单词的用户词典添加到Languagetool,我想出了这段代码:
JLanguageTool langTool = new JLanguageTool(lang);
langTool.activateDefaultPatternRules();
List<Rule> rules = langTool.getAllActiveRules();
for (Rule rule:rules) {
// System.out.println(rule.getId());
if (rule.getId().equals("GERMAN_SPELLER_RULE")) {
if (rule instanceof SpellingCheckRule) {
SpellingCheckRule srule=(SpellingCheckRule) rule;
String [] words={"word1", "word2"};
List<String> tokens=new ArrayList<String>();
for (String word:words) {
tokens.add(word);
}
srule.addIgnoreTokens(tokens);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将很好地添加由指定的单词列表
String [] words={"word1", "word2"};
Run Code Online (Sandbox Code Playgroud)
到被忽略的单词列表.但是如何组合单词/两个单词模式如"访客浴室","法语单词""测试应用程序" - 如何在不修改原始语法文件的情况下忽略这些?我假设创建一些用户定义的规则可以做到这一点,也可能是上面代码片段更优雅的解决方案.
题:
获取用户词典的工作方法是什么,忽略单词和双词短语?
我在我的android项目中使用simplexml,一切正常,直到我混淆代码.然后,错误开始涌入.
部分XML如下:
<categories success="true">
<category id="102" caption="Magazin" parent="0" num_mags="114" >
<category id="15" caption="Kunst" parent="102" num_mags="13" >
<category id="17" caption="Design" parent="15" num_mags="10" ></category>
<category id="18" caption="Haute+Couture" parent="15" num_mags="2" >
...
Run Code Online (Sandbox Code Playgroud)
我有两个类:CategoryItemList:
@Root(name = "categories")
public class CategoryItemList {
private final List<CategoryItem> mCategoryItems;
/**
* Create a new category items list.
*
* @param categoryItems the list of category items
*/
public CategoryItemList(@ElementList(name = "category", inline = true) final List<CategoryItem> categoryItems) {
mCategoryItems = categoryItems;
}
@ElementList(name = "category", inline = true) …
Run Code Online (Sandbox Code Playgroud) 我很难过.我们最近将我们的Android项目转换为Maven项目.我的合作伙伴正在使用IntelliJ而我正在使用Eclipse.他说这可以通过他的设置很好地构建.
我是Maven的新手并且已经按照教程阅读了我能找到的所有内容来尝试解决这个问题.
我的pom.xml文件中有以下错误:
Multiple annotations found at this line:
- Plugin execution not covered by lifecycle configuration: com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.3.2:proguard (execution: default-proguard,
phase: process-classes)
- Plugin execution not covered by lifecycle configuration: com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.3.2:generate-sources (execution: default-
generate-sources, phase: generate-sources)
Run Code Online (Sandbox Code Playgroud)
这是我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.groupmd.clientandroid</groupId>
<artifactId>clientandroid</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>apk</packaging>
<name>GroupMD</name>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r7</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.actionbarsherlock</groupId>
<artifactId>actionbarsherlock</artifactId>
<version>4.2.0</version>
<type>apklib</type>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.3.2</version>
<extensions>true</extensions> …
Run Code Online (Sandbox Code Playgroud) 寻找一个dropwizard示例,我发现:
https://github.com/codahale/dropwizard/tree/master/dropwizard-example
但我对一个更完整的例子感兴趣,至少:
三分之二将是一个开始,我将获得"接受".
java ×4
android ×3
languagetool ×2
python ×2
architecture ×1
awt ×1
beeware ×1
collectors ×1
dropwizard ×1
eclipse ×1
ios ×1
java-8 ×1
java-stream ×1
maven ×1
nlp ×1
plugins ×1
proguard ×1
sqlalchemy ×1
swing ×1