JAVA使用threadlocal如何进行资源释放

使用threadlocal,线程结束前如何能够将threadlocal中的数据库资源释放?我知道线程结束后,threadlocal中实例能gc,但是想在销毁前释放资源,求大神指一条路,万分感谢

PS:使用mybatis从服务器数据源获取的连接

5个回答

没使用过threadlocal,但是既然是java中的,它应该是一个对象,你可以通过重写finalize这个方法,这个方法继承自object,gc回收对象之前,会调用这个方法,这个方法一般用于资源的释放,应该能解决你的问题

weixin_42922066
weixin_42922066 finalize()被deprecated了
大约一年之前 回复

这个有点不好说清,先说一点嘛,JVM的GC,并不是人为控制的(不讨论主动触发的情况),一般的释放操作也只是让当前对象变得游离,使其下次被GC,并不是直接让对象真的释放
然后,如果当前资源是mybatis的数据库连接,针对连接可以close,但当前类还是存在的,这类资源都会在gc是处理掉

使用的threadloca 的生命周期是跟随当前线程的,如果你说想在当前线程结束前销毁链接资源,那你把对链接资源的引用设置成null即可。
1.首先 gc是不会由你手动控制的,所谓的finalize 方法 是 gc前会调用类的 finalize方法,也就是说 当gc时,会先执行一下finalize方法而已,不是手动执行gc。
2.其次 真正当你的内存吃紧,不够的时候 触发gc,gc查看,你的threadlocal 正在被使用 不会回收,但是 那个链接资源 可没人引用它了,(因为你设成null了),
那就直接回收了链接资源。 这样就是你说的 线程结束前,回收资源了。

GC是系统一套算法,销毁的效率相对很低的(除非内存紧缺),自己完全可以在线程执行完毕前释放一些资源

直接set(null)方法就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java的ThreadLocal是否能被其他线程访问到?里面的机制是怎么样的
java的ThreadLocal是否能被其他线程访问到?里面的机制是怎么样的
请问java中ThreadLocal与synchronized
下面的例子是jdk文档中的。 http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ThreadLocal.html [code="java"] public class SerialNum { // The next serial number to be assigned private static int nextSerialNum = 0; private static ThreadLocal serialNum = new ThreadLocal() { protected synchronized Object initialValue() { return new Integer(nextSerialNum++); } }; public static int get() { return ((Integer) (serialNum.get())).intValue(); } } [/code] 请问已经是ThreadLocal了,initialValue 这个方法 为何还需要 synchronized ?
java ThreadLocal空异常
class Account { /* * 定义一个ThreadLocal类型的变量,该变量将是一个线程局部变量 每个线程都会保留该变量的一个副本;tl是boolean[]类型,CSDN显示不了! */ private ThreadLocal<boolean[]> tl = new ThreadLocal<boolean[]>(); // 定义一个初始化tl成员变量的构造器 public Account(boolean[] str) { this.tl.set(str); // 下面代码用于访问当前线程的tl副本的值 System.out.println("---" + this.tl.get()); // 当前线程的tl副本的值 System.out.println("---" + this.tl.get()[5]); } // tl的getter方法 public boolean[] getTl() { return tl.get(); } } class MyTest extends Thread { // 定义一个Account类型的成员变量 private Account account; // 定义一个String类型的成员变量 private String carName; public MyTest(Account account, boolean[] name, String carName) { super(); System.out.println("new对象:" +account+":"+account.getTl()); this.carName = carName; this.account = account; } public void run() { // name中boolean[]是否为空 if (account.getTl() == null) { System.err.println("空异常:" + account+":"+account.getTl()); return; } // 循环10次 for (int i = 0; i < account.getTl().length; i++) { if (account.getTl()[i] == false) { account.getTl()[i] = true; // 输出停车信息 System.out.println(carName + " 车主在" + account.getTl() + "找到的停车位是:" + (i + 1)); break; } } } } public class ThreadLocalCarStopTest { public static void main(String[] args) { // 启动N条线程(即N辆车),N条线程共享同一个Account boolean[] b = new boolean[10]; Account at = new Account(b); new MyTest(at, b, "车1").start(); } } 输出: ---[Z@1db9742 ---false new对象:net.test.Account@106d69c:[Z@1db9742 空异常:net.test.Account@106d69c:null 为什么出现空异常?在new MyTest时不为空,怎么启动线程后就为null?
关于Java ThreadLocal的疑问
ThreadLocal作为一个可以将数据进行线程隔离的解决方法,其本质还是将数据存放在各个线程对象中(数据存放在Thread的ThreadLocalMap threadLocals中); 那么为什么JDK不在设计的时候就使Thread对象具有保存线程上下文的能力呢? 比如可以这样: [code="java"]public class Thread { ... private Map<Object,Object> contexts = new WeakHashMap<Object,Object>(); public void setContext(Object key, Object value) { contexts.put(key, value); } public void getContext(Object key) { contexts.get(key); } }[/code] 使用的时候Thread.getCurrentThread.getContext(key);简单方便 JDK实现者是出于什么考虑才这样设计的?
关于Threadlocal的用法问题,在线等
最近在做一个关于处理进度功能时用到threadlocal public class LoadModal { /** * 当前进度 */ private static ThreadLocal<Double> threadLocal=new ThreadLocal<Double>(); /** * * @param count 总数 * @param currentValue 当前处理值 * @return */ public static void setProgress( int count ,int currentValue){ if (0==count){ threadLocal.set(new Double(-1)); }else{ threadLocal.set(Double.parseDouble(new DecimalFormat("0.0000").format((double)currentValue/count))); } } /** * 初始化进度 */ public static void initProgress(){ threadLocal.set(new Double(-1)); } /** * 获取当前进度 * @return */ public static double getProgress(){ return threadLocal.get(); } } 更改值的时候循环调用的LoadModal.setProgress(count,row-1 ); 现在问题是 用ajax 循环取值的时候LoadModal.getProgress() 出现空指针异常 java.lang.NullPointerException at com.ultrapower.vo.LoadModal.getProgress(LoadModal.java:41) at com.ultrapower.servlet.LoadingServlet.doPost(LoadingServlet.java:61) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1815) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)
关于自己用一个全局map实现ThreadLocal遇到的错误
先上代码吧。 ``` package thread; import java.util.HashMap; import java.util.Map; import java.util.Random; /** * 这样的map属于全局级别的,会冲突,而且这样的实现方法好像是1.3以前的方法 * @author Han */ public class MyThreadLocalDemo { private static Map<Thread,String> map = new HashMap<Thread,String>(); private static String contextStr = ""; public static void set(String str){ //System.out.println(map.containsKey(Thread.currentThread())); map.put(Thread.currentThread(), str); } public static String get(){ System.out.println(map.keySet()); return map.get(Thread.currentThread()); } public static String getStr(){ return contextStr; } public static void setStr(String str){ contextStr = str; } public static void print(){ System.out.println(map); } public class MyThread extends Thread{ // public MyThread(String name){ // super(name); // } @Override public void run() { int i = new Random().nextInt(10); String str = Thread.currentThread().getId()+","+i; MyThreadLocalDemo.set(str); MyThreadLocalDemo.setStr(str); System.out.println("```threadlocal的值"+str); System.out.println("```string的值"+str); //System.out.println(Thread.currentThread()); try { Thread.currentThread().sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("`threadlocal的值"+MyThreadLocalDemo.get()); System.out.println("`String的值"+MyThreadLocalDemo.getStr()); //print(); } } public static void main(String[] args) { //运行以下代码可以看出,两个线程,持有的threadlocal没有因为另一个改变了值而发生改变 // for(int i = 0;i<20;i++){ // Thread t1 = new MyThreadLocalDemo().new MyThread(); // Thread t2 = new MyThreadLocalDemo().new MyThread(); // t1.start(); // t2.start(); // } Thread t1 = new MyThreadLocalDemo().new MyThread(); Thread t2 = new MyThreadLocalDemo().new MyThread(); t1.start(); t2.start(); } } ``` 这个程序的执行结果,有时候会get 出来 null,有时候不会。没想明白。ThreadLocal是为每个Thread对象都会一个独自的ThreadMap,不考虑性能的话,我觉得用map也是一样的效果。 但是实在不知道哪里出了问题,求大神指教。
hibernate ThreadLocal
1.在hibernate的工具类中获取session的时候采用的是ThreadLocal方式,因为session是线程不安全的,可是如果我们用的是strut2或者struts1,这种不是线程的框架,不就没问题了吗? 2。openSession和getCurrentSession中提到getCurrentSession是把session绑定到当前的线程具体是什么意思啊。 3,总之,大家可以告诉我如果不用threadLocal会出现什么情况,详细点,现在糊涂了。始终不明白。 4。如果采用配置在配置文件加入thread是不是就不用使用threadLocal在工具类里面了 hibernate新手,求指教谢谢,希望详细点,谢谢
关于threadLocal的疑惑
最近在看ThreadLocal的底层实现,通过查看源码发现此类主要的核心是通过获取到当前运行线程的一个变量threadLocals来为每一个线程提供一个本地存储。本人在网上看到很多对ThreadLocal讲解的帖子,一直不是特别理解他们说的副本是什么意思,为什么不会被其他线程干扰,是一个对象的深拷贝吗?但是在ThreadLocal中的set方法中也只是一个this.value=value;所以如果把同一个对象放入不同的两个线程的ThreadLocal中,其中一个线程对该对象的字段进行修改,其实是会影响到另一线程中的对象的。本人测试的结果也是如此。 ``` public class MyThreadLocalTest { public static void main(String[] args) throws InterruptedException { ThreadLocal threadLocal = new ThreadLocal(); ThreadLocal threadLocal2 = new ThreadLocal(); Student a = new Student(); threadLocal2.set(a); a.setName("mainThread"); new Thread(( () -> { threadLocal.set(a); ((Student) (threadLocal.get())).setName("myThread"); System.out.println("myThread 学生:" + threadLocal.get()); } )).start(); //这里睡十秒 不然的话有可能主线程先执行 Thread.sleep(10000); System.out.println("mainThread学生:" + threadLocal2.get()); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201906/03/1559531267_117114.png) 本人在网上看到很多帖子以hibernate的session举例,但是本人只能理解到这个threadLocal只能保证到每个线程获取到同一个session对象而已,并不能解决多个线程拿到同一session后如果closs掉以后其他线程的session不被影响,希望大牛给予指点
ThreadLocal 多线程下报 ConcurrentModificationException
代码在公司内网,没有办法发出来。 我把程序流程的伪代码发出来,请大佬帮忙解决问题。谢谢。 ``` //信号量控制并发 private Semaphore semaphore=new Semaphore(4); public void run(){ for(int i=0;i<3600;i++){ 获取一个信号量 singleJob(); } } @Async public void singleJob(){ try{ User user=new User (); //将User设置入 ThreadLocal method1(); method2(); method3(); //取出User存入数据库。 }cache(Exception e){ }finally{ //释放信号量 //清空ThreadLocal中设置的 User } } ``` 声明:@Async注解生效了 是多线程。 我在singleJob里创建了一个User对象(举例而已),放进了ThreadLocal,在下面的三个方法中都从ThreadLocal中先取出user,然后设置user的一个属性再放入 ThreadLocal中。 在finally块中从线程中移除。 程序每次执行都至少会抛出1-2次ConcurrentModificationException。
关于ThreadLocal内存泄漏
看到很多说ThreadLocal内存泄漏的都是把ThreadLocal变量置为null后说value一直存在 ,造成内存泄漏。那么再利用线程池的环境中,如果把ThreadLocal变量声明为static final的,是不是一定不会发生内存泄漏的可能了?或者说对于一个线程来说,ThreadLocalMap中最多有一条关于这个ThreadLocal变量的记录? 因为即使线程不死亡一直存在,但是map里的key是一样的,所以set方法只是在覆盖旧值?
线程 ThreadLocal
<p><span style="font-size: large;">最近在学习ThreadLocal,顺手编了个测试程序,但是总报错</span></p> <p> </p> <p>报错信息:</p> <pre name="code" class="java">Exception in thread "Thread-0" java.lang.NullPointerException at com.thread.Warehouse.get(Warehouse.java:20) at com.thread.Worker.run(Worker.java:31) Exception in thread "Thread-1" java.lang.NullPointerException at com.thread.Warehouse.get(Warehouse.java:20) at com.thread.Worker.run(Worker.java:31)</pre> <p> <span style="white-space: pre;"> </span></p> <p>这个类相当于一个仓库 每个线程都有独立的List用来存储字符串</p> <p> </p> <pre name="code" class="java">public class Warehouse { private ThreadLocal&lt;List&lt;String&gt;&gt; store = new ThreadLocal&lt;List&lt;String&gt;&gt;(); public void put(String s){ List&lt;String&gt; list = store.get(); if(list == null){ list = new LinkedList&lt;String&gt;(); } list.add(s); System.out.println(Thread.currentThread().getName() + "放入: " + s); } public void get(){ List&lt;String&gt; list = store.get(); System.out.println(Thread.currentThread().getName() + ": " + list.size()); // if(list != null){ // for(String temp : list){ // System.out.println(temp); // } // }else{ // System.err.println("ERROR!"); // } } }</pre> <p> </p> <p>这个是线程类 用来存储数据 并打印出存储大小</p> <p> </p> <pre name="code" class="java">public class Worker extends Thread { private int size; private int count; private Warehouse warehouse; public Worker(Warehouse warehouse, int size, int count){ this.warehouse = warehouse; this.size = size; this.count = count; } //生成随机字符串 public String getRandomString(){ char[] c = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm' }; Random random = new Random(); StringBuilder builder = new StringBuilder(); for(int i=0; i&lt;size; i++){ builder.append(c[random.nextInt(c.length)]); } return builder.toString(); } public void run() { for(int i=0; i&lt;count; i++){ String temp = getRandomString(); warehouse.put(temp); } warehouse.get(); } }</pre> <p> 这个是主函数</p> <p> </p> <pre name="code" class="java">public class Main { public static void main(String[] args) { Warehouse warehouse = new Warehouse(); Worker worker1 = new Worker(warehouse, 3, 4); Worker worker2 = new Worker(warehouse, 5, 6); worker1.start(); worker2.start(); } }</pre> <p> </p> <p><span style="font-size: medium;">报错地方在</span><span style="white-space: pre;"><span style="font-size: medium;">Warehouse类的get方法下的</span></span><span style="font-size: medium;">“</span><span style="white-space: pre;">System.out.println(Thread.currentThread().getName() + ": " + list.size());</span><span style="font-size: medium;">”,报的空指针异常,但我在线程类中都是先做的put操作再进行的get操作,也就是说,在get操作之前,应该已经完成初始化工作,不应该再报空指针异常。</span></p> <p> </p> <p><span style="font-size: medium;">请劳烦指点一下 我的错误在哪里。 谢谢!</span></p>
Java中线程的问题:明明是同一个thread对象,但是threadLocal不是同一个
package hub; /*为啥不同线程中的ThreadLocal是互相独立的。 明明是同一个thread对象 * 打印出来的结果 在主线程里面是var2 ,在thread线程中是var1 */ public class ThreadLocalUsage extends Thread { public User user = new User(); public User getUser() { return user; } @Override public void run() { this.user.set("var1"); while (true) { try { sleep(1000); } catch (InterruptedException e) { } System.out.println(this.user.get()); } } public static void main(String[] args) { ThreadLocalUsage thread = new ThreadLocalUsage(); thread.start(); try { sleep(4000); } catch (InterruptedException e) { } thread.user.set("var2"); System.out.println(thread.user.get()); } } class User { private static ThreadLocal<Object> enclosure = new ThreadLocal<Object>(); // is it must be static? public void set(Object object) { enclosure.set(object); } public Object get() { return enclosure.get(); } } 上面这个代码明明是一个thread对象,怎么打印出来的threadlocal的值不一样,也就是代表不是同一个threadlocal
关于ThreadLocal存储值的疑问
最近在看多线程ThreadLocal类,个人理解的是ThreadLocal的内部类ThreadLocalMap是一个Thread的成员变量,key是THread对象,value即需要存储的值;但是我疑问的是一个该线程共享变量只能存一个值吗?经过验证第二次的set是会覆盖第一次set的值;如果真的是只能存一个,想问下这个设计的原则是什么?查询了很多资料好像都没有说关于这一点的;
java多线程中‘可见性’问题,是否与ThreadLocal 有关呢?
在不谈及synchronize 与 volatile 之前, 我知道线程会缓存一份 共享变量的副本,这样就导致了其它线程的可视无法确定。 我在试想这个 缓存的问题,是否与 ThreadLocal 对象有关??
threadLocal是要解决什么问题?在什么应用场景下使用呢?
如题:threadLocal是要解决什么问题?在什么应用场景下使用呢?
ThreadLocal引起内存泄露?
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>[ </p> <pre name="code" class="java">由于SimpleDateForamt是非线程安全的,所以想用ThreadLocal封装一下,但是同事说这样写会造成内存泄露,要请教一下各位, 下面这样写会造成内存泄露么,烦请大伙给指点指点,不胜感激。(环境springmvc + spring +ibatis,使用了线程池)</pre> <pre name="code" class="java">public class DateUtil { private static ThreadLocal&lt;DateFormat&gt; sdf = new ThreadLocal&lt;DateFormat&gt;() { protected DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd"); }; }; public static DateFormat getDateFormat(ThreadLocal&lt;DateFormat&gt; tl) { return tl.get(); } public static String format(Date date) { if (date == null) { return ""; } return getDateFormat(sdf).format(date); } public static Date parse(String st) throws ParseException { return getDateFormat(sdf).parse(st); } }</pre> <p> </p> </div>
tomcat启动多应用就报内存溢出,之前配置过catalina启动多应用就这样大神救救我
SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [ROOT] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@1bc9cb07]) and a value of type [io.netty.util.internal.InternalThreadLocalMap] (value [io.netty.util.internal.InternalThreadLocalMap@17662cbb]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
ThreadLocal 缓存可重用的StringBuilder能够在多线程环境下使用吗?
网上有很多介绍说StringBuilder的复用写法,其中“为了避免并发访问,可以在ThreadLocal中使用StringBuilderHolder” ``` public class StringBuilderUtil { private static final ThreadLocal<StringBuilderHelper> threadLocalStringBuilderHelper = new ThreadLocal<StringBuilderHelper>() { @Override protected StringBuilderHelper initialValue() { return new StringBuilderHelper(); } }; public static final StringBuilder getStringBuilder() { return threadLocalStringBuilderHelper.get().getStringBuilder(); } static final class StringBuilderHelper { final StringBuilder sb; StringBuilderHelper() { sb = new StringBuilder(); } StringBuilder getStringBuilder() { sb.setLength(0); return sb; } } } ``` 那么这种写法能否代替StringBuffer? 还是我的理解有误,并发和多线程不一样??
ThreadLocal在其他线程中get不到set的变量
牛客网项目中用spring boot做的图书管理系统中, private static ThreadLocal<User> host = new ThreadLocal<>(); public static User getHost() { return host.get(); } public static void setHost(User user) { host.set(user); } 在LoginBiz类中ConcurrentUtils.setHost(user);后面调用getHost()能获取user 在BookController类中ConcurrentUtils.getHost();user为null 这是什么原因,怎么解决呢。。 项目中有两个controller,一个bookcontroller,一个logincontroller,在logincontroller的@RequestMapping(path = {"/users/register/do"},method = {RequestMethod.POST})中sethost(user),然后在bookcontroller中@RequestMapping(path = {"/index"}, method = {RequestMethod.GET}) gethost();这应该是不同线程的吧,我用System.out.println(Thread.currentThread());也显示是不同的线程。
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
MyBatis研习录(01)——MyBatis概述与入门
C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往——自定义View系列教程(10篇) 走出思维困境,踏上精进之路——Android开发进阶精华录 讲给Android程序员看的前端系列教程(40集免费视频教程+源码) 版权声明 本文原创作者:谷哥的小弟 作者博客
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序
Python:爬取疫情每日数据
前言 有部分同学留言说为什么412,这是因为我代码里全国的cookies需要你自己打开浏览器更新好后替换,而且这个cookies大概只能持续20秒左右! 另外全国卫健委的数据格式一直在变,也有可能会导致爬取失败! 我现在已根据2月14日最新通报稿的格式修正了! 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 为什么已经有大量平台做
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
粒子群算法求解物流配送路线问题(python)
粒子群算法求解物流配送路线问题(python) 1.查找论文文献 找一篇物流配送路径优化+粒子群算法求解的论文 参考文献:基于混沌粒子群算法的物流配送路径优化 2.了解粒子群算法的原理 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/details/81382794 3.确定编码方式和解码策略 3.1编码方式 物流配送路线的
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang.
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问