我试图在我的应用程序中添加插件,但我不希望插件完全使用反射,插件代码可以是使用Application Domain的沙箱.
我在MSDN上找到了一个AppDomain 示例,但是没有对ReflectionPermision的任何引用,并且Deny安全属性也被折旧,许多属性被折旧,我该如何停止反射呢?
我有一个表类别,
1)Id
2)CategoryName
3)CategoryMaster
数据为:
1计算机0
2软件1
3多媒体1
4动画3
5健康0
6 Healthsub 5
我创建了递归查询:
;WITH CategoryTree AS
(
SELECT *, CAST(NULL AS VARCHAR(50)) AS ParentName, 0 AS Generation
FROM dbo.Category
WHERE CategoryName = 'Computers'
UNION ALL
SELECT Cat.*,CategoryTree.CategoryName AS ParentName, Generation + 1
FROM dbo.Category AS Cat INNER JOIN
CategoryTree ON Cat.CategoryMaster = CategoryTree.Id
)
SELECT * FROM CategoryTree
Run Code Online (Sandbox Code Playgroud)
我得到父类别的结果到底部,就像我得到计算机的所有子类别
但我希望从动画到计算机的自下而上的结果,请一些人建议我正确的方向.
先感谢您 :)
我是AI的新手.我正在通过机器学习来处理文本分类的应用程序.应用程序需要对HTML文档的不同部分进行分类.例如,大多数网页都有头部,菜单,侧边栏,页脚,主要内容等.我想使用文本分类器对HTML文档的这些部分进行分类,并在页面上标识不同类型的表单.
我正在寻找有关代码和实现的更多技术建议.
我可以为html标签属性分配标签,例如class或id
<div class="menu-1">
<div id="entry">
<div id="content">
<div id="footer">
<div id="comment-12">
<div id="comment-title">
Run Code Online (Sandbox Code Playgroud)
喜欢第一项:
TrainClassifier(标签:"菜单",值:"menu-1",属性:"class",position-in-string:"21%",tag:"div");
输入:
产量
什么神经网络库,可以采取上述输入,并将它们分类到标签(即菜单).
所有用户都无法创建正则表达式或xpath,他们需要更简单的方法,因此重要的是,要使软件智能化,用户可以使用webbrowser控件突出显示他/她需要的部分html文档,并训练软件直到它可以独自工作.
但我不知道如何使用AI制作软件列车,
我正在寻找的AI,就像它应该能够接受各种输入,并在此基础上进行分类,正如我已经说过AI的新内容,对它不太了解.
如果我能回答我提出的问题,比如我应该使用哪个库,以及如何实现,建议使用Xpath或Regex或其他方法的答案,那么对我来说会有所帮助.建议,但你需要的.
我正在尝试构建一个将应用于IQueryable集合的表达式.
我可以构建一个这样的表达式:
[TestClass]
public class ExpressionTests
{
private IQueryable<MyEntity> entities;
private class MyEntity
{
public string MyProperty { get; set; }
}
[TestInitialize]
public void Setup()
{
entities = new[]
{
new MyEntity {MyProperty = "first"},
new MyEntity {MyProperty = "second"}
}.AsQueryable();
}
[TestMethod]
public void TestQueryingUsingSingleExpression()
{
Expression<Func<MyEntity, bool>> expression = e => e.MyProperty.Contains("irs");
Assert.AreEqual(1, entities.Where(expression).Count());
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想分开表达式的两个部分:
[TestMethod]
public void TestQueryingByCombiningTwoExpressions()
{
Expression<Func<MyEntity, string>> fieldExpression = e => e.MyProperty;
Expression<Func<string, bool>> operatorExpression = e => e.Contains("irs");
// …
Run Code Online (Sandbox Code Playgroud) HTTPWebResponse公开Headers的属性,是否有可能获得原始响应,就像我们使用套接字,Header和Content结合使用Reflection一样,我认为必须有一种方法.
我可以使用套接字,但需要很多工作才能使它们可用,如代理支持,https,进度事件等等...列表很长,我强烈建议使用HTTPWebRequest,唯一的问题是我需要原始头文件响应,我试图下载的网站发送了一个非常长而奇怪的cookie,它不是由HTTPClRequest,WebClient处理的.Wordpress博客,无法使用WebClient登录任何wordpress博客,但使用套接字手动cookie处理它完美,可能是WebClient中的一个错误.
1)只需要原始标题,即可.
2)还有文章链接
文章说HTTPWebRequest存在问题,只有一个线程正在下载而其他线程一直在等待,如果这是真的那么套接字更好?
文章说: 这段代码运行良好但是它有一个非常严重的问题,因为WebRequest类函数GetResponse锁定对所有其他进程的访问,WebRequest将检索到的响应告知为关闭,如前一代码中的最后一行.所以我注意到只有一个线程正在下载,而其他线程正在等待GetResponse.为了解决这个严重的问题,我使用Socket实现了我的两个类MyWebRequest和MyWebResponse.
我想将我的应用程序的外观和感觉更改为类似于Office 2007.
是否有现成的,简单的,简单的解决方案?
我的代码如下
public void DownloadConcurrent(Action<string> Methord)
{
Action<string>[] methordList = new Action<string>[Concurent_Downloads];
for (int i = 0; i < Concurent_Downloads; i++)
{
methordList[i] = Methord;
}
Parallel.Invoke(methordList);
}
Run Code Online (Sandbox Code Playgroud)
Parallel.Invoke给出了错误:
"cannot convert from 'System.Action<string>[]' to 'System.Action[]'"
Run Code Online (Sandbox Code Playgroud)
它调用的方法是
public void DownloadLinks(string Term)
{
}
Run Code Online (Sandbox Code Playgroud) 我正在运行LINQ查询,该查询使用本地"let"变量来计算本地值,以与传递给查询的参数进行比较.
我有以下查询:
Items = from lead in Items
let total = lead.NurtureActions.Count(q => !q.Deleted)
let completed = lead.NurtureActions.Count(nurtureAction => nurtureAction.Completed && !nurtureAction.Deleted)
let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
where
total>0 &&
percentage == progress
select lead;
Run Code Online (Sandbox Code Playgroud)
上面非常重要的部分是以下行:
let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
Run Code Online (Sandbox Code Playgroud)
正如您在我的查询中看到的那样,我将该查询的结果与progress
传递给我的函数进行比较.
例如:我可能会传入值8
,因此progress
会有值8
.但计算的percentage
最初可能是8.223
,但我需要将其舍入到8
.
我相信我这样做是正确的,但由于某种原因,某些东西不能正常工作.
什么可能会抛出四舍五入的想法?我也尝试了AwayFromZero
舍入选项,但这也不起作用.
编辑对于那些要求更多信息的人,我不确定它的计算价值.我没有调试LINQ查询的经验,也不知道从哪里开始查找该值是什么.如果我知道如何获得它,我会提供它.
我有一个奇怪的问题。我正在尝试检索已在webbrowser控件中加载的图像。以下代码在WinForms应用程序中可以正常运行:
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)__ie.NativeDocument.BODY).createControlRange();
foreach (IHTMLImgElement img in __ie.NativeDocument.Images)
{
imgRange.add((IHTMLControlElement)img);
imgRange.execCommand("Copy", false, null);
System.IO.MemoryStream stream = new System.IO.MemoryStream();
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
{
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
var image = System.Drawing.Image.FromStream(stream);
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在WPF应用程序中使用相同的代码,则会在
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().......
Run Code Online (Sandbox Code Playgroud)
错误如下:
“无法将类型为'System.Windows.Interop.InteropBitmap'的对象转换为类型为'System.Drawing.Bitmap'。”
我该如何解决?
请任何人都可以提供任何指导。
先感谢您。
我有一个已知的字符串列表,如下所示:
List<string> groupNames = new List<string>(){"Group1","Group2","Group3"};
Run Code Online (Sandbox Code Playgroud)
我还有一个事先未知的字符串列表,如下所示:
List<string> dataList = new List<string>()
{
"Group1.SomeOtherText",
"Group1.SomeOtherText2",
"Group3.MoreText",
"Group2.EvenMoreText"
};
Run Code Online (Sandbox Code Playgroud)
我想做一个 LINQ 语句,它将获取 dataList 并将其转换为匿名对象或字典,该对象具有组名称的键和包含该组中字符串列表的值。目的是循环组和内部循环组列表,并根据字符串所在的组对字符串执行不同的操作。
我想要一个看起来像这样的数据结构:
var grouped = new
{
new
{
Key="Group1",
DataList=new List<string>()
{
"Group1.SomeOtherText",
"Group1.SomeOtherText2"
}
},
new
{
Key="Group2",
DataList=new List<string>()
{
"Group2.EvenMoreText"
}
}
...
};
Run Code Online (Sandbox Code Playgroud)
我知道我可以循环遍历 dataList,然后检查每个字符串是否包含组名称,然后将它们添加到单独的列表中,但我正在尝试学习执行此类任务的 LINQ 方式。
提前致谢。
编辑:
只是有另一个想法...如果我的组名在枚举中怎么办?
public enum Groups
{
Group1,
Group2,
Group3
}
Run Code Online (Sandbox Code Playgroud)
我如何将其放入字典>?
这就是我正在尝试的,但我不确定如何形成 ToDictionary 部分
Dictionary<Groups,List<string>> groupedDictionary = (from groupName in Enum.GetNames(typeof(Groups))
from data in dataList …
Run Code Online (Sandbox Code Playgroud) 这个方法我用于并发下载.
public void DownloadConcurrent(Action Method)
{
Action[] methodList = new Action[Concurent_Downloads];
for (int i = 0; i < Concurent_Downloads; i++)
{
methodList[i] = Method;
}
Parallel.Invoke(methodList);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试同时下载网址,但有效下载的数量始终为1.
就像所有下载都会调用一样,但只有一个url会开始下载数据,而不是所有下载都会开始下载.
我希望所有下载同时并行工作,无法实现.
更新:方法正在使用队列,它正在下载不同的URL,形成队列.
我正在尝试下载,搜索bing页面,并询问使用套接字,我决定使用套接字,而不是webclient.
所述socket.Receive(); 在bing,yahoo,google的情况下,在几个循环后挂起但是可以提问.谷歌循环将收到4-5次,然后冻结通话.
我无法弄清楚为什么?
public string Get(string url)
{
Uri requestedUri = new Uri(url);
string fulladdress = requestedUri.Host;
IPHostEntry entry = Dns.GetHostEntry(fulladdress);
StringBuilder sb = new StringBuilder();
try
{
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP))
{
socket.Connect(entry.AddressList[0], 80);
NetworkStream ns = new NetworkStream(socket);
string part_request = string.Empty;
string build_request = string.Empty;
if (jar.Count != 0)
{
part_request = "GET {0} HTTP/1.1\r\nHost: {1} \r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nCookie: {2}\r\nConnection: …
Run Code Online (Sandbox Code Playgroud) public static bool SendMail(string toList, string from, string ccList, string subject, string body)
{
MailMessage message = new MailMessage();
SmtpClient smtpClient = new SmtpClient();
try
{
MailAddress fromAddress = new MailAddress(from);
message.From = fromAddress;
message.To.Add(toList);
if (ccList != null && ccList != string.Empty)
message.CC.Add(ccList);
message.Subject = subject;
message.IsBodyHtml = true;
message.Body = body;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;
smtpClient.Timeout = 30000;
smtpClient.Host = "smtp.gmail.com"; // We use gmail as our smtp client
smtpClient.Port = 587;
smtpClient.UseDefaultCredentials = true;
smtpClient.Credentials …
Run Code Online (Sandbox Code Playgroud)