锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品无码久久久久久曰,国产呻吟久久久久久久92,99热成人精品免费久久 http://www.shnenglu.com/aaxron/璁板綍淇鐨勫嵃璁?
zh-cn Tue, 06 May 2025 21:17:22 GMT Tue, 06 May 2025 21:17:22 GMT 60 鍗曟枃浠禔ES鍔犺В瀵嗙畻娉?/title> http://www.shnenglu.com/aaxron/archive/2021/08/30/217802.html澶╀笅 澶╀笅 Mon, 30 Aug 2021 13:39:00 GMT http://www.shnenglu.com/aaxron/archive/2021/08/30/217802.html http://www.shnenglu.com/aaxron/comments/217802.html http://www.shnenglu.com/aaxron/archive/2021/08/30/217802.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/217802.html http://www.shnenglu.com/aaxron/services/trackbacks/217802.html //for int8_t
#include //for memcmp
#include //for intrinsics for AES-NI
//compile using gcc and following arguments: -g;-O0;-Wall;-msse2;-msse;-march=native;-maes
//internal stuff
//macros
#define DO_ENC_BLOCK(m,k) \
do{\
m = _mm_xor_si128 (m, k[ 0]); \
m = _mm_aesenc_si128 (m, k[ 1]); \
m = _mm_aesenc_si128 (m, k[ 2]); \
m = _mm_aesenc_si128 (m, k[ 3]); \
m = _mm_aesenc_si128 (m, k[ 4]); \
m = _mm_aesenc_si128 (m, k[ 5]); \
m = _mm_aesenc_si128 (m, k[ 6]); \
m = _mm_aesenc_si128 (m, k[ 7]); \
m = _mm_aesenc_si128 (m, k[ 8]); \
m = _mm_aesenc_si128 (m, k[ 9]); \
m = _mm_aesenclast_si128(m, k[10]);\
}while(0)
#define DO_DEC_BLOCK(m,k) \
do{\
m = _mm_xor_si128 (m, k[10+0]); \
m = _mm_aesdec_si128 (m, k[10+1]); \
m = _mm_aesdec_si128 (m, k[10+2]); \
m = _mm_aesdec_si128 (m, k[10+3]); \
m = _mm_aesdec_si128 (m, k[10+4]); \
m = _mm_aesdec_si128 (m, k[10+5]); \
m = _mm_aesdec_si128 (m, k[10+6]); \
m = _mm_aesdec_si128 (m, k[10+7]); \
m = _mm_aesdec_si128 (m, k[10+8]); \
m = _mm_aesdec_si128 (m, k[10+9]); \
m = _mm_aesdeclast_si128(m, k[0]);\
}while(0)
#define AES_128_key_exp(k, rcon) aes_128_key_expansion(k, _mm_aeskeygenassist_si128(k, rcon))
static __m128i aes_128_key_expansion(__m128i key, __m128i keygened)
{
keygened = _mm_shuffle_epi32(keygened, _MM_SHUFFLE(3,3,3,3));
key = _mm_xor_si128(key, _mm_slli_si128(key, 4));
key = _mm_xor_si128(key, _mm_slli_si128(key, 4));
key = _mm_xor_si128(key, _mm_slli_si128(key, 4));
return _mm_xor_si128(key, keygened);
}
//public API
static void aes128_load_key_enc_only(uint8_t *enc_key, __m128i *key_schedule)
{
key_schedule[0] = _mm_loadu_si128((const __m128i*) enc_key);
key_schedule[1] = AES_128_key_exp(key_schedule[0], 0x01);
key_schedule[2] = AES_128_key_exp(key_schedule[1], 0x02);
key_schedule[3] = AES_128_key_exp(key_schedule[2], 0x04);
key_schedule[4] = AES_128_key_exp(key_schedule[3], 0x08);
key_schedule[5] = AES_128_key_exp(key_schedule[4], 0x10);
key_schedule[6] = AES_128_key_exp(key_schedule[5], 0x20);
key_schedule[7] = AES_128_key_exp(key_schedule[6], 0x40);
key_schedule[8] = AES_128_key_exp(key_schedule[7], 0x80);
key_schedule[9] = AES_128_key_exp(key_schedule[8], 0x1B);
key_schedule[10] = AES_128_key_exp(key_schedule[9], 0x36);
}
static void aes128_load_key(uint8_t *enc_key, __m128i *key_schedule)
{
aes128_load_key_enc_only(enc_key, key_schedule);
// generate decryption keys in reverse order.
// k[10] is shared by last encryption and first decryption rounds
// k[0] is shared by first encryption round and last decryption round (and is the original user key)
// For some implementation reasons, decryption key schedule is NOT the encryption key schedule in reverse order
key_schedule[11] = _mm_aesimc_si128(key_schedule[9]);
key_schedule[12] = _mm_aesimc_si128(key_schedule[8]);
key_schedule[13] = _mm_aesimc_si128(key_schedule[7]);
key_schedule[14] = _mm_aesimc_si128(key_schedule[6]);
key_schedule[15] = _mm_aesimc_si128(key_schedule[5]);
key_schedule[16] = _mm_aesimc_si128(key_schedule[4]);
key_schedule[17] = _mm_aesimc_si128(key_schedule[3]);
key_schedule[18] = _mm_aesimc_si128(key_schedule[2]);
key_schedule[19] = _mm_aesimc_si128(key_schedule[1]);
}
static void aes128_enc(__m128i *key_schedule, uint8_t *plainText,uint8_t *cipherText)
{
__m128i m = _mm_loadu_si128((__m128i *) plainText);
DO_ENC_BLOCK(m,key_schedule);
_mm_storeu_si128((__m128i *) cipherText, m);
}
static void aes128_dec(__m128i *key_schedule, uint8_t *cipherText,uint8_t *plainText)
{
__m128i m = _mm_loadu_si128((__m128i *) cipherText);
DO_DEC_BLOCK(m,key_schedule);
_mm_storeu_si128((__m128i *) plainText, m);
}
//return 0 if no error
//1 if encryption failed
//2 if decryption failed
//3 if both failed
static int aes128_self_test(void)
{
uint8_t plain[] = {0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34};
uint8_t enc_key[] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c};
uint8_t cipher[] = {0x39, 0x25, 0x84, 0x1d, 0x02, 0xdc, 0x09, 0xfb, 0xdc, 0x11, 0x85, 0x97, 0x19, 0x6a, 0x0b, 0x32};
uint8_t computed_cipher[16];
uint8_t computed_plain[16];
int out=0;
__m128i key_schedule[20];
aes128_load_key(enc_key,key_schedule);
aes128_enc(key_schedule,plain,computed_cipher);
aes128_dec(key_schedule,cipher,computed_plain);
if(memcmp(cipher,computed_cipher,sizeof(cipher))) out=1;
if(memcmp(plain,computed_plain,sizeof(plain))) out|=2;
return out;
} ]]> Qt鐘舵佹満浠g爜渚嬪瓙 http://www.shnenglu.com/aaxron/archive/2021/03/31/217647.html澶╀笅 澶╀笅 Wed, 31 Mar 2021 13:12:00 GMT http://www.shnenglu.com/aaxron/archive/2021/03/31/217647.html http://www.shnenglu.com/aaxron/comments/217647.html http://www.shnenglu.com/aaxron/archive/2021/03/31/217647.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/217647.html http://www.shnenglu.com/aaxron/services/trackbacks/217647.html #include "stdafx.h"#include "qtapplication03.h"
#include "ButtonChanged.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton button("State Machine");
QStateMachine machine;
ButtonChanged* bc = new ButtonChanged(&machine);
QState* s1 = new QState(&machine);
QState* s2 = new QState(&machine);
QState* s3 = new QState(&machine);
s1->assignProperty(&button, "geometry", QRect(100, 100, 120, 50));
s2->assignProperty(&button, "geometry", QRect(100, 100, 220, 50));
s3->assignProperty(&button, "geometry", QRect(100, 100, 320, 50));
s1->addTransition(&button, SIGNAL(clicked()), s2);
s2->addTransition(&button, SIGNAL(clicked()), s3);
s3->addTransition(&button, SIGNAL(clicked()), s1);
machine.setInitialState(s1);
machine.start();
button.show();
QObject::connect(s3, &QState::entered, bc, &ButtonChanged::changed);
return a.exec();
}
]]> JavaFX BindingTest3 http://www.shnenglu.com/aaxron/archive/2020/01/01/217053.html澶╀笅 澶╀笅 Wed, 01 Jan 2020 05:47:00 GMT http://www.shnenglu.com/aaxron/archive/2020/01/01/217053.html http://www.shnenglu.com/aaxron/comments/217053.html http://www.shnenglu.com/aaxron/archive/2020/01/01/217053.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/217053.html http://www.shnenglu.com/aaxron/services/trackbacks/217053.html package application.chapter2;import javafx.beans.binding.NumberBinding;import javafx.beans.property.IntegerProperty;import javafx.beans.property.SimpleIntegerProperty;import javafx.beans.value.ObservableValue;public class BindingTest3 { public static void main(String[] args) { IntegerProperty x = new SimpleIntegerProperty(100); IntegerProperty y = new SimpleIntegerProperty(200); // Create a binding: sum = x + y NumberBinding sum = x.add(y); System.out.println("After creating sum"); System.out.println("sum.isValid(): " + sum.isValid()); // Let us get the value of sum, so it computes its value and // becomes valid int value = sum.intValue(); System.out.println("\nAfter requesting value"); System.out.println("sum.isValid(): " + sum.isValid()); System.out.println("sum = " + value); // Change the value of x x.set(250); System.out.println("\nAfter changing x"); System.out.println("sum.isValid(): " + sum.isValid()); // Get the value of sum again value = sum.intValue(); System.out.println("\nAfter requesting value"); System.out.println("sum.isValid(): " + sum.isValid()); System.out.println("sum = " + value); } } ]]>JavaFX PropertyTest2 http://www.shnenglu.com/aaxron/archive/2020/01/01/217052.html澶╀笅 澶╀笅 Wed, 01 Jan 2020 05:19:00 GMT http://www.shnenglu.com/aaxron/archive/2020/01/01/217052.html http://www.shnenglu.com/aaxron/comments/217052.html http://www.shnenglu.com/aaxron/archive/2020/01/01/217052.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/217052.html http://www.shnenglu.com/aaxron/services/trackbacks/217052.html package application.chapter2;import javafx.beans.property.IntegerProperty;import javafx.beans.property.SimpleIntegerProperty;import javafx.beans.value.ObservableValue;public class PropertyTest2 { public static void main(String[] args) { IntegerProperty counter = new SimpleIntegerProperty(100); // Add an invalidation listener to the counter property counter.addListener(PropertyTest2::changed); System.out.println("Before changing the counter value-1"); counter.set(101); System.out.println("After changing the counter value-1"); /* * At this point counter property is invalid and further changes to its value * will not generate invalidation events. */ System.out.println("\nBefore changing the counter value-2"); counter.set(102); System.out.println("After changing the counter value-2"); // Make the counter property valid by calling its get() method int value = counter.get(); System.out.println("Counter value = " + value); /* * At this point counter property is valid and further changes to its value will * generate invalidation events. */ // Try to set the same value System.out.println("\nBefore changing the counter value-3"); counter.set(102); System.out.println("After changing the counter value-3"); // Try to set a different value System.out.println("\nBefore changing the counter value-4"); counter.set(103); System.out.println("After changing the counter value-4"); } public static void changed(ObservableValue<? extends Number> prop,Number oldValue,Number newValue) { System.out.print("Counter changed: "); System.out.println("Old = " + oldValue + ", new = " + newValue); } } ]]>2銆丳ass a string to/from Java to/from CTag(s): JNI http://www.shnenglu.com/aaxron/archive/2019/12/06/217014.html澶╀笅 澶╀笅 Fri, 06 Dec 2019 02:53:00 GMT http://www.shnenglu.com/aaxron/archive/2019/12/06/217014.html http://www.shnenglu.com/aaxron/comments/217014.html http://www.shnenglu.com/aaxron/archive/2019/12/06/217014.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/217014.html http://www.shnenglu.com/aaxron/services/trackbacks/217014.html Pass a string to/from Java to/from CTag(s): JNITo Java from C (as seen from the previous How-to) :
#include "JavaHowTo.h" JNIEXPORT jstring JNICALL Java_JavaHowTo_sayHello (JNIEnv *env, jobject obj) { return env->NewStringUTF("Hello world"); } From Java to C : Suppose we have a Java Classpublic class MyClass { public String sayHello(){ return "Hello world From Java"; } }
then from C, we want to call the Java sayHello() method which returns a String :
JNIEXPORT void JNICALL Java_JavaHowTo_sayHello(JNIEnv *env, jobject obj) { const char *str; jclass myclass_class =(jclass) env->NewGlobalRef (env->FindClass ("MyClass")); // we need the MyClass constructor jmethodID constructorID = env->GetMethodID (myclass_class, "", "()V"); // and the sayHello() method jmethodID methodID = env->GetMethodID (myclass_class, "sayHello", "()Ljava/lang/String;"); // instanciate a MyClass object jobject myclass_object = env->NewObject (myclass_class, constructorID); // call the sayHello() method jstring s = (jstring) env->CallObjectMethod (myclass_object, methodID); // convert the Java String to use it in C str = env->GetStringUTFChars(s, 0); printf("%s" , str); env->ReleaseStringUTFChars(s, str); }
The Java JNI wrapper would be
class JavaHowTo { public native void sayHello(); static { System.loadLibrary("javahowto"); } }
And finally, to use it
public class JNIJavaHowTo { public static void main(String[] args) { JavaHowTo jht = new JavaHowTo(); jht.sayHello(); } }
]]> 1銆乁se native code through JNI (HelloWorld) http://www.shnenglu.com/aaxron/archive/2019/12/06/217013.html澶╀笅 澶╀笅 Fri, 06 Dec 2019 02:50:00 GMT http://www.shnenglu.com/aaxron/archive/2019/12/06/217013.html http://www.shnenglu.com/aaxron/comments/217013.html http://www.shnenglu.com/aaxron/archive/2019/12/06/217013.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/217013.html http://www.shnenglu.com/aaxron/services/trackbacks/217013.html https://www.rgagnon.com/topics/java-jni.html
Use native code through JNI (HelloWorld)
Use native code through JNITag(s): JNI
With MSVC6, create a new Win32 DLL project (simple) and call it javahowto.
In the same directory create a java source called JavaHowTo.java class JavaHowTo { public native String sayHello(); static { System.loadLibrary("javahowto"); } }
Compile the Java program and use javah utility to generate the JavaHowTo.h header file.
javah -jni JavaHowTo
In MSVC6, add the JavaHowTo.h in your project header files
In the Tools - Options menu, set the include directories to include the Java JNI headers files. They are located in [jdk dir]\include and [jdk dir]\include\win32 directories
In the javahowto.cpp source, add
#include "JavaHowTo.h" JNIEXPORT jstring JNICALL Java_JavaHowTo_sayHello (JNIEnv *env, jobject obj) { return env->NewStringUTF("Hello world"); }
Select the Release configuration and build the project.
Copy the javahowto.dll in the same directory as the java program.
Create this new java program
public class JNIJavaHowTo { public static void main(String[] args) { JavaHowTo jht = new JavaHowTo(); System.out.println(jht.sayHello()); } }
Compile and execute.
]]>Oracle鍒嗛〉 http://www.shnenglu.com/aaxron/archive/2019/08/15/216694.html澶╀笅 澶╀笅 Thu, 15 Aug 2019 08:32:00 GMT http://www.shnenglu.com/aaxron/archive/2019/08/15/216694.html http://www.shnenglu.com/aaxron/comments/216694.html http://www.shnenglu.com/aaxron/archive/2019/08/15/216694.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/216694.html http://www.shnenglu.com/aaxron/services/trackbacks/216694.html Oracle鍒嗛〉 鏌ヨ璇彞:select * FROM A_WECHAT WHERE 1 = 1 鏌ヨ璁板綍鎬繪暟:SELECT nvl(count (* ),0 ) as totalNum FROM ( select * FROM A_WECHAT WHERE 1 = 1 ) where 1 = 1 鍒嗛〉: SELECT * FROM ( SELECT TIN.* , ROWNUM AS rowno FROM ( select * FROM A_WECHAT WHERE 1 = 1 order by OPENID desc ) TIN WHERE ROWNUM <= 50 ) TOUT WHERE TOUT.rowno >= 1
]]>c#鏉′歡緙栬瘧 http://www.shnenglu.com/aaxron/archive/2019/06/26/216462.html澶╀笅 澶╀笅 Wed, 26 Jun 2019 10:03:00 GMT http://www.shnenglu.com/aaxron/archive/2019/06/26/216462.html http://www.shnenglu.com/aaxron/comments/216462.html http://www.shnenglu.com/aaxron/archive/2019/06/26/216462.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/216462.html http://www.shnenglu.com/aaxron/services/trackbacks/216462.html Conditional compilation symbols
緙栬瘧鍣ㄥ懡浠よ閫夐」錛堜緥濡傦紝/define:DEBUG錛?
鍙互鍦╒S2008鐨処DE榪涜璁劇疆, Project Property--->Build--->Conditional compilation symbols(濡傛灉澶氫釜縐戠爺浣跨敤閫楀彿闅斿紑)
緋葷粺榛樿璁劇疆浜?DEBUG 鍜?TRACE
鎿嶄綔緋葷粺澶栧3紼嬪簭涓殑鐜鍙橀噺錛堜緥濡傦紝set DEBUG=1錛夈?/div>
婧愪唬鐮佷腑鐨勬潅娉紙渚嬪錛岀敤浜庡畾涔夌紪璇戝彉閲忕殑 #define DEBUG錛屼互鍙?qiáng)鐢ㄤ簬鍙栨秷瀹氫箟瀹冪?#undef DEBUG錛夈?/div>
蹇呴』鍦╢ile鐨勬渶鍓嶆柟璁劇疆,#define debug鎴栬呯粍鍚堟搷浣?/div>
#if (Debug && Trace)
#define DebugAndTrace
#endif
ps:Conditional浣嶄簬using System.Diagnostics;
浠涔堟儏鍐典笅浣跨敤璇ユ爣璇嗙?
褰撶▼搴忎腑涓涓柟娉曟垨灞炴т笉鎯沖啀浣跨敤鏃?濡傛灉鎶婂畠鍒犳帀灝遍渶瑕佹妸寮曠敤鐨勫湴鏂逛竴涓竴涓叏閮ㄥ垹鎺変笉鐒跺氨浼?xì)缂栬瘧閿欒?榪欐椂鎴戜滑灝卞彲浠ュ湪濉旂殑涓婇潰鍔犱竴涓猍Conditional("string")] 鐒跺悗紼嬪簭榪愯鏃跺氨浼?xì)蹇界暐瀹?/div>
ps:[Conditional("string")]閲岄潰瀛楃涓查殢鎰忓彇
濡傛灉鎯沖啀嬈¤皟鐢ㄩ偅涓柟娉曟垨灞炴ф庝箞鍔?
榪欎釜寰堢畝鍗?浣犲彧闇鍦ㄥ紩鐢ㄥ懡鍚嶇┖闂撮偅涓湴鏂硅繘琛屼竴涓畯瀹氫箟鎶婁綘鍦╗Conditional("string")]閲岄潰鐨勫瓧絎︿覆瀹氫箟鍑烘潵灝辮兘鐢ㄤ簡(jiǎn)
C#-#define鏉′歡緙栬瘧
C#鐨勯澶勭悊鍣ㄦ寚浠や粠鏉ヤ笉浼?xì)铦{鍖栦負(fù)鍙墽琛屼唬鐮佺殑鍛戒護(hù)錛屼絾鏄細(xì)褰卞搷緙栬瘧榪囩▼鐨勫悇涓柟闈紝甯哥敤鐨勯澶勭悊鍣ㄦ寚浠ゆ湁#define銆?undef銆?if,#elif,#else鍜?endif絳夌瓑錛屼笅闈粙緇岰#涓嬌鐢?define榪涜鏉′歡緙栬瘧鐨勫疄渚嬨?/div>
C#涓潯浠剁紪璇戞寚浠ょ敤浜庢寜鏉′歡鍖呭惈鎴栨帓闄ゆ簮鏂囦歡涓殑鏌愪簺閮ㄥ垎銆傚湪Visual Studio涓紝浼?xì)鐪嬪埌琚帓闄ょ殑浠g爜鏄窘C轟負(fù)鐏拌壊銆?/div>
涓銆?define鍙互鐢ㄦ潵鍋氫粈涔?/div>
1銆佸綋璁″垝鍙戝竷涓や釜鐗堟湰鐨勪唬鐮佺殑鏃跺欍傚嵆鍩烘湰鐗堝拰鎷ユ湁鏇村鐗堟湰鐨勪紒涓氱増錛屽氨鍙互鐢ㄥ埌鏉′歡緙栬瘧鎸囦護(hù)錛?/div>
2銆佷緥濡傚悓涓涓枃浠剁粰silverlight銆亀pf銆亀inform絳変嬌鐢紝騫朵笖榪樿冭檻Debug鍜孯elease絳夛紝鏈夊ぇ閮ㄥ垎浠g爜鏄竴鏍風(fēng)殑錛?/div>
3銆佹寚瀹氬嚱鏁板拰灞炴ф槸鍚︾紪璇戝埌鏈緇堜駭鍝佷腑鍘匯?/div>
浜屻?define鐢ㄦ硶
璇硶錛?define 鍚嶇О
娉ㄦ剰錛氳繖閲屽悕縐板彇Debug錛屼綘涔熷彲浠ュ彇鍏朵粬鍚嶇О濡侱ragon
1 #define Debug
璇存槑錛?/div>
1銆丏ebug鍙互鐪嬪仛鏄0鏄庣殑涓涓彉閲忥紝浣嗘鍙橀噺娌℃湁鐪熸鐨勫鹼紝瀛樺湪鏃?if Debug緇撴灉涓簍rue錛屽惁鍒欎負(fù)false錛?/div>
2銆?define鍗曠嫭鐢ㄦ病浠涔堟剰涔夛紝涓鑸槸鍜?if鎴栬匔onditional鐗規(guī)х粨鍚堜嬌鐢紱
3銆?define蹇呴』瀹氫箟鍦ㄦ墍鏈塽sing鍛藉悕絀洪棿鍓嶉潰錛?/div>
4銆丏ebug涓嶥EBUG鏄笉鍚岀殑錛孋#鍖哄垎澶у皬鍐?/div>
]]>
spring 瀹樻柟涓嬭澆鍦板潃錛圫pring Framework 3.2.x&Spring Framework 4.0.x錛?/title> http://www.shnenglu.com/aaxron/archive/2019/02/12/216238.html澶╀笅 澶╀笅 Tue, 12 Feb 2019 03:44:00 GMT http://www.shnenglu.com/aaxron/archive/2019/02/12/216238.html http://www.shnenglu.com/aaxron/comments/216238.html http://www.shnenglu.com/aaxron/archive/2019/02/12/216238.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/216238.html http://www.shnenglu.com/aaxron/services/trackbacks/216238.html spring 瀹樻柟涓嬭澆鍦板潃錛圫pring Framework 3.2.x&Spring Framework 4.0.x錛?br />2017騫?2鏈?4鏃?15:53:59
SPRING瀹樻柟緗戠珯鏀圭増鍚庯紝寤鴻閮芥槸閫氳繃 Maven鍜孏radle涓嬭澆錛屽涓嶄嬌鐢∕aven鍜孏radle寮鍙戦」鐩殑錛屼笅杞藉氨闈炲父楹葷儲(chǔ)錛屼笅緇欏嚭Spring Framework jar瀹樻柟鐩存帴涓嬭澆璺緞:
http://repo.spring.io/libs-release-local/org/springframework/spring/
spring 4.0.x(Spring Framework 4.0.5)涓嬭澆
http://repo.spring.io/libs-release-local/org/springframework/spring/4.0.5.RELEASE/spring-framework-4.0.5.RELEASE-dist.zip
spring 3.2.x錛圫pring Framework 3.2.9錛変笅杞斤細(xì)
http://repo.spring.io/libs-release-local/org/springframework/spring/3.2.9.RELEASE/spring-framework-3.2.9.RELEASE-dist.zip
spring 3.2.x錛圫pring Framework 3.2.4錛変笅杞斤細(xì)
http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/spring-framework-3.2.4.RELEASE-dist.zip
鍙pring security涓嬭澆璺緞錛?/p>
http://repo.spring.io/libs-release-local/org/springframework/security/spring-security/
http://repo.spring.io/libs-release-local/org/springframework/security/spring-security/3.2.4.RELEASE/spring-security-3.2.4.RELEASE-dist.zip
]]> spring婧愮爜鍒嗘瀽錛?錛堿nnotationMethodHandlerAdapter http://www.shnenglu.com/aaxron/archive/2018/04/11/215585.html澶╀笅 澶╀笅 Wed, 11 Apr 2018 08:40:00 GMT http://www.shnenglu.com/aaxron/archive/2018/04/11/215585.html http://www.shnenglu.com/aaxron/comments/215585.html http://www.shnenglu.com/aaxron/archive/2018/04/11/215585.html#Feedback 0 http://www.shnenglu.com/aaxron/comments/commentRss/215585.html http://www.shnenglu.com/aaxron/services/trackbacks/215585.html public class AnnotationMethodHandlerAdapter extends WebContentGenerator implements HandlerAdapter, Ordered, BeanFactoryAware { // public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return invokeHandlerMethod(request, response, handler); } protected ModelAndView invokeHandlerMethod(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { ServletHandlerMethodResolver methodResolver = getMethodResolver(handler); Method handlerMethod = methodResolver.resolveHandlerMethod(request); ServletHandlerMethodInvoker methodInvoker = new ServletHandlerMethodInvoker(methodResolver); ServletWebRequest webRequest = new ServletWebRequest(request, response); ExtendedModelMap implicitModel = new BindingAwareModelMap(); Object result = methodInvoker.invokeHandlerMethod(handlerMethod, handler, webRequest, implicitModel); ModelAndView mav = methodInvoker.getModelAndView(handlerMethod, handler.getClass(), result, implicitModel, webRequest); methodInvoker.updateModelAttributes(handler, (mav != null ? mav.getModel() : null ), implicitModel, webRequest); return mav; } public ModelAndView getModelAndView(Method handlerMethod, Class <?> handlerType, Object returnValue, ExtendedModelMap implicitModel, ServletWebRequest webRequest) throws Exception {} } 鍏朵粬
public final class Method extends Executable { public Object invoke(Object obj, Object args) throws IllegalAccessException, IllegalArgumentException,InvocationTargetException { if ( ! override) { if ( ! Reflection.quickCheckMemberAccess(clazz, modifiers)) { Class <?> caller = Reflection.getCallerClass(); checkAccess(caller, clazz, obj, modifiers); } } MethodAccessor ma = methodAccessor; // read volatile if (ma == null ) { ma = acquireMethodAccessor(); } return ma.invoke(obj, args); } } public class ModelMap extends LinkedHashMap < String, Object > {} public abstract class AbstractView extends WebApplicationObjectSupport implements View, BeanNameAware { /** * Prepares the view given the specified model, merging it with static * attributes and a RequestContext attribute, if necessary. * Delegates to renderMergedOutputModel for the actual rendering. * @see #renderMergedOutputModel */ @Override public void render(Map < String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception { if (logger.isTraceEnabled()) { logger.trace( " Rendering view with name ' " + this .beanName + " ' with model " + model + " and static attributes " + this .staticAttributes); } Map < String, Object > mergedModel = createMergedOutputModel(model, request, response); prepareResponse(request, response); renderMergedOutputModel(mergedModel, getRequestToExpose(request), response); } } 浠g爜錛?br />
]]>
99国产欧美精品久久久蜜芽 |
伊人热人久久中文字幕 |
久久久久久综合一区中文字幕 |
久久婷婷五月综合色奶水99啪 |
日本道色综合久久影院 |
国产一级做a爰片久久毛片 |
久久www免费人成看片 |
国内精品人妻无码久久久影院导航 |
午夜视频久久久久一区 |
久久中文字幕视频、最近更新
|
久久se精品一区二区影院 |
久久国产乱子精品免费女 |
久久99精品国产一区二区三区 |
欧美伊香蕉久久综合类网站 |
国产午夜精品理论片久久影视 |
狠狠狠色丁香婷婷综合久久五月 |
国产精品天天影视久久综合网 |
91秦先生久久久久久久 |
国产精品久久久天天影视香蕉
|
久久只有这精品99 |
国产亚洲美女精品久久久2020 |
精品国产乱码久久久久久郑州公司 |
国内精品久久久久影院日本
|
精品国产一区二区三区久久 |
青青草国产精品久久久久 |
欧美日韩中文字幕久久久不卡 |
久久这里的只有是精品23 |
久久久久无码精品国产不卡 |
国内精品久久久久久麻豆 |
影音先锋女人AV鲁色资源网久久 |
99久久无码一区人妻a黑 |
狠狠人妻久久久久久综合蜜桃 |
午夜肉伦伦影院久久精品免费看国产一区二区三区
|
亚洲国产成人精品91久久久
|
狼狼综合久久久久综合网 |
91精品国产91热久久久久福利 |
欧美一级久久久久久久大片 |
久久久一本精品99久久精品66
|
国产精品99久久久久久www |
A级毛片无码久久精品免费 |
国产毛片久久久久久国产毛片 |