自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(203)
  • 资源 (4)
  • 收藏
  • 关注

原创 Socket客户端服务端收发对象

对象类代码import lombok.Data;import lombok.experimental.Accessors;import java.io.Serializable;@Data@Accessors(chain = true)public class Userinfo implements Serializable { private long id; private String username; private String password;

2022-04-23 21:43:02 349

原创 国密SM2非对称加密算法(对本地文件的加解密)代码展示

代码package com.example.demo.MIMAXUE.SM;import java.io.*;import java.math.BigInteger;import java.security.SecureRandom;import java.util.Arrays;import org.apache.commons.io.FileUtils;import org.bouncycastle.crypto.params.ECDomainParameters;import or

2022-04-07 11:30:16 2040 1

原创 国密SM4对称加密算法(对本地文件的加解密)代码展示

代码package com.example.demo.MIMAXUE.SM;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;p

2022-04-07 11:22:50 4650

原创 java获取你的电脑硬件信息

Maven包包使用较新的版本,旧版本在amd或者win11会有参数不齐的bug<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>5.8.1</version></dependency>具体代码imp

2022-04-02 15:54:21 1892 2

原创 RSA非对称加密算法-java实现(FILE文件)

代码import org.apache.commons.lang3.ArrayUtils;import javax.crypto.Cipher;import java.io.*;import java.security.*;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec

2021-11-22 20:56:03 335

原创 countDownLatch

CountDownLatch所提供的功能是判断count计数不为0时则当前线程呈wait状态,也就是在屏蔽处等待实现等待的方法是await(),实现继续运行的是countDown()代码演示import java.util.concurrent.CountDownLatch;public class Service { private CountDownLatch down = new CountDownLatch(2); public void test(){ tr

2021-09-22 20:14:06 276

原创 高并发学习-seamphore

seamphorepackage com.example.demo.JUC.Semaphore;import java.util.concurrent.Semaphore;public class service { private Semaphore semaphore = new Semaphore(2); public void testMehtod(){ try { semaphore.acquire();

2021-09-21 21:13:45 104

原创 select poll epoll 对比

selectselect 代码演示//select实现简单的TCP服务器编写 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <netinet/in.h> #include <arpa/inet.h> #define MAXLINE 80 #define SERV_PORT 6666 int main() { struct

2021-09-21 17:22:57 100

原创 百度笔试-第二题 有效数字123求最大值

代码package com.example.demo.baidu;import java.util.Scanner;public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); String[] array = new Stri

2021-09-07 21:13:13 140

原创 redis,zookpeer分布式锁

redis这个目的是加锁setifabsent(key,value,time,timeunit.seconds) //设置key的存活时间,原子语句看锁是否能够加上,如果存在key值上面的方法返回false,对系统调用error加锁执行业务逻辑释放锁为什么要加时间呢!finally执行不到呀,就会造成永久性锁。带来一个问题 事务比较长的化,如15s的操作10s另一个线程进来进行加锁,再过5s 线程A将锁释放,之后C线程可以进来刚加的锁永久失效!解决方法设置value值为uuid ,在释放

2021-09-01 09:22:53 180 1

原创 科大讯飞秋招8.15第一题

题目描述给一个整数,变为2进制形式,将倒数第二个0改为1,输出结果如 10 -> 14 10的二进制1010->11106->14 6的二进制110->1110解题思路如果输入的是偶数,那么末端为0,依次找出第二个0改为1即可^运算相同为0,不同为1取2的倍数依次与输入的数做异或运算,当结果大于输入值时,第二个数找到如果是奇数,重复上述操作,改变的是第一个值,记录当前的异或数再次重复,改变第二个0 得到中间结果用中间结果 减去异或数,得到最终结果!代码展示im

2021-08-16 10:15:13 255

原创 二叉树实现非递归遍历(java)

二叉树先序,中序,后序遍历都是相对于父节点(有孩子的节点),或者单一节点而言的。左右二孩节点相对位置不变。此节点如果先遍历则为先序,在中间则为中序,在最后则为后续。图片来源于百度!代码展示:import java.util.Stack;public class PreMidAfter { public static void main(String[] args) { TreeNode[] treeNodes = new TreeNode[10]; for

2021-08-13 09:24:23 254

原创 有效三角形的个数-triangleNumber

题意给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。解题思路三角形定理,两条较小边大于第三边双指针指向两个较小边找第三边(ps大于两条小边)具体代码class Solution { public int triangleNumb

2021-08-04 10:34:03 533

原创 矩阵中战斗力最弱的k行-kWeakestRows

题意给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。示例 1:输入:mat =[[1,1,0,0,0],[1,1,1,1,0],[1,0,0,0,0],[1,1,0,0,0],[1,1,

2021-08-01 09:59:34 110

原创 Mysql学习-第四章(分布式架构篇)-分布式数据库架构选型:分库分表or中间键

分库分表直接访问在业务逻辑中加入分库分表的路由逻辑,在业务层计算出对应分片的信息,然后访问数据库如:void InsertOrders(String orderKey, int userKey...) { int shard_id = userKey % 4; if (shard_id == 0) { conn = MySQLConncetion('shard1',...); conn.query(...); } else if (shard_id == 1) {

2021-07-30 09:13:52 306

原创 Mysql学习-第四章(分布式架构篇)

分布式数据库概念分布式数据库是一种把数据分散存储在不同物理位置的数据库。计算层:单机数据库中的sql层,用来对数据访问进行权限检查、路由访问,以及对计算结果的操作。元数据层:记录了分布式数据库集群下有多少个存储节点,对应ip、端口等元数据信息是多少。当分布式数据库的计算层启动时,会先访问元数据层,获取所有集群信息,才能正确进行 SQL 的解析和路由等工作。另外,因为元数据信息存放在元数据层,那么分布式数据库的计算层可以有多个,用于实现性能的扩展。存储层:用来存放数据,但存储层要和计算层在同一台服务

2021-07-23 14:48:44 1500

原创 绝对差值和

问题描述给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。|x| 定义

2021-07-14 14:35:24 941 1

原创 大餐计数- countPairs

题目描述大餐 是指 恰好包含两道不同餐品 的一餐,其美味程度之和等于 2 的幂。你可以搭配 任意 两道餐品做一顿大餐。给你一个整数数组 deliciousness ,其中 deliciousness[i] 是第 i​​​​​​​​​​​​​​ 道餐品的美味程度,返回你可以用数组中的餐品做出的不同 大餐 的数量。结果需要对 109 + 7 取余。注意,只要餐品下标不同,就可以认为是不同的餐品,即便它们的美味程度相同。示例 1:输入:deliciousness = [1,3,5,7,9]输出:4

2021-07-07 10:06:01 198

原创 Excel表列名称

题意给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB ...示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: “ZY”解题思路26进制数26表示为z并不是A0代码演示class Solution { char[] numbers; StringBui

2021-06-29 11:53:54 155

原创 Mysql学习-第三章(或用三大架构)

高可用(High Availability)是系统所能提供无故障服务的一种能力。 简单地说就是避免因服务器宕机而造成的服务不可用。几个9判断宕机时间,并以此计算出每年系统可用时间达到几个 9,来判断高可用架构是否健壮。具体如下表所示:通常来说,系统至少要达到 4 个 9(99.99%),也就是每年宕机时间不超过 52.56 分钟,否则用户体验会非常差,感觉系统不稳定。99.99% = 1 - 52.56 / (3652460)不过 4 个 9 宕机 52 分钟对于生产环境的影响还是比较大,但是

2021-06-21 17:56:09 142

原创 Mysql学习-第三章(复制延迟)

逻辑日志的优缺MySQL 复制基于的二进制日志是一种逻辑日志,其写入的是每个事务中已变更的每条记录的前项、后项。有了每条记录的变化内容,用户可以方便地通过分析 MySQL 的二进制日志内容,准时地将 MySQL 中的数据同步到异构的数据平台,如 HBase、ES、Hive 等大数据平台。我们可以发现,逻辑日志简单易懂,方便数据之间的同步,但它的缺点是:事务不能太大,否则会导致二进制日志非常大,一个大事务的提交会非常慢。假设有个 DELETE 删除操作,删除当月数据,由于数据量可能有 1 亿条记录,可

2021-06-19 10:36:04 262

原创 Mysql学习-第三章(Mysql复制)

数据库复制本质就是数据同步。MySQL 数据库是基于二进制日志(binary log)进行数据增量同步,而二进制日志记录了所有对于 MySQL 数据库的修改操作。在默认 ROW 格式二进制日志中,一条 SQL 操作影响的记录会被全部记录下来。如下图所示通过 MySQL 数据库自带的命令 mysqlbinlog,可以解析二进制日志,观察到更为详细的每条记录的信息mysqlbinlog -vv binlog.000004以通过二进制日志记录看到被删除记录的完整信息,还有每个列的属性,比如列的类型

2021-06-15 21:17:25 133 1

原创 Mysql学习-第二章(使用分区表)

分区表涉及表结构设计,也设计索引的设计,是否需要设计使用分区表分区表的使用分区表就是把物理表结构相同的几张表,通过一定算法,组成一张逻辑大表。这种算法叫“分区函数”,当前 MySQL 数据库支持的分区函数类型有 RANGE、LIST、HASH、KEY、COLUMNS。无论选择哪种分区函数,都要指定相关列成为分区算法的输入条件,这些列就叫“分区列”。另外,在 MySQL 分区表中,主键也必须是分区列的一部分,不然创建分区表时会失败,比如:CREATE table part(a int,b int,

2021-06-10 11:28:37 422

原创 注解开发AOP

配置类@Configuration//声明当前类是一个配置类,相当于一个Spring的XML配置文件@EnableAspectJAutoProxy //表示开启AOP代理自动配置public class LogConfigation {}注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface LogAnnotation { String value() default "";

2021-06-09 10:30:05 62

原创 Mysql学习-第二章(使用子查询)

mysql8.0之后对子查询的优化得到大幅提升为什么使用子查询更符合逻辑,如“找到1993年,没有下过订单的客户数量”select count(c_custerkey) cntfromcustomerwhere c_custerkey not in(select o_custerkey from orders where o_orderdate >= '1993-01-01' And o_orderdate < '1994-01-01')

2021-06-08 09:36:44 190

原创 Redis怎样实现分布式锁

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。是为了解决分布式系统中,不同的系统或是同一个系统的不同主机共享同一个资源的问题,它通常会采用互斥来保证程序的一致性,这就是分布式锁的用途以及执行原理。分布式锁的常见实现方式有四种:基于 MySQL 的悲观锁来实现分布式锁,这种方式使用的最少,因为这种实现方式的性能不好,且容易造成死锁;基于 Memcached 实现分布式锁,可使用 add 方法来实现,如果添加成功了则表示分布式锁创建成功;基于 Redis 实现分布式锁,这也是本课时要介绍的重

2021-05-31 15:57:34 283

原创 Mysql学习-第二章(CBO工作原理)

MySQL 优化器是 CBO,即一种基于成本的优化器。在关系型数据库中,B+ 树索引只是存储的一种数据结构,具体怎么使用,还要依赖数据库的优化器,优化器决定了具体某一索引的选择,也就是常说的执行计划。而优化器的选择是基于成本(cost),哪个索引的成本越低,优先使用哪个索引。对orders表创建3个索引 CREATE TABLE `orders` (  `O_ORDERKEY` int NOT NULL,  `O_CUSTKEY` int NOT NULL,

2021-05-31 10:21:12 758

原创 手写实现一个本地缓存

非并发的条件使用hashmap,并发的条件使用ConcurrentHashMap考虑过期和缓存淘汰过期策略常见定时删除设置键值的过期时间,创建一个定时时间。当到达过期时间后,事件处理器会执行删除过期键的操作。它的优点是可以及时的释放内存空间,缺点是需要开启多个延迟执行事件来处理清除任务,这样就会造成大量任务事件堆积,占用了很多系统资源。惰性删除不会主动删除过期键,而是在每次请求时才会判断此值是否过期,如果过期则删除键值,否则就返回正常值。它的优点是只会占用少量的系统资源,缺点是清除不够及

2021-05-28 16:21:53 544

原创 汉明距离总和-totalHammingDistance

题意两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)所以答案为:HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 +2 + 2 = 6.注意:数组中元素的范围为从 0到

2021-05-28 09:55:46 158

原创 Mysql学习-第二章(组合索引)

组合索引是指多个列所组成的B+树索引,既可以是主键索引,也可以是二级索引组合,下图为一个索引图组合索引(a,b),(b,a)完全不同示例,组合索引(a,b),对列ab进行排序SELECT * FROM table WHERE a = ?SELECT * FROM table WHERE a = ? AND b = ?上述 SQL 查询中,WHERE 后查询列 a 和 b 的顺序无关,即使先写 b = ? AND a = ?依然可以使用组合索引(a,b)。但是下面的 SQL 无法使用组合索引

2021-05-27 15:28:18 1545

原创 Mysql学习-第二章(索引组织表)

InnoDB 存储引擎是 MySQL 数据库中使用最为广泛的引擎,在海量大并发的 OLTP 业务中,InnoDB 必选。它在数据存储方面有一个非常大的特点:索引组织表(Index Organized Table)。索引组织表数据存储有堆表和索引组织表两种方式堆表中的数据无序存放,数据的排序完全依赖于索引(Oracle、Microsoft SQL Server、PostgreSQL 早期默认支持的数据存储都是堆表结构)。堆表的组织结构中,数据和索引分开存储。索引是排序后的数据,而堆表中的数据是无序的

2021-05-26 19:14:33 910

原创 Mysql学习-第二章(索引排序的艺术)

索引是什么索引是提升查询速度的一种数据结构。索引之所以能提升查询速度,在于它在插入时对数据进行了排序(显而易见,它的缺点是影响插入或者更新的性能)。B+树索引B+ 树索引是数据库系统中最为常见的一种索引数据结构,几乎所有的关系型数据库都支持它。那为什么关系型数据库都热衷支持 B+树索引呢?因为它是目前为止排序最有效率的数据结构。像二叉树,哈希索引、红黑树、SkipList,在海量数据基于磁盘存储效率方面远不如 B+ 树索引高效。所以,上述的数据结构一般仅用于内存对象,基于磁盘的数据排序与存储,最

2021-05-26 10:07:19 142 1

原创 Mysql学习-第一章(表设计表压缩)

数据库由一行行记录组成,每行记录存放到页中,一个页的默认大小为16k,一个个页组成了每张表的表空间如果一个页中存放记录越多,那么性能也越高这是因为,数据库表空间中的页存放在磁盘上,MySQL数据库先从磁盘中的页读取到内存缓冲池中,以页为单位进行读取和管理记录如果想页中的记录变多,可以启用压缩(记录、页、表压缩)普遍使用页压缩这是因为压缩每条记录: 因为每次读写都要压缩和解压,过于依赖 CPU 的计算能力,性能会明显下降;另外,因为单条记录大小不会特别大,一般小于 1K,压缩效率也并不会特别好。

2021-05-25 10:19:39 755 1

原创 Mysql学习-第一章(表设计忘记范式标准,主键设计)

第一范式要求所有属性都是不可分的基本数据项;第二范式解决部分依赖;第三范式解决传递依赖。工程上的表结构设计每张表一定要有一个主键(自增主键设计、UUID主键设计、业务自定义生成主键)消除冗余数据存在的可能并不一定要追求数据库范式标准,有时还会进行反范式的设计自增主键设计非核心业务表可以用BIGINT的自增类型作为主键,由于整型的自增型,数据库插入也是顺序的,性能比较好核心业务表,一定不要用自增做主键6个原因自增存在回溯问题自增值在服务器 产生,存在并发性能问

2021-05-24 11:33:17 194 1

原创 Mysql学习-第一章(表设计JSON类型)

为什么使用json类型。关系型的结构化存储存在一定弊端,预先定义好所有的列以及列对应的类型。业务在发展过程中,需要扩展单个列的描述功能,使用json数据类型,额能够打通关系型和非关系型数据的存储界限,为业务提供更好的架构选择Mysql支持RFC7159定义的JSON规范,主要有JSON对象和JSON数组两种类型。JSON对象表示存储图片的相关信息{ "Image": { "Width": 800, "Height": 600, "Title": "View from 1

2021-05-21 10:15:37 641

原创 Mysql学习-第一章(表设计日期类型)

日期类型常见的日期类型有year,date,time,datetime,timestamep-精确到秒常用datetime,timestamepDATETIME展开形式:YYYY-MM-DD HH:MM:SS 固定占用8字节5.6版本之后支持到毫秒DATETIME(N)表示毫秒的精度,同时,一些日期函数也支持精确到毫秒,例如常见的函数 NOW、SYSDATE:SELECT NOW(6);NOW(6)2021-05-20 09:21:48.762670当我们设计表的时候,有两个字段值,一个是

2021-05-20 10:31:41 1102 1

原创 Mysql学习-第一章(表设计字符串类型)

字符串类型MySQL 数据库的字符串类型有 CHAR、VARCHAR、BINARY、BLOB、TEXT、ENUM、SET。不同的类型在业务设计、数据库性能方面的表现完全不同,其中最常使用的是 CHAR、VARCHAR。CHAR(N) 用来保存固定长度的字符,N 的范围是 0 ~ 255,请牢记,N 表示的是字符,而不是字节。VARCHAR(N) 用来保存变长字符,N 的范围为 0 ~ 65536, N 表示字节。在超出 65536 个字节的情况下,可以考虑使用更大的字符类型 TEXT 或 BLOB,

2021-05-19 15:51:59 375 1

原创 Mysql学习-第一章(表设计数字类型)

表设计数字类型整数类型类型字节大小范围(有符号)范围(无符号)tinyint1-128-1270-255smallint2-32768-327670-65535mediumint3int4BIGINT8其中关键字signed表示有符号,unsigned表示无符号(自然数),建议不要可以使用unsigned原因当设计数据表字段的时候使用unsigned,当分析某条数据的时候,两数相减可能会抛出错误,值有可能小于0.

2021-05-19 14:06:30 413 1

原创 centos7 上部署springboot项目+vue项目

前提需求安装npm&node感谢来自 weixin_33877885的博文Centos7:安装node和npm & npm配置全局路径注意:笔者安装的版本(上篇文章第一步)https://npm.taobao.org/mirrors/node/v12.22.1/node-v12.22.1-linux-x64.tar.xz笔者并没有使用软连接(上篇文章的第七步)安装jdk(1.8版本)yum install -y java-1.8.0-openjdk-devel.x86_

2021-05-16 13:09:24 738 3

原创 minDays-制作m束花所需的最少天数

题意给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。示例 1:输入:bloomDay = [1,10,3,10,2], m = 3, k = 1输出:3解释:让我们一起观察这三天的花开过程,x 表示花开,而 _ 表示花还未开

2021-05-09 16:06:12 190

Redis基础学习-整理笔记

Redis的介绍及Redis常见的操作。Redis的介绍及Redis常见的操作。Redis的介绍及Redis常见的操作。

2020-11-28

数据库多表查询练习.txt

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。 数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作

2020-01-31

java封装类.txt

依student对象做类,描述了成员变量以及成员方法;具体的方法实现在后续更新

2019-09-18

空空如也

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

TA关注的人

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