锘??xml version="1.0" encoding="utf-8" standalone="yes"?>这里只有精品在线播放,欧美视频导航,欧美三级午夜理伦三级中文幕
http://m.shnenglu.com/aaxron/璁板綍淇鐨勫嵃璁?
zh-cn Sun, 16 Nov 2025 02:49:21 GMT Sun, 16 Nov 2025 02:49:21 GMT 60 鍗曟枃浠禔ES鍔犺В瀵嗙畻娉?/title> http://m.shnenglu.com/aaxron/archive/2021/08/30/217802.html澶╀笅 澶╀笅 Mon, 30 Aug 2021 13:39:00 GMT http://m.shnenglu.com/aaxron/archive/2021/08/30/217802.html http://m.shnenglu.com/aaxron/comments/217802.html http://m.shnenglu.com/aaxron/archive/2021/08/30/217802.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/217802.html http://m.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://m.shnenglu.com/aaxron/archive/2021/03/31/217647.html澶╀笅 澶╀笅 Wed, 31 Mar 2021 13:12:00 GMT http://m.shnenglu.com/aaxron/archive/2021/03/31/217647.html http://m.shnenglu.com/aaxron/comments/217647.html http://m.shnenglu.com/aaxron/archive/2021/03/31/217647.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/217647.html http://m.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://m.shnenglu.com/aaxron/archive/2020/01/01/217053.html澶╀笅 澶╀笅 Wed, 01 Jan 2020 05:47:00 GMT http://m.shnenglu.com/aaxron/archive/2020/01/01/217053.html http://m.shnenglu.com/aaxron/comments/217053.html http://m.shnenglu.com/aaxron/archive/2020/01/01/217053.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/217053.html http://m.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://m.shnenglu.com/aaxron/archive/2020/01/01/217052.html澶╀笅 澶╀笅 Wed, 01 Jan 2020 05:19:00 GMT http://m.shnenglu.com/aaxron/archive/2020/01/01/217052.html http://m.shnenglu.com/aaxron/comments/217052.html http://m.shnenglu.com/aaxron/archive/2020/01/01/217052.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/217052.html http://m.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://m.shnenglu.com/aaxron/archive/2019/12/06/217014.html澶╀笅 澶╀笅 Fri, 06 Dec 2019 02:53:00 GMT http://m.shnenglu.com/aaxron/archive/2019/12/06/217014.html http://m.shnenglu.com/aaxron/comments/217014.html http://m.shnenglu.com/aaxron/archive/2019/12/06/217014.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/217014.html http://m.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://m.shnenglu.com/aaxron/archive/2019/12/06/217013.html澶╀笅 澶╀笅 Fri, 06 Dec 2019 02:50:00 GMT http://m.shnenglu.com/aaxron/archive/2019/12/06/217013.html http://m.shnenglu.com/aaxron/comments/217013.html http://m.shnenglu.com/aaxron/archive/2019/12/06/217013.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/217013.html http://m.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://m.shnenglu.com/aaxron/archive/2019/08/15/216694.html澶╀笅 澶╀笅 Thu, 15 Aug 2019 08:32:00 GMT http://m.shnenglu.com/aaxron/archive/2019/08/15/216694.html http://m.shnenglu.com/aaxron/comments/216694.html http://m.shnenglu.com/aaxron/archive/2019/08/15/216694.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/216694.html http://m.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://m.shnenglu.com/aaxron/archive/2019/06/26/216462.html澶╀笅 澶╀笅 Wed, 26 Jun 2019 10:03:00 GMT http://m.shnenglu.com/aaxron/archive/2019/06/26/216462.html http://m.shnenglu.com/aaxron/comments/216462.html http://m.shnenglu.com/aaxron/archive/2019/06/26/216462.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/216462.html http://m.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錛屼互鍙婄敤浜庡彇娑堝畾涔夊畠鐨?#undef DEBUG錛夈?/div>
蹇呴』鍦╢ile鐨勬渶鍓嶆柟璁劇疆,#define debug鎴栬呯粍鍚堟搷浣?/div>
#if (Debug && Trace)
#define DebugAndTrace
#endif
ps:Conditional浣嶄簬using System.Diagnostics;
浠涔堟儏鍐典笅浣跨敤璇ユ爣璇嗙?
褰撶▼搴忎腑涓涓柟娉曟垨灞炴т笉鎯沖啀浣跨敤鏃?濡傛灉鎶婂畠鍒犳帀灝遍渶瑕佹妸寮曠敤鐨勫湴鏂逛竴涓竴涓叏閮ㄥ垹鎺変笉鐒跺氨浼氱紪璇戦敊璇?榪欐椂鎴戜滑灝卞彲浠ュ湪濉旂殑涓婇潰鍔犱竴涓猍Conditional("string")] 鐒跺悗紼嬪簭榪愯鏃跺氨浼氬拷鐣ュ畠
ps:[Conditional("string")]閲岄潰瀛楃涓查殢鎰忓彇
濡傛灉鎯沖啀嬈¤皟鐢ㄩ偅涓柟娉曟垨灞炴ф庝箞鍔?
榪欎釜寰堢畝鍗?浣犲彧闇鍦ㄥ紩鐢ㄥ懡鍚嶇┖闂撮偅涓湴鏂硅繘琛屼竴涓畯瀹氫箟鎶婁綘鍦╗Conditional("string")]閲岄潰鐨勫瓧絎︿覆瀹氫箟鍑烘潵灝辮兘鐢ㄤ簡
C#-#define鏉′歡緙栬瘧
C#鐨勯澶勭悊鍣ㄦ寚浠や粠鏉ヤ笉浼氳漿鍖栦負鍙墽琛屼唬鐮佺殑鍛戒護錛屼絾鏄細褰卞搷緙栬瘧榪囩▼鐨勫悇涓柟闈紝甯哥敤鐨勯澶勭悊鍣ㄦ寚浠ゆ湁#define銆?undef銆?if,#elif,#else鍜?endif絳夌瓑錛屼笅闈粙緇岰#涓嬌鐢?define榪涜鏉′歡緙栬瘧鐨勫疄渚嬨?/div>
C#涓潯浠剁紪璇戞寚浠ょ敤浜庢寜鏉′歡鍖呭惈鎴栨帓闄ゆ簮鏂囦歡涓殑鏌愪簺閮ㄥ垎銆傚湪Visual Studio涓紝浼氱湅鍒拌鎺掗櫎鐨勪唬鐮佹樉紺轟負鐏拌壊銆?/div>
涓銆?define鍙互鐢ㄦ潵鍋氫粈涔?/div>
1銆佸綋璁″垝鍙戝竷涓や釜鐗堟湰鐨勪唬鐮佺殑鏃跺欍傚嵆鍩烘湰鐗堝拰鎷ユ湁鏇村鐗堟湰鐨勪紒涓氱増錛屽氨鍙互鐢ㄥ埌鏉′歡緙栬瘧鎸囦護錛?/div>
2銆佷緥濡傚悓涓涓枃浠剁粰silverlight銆亀pf銆亀inform絳変嬌鐢紝騫朵笖榪樿冭檻Debug鍜孯elease絳夛紝鏈夊ぇ閮ㄥ垎浠g爜鏄竴鏍風殑錛?/div>
3銆佹寚瀹氬嚱鏁板拰灞炴ф槸鍚︾紪璇戝埌鏈緇堜駭鍝佷腑鍘匯?/div>
浜屻?define鐢ㄦ硶
璇硶錛?define 鍚嶇О
娉ㄦ剰錛氳繖閲屽悕縐板彇Debug錛屼綘涔熷彲浠ュ彇鍏朵粬鍚嶇О濡侱ragon
1 #define Debug
璇存槑錛?/div>
1銆丏ebug鍙互鐪嬪仛鏄0鏄庣殑涓涓彉閲忥紝浣嗘鍙橀噺娌℃湁鐪熸鐨勫鹼紝瀛樺湪鏃?if Debug緇撴灉涓簍rue錛屽惁鍒欎負false錛?/div>
2銆?define鍗曠嫭鐢ㄦ病浠涔堟剰涔夛紝涓鑸槸鍜?if鎴栬匔onditional鐗規х粨鍚堜嬌鐢紱
3銆?define蹇呴』瀹氫箟鍦ㄦ墍鏈塽sing鍛藉悕絀洪棿鍓嶉潰錛?/div>
4銆丏ebug涓嶥EBUG鏄笉鍚岀殑錛孋#鍖哄垎澶у皬鍐?/div>
]]>
spring 瀹樻柟涓嬭澆鍦板潃錛圫pring Framework 3.2.x&Spring Framework 4.0.x錛?/title> http://m.shnenglu.com/aaxron/archive/2019/02/12/216238.html澶╀笅 澶╀笅 Tue, 12 Feb 2019 03:44:00 GMT http://m.shnenglu.com/aaxron/archive/2019/02/12/216238.html http://m.shnenglu.com/aaxron/comments/216238.html http://m.shnenglu.com/aaxron/archive/2019/02/12/216238.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/216238.html http://m.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寮鍙戦」鐩殑錛屼笅杞藉氨闈炲父楹葷儲錛屼笅緇欏嚭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錛変笅杞斤細
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錛変笅杞斤細
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://m.shnenglu.com/aaxron/archive/2018/04/11/215585.html澶╀笅 澶╀笅 Wed, 11 Apr 2018 08:40:00 GMT http://m.shnenglu.com/aaxron/archive/2018/04/11/215585.html http://m.shnenglu.com/aaxron/comments/215585.html http://m.shnenglu.com/aaxron/archive/2018/04/11/215585.html#Feedback 0 http://m.shnenglu.com/aaxron/comments/commentRss/215585.html http://m.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 />
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美性片在线观看 |
日韩一级视频免费观看在线 |
亚洲日本成人 |
亚洲国产导航 |
亚洲人体偷拍 |
亚洲一区二区三区高清不卡 |
欧美伊人久久大香线蕉综合69 |
亚洲欧美资源在线 |
久久久精品国产一区二区三区 |
久久精品国产久精国产思思 |
久久一日本道色综合久久 |
美日韩精品免费 |
亚洲精品一区二区三区蜜桃久 |
一区二区三区黄色 |
久久er精品视频 |
蜜臀av性久久久久蜜臀aⅴ |
欧美精品91 |
国产精品久久久久天堂 |
经典三级久久 |
一本色道久久综合一区 |
欧美在线啊v |
亚洲国产三级在线 |
日韩亚洲欧美成人 |
欧美一区二区三区在 |
免费黄网站欧美 |
国产精品美女www爽爽爽 |
亚洲电影有码 |
午夜在线观看欧美 |
亚洲人被黑人高潮完整版 |
午夜精彩国产免费不卡不顿大片 |
久久在线免费观看 |
国产酒店精品激情 |
亚洲国产三级 |
亚洲特色特黄 |
久久一二三区 |
一本色道久久综合狠狠躁篇的优点 |
亚洲欧美成人一区二区在线电影 |
蜜臀99久久精品久久久久久软件 |
国产精品一区二区久久精品 |
日韩午夜av电影 |
老牛影视一区二区三区 |
亚洲一区二区视频在线观看 |
欧美黑人多人双交 |
伊人久久大香线蕉av超碰演员 |
亚洲在线黄色 |
最新69国产成人精品视频免费 |
久久成人亚洲 |
国产精品视频你懂的 |
一区二区高清在线 |
欧美激情精品 |
久久综合五月 |
精品999网站 |
久久久不卡网国产精品一区 |
亚洲免费网址 |
国产精品推荐精品 |
亚洲欧美成人一区二区在线电影 |
亚洲欧洲一二三 |
欧美黄色免费网站 |
一本色道久久综合 |
亚洲精品小视频在线观看 |
欧美极品一区二区三区 |
一本色道久久综合亚洲精品不卡 |
亚洲国产精品久久 |
欧美精品三级日韩久久 |
亚洲午夜久久久久久久久电影网 |
亚洲欧洲精品一区二区三区 |
欧美国产1区2区 |
99xxxx成人网 |
亚洲婷婷综合色高清在线 |
国产精品福利影院 |
欧美在线视频a |
久久激情综合 |
亚洲国产视频a |
亚洲三级视频 |
国产精品久久婷婷六月丁香 |
亚欧成人在线 |
久久久久网站 |
亚洲精选大片 |
亚洲在线免费观看 |
伊人久久亚洲热 |
亚洲国产成人久久综合 |
欧美黄色免费网站 |
亚洲欧美成人在线 |
欧美一区午夜精品 |
亚洲大胆av |
亚洲伦理久久 |
国产伦精品一区二区三区免费迷 |
久久久91精品国产 |
欧美成人dvd在线视频 |
夜色激情一区二区 |
亚洲欧美在线一区 |
亚洲国产精品一区二区www |
亚洲日本成人在线观看 |
欧美中文在线免费 |
欧美成年人视频 |
欧美精品一区二区三区蜜桃 |
亚洲综合99 |
久久国产精品一区二区三区四区 |
亚洲成人直播 |
在线综合+亚洲+欧美中文字幕 |
国产一区二区电影在线观看 |
亚洲激情图片小说视频 |
国产乱码精品 |
亚洲乱码国产乱码精品精 |
精品99视频 |
亚洲欧美国产视频 |
正在播放日韩 |
久久一综合视频 |
欧美影视一区 |
欧美午夜宅男影院在线观看 |
欧美99久久 |
国内成人精品一区 |
亚洲视频免费 |
亚洲美女在线看 |
久久久久五月天 |
欧美一区二区三区久久精品 |
欧美精品免费观看二区 |
久久中文欧美 |
国产一区二区日韩精品欧美精品 |
99精品欧美一区二区三区 |
亚洲精品偷拍 |
免费观看日韩 |
欧美大尺度在线观看 |
国外成人在线视频 |
午夜宅男欧美 |
欧美淫片网站 |
国产精品永久免费观看 |
亚洲最新视频在线 |
日韩一区二区免费高清 |
免费高清在线一区 |
美女视频黄 久久 |
好吊日精品视频 |
性伦欧美刺激片在线观看 |
性欧美18~19sex高清播放 |
欧美三级乱人伦电影 |
亚洲精品乱码久久久久久按摩观 |
亚洲国产三级网 |
欧美成人免费小视频 |
欧美激情精品久久久久久蜜臀 |
黑人操亚洲美女惩罚 |
欧美在线一二三四区 |
久久婷婷影院 |
在线色欧美三级视频 |
欧美成人一区二区在线 |
欧美二区在线看 |
亚洲精品国产品国语在线app |
巨乳诱惑日韩免费av |
欧美激情视频一区二区三区在线播放 |
激情综合色丁香一区二区 |
久久欧美肥婆一二区 |
欧美高清在线一区二区 |
亚洲精品1区2区 |
欧美人交a欧美精品 |
99视频热这里只有精品免费 |
午夜欧美精品 |
好男人免费精品视频 |
欧美福利电影网 |
99精品视频网 |
欧美在线啊v一区 |
在线不卡a资源高清 |
欧美国产日韩一区 |
在线看片第一页欧美 |
欧美xxx在线观看 |
亚洲三级影片 |
国产精品久久久一本精品 |
亚洲欧美成人综合 |
免费中文字幕日韩欧美 |
日韩一区二区免费高清 |
国产精品美女久久久 |
久久久www成人免费毛片麻豆 |
欧美国产精品va在线观看 |
99视频精品全部免费在线 |
国产精品美女久久久 |
久久成人人人人精品欧 |
亚洲激情在线 |
久久久青草青青国产亚洲免观 |
亚洲区在线播放 |
国产日韩精品在线观看 |
欧美二区不卡 |
久久激情视频 |
一区二区三区免费观看 |
久久久久一区二区三区四区 |
亚洲美女色禁图 |
国内精品嫩模av私拍在线观看
|
美女精品网站 |
中文一区二区 |
欧美91大片 |
午夜亚洲视频 |
日韩视频一区二区 |
黄色av一区 |
国产精品久久一卡二卡 |
欧美精品一区二区三区蜜臀 |
欧美专区在线观看一区 |
亚洲午夜一区 |
亚洲人成网站999久久久综合 |
美国三级日本三级久久99 |
欧美一区二区精品在线 |
亚洲午夜一区二区三区 |
亚洲人成绝费网站色www |
狠狠色丁香久久婷婷综合丁香 |