我正在使用PHP和MySQL建立一个站点,它本质上只是现有数据库的Web前端.可以理解的是,我的客户非常希望能够阻止任何人在数据库中复制数据,同时希望所有内容都公开,甚至"查看全部"链接以显示数据库中的每条记录.
虽然我已经采取了一切措施来防止诸如SQL注入攻击之类的攻击,但没有什么可以阻止任何人将所有记录都视为html并运行某种脚本来将这些数据解析回另一个数据库.即使我要删除"查看全部"链接,理论上仍然可以使用自动化过程逐个浏览每个记录并将这些记录编译到新数据库中,从根本上捏取所有信息.
有没有人有任何好的策略来防止甚至只是阻止它们可以分享.
我正在使用PyGTK来构建GUI应用程序.我想从另一个线程更新textview小部件,但每次尝试更新时小部件都不会更新.我该怎么做才能获得可靠的GUI更新?
我想知道为什么当你在一个基类中的虚方法上放置一个System.Diagnostics.Conditional("DEBUG")属性时,你不会在派生类上获得编译器错误,这些类会覆盖相同的虚方法但不会在不满足条件时具有条件属性.例:
public class MyBaseClass
{
[System.Diagnostics.Conditional("DEBUG")]
public virtual void Test()
{
//Do something
}
}
public class MyDerivedClass : MyBaseClass
{
public override void Test()
{
//Do something different
}
}
Run Code Online (Sandbox Code Playgroud)
似乎在没有定义DEBUG时,条件基本上会产生一种不存在覆盖方法的原因,因为实际的IL输出中没有虚函数.然而在我的测试中,编译器似乎生成代码就好了.条件是否仅为函数体抛出IL而不对类签名进行任何实际更改?
char*变量是否指向字符串(在源代码中写入)是否可以?
我可以操作/修改为文字字符串分配的空间,只要我不超过它的长度吗?尽管我理解可执行文件的格式,但这很好,但我想确定.谢谢 :)
我正在开发一个在Windows Mobile设备上运行的Java应用程序.为了实现这一目标,我们一直在使用Esmertec JBed JVM,这并不完美,但我们现在仍然坚持使用它.最近我们收到客户关于OutOfMemoryErrors的投诉.在经历了很多事情后,我发现设备有足够的可用内存(大约4MB).
OutOfMemoryErrors总是出现在代码中的同一点,也就是扩展StringBuffer以便向其附加一些字符时.在这个区域添加了一些日志记录后,我发现我的StringBuffer中有大约290000个字符,容量大约是290500.内部字符数组的扩展策略只是将大小加倍,所以它会尝试分配一个数组大约580000个字符.我打印出这段时间的内存使用量,发现它总共使用了大约3.8MB的大约6.8MB(尽管我已经看到总可用内存有时会增加到12MB左右,因此有足够的扩展空间).所以在这一点上,应用程序报告了一个OutOfMemoryError,考虑到仍然有多少,它没有多大意义.
到目前为止,我开始考虑应用程序的运行.基本上发生的事情是我正在使用MinML(一个小的XML Sax Parser)解析XML文件.XML中的一个字段中包含大约300k个字符.解析器从磁盘流式传输数据,默认情况下,它一次只加载256个字符.因此,当它到达相关字段时,解析器将调用处理程序的'characters()'方法超过1000次.每次创建一个包含256个字符的新char [].处理程序只是将这些字符附加到StringBuffer.StringBuffer的默认初始大小只有12,因此当字符附加到缓冲区时,它将不得不增长很多次(每次创建一个新的char []).
我的假设是,虽然有足够的可用内存,因为前面的char []可以被垃圾收集,但是可能没有足够大的连续内存块来适应我想要分配的新数组.也许JVM不够智能,无法扩展堆大小,因为它很愚蠢,认为没有必要,因为显然有足够的可用内存.
所以我的问题是:有没有人有这个JVM的经验,并且可能最终确认或反驳我对内存分配的假设?而且,有没有人有任何想法(假设我的假设是正确的)关于如何改进数组的分配,以便内存不会碎片化?
注意:我已经尝试过的事情:
做这两件事有点帮助,但随着我增加xml数据的大小,我仍然得到相当低的大小(约350kb)的OutOfMemoryErrors.
另外要添加的内容:所有这些测试都是在使用相关JVM的设备上执行的.如果我使用Java SE 1.2 JVM在桌面上运行相同的代码我没有任何问题,或者至少我没有遇到问题,直到我的数据大小达到4MB.
编辑:
我刚试过的另一件事有点帮助我将Xms设置为10M.因此,这可以解决JVM在不应该扩展堆时的问题,并允许我在错误发生之前处理更多数据.
我正在用Python编写客户端/服务器应用程序,我发现有必要为客户端的每个请求获取与服务器的新连接.我的服务器只是继承自TCPServer,我继承BaseRequestHandler来进行处理.我不是在处理程序中的任何地方调用self.request.close(),但不知何故服务器似乎挂在我的客户端上.这是怎么回事?
我想从车辆列表中生成TSV文件....我还将对数据进行一些转换,例如,如果传输的值是"自动",那么此值将呈现为"A"或里程数以英里为单位,然后将此值乘以1.6.
最好的方法是什么?
UPDATE
好的......所以我写了如下脚本:
from django.conf import settings
import myapp.settings
setup_environ(myapp.settings)
from django.db import models
from myapp.vehicles.models import Vehicle
import csv
data = Vehicle.objects.all().exclude(status__status='Internal Use').
exclude(status__status='Sold').order_by('-common_vehicle__year',
'common_vehicle__series__model__manufacturer__manufacturer',
'common_vehicle__series__model__manufacturer__manufacturer_popularity')
vehicles = csv.writer(open('cars.csv', 'w'), delimiter='\t')
vehicles.writerow(["VIN","Stock","Year","Make","Model",
"TrimPackage","Transmission","DriveType","Odometer","OdometerType",
"Doors","BodyStyle","EngineType","Exterior","Interior","Condition",
"Certified","FuelType","Price"])
for vehicle in data:
vehicles.writerow(["1130","26919",vehicle.vin,vehicle.stock_number,
vehicle.common_vehicle.year.year,
vehicle.common_vehicle.series.model.manufacturer.manufacturer,
vehicle.common_vehicle.series.model.model,vehicle.common_vehicle.series.series,
transmission,vehicle.common_vehicle.drive_train.drive_train,
vehicle.odometer_reading,"KM",vehicle.common_vehicle.body_style.doors,
body_style,engine_type,vehicle.exterior_colour.exterior_colour,
vehicle.interior_colour.interior_colour,"E","Y",fuel_type,"0"])
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行脚本时,我收到此错误: ImportError: No module named myapp.settings
更新2 刚看到我的错误......一切都很好
我试图使用前面问题的答案来实现一个小图库.我们的想法是将图形视为一种选择,其中顶点包裹集合元素.
我想使用抽象类型来表示Vertex和Edge类型(因为类型安全),我想使用类型参数来表示集合元素的类型(因为我想在实例化时轻松定义它们).
但是,在尝试我能想到的最基本的例子时,我遇到了编译错误.这是一个例子:
package graph
abstract class GraphKind[T] {
type V <: Vertex[T]
type G <: Graph[T]
def newGraph(): G
abstract class Graph[T] extends Collection[T]{
self: G =>
def vertices(): List[V]
def add(t: T): Unit
def size(): Int
def elements(): Iterator[T]
}
trait Vertex[T] {
self: V =>
def graph(): G
def value(): T
}
}
Run Code Online (Sandbox Code Playgroud)
这是基本的实现:
class SimpleGraphKind[T] extends GraphKind[T] {
type G = GraphImpl[T]
type V = VertexImpl[T]
def newGraph() = new GraphImpl[T]
class GraphImpl[T] extends …Run Code Online (Sandbox Code Playgroud) 除非继承,否则使C#不实例化类的最简单方法是什么?
听起来很奇怪,但我不想解释原因.我有一个基类和两个继承它的类.我只想使用派生类而不是基类.derive类没有任何额外的功能.什么是最简单的方法,不允许我写新的BaseClass(); 所以我不小心使用它?我确实有在基类上运行的函数,而不是派生的函数.
我正在尝试将上传的多部分文件写入文件系统.我有一个名为audio的目录,它位于我的Web应用程序的根目录中(不在WEB-INF内部,但在它旁边,它可以像css和javascript一样公开访问).
我想将上传的文件写入该目录,但我似乎无法获得我需要的路径.我认为获得ServletContext()然后使用realPath()可能会工作,但我没有通过Spring控制器引用ServletContext.谢谢任何肝脏
@RequestMapping(value="/uploadSample")
public ModelAndView upload(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile f) {
if (f == null) {
return new ModelAndView("upload", "msg", "The file is null.");
}
try {
// I need to set AUDIO_PATH to <webAppRoot>/audio
FileOutputStream file = new FileOutputStream(AUDIO_PATH + "/" + f.getOriginalFilename());
file.write(f.getBytes());
file.close();
}
catch (FileNotFoundException ex) {
Logger.getLogger(SampleUploadController.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) {
Logger.getLogger(SampleUploadController.class.getName()).log(Level.SEVERE, null, ex);
}
return new ModelAndView("upload", "msg", "File ( " + f.getOriginalFilename() + ") successfully uploaded.");
}
Run Code Online (Sandbox Code Playgroud)
}