小编Spy*_*Bot的帖子

如何使用Boost :: asio异步读取到std :: string?

我正在学习Boost :: asio和所有异步的东西.如何异步读取user_std :: string类型的变量?Boost::asio::buffer(user_)仅适用于async_write(),但不适用async_read().它适用于矢量,那么它不使用字符串的原因是什么?除了声明char user_[max_len]和使用之外,还有其他方法Boost::asio::buffer(user_, max_len)吗?

另外,继承boost::enable_shared_from_this<Connection>和使用shared_from_this()而不是thisin async_read()async_write()?的重点是什么?我在例子中看到了很多.

这是我的代码的一部分:

class Connection
{
    public:

        Connection(tcp::acceptor &acceptor) :
            acceptor_(acceptor), 
            socket_(acceptor.get_io_service(), tcp::v4())
        { }

        void start()
        {
            acceptor_.get_io_service().post(
                boost::bind(&Connection::start_accept, this));
        }

    private:

        void start_accept()
        {
            acceptor_.async_accept(socket_, 
                boost::bind(&Connection::handle_accept, this, 
                placeholders::error));
        }

        void handle_accept(const boost::system::error_code& err)
        {
            if (err)
            {
                disconnect();
            }
            else
            {
                async_read(socket_, boost::asio::buffer(user_),
                    boost::bind(&Connection::handle_user_read, this,
                    placeholders::error, placeholders::bytes_transferred));
            }
        }

        void …
Run Code Online (Sandbox Code Playgroud)

string boost asynchronous boost-asio

13
推荐指数
3
解决办法
2万
查看次数

声明式事务(@Transactional)不适用于Spring中的@Repository

我正在尝试使用Spring,JPA和嵌入式H2数据库进行简单的应用程序.最近我遇到了声明性交易这个奇怪的问题.如果我使用@Repository注释自动装配我的DAO,它们就不会提交.更具体地说,我在flush上获得异常:

javax.persistence.TransactionRequiredException: 
Exception Description: No transaction is currently active
Run Code Online (Sandbox Code Playgroud)

这是我的设置:

persistence.xml中

<persistence-unit name="schedulePU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:h2:~/scheduleDB" />
        <property name="javax.persistence.jdbc.user" value="sa" />
        <property name="javax.persistence.jdbc.password" value="" />
        <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.H2Platform" />
        <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
        <property name="eclipselink.logging.level" value="FINE"/>
    </properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

实体

@Entity
@Table(name = "Professors")
public class Professor {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    public Professor() { }

    public Professor(String name) {
        this.name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

DAO

@Repository …
Run Code Online (Sandbox Code Playgroud)

java spring repository transactional

8
推荐指数
1
解决办法
1万
查看次数