当前位置: 首页 > news >正文

提升网站建设营销百度app下载手机版

提升网站建设,营销百度app下载手机版,在线网站推荐几个,做网站需要哪些程序员一、背景介绍 在线人员列表涉及到的问题: 类中写了公共变量最后导致数据混乱现象 保存数据没有考虑业务的隔夜覆盖导致的逻辑漏洞 涉及到继承,对于this,如果父类有同样的成员最终使用哪一个? 参数不一致导致后续维护混乱 mysql由…

一、背景介绍

在线人员列表涉及到的问题:

类中写了公共变量最后导致数据混乱现象
保存数据没有考虑业务的隔夜覆盖导致的逻辑漏洞
涉及到继承,对于this,如果父类有同样的成员最终使用哪一个?
参数不一致导致后续维护混乱
mysql由于关联字段类型不一致导致产生索引失效问题,进而产生慢sql
sql不考虑业务导致有明显的逻辑漏洞

上面的问题主要分为四类问题:

公共变量导致数据混乱
对于在线人员的业务存在逻辑问题(对应上面的 2 4 6 )
面向对象继承的问题,this.属性和方法的问题
mysql由于关联字段类型不一致导致索引失效的问题。    

二、解决过程

1.类中写了公共变量最后导致数据混乱现象

原因:由于线程共享全局变量,并且在实际业务的过程中对全局变量进行了操作(修改),所以在高并发、多线程的条件下会产生公共变量导致数据混乱的现象。

方案:1.使用ThreadLocal

ThreadLocal叫做线程变量,该变量对于其他线程而言是隔离的,该变量是当前该线程独有的变量。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。正是由于每个线程都有自己的实例副本,且与其他线程不可访问,那就不存在多线程共享该变量的问题。

没使用ThreadLocal之前

代码编写

public class Client {public static void main(String[] args) {// 定义线程实现接口Runnable runnable = new Runnable(){Counter counter = new Counter();@Overridepublic void run() {counter.count();}};// 启动10个线程for( int i= 0;i< 10;i++) {new Thread(runnable).start();}}}
public class Counter{private int number;public void count(){for (int i = 0; i <=10 ; i++) {number=number+i;}System.out.println(Thread.currentThread().getName()+ "--"+number;}
}

执行结果:计算的结果应该都为55,结果出现了混乱的情况

 使用ThreadLocal之后

public class Client {public static void main(String[] args) {// 定义线程实现接口Runnable runnable = new Runnable(){Counter counter = new Counter();@Overridepublic void run() {counter.count();}};// 启动10个线程for( int i= 0;i< 10;i++) {new Thread(runnable).start();}}
}
public class Counter {private static ThreadLocal<Integer> number = new ThreadLocal<Integer>() {// 重写这个方法,可以修改“线程变量”的初始值,默认是null@Overrideprotected Integer initialValue() {return 0;}};//计数方法public  void count() {for( int i= 0;i<= 10;i++) {number.set(number.get()+i);}System.out.println(Thread.currentThread().getName()+ "--"+number.get());}
}

执行结果

 2.将全局变量改为成员变量

public  void count(){int number = 0;for (int i = 0; i <=10 ; i++) {number=number+i;}System.out.println(Thread.currentThread().getName()+ "--"+number);}
}

 

 2.逻辑混乱多种情况

         由于这里查询的入参带了createDate,如果该学生从第一天到第二天一直没有下课,那么你这儿查询的话由于带了createDate就查询不到该学生的在线数据,在后续的流程中就会重复插入,该学生就会有两条数据,查询的时候就会有数据问题。

         对于isOnline参数,上面paramUser中有该参数。不必再进行赋值。这样的好处是参数值保持了一致,降低了复杂度。

        这里主要是对在线人员进行下线处理,1.如果在这里更新了update_time那么就相当于这个课程班级中的所有学生的最近一次登陆时间都是一致的,并且最近一次登陆时间与实际不符。2.如果where条件上加上了create_date作为条件那么如果过了十二点结束课程,那么所有在线的人就无法进行下线处理了。

3.父子类继承对于this的使用

         java中继承关系的父子类,相同的方法会被重写。重写之后如果还想继续使用父类的方法,需要通过super关键字去调用父类的方法。

4.关联字段类型不一致导致索引失效

 相关博客:(5条消息) 案例12-数据类型不一致导致索引失效_武梓龙_Arvin的博客-CSDN博客

三、总结提升

        拓展我们的知识面,不怕不知道就怕不知道。知识面宽广了在解决问题,思考解决办法才能更丰富维度才会更多。

http://www.mmbaike.com/news/34650.html

相关文章:

  • 东莞市公租房申请网站-建设网网站优化怎么做
  • 培训网站开发机构nba交易最新消息
  • 网站前置审批查询百家号查询排名数据查询
  • 做的好的个人网站知乎长沙网站优化体验
  • 杭州网站建设 杭州app网络营销策划方案范文
  • 做网站维护游戏推广代理app
  • 响应式网站 价格宁德市人民政府
  • 新疆建设工程信息网招标公告查询南昌seo实用技巧
  • 永安网站制作哈尔滨网站建设
  • 企业网站建设方案应该怎么做百度app登录
  • 出口手工艺品网站建设方案网站排名优化软件哪家好
  • 用vb做网站导航栏陕西seo主管
  • 网站导航你一定会回来感谢我的泰安seo推广
  • 建电影网站赚钱挣钱吗培训机构哪家好
  • 潍坊网站优化公司哪家好长春网站建设定制
  • 做个公司网站要多少钱谷歌关键词排名查询
  • 重庆观音桥网站建设免费网站的软件
  • 网页设计与网站架设域名注册新网
  • 邢台做移动网站费用潍坊网站建设解决方案
  • 网站开发项目需求方案网络营销就是
  • 邯郸网站建设最新报价东莞网络推广代运营
  • 凡科能上传自己做的网站数字营销平台有哪些
  • 网站建设的电话销售郑州seo优化外包顾问
  • 罗湖网站建设深圳信科竞价推广账户竞价托管
  • 网站主机要怎么做济南专业seo推广公司
  • 网站建设前期策划方案市场调研报告怎么写的
  • 培训类网站模板百度推广登录入口登录
  • 连云港做网站制作今日热点新闻事件摘抄50字
  • 怎样做网站关键词优化seo网站优化价格
  • 网站建设的必要性分析网站怎样优化文章关键词