V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  choice4  ›  全部回复第 6 页 / 共 15 页
回复总数  287
1  2  3  4  5  6  7  8  9  10 ... 15  
2019-01-02 17:28:34 +08:00
回复了 lixuda 创建的主题 问与答 经常这里看到说一加手机好
6 氧一切很好(无感刘海)
2018-12-20 17:30:01 +08:00
回复了 tomlee0201 创建的主题 互联网 程序员有玩抖音的吗
不玩 偶尔可能撇到别人在刷。公交车车有时会听到抖音的那个标志笑声 emm
2018-12-20 13:50:53 +08:00
回复了 choice4 创建的主题 Java 异步日志打印
是因为主线程结束太快了
2018-12-20 13:43:56 +08:00
回复了 choice4 创建的主题 Java 异步日志打印
平常 jdk 的调用方式
ExecutorService service = Executors.newFixedThreadPool(1);
log.error(service.submit(() -> {
Thread.sleep(30000);
return 100;
}).get().toString());
service.shutdown();
这样可以在 get()方法处阻塞获取值 ,最后成功打印。
但是

RedisClient redisClient = RedisClient.create("redis://127.0.0.1:6379");
StatefulRedisConnection<String, String> redisConnection = redisClient.connect();
RedisAsyncCommands<String, String> asyncCommands = redisConnection.async();
RedisFuture<String> future = asyncCommands.get("lettuce_key");
future.whenCompleteAsync((s, throwable) -> {
try {
log.error(asyncCommands.get("lettuce_key").get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});

这样是空的,
如果在 future.whenCompleteAsync 处断点卡上一下的话。就可以打印了
2018-12-20 13:29:37 +08:00
回复了 choice4 创建的主题 Java 异步日志打印
@lovedebug 你有没有写代码试一下
2018-12-20 11:32:33 +08:00
回复了 choice4 创建的主题 Java 异步日志打印
题目描述错了(试了一下没出现我说的那种情况),说实际情况吧。
昨天看到有个老哥发的 jedis bug 然后下面说出了 lettuce
今天就说试一下 lettuce
创建的 RedisAsyncCommands
然后 log.info( asyncCommands.get("key").get() ); 这种打印不出来。 可能是 lettuce 这个异步命令的事吧
分母。。
2018-12-18 19:29:03 +08:00
回复了 yidinghe 创建的主题 奇思妙想 最新的伪人工智能演示( Java )
你才是傻逼!
最后一句长的
还有退出码 666 怎么来的 emmm
2018-12-18 19:26:58 +08:00
回复了 yidinghe 创建的主题 奇思妙想 最新的伪人工智能演示( Java )
这不符合逻辑啊
2018-12-18 17:36:41 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
@abcbuzhiming 单数据源可以回滚, (我是直接是在创建 SqlSessionFactory bean 的时候 bean.setDataSource(a()))
这种方式设置的 (成功回滚)。
原来动态多数据源的时候相当于是 bean.setDataSource(dynamicDataSource()) (无法回滚)
2018-12-18 13:34:58 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
空格被吃了
2018-12-18 13:34:40 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
@abcbuzhiming 确定,不过不知道是不是别的哪里写错了 大致代码意思如下吧

@Configuration
class Config{
@Bean("a")
@PropertiesConfiguration("...")
public DataSource a() {return new DataSource;}

@Bean("b")
@PropertiesConfiguration("...")
public DataSource a() {return new DataSource;}

@Bean("dynamicDS")
public DataSource dataSource() {new DynamicDataSource(); setMap(asMap(a(), b())); return;}

@Bean
public SqlSessionFactory fac() {return new SqlSessionFactoryBean(dataSource()).getObject();}

@Bean("at")
public TransactionManager ma() {
return new TransactionManager(a());
// return new TransactionManager(dataSource()); //这种就会出现我在 #3 写的那种情况
}
}

@Service
class Service {
@Autowired
ADao aDao;
@Transactional(transaction="at", rollbackFor=RuntimeException.class)
public void insert() {
aDao.insert();
throw new RuntimeException();
}
}

@Mapper
interface aDao{
@DataSource("a") //自定义注解,aop 会动态选择 a 数据源
@Insert("......")
int insert();
}

@SpringbootTest
class Test() {
@Autowired
Service aService;

@Junit.Test
void test() {
aService.insert();
}
}

大概就是这个意思的代码吧。
2018-12-18 12:22:03 +08:00
回复了 ukipoi 创建的主题 Java 请教一下 Java MVC 设计里业务层的'业务'是什么?
简单的比如把数据库的 0 变成字符串的女 类似这种吧。。
2018-12-18 11:16:10 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
楼上应该是 DataSourceTransactionManager 不是 DataSourceManager。 打错了
2018-12-18 11:15:00 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
@abcbuzhiming 对 最开始想弄成一个事务管理器。大概如这中 retrun new DataSourceManager(dynamicDataSource)。
然后就会出现我在 #3 出现的那种错误。
后来我干脆就创建两个 DataSourceManager 的 bean。 比如分别指定 beanName 为 A, B。
然后在 service 层比如我用到 ADao 类。 就使用 @Transactional(transactionManager="A", rollbackFor=xxx.class)
并在 service 层抛出相应异常,但是不能回滚。我 debug 跟断点是
TransactionInterceptor.invoke(MethodInvocation) ---->
TransactionAspectJSupport.invokeWithinTransaction(Method, Class, final InvocationCallback) ----> TransactionAspectJSupport.completeTransactionAfterThrowing(TransactionInfo, Throwable)
看到了代码执行了
txInfo.getTransactionManager().rollback(txInfo.getTransactionStatus());
这一行 。并且是正常执行(这行没有出现异常)。但是事务就是没有回滚,想不明白为什么。难道我插入数据时使用的连接,和抛出异常事务回滚时的连接不一样?
2018-12-18 10:15:52 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
@helloZwq 事务呢?怎么加的
2018-12-18 10:15:22 +08:00
回复了 choice4 创建的主题 Java 多数据源和事务
@abcbuzhiming
/*
如果你再 service 层用了 @Transactional,那你就要保证这个 service 里调用的 mapper 都是一个库的
*/
我是在 service 层用了 @Transactional, 同时我在测试的时候也保证了这个 service 中的 mapper 都是一个库的,并且手动抛出了异常。 但是不行。因为是根据 dao 层方法上的注解去选择数据源。但是事务的开启是在 service 层, 但是开启一个事务又需要有确定的数据源。由于现在数据源还没有确定下来,也就是 AbstractRoutingDataSource 里面那个 determinkey 方法还没有执行,动态数据源还没有确定下来,(即开启事务的 aop 先于动态选择数据源的 aop 执行了)就出现了如下错误:
Could not open JDBC Connection for transaction; nested exception is java.lang.IllegalStateException: Cannot determine target DataSource for lookup key [null]
就是这样了。不知道有没有说明白
2018-12-14 11:20:16 +08:00
回复了 choice4 创建的主题 Java Java 为什么会这样
@lurenw 3q
1  2  3  4  5  6  7  8  9  10 ... 15  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5568 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 06:48 · PVG 14:48 · LAX 22:48 · JFK 01:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.