- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 记一次多线程并发问题分析
查看一个新来同事的代码(比我高两个级别,心态略崩),发现一个典型的多线程并发问题,在此记录一下。需求:有个数据需要从其他服务获取,采用rpc的方式获取到后在本地缓存10秒钟经简化形成后如下代码import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;class Scratch { /** * 超时时间 10秒 */ public static fina
2021-08-26 22:09:13
271
原创 一个表中两个索引,WHERE条件中都有用到会用哪个索引?
碰到这种问题最简单的方法就是验证一下。EXPLAIN SELECT class_score,class_name from student where class_score=56 and class_name='a' ;都是唯一索引。type是const两个都是普通索引,影响行数相同,都是一行,type是ref。使用一个索引但并不是左边的两个都是普通索引,影响行数不同,type是ref。两个都是普通索引,影响行数相同,都是两行,type是index_merge。两
2021-08-06 15:35:09
1812
原创 阿里云部署kafka集群
参考文章:https://www.cnblogs.com/zhaoshizi/p/12154518.html修改zookeeper的配置文件zookeeper-server-start.sh减小内存占用运行zookeeperbin/zookeeper-server-start.sh -daemon config/zookeeper.properties加-daemon参数,可以在后台启动Zookeeper,输出的信息在保存在执行目录的logs/zookeeper.out文件中。关闭zookee
2021-05-06 18:12:25
338
1
原创 Failed to parse multipart servlet request问题解决
生产中碰到org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7017325300825944656.9400/work/Tomcat/localhost/shop-api] is not valid
2021-04-13 09:24:28
20673
1
原创 一次问题解决思路
为了降低成本,公司进行了mysql迁移,同事db部门进行数据库权限收缩。原有一个从大数据查询数据的业务无法使用。记录一下问题解决思路以往做法:从hive从查询数据保存到本地目录,使用sqoop将临时文件数据同步到mysql现在由于数据库权限收缩,不能再使用sqoo直连数据库的方式。解决思路:1、将查询结果放到hive临时表中,业务代码主动调用hive。缺点:不知道什么时候hive查询完成,hive临时表中数据如何,数据量太大如何分批查询2、 将查询结果保存在本地,shell读取文件,分批调
2021-03-12 11:28:20
120
原创 redis的发布订阅功能实现刷新本地缓存
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式。利用redis这两种场景的消息队列都能够实现。定义: 生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息;即对于每个消息只能被最多一个消费者拥有。(pop操作) 发布者订阅者模式:发布者生产消息放到队列里,多个监听队列的消费者都会收到同一份消息;即正常情况下每个消费者收到的消息应该都是一样的。在分布式服务环境下,需要更新各服务的本地缓存使用发布订阅模式。springbo
2021-01-27 15:29:07
1315
原创 mybatis中判断某个字段是否为null或空
MySql 里的IFNULL、NULLIF和ISNULL用法mybatis不能使用IFNULL这些函数,可以用case . . . when . . . then . . . else . . . end代替select id,is_topic_on as topicOn,topic_name as topicName,topic_recommend as topicRecommend,topic_introduction as topicIntroduction,topic_group as topi
2020-12-11 15:30:12
6455
原创 异步线程池中加入MDC参数
在项目中需要异步执行任务方法,但是异步执行时会使用另一个线程。因为MDC的参数时基于ThreadLocal的,每个线程都保留一份。这样就造成异步线程的日志id没有或者跟前一个日志id不一致,不便于查询日志。解决方法:自定义任务装饰器,并配置到线程池@Bean("taskExecutor") public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor()
2020-12-08 11:36:11
2698
原创 为什么integer比较一定要用equels
public static void main(String[] args) { Integer a = null; System.out.println(1 == a); System.out.println(a == 1); }这段代码第一次打印就会报错,是因为integer类型会自动拆箱。正确方法应该是 public static void main(String[] args) { Integer a = null;
2020-12-02 01:33:24
342
原创 js控制输入数字及小数点位数
function justNum(obj,scale) { if (typeof (scale) == undefined) { scale="1," } obj.value = obj.value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符 obj.value = obj.value.replace(/^\./...
2018-09-20 13:58:21
1779
转载 java注解
元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。 元标签有 @Retention、@Documented、@Target、@Inherited、@Repeatable 5 种。@Retention英文意为保留期的意思。当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间。它的取值如下: Retention...
2018-07-17 11:14:23
415
原创 Java内存模型
程序计数器当前线程的所执行的字节码的行号指示器java虚拟机栈线程私有,描述的事java方法执行的内存模型。每个方法在执行的同时会创建一份栈帧由于存储局部变量表(编译器可知的基本数据类型和对象引用)、操作数栈、动态链接、方法出口信息等。本地方法栈与java虚拟机栈类似,不过它是为虚拟机使用到的Native方法服务。java堆是被所有线程共享的一块区域,在虚拟机启动时创建,此内...
2018-06-02 16:45:54
213
原创 java多线程中ThreadPoolExecutor线程池参数理解
工作中使用Executors.newFixedThreadPool(n)创建线程池时,阿里巴巴java开发手册提示要手动创建线程池.提示信息是;更加明确理程池运行规则,规避资源耗尽风险。手动创建线程池的一种方式:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,...
2018-06-01 17:12:15
638
原创 菜鸟教程---Regex正则表达式总结
\ 将下一个字符标记为一个特殊的字符、一个原义字符、一个向后引用或一个转义字符。如,n匹配字符n,\n匹配一个换行符,序列\匹配,()匹配().^ 匹配字符串的开始位置。Multiline属性,^也匹配\n或\r后的位置列表内容...
2018-05-31 16:23:24
830
原创 myEclipse中spring配置文件自动提示
进入:window -> Preference… -> MyEclipse -> Editors -> XML ->XML Catalog 选择:选中“User Specified Entries”,点击“Add…”按钮 填入: URI: 请选择本地文件系统上SPRING_HOME/dist/ resources/spring-beans-2.0.xsd 文件...
2018-05-08 14:03:01
950
原创 Hibernate连接SQLServer数据库的配置
Hibernate连接SQLServer数据库的配置 主要文件有四类: 1. xx.java类文件; 放在src目录下自己创建的包中 2. xx.hbm.xml文件; 放在类文件所在的包中,即与类文件在同一目录下 3. hibernate.cfg.xml文件; 直接放在src目录下 4. jar包; 可以build path导入,也可以直接放在lib目录下(如果是创建的web工程的...
2018-05-08 13:58:25
1757
原创 IDEA破解
遍历集合时若直接声明集合等于一个查询的结果,当查询的结果为空时,则容易出现空指针异常。遍历集合时就要判断集合是否为空。最好先创建一个集合再将...
2018-05-08 10:36:56
342
原创 类型转换异常
maxPage = Integer.parseInt((String)pInfo.get(“maxPage”)); pInfo中存储的数据类型为object,可能为integer或者为string,所以会发生integer转换string异常,此时调用integer的toString方法可解决,因为toString是返回一个表示该 Integer 值的 String 对象。然后再将对象进行转换 ...
2018-04-24 17:14:51
3525
1
原创 静态代码块,构造代码块
public class StaticTest { //类加载时就执行,且仅执行一次 static { System.out.println("静态代码块"); } //创建对象时执行,且优先于构造函数 { System.out.println("构造代码块"); } StaticTest() { S
2017-12-11 20:27:54
282
转载 git的使用
约定: 1.每个人都可以fork(分叉)一份自己的repo(仓库),所有的修改都在自己私有的repo上进行; 2.修改完成,测试通过后通过给主repo发pull request请求合并; 3.主repo(eoecn/android-app)的管理团队收到pull request请求后,review代码,合并进来; 4.个人的repo需及时和主repo保持同步; 第1步:fork一份自己的r
2017-11-29 17:03:19
328
转载 Java 语言中的 volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。
2017-11-28 18:18:38
337
原创 Tomcat配置图片服务器
在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中的Host标签中添加: 访问http://localhost:8080/pic即可访问F:\develop\upload\temp下的图片
2017-10-10 14:32:14
577
转载 存根类
存根类是一个类,它实现了一个接口,它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。但是一个类从业务来说,可能只需要其中一两个方法。如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦。 RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。stub 充当远程
2017-09-10 20:46:51
635
转载 system占用80端口
http://jingyan.baidu.com/article/11c17a2c15f300f447e39d7d.html
2017-08-21 20:06:47
575
转载 抽象类和接口
相同点:都不能被实例化,位于继承树的顶端,都包含抽象方法 不同点:1、设计目的:接口体现的一种规范,类似与整个系统的总纲,制订了系统各模块应该遵循的标准,因此接口不应该经常改变,一旦改变对整个系统是辐射性的。 抽象类作为多个子类的共同父类,体现的是一种模板式设计,可以当作系统实现过程中的中间产品,已经实现了系统部分功能。 2、使用不同:(1
2017-08-09 21:06:19
305
翻译 a.length==0、a==null、a == ""、a.equals("") 的区别
a == null 没在堆里开辟内存,即相当于没有new a == “” 创建了一个String对象,但内容为空,长度为零 a.length() == 0 同上 a.equals(“”) 同上 判断一个数组是否为空 int[] a; a==null&&a.length==0;
2017-08-01 21:19:54
717
转载 java的值传递与引用传递
package algorithms.com.guan.javajicu; public class Example { String str = new String("good"); char[] ch = {'a','b','c'}; public static void main(String[] args) { Example ex = new Exampl
2017-07-19 22:12:49
361
原创 访问控制符
private:只在本类中可以被访问 default:只在同一个包中可以访问 protected:在同一个包及不同包中的子类可以访问 public:项目全局可以访问
2017-07-06 16:40:39
290
原创 spring配置文件自动提示
进入:window -> Preference… -> MyEclipse -> Editors -> XML ->XML Catalog 选择:选中“User Specified Entries”,点击“Add…”按钮 填入: URI: 请选择本地文件系统上spring-beans-X.X.xsd 文件 (在准备好的或者Eclipse安装文件里查找此文件) Key Type: 选择Sche
2017-04-30 17:00:57
441
原创 JDK和TOMCAT环境变量配置及解决tomcat启动时一闪即逝问题
一、配置JDK环境变量 1、新建变量名:JAVA_HOME,变量值:C:\Program Files\Java\jdk1.7.0,即jdk路径 2、打开PATH,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 3、新建变量名:CLASSPATH,变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要
2017-03-20 12:02:41
1251
原创 myecplise编码格式/java自动提示设置
全局编码设置: ToolBar–>Window–>Preferences–>General–>Workspace–>Text file encoding,设置合适的编码。 这个也是安装完Eclipse之后应该立刻做的一件事 但是这种修改只对当前的workspace有效,如果新建或者切换到一个新的workspace下,还是得做同样的步骤。不同格式的文件的默认编码: Window->Prefer
2017-03-16 13:23:04
773
翻译 css垂直居中的六中方法
利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可。本文收集了六种利用css进行元素的垂直居中的方法,每一种适用于不同的情况,在实际的使用过程中选择某一种方法即可。1.设置行高适用:单行文本垂直居中,demo代码:html
2017-02-19 08:12:09
416
转载 网站设计时浏览器不兼容解决方式
IT市场越是发达,可供网民们使用的网络工具就越多,这其中包括各色各样的浏览器,不同风格不同习惯的浏览器虽然在最大程度上满足了不同爱好的网民朋友但却给深圳网站设计师们带来了困惑,为了能让网站设计正常的运行于各种浏览器平台,网站设计师们不得不想尽办法处理好网站建设中的浏览器兼容问题。正是因为网站设计当中的这一需要产生了一项新技术— CSS Hack。 CSS Hack 就是针对不同浏览器
2017-02-18 10:07:01
1169
转载 jsp com.microsoft.sqlserver.jdbc.SQLServerException: 结果集已关闭
-- 首先检查 --执行SQL select * from student 是否有结果-- 其次,加一个 判断:-- 然后 ,遍历结果集 ResultSet res=state.executeQuery("select * from student");while((res.next()) ////判断是否有记录{ String textField1=res.getS
2017-02-13 15:24:29
1961
原创 myeclipse配置 tomcat出现Value must be an existing directory问题
tomcat安装目录下缺少temp文件夹,新建temp文件夹即可解决
2016-12-11 10:56:54
16306
4
原创 构造函数
特点:1.函数名和类名相同2.不用定义返回值类型3.不可以写return语句作用:给对象进行初始化注意:1.默认构造函数的特点2.多个构造函数是以重载的形式存在的
2016-11-12 16:53:54
264
原创 this关键字
/*this语句用于构造函数之间进行相互调用只能定义在构造函数第一行,因为初始化要先执行*/class person{private String name;private int age; person(String name){this.name =name;}person(String name,int age){//this.name
2016-11-12 16:53:04
278
原创 函数
函数的 定义:函数也称为方法,是定义在类中的具有特有功能的一小段独立小程序函数的格式:修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...){执行语句;return返回值;}返回值类型:函数运行后的结果的类型。参数类型:是形式参数的数据类型形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数return:用于结束
2016-11-10 12:48:09
385
html+css+emmet笔记
2017-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人