c3p0死锁的问题求高手解决

由于使用的是hibernate的事务所以每执行一次sql语句就会提交,并发量较大,在执行插入的时候,会出现连接池死锁的情况
Feb 6, 2015 4:06:57 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
网上的很多配置都改了将 设为0,
SELECT 1

这些都配了还是不行

求大虾指教,新手实在没分T-T

sql语句的提交是
public void doTransSqlByJDBC(String jdbcName,final String sql,final List params) {
this.getRealTemplate(jdbcName).execute(new HibernateCallback() {
public Object doInHibernate(Session session)throws HibernateException, SQLException {
Transaction tx=session.getTransaction();
tx.begin();
SQLQuery sq = createSQLQuery(session, sql, params);
sq.executeUpdate();
tx.commit();
session.close();
return null;
}
});
}
是用的hibernate的事时没用spring,但是插入的数据量比较大,是不停的向数据库里插入数据
不知道为什么会死锁,理论上用过的之后的Connection在close之后会放回连接池中,而且我插入sql语句时又是单线程的,不知道为什么会死锁

c3p0的配置是
    <property name="driverClass" value="${jdbc.AppTencentCollection_BC_driverClassName}" />
    <property name="jdbcUrl" value="${jdbc.AppTencentCollection_BC_url}" />
    <property name="user" value="${jdbc.AppTencentCollection_BC_username}" />
    <property name="password" value="${jdbc.AppTencentCollection_BC_password}" />

   <!--连接池中保留的最小连接数。-->  
    <property name="minPoolSize" value="5"/>  
    <!--连接池中保留的最大连接数。Default: 15 -->  
    <property name="maxPoolSize" value="500"/>  
    <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->  
    <property name="initialPoolSize" value="10"/>  
    <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->  
    <property name="maxIdleTime" value="60"/>  
    <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->  
    <property name="acquireIncrement" value="5"/>  
    <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements  
                        属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。  
                        如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->  
    <property name="maxStatements" value="0"/>
    <property name="maxStatementsPerConnection" value="0"/>  
    <!--连接池用完时客户调用getConnection()后等待获取连接的时间,单位:毫秒。超时后会抛出-->  
    <!--SQLEXCEPTION,如果设置0,则无限等待。Default:0-->  
    <property name="checkoutTimeout" value="90000"/>
    <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->  
    <property name="idleConnectionTestPeriod" value="60"/>  
    <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->  
    <property name="acquireRetryAttempts" value="30"/>  
    <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效  
                          保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试  
                          获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->  
    <property name="breakAfterAcquireFailure" value="false"/>  
    <!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的  
                              时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable  
                              等方法来提升连接测试的性能。Default: false -->  
    <property name="testConnectionOnCheckout" value="false"/>  
    <property name="preferredTestQuery">
        <value>SELECT 1</value>
     </property> 

1个回答

没看到具体代码,不知道你是不是这种情况还是说是数据库的锁结果引起的
http://blog.sina.com.cn/s/blog_53923f940100g6as.html

看看这对你有没有用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c3p0死锁问题,DEADLOCK!!!
环境是tomcat7 mysql5.6.33 jdk1.7 首先项目部署到tomcat中可以直接启动,用的是本机的mysql数据库, 但是在eclipse中运行项目就报c2p0死锁。修改了连接数也不管用。而且我重装了mysql也不行。eclipse和tomcat用的都是同一个mysql数据库。eclipse重新安装也还是这样子,求高手指导。 十一月 29, 2017 4:03:25 下午 org.apache.catalina.core.StandardEngine startInternal 信息: Starting Servlet Engine: Apache Tomcat/7.0.70 十一月 29, 2017 4:03:25 下午 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom 信息: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [105] milliseconds. 十一月 29, 2017 4:03:27 下午 org.apache.catalina.startup.TldConfig execute 信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 十一月 29, 2017 4:03:27 下午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["http-bio-8080"] 十一月 29, 2017 4:03:27 下午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["ajp-bio-8009"] 十一月 29, 2017 4:03:27 下午 org.apache.catalina.startup.Catalina start 信息: Server startup in 1988 ms 16:03:27,866 INFO [JForumBaseServlet ] Starting JForum. Debug mode is true 16:03:27,873 INFO [ConfigLoader ] Using cache engine: net.jforum.cache.DefaultCacheEngine 16:03:27,876 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.BBCodeRepository 16:03:27,878 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.RankingRepository 16:03:27,880 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.SmiliesRepository 16:03:27,881 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.ForumRepository 16:03:27,884 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.TopicRepository 16:03:27,887 INFO [ConfigLoader ] Creating an instance of net.jforum.SessionFacade 16:03:27,888 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.PostRepository 16:03:27,889 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.Tpl 16:03:27,891 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.RolesRepository 16:03:27,891 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.SecurityRepository 16:03:27,893 INFO [ConfigLoader ] Creating an instance of net.jforum.repository.BanlistRepository 16:03:27,951 INFO [FileMonitor ] Watching J:\tool\eclipse_mars\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\JForumBBS/WEB-INF/config/languages/en_US.properties 16:03:27,953 INFO [FileMonitor ] Watching J:\tool\eclipse_mars\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\JForumBBS/WEB-INF/config/languages/zh_CN.properties 16:03:27,969 INFO [ConfigLoader ] Loading JDBC driver net.jforum.dao.mysql.MysqlDataAccessDriver 16:03:28,026 INFO [FileMonitor ] Watching J:\tool\eclipse_mars\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\JForumBBS/WEB-INF/config/database/generic/generic_queries.sql 16:03:28,026 INFO [FileMonitor ] Watching J:\tool\eclipse_mars\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\JForumBBS/WEB-INF/config/database/mysql/mysql.sql 16:03:28,027 INFO [FileMonitor ] Watching J:\tool\eclipse_mars\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\JForumBBS/WEB-INF/config/SystemGlobals.properties 16:03:28,102 INFO [MLog ] MLog clients using log4j logging. 16:03:28,127 INFO [C3P0Registry ] Initializing c3p0-0.9.1-pre9 [built 23-September-2006 01:47:24; debug? true; trace: 10] 16:03:28,184 INFO [AbstractPoolBackedDataSource] Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 120000, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 650b287f, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 650b287f, idleConnectionTestPeriod -> 3600, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://localhost:3306/jforum?user=root&password=root&autoReconnect=true&useNewIO=false&zeroDateTimeBehavior=convertToNull&useServerPrepStmts=false&dumpQueriesOnException=true&jdbcCompliantTruncation=false&useUnicode=true&characterEncoding=utf8, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 1000, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, preferredTestQuery -> null, properties -> {}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 180, usesTraditionalReflectiveProxies -> false ] 16:03:48,172 WARN [ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@23eb54ea -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! 16:03:48,174 WARN [ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@23eb54ea -- APPARENT DEADLOCK!!! Complete Status: Managed Threads: 3 Active Threads: 3 Active Tasks: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@7dec08b1 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1) com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@132edd0d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0) com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@69b28a51 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2) Pending Tasks: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4897020d com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3207c8b6 Pool thread stack traces: Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main] java.lang.Thread.sleep(Native Method) com.mysql.jdbc.Connection.createNewIO(Connection.java:2828) com.mysql.jdbc.Connection.<init>(Connection.java:1531) com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:120) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:129) com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:862) com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:33) com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1527) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main] java.lang.Thread.sleep(Native Method) com.mysql.jdbc.Connection.createNewIO(Connection.java:2828) com.mysql.jdbc.Connection.<init>(Connection.java:1531) com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:120) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:129)
关于现代操作系统死锁的问题
今天做老师布置的关于现代操作系统“死锁”的作业,遇到了一个问题。具体问题如下: ![图片说明](https://img-ask.csdn.net/upload/201911/07/1573125518_227412.jpg) 后来我发现当x=2的时候,按照D -> C -> B 的顺序可以运行,但是进程A第五类资源需要3个(即Maximum处第五个为3),可是可用资源为42441,即第五类可用资源只有1个,小于三,这算死锁吗? (然后我去网上找了下别人做的,别人给的答案是x=2,但没解释原因,所以我有点懵逼)
Java编程思想 哲学家问题 为什么为哲学家增加思考的时间,就能缓解死锁的产生?
我十分不解,为什么在Philosopher类中的run()内增加pause()就能让死锁慢一点发生?请大神指教 这个例子中,产生死锁的原因在于,所有的哲学家都拿到了右筷子,却因为拿不到左筷子而陷入循环等待。但这和是否使用pause()有关系吗?可以注意到例子中使用的随机数赋予了种子,也就是说,每次运行得到的结果是一个固定且相同的值,即便是加了pause(),等待哪怕1000秒,当1000秒后,所有的哲学家仍然同时由等待状态转变成了可运行态,接着受到线程调度器分配时间片来驱动,这和等待时间的长短又有什么必然的关系呢???(ps: 我的理解是把种子去掉,不同的哲学家思考的时间不同,进入"拿筷子"阶段的时间不同,**降低同时请求共享资源的可能性**,这样倒是能缓解死锁发生的概率,书上的说法实在是无法理解) 请先避开不谈满足死锁的四个条件。直接讨论这个例子。 ``` /** * 哲学家问题 筷子 */ public class Chopstick { private boolean taken = false; public synchronized void take(int id, String direction) throws InterruptedException{ while(taken) { System.out.println("Philosopher " + id + " waiting " + direction + " chopstick"); this.wait(); } // 现在由新的哲学家持有这根筷子 taken = true; System.out.println("Philosopher " + id + " grabbed " + direction + " chopstick"); } public synchronized void drop() { taken = false; this.notifyAll(); } } ``` ``` /** * 哲学家问题 哲学家 */ public class Philosopher implements Runnable{ private Chopstick left; private Chopstick right; private final int id; private final int ponderFactor; private Random rand = new Random(47); private void pause() throws InterruptedException{ if(ponderFactor == 0) { return; } TimeUnit.MILLISECONDS.sleep(rand.nextInt(ponderFactor * 250)); } public Philosopher(Chopstick left, Chopstick right, int ident, int ponder) { this.left = left; this.right = right; this.id = ident; this.ponderFactor = ponder; } @Override public void run() { try { while(!Thread.interrupted()) { // 为什么加上的等待时间越长,产生死锁的可能性越小? pause(); //System.out.println(this + " beginning eating " + LocalDateTime.now().getNano()); // 哲学家开始变饿 System.out.println(this + " " + "grabbing right"); right.take(id, "right"); System.out.println(this + " " + "grabbing left"); left.take(id, "left"); System.out.println(this + " " + "eating"); pause(); right.drop(); left.drop(); } }catch (InterruptedException e) { System.out.println(this + " " + "exiting via interrupt"); } } public String toString() { return "Philosopher " + id; } } ``` ``` /** * 哲学家问题 演示死锁 */ public class DeadlockingDiningPhilosopher { public static void main(String[] args) throws InterruptedException, IOException { int ponder = 5; if(args.length > 0) { ponder = Integer.parseInt(args[0]); } int size = 5; if (args.length > 1) { size = Integer.parseInt(args[1]); } ExecutorService exec = Executors.newCachedThreadPool(); Chopstick[] sticks = new Chopstick[size]; for(int i = 0; i < size; i++) { sticks[i] = new Chopstick(); } for (int i = 0; i < size; i++) { exec.execute(new Philosopher(sticks[i], sticks[(i+1) % size], i, ponder)); } if (args.length == 3 && args[2].equals("timeout")) { TimeUnit.SECONDS.sleep(5); } else { System.out.println("Press 'Enter' to quit"); System.in.read(); } exec.shutdownNow(); } } ```
修改上面的代码解决哲学家用餐死锁问题
#include<stdio.h> #include<stdlib.h> #include<pthread.h> #include<semaphore.h> #define N 5 sem_t chopstick[N];//筷子信号量 //哲学家线程函数 void* philosopher(void* arg){ int i = (int)arg;//哲学家序号 for(;;){ //思考 printf("[%d] I'm thinking...\n",i); sleep(rand()%3);//休眠随机时间,不超过3秒 //等待筷子 sem_wait(&chopstick[i]); sem_wait(&chopstick[(i+1)%N]); //就餐 printf("\t\t\t[%d]I'm eating...\n",i); sleep(rand()%3);//休眠随机时间,不超过3秒 //放回筷子 sem_post(&chopstick[i]); sem_post(&chopstick[(i+1)%N]); } } int main(){ pthread_t id[N]; int i; for(i=0;i<N;i++) sem_init(&chopstick[i],0,1); for(i=0;i<N;i++) pthread_create(&id[i],NULL,philosopher,(void*)i); for(i=0;i<N;i++) pthread_join(id[i],NULL); }
有大佬帮忙看一下这个死锁怎么形成的吗
按道理主键+RR不会形成死锁啊 ``` InnoDB: * WE ROLL BACK TRANSACTION (1) InnoDB: * (2) WAITING FOR THIS LOCK TO BE GRANTED: InnoDB: * (2) HOLDS THE LOCK(S): InnoDB: * (2) TRANSACTION: InnoDB: InnoDB: * (1) WAITING FOR THIS LOCK TO BE GRANTED: InnoDB: Transactions deadlock detected, dumping detailed information. update examinees set token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9leGFtLmNvZGVwa3UuY29tXC9hcGlcL2V4YW1pbmVlXC9sb2dpbiIsImlhdCI6MTU3NjM3MjE4MCwiZXhwIjoxNjEyMzcyMTgwLCJuYmYiOjE1NzYzNzIxODAsImp0aSI6Im15TGZ6NmhqVFJzYTNjb1EiLCJzdWIiOjg4NCwicHJ2IjoiNDY3MGJjYmM4YzU5NTJjZTdmN2ExZjQ4OTliOTU0YzU1YjU2NDMyZCJ9.pIIe2xY-eh_3_HhUOURdj325sq9Od1koOVPlRKZ6hXM', login_count = 7, last_login_at = '2019-12-15 09:09:40', examinees.updated_at = '2019-12-15 09:09:40' where id = 884 1: len 6; hex 0000003d236f; asc =#o;; 5: len 15; hex 38353836343036304071712e636f6d; asc 85864060@qq.com;; 14: len 30; hex 68747470733a2f2f6578616d2d313235333338363431342e66696c652e6d; asc https://exam-1253386414.file.m; (total 92 bytes); 10: len 18; hex 343431333233323030383130303333343131; asc 441323200810033411;; 14: len 30; hex 68747470733a2f2f6578616d2d313235333338363431342e66696c652e6d; asc https://exam-1253386414.file.m; (total 92 bytes); RECORD LOCKS space id 301 page no 83 n bits 88 index PRIMARY of table exam.examinees trx id 4006767 lock_mode X locks rec but not gap waiting Record lock, heap no 12 PHYSICAL RECORD: n_fields 27; compact format; info bits 0 3: len 9; hex e69d8ee59bbde7909b; asc ;; 25: len 4; hex 5d68cbfc; asc ]h ;; 18: len 24; hex e883a1e88081e5b888e280ad203135333237323433333934; asc 15327243394;; 7: len 30; hex 24327924313024526e656676315a48716755427072383455456c71732e45; asc $2y$10$Rnefv1ZHqgUBpr84UElqs.E; (total 60 bytes); mysql tables in use 1, locked 1 LOCK WAIT 19 lock struct(s), heap size 1136, 8 row lock(s), undo log entries 224 3: len 6; hex e69cb1e888aa; asc ;; 7: len 30; hex 243279243130247756783376524c2e38756457306945644f6e5061734f53; asc $2y$10$wVx3vRL.8udW0iEdOnPasOS; (total 60 bytes); * (1) TRANSACTION: 0: len 4; hex 00000374; asc t;; 13: len 0; hex ; asc ;; 22: len 4; hex 00000008; asc ;; 23: len 4; hex 5df58817; asc ] ;; Record lock, heap no 19 PHYSICAL RECORD: n_fields 27; compact format; info bits 0 8: len 1; hex 01; asc ;; 18: len 24; hex e883a1e88081e5b888e280ad203135333237323433333934; asc 15327243394;; 11: len 1; hex 81; asc ;; 13: len 0; hex ; asc ;; 16: len 1; hex 81; asc ;; 20: len 4; hex 00000000; asc ;; 22: len 4; hex 00000004; asc ;; 24: SQL NULL; 6: len 11; hex 3133383032353838323832; asc 13802588282;; 21: len 30; hex 65794a30655841694f694a4b563151694c434a68624763694f694a49557a; asc eyJ0eXAiOiJKV1QiLCJhbGciOiJIUz; (total 337 bytes); 24: SQL NULL; TRANSACTION 4006767, ACTIVE 1426 sec starting index read 19: len 4; hex 00000013; asc ;; RECORD LOCKS space id 301 page no 28 n bits 88 index PRIMARY of table exam.examinees trx id 4005686 lock_mode X locks rec but not gap waiting Record lock, heap no 19 PHYSICAL RECORD: n_fields 27; compact format; info bits 0 MySQL thread id 10516222, OS thread handle 139667263854336, query id 300969200 *.190 exam updating 10: len 18; hex 343431333233323030383130303333343131; asc 441323200810033411;; 11: len 1; hex 81; asc ;; 12: len 4; hex 00000000; asc ;; 16: len 1; hex 81; asc ;; mysql tables in use 1, locked 1 MySQL thread id 10520696, OS thread handle 139667256985344, query id 301142683 *.190 exam updating 26: len 4; hex 5df58817; asc ] ;; 3: len 6; hex e69cb1e888aa; asc ;; 13: len 0; hex ; asc ;; 10: len 18; hex 343430333034323030383032303230343334; asc 440304200802020434;; 12: len 4; hex 00000000; asc ;; 17: len 1; hex 01; asc ;; 15: len 10; hex 323030382d31302d3033; asc 2008-10-03;; 19: len 4; hex 00000013; asc ;; 20: len 4; hex 00000000; asc ;; 7: len 30; hex 243279243130247756783376524c2e38756457306945644f6e5061734f53; asc $2y$10$wVx3vRL.8udW0iEdOnPasOS; (total 60 bytes); 9: len 30; hex 5b2268747470733a5c2f5c2f6578616d2d313235333338363431342e6669; asc ["https://exam-1253386414.fi; (total 205 bytes); 28 lock struct(s), heap size 3520, 28 row lock(s), undo log entries 1850 26: len 4; hex 5df58817; asc ] ;; 23: len 4; hex 5df5863f; asc ] ?;; 17: len 1; hex 02; asc ;; 26: len 4; hex 5df5863f; asc ] ?;; RECORD LOCKS space id 301 page no 28 n bits 88 index PRIMARY of table exam.examinees trx id 4006767 lock_mode X locks rec but not gap 0: len 4; hex 00000374; asc t;; 4: len 9; hex e69e97e7bfa0e78fa0; asc ;; 15: len 10; hex 323030382d30322d3032; asc 2008-02-02;; TRANSACTION 4005686, ACTIVE 1709 sec starting index read 2: len 7; hex 29000001cf11da; asc ) ;; 8: len 1; hex 01; asc ;; 4: len 9; hex e69e97e7bfa0e78fa0; asc ;; 5: len 15; hex 38353836343036304071712e636f6d; asc 85864060@qq.com;; 9: len 30; hex 5b2268747470733a5c2f5c2f6578616d2d313235333338363431342e6669; asc ["https://exam-1253386414.fi; (total 205 bytes); 18: len 24; hex e883a1e88081e5b888e280ad203135333237323433333934; asc 15327243394;; 6: len 11; hex 3138313239393331303638; asc 18129931068;; 14: len 30; hex 68747470733a2f2f6578616d2d313235333338363431342e66696c652e6d; asc https://exam-1253386414.file.m; (total 92 bytes); update examinees set token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9leGFtLmNvZGVwa3UuY29tXC9hcGlcL2V4YW1pbmVlXC9sb2dpbiIsImlhdCI6MTU3NjM3MzQ1NCwiZXhwIjoxNjEyMzczNDU0LCJuYmYiOjE1NzYzNzM0NTQsImp0aSI6IlhXWmZNSUdNTjVLSTd6U0kiLCJzdWIiOjE2MjYsInBydiI6IjQ2NzBiY2JjOGM1OTUyY2U3ZjdhMWY0ODk5Yjk1NGM1NWI1NjQzMmQifQ.zUGTJnfnGREKzbkASKjVtPVaac_3bMXXUVuDs7vdDKE', login_count = 4, last_login_at = '2019-12-15 09:30:54', examinees.updated_at = '2019-12-15 09:30:54' where id = 1626 1: len 6; hex 0000003d236f; asc =#o;; 2: len 7; hex 29000001cf11da; asc ) ;; 25: len 4; hex 5d68cbfc; asc ]h ;; 6: len 11; hex 3138313239393331303638; asc 18129931068;; 15: len 10; hex 323030382d31302d3033; asc 2008-10-03;; 23: len 4; hex 5df58817; asc ] ;; 0: len 4; hex 0000065a; asc Z;; 11: len 1; hex 81; asc ;; 12: len 4; hex 00000000; asc ;; 15: len 10; hex 323030382d31302d3033; asc 2008-10-03;; 23: len 4; hex 5df58817; asc ] ;; 0: len 4; hex 0000065a; asc Z;; 9: len 30; hex 5b2268747470733a5c2f5c2f736372617463682d776f726b732d31323533; asc ["https://scratch-works-1253; (total 215 bytes); 21: len 30; hex 65794a30655841694f694a4b563151694c434a68624763694f694a49557a; asc eyJ0eXAiOiJKV1QiLCJhbGciOiJIUz; (total 337 bytes); 16: len 1; hex 81; asc ;; 21: len 30; hex 65794a30655841694f694a4b563151694c434a68624763694f694a49557a; asc eyJ0eXAiOiJKV1QiLCJhbGciOiJIUz; (total 339 bytes); 17: len 1; hex 01; asc ;; 4: len 6; hex e983ade99c9e; asc ;; 5: len 15; hex 31323038383438374071712e636f6d; asc 12088487@qq.com;; 19: len 4; hex 00000013; asc ;; 24: SQL NULL; 2: len 7; hex 38000001a3284a; asc 8 (J;; 20: len 4; hex 00000000; asc ;; 25: len 4; hex 5dea312c; asc ] 1,;; ```
sql 事物造成的死锁问题怎么解决
做了个程序,局域网内多个用户进行下面sql事物操作的时候容易出现死锁的情况,使得部分用户户无法插入数据,下面是简化版,大概的意思有了,请问该如何优化修改 begin transaction declare @errorSum int set @errorSum=0 if ((select 1 from Table1 where student_sn=@student_sn) = 1) begin update Table1 set is_chk=0 where student_sn=@student_sn; end else begin insert into Table1 (student_sn) values(@student_sn); end select count(1) from Table1 where user_sn=@user_sn set @errorSum=@errorSum+@@ERROR if @errorSum<>0 begin rollback transaction end else begin commit transaction end
萌新问一个java多线程同步死锁的问题
下面这两段代码,一个实现Runnable接口,一个继承Thread类,前面的能正常交替输出 但是后面继承Thread的运行会死锁,没想明白为什么会死锁,求指教 ``` public class Test3 { static class MyRun implements Runnable { static int i = 0; @Override public synchronized void run() { for (int j = 0; j < 10; j++) { if(i%2==0) System.out.println(Thread.currentThread().getName()+":A"); else System.out.println(Thread.currentThread().getName()+":B"); i++; this.notifyAll(); try { if(i>=19) Thread.sleep(10); else this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) { MyRun myRun = new MyRun(); Thread a = new Thread(myRun); Thread b = new Thread(myRun); a.start(); b.start(); } } ``` ``` public class Test3 { static class MyRun extends Thread { static int i = 0; @Override public synchronized void run() { for (int j = 0; j < 10; j++) { if(i%2==0) System.out.println(Thread.currentThread().getName()+":A"); else System.out.println(Thread.currentThread().getName()+":B"); i++; this.notifyAll(); try { if(i>=19) Thread.sleep(10); else this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) { MyRun m1 = new MyRun(); MyRun m2 = new MyRun(); m1.start(); m2.start(); } } ```
C++中多线程使用临界区域进行互斥,造成死锁,百思不得其解求指点为啥会死锁
C++中多线程使用临界区域进行互斥,造成死锁,百思不得其解求指点为啥会死锁 ``` // 在主界面中显示提示信息 void CIOCPModel::_ShowMessage(const int column,const CString szFormat,...) { // 根据传入的参数格式化字符串 CString strMessage; va_list arglist; // 处理变长参数 va_start(arglist, szFormat); strMessage.FormatV(szFormat,arglist); va_end(arglist); EnterCriticalSection(&m_csTest); // 在主界面中显示 CAA_5Axis_SingleDlg* pMain = (CAA_5Axis_SingleDlg*)m_pMain; if( m_pMain!=NULL ) { //pMain->ShowMsg(strMessage); pMain->AddInformation(strMessage,column); TRACE( strMessage+_T("\n") ); } LeaveCriticalSection(&m_csTest); } ``` 上面的函数,在主线程和由主线程启动的多个子线程中都会被调用,单步跟踪的时候跟着跟着就死锁卡死了,百思不得其解,我有退出临界区啊,为啥还会死锁呢? 求大神解答··· PS:AddInformation(strMessage,column);是在主界面的ListControl中插入一项数据而已;
SpringBoot+JPA死锁问题
SpringBoot+JPA项目中,当遇到线程死锁放弃本次操作继续执行下一操作,而不是让整个程序崩溃掉。 有什么可以实现的方法吗?
jbpm4.4 部署时,发生死锁问题
jbpm中deploy的时候出现死锁问题。 发现数据库中以下三个表被锁定 JBPM4_LOB JBPM4_DEPLOYMENT JBPM4_DEPLOYPROP 然后控制台不断重复打印下面的sql语句,像死循环一样,求解。 网上说加上索引就好了,不知道具体在哪张表哪个字段上加索引呢?求解 Hibernate: select deployment0_.dbid_ as dbid1_43_0_, deployment0_.name_ as name2_43_0_, deployment0_.timestamp_ as timestamp3_43_0_, deployment0_.state_ as state4_43_0_ from jbpm4_deployment deployment0_ where deployment0_.dbid_=? Hibernate: select resources0_.deployment_ as deployment4_43_1_, resources0_.dbid_ as dbid1_1_, resources0_.name_ as name5_1_, resources0_.dbid_ as dbid1_33_0_, resources0_.dbversion_ as dbversion2_33_0_, resources0_.blob_value_ as blob3_33_0_ from jbpm4_lob resources0_ where resources0_.deployment_=? Hibernate: select objectprop0_.deployment_ as deployment2_43_1_, objectprop0_.dbid_ as dbid1_1_, objectprop0_.dbid_ as dbid1_44_0_, objectprop0_.deployment_ as deployment2_44_0_, objectprop0_.objname_ as objname3_44_0_, objectprop0_.key_ as key4_44_0_, objectprop0_.stringval_ as stringval5_44_0_, objectprop0_.longval_ as longval6_44_0_ from jbpm4_deployprop objectprop0_ where objectprop0_.deployment_=?
sql server 2008 r2 出现死锁问题
![图片说明](https://img-ask.csdn.net/upload/201511/04/1446614327_307244.png) 程序每3秒钟查询一次,跑一会会出现这种死锁的问题,求助各位大神。
数据库 事务死锁 问题如何解决
事务1 BEGIN TRAN update T_Users set Money=Money+1 where ID=1001 WAITFOR DELAY '00:00:10' --等待10秒 update T_Users set Money=Money-1 where ID=1000 COMMIT TRAN 事务2 BEGIN TRAN update T_Users set Money=Money+1 where ID=1000 WAITFOR DELAY '00:00:10' --等待10秒 update T_Users set Money=Money-1 where ID=1001 COMMIT TRAN 1001和1000是上下级关系,经常同时互相存取账。造成死锁,如何解决
ORA-00060 死锁问题!!!
今天生产碰到个问题,大致调用情况如下,都是**单表单条记录**操作,不存在不同session对不同记录执行顺序问题: 1、Service1 调用 dao1执行 select for update语句,只是查询不执行update。 2、TransactionSerivice1 调用 dao1执行 select for update语句,并执行update。 3、Service2 调用 dao1执行 select for update语句,只是查询不执行update。 3、Service3 调用 dao1执行 select for update语句,只是查询不执行update。 此时报ORA-00060 死锁。 实在不明白到底怎么引起的死锁,都是**单表单条记录语句**,并且只有TransactionSerivice1中执行对表执行upate操作。Service1、2、3不在事务内,所以 select for update应该不会造成这种问题。求大神解答
PG 日志里面的报了一个死锁
![图片说明](https://img-ask.csdn.net/upload/201909/26/1569469597_718467.jpg) 死锁日志如下, 问题1:这里的ExclusiveLock 和ShareLock 指的是什么锁?![图片说明](https://img-ask.csdn.net/upload/201909/26/1569475828_189778.jpg) 是Exclusive和Share还是AccessExclusive和AccessShare?
MySQL RC隔离级别 单表更新导致的死锁
数据库版本:阿里云RDS 5.7 隔离级别:RC 表结构:`t` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `a` datetime, `b` bigint(20), `c` varchar(255), `d` bigint(20), `e` varchar(50), `f` int(11), PRIMARY KEY (`id`) ); 产生死锁的业务代码(仅贴出伪代码): @Transactional public void update(String s) { for (int i = 1; i < 6; i++) { update t set ... where e = #{s} and f = #{i}; } } 该事务在并发场景下发生死锁,求大神解释一下为什么会死锁?
死锁的问题
public class TestDeadLock{ static Object O1 = new Object (); static Object O2 = new Object (); public static void main(String args[]){ Runner6 T1 = new Runner6(); Runner6 T2 = new Runner6(); T1.flag = false; T1.start(); T2.start(); } } class Runner6 extends Thread{ public boolean flag = true; public void run(){ if(flag){ synchronized(TestDeadLock.O1){ System.out.println("O1锁住了"); try{sleep(1000);}catch(InterruptedException e){} } synchronized(TestDeadLock.O2){ System.out.println("2"); } } else{ synchronized(TestDeadLock.O2){ System.out.println("O2锁住了"); try{sleep(1000);}catch(InterruptedException e){ } } synchronized(TestDeadLock.O1){ System.out.println("1"); } } } } 怎么把这串代码搞成死锁?
quartz deadlocked死锁 的问题
org.quartz.JobPersistenceException: Failure updating scheduler state when checking-in: Transaction (Process ID 63) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. at org.quartz.impl.jdbcjobstore.JobStoreSupport.clusterCheckIn(JobStoreSupport.java:3422) ~[quartz-2.2.3.jar:na] at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3269) ~[quartz-2.2.3.jar:na] at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3874) [quartz-2.2.3.jar:na] at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3911) [quartz-2.2.3.jar:na]
c3p0 没有请求时,debug日志一直输出这句话,好像是监测死锁,这个正常吗
![图片说明](https://img-ask.csdn.net/upload/201711/15/1510709542_883541.png)
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问