自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 NIO BIO expoll等区别

应用场景:并发连接数不多时采用BIO,因为它编程和调试都非常简单,但如果涉及到高并发的情况,应选择NIO或AIO,更好的建议是采用成熟的网络通信框架Netty。Channel(通道):通道是双向的,可读也可写,而流的读写是单向的。而服务器的实现模式是多个请求一个线程,即请求会注册到多路复用器Selector上,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。这就是真正意义上的异步非阻塞,服务器的实现模式为多个有效请求一个线程,可能造成不必要的线程开销,严重的还将导致服务器内存溢出。

2022-09-26 10:44:45 153 1

原创 头插法和尾插法

1、JDK 1.7 采用头插法来添加链表元素,存在链表成环的问题,1.8 中做了优化,采用尾插法来添加链表元素2、HashMap 不管在哪个版本都不是线程安全的,出了并发问题不要怪 HashMap,从自己身上找原因。

2022-09-25 13:17:07 607

原创 CopyOnwriteArrayList原理和使用场景

内存占用问题 在为CopyOnWrite的写时复制机制,所以在进行与操作的时候,内存里会同时驻扎两个对象内存,旧的对象和新写入的对象(注意:在复制的时候只是复制容器里的引用,只是在写的时候会创建新对象添加容器里,而旧容器的对象还在使用,所以有两个对象内存)。所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素后,再将原容器的引用指向新的容器。

2022-09-25 11:17:55 630

原创 leetcode--哈希表专栏

前提知识哈希表的理论基础C++版题目速览242. 有效的字母异位词349. 两个数组的交集题目详解242. 有效的字母异位词整体思路法一:遍历两个字符串,建立两个哈希表,存进去每一个字符的个数,一次比较。很慢 public static boolean isAnagram(String s, String t) { if (s.length() != t.length()) return false; HashMap<Character, I

2021-12-04 17:45:35 224

原创 keil如何同时打开两个项目(工程)

打开一个的同时,最小化,再次点击快捷方式就可,就可以新打开一个keil

2021-11-23 21:43:04 2970 1

原创 leetcode--栈和队列专栏

前提知识统一用下面的定义队列和栈//队列Queue<String> queue = new LinkedList<String>();//栈Deque<Integer> stack = new ArrayDeque<Integer>();原因题目速览用栈实现队列题目详解232. 用栈实现队列整体思路:在push数据的时候,只要数据放进输入栈就好。在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部

2021-11-23 14:31:47 245

原创 leetcode--字符串专栏

题目速览反转字符串反转字符串II剑指 Offer 05.替换空格翻转字符串里的单词分题讲解344反转字符串如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。 public void reverseString(char[] s) { int head = 0; int end = s.length - 1;

2021-11-22 15:52:13 96

原创 java 二进制(正负数)与十进制互相转化

java 二进制(正负数)与十进制互相转化 //5转为二进制 System.out.println(Integer.toBinaryString(5)); //101 //-5转为二进制 System.out.println(Integer.toBinaryString(-5));//11111111111111111111111111111011 //5的二进制101转为10进制 BigInteger bi =

2021-11-17 22:33:59 909

原创 负数的二进制反码加一进位问题

-4的二进制编码=4的补码,而 补码 = 源码取反+1。先对 00000000 00000000 00000100取反后是11111111 11111111 11111111 11111011,取反后加1得11111111 11111111 11111111 11111100,正是最后结果。是进位的。

2021-11-17 21:44:56 582

原创 Sevlet-tomcat使用中的一些注意事项

Tomcat配置问题换另一个JavaEE项目需要重新编辑选择你要运行的JavaEE文件,可以修改他的虚拟路径前面改为重新设计的虚拟路径,以方便直接浏览器运行JavaEE项目注意即使用注解,不在web.xml中修改属性,这个也不要注释掉项目运行问题运行下一个时,要将上一个正在运行的关闭,否则会端口被占用...

2021-11-13 14:48:14 201

原创 druid.properties的配置

driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql:///bd2?serverTimezone=UTC&useSSL=false# 注意这里是usernameusername=rootpassword=xxxxxxxx# 初始化申请的连接数量initialSize=5# 最大的连接数量maxActive=10# 超时时间3000maxWait=3000...

2021-10-19 17:23:48 509

原创 c3p0-config.xml配置

<c3p0-config> <!-- 使用默认的配置读取连接池对象 --> <default-config> <!-- 连接参数 --> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///bd2?serverTimezo

2021-10-19 17:22:39 729

原创 java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.

java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.背景原因解决背景按照黑马的视频学习C3P0数据库连接池时,自己用了最新的jar包,包括连接数据库的驱动包。搭建环境之后,测试是否能正常连接数据库时,按照黑马视频写了main方法,看能否得到getConnection方法的返回值结果是遇到了两个错误:显示是连接超时原因MySQL 8.0 以下版本 - JDBC 驱动名及数据库 U

2021-10-18 23:02:15 1130

原创 KMP算法

前提假设字符串str1和str2,str1是否包含str2,如果包含返回str2在str1中开始的位置。如str1:ABC1234de str2:1234de str1就包含str2。经典的做法是,依次遍历str1和str2进行比较,最差的情况例如:str1:11111111112(长度N) str2:1112(长度M),那么时间复杂度是O(N * M)如何进行优化呢?实现时间复杂度是O(N)KMP算法str2的前缀和后缀在实现KMP算法之前,我们首先需要知道的是str2的前缀和后缀相等时的最

2021-04-16 18:50:05 48

原创 布隆过滤器

问题假设在讲布隆过滤器之前,我们先设想这样的一个问题,目前有100亿个网络黑名单URL,假设一个URL是64字节,设计一种方法,该方法使得用户访问这些网址时,给予警告信息。注:该方法可以实现加入URL,查询URL,但是没有删除URL的功能想法一用HashSet,将所有的这些URL根据哈希函数算出的哈希值得知对应放进HashSet的位置,用户在访问的时候查找哈希表即可。分析因为一个URL占有64字节,那么100亿就是6400亿字节,因为10亿字节约等于1G,故需要640G的内存空间。这是十分吓人的

2021-04-16 18:48:29 77

原创 一致性哈希原理

经典的服务器可以简单分为逻辑层和数据层逻辑端:逻辑端的服务器,不需要维持数据,而是需要向数据端服务器要数据,添加数据数据端:数据端的服务器可以是一台整个大机器,如mysql,Postgre所有数据在一块,那么数据来了之后直接通过逻辑端的机器存入数据端的机器就OK,缺点就是数据量不大。数据端的服务器可以是分布式的,比如有0号、1号、2号机器。每号机器都维持自己的专属数据,存的数据都是不同的。如果要存入一个数据,可以算出这个数据的哈希值在%m就知道要存进那一台的机器上。这样就确定了这个

2021-04-16 18:47:25 81

原创 并查集结构

前提假设现在我们设想有这样的一些集合:{a,…}{b,…}{c,…}{d,…}{e,…}现在需要实现两个功能:查出a,b所在的集合是不是一个集合 isSameSet(a,b)合并两个集合 union(a,b)我们有很多的方式实现这个功能,比如:用链表、用哈希表。用链表的优点和缺点:合并两个集合比较快、查询是不是同一个集合就需要遍历a链表看里面有没有b,很慢用哈希表的优点和缺点:查询是不是同一个集合比较快、但是合并两个集合就需要把a的集合中所有元素导入到b集合中,很慢相关思考怎样实现

2021-04-16 18:45:33 138

原创 Manacher算法

又名“马拉车”算法。前提假设引出这个算法需要设想这样的一个题目:求一个字符串的最大回文子串。注意:子序列和子串的区别 ababd的子序列之一是aad,ababd的子串就不可以是aad,因为没有在一起经典解法添加虚拟节点将字符串122131变成#1#2#2#1#3#1,然后以第一个点为轴左右进行比较看看回文,以第二个点为轴左右进行比较看看回文,。。。然后得到的数字进行/2操作,向下取整,最大的就是最长的回文序列。注意:添加的虚拟节点可以是任意符号,都不会影响结果。因为最后都进行/2操作了

2021-04-16 18:43:34 49

原创 Mysql的下载和安装以及Navicat的连接

Mysql的下载和安装自己在csdn上搜了半天,试了很多次都是在一些步骤后和原博主不一样了,最终找到了自己安装成功的博客。博客Mysql下载与安装地址:原地址在配置环境变量之后,可以打开mysql的服务:cmd键入net start mysql这时可能会出现以下问题:这里的原因一般是mysql的名称没有写对,可以在搜索行中直接写service:或者输入直接回车:如果都打不开可以:点击我的电脑,选择管理:在选中服务和应用程序下的服务选项打开服务之后找到对应的Mysql的名

2021-01-04 17:27:28 296

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除