随笔
文章平均质量分 59
我没有在划水
365^1.01
展开
-
面试逃不过的HashMap哈希原理,这一次一定要弄懂
目录1. 前言2. 哈希算法的目标2.1 如何保证效率?2.2 怎么减少哈希冲突?2.3 怎么进行扰动?2.4 新的算法效果如何?3. 结尾1. 前言HashMap绝对是JDK源码中比较精髓的存在,除此之外还有AQS,线程池等等。但是由于HashMap是我们接触最早也是接触最多的,所以面试八股文中绝对少不了它的存在。想要学习一门技术能够大概了解它的原理其实已经差不多了,但是面试官往往会刨根问底,追问你put流程,resize过程,为什么负载因子是0.75之类的……其实这些都还好,最让人头疼的是哈希算原创 2021-08-22 11:23:28 · 2578 阅读 · 1 评论 -
为什么有MESI了还要volatile?你真的了解volatile吗
目录前言二级目录三级目录前言我们先假设这样一个场景:面试官:“小伙子,看你简历写了精通多线程,能说下什么是JMM吗?”你:“JMM就是Java内存模型,这个呢要先从CPU缓存架构说起巴拉巴拉……所以JMM就是为了屏蔽操作系统这些底层细节,为了能够做到一次编译到处运行而实现的一套抽象机制。”面试官:“不错,那volatile知道吗?说下它的原理呗。”你:“前面说了CPU缓存,在多核的情况下为了保证缓存一致性,CPU引入了MESI缓存一致性协议,”二级目录三级目录...原创 2021-08-20 20:43:50 · 4258 阅读 · 8 评论 -
layui解决table表格某项内容过长导致挤开变形问题
在用layui的table模块时,会出现这种问题:某一行的一个配置内容过长的时候,整个表格就会被挤压变形,变得很难看,解决方案是:V2.6.0版本之前,找到table.js文件,搜索‘data-content’,把这段内容替换掉V2.6.0版本及之后,没得模块的概念了, 直接去layui.js改就完事替换前:e.push('data-content="'+m+'"')替换后:e.push('data-content="'+i("{{=d.t }}").render({t:m})+'"原创 2021-04-21 17:55:28 · 4581 阅读 · 0 评论 -
记一次频繁YoungGC生产问题排查思路及解决方案
1、问题背景系统开发了新功能上线,本来上完之后功能验收正常,就在大家都松了一口气安心听技术分享时,晚上6.56分突然收到了系统告警:YoungGC时间过长,说实话一开始看到这个告警心里是毫无波澜的,一是因为一次YoungGC时间过长影响不大,二是因为这是内部系统,虽然处理的数据量比较大,但是YoungGC不会影响功能正常运行。当时心里的第一想法是:应该是刚启动导致系统有些不平稳,过一会儿就好了。然而过了几分后,第二台主机也开始告警,意识到问题严重性的我赶紧跑上来排查问题。2、GC日志分析首先原创 2021-04-16 10:18:28 · 6815 阅读 · 2 评论 -
win10与linux以太坊客户端Geth私链搭建教程
本来去年就应该写这个教程记录一下的,然而以为自己以后不会用到,所以偷懒没写……被打脸之后重新记录一波,如何在win10以及linux上面搭建一个以太坊的私链1、win10搭建教程首先保证你的电脑系统是win10,然后第一步,去官网下载Geth,我这里选的版本是1.9.12下载地址:https://geth.ethereum.org/downloads/下载好了之后,双击安装,然后打开安装目录,你会发现Geth.exe安静的在里面躺着:...原创 2021-04-06 18:45:14 · 2911 阅读 · 1 评论 -
No module named ‘torch‘ 解决方案(某git项目跑不起来)
先提前说明一下,该解决方案仅针对git上面某个项目情况:下载下来安装好python环境之后,会卡在这个地方:于是不决肯定是先百度,然而百度的结果有点感人,要你安装这个安装那个balabala,实际上根本不用这么麻烦!首先第一步,保证你的python是64位的,32位的有坑无论如何都安装不了(反正我是没安装好,果断卸载重装)然后第二步,不要管’torch’,直接安装后面那个torchvisionpip install torchvision --user然后你会惊奇的发现,它帮你把torc原创 2021-02-24 13:58:01 · 4233 阅读 · 1 评论 -
关于springboot配置https以及端口占用问题
有时候我们希望在自己本地的springboot上面配置https用作一些临时用途,本篇博客将教大家如何最简单的方式在几分钟内配置好https并使用:一:使用jdk自带的工具生成自签名证书keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore D:/keystore.p12 -validity 3650最后按Y执行完成之后会在你的D盘下生成一个keystore.p12文件二:修改spr原创 2021-02-20 12:30:00 · 3626 阅读 · 4 评论 -
java操作selenium切换标签页
有时候我们需要使用Selenium来打开并切换标签页,但是Selenium似乎没有直接为我们提供API。如果直接调用多次如下语句的话,只会多次刷新,并没有打开新的标签页driver.get("http://www.baidu.com");通过如下代码,就能实现切换标签页操作了:ChromeDriver driver = new ChromeDriver(options);// 先执行js语句打开一个新的标签页driver.executeScript("window.open('')");//原创 2021-02-15 17:20:48 · 3929 阅读 · 1 评论 -
Java使用Selenium操作chrome进行debug
想要爬取数据,验证码是必须要过的一关,而如今绝大部分验证码都鬼精鬼精的,想要破解起来比较麻烦。虽然Selenium这个自动化测试工具可以帮我们模拟用户行为,但是Selenium自带的一些标签可以让网站轻轻松松就识别出你是爬虫,直接把你干掉,那么该怎么绕过这一关呢?我们可以使用Chrome的debug模式:1、打开ChromeString path = "你的Chrome路径";String dir = "存储用户数据的路径";List<String> cmd = new ArrayL原创 2021-02-15 17:01:40 · 3343 阅读 · 0 评论 -
pagehelper分页失效解决方案
emmm讲道理,在进行查询之前,调用如下方法PageHelper.startPage(pageNo, pageSize);// 查询方法doQuery();分页插件就会自动给你做好分页工作,无论你是MYSQL还是ORACLE但是今天用的时候死活不给我分页,宛如智障……查看了一些博客说是版本问题,看了下也不是,后来无意间发现,是自己的参数有问题:{ "pageNum": 0, "pageSize": 2}pageNum和pageSize,无论哪个参数为0,都会导致分页失效原创 2021-01-28 15:49:05 · 2927 阅读 · 0 评论 -
利用设计模式优雅地消除业务代码中大量的if/else和重复逻辑
目录前言业务场景解决方案1解决方案2前言if…else…绝对是我们日常编码中用到最多的,但是过多的使用,会导致我们代码可读性极差,并且一点也不美观。但是在一些场景下,我们可以使用设计模式来进行优化,让你的业务代码不仅优雅简洁,而且可扩展性极强。业务场景我们先来说一个业务场景:假如你在对接三方支付,这时候可能有支付宝、微信、银联三个产品需要对接,你需要根据用户选择交易类型来使用具体的三方平台。解决方案1大多数人的想法可能会很直接:if("微信".equals(type)){// 执行微信相原创 2020-12-13 00:07:52 · 4295 阅读 · 0 评论 -
nginx反向代理导致后端session失效解决方案
系统在测试环境中发现前端登录成功之后会立即弹出,浏览器检查请求之后发现登录成功之后由于在进入首页的其它请求中没有cookie导致依然被拦截判定没有登陆。怀疑是nginx转发过程中导致session丢失,查看nginx配置:location /api/ { proxy_pass http://172.26.31.2:8080/; error_log /var/log/nginx/logs/api_error.log infoi; index index.h原创 2020-09-28 14:09:13 · 2655 阅读 · 0 评论 -
java集成ldap验证用户名和密码
目录前言连接LDAP查找信息校验用户名密码前言最近一个项目需要用到ldap验证,特此记录一下过程。基本上的API的调用,但是有几个问题点还是要说明一下。首先,先准备好四个属性:url= ldap://127.0.0.1:portbase= xxxusername= xxxpassword= xxx连接LDAPpublic static LdapContext connetldap() throws Exception { // 连接Ldap需要的信息 S原创 2020-08-25 10:23:38 · 1970 阅读 · 1 评论 -
CentOS7使用docker搭建单机版zookeeper及dubbo-admin
确保你的服务器能使用docker1、拉取zookeeper镜像docker pull zookeeper:3.4.142、创建目录用于挂载zookeeper数据文件、日志文件和配置文件mkdir -p /usr/local/docker/zookeeper/datamkdir -p /usr/local/docker/zookeeper/confmkdir -p /usr/local/docker/zookeeper/logs3、切换目录编写配置文件zoo.cfgcd /usr/loca原创 2020-08-05 15:58:58 · 333 阅读 · 0 评论