为什么同一个service下的synchronized方法调用另一个@Transaction方法,并发还会产生脏读,错误数据?

如下:a同步方法调用b事务方法,自己尝试过还是会出现脏数据。不知道为什么,必须要调用另一个service层的另一个b方法才能保证不产生脏数据。

@Service 
class aaa{

    public synchronized void a(){
        b();
    }

    @Transactional(rollbackFor = Exception.class)
    public void b() throws Exception {
        //...
    }

}

2个回答

这个就是你对声明式事务有一定的了解,spring只会对有@Transaction注解的方法进行代理,对没有这个注解的方法不会进行代理。
由于你的a方法没有声明事务支持,所以a在进行调用时使用的是this,而不是代理对象,事务自然不会生效。

xiaoming120915
MLi_hb 回复迷失d_e章鱼: 至于你的并发逻辑,由于看不到上下文代码,所以我不知道什么原因,但是事务方面我上面已经说了,如果还不明白,建议你去了解一下spring声明式事务的原理
11 个月之前 回复
a526059967
迷失d_e章鱼 回复xiaoming120915: 我的疑惑主要是为什么会造成这样的情况,是否会出现脏数据我都尝试过的。是不知道专业的解析说明。并且是基于synchronized+@Transaction为什么会影响到并发处理
11 个月之前 回复
xiaoming120915
MLi_hb 回复迷失d_e章鱼: 你可以把a方法中的synchronized 同步控制去掉,然后在a方法上加上@Transaction注解,然后尝试是否还会出现脏数据
11 个月之前 回复
xiaoming120915
MLi_hb 回复迷失d_e章鱼: spring的声明式事务是借助AOP实现的,AOP是通过动态代理实现的。正常情况下a调用b是通过aaa@Proxy调用,但是你这里是this调用,事务是不会生效的。
11 个月之前 回复
a526059967
迷失d_e章鱼 是a调用使用事务的b,实际上所有的业务操作,增删改查都在开启事务的b方法内,但是还是会出现脏数据。是这个意思
11 个月之前 回复

第一个回答已经解释的很明白,如果还不懂可以看看这边的文章事务不生效解析

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
synchronized不能保证原子性吗?
看到书上对于原子性的定义是这样:不会有中间状态存在,要么什么都没改变,要么全都改变。那既然synchronized保证了原子性,(方法执行完在刷回主存)那为什么我其他线程能读取到同步代码块的中间状态?
Java线程中synchronized 使用?
挂起方法hangUP,如果不加synchronized,恢复后,后面的println为什么不能执行。 public class Example8_12{ public static void main(String args[]){ MyThread thread=new MyThread(); thread.setName("张三"); thread.start(); while(thread.getStop()==false){} System.out.println("我是主线程,负责恢复"+thread.getName()+"线程"); thread.restart(); } } class MyThread extends Thread{ int number=0; boolean stop=false; boolean getStop(){ return stop; } public void run(){ while(true){ number++; System.out.println(Thread.currentThread().getName()+"的number="+number); if(number==3){ try{ System.out.println(Thread.currentThread().getName()+"被挂起"); stop=true; hangUP(); System.out.println(Thread.currentThread().getName()+"恢复执行"); } catch(Exception e){} } try{Thread.sleep(1000);} catch(Exception e){} } } public synchronized void hangUP() throws InterruptedException{ wait(); } public synchronized void restart(){ notifyAll(); } } ![图片说明](https://img-ask.csdn.net/upload/202001/06/1578280121_823024.jpg) 不加synchronized: public class Example8_12{ public static void main(String args[]){ MyThread thread=new MyThread(); thread.setName("张三"); thread.start(); while(thread.getStop()==false){} System.out.println("我是主线程,负责恢复"+thread.getName()+"线程"); thread.restart(); } } class MyThread extends Thread{ int number=0; boolean stop=false; boolean getStop(){ return stop; } public void run(){ while(true){ number++; System.out.println(Thread.currentThread().getName()+"的number="+number); if(number==3){ try{ System.out.println(Thread.currentThread().getName()+"被挂起"); stop=true; hangUP(); System.out.println(Thread.currentThread().getName()+"恢复执行"); } catch(Exception e){} } try{Thread.sleep(1000);} catch(Exception e){} } } public void hangUP() throws InterruptedException{ wait(); } public synchronized void restart(){ notifyAll(); } } ![图片说明](https://img-ask.csdn.net/upload/202001/06/1578280328_552003.jpg) ``` ```
Springmvc在线程池中无法使用Service
问题:我在项目中使用线程池新建了线程列队,controller请求后把耗时任务交给列队处理, 列队中需要service注入,但是在Test中测,子线程无法使用service的方法,代码如下: TaskQueueHandler.java ``` public interface TaskQueueHandler { String getTaskName(); int doInvoke(); } ``` TaskSerialQueueService.java ... ``` @PostConstruct public void init(){ serviceThreadStatus=service.submit(new Thread(new Runnable() { @Override public void run() { while (running){ try{ TaskQueueHandler taskQueueHandler= tasks.take(); if(taskQueueHandler!=null){ try{ taskQueueHandler.doInvoke(); }catch (Exception e){ log.error(taskQueueHandler.getTaskName()+" doInvoke Error!",e.getCause()); } } }catch (InterruptedException e){ running=false; } } } })); } /** * 往列队中添加新任务 * @param taskQueueHandler * @return */ public synchronized boolean addTask(TaskQueueHandler taskQueueHandler){ if(!checkServiceIsActive()){ activeService(); } boolean success= tasks.offer(taskQueueHandler); if(!success){ log.warn(taskQueueHandler.getTaskName()+"任务列队添加失败!"); } return success; } ``` ... WxPayNotifyTask.java ``` public class WxPayNotifyTask implements TaskQueueHandler{ private String orderNo; public WxPayNotifyTask(String mOrderNo){ this.orderNo=mOrderNo; } @Override public String getTaskName() { return WxPayNotifyTask.class.getSimpleName(); } private OrderService orderService; @Override public int doInvoke() { System.out.println("orderNo="+orderNo); orderService= (OrderService)SpringUtils.getBean("orderService"); try{ OrderBean orderBean=orderService.queryByOrderNo(orderNo); System.out.println(orderBean.toString()); }catch (Exception e){ e.printStackTrace(); } return 0; } } ``` 测试代码中调用 ``` @Autowired private TaskSerialQueueService taskQueueService; taskQueueService.addTask(new WxPayNotifyTask("379991638464417792")); ``` 测试发现报错信息如下 ``` org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: interrupt at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:289) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:461) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) at com.superior.chalk.service.order.OrderServiceImpl$$EnhancerBySpringCGLIB$$d45a5b10.queryByOrderNo(<generated>) at com.superior.chalk.task.WxPayNotifyTask.doInvoke(WxPayNotifyTask.java:27) at com.superior.chalk.task.queue.TaskSerialQueueService$1.run(TaskSerialQueueService.java:35) at java.lang.Thread.run(Thread.java:745) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLException: interrupt ``` 最后发现如直接在test中使用 new WxPayNotifyTask("379991638464417792").invoke()是可以使用service的,但是在子线程中能获取到service但调用service的方法就报错。 先谢谢各位大佬帮忙分析分析!
synchronized 在分布式下为什么会失效?
我的理解是因为分布式是部署在很多个机器上 多个机器上都有相同的代码运行,而synchronized 方法的监听对象是调用该方法的本身,也就是多个机器上都有可能同时调用这个方法,所以就会失效,然而我百度了一阵子发现貌似并不会这个原因,求大佬解答
Java锁:synchronized和lock
如果同一个对象有两个方法会对同一个资源p进行操作,一个方法用synchronized修饰,另一个方法用lock,这个资源p有被锁住吗 就比如一个set方法用syn,一个get方法用lock,然后一个线程去set,一个线程去get,会出现什么情况
synchronized方法发生异常
被synchronized关键字修饰的方法内部如果发生异常、那么synchronized会不会释放 对象锁啊、如果释放那么java是如何知道要释放锁的、是不是jvm有个监控机制啊、求解答?
调用UITableView reloadData需要@synchronized吗?
我有很多线程并发调用UITableView的reloadData方法。是不是需要@synchronized块?
通俗易懂的讲一下synchronized底层原理?
通俗易懂的讲一下synchronized底层原理???????????
Synchronized同步问题
一个类有两个方法都是用Synchronized修饰的,有两个线程同时访问这两个方法,就是一人访问一个方法,不是访问同一个方法,那他的访问过程是怎么样的
关于synchronized修饰的方法的问题?
synchronized修饰的方法,是只有一个线程执行该方法,假设两个对象同时调用了这个方法,算是两个线程吗?这两个对象对这个方法的操作会相互阻塞吗?
关于Synchronized的原子性与可见性问题
从CSDN的某N篇博客上看到,当执行synchronized代码块时,会经历一下几个步骤:1 获得同步锁 2 清空工作内存 3 从主存拷贝变量副本到工作内存 4 对这些变量计算 5 将变量从工作内存写回到主存 6 释放锁 但是如果这么说的话我就有疑问了 ``` class test{ public static void main(String[] args) { test2 test2 = new test2(); //此时a可能并没有从本地副本中刷新到主内存 test2.a = 5; synchronized (test.class) { //清空工作空间的值,也就是把a清除 //从内存中重新读取a的值,a应该为0啊,为什么是5? System.out.println(test2.a); } System.out.println(test2.a); } } class test2{ public int a = 0; } ```
java synchronized修饰的方法中调用sleep竟然产生这样的输出?!
``` package com.imooc.bank; //银行类 public class Bank { private String account; private int balance; public Bank(String account, int balance) { this.account = account; this.balance = balance; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public int getBalance() { return balance; } public void setBalance(int balance) { this.balance = balance; } @Override public String toString() { return "Bank [账号:"+account+", 余额:"+balance+"]"; } //存款 public synchronized void saveAccount() { int balance = getBalance(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } balance += 100; setBalance(balance); System.out.println("存款后的账户余额为:"+balance); } //取款 public void drawAccount() { int balance = getBalance(); balance -= 200; try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } setBalance(balance); System.out.println("取款后的账户余额为:"+balance); } } ``` ``` package com.imooc.bank; //取款线程 public class DrawAccount implements Runnable{ private Bank bank; public DrawAccount(Bank bank) { this.bank = bank; } @Override public void run() { bank.drawAccount(); } } ``` ``` package com.imooc.bank; //存款线程 public class SaveAccount implements Runnable{ private Bank bank; public SaveAccount(Bank bank) { this.bank = bank; } @Override public void run() { bank.saveAccount(); } } ``` ``` package com.imooc.bank; //测试类 public class Test { public static void main(String[] args) { Bank bank = new Bank("1001", 1000); SaveAccount sa = new SaveAccount(bank); DrawAccount da = new DrawAccount(bank); Thread save = new Thread(sa); Thread draw = new Thread(da); save.start(); draw.start(); try { save.join(); draw.join(); } catch (InterruptedException e) { e.printStackTrace(); } //加join是为了让下面这条语句最后输出 System.out.println(bank); } } ``` 为啥会产生这样的输出? 取款后的账户余额为:800 存款后的账户余额为:1100 Bank [账号:1001, 余额:1100] 如果我把saveAccount方法也用synchronized修饰的话就会正常输出。 存款后的账户余额为:1100 取款后的账户余额为:900 Bank [账号:1001, 余额:900] 是sleep的原因导致调用这个public synchronized void saveAccount() 方法的线程被阻塞, 然后被别的线程占用了cpu吗? 不是说synchronized修饰的方法调用过程中不会被别的线程打断吗? 求大神解答!!
synchronized java “同步”
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。 知道synchronized是干什么的了,但还是不理解“同步”二字表示什么意思?与其作用关联不到一起; synchronized是用来控制线程不能同步的,多个线程不能同时执行某段代码的步骤,应该是这样理解的吧?
【C#】一个Http请求1个对象如何实现,1个线程1个对象又如何实现?Lock与Synchronized,Callcontext 与 ThreadStatic这些有什么区别。
一个Http请求1个对象如何实现,1个线程1个对象又如何实现?Lock与Synchronized 属性,Callcontext 与 ThreadStatic这些有什么区别。
java synchronized 线程
![方法名称](https://img-ask.csdn.net/upload/201604/28/1461815407_828605.png) 目前的我的这个同步方法是这样的,我查阅的一些资料是解释: synchronized()作用是:防止多个线程同一时间调用此代码块或者方法. 如果我多台服务器上的 tomcat ,在执行到这个方法的时候是什么情况?
synchronized实现同步下载,是写在方法上还是写在函数内?
安卓synchronized(this)是什么意思?和synchronized写在方法上的差异是什么?
EJB3.0中bean管理并发的单例bean,方法是同步的,为什么还会有并发调用情况?
@LocalBean @Singleton @ConcurrencyManagement(ConcurrencyManagementType.BEAN) @Stateless public class LoanLocalBean{ public synchronized void settleLoan(String employeeId, String loanId) { //业务逻辑 } } 本地和测试环境上,同一时间只有一个线程在执行settleLoan的方法,也就是多线程同时调用的情况下,线程是顺序调用settleLoan方法的,即A执行完,B才执行等等。但是生产环境上,居然是多个线程同时在执行settleLoan方法,希望有高手指点,我的理解是这种情况不可能发生的,求助!!!!
springboot hibernate整合问题
在一个service方法中调用sessionFactory.getCurrentSession()的时候报如下异常Could not obtain transaction-synchronized Session for current thread 网上查询报错原因是说必须加@Transactional(readOnly = true),按说明加确实是可以解决。但是这个service方法仅仅是一个查询,不想用事务方式,能否在不写@Transactional(readOnly = true)情况下正常获取session,并进行查询。不想为每个查询service都加@Transactional(readOnly = true), 也不想用openSession方式。 非常感谢,如解决追加分数
安卓下载synchronized的问题
为什么加上synchronized下载会导致线程失效?如果不用synchronized的话,那么如何同步多线程?
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
小白如何学习java?
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
前言 GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 上周给大家分享了一篇10个让你笑的合不拢嘴的Github项目,而且还拿了7万+个Star哦,有兴趣的朋友,可以看看, 印象最深刻的是 “ 呼吸不止,码字不停 ”: 老实交代,你是不是经常准备写个技术博客,打开word后瞬间灵感便秘,码不出字? 有什么
推荐几款比较实用的工具,网站
1.盘百度PanDownload   这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风......) 不要去某站买付费的......   PanDownload下载地址   2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了     bejson网站   3.二维码美化 这个网站的二维码美化很好看,网站界面
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问