lambda函数是否有可能具有可变数量的参数?例如,我想编写一个元类,它为其他类的每个方法创建一个方法,这个新创建的方法返回原始方法的相反值,并且具有相同数量的参数.我想用lambda函数做到这一点.如何传递参数?可能吗?
class Negate(type):
def __new__(mcs, name, bases, _dict):
extended_dict = _dict.copy()
for (k, v) in _dict.items():
if hasattr(v, '__call__'):
extended_dict["not_" + k] = lambda s, *args, **kw: not v(s, *args, **kw)
return type.__new__(mcs, name, bases, extended_dict)
class P(metaclass=Negate):
def __init__(self, a):
self.a = a
def yes(self):
return True
def maybe(self, you_can_chose):
return you_can_chose
Run Code Online (Sandbox Code Playgroud)
但结果完全错了:
>>>p = P(0)
>>>p.yes()
True
>>>p.not_yes() # should be False
Traceback (most recent call last):
File "<pyshell#150>", line 1, in <module>
p.not_yes()
File "C:\Users\Desktop\p.py", line 51, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,它会发送电子邮件,并想知道接收方何时收到我发给他的电子邮件.如何使用JavaMail API执行此操作?
如果我使用SMTPMessage,在设置通知选项后如何处理结果?
SMTPMessage smtpMsg = new SMTPMessage(msg);
smtpMsg.setNotifyOptions(SMTPMessage.NOTIFY_SUCCESS);
Run Code Online (Sandbox Code Playgroud) 我正在尝试计算Pi,但我真正想要实现的是使用多个线程时的效率.算法很简单:我在单位平方中随机生成点,然后计算其中有多少点位于正方形内的圆中.(更多这里:http://math.fullerton.edu/mathews/n2003/montecarlopimod.html)我的想法是水平分割方块并为其每个部分运行不同的线程.但不是加速,我得到的只是延迟.有什么想法吗?这是代码:
public class TaskManager {
public static void main(String[] args) {
int threadsCount = 3;
int size = 10000000;
boolean isQuiet = false;
PiCalculator pi = new PiCalculator(size);
Thread tr[] = new Thread[threadsCount];
long time = -System.currentTimeMillis();
int i;
double s = 1.0/threadsCount;
int p = size/threadsCount;
for(i = 0; i < threadsCount; i++) {
PiRunnable r = new PiRunnable(pi, s*i, s*(1.0+i), p, isQuiet);
tr[i] = new Thread(r);
}
for(i = 0; i < threadsCount; i++) …Run Code Online (Sandbox Code Playgroud) 让我们假设有人必须为问题编写解决方案,我必须通过一些测试来测试他的解决方案.是否有可能(可能有反思或某些东西)他的程序通过我所有的测试,但与问题的真正解决方案没有任何共同之处?
我有一张名为"人"的桌子.它包含person的id和它的父id(只有一个父级是可能的).作为查询的结果,我想要一个包含第一列的表 - 一个人ID,第二列 - 一个包含它的子ID的列表.怎么做到这一点?我已经阅读过listagg函数,但我不确定它是否适合我的目的.此查询生成一个空的第二列:
从人t1中选择t1.id,(从人t2中选择t2.id,其中t2.parent_id = t1.id),其中t1.status ='parent';
我想在文件中存储我的类中的对象,然后才能从该文件加载对象.但在某个地方,我犯了一个错误,无法弄清楚在哪里.我可以得到一些帮助吗?
public class GameManagerSystem implements GameManager, Serializable {
private static final long serialVersionUID = -5966618586666474164L;
HashMap<Game, GameStatus> games;
HashMap<Ticket, ArrayList<Object>> baggage;
HashSet<Ticket> bookedTickets;
Place place;
public GameManagerSystem(Place place) {
super();
this.games = new HashMap<Game, GameStatus>();
this.baggage = new HashMap<Ticket, ArrayList<Object>>();
this.bookedTickets = new HashSet<Ticket>();
this.place = place;
}
public static GameManager createManagerSystem(Game at) {
return new GameManagerSystem(at);
}
public boolean store(File f) {
try {
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(games);
oos.writeObject(bookedTickets);
oos.writeObject(baggage);
oos.close();
fos.close(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个servlet,它可以将文件从客户端上传到服务器,并将文件从服务器下载到客户端,从特定位置到特定位置.但是有两个问题阻止了我:1.当从客户端上传文件到服务器时,如何告诉服务器在哪里存储文件?2.(更重要的)如何从服务器下载到客户端部分?
这是迄今为止的代码:
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends Thread {
public static final int PORT = 3333;
public static final int BUFFER_SIZE = 100;
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(PORT);
while (true) {
Socket s = serverSocket.accept();
saveFile(s);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void saveFile(Socket socket) throws Exception {
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
FileOutputStream fos …Run Code Online (Sandbox Code Playgroud) 我正在尝试从html文件中读取一些文本,以特定方式修改它并将结果写入新的html文件中.但问题是文本不是用英文写的,因此有些字符被黑白替换为"?" 分数.在我的html文件中,我有 < meta http-equiv="Content-Type" content="text/html; charset=utf-8">.我究竟做错了什么?也许不是正确的读者和作家?
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader("inputFile.html"));
String line;
while ( (line = br.readLine()) != null) {
sb.append(line);
}
String result = doSomeChanges(sb);
BufferedWriter out = new BufferedWriter(new FileWriter("outputFile.html"));
out.write(result);
out.close();
Run Code Online (Sandbox Code Playgroud)