- 博客(26)
- 收藏
- 关注
原创 ThreadLocal详解
这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。3、Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向map获取和设置线程的变量值。4、对于不同的线程,每次获取副本值时,别的线程并不能获取到当前线程的副本值,形成了副本的隔离,互不干扰。3、线程隔离: 每个线程的变量都是独立的,不会互相影响。
2024-06-28 23:52:33 176
原创 CAS自旋解析
ABA问题的解决方式可以通过添加版本号来解决,即每次修改数据时,比较版本号的值。每次修改完成后,版本号+1,通过这种方式来保证数据的唯一,解决ABA问题。具体的实现使用的是Unsafe类去调用native修饰的compareAndSwap方法,4个字段分别是对象实例,字段偏移量,字段期望值,字段新值。CAS全称CompareAndSwap(比较并交换),是cpu的指令,调用时不涉及上下文的切换。当有多个线程对一个原子类进行操作的时候,某个线程在短时间内将原子类的值。可以通过反射的方式获取UnSafe类。
2024-06-28 11:31:57 436
原创 离线环境安装jdk,使用用户环境变量配置JAVA_HOME
使用java -version命令查看版本,如果正常显示,说明配置成功。先说下背景,研发服务器,没有外网,账户权限受限,不能配置系统环境变量,只能使用用户环境变量进行配置。如果既配置了系统环境变量,又配置了用户环境变量,最终会以用户环境变量的配置为准。1、下载jdk在linux环境的安装包,上传到服务器,使用tar命令进行解压。2、在当前登录进来的用户环境,使用ll -a,或是ls -a查看隐藏文件。如果有疑问,可以联系我的QQ1391197821,欢迎一起探讨。
2023-08-31 23:40:41 184
原创 linux离线环境安装redis
想通过修改Centos7镜像的yum源,将yum源指向镜像文件,使用下载的镜像里面的gcc。5、redis上传解压成功后,进入解压后的redis目录,先输入make,后输入make install安装redis。先检查gcc版本,使用gcc --version进行检查,版本在5以下的,安装redis要安装redis6以下的版本。解压成功后,进入解压后的目录,进入Packages目录,会发现目录下有很多rpm包,我选择的是全部安装,耗时长了点。注意gcc的版本,版本是5以下的就下载redis6以下的版本。
2023-08-31 23:17:12 457
原创 nacos闪退、密码修改等通用问题
因为nacos的启动文件会获取JAVA_HOME,如果配置的不对,会直接闪退。1、先看一下是不是防火墙影响的,可以检查服务器上的其他服务是不是通的,例如用telnet 服务器ip 8848检查nacos能不能连上,可以用telnet 服务器ip 6379访问redis。密码修改后,要关闭数据库连接,再去启动nacos,不然会报错。2、上传到linux服务器,解压tar.gz文件,切到bin目录,使用sh ij登录。2、检查redis.conf文件的bind设置,如果没有配置对应的ip,也是不能访问的。
2023-08-31 19:56:36 1215
原创 链表的基础知识
单链表插入:cur.next、newNode.next都是引用,不改变值,只改变位置public void insertHead(int data){ //插入链表的头部 data就是插入的数据 ListNode newNode = new ListNode(data); //如果原来就有数据呢? newNode.next = head; //栈内存的引用 head = newNode; //插入O(1)}public void i.
2022-05-09 00:36:57 315
原创 数组基础知识
1、数组的内存地址是连续的,从0起始,使用数组时要注意角标越界2、数组的删除和新增都需要移动元素,所以速度很慢数组的新增:public void insert(int loc,int n){ //时间复杂度 O(n); if(index ++ < size){ for(int i = size - 1; i > loc ; i --){ data[i] = data[i - 1]; //把数据往后移一个 } da
2022-05-05 23:58:28 242
原创 基础面试题
1、判断一个数是否是2的N次方。用二进制与运算来判断,可以快速得出结论。if(n&(n-1) == 0)2、String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); //trueString str1 = "abc"; String str2 = "abc"; str1 = "bcd";System.out.println(str1 + "," + str2); //bcd,ab...
2022-05-05 23:16:41 368
原创 单链表的简单实现
链表是一种数据结构,不同与集合,链表添加、删除容易,查找慢。因为链表添加时增加和节点的连接就行,删除时断开和节点的连接也就可以了。 刚手写了一个单链表的简单实现代码,将自己的感悟写出来。 单链表的数据结构比较简单,包含有一个Node节点,节点代码如下。 class Node { T data; Node next; public Node(T data, Node ...
2020-04-20 00:07:33 173
原创 数据结构之查找排序数组中元素的第一个和最后一个位置
题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。思路:数组是一个顺序表,要查找元素在数组中出现的第一个和最后一个位置,可以采用两个for循环去查找,从头部和尾部找起,找到就break代码: public int[] searchRange(int[] nums, ...
2020-04-07 23:15:58 624
原创 数据结构之删除数组中的重复项
题目如下:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成思路:数组属于顺序表,对数组中的元素做比较,可以从下标0和1开始,从前往后做比较代码:classSolution{publicintremoveDupli...
2020-04-07 21:24:20 386
原创 Java并发编程基础概念
记录一下基础概念并行:多个进程一起执行,比如说两队人在两个窗口打饭(想到了大学生活)并发:并发和时间有关,脱离时间谈并发是不靠谱的。在单位时间内,多个线程一起执行,抢占cpu资源。比如说坐公交,以前都是你抢我夺,提前上车抢位置(现在好多了)Thread的创建方式只有两种,一种extend Thread ,另一种implements Runnable;如下图所示,Thread源码中有说...
2019-10-10 00:17:13 130
原创 Extjs4 Grid表格按中文排序和按数字大小排序
按中文排序:Ext.data.Store.prototype.createComparator = function(sorters){ return function(r1, r2){ var s = sorters[0], f=s.property; var v1 = r1.data[f], v2 = r2.data[f]; ...
2019-09-26 17:37:05 995
原创 Tomcat9.0.22版本过滤特殊字符{ }[ ] | \的问题
最近项目tomcat升级,从6升到9,碰到了一系列问题。其中,拼特殊字符串时,会报错。报错显示java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 org.apac...
2019-08-29 10:33:17 6048 3
原创 JDBC基本操作
使用jdbc处理sql语句操作基本分为5步,如下:1、加载Class.forName("com.mysql.jdbc.Driver");类注册驱动2、调用DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名", 用户名,密码);连接数据库,其中数据库地址和端口根据实际填写。3、编写sql语句4、创建预处理对象,P...
2019-08-25 17:59:36 156
原创 X-Frame-Options Header Not Set漏洞解决
这是用OWASP ZAP漏扫软件扫出来的漏洞,漏洞提示响应头没有设置。通过过滤器设置响应头,扫描的时候还是存在漏洞。仔细排查,在tomcat 9服务器的conf目录下,web.xml文件中,加入一段过滤代码,解决问题。在Java中增加过滤器的代码如下:HttpServletRequest req = (HttpServletRequest)request;HttpServletRespo...
2019-08-21 20:28:16 7632 1
原创 openssh从7.5升级到7.9之后,sftp工具连接不上
笔者的虚拟机中的openssh服务从7.5升级到7.9之后,sftp工具filezilla连接不上。经过排查,发现在/usr/libexec/openssh目录下缺少sftp-server、ssh-keysign两个文件。通过升级之前拍摄的快照,返回到7.5版本,拷出这两个文件然后到7.9的快照将这两个文件给放进去,同时赋予他们的执行权限。赋予权限命令:chmod +x sftp-server...
2019-08-20 11:19:54 4062
原创 linux下连接mysql报拒绝访问的问题
笔者装好mysql,启动服务后,连接mysql,拒绝访问,密码也不知道。折腾了好半天,才解决这个问题,分享给大家,希望能帮到各位。进入正题,首先在mysql的bin目录下启动服务,根据这条命令./mysqld_safe --skip-grant-tables,可以越过权限。然后新开一个会话,登录mysql,使用mysql数据库的user表。命令:mysql -u root mysql。...
2019-08-15 15:43:34 3519 1
原创 使用SpringMVC框架碰到的前端通过ajax传值,返回404的问题
之前解bug的时候碰到一个问题,前端的值通过ajax往后台传递,最终保存成功返回页面的时候报404错误。通常来说404是前端找不到请求的页面才会报出问题,但是数据都能保存了还报404就不合理了。排查前端没发现问题,就看后台的controller层代码。 因为使用的是注解,返回的是json数据,在返回数据的时候,没有加上ResponseBody注解,所以才会出现上述问题...
2018-09-25 16:16:11 1509
原创 前端select框的属性设置为disabled之后,数据不能提交到后台的解决办法
前几天在代码的时候设置了一个select框的属性为disabled,之后这个字段的值就不能传递到后台去。仔细检查字段,用的是form表单序列化ajax传值,name属性没有问题,断点调试发现后台字段取的值是空值。问了同事才知道,select框传值之前,disabled属性的值要设置成false往后台传递,才能取到值。 设置属性的代码如下:...
2018-09-25 16:03:48 1915
原创 group by分组之后怎么取到最新的数据
碰到多条数据分组的情况,以共同的数据(我是用的项目编号)进行分组,分组之后想要获得最新的数据,比如日期数据时,直接使用max函数就可以达到想要的效果。如图,多条数据的情况:直接分组得到的结果是:获取的不是最新的数据,参考网上的例子,先排序后分组也得不到理想的结果最后使用max得到的结果如下:通过这样获取最新的值...
2018-09-25 15:53:57 8614
原创 js中将毫秒值格式化为日期形式
这是日期格式化的方法 用到了js自带的几个对象,详细说明一下 getFullYear() 方法可返回一个表示年份的 4 位数字。 getMonth() 方法可返回表示月份的数字,因为是用数组的方式存储,下标从0开始,总是少一位,所以用的时候要加1。比如实际月份是5月,getMonth()得到的是4月,所以要加1。 getD...
2018-05-31 18:02:25 2434 1
原创 用ios企业证书发布ipa到服务器上扫码下载
这段时间公司需要做一个ios的app,用的是mui框架,在HBuilder中发行为原生的安装包,用的ios企业证书。我从ipa包生成之后说起。 ipa包生成之后,就到了下载这一步了,因为是企业证书,上不了app store,就只能通过页面扫码下载的方式了。如果直接生成ipa的下载地址是可以下载的,但是不能安装。如果要直接安装,需要通过一个plist文件,找到ipa的下载路...
2018-05-30 12:02:20 5515
原创 我在用H5做ios app开发中遇到的图片上传问题
直接说问题,图片在安卓机拍照和选取本地图片都可以上传,在ios就只能上传拍照的。开始还以为数据没有传到后台,本地测试没有连接上,测试不了后台代码。后来才能进行本地调试,发现错误的原因。这里说一下本地调试的问题。 因为我以前一直是做web开发的,本地的路径配置一直都是localhost:8080,这样写的。在web端像这样写肯定是没问题的,但是在app端就写出问题了,因为识别不了,...
2018-05-25 11:58:11 9580 2
原创 解决ssh项目中get请求传参导致的乱码问题
方法一:通过在tomcat的Server.xml文件中配置utf-8的格式解决,具体配置如下:找到<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>端口号为8080默认的,协议是HTTP/1.1协议,找到之后配置如下: <Connect...
2018-03-28 21:04:59 888
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人