国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? php教程 PHP開發(fā) ??? ???? ???

??? ???? ???

Nov 22, 2016 pm 03:17 PM
spring

1 Spring Framework ???? ?? ??

???? ???? ??? Spring ?????? ???? ??? ?????. Spring ?????? ??? ?? ??? ?? ???? ??? ?? ??? ???? ?????.

Java Transaction API(JTA), JDBC, Hibernate, Java Persistence API(JPA)? ?? ??? ???? API?? ??? ????? ?? ? JDO(Java ??? ??).

??? ???? ??? ?????.

??? ???? API(?: JTA)?? ?????.

Spring? ??? ??? ???? ???? ?????.

Spring Framework ???? ?? ??? 2?? ??

????? Java EE ?????? ?? ?? ?? ??????? ? ?? ??? ???? ?? ??? ??? ?? ??? ?? ??? ????.

2.1 ??? ????

??? ????? ???? ????? ??? ?????? ? ??? ???? ?? ?? ???? ???? ??? ? ????. ? ??????? ??? API? JTA? ?? ?? ????? ?????. ?? JTA UserTransaction? ????? JNDI?? ???? ???. ?, JNDI? ???? ???. ??? ?? ????? ???? ?????? ??? ???? ?????. ???? JTA? ????? ?????? ?? ????? ??? ? ?? ?????.

???? ??? ????? ???? ? ???? ??? EJB CMT(Container Managed Transactions)????. CMT? ??? ???? ?????. EJB CMT? ?? ????? ?? JNDI ??? ???? EJB ??? JNDI? ???? ???. ????? ???? ?? Java ??? ??? ???? ???(??? ??) ?????. ??? ??? CMT? JTA? ?????? ?? ??? ??? ????? ????. ??? EJB? ???? ???? ??? ????? ??? ???? EJB Facade ???? ?????.

2.2 ?? ????

?? ????? ?? ??????. ?? ?? ????? JDBC ??? ?????. ?? ????? ???? ??? ?? ???? ???? ??? ? ??? ? ??? ????. ?? ??, JDBC ??? ???? ???? ????? ??? JTA ???? ??? ??? ? ????. ?????? ??? ???? ??? ???? ?? ??? ??? ??? ???? ???? ????. ? ?? ??? ?? ????? ???? ????? ?????.

2.3 Spring ?????? ??? ????? ??

Spring? ??? ????? ?? ????? ??? ?????. ?? ?? ???? ?? ????? ??? ????? ??? ??? ? ????. ???? ?? ?? ???? ?? ?? ???? ??? ????? ???? ??? ???? ???. Spring ?????? ??? ? ?????? ???? ??? ?????. ???? ???? ??? ???? ??? ???? ? ??? ?????.

????? ??? ???? ??? ?? ???? ?? ?? ?????? ??? ? ?? Spring ????? ???? ???? ?????. ???? ??? ??? ???? ???? ????? ???? ?? ??? ?? ?? ?? ???? ???? Spring Framework ???? API ?? ?? ???? API? ???? ????.

3 Spring Framework ???? ??? ??

Spring ???? ???? ??? ???? ?? ?????. ???? ??? org.springframework.transaction.PlatformTransactionManager ?????? ?? ?????:

?? ????? PlatformTransactionManager {

TransactionStatus getTransaction(

TransactionDefinition ??)

void commit(TransactionStatus ??) throws TransactionException;

void ??(TransactionStatus ??) throws TransactionException;

}

???? ????? ??? ??? ? ??? ?? ?? ??? ??? ?????(SPI)???. PlatformTransactionManager? ??????? ??? ???? ???? ????. JNDI? ?? ?? ??? ???? ????. PlatformTransactionManager? Spring IoC ????? ??? ?? ???? ?????. ??? ???? ?? JTA? ???? ???? Spring Framework ????? ???? ??? ????. JTA? ?? ???? ??? ???? ??? ?????? ? ????.

PlatformTransactionManager ????? ????? ??? TransactionException? ???? ?? ?????(?, java.lang.RuntimeException? ???). ?? ??? ??????. ?????? ??? ???? ????? ??? ??? ? ?? ?? ??? ?????? ???? TransactionException? ???? ????? ??? ? ????. ??? ???? ?? ??? ??? ??? ????.

getTransaction(..) ???? TransactionDefinition ????? ???? TransactionStatus ??? ?????. ??? TransactionStatus? ? ????? ??? ?? ?? ???? ????? ?? ?? ??? ?? ?? ?? ????? ??? ?? ????. ??? ??? ??? ?????. Java EE ???? ????? ????? TransactionStatus? ?? ??? ????? ???? ????.

TransactionDefinition ????? ??:

??(???? ?? ??): ???? ?? ?????. ?? ?? ? ????? ???? ?? ?? ????? ?? ? ?????

??(???? ??): ????? ???? ?? ??? ???? ?? ??? ???? ??? ?????. ??? ???? ????? ?? ??? ? ???? ??? ?? ??? ???? ??? ????. ?? ??, ?? ????(???? ??)?? ??? ?? ????? ?? ????? ?? ???? ? ????? ??? ? ????.

???? ?? ??: ????? ???? ?? ????? ?? ???? ???? ??? ????? ???? ?????.

?? ?? ??: ?? ?? ????? ??? ???? ??? ?? ???? ?? ? ??? ? ????. ?? ???? ?? ?? ????? ???? ??? ???(?: Hibernate? ??? ?).

??? ??? ?? ?? ??? ?????. ??? ?? ??? Spring Framework ?? ???? ?? ???? ???? ? ??????.

TransactionStatus ?????? ???? ??? ?? ??? ????? ???? ???? ??? ???? ??? ??? ?????.

?? ????? TransactionStatus? SavepointManager {

boolean? ?????. isNewTransaction ();

boolean hasSavepoint();

void setRollbackOnly();

boolean isRollbackOnly();

void ???();

boolean isCompleted();

}

Spring?? ??? ?? ?????? ???? ??? ?????? ???? ??? PlatformTransactionManager ??? ???? ?? ??????. ????? ??? ??? ?? ? ??? ?????.

PlatformTransactionManager? ????? ?? ??(JDBC, JTA, Hibernate ?)? ??? ???. ??? ?? PlatformTransactionManager? ???? ????.

JDBC ??? ?? ??:

??????? destroy‐method="close" >

?

?

;

PlatformTransactionManager ??? DataSource ??? ?????.

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

Java EE ?????? JTA? ???? ?? JNDI ? Spring? JtaTransactionManager? ???? ????? DataSource? ??? ? ????.

xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance"

xmlns:jee="http://www.springframework.org/schema/jee"

xsi :schemaLocation = "

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/spring-dans.xsd

?? > http://www.springframework.org/schema/jee

http://www.springframework.org/schema/jee/spring-jee.xsd">

?

JtaTransactionManager ????? ?? ???? ??? ????? DataSource? ?? ???? ?? ? ??? ????.

Hibernate? ?? ????? ??? ?? ????. ? ??, ??? ??? ?????? ??? Hibernate Session ????? ?? ?? ??? Hibernate? LocalSessionFactoryBean? ??? ??? ????.

? ?? txManager Bean? HibernateTransactionManager???. DataSourceTransactionManager? DataSource? ???? ?? ???, HibernateTransactionManager? SessionFactory? ???? ???:

????

????

????????

???????????org/springframework/samples/petclinic/hibernate/petclinic.hbm.xml

????????

????

????

????????

????????????hibernate.dialect=${hibernate.dialect}

????????

????

???

?如果你使用 Hibernate ? Java EE容器管理 JTA事務,那么你只用使用JtaTransactionManager:

在所有這些情況下,應用程序代碼不需要改變。你僅僅需要改變配置來改變?nèi)绾喂芾硎聞铡?/p>

4?????? ?? ??

?? ??? ???? ?? ??? ?? ???? ??? ????.資源(例如,DataSourceTransactionManager鏈接DataSource,HibernateTransactionManager鏈接SessionFactory等等)。

4.1??? 高級同步方式

Spring? 高級模板基于持久化集成APIs或使用帶有事務的本地ORM API——感知工廠bean或代理管理本地資源工廠。這些事務感知解決方案內(nèi)part處理資源創(chuàng)建, 重用, 清理, 資源事務同步選項? 異常映射。因此,數(shù)據(jù)訪問代碼沒有處些亻務,但可以關(guān)注不樣板式持久化邏輯。?常,你使????ORM API或通過使用JdbcTemplate獲取模板。

4.2??? 低級同步方式

例如,DataSourceUtils(JDBC)、EntityManagerFactoryUtils(JPA)、SessionFactoryUtils(Hibernate)、PersistenceManagerFactory Utils(JDO)? 底層同步方式。當你想應用程序代碼直接處理本地持久化APIs, 你使用這些類確保獲取Spring框架管理的實例, 事務是(可選)???, 發(fā)生in進程中的異常正確映射一致性API。

例如,JDBC? ?? ???? JDBC ???? DataSource???? ?? getConnection() ??? ???? Spring? org.springframework.jdbc.datasource.DataSourceUtils:

?? conn = DataSourceUtils.getConnection(dataSource) ;

如果已存? ?? ???? ???? ?? ????.選)?? ?? ???? 后續(xù)?? ???務???.

這種方式不需要Spring事務管理(事務同步是可選的),因此,無論你是否使用Spring管理事務你都佽用它。

當然,一旦你使用Spring JDBC支持、JPA支持或Hibernate支持,你通常不喜歡使用DataSourceUtils或其它的幫助類。

4.3????TransactionAwareDataSourceProxy

??TransactionAwareDataSourceProxy類。這是目標DataSource代理,包裝目標DataSource到感知Spring管理事務。為此,它類似于Java EE服務器提供的傳統(tǒng)JNDI DataSource。

5????聲明式事務管理

Spring框架的聲明式事務管理讓Spring side向切face編程(AOP)成為可能,盡管,Spring框架發(fā)布包以模板shape式自帶事務切?代碼,一般需要理解AOP。

5.1??????Spring框架的聲ming式事務實現(xiàn)

???(當前基于XML或注解).AOP聯(lián)??務元數(shù)據(jù)產(chǎn)生AOPTransaction, 使???????聯(lián)適當?shù)腜latformTransactionManager實現(xiàn)驅(qū)動事務環(huán)繞方法調(diào)用。

??? ???? ???

5.2 ??? ???? ??? ?

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http : //www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http : //www.springframework.org/schema/tx

???????????????????????????????????????????????????????????????????????????????????> org/schema/aop/spring- aop.xsd "& gt;

& lt;! ;

????????????????????????????????????????????????????????????????????????????????????????????'get'?? ???? ?? ?? ??? -->

????????????????????????????????????~????????????????????????????????????????????????????????????????????????? ????? ?? ??? ????? -->

?tx:advice> (..))"/>

?

????

??????????????????????????????????????????????????????????????????????????~?,,?,??????????????????????????,,,, P,

???????????????????????????????????>

????? ??? ??? ??? ???? ???? Spring ????? ?????. ??? ??? ?? Spring ????? ????? ????.

???? ??? ?? ?? ??? ????? ??? ? ????.

???

??? ????? ?? ?? ??? ??? ?? ????.

?

?

??????????????????????????????????????????????????????????????????????????????

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

.org/aop

config; : pointcut id = "defaultServiceOperation" ??? = "??(*x.y.service.*service.*(..))"/& gt;

;> & Lt; (* x.y.service.ddl.DefaultDdlManager.*(..))"/>

???

?????????????????????????????????????????????????????????????????????????????????????????????????????????????~ > >?????????????????????????????????" / beans>

5.5 ??

?? ??:

???? ?? ??? ?????

???? ?? ??? ?????

????? ??/?????

???? ?? ??? ????? ?? ???? ???? ?? ??? ????? ?? ??? ???? ?? ?? ???? ???? ????.

?? RuntimeException? ??? ??????. ??? ???? ????.

??? ??? ?? ??? ??:

5.6 @Transactional ??

?? ?? ???:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http:/ / www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http:/ / www.springframework.org/schema/tx

????????????????????????????????????????????????????????????????????????????????????| -aop.xsd">

& lt; ?? ?? =" dataSource "ref =" dataSource "/& gt; ;/bean & gt;

?

??>

??? ?? ??:

@ Transactional

?? ??? DefaultFooService? FooService? ?????. {

Foo getFoo(String fooName);

Foo getFoo(String fooName, String barName);

void insertFoo(Foo foo);

void updateFoo(Foo foo);

}

@Transactional ??:

@Transactional? ?? ???? ???:

public class TransactionalService {

??? ???? ???

@Transactional("order")

public void setSomething(String name) { ... }

@Transactional("account")

public void doSomething() { ... }

}

< ;bean id="transactionManager1"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

. ..

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

...

@Target({ElementType.METHOD, ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Transactional("order")

public @ ????? OrderTx {

}

@Target({ ElementType.METHOD, ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Transactional ("account")

public @interface AccountTx {

}

5.7 ???? ??

PROPAGATION_REQUIRED

???? ??? PROPAGATION_REQUIRED? ??? ? ? ??? ?? ??? ???? ??? ?????. ? ??? ???? ??? ?? ??? ????? ??? ? ??? ?? ???? ?? ??? ?? ???? ??? ??????. ?? ?? PROPAGATION_REQUIRED ????? ??? ?? ??? ??? ??? ????? ?????. ??? ?? ???? ???? ?? ???? ???? ????? ???? ?? ????? ?? ??? ??? ??? ????.

??? ? ?? ?? ???? ??? ?? ?? ??? ???? ?? ?? ????? ??? ???? ????? ??? ??????. ?? UnexpectedRollbackException? ?????.

PROPAGATION_REQUIRES_NEW

PROPAGATION_REQUIRED? ?? PROPAGATION_REQUIRES_NEW? ??? ???? ????? ?????. ? ?? ?? ??? ????? ??? ??? ????? ????? ??? ? ??? ?? ????? ?? ??? ?? ????? ??? ?? ????.

PROPAGATION_NESTED

?? ????? ??? ? ?? ?? ????? ?????. ? ??? ?? ?? ???? ??? ?? ??? ??? ????? ?? ????? ?? ??? ??? ???? ??? ????? ??? ? ????. ? ??? ????? JDBC ???? ????? JDBC ??? ?????? ??? ? ????.

6 ????? ?? ???? ??

Spring ?????? ? ?? ??? ????? ?? ???? ??? ?????.

TransactionTemplate ??(??)

PlatformTransactionManager? ???? ?? ??

6.1 TransactionTemplate ??

TransactionTemplate? ?? Spring ???(?: JdbcTemplate)? ??? ???? ?????.

?? ??? SimpleService? ???? ?????. {

private final TransactionTemplate transactionTemplate;

public SimpleService(PlatformTransactionManager transactionManager) {

Assert.notNull(transactionManager, "'transactionManager' ??? null? ???? ???.");

this.transactionTemplate = new TransactionTemplate(transactionManager);

}

public Object someServiceMethod() {

return transactionTemplate.execute(new TransactionCallback() {

public Object doInTransaction(TransactionStatus status) {

????????? updateOperation1();

????????????????? return resultOfUpdateOperation2(); ??> }

}

?? ?? ??? TransactionCallbackWithoutResult ???? ?????.

transactionTemplate.execute(new TransactionCallbackWithoutResult() {

protected void doInTransactionWithoutResult(TransactionStatus status) {

updateOperation1() ;

updateOperation2();

}

});

???? ???? ??:

transactionTemplate.execute( new TransactionCallbackWithoutResult() {

protected void doInTransactionWithoutResult(TransactionStatus status) {

try {

updateOperation1();

updateOperation2 ();

} catch (SomeBusinessExeption ex) {

status.setRollbackOnly();

}

}

} ) ;

?? ?? ??:

?? ??? SimpleService? ??? {

private final TransactionTemplate transactionTemplate;

public SimpleService(PlatformTransactionManager transactionManager) {

Assert.notNull( transactionManager, "'transactionManager' ??? null? ???? ???.");

this.transactionTemplate = new TransactionTemplate(transactionManager) ;

this.transactionTemplate.setIsolationLevel(

TransactionDefinition.ISOLATION_READ_UNCOMMITTED);

this.transactionTemplate.setTimeout(30); // 30?

}

}

Spring XML? ???? TransactionTemplate ?? :

class="org.springframework.transaction.support.TransactionTemplate">

6.2 PlatformTransactionManager ??

DefaultTransactionDefinition def = new DefaultTransactionDefinition();

def.setName("SomeTxName");

def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

TransactionStatus status = txManager.getTransaction(def);

try {

// ???? ?? ??

} catch (MyException ex) {

txManager.rollback(status );

throw ex;

}

txManager.commit(status);

7 ????? ????? ???? ???? ??? ????? ???? ?????????

?? ?? ?? ?? ?? ????? ??? ?? ??? ?????.

8?? ???? ??? ???

Spring 4.2?? ??? ???? ???? ??? ???? ? ????.

@Component public class MyComponent {

@TransactionalEventListener

public void handlerOrderCreatedEvent(CreationEvent CreationEvent) {

. .

}

}

TransactionalEventListener ??? ?? ???? ??? ??? ??? ? ??? ?? ??? ?????. ??? ??? BEFORE_COMMIT, AFTER_COMMIT(???), AFTER_ROLLBACK ? AFTER_COMPLETION???.


? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
Spring Boot? OpenAI? ??? ? ??? ????? ???? Spring Boot? OpenAI? ??? ? ??? ????? ???? Feb 01, 2024 pm 09:18 PM

2023??? AI ??? ??? ??? ??? ??, ?? ????? ??? ? ??? ??? ??. ???? AI ??? ???? ?? ? ???? ??? Spring ????? ??? ????. GenAI(?? ?? ??) ??? ????? ???? ?? AI ??? ?? ?????? ??? ????? ?? ???? ???????. ??? ???? AI ?? ?????? ?? ????? ????? ???? ????? ???? ???? ??? ?? ??? ?? "SpringAI"? ??????. 'SpringAI'? ?? ???? AI ??? ??? ??????? ?? ?? ??? ? ?? ?? ? ??? ?? ????.

Spring Boot ? Spring AI? ???? ?? ?? ?? ?????? ?? Spring Boot ? Spring AI? ???? ?? ?? ?? ?????? ?? Apr 28, 2024 am 11:46 AM

?? ??? Spring+AI? ???? ??? API? ?? ??? ?? ??? ??? ???? ???? ?????. ? ????? ??? ??? Spring+AI ?? ??? ???????. ? ????? Spring+AI? ??? ?? ?? ??? ???? ??? ???? ??? LESSONSLEARNED? ? ?? ??? ???????? ????? ?????. ? ??? ???? Spring+AI? ??? ???? ? ?? ???? ???? ? ??? ? ? ??? ????. Spring ?????? ????? ?? ???? 20? ??? ??? ??? ???, Spring Boot 1.0 ??? ??? ? 10?? ?????. ?? ?? ??? ?? ?? ??? ??? ??? ? ????.

Spring ????? ?? ????? ?? ??? ?????? Spring ????? ?? ????? ?? ??? ?????? Jan 08, 2024 am 10:23 AM

Spring ????? ?? ????? ???? ??: 1. TransactionCallback ? TransactionCallbackWithoutResult? ?????. 3. Transactional ??? ?????. 4. @Transactional? ?? TransactionTemplate? ?????.

Java Spring?? ??? ??? ???? ?? Java Spring?? ??? ??? ???? ?? May 24, 2023 pm 01:28 PM

Java? ??? ??? ?????. Jdk? ?? ???? ??????? ??? ??? ???? ? ?? ??? ????. ??? Timer?? ?? ??? ScheduledThreadPoolExecutor???. Timer+TimerTask? Timer? ???? TimerTask ??? ???? ? ??? ? ?? ???? ?????. Timer?? 4?? ?? ??? ???, Timer ???? ??? ?? ???? ???? ??? ??? ? ????. ?? ??? Timer-number?? ???? ?? ???? ????. ?? ? ?? ??? ???? ????. cancel(): ?? ??? ???? ?? ??? ?? ??? ?????. purge(): ?? ????? ??? ?????.

Spring?? ???? ?? ??? ???? ?? Spring?? ???? ?? ??? ???? ?? Jan 26, 2024 pm 05:38 PM

Spring?? ???? ?? ??? ???? ??: 1. @Transactional ??? ?????. 2. Spring ?? ???? ?????. 3. PlatformTransactionManager? ?????. 4. Java ?? ????? ?????. ??? ??: 1. @Transactional ??? ????, ???? ??? ??? ???? ???? @Transactional ??? ????, ???? ?? ??? ?????. 2. Spring ?? ???? ?.

Spring Boot? Spring Cloud? ???? ?? Spring Boot? Spring Cloud? ???? ?? Jun 22, 2023 pm 06:25 PM

SpringBoot? SpringCloud? ?? ???? ??????? ??????? ? ??? ???? ???? ? ??? ?? Spring Framework? ????? ?? ?? ??? ??? ??? ????. SpringBoot? Java ??????? ??? ???? ?? ??????, ???? Spring ?? ??????? ? ??? ???? ??? ? ??? ????. ?? ??? ?? ??? Spring ??????? ???? ???? ???? ?? ??? ?????.

Spring? Bean ?? ??? ?? ??? ?? Spring? Bean ?? ??? ?? ??? ?? Dec 30, 2023 am 08:49 AM

Spring??? Bean ?? ??? ?? ??? ?? Spring ??????? Bean ??? ?? ??? ????. ????????? ??? ??? ????? Bean ????? ???? ???? ?? ??? ????. ? ????? Spring?? Bean? ?? ??? ??? ???? ???? ?? ??? ?????. @Component ??? ?? Bean@Component ??? ?? ?? Spring ??????? ????? ???? ?? ? ?????. ???? @Compone? ???? ???.

Spring Cloud? ???? ???? Spring Cloud? ???? ???? Jun 22, 2023 am 08:11 AM

Java ????? Spring ?????? ??? ???? ?? ???? ?????. ???? ???? ???????? ??? ?? Spring Cloud? ??? ???? ?? ??? ???? ?? ? ?? ??? ?????. SpringCloud? ?? ???? ??? ???? ?? SpringBoot ?? ?? ?? ?????. ????? ??? ?? ? ??, ?? ??, ?? ??? ? ?? ??? ?? ??? ??? ?? ??? ???? ???? ???? ??? ???? ???.

See all articles