АРХИВ ПО ТЭГУ "ТЕХНОЛОГИИ"
НОЯБРЬ 19, 2014

Hi,

Very interesting thing: Java compiler generate pretty clever code when you operate with strings, i.e. when you concatenate two or more Strings JVM creates StringBuilder transparently to a programmer and concatenates passed strings using that builder object and only then assigns the value to resulting string.

So typical interview question «What is more efficient for concatenating strings: ‘plus’ operator on strings or using StringBuilder class?» you can simply answer «both ways are efficient, and actually almost the same». Let’s do some disassembling now to make sure. I was using both Java 1.6 and Java 1.7 to test my statement.

  1. class Str{
  2.   public static void main(String[] args) {
  3.     String s = "first";
  4.     int i = 5;
  5.     String s2 = "second";
  6.  
  7.     String res = s + i + " " + s2;
  8.  
  9.     System.out.println(res);
  10.   }
  11. }

And now bytecode generated using javac (Java 1.7):

Compiled from «Str.java»
  1. class Str {
  2.   Str();
  3.     Code:
  4.        0: aload_0      
  5.        1: invokespecial #1                  // Method java/lang/Object."":()V
  6.        4: return        
  7.  
  8.   public static void main(java.lang.String[]);
  9.     Code:
  10.        0: ldc           #2                  // String first
  11.        2: astore_1      
  12.        3: iconst_5      
  13.        4: istore_2      
  14.        5: ldc           #3                  // String second
  15.        7: astore_3      
  16.        8: new           #4                  // class java/lang/StringBuilder
  17.       11: dup          
  18.       12: invokespecial #5                  // Method java/lang/StringBuilder."":()V
  19.       15: aload_1      
  20.       16: invokevirtual #6                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  21.       19: iload_2      
  22.       20: invokevirtual #7                  // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
  23.       23: ldc           #8                  // String  
  24.       25: invokevirtual #6                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  25.       28: aload_3      
  26.       29: invokevirtual #6                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  27.       32: invokevirtual #9                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
  28.       35: astore        4
  29.       37: getstatic     #10                 // Field java/lang/System.out:Ljava/io/PrintStream;
  30.       40: aload         4
  31.       42: invokevirtual #11                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
  32.       45: return        
  33. }
НОЯБРЬ 14, 2014

Screen Shot 2014 11 13 at 23.00.36 Lottery numbers generator script (bash) %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Привет,

Решил вот сгенерировать скриптец на баше и поучаствовать в национальной лотерее Великобритании.

#!/bin/bash
  1.  
  2. # Print usage info
  3. function usage() {
  4.   echo "Usage: $0 "
  5.   echo " * lotto   — Lotto"
  6.   echo " * eurom   — Euro Millions"
  7.   echo " * tball   — Thunderball"
  8.   echo " * hotpick — Lotto Hotpicks"
  9.   echo "More info about UK National Lottery visit https://www.national-lottery.co.uk/games/lotto"
  10. }
  11.  
  12. # Check input params
  13. if [ -z "$1" ]; then
  14.   usage
  15.   exit 1
  16. fi
  17.  
  18. type=$1
  19.  
  20. # Generate random number from 1 up to {limit} and print it
  21. function gen_num() {
  22.   limit=$1
  23.   echo -n $[1 + $[ RANDOM % $limit ]]" "
  24. }
  25.  
  26. # Main app
  27. echo -n "Your lucky numbers for $type are: "
  28. case $type in
  29. lotto)
  30.   for i in {1..6}; do gen_num 59; done
  31.   ;;
  32. eurom)
  33.   for i in {1..5}; do gen_num 50; done
  34.   echo -n "+ lucky stars "
  35.   for i in {1..2}; do gen_num 11; done
  36.   ;;
  37. tball)
  38.   for i in {1..5}; do gen_num 39; done
  39.   echo -n "+ thunderball "
  40.   for i in {1..1}; do gen_num 14; done
  41.   ;;
  42. hotpick)
  43.   for i in {1..5}; do gen_num 49; done
  44.   ;;
  45. *)
  46.   usage
  47.   ;;
  48. esac
  49.  
  50. echo ""
  51. echo "Good luck icon smile Lottery numbers generator script (bash) %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8 "
СЕНТЯБРЬ 11, 2014

Hi,

Just a note for myself for fast creating of AWS EMR cluster with Custom JAR job.

  1. #!/bin/bash
  2.  
  3. jobName="MyReportJob"
  4. clusterName="EmrCluster1"
  5. clusterId=""
  6. activeStepStates="—step-states PENDING RUNNING"
  7.  
  8. bucket="s3://emr-test"
  9. region="us-west-2"
  10. instanceType="m1.medium"
  11. instanceNumber=3
  12.  
  13. resdir="resources/"
  14. filesPattern='*.log'
  15.  
  16. jarPath="my-job-1.0-SNAPSHOT-jar-with-dependencies.jar"
  17. jarRename="my-job-1.0-SNAPSHOT-wdeps.jar"
  18. jarRenamePath="/tmp/$jarRename"
  19.  
  20. # Exit script gently
  21. trap "on_trap" SIGHUP SIGINT SIGTERM
  22. function on_trap() {
  23.     echo "Exiting script as of signal…"
  24.     exit 1
  25. }
  26.  
  27. # Run command securely
  28. function do2() {
  29.     echo "Running command: [$*]"
  30.     $*
  31.     res=$?
  32.     if [ $res -gt 0 ]; then
  33.         echo "ERROR: Command execution failed."
  34.         exit $res
  35.     fi
  36. }
  37.  
  38. # Prepare data
  39. function prepare_data() {
  40.     # Clear previous run results
  41.     for i in logs results; do
  42.         do2 aws s3 rm "$bucket/$i/" —recursive
  43.     done
  44.  
  45.     # Upload log files
  46.     for i in $(ls "$resdir"/$filesPattern); do
  47.         do2 aws s3 cp "$i" "$bucket/data/"$(basename "$i" "$resdir")
  48.     done
  49.  
  50.     # Upload Hadoop job
  51.     do2 rm -f "$jarRenamePath"
  52.     do2 cp "$jarPath" "$jarRenamePath"
  53.     do2 aws s3 cp "$jarRenamePath" "$bucket/job/$jarRename"
  54. }
  55.  
  56. # Create EMR Hadoop cluster
  57. function create_cluster() {
  58.     clusterId=$(aws emr list-clusters —active | grep "$clusterName" | awk '{print $2}')
  59.     if [ -z "$clusterId" ]; then
  60.         echo "Creating $clusterName cluster. Doesn't exists yet."
  61.         # Start Hadoop cluster
  62.         do2 aws emr \
  63.         create-cluster \
  64.         —no-auto-terminate \
  65.         —region "$region" \
  66.         —instance-count $instanceNumber \
  67.         —instance-type "$instanceType" \
  68.         —name "$clusterName" \
  69.         —ami-version 3.0.4 \
  70.         —hadoop-version 2.2.0 \
  71.         —log-uri "$bucket/logs"
  72.  
  73.         clusterId=$(aws emr list-clusters —active | grep "$clusterName" | awk '{print $2}')
  74.         if [ -z "$clusterId" ]; then
  75.             echo "ERROR Cannot create $clusterName cluster: Cannot get cluster ID. Try 'aws emr —list-clusters'."
  76.             exit 1
  77.         fi
  78.     else
  79.         echo "Do not create $clusterName cluster as it's already exists."
  80.     fi
  81. }
  82.  
  83. # Run Hadoop job
  84. function run_app() {
  85.     echo "Running job $jobName for $clusterName [$clusterId] cluster…"
  86.  
  87.     if [ -z "$clusterId" ]; then
  88.         echo "ERROR No cluster ID found [$clusterId]. Try 'aws emr list-clusters'."
  89.         exit 1
  90.     fi
  91.  
  92.     # Check for JAR existance
  93.     jarStepId=$(aws emr list-steps —cluster-id "$clusterId" $activeStepStates | grep "$jobName" | awk '{print $3}')
  94.     if [ ! -z $jarStepId ]; then
  95.         echo "WARN Not going to add Custom JAR step $jobName because it's already exists and is in active state. Try 'aws emr list-steps —cluster-id $clusterId $activeStepStates'."
  96.         return
  97.     fi
  98.  
  99.     # Run uploaded job in Hadoop cluster
  100.     do2 aws emr \
  101.     add-steps \
  102.     —cluster-id "$clusterId" \
  103.     —steps \
  104.     Type=CUSTOM_JAR,Name=$jobName,ActionOnFailure=CANCEL_AND_WAIT,Jar=$bucket/job/$jarRename,Args=$bucket/data,$bucket/results
  105.  
  106.     jarStepId=$(aws emr list-steps —cluster-id "$clusterId" $activeStepStates | grep "$jobName" | awk '{print $3}')
  107.     if [ -z $jarStepId ]; then
  108.         echo "ERROR Cannot find/create Custom JAR step $jobName. Try 'aws emr list-steps —cluster-id $clusterId $activeStepStates'."
  109.         exit 2
  110.     fi
  111.  
  112.     echo "Custom JAR $jobName with step ID [$jarStepId] on cluster $clusterName [$clusterId] has been successfully created."
  113. }
  114.  
  115. # Business logic
  116. if [ $1 = "-d" ]; then
  117.     echo "Preparing data for the job(s)…"
  118.     prepare_data
  119. else
  120.     echo "Do not prepare data for the job(s)."
  121. fi
  122.  
  123. create_cluster
  124. run_app
ИЮНЬ 3, 2010

Йо.

На заметку.

Среди немногочисленных мануалов о том как разобрать iMac имхо самый клёвый это этот. С картинками и описанием, поднобно все так.

Удачной разборки!

ИЮНЬ 18, 2009

Хай.

Некоторые полезные ссылки по SEO.

Все хочу найти где нибуть тулу для просмотра бэклинков со страниц, которые проиндексированы яндексом. Если знаете такое — напишите плз.

Пасиб.

ИЮНЬ 7, 2009

Йо!

Что такое OCHL? Я долго пытался понять о чем же грят чуваки на одном форуме… В итоге я понял! OCHLOpen Close High Low. Каждая свечка/бар имеют как бы 4 хука: цена открытия, цена закрытия, хай и лоу цены за определенный выбранный временной интервал (5 минут, 1 минута, 1 день).

icon smile Что такое OCHL? %d1%82%d1%80%d0%b5%d0%b9%d0%b4%d0%b8%d0%bd%d0%b3

Страницы:12