// MAIN.CPP
#include <iostream>
#include "tmpl.h"
void doFile1();
int main()
{
const char* x = "main";
outThing(x);
doFile1();
return 0;
}
// FILE1.CPP
#include "tmpl.h"
void doFile1()
{
const char* x = "doFile1";
outThing(x);
}
// TMPL.H
#pragma once
#include <iostream>
template <class T>
void outThing(const T& x)
{
std::cout << "The thing is " << x << std::endl;
}
Discarded input sections
.text$_Z8outThingIPKcEvRKT_
0x0000000000000000 0x50 debug/main.o
Linker script and memory map
.text$_Z8outThingIPKcEvRKT_
0x0000000140002900 0x50 debug/file1.o
0x0000000140002900 void outThing<char const*>(char const* const&)
Ну и ещё парочка структур для раскрутки стека и подстановки адресов…
ctrl + ' . '
ctrl + alt + T
(Code -> Surround with) и выбрать удобный для вас тег, а затем прописать название для fold и скрыть блокcurrentByte & (1 << (7-j))
, то должно работать почти также быстро.import java.util.function.Supplier;
public class ExampleWithMethodRef {
private static String someMethod() {
return "Internal value";
}
public static void main(String[] args) {
String value = "External value";
Supplier<String> lambda = ExampleWithMethodRef::someMethod;
}
}
import java.util.function.Supplier;
public class ExampleWithLambda {
public static void main(String[] args) {
String value = "External value";
Supplier<String> lambda = () -> "Internal value";
}
}
import java.util.function.Supplier;
public class ExampleWithCapturingLambda {
public static void main(String[] args) {
String value = "External value";
Supplier<String> lambda = () -> value;
}
}
-Djdk.internal.lambda.dumpProxyClasses=.
В рабочем каталоге появятся классы, в которые разворачиваются лямбды и ссылки на методы. Посмотрим, что у них внутри:final class ExampleWithMethodRef$$Lambda$1 implements java.util.function.Supplier {
private ExampleWithMethodRef$$Lambda$1();
Code:
0: aload_0
1: invokespecial #10 // Method java/lang/Object."<init>":()V
4: return
public java.lang.Object get();
Code:
0: invokestatic #19 // Method ExampleWithMethodRef.someMethod:()Ljava/lang/String;
3: areturn
}
final class ExampleWithLambda$$Lambda$1 implements java.util.function.Supplier {
private ExampleWithLambda$$Lambda$1();
Code:
0: aload_0
1: invokespecial #10 // Method java/lang/Object."<init>":()V
4: return
public java.lang.Object get();
Code:
0: invokestatic #19 // Method ExampleWithLambda.lambda$main$0:()Ljava/lang/String;
3: areturn
}
final class ExampleWithCapturingLambda$$Lambda$1 implements java.util.function.Supplier {
private final java.lang.String arg$1;
private ExampleWithCapturingLambda$$Lambda$1(java.lang.String);
Code:
0: aload_0
1: invokespecial #13 // Method java/lang/Object."<init>":()V
4: aload_0
5: aload_1
6: putfield #15 // Field arg$1:Ljava/lang/String;
9: return
private static java.util.function.Supplier get$Lambda(java.lang.String);
Code:
0: new #2 // class ExampleWithCapturingLambda$$Lambda$1
3: dup
4: aload_0
5: invokespecial #19 // Method "<init>":(Ljava/lang/String;)V
8: areturn
public java.lang.Object get();
Code:
0: aload_0
1: getfield #15 // Field arg$1:Ljava/lang/String;
4: invokestatic #28 // Method ExampleWithCapturingLambda.lambda$main$0:(Ljava/lang/String;)Ljava/lang/String;
7: areturn
}
arg$1
, содержащее значение захватываемой переменной. Формально это влияет на потребление памяти, но если вы не собираетесь генерировать лямбды миллионами, то это влияние которым можно пренебречь, тем более во времена, когда даже на мобильных устройствах объёмы памяти измеряются гигабайтами. Выяснил, что нежелательно иметь более 1-го потока для Дискового i/oНу хотя бы потому что исполнительный механизм диска один - и в один момент времени будет выполнятся одна операция. А остальные будут ждать очереди.
1) При чем здесь NPM? На кой черт он сдался Node'у? И как он перекочевал во фронтенд? Это просто интересная фича Node, которую начали использовать фронтендеры, а bower развивался параллельно?
3) Зачем мне (буду говорить просто) на "сайте" какой-то файл package.json, lock.json? И вообще, зачем мне какие-то зависимости? Установка - да, удобно. Но ведь все условно плагины (галерейки, jquery и пр., и пр.) являются частью сайта и друг от друга не зависят обычно.
все условно плагины
Максимум - плагин jquery зависит от самой jquery.
Надо передать среду разработки - отдаю vagrantfile
INSERT
INTO `users_subscriptions` (`user_id`, `subscription_id`)
SELECT IF(`count` < 5, :userId, NULL), :subscriptionId
FROM (
SELECT COUNT(*) AS `count`
FROM `users_subscriptions`
WHERE `user_id` = :userId
) AS `t`