我被要求写一个简单的Fibonacci算法实现,然后让它更快.
这是我的初步实施
public class Fibonacci {
public static long getFibonacciOf(long n) {
if (n== 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return getFibonacciOf(n-2) + getFibonacciOf(n-1);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner (System.in);
while (true) {
System.out.println("Enter n :");
long n = scanner.nextLong();
if (n >= 0) {
long beginTime = System.currentTimeMillis();
long fibo = getFibonacciOf(n);
long endTime = System.currentTimeMillis();
long delta = …Run Code Online (Sandbox Code Playgroud) 我编写了Bresenham的圆绘制算法的实现.这种算法利用了圆的高度对称性(它只计算第一个八分圆的点,并利用对称性绘制其他点).因此我期待它非常快.图形编程黑皮书,第35章标题为" Bresenham快速,快速好 ",虽然它是关于线条绘制算法,但我可以合理地期望圆形绘制算法也很快(因为原理是相同).
这是我的java,swing实现
public static void drawBresenhamsCircle(int r, double width, double height, Graphics g) {
int x,y,d;
y = r;
x = 0;
drawPoint(x, y, width, height,g);
d = (3-2*(int)r);
while (x <= y) {
if (d <= 0) {
d = d + (4*x + 6);
} else {
d = d + 4*(x-y) + 10;
y--;
}
x++;
drawPoint(x, y, width, height,g);
drawPoint(-x, y, width, height,g);
drawPoint(x, -y, width, height,g);
drawPoint(-x, -y, width, height,g);
drawPoint(y, …Run Code Online (Sandbox Code Playgroud) 我想使用Java代码在Linux机器上打开终端(命令提示符).我知道如何在Windows中打开命令提示符.我在windows中使用了以下代码
String command= "cmd c/start cmd.exe"
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
Run Code Online (Sandbox Code Playgroud)
我在Linux中需要相同的东西.
谢谢你的回答.我也想运行一个sh脚本.
以下代码是否有效.
String command= "usr/bin/xterm myshell.sh";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
Run Code Online (Sandbox Code Playgroud) 我对分形很感兴趣但直到最近才有机会实现它们.我首先实现了一个黑色和白色的mandelbrot设置,然后我尝试添加颜色.
这是我的mandelbrot的实现(我使用org.apache.commons.math3.complex.Complex复数)
public class MyMandelbrot {
public static int numberOfIterationsToCheck(Complex z0, int max) {
Complex z = z0;
for (int t = 0; t < max; t++) {
if (z.abs() > 2.0) return t;
z =z.multiply(z).add(z0);
}
return max;
}
public static void main(String[] args) {
double xc = Double.parseDouble(args[0]);
double yc = Double.parseDouble(args[1]);
double size = Double.parseDouble(args[2]);
int N = 512;
int max = 255;
Viewer viewer = new Viewer(N, N);
for (int i = 0; i < N; …Run Code Online (Sandbox Code Playgroud) 我已经成功实现了Mitchell的最佳候选算法.Mitchell的最佳候选算法通过创建k个候选样本并选择k 的最佳值来生成新的随机样本.这里"最佳"样本被定义为距离先前样本最远的样本.该算法近似于泊松盘采样,产生比均匀随机采样更自然的外观(更好的蓝噪声光谱特性).
我试图改善它,特别是在速度方面.因此,我想到的第一个想法是仅将候选样本与最后添加的元素进行比较,而不是将它们与之前的整个样本进行比较.这会偏向泊松圆盘采样,但可能会产生一些有趣的结果.
这是我实施的主要部分
public class MitchellBestCandidateII extends JFrame {
private List<Point> mitchellPoints = new ArrayList<Point>();
private Point currentPoint;
private int currentPointIndex =0;
private boolean isBeginning = true;
private Point[] candidatesBunch = new Point[MAX_CANDIDATES_AT_TIME];
public MitchellBestCandidateII() {
computeBestPoints();
initComponents();
}
Run Code Online (Sandbox Code Playgroud)
该方法computeBestPoints在这个意义上计算与Mitchell算法不同的点,即它仅将候选者与最后添加的点进行比较,而不是将其与整个样本进行比较.
private void computeBestPoints() {
do {
if (isBeginning) {
currentPoint = getRandomPoint();
mitchellPoints.add(currentPoint);
isBeginning = false;
currentPointIndex = 0;
}
setCandidates();
Point bestCandidate = pickUpCandidateFor(currentPoint);
mitchellPoints.add(bestCandidate);
currentPoint = …Run Code Online (Sandbox Code Playgroud) 我现在正在学习java中的Varargs.我写了这个方法:
public static void vrati(Object... arguments){
for(Object i : arguments)
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
然后我打电话给方法:
main.vrati(8,2,"String");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:varargs是否将原始类型转换为对象?因为我在这个方法调用中混合了int和String,并且可以像一个对象一样访问它们.
我有一个visual studio 2012解决方案,包含两个VB.Net项目(ASP .NET MVC 4).我首先使用Entite Framework代码与其中一个项目,但我根本没有使用Entity Framework进行第二个项目.当我编写其中一个实体的代码时,我编写了以下代码:
Public Class TacheDeReference
Inherits BaseModel
Public DescriptionTache As String
End Class
Run Code Online (Sandbox Code Playgroud)
而不是写:
Public Class TacheDeReference
Inherits BaseModel
Public Property DescriptionTache As String
End Class
Run Code Online (Sandbox Code Playgroud)
但在意识到我的错误之前,我已经重新生成了解决方案并运行它,并访问了Entity Framework Code First脚手架流程产生的一些crud用户界面.
现在,当我进行上述更改时,我遇到了以下错误消息:
自创建数据库以来,支持"BlogContext"上下文的模型已更改.请考虑使用"代码优先迁移"来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269).
当我按照链接进行迁移过程时,第一条指令是Enable-Migrations在包管理器控制台中运行该命令.
当我运行该命令时,我有另一条错误消息告诉我实体框架没有安装在我的一个项目上,这是正常的,因为它只安装在一个项目上
见下图

我的问题:我如何运行Enable-Migrations特定的项目 而不是整个解决方案?
谢谢您的帮助.
我正在尝试使用keycloak REST API删除用户会话,但是却获取了403禁止的Http状态代码。我正在将令牌和cookie传递到标题中,如果我遗漏了一些东西,请告诉我。
static void logOut(String userId,KeycloakSecurityContext session){
userId = "a12c13b7-fa2e-412f-ac8e-376fdca16a83";
String url = "http://localhost:8081/auth/admin/realms/TestRealm/users/a12c13b7-fa2e-412f-ac8e-376fdca16a83/logout";
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);
HttpResponse response;
try {
httppost.addHeader("Accept", "application/json");
httppost.addHeader("Content-Type","application/json");
httppost.addHeader("Cookie", "JSESSIONID=CABD8A135C74864F0961FA629D6D489B");
httppost.addHeader("Authorization", "Bearer "+session.getTokenString());
response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
System.out.println("entity :"+response.getStatusLine());
if (entity != null) {
String responseString = EntityUtils.toString(entity, "UTF-8");
System.out.println("body ....."+responseString);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud)