数据库连接单例和连接池效率区别在哪?

数据库连接问题。new一个数据库的连接对象是耗时耗资源的,因此不可能对每个请求都做一遍连接创建和关闭的操作,网上给的方法一般采用连接池。我的疑问就是,我如果采用单例模式,
这样的话,如果是多个线程请求数据库操作,那么直接调用静态getInstance方法(对此方法加锁),取得同一个数据库连接对象进行数据库操作,是不是可行的。我的理解是Connection在第一次实例化时,已经确定了它要连接时那个数据库,以后的操作也不会改变这些属性,因此不存在线程安全问题,而针对数据库本身的操作,数据应该也会提供一套同步机制,避免“脏数据”。这样的话,单例模式和池化相比,采用哪种方式更好?

6个回答

如果你是小型应用,保证不会有多线程同时使用这一条连接,那没问题;
多线程用同一条链接肯定是会出问题的,这个你可以自己写代码测试。

连接池的目的是为了减少反复的创建和关闭连接,同时又在一定程度上满足多线程可以分别用多条连接。

建议思考一下servlet采用的单实例多线程机制,单例模式与连接池似乎并不矛盾

数据库应该也会提供一套同步机智(why ? ) 。。事务如何保证?????????? ?

这是两个不同的概念
数据库连接单例是指在你项目运行期间,始终只有一个数据库连接。即这个链接在程序中是复用的
而连接池维持了到数据库服务器的多个物理连接,每当有新的数据库连接请求时,优先使用已存在的空闲的物理连接

显然前者是针对一个项目内部的
而后者是针对多个项目的(当然也适用项目内的多个独立连接)

其实在你频繁使用连接单例时,程序会自动为你建立连接痴,效率的区别在于你对sql的操作频率!

减少连接和销毁时间的消耗

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于异构数据库的连接池?
我们通常讲的数据库连接池都是同一种数据库的连接比如连接同一个oracle的多个数据库连接到池里,现在有遇到有这样的需求,在一个web应用中有些表是要连接sqlite有些表是连接oracle的,具体连那个是根据读取配置文件来的,目前做法是因为数据库连接类型不是固定不变的,数据库连接时根据配置文件产生一个连接然后关闭一个连接。这种做法必然效率低下,可不可以在这种情况下用长连接或数据库连接池那。 [b]问题补充:[/b] to pan_java:问题是我这个web界面还要求管理多库这样不是要配多个数据库连接池 [b]问题补充:[/b] to pjun:你们这种方法为常不可,我现在是用spring管理多数据源,用户login进去后取出每个库里的一小部分数据放在主页面上,数据旁标上库名,用户点那个库就进入那库,一般有5到10库左右,因为设计到数据库连接的切换,所以先前就没用连接池,只是一个管理界面,没有很大用户数量。如何这样每个库都要配连接池,工作量很大的,也不太合理 [b]问题补充:[/b] 这样是不是搞复杂了 [b]问题补充:[/b] to pjun:我现在新增一个库就要修改一个配置文件,如果在tomcat配置数据源的话,每加一个库就要配一个数据源有一点工作量,而且读取数据库时代码和数据源要绑在一起,部署人员还要配置tomcat数据源这又增加了部署难度 [b]问题补充:[/b] to pjun:最后一点tomcat配置的数据源,spring可以管理吗? [b]问题补充:[/b] 已经决定那,把oracle数据库连接和sqlite连接放在一个池里,或维持长连接,这下搞复杂那,要把不同数据库的连接放在数据库里,还要区分oracle和sqlite,有这种可能吗 [b]问题补充:[/b] to pjun:我们这里的大拿也决定那,把oracle数据库连接和sqlite连接放在一个池里,或维持长连接,这下搞复杂那,要把不同数据库的连接放在连接池里,还要区分oracle和sqlite,有这种可能吗 ? oracle数据库连接和sqlite连接放在一个池里这个应该可以实现的,不过从池里拿连接要判断一下
java中数据库连接随用随调好还是传递一个连接好
如题 java中,数据库的连接是传递一个连接直到一次操作全部完成后再释放连接好,还是每次需要的时候获就取一个连接,用完就释放好 在练手的时候想到的,希望大佬解答,另外最好详细一点,这两种方法的优劣、效率、开销 (数据库连接用的是连接池)
连接多个数据库抽取数据
需求如下:每天定时要从多个数据库中抽取数据存到oracle数据库中,有的是sqlserver有的是mysql,用java写如何效率会高一些
pl/sql连接数据库,同一个链接地址,不同用户,当然表不同
pl/sql连接数据库,同一个链接地址,不同用户登录,当然表不同, 如果其中一个数据库连接操作起来,浏览器响应或者项目启动都很慢, 那么换另一个用户登录就能快点嘛?(都是同一连接地址),想了接一下数据库 性能怎么样才能提高效率!跟公司vpn等等有什么具体联系没,除学者希望详细介绍一下,谢谢 比如一下 [图片说明](https://img-ask.csdn.net/upload/201804/02/1522633509_352357.png) ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522633547_489431.png)
java:导入excel并校验数据的效率问题
导入1000行的数据,第一次用windows系统下的oracle数据库,每校验一条数据执行时间为0.003秒;第二次用linux系统下的oracle数据库,每校验一条数据执行时间为0.3秒。linux系统下的数据库数据量较多,但只查一次用时0.5秒(以后999行记录不再查数据库),查询出来的结果集与windows下的结果集一样(两条数据)。这两次除上述数据库环境不同外(只改了连接数据库的配置文件),其他因素均一样(自己的机器测试,windows系统,两次执行的代码一样),为什么效率会差这么多呢?
求大神帮忙,谢谢,java连接数据库向表中添加数据两种方式效率的比较
import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; import java.util.Properties; public class PreparedStatementTest { private String driver; private String url; private String user; private String pass; public void initParam(String paramFile)throws Exception{ Properties props = new Properties(); props.load(new FileInputStream(paramFile)); driver = props.getProperty(driver); url = props.getProperty(url); user = props.getProperty(user); pass = props.getProperty(pass); Class.forName(driver); } public void insertUseStatement()throws Exception{ long start = System.currentTimeMillis(); try( Connection conn= DriverManager.getConnection(url,user,pass); Statement stmt = conn.createStatement() ){ for(int i = 0;i < 100; i++){ stmt.executeUpdate("insert into student_id values('姓名"+i+"','姓名"+i+"')"); } System.out.println("使用Statement费时:"+(System.currentTimeMillis()-start)); } } public void insertUsePrepare() throws Exception{ long start = System.currentTimeMillis(); try( Connection conn = DriverManager.getConnection(url,user,pass); PreparedStatement pstmt = conn.prepareStatement("insert into student_id values(?,?)") ){ for(int i = 0;i < 100;i++){ pstmt.setString(i,"姓名"+i); pstmt.executeUpdate(); } System.out.println("使用PreparedStatement费时:"+(System.currentTimeMillis()-start)); } } public static void main(String[] args)throws Exception{ PreparedStatementTest pt = new PreparedStatementTest(); pt.initParam("mysql.ini"); pt.insertUseStatement(); pt.insertUsePrepare(); } } Exception in thread "main" java.lang.NullPointerException at java.util.Hashtable.hash(Hashtable.java:239) at java.util.Hashtable.get(Hashtable.java:434) at java.util.Properties.getProperty(Properties.java:951) at PreparedStatementTest.initParam(PreparedStatementTest.java:17) at PreparedStatementTest.main(PreparedStatementTest.java:54) student_id表示存在的,怎么就报空指针呢?
JDBC对数据库进行读写的优化问题
最近在做一个项目优化的任务,项目用的是SSM,页面上对应的一个按钮,用户点击这个按钮就会 对不同的数据库的几张表进行读写,老大说这块相应速度比较慢,需要改一下,我看了下原来的方式是采用的JDBC创建连接String拼接SQL执行操作。 我目前的想法是将原来的Statement换成效率高的PreparedStatement,拼接SQL采用StringBuilder,想请问一下还有没有其他的优化的方法?
oracle 11g 最大连接数及所需的服务器配置 请有相关经验的 大侠 给予帮助!
为了提高oracle一个实例的最大连接数,以便让单个数据库最大程度的承接访问,同时,又不影响前段的访问效率,请问相关的最大连接数以及需要的服务器硬件配置之间的一个关联,谢谢。
使用hibernate转存数据提升效率的几个问题
hibernate 操作数据库之前建立连接: 1、每操作一次就新建一个新连接完成后关闭 2、建立连接后缓存起来,每次使用前clear一下,整个程序共用一个链接 当操作次数非常多的时候这两种方式那种速率快一些
多线程操作Mysql的问题,如何实现
我现在通过mysql连接池来连接mysql,每个连接需要查询数据库A表的到结果RA, 然后需要查询B表得到结果RB,如果RA和RB满足某一条件,则执行操作O, O操作会影响 RA的结果,该如何做,在互斥量中执行这些sql语句吗?会不会太影响效率? 例子: Table A:报名人数表 Table B : 活动信息表 首先要查A报名了多少人,和B中活动最大人数做比较,如果现在已经超过最大人数了,则 报名失败,否则报名成功,插入A表
寻求:MySQL中dblink的替代方案
我们知道,在 oracle中,可以建立 dblink 以解决 不同 数据库(异域)之间的数据交互问题,在MySQL中有类似的功能吗? 希望达到的目的:在 MySQL 的存储过程中,连接远程数据库,并能做到对远程数据库的 增删改查 操作? 已想到的替代方案:建立辅助数据库,并做 repication,但似乎这样把问题复杂了,有没有更好的办法?请示之。 [b]问题补充:[/b] 补充: 因为需要在已有数据库上 抽取 部分数据,放到另一台机器上做备份,想采用存储过程完成,但操纵远程数据库就成了阻碍。 不考虑效率,用java做一次处理是可以,但如果定时抽取、备份就显得困难多了,那简单的问:备份 已知数据库 的 部分数据 到 另一台 机器上,如何实现? :) [b]问题补充:[/b] kimmking说的导出再导入的方案也想过,因为数据量到时比较大, 导出后导入时,之前导入的数据怎么办?要覆盖就划不来了。 备份希望能能是 增量备份,而据我所知,MySQL可以从日志中做增量备份,但又没办法在日志级别做数据过滤呢?或者 再深思一下,谢谢两位关注! [b]问题补充:[/b] LucasLee说用quartz做job scheduling,这个感觉可行,但又两点需要再思考一下, 1. 能不能做到增量备份(因为数据库中的表结构并不是每个表都有时间戳,所以从表中确定每天备份的范围是不大可能的,难不成要覆盖之前备份好的数据?) 2. 数据量大的情况下,使用java去处理的效率还能接受吗?(虽然是备份,但效率也是注重的,有无相关经验,请示之) 谢谢二位关注,考虑一下我自己的替代方案: 在主数据库(M1)上另建 一个 表结构完全一样的 辅助数据库(M2),远程数据库为 M3,用 存储过程 把数据 定时写到 M2 中,然后 M2 和 M3 做数据同步,尽可畅所欲言 :D [b]问题补充:[/b] LucasLee问为什么写程序?是因为要抽取原始数据库的部分数据做备份,如果全部备份的话 直接选择复制 就没什么问题了。 kimmking分析的对,所以也正在想办法,这个方法难点在于 增量抽取备份 不知如何实现,我提出对每张表写 trigger,每次增、删、改时,同步操作 M2,但这样会影响 M1 的更新效率。 [b]问题补充:[/b] 感谢kimmking和LucasLee的关注,这里做总结,最后我们定的方案是这样的,远程数据库和主数据库做 repication,然后定时 删除数据(逆向,不抽取数据,而是在已有数据的基础上删除数据不要的),这样 我的问题就避免了。3Q :)
爬虫相关,有30多个网站需要爬取,怎么样能提高效率
目前初步的想法是用selenium 来爬取,但是规则不一样可能要写30多个规则,想到一个用数据库连接的方式来节省时间,但是我不会用qaq! 而且有些网站使用了iframe的嵌套反爬,是不是不能使用一个爬虫解决? 有大神出来答疑解惑吗 ,球球了呜呜。
EF效率为什么捉摸不定?
**先说一下背景** 1、网站类型:wcf服务 2、框架:.NET Framwork 4.0 3、EF版本:EntityFramework.6.2.0 4、数据库:SQL Server 2008 R2 **表内数据500万+,一个普通的查询,带表连接(join),带分页(skip take),具体先不管这个查询怎么写的,因为神奇之处好像和查询本身并没有太大关系了,这个查询的作用是以管理员的ID为条件查询订单列表,表现为以下特点:** 1、有的用户很快(毫秒级),有的用户很慢(30秒超时) 2、慢的用户的订单并不是都比快的用户的订单多(此处毫无规律,有的用户订单很少,反而很慢) 3、使用Sql server Profiler可以跟踪到慢语句,Duration确实是30秒+ 4、把跟踪到的慢语句拷到查询分析器里执行,结果是毫秒级,也就是说只有在程序里慢 5、我发现语句执行的快慢和分页有关系,都是查询第一页的情况下,30条一页(take(30))就慢,29条一页就快(take(29)),关键问题是31条一页也快 _有没有大牛可以给一些指导意见,造成此问题的原因大概可能是什么,或者朝哪个方向寻找思路和解决方案,谢谢_
c3p0 连接不释放 请路过的大神过来看看
配置文件如下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:annotation-config /> <!-- 打开Spring的Annotation支持 --> <!-- 设定Spring 去哪些包中找Annotation --> <context:component-scan base-package="com.myd" /> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${driverClass}" /> <property name="jdbcUrl" value="${jdbcUrl}" /> <property name="user" value="${username}" /> <property name="password" value="${password}" /> <!-- 配置连接池的初始值 --> <property name="acquireIncrement" value="${acquireIncrement}" /> <property name="maxPoolSize" value="${maxPoolSize}" /> <property name="minPoolSize" value="${minPoolSize}" /> <property name="initialPoolSize" value="${initialPoolSize}" /> <property name="maxIdleTime" value="${maxIdleTime}" /> <property name="checkoutTimeout" value="${checkoutTimeout}" /> <property name="autoCommitOnClose" value="${autoCommitOnClose}"></property> <property name="acquireRetryDelay" value="${acquireRetryDelay}" /> <property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}"></property> <property name="maxStatements" value="${maxStatements}"></property> <property name="numHelperThreads" value="${numHelperThreads}"></property> </bean> <!-- 导入src目录下的c3p0.properties文件 --> <context:property-placeholder location="classpath:c3p0.properties" /> <!--创建Spring的SessionFactory工厂 --> <!-- 如果使用的是Annotation的方式,不能使用LocalSessionFactoryBean,而应该使用 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource" /> <!-- 设置Spring取那个包中查找相应的实体类 --> <property name="packagesToScan"> <value>com.myd.entity</value> </property> <property name="hibernateProperties"> <!-- <value> hibernate.dialect=org.hibernate.dialect.HSQLDialect </value> --> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.autoReconnect">true</prop> <prop key="jdbc.use_scrollable_resultset">false</prop> <prop key="hibernate.connection.release_mode">after_statement</prop> <prop key="hibernate.c3p0.validate">true</prop> <prop key="hibernate.c3p0.idle_test_period">30</prop> <prop key="hibernate.c3p0.timeout">30</prop> <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop> </props> </property> </bean> <!-- 开启HibernateTemplate,并且为其注入SessionFactory 使用HibernateTemplate不太方便的就是要获取session得通过getSessionFactory()方法获取 --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 配置Spring的事务处理 --> <!-- 创建事务管理器 --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 配置AOP,Spring是通过AOP来进行事务管理的 --> <aop:config> <!-- 设置pointCut表示哪些方法要加入事务处理 --> <!-- 以下的事务是声明在DAO中,但是通常都会在Service来处理多个业务对象逻辑的关系,注入删除,更新等,此时如果在执行了一个步骤之后抛出异常 就会导致数据不完整,所以事务不应该在DAO层处理,而应该在service,这也就是Spring所提供的一个非常方便的工具,声明式事务 --> <aop:pointcut id="allMethods" expression="execution(* com.myd.service.*.*(..))" /> <!-- 通过advisor来确定具体要加入事务控制的方法 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="allMethods" /> </aop:config> <!-- 配置哪些方法要加入事务控制 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <!-- 让所有的方法都加入事务管理,为了提高效率,可以把一些查询之类的方法设置为只读的事务 --> <tx:method name="*" propagation="REQUIRED" read-only="true" /> <!-- 以下方法都是可能设计修改的方法,就无法设置为只读 --> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="5" /> <property name="maxPoolSize" value="50" /> <property name="queueCapacity" value="1000" /> <property name="keepAliveSeconds" value="60" /> </bean> </beans> 这是事务 package com.myd.dao.impl; import java.lang.reflect.ParameterizedType; import java.sql.SQLException; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.transform.Transformers; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.myd.dao.BaseDao; /** * 可以考虑把所有公共的方法都写在baseDAo中,让所有的DAO都继承BaseDao * 这样基本上就实现了大量的基础方法,如果DAO中有逻辑处理特殊的方法,再在具体的实现类中的DAO中创建 * * @author Administrator * * @param <T> */ @Repository("baseDaoImpl") public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { /** * 此处不能使用setSessionFactory注入,因为setSessionFactory在HibernateDaoSupport * 中已经定义了而且还是final的,不能被覆盖 * * @param sessionFactory */ @Resource(name = "sessionFactory") public void setSuperSessionFactory(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); } /** * 创建Class的对象来获取泛型的class */ private Class<Object> clz; @SuppressWarnings("unchecked") public Class<Object> getClz() { if (clz == null) { // 获取泛型的Class对象 clz = (Class<Object>) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } return clz; } public void add(T t) { getHibernateTemplate().getSessionFactory().openSession(); getHibernateTemplate().save(t); getHibernateTemplate().getSessionFactory().close(); } public void delete(int id) { getHibernateTemplate().getSessionFactory().openSession(); getHibernateTemplate().delete(load(id)); getHibernateTemplate().getSessionFactory().close(); } @SuppressWarnings("deprecation") public void update(T t) { try { getHibernateTemplate().getSessionFactory().openSession() .connection().prepareStatement("SET SQL_SAFE_UPDATES=0") .execute(); } catch (DataAccessResourceFailureException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } getHibernateTemplate().update(t); getHibernateTemplate().getSessionFactory().close(); } 现在的问题是 运行一段时间后,就卡起, 不是报连接数据库关闭 就是 返回空指针 查了以下是连接未释放导致的,我想请教下各位大神 我这样连接没关闭并回到连接池吗?
Statement executeBatch()批量提交效率好低 求高手答疑
数据大概一共有10W条左右,不固定, 每条sql固定格式都不太一样, 分别是对不同的表做的新增或则修改的操作 所以无法用模板?的形式操作 下面是代码 其中设置的是每1000条数据提交一次 然后这1000条数据却需要大概12S左右, 整个数据跑下来十几分钟 如果是每3000条提交一次,时间也大概是40S左右, 感觉不应该这么慢啊 数据库为Oracle.. 求高手指点一下优化方案 ```java Session session = baseDAO.getSessionFactory().openSession(); Connection conn = session.connection(); Statement stmt = null; try { conn.setAutoCommit(false); // 关闭自动提交 stmt = conn.createStatement(); for(int i=0; i<sqlList.size(); i++){ stmt.addBatch(sqlList.get(i)); //System.out.println(sqlList.get(i)); if (i % 1000 == 0 && i != 0) { long startTime = System.currentTimeMillis(); stmt.executeBatch(); conn.commit(); stmt.clearBatch(); System.out.println("executeBatch 执行使用了 :"+(System.currentTimeMillis() - startTime )/1000 + " 秒"); } } // 执行批处理语句 stmt.executeBatch(); // 执行剩下的不到1000条的数据 conn.commit(); conn.setAutoCommit(true);//在把自动提交打开 } catch (SQLException he) { he.printStackTrace(); try { conn.rollback(); } catch (SQLException e) { e.printStackTrace(); } } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException sqlex) { System.err.println(this.getClass().getName() + ".mymethod - 不能关闭数据库连接: " + sqlex.toString()); } } if (conn != null) { try { conn.close(); } catch (SQLException sqlex) { System.err.println(this.getClass().getName() + ".mymethod - 不能关闭数据库连接: " + sqlex.toString()); } } session.close(); } ```
DruidDataSource 配置mysql,启动报错,求大神指点
地址信息: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/order?characterEncoding=UTF-8 jdbc.username=root jdbc.password=123456 jdbc.initSize=5 jdbc.maxActive=10 jdbc.maxIdle=5 jdbc.minIdle=2 jdbc.maxWait=1000 <!-- 配置数据源 --> <bean id="dataSourceone" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <!-- 数据库基本信息配置 --> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 初始化连接数量 --> <property name="initialSize" value="${jdbc.initSize}" /> <!-- 最大并发连接数 --> <property name="maxActive" value="${jdbc.maxActive}" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="${jdbc.maxIdle}" /> <!-- 最小空闲连接数 --> <property name="minIdle" value="${jdbc.minIdle}" /> <!-- 配置获取连接等待超时的时间 ms --> <property name="maxWait" value="${jdbc.maxWait}" /> <!-- 牺牲效率,避免活锁 --> <property name="useUnfairLock" value="false" /> <!-- 超过时间限制是否回收 未归还(调用close)的连接 --> <property name="removeAbandoned" value="false" /> <!-- 超时回收限制多长;没有批量处理需求,设短一点,单位 秒 --> <property name="removeAbandonedTimeout" value="180" /> <!-- 用来检测连接是否有效的sql,要求是一个查询语句--> <property name="validationQuery" value="SELECT 1 FROM dual" /> <!-- 空闲的时候检测(空闲时间超过下面的值) --> <property name="testWhileIdle" value="true" /> <!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 --> <property name="testOnBorrow" value="false" /> <!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能 --> <property name="testOnReturn" value="false" /> <!-- Destroy线程检测是否关闭连接的间隔,同时也是空闲检测的判断依据,单位 毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="600000" /> <!--属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j 防御SQL注入的filter:wall--> <property name="filters" value="filter:wall" /> </bean> 启动报错:org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'root'@'122.225.88.154' (using password: YES) 122.225.88.154都不知道是哪里的地址,我已经蒙了,求大神指点
mysql left join效率优化
通过下面sql查询商品库存数量,因为库存表里面的库存是很多仓库的库存数据,在left join的时候又要做一个表连接,这样查询的时候效率非常低,如果left join一个表就很快,但是无法满足需求,请大神门帮忙优化下sql,谢谢 select g.*,gsd.number from goods g left join (select gs.goods_id,sum(gs.number) number from goods_stock gs,warehouses w where gs.warehouse_id=w.id group by gs.goods_id and w.id='123456789') gsw on(g.id=gsd.goods_id)
请问下面的题答案是?以及为什么?
1)下面哪种方式可以让爬虫合理、合法地抓取当日尽可能多的数据? A. 通过漏洞进入他人计算机系统,把数据库dump出来。 B. 用大量低频关键词在目标站点上搜索,获得当日更全数据。 C. 找到热门的hub页,热门的话题,热门的账号,获取当日更全数据。 D. 用热门关键词在百度等搜索引擎上,用site:www.website.com + 关键词 查询,从而发现新数据 2)以下所列出的方法中,浏览器web数据抓取效率最高的方法是? A. selenium + phantomjs B. 使用chrome或者chrome内核抓取 C. 模拟web协议直接用wget或curl抓取 3)下面哪项是手机端抓取app数据相比web端的优势(多选): A. 手机端协议简单容易分析 B. 手机端可以使用模拟点击 C. 手机端就算出新版了旧版还是可以继续使用,不会立即停掉 D. 通常来说,手机端抓取同样信息量的数据,下载量更低 4)下面哪些代理支持rawsocket连接(多选)? A. HTTP代理 B. HTTPS代理 C. SOCKS4代理 D. SOCKS5代理 5)下面代码请求实际访问地址url是什么? url = "https://test.cn/test" params = { "xxxx":"1234" } headers = { "Host": "www.test.cn", "Accept-Encoding": "gzip,deflate", "Connection": "Keep-Alive" } requests.get(url, params, headers =headers, allow_redirects = False, verify = False) 假设http://test.cn/test?xxxx=1234返回的状态码302且response header里有Location:http://www.test.cn/dpool/ttt/domain.php?d=test&xxxx=1234 A. https://test.cn/test B. https://test.cn/test?xxxx=1234 C. https://www.test.cn/test?xxxx=1234 D.http://www.test.cn/dpool/ttt/domain.php?d=test&xxxx=1234 6)假如你要爬大量youtube视频的二进制内容,存储在本地,最佳的办法是? A. Mysql数据库存储 B. Redis存储 C. Mongodb存储 D. 文件系统 7)如果想爬自己手机应用上的HTTPS的数据,获得明文,下面哪个说法是正确的? A. 自己搭建一个HTTPS代理,让手机设置为这个代理,即可获得明文 B. 任何HTTPS明文都是可以获取的 C. 在PC上建立一个无线热点,让手机连这个热点,并使用Wireshare软件分析出HTTPS的明文数据 D. 通过让手机系统信任根证书,使用Man-in-the-middle中间人攻击技术,就可以获取任何HTTPS明文 8)以下哪个功能chromedriver协议不支持? A. 注入js文件 B. 模拟鼠标滑动 C. 网络请求的响应式处理 D. 同个实例可以同时操作多个页面 9)爬取数据过程中,哪个情况是最不可容忍的? A. 爬取的数据不完整,有部分数据遗失 B. 爬取程序非法关闭,内存泄露 C. 爬取的数据部分出错,手动修改 D. 不同版本的数据合并在一起 10)爬虫开发不会涉及到的技术或者知识有? A. tcp,udp传输协议 B. 反汇编技术 C. 数据库存储 D. 音视频流解析 E. 网络路由协议 F. 以上都会涉及
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
只因接了一个电话,程序员被骗 30 万!
今天想给大家说一个刚刚发生在我身边的一起真实的诈骗经历,我的朋友因此被骗走30万。注:为了保护当事人隐私,部分情节进行了修改。1平安夜突来的电话开始以为就像普通的诈骗一样,想办法让你把钱...
我一个37岁的程序员朋友
周末了,人一旦没有点事情干,心里就瞎想,而且跟几个老男人坐在一起,更容易瞎想,我自己现在也是 30 岁了,也是无时无刻在担心自己的职业生涯,担心丢掉工作没有收入,担心身体机能下降,担心突...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
立即提问