当 Merge 出现截图中这样的问题时,文件的行翻译从Unix LF更改为Windows CRLF。如何解决这个问题呢?
我在 VS 文档中找到了“Encodings and line endings”,但是我没有这些设置,包括注释中提到的服务菜单
我正在使用 VS 2019 社区版 我使用 GitKraken 进行合并
当 Merge 出现截图中这样的问题时,文件的行翻译从Unix LF更改为Windows CRLF。如何解决这个问题呢?
我在 VS 文档中找到了“Encodings and line endings”,但是我没有这些设置,包括注释中提到的服务菜单
我正在使用 VS 2019 社区版 我使用 GitKraken 进行合并
我正在写一类有理数。隐式转换会引发错误 (StackOverflowException),其原因无法理解。下面是调用代码、类和错误截图
调用隐式转换
[Test]
public void ConvertFromInt()
{
Rational r = 5;
AssertEqual(5, 1, r);
}
理性类
public class Rational
{
public int Numerator { get; set; }
public int Denominator
{
get { return Denominator; }
set
{
if (value <= 0)
IsNan = true;
else
IsNan = false;
Denominator = value;
}
}
public bool IsNan { get; set; }
public Rational(int numenator, int detominator)
{
Numerator = numenator;
Denominator = detominator;
}
public Rational(int numenator) : this(numenator,1) { }
public static implicit operator Rational(int number)
{
return new Rational(number);
}
}
请帮助我理解我的示例中移动语义的实现
我有一个简单的字符串类
class DynamicString
{
public:
char* CharArray;
int Length;
DynamicString(char* charArray, int length);
~DynamicString();
DynamicString(const DynamicString &dsObject);
DynamicString&operator= (const DynamicString &dsObject);
}
到目前为止,我正在尝试在没有移动语义的情况下实现复制和赋值运算符
DynamicString::~DynamicString()
{
delete[] CharArray;
CharArray = nullptr;
}
DynamicString::DynamicString(const DynamicString & dsObject)
{
Length = dsObject.Length;
CharArray = new char[Length];
for (int i = 0; i < Length; i++)
CharArray[i] = dsObject.CharArray[i];
}
DynamicString & DynamicString::operator=(const DynamicString & dsObject)
{
if (Length == dsObject.Length)
for (int i = 0; i < Length; i++)
CharArray[i] = dsObject.CharArray[i];
else
{
delete[] CharArray;
Length = dsObject.Length;
CharArray = new char[Length];
for (int i = 0; i < Length; i++)
CharArray[i] = dsObject.CharArray[i];
}
return *this;
}
阅读各种资源,据我了解,有必要将数组引用从一个重新排列到另一个。有点像CharArray = dsObject.CharArray;
内部复制和赋值,但问题是,在这种情况下,如果删除其中一个对象,是否会删除第二个对象的内容?问题是来自内存,如果丢失了对原始对象的引用,这种情况下会不会出现内存泄漏?
任务是将傅里叶变换应用于一个小系列(12 个值)
据我了解,快速傅里叶变换不是很合适,因为 它需要2次的数据量,这意味着它将三分之一的数据减少到8个值,这很关键
我正在寻找现成的解决方案,或对公式的解释,以便自己实施
我在网上找到了这个公式
我试着指望它,然后将FFT 中的第一个值与 wiki进行比较。我得到的价值观很不一样。
我正在转换的系列的值(6.6、6.3、6、6.3、6.6、6.6、7.2、6.9、6.9、7.2、6.3、6)
我这样计算: 6.6 * exp(-2*3.141592*1*0 / 12) + 6.3*exp(-2.3.141592*1*1 / 12) + ... 所以我对所有的 x 和 n 进行排序值变化1直到12并将其全部加起来,所以我得到上面屏幕截图中的值78.9这是我认为是错误的,还是来自wiki的FFT实现错误,或者FFT和非快速傅里叶有不同的第一值?
我附上公式的实现
public static Complex[] FT(Complex[] X)
{
int N = X.Length;
Complex[] result = new Complex[N];
for (int k = 0; k < N; k++)
{
for (int n = 0; n < N; n++)
{
double arg = -2 * Math.PI * k * n/ N;
var complex = new Complex(Math.Cos(2 * Math.PI * k * n / N), Math.Sin(-2 * Math.PI * k * n / N));
result[k] += X[n] * complex;
}
}
return result;
}
任务是修改(重写)记录的值,如果存在,如果这样的记录不存在,那么添加这样的记录
我正在寻找最简单、最快和最正确的方法来做到这一点。
下面是一个使用C#代码解决此问题的错误示例,其中我在尝试添加记录时截获了一个错误(我使用 nick 作为主键,因此存在具有此类值的记录时会发生错误)
// добавление
try
{
sqlCmd.CommandText = "INSERT INTO Money ('nick', 'money') values ('StriBog45' , '300')";
sqlCmd.ExecuteNonQuery();
}
catch (SQLiteException ex)
{
Console.WriteLine("Error: " + ex.Message);
// модификация
try
{
sqlCmd.CommandText = "UPDATE Money SET money = 600 WHERE nick = 'StriBog45'; ";
sqlCmd.ExecuteNonQuery();
}
catch (SQLiteException xex)
{
Console.WriteLine("Error: " + xex.Message);
}
有一个想法可以通过 SQL 命令中的 if else 来完成,但是随后执行了对存在的额外搜索,这可能会减慢工作速度,例如
if(exists(nick = 'StriBog45'))
UPDATE Money SET money = 600 WHERE nick = 'StriBog45'
Else
INSERT INTO Money ('nick', 'money') values ('StriBog45' , '300')
毕竟,团队Insert into
检查了主键的重复,这意味着它本身已经使用了存在的外表,在我看来,这可以以某种方式使用
在Stackoverflow 中我找到了这样一个选项,但是它需要引入额外的变量并且非常庞大
$res = mysql_query('select count(*) FROM table WHERE id = 1') or die();
$row = mysql_fetch_row($res);
if ($row[0] > 0)
{
// Есть данные
}
else
{
// нет данных
}
如何将位数组转换为文本,使其看起来像一组 0 和 1?
如果您尝试使用该方法bytes.ToString()
,那么会发生这种情况:[B@a0e2ce5
我有条件地需要 101100110101
这种转换是否有现成的标准方法?
我正在尝试使用Bluetooth LE发现设备,我按照此库中为 Xamarin 编写的方法进行操作,但检测到 0 个设备
包括在 android 中的必要清单。将扫描时间增加到 30 秒,但没有。在设备上启用蓝牙,版本 4.0
Asus_Z00ED 设备 (Android 6.0 - API 23)。在 Android 8.1 上使用目标创建的项目。试图在清单中切换目标 android 版本(8.0、9.0)但也没有检测到
检测不到位还有哪些其他原因?
public class Page6 : ContentPage
{
IBluetoothLE ble;
IAdapter adapter;
ObservableCollection<IDevice> deviceList;
Label label;
public Page6()
{
ble = CrossBluetoothLE.Current;
adapter = CrossBluetoothLE.Current.Adapter;
deviceList = new ObservableCollection<IDevice>();
label = new Label { Text = "Welcome to Xamarin.Forms!" };
var buttonList = new Button() { Text = "Devices List" };
buttonList.Clicked += ButtonList_Clicked;
Content = new StackLayout
{
Children = {
label,
buttonList,
}
};
}
private async void ButtonList_Clicked(object sender, EventArgs e)
{
deviceList.Clear();
adapter.ScanTimeout = 30000;
adapter.DeviceDiscovered += (s, a) =>
{
deviceList.Add(a.Device);
};
await adapter.StartScanningForDevicesAsync(); // сканирование
label.Text = deviceList.Count.ToString();
}
}
如何覆盖集合的 ToString() 方法?
List<Place> spisok = new List<Place>();
for (int i = 0; i < 20; i++)
spisok.Add(new Place(PlaceStatus.Free));
我想在打电话时spisok.ToString()
收到格式为 0,0,0,0 的字符串(即用逗号分隔的元素)
或者类似的这样一个集合
var spisok = new Place[20];
for (int i = 0; i < 20; i++)
spisok[i] = new Place(PlaceStatus.Free));
下面是使用的元素的代码。在类中我试图重载 ToString() 方法,当对象为 1 时,它会给出数值。但在数组的情况下,这是文本 - 关于类的记录
public enum PlaceStatus
{
Free,
Booked,
Paid,
Confirmed
}
public class Place
{
public PlaceStatus Status { get; set; }
public Place(PlaceStatus status)
{
Status = status;
}
public override string ToString()
{
return ((int)Status).ToString();
}
}
如何在 Xamarin.Android 中将文件保存到外部源(SD 卡)?
有一个任务来保存文件,以便以后用户可以在设备上和应用程序之外使用这个文件。不幸的是,这违反了 iOS 政策,所以不可能在那里,但正因为如此,Android 在 Xamarin 中也受到限制
下面的代码正在将文件保存在专用目录中。但是这个目录对用户是隐藏的,你不能使用这些文件。
public class FileWorker_Android : IFileWorker
{
public Task DeleteAsync(string filename)
{
// удаляем файл
File.Delete(GetFilePath(filename));
return Task.FromResult(true);
}
public Task<bool> ExistsAsync(string filename)
{
// получаем путь к файлу
string filepath = GetFilePath(filename);
// существует ли файл
bool exists = File.Exists(filepath);
return Task<bool>.FromResult(exists);
}
public Task<IEnumerable<string>> GetFilesAsync()
{
// получаем все все файлы из папки
IEnumerable<string> filenames = from filepath in Directory.EnumerateFiles(GetDocsPath())
select Path.GetFileName(filepath);
return Task<IEnumerable<string>>.FromResult(filenames);
}
public async Task<string> LoadTextAsync(string filename)
{
string filepath = GetFilePath(filename);
using (StreamReader reader = File.OpenText(filepath))
{
return await reader.ReadToEndAsync();
}
}
public async Task SaveTextAsync(string filename, string text)
{
string filepath = GetFilePath(filename);
using (StreamWriter writer = File.CreateText(filepath))
{
await writer.WriteAsync(text);
}
}
// вспомогательный метод для построения пути к файлу
string GetFilePath(string filename)
{
return Path.Combine(GetDocsPath(), filename);
}
// получаем путь к папке MyDocuments
string GetDocsPath()
{
return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
}
}
从Android文档中,所有使用外部源(SD 卡)的工作都是通过 进行的Environment.getExternalStoragePublicDirectory
,但是在 XamarinEnvironment
中没有这样的方法
在 Android/UWP 中找不到保存的文件所在的位置
按照. _ 一切都保存成功了,程序结束后这些文件还在目录中,但是我在程序外找不到!我试图通过 Android 和 Windows 10 (UWP) 上的搜索引擎找到它,但任何地方都没有这样的文件。Android-e 上的内容,显示隐藏文件的窗口中的内容已启用
在 Android 代码中,从目录中获取所有文件如下所示:
IEnumerable<string> filenames = from filepath in Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
select Path.GetFileName(filepath);
顺便说一句,当我试图查看音乐中的内容(更改SpecialFolder.MyDocuments
为SpecialFolder.MyMusic
我在 Android 上找到了这个文件夹“/com.companyname.TestNavigationPage2/files/”,但只有 . override,其中包含库和资源(无资源)
我对请求传入的图像应用过滤器,然后将其发送回来。我现在在 Bitmap 的帮助下处理它,非常方便,但性能受到很大影响。是否有专门为此目的的库/类?
从传入流转换为图片
var Picture = new Bitmap(listenerContext.Request.InputStream);
迭代像素以设置新颜色。GetPixel 方法性能低下(在我看来)
for (int x = 0; x < bmp.Width; x++)
for (int y = 0; y < bmp.Height; y++) {
var temp = bmp.GetPixel(x,y);
bmp.SetPixel(x,y, Color.FromArgb(temp.A,temp.R,temp.G,temp.B));
}
保存图像以响应请求
Picture.Save(listenerContext.Response.OutputStream, ImageFormat.Png);
我想用代码“滚动”列表视图。尚不完全清楚 ListView 中的滚动是如何工作的,如何获取它的位置。我正在尝试使用该方法更改位置ScrollTo
,但在任何位置都没有发生任何事情
他们是这样表示的:使用设置滚动的方法,每百分之一秒我将滚动位置向下移动 N。如果我们已经到了边缘,那么我们设置对面边缘的滚动位置并继续移动。
using Android.App;
using Android.Widget;
using Android.OS;
using System;
using Android.Media;
using System.Collections.Generic;
using Android.Views;
namespace TestChart
{
[Activity(Label = "Slot Machine", MainLauncher = true)]
public class MainActivity : Activity
{
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2","Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
Button buttonRoll = FindViewById<Button>(Resource.Id.buttonRoll);
ListView listViewSlotMachine = FindViewById<ListView>(Resource.Id.listViewSlotMachine);
var adapter = new ArrayAdapter<String>(this, Resource.Layout.my_list_item, values);
// присваиваем адаптер списку
listViewSlotMachine.Adapter = adapter;
buttonRoll.Click += (sender, e) =>
{
listViewSlotMachine.ScrollTo(0, 0); // ничего не происходит
};
}
}
}
我尝试通过各种方式手动设置窗口中元素(按钮)的位置(我尝试将几个按钮一个接一个地依次放置)。我按顺序创建了三个按钮,但屏幕上只显示最后一个按钮,只有按下它才有效。我找到了一种方法setLayoutX
,似乎可以让您沿 X 轴设置位置,但这无济于事,元素位于左上角(显然三个都在那里,一个在另一个下方)。
如果不GridPane
使用StackPane
,则元素位于中心,也只有一个。一般来说,我无法理解这是怎么回事)
import javafx.application.Application
import javafx.event.ActionEvent
import javafx.event.EventHandler
import javafx.scene.Scene
import javafx.scene.control.Button
import javafx.scene.layout.StackPane
import javafx.stage.Stage
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text;
import javafx.scene.control;
import javafx.scene.paint;
import javafx.geometry;
object Main {
def main(args:Array[String])
{
val witchers: List[String] = new List();
witchers.AddBack("The Witcher")
witchers.AddBack("The Witcher 2")
witchers.AddBack("The Witcher 3")
Application.launch(classOf[Main], args: _*)
}
}
class Main extends Application {
override def start(primaryStage: Stage) {
primaryStage.setTitle("For Romanov")
var buttons = new List[Button]
val pane = new GridPane//StackPane
val witchers: List[String] = new List();
witchers.AddBack("The Witcher")
witchers.AddBack("The Witcher 2")
witchers.AddBack("The Witcher 3")
var layoutX = 5.toDouble;
for (witcher <- witchers) {
var btn = new Button
btn.setText(witcher)
btn.setLayoutX(layoutX)
btn.setOnAction(new EventHandler[ActionEvent] {
override def handle(e: ActionEvent) {
println(witcher)
}
})
var hbBtn = new HBox(10);
hbBtn.setAlignment(javafx.geometry.Pos.BASELINE_RIGHT);
hbBtn.getChildren().add(btn);
//pane.getChildren.add(btn)
pane.add(hbBtn, 40, 40)
layoutX += 100
}
primaryStage.setScene(new Scene(pane, 500, 500))
primaryStage.show
}
}
我正在尝试使用 Emgu 库进行识别。将所有 opencv.dll 添加到项目中,并附有复制到项目的说明 添加到 emgu 的链接。从使用 Emgu 没有问题的事实来看,那么问题在于 .dll opencv 我缺少什么?
Visual Studio 2017. Emgu 版本:emgucv-windesktop 3.2.0.2682-сuda
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
using System.Windows;
namespace Emgu.FaceDetection
{
public partial class Form1 : Form
{
private Capture cap;
private HaarCascade haar;
public Form1()
{
InitializeComponent();
}
}
}
我正在使用 opencv 3.3.0 在 Visual Studio 2017 中编写。我从工作示例中获取了代码,但是有以前版本的 opencv
#include <iostream>
#include <stdio.h>
#include <opencv2\opencv.hpp>
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat image;
image = imread("lena.jpg", CV_LOAD_IMAGE_COLOR);
imshow("cam", image);
// Load Face cascade (.xml file)
CascadeClassifier face_cascade;
face_cascade.load("С:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml");
// Detect faces
std::vector<Rect> faces;
/*face_cascade.detectMultiScale(image, faces,
1.1, 2, 0
//|CASCADE_FIND_BIGGEST_OBJECT
//|CASCADE_DO_ROUGH_SEARCH
//|CASCADE_DO_CANNY_PRUNING
| CASCADE_SCALE_IMAGE,
Size(30, 30));*/
face_cascade.detectMultiScale(image, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
/*// Draw circles on the detected faces
for (int i = 0; i < faces.size(); i++)
{
Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5);
ellipse(image, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);
}*/
//namedWindow("Win");
waitKey(0);
return 0;
}
机器人工作室。在 PC 上,从数据库读取成功,在 Android 上数据库为空。我将数据库本身存储在 assets 目录中,与所有图片所在的位置相同。所有在android中没有问题的图片都是用的
dbHandler = DatabaseHandlerFactory.getNewDatabaseHandler(DATABASE_NAME, DATABASE_VERSION, DATABASE_CREATE, null);
dbHandler.setupDatabase();
dbHandler.openOrCreateDatabase();
dbHandler 在手机中找不到 .db 文件并创建新的空数据库,我如何将数据库传输到 android 以便我可以读取它?
AndroidLauncher 代码基于 Chaynik 的回答(有效)
import android.content.Context;
import android.os.Bundle;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class AndroidLauncher extends AndroidApplication {
Context mycontext;
private static String DB_NAME = "database.db";
private String DB_PATH;
private void copydatabase() throws IOException {
//Open your local db as the input stream
InputStream myinput = mycontext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outfilename = DB_PATH + DB_NAME;
//Open the empty db as the output stream
OutputStream myoutput = new FileOutputStream(mycontext.getDatabasePath(DB_NAME));
// transfer byte to inputfile to outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myinput.read(buffer))>0) {
myoutput.write(buffer,0,length);
}
//Close the streams
myoutput.flush();
myoutput.close();
myinput.close();
}
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
mycontext = getContext();
DB_PATH = getApplicationContext().getPackageName()+"/databases/";
try {
copydatabase();
} catch(IOException e) {};
initialize(new ReactionTeacher(1), config);
}
}