工作
文章平均质量分 74
什么什么啊啊啊
勿在浮沙筑高台,不为繁华易匠心
展开
-
工作记录-------正则表达式---小白也能看懂
这个正则表达式是用来验证中国大陆手机号码格式的,匹配规则是以1开头,并且符合国内手机号码的第二位规定,接着后面是8个数字。这些是正则表达式中常用的一些基本元素,结合它们可以构建复杂的模式来匹配各种文本。: 方括号内的 ^ 放在开头时,表示取反,匹配除了方括号内字符之外的任何字符。: 分别匹配数字、字母数字下划线(单词字符)、空白字符(空格、制表符等)。: 这些是对应小写字符的反义,匹配非数字、非单词字符、非空白字符。: 管道符表示“或”的意思,匹配两个模式之一。这些是锚定字符,分别匹配字符串的开头和结尾。原创 2024-01-10 10:58:56 · 401 阅读 · 0 评论 -
工作记录----CountDownLatch(特别好用的一个工具类)
的作用是允许一个或多个线程等待其他线程完成操作,通过一个初始值的计数器实现。主要原理是调用await()让一个线程等待,直到计数器变为零;而其他线程调用递减计数器。使用时需要注意正确递减计数器、线程释放问题和线程安全性。设计时要谨慎考虑,确保各个线程能够正常完成任务以及等待线程能够适时释放。原创 2023-12-26 22:30:00 · 1123 阅读 · 0 评论 -
工作记录---项目开发的过程中注意哪些防止网络攻击的手段?
我们使用加密技术,比如SSL/TLS协议,来加密敏感数据,确保数据在传输过程中不被窃取或篡改。实现方式包括使用加密协议(如SSL/TLS)来保护数据传输,使用HTTPS协议来加密网站传输的数据,以及对敏感数据使用加密算法(如AES、RSA)进行加密。这包括多因素身份验证、强密码策略和权限管理,确保只有授权的用户能够访问系统,并且只能进行他们被授权的操作。“我们对用户输入进行验证和过滤,防止恶意输入导致的安全漏洞,比如SQL注入和跨站脚本攻击。定期备份数据,确保备份的安全性和有效性。原创 2023-12-26 20:30:00 · 403 阅读 · 0 评论 -
工作记录---如何设计一个各方面性能较高的数据库
这些措施可以帮助优化美团外卖类似系统的数据库设计,提高数据库的性能、稳定性和安全性,以应对大量用户和高并发的访问。:使用数据库主从复制或分片技术,提高数据库的读取和写入性能,增强系统的可用性和扩展性。:在订单号、用户ID、商家ID、下单时间等字段建立索引,以加速订单查询和统计。:定期进行数据库优化,如索引重建、统计信息更新等,以保持数据库性能的稳定。:存储订单信息,包括订单ID、用户ID、商家ID、下单时间、总金额等。:存储用户信息,包括用户ID、用户名、手机号、地址等。原创 2023-12-26 15:37:29 · 1190 阅读 · 0 评论 -
工作记录----关于跳表---小白也能看懂--图文并茂---再也不担心看源码看不懂咯~
跳表在创建节点时候,会生成范围为[0-1]的一个随机数,如果这个随机数小于 0.25(相当于概率 25%),那么层数就增加 1 层,然后继续生成下一个随机数,直到随机数的结果大于 0.25 结束,最终确定该节点的层数。在第 i 层中的元素按某个固定的概率 p(通常为 ½ 或 ¼ )出现在第 i + 1层中,产生越高的层数,概率越低。元素层数大于等于 3的概率为 p^2,而元素层数恰好等于 3 的概率为 p^2 * (1 – p)元素层数大于等于 4 的概率为 p^3,而元素层数恰好等于。原创 2023-12-15 08:00:00 · 915 阅读 · 0 评论 -
工作记录-----TOP K 小顶堆源码---小白也能看懂
在 Java 中使用堆数据结构来维护元素的顺序。当你需要找到数组或数据流中的前 K 个最小或最大的元素时,可以使用小顶堆(PriorityQueue)来解决。会根据元素的优先级将元素放置在正确的位置,并在需要时进行上述索引计算以保持堆的结构。它利用了小顶堆的特性,每次将元素加入堆中,当堆的大小超过 K 时,弹出堆顶元素,最后将堆中的元素放入结果数组中。中,这个二叉树通常是以数组的形式进行存储,数组的第一个元素(索引为 0)是堆顶元素。当添加或删除元素时,会调整堆的结构,将最小(或最大)的元素放置在堆顶。原创 2023-12-14 20:30:00 · 390 阅读 · 0 评论 -
工作记录-------实现实时排行榜的各种方法---12.14
比如 1 亿个数据里,一半是 0,一半是 1,那么取前 10 名时,可以直接淘汰掉另一半为 0 的数据。采用 分治 的方式 并行计算 每个表的前 10 名(map),都计算好后,再汇总到一起计算最终的前 10 名(reduce)用户表存储了用户信息,以及用户的总积分(实时更新),也就是说总积分榜需要的数据可以直接从这里取到,不需要再去计算。把数据分为多个小组,小组内先分别选出前 N 名小组长,最后再让这些小组长同台竞技,选出最终的前 N 名。由于我们的数据库来记录积分,所以当用户量级很大时,首先要。原创 2023-12-14 14:29:46 · 1041 阅读 · 0 评论 -
工作记录----工作中各个方法处理检查型异常的常见处理方案----小白也能看懂--12.13
t原创 2023-12-13 21:00:00 · 412 阅读 · 0 评论 -
工作记录----Lambda表达式和流式操作----小白也能看懂--写代码如何更简洁
流式操作是对集合数据进行操作的一种新方式,它提供了一种更高效、更简洁的方式来处理集合数据。这段代码的效果是将原始列表中的元素转换为大写,并按照字典顺序排序,最后将排序后的结果收集到一个新的列表中。匿名函数是指没有名称的函数,允许开发者在需要函数的地方直接声明函数体,而无需为其分配一个显式的名称。这段代码展示了Java中流式操作(Stream API)的使用,它是对集合数据进行处理的便捷方式。操作用于遍历流中的每个元素,并对每个元素执行指定的操作。这段代码的效果是过滤出长度大于5的元素并将其打印出来。原创 2023-12-13 20:00:00 · 367 阅读 · 0 评论 -
工作记录----自己写的接口供外部调用前如何自测?---特别详细的步骤---0基础教学--嘻嘻
这里的 全限定接口名 是你要调用的 Dubbo 接口的完整类名,方法名 是接口中定义的方法名,参数类型 和 参数1、参数2 是对应的方法参数和参数类型。这里的 example.com 是你要连接的远程主机名或 IP 地址,23 是 Telnet 默认端口号,可以根据需要更改为你所连接的服务的端口号。3、启用 Telnet 客户端:在弹出的窗口中,找到并勾选 “Telnet 客户端”,然后点击确定。输入 Dubbo 命令:一旦连接成功,你可以输入 Dubbo 的命令来测试 Dubbo 服务。原创 2023-12-12 19:00:00 · 847 阅读 · 0 评论 -
工作记录----常用注解-----12.11
它可以帮助在类中自动生成一个名为 log 的日志对象,使得在类中可以直接使用这个日志对象进行日志记录具体来说,当你在类上添加 @Slf4j 注解后,在该类中就可以直接使用 log 对象来记录日志,无需手动创建和初始化日志对象,简化了日志的使用。例如:@Slf4j 注解简化了日志对象的创建和使用,它会自动为你生成一个 private static final Logger log = LoggerFactory.getLogger(MyClass.class); 这样的日志对象,允许你在类中直接使用 log原创 2023-12-11 22:00:00 · 919 阅读 · 0 评论 -
工作记录---为什么双11当天不能申请退款?(有趣~)
所以,一旦有大促的时候,需要有限保证主要功能的可用,至于那些次要的功能就可以被降级掉,即不显示某些模块,或者返回一些默认内容。Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。所以,可以针对这个查询库存的接口做统一的降级。还有一种情况,可能也会人工介入,那就是在大促之前,预估到流量会十分巨大,提早的识别出风险,为了节省资源保证主流程的可用,开发人员可以手动将某个功能降级掉。原创 2023-11-21 06:00:00 · 495 阅读 · 0 评论 -
工作记录---淘宝双11,亿级流量高并发是怎么抗住?(站在巨人的肩膀上学习,超开心~)--------脚踏实地,持续学习(看完这一篇获益匪浅)
系统中的多个模块在不同服务器上部署,即可称为分布式系统。如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。如Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。原创 2023-11-20 19:27:18 · 528 阅读 · 0 评论 -
工作记录-------java文件的JVM之旅(学习篇)---好理解
在解析阶段,将类或接口中的符号引用转化为直接引用的过程。如果该类实现了接口,也会对这个接口进行初始化操作,接口的初始化过程和类一样,都会进行静态变量显式赋值及静态代码块执行,同时还会检查接口中的所有静态方法。如果类定义了多个静态变量,JVM会按照代码中声明的顺序进行初始化,并且若发现此过程需要访问到其他未初始化的类,JVM会先完成这些类的初始化。自定义类加载器(Custom ClassLoader):继承自 ClassLoader 类,实现自己的类加载器,主要用于加载一些自定义的类或者修改某些类的字节码。原创 2023-11-15 23:30:00 · 465 阅读 · 0 评论 -
工作记录-------双 11场景下库存更新 SQL 优化
如果有库存,我们就创建一个订单,商品库存减去 1(为了方便分析,我们只讨论这种比较简单的情况)。首先,我们要知道上面的每一条数据库操作语句,包括最后的 commit 或者 rollback 都要由业务服务向数据库发送网络请求,并且要等待数据库返回语句执行结果(同步)当我们在编写一个事务的时候,加行锁的操作应在不影响业务的情况下,尽可能地靠近 commit 语句,这样单行记录的行锁时间才会更短,TPS 会更高。好的,基于最开始的约定,代码的注释,以及基础知识,我们可以来计算了。原创 2023-11-14 22:45:00 · 518 阅读 · 0 评论 -
工作记录-------MySql主从同步
通过上述内容,我们了解了Mysql数据库的主从同步,如果你的目标仅是数据库的高并发,那么可以先从 SQL 优化,索引以及 Redis 缓存数据等这些方面来考虑优化,然后再考虑是否采用主从架构的方式。在主从架构的配置中,如果想要采取读写分离的策略,我们可以自己编写程序,也可以通过第三方的中间件来实现。自己编写程序的好处就在于比较自主,我们可以自己判断哪些查询在从库上来执行,针对实时性要求高的需求,我们还可以考虑哪些查询可以在主库上执行。同时程序直接连接数据库,减少了中间件层,可以减少一些性能损耗。原创 2023-11-14 21:45:00 · 106 阅读 · 0 评论 -
工作记录--(关于接口设计)---每天学习多一点
需要注意的是,如果日志中涉及比较大的JSON富文本,请使用log.isInfoEnable(),在高并发和复杂log信息拼接的情况下,使用这种标准的方法输出log能够省去不小的系统开销。设置合理的超时时间,也是在保护你的接口。比如一个请求率先访问你的上游,而你的上游设置的超时时间是500ms,上游调用你的接口,但你设置的超时是2000ms,这其实就是无效超时时间。举个简单的例子,对于一些运营操作的接口,往往需要记录对应操作的操作日志,记录下是谁在什么时间操作了什么对象,便于追踪“事发现场”。原创 2023-11-14 20:00:00 · 263 阅读 · 0 评论 -
工作记录--(用HTTPS,为啥能被查出浏览记录?如何解决?)---每天学习多一点
这是因为,当多个网站托管在一台服务器上并共享一个IP地址,且每个网站都有自己的SSL证书时,那就没法通过IP地址判断客户端是想和哪个网站建立TLS连接,此时就需要域名信息辅助判断。打个比方,快递员送货上门时,如果快递单只有收货的小区地址(IP地址),没有具体的门牌号(域名),那就没法将快递送到正确的客户手上(与正确的网站建立TLS连接)。TLS是一种安全协议。虽然HTTPS连接本身是加密的,但在建立HTTPS的过程中(TLS握手),是有数据明文传输的,其中SNI中包含了服务器的域名信息。原创 2023-11-13 22:15:00 · 573 阅读 · 0 评论 -
工作日常的点点滴滴记录(代码冲突问题)------慢慢积累,厚积薄发(要学的东西还好多,加油!))(知识和实践的结合)
远程仓库的某个文件内容发生了修改,而本地没有及时进行pull拉取,那么就会导致本地的分支落后。当修改完本地代码再push到远程的时候,就会产生代码冲突。每次使用git,先将远程仓库的代码pull到本地,再在本地进行修改,修改完成后再去push。d) 修改完毕后,点击Apply,出现 push rejected,点击push。本次push成功,远程仓库代码成功修改。a) Commit后push,出现push rejected的提示。点击X或者>>可以将本地代码或者远程代码合并或更改到中间面板。原创 2023-10-30 16:50:38 · 132 阅读 · 0 评论 -
工作日常的点点滴滴记录(threadlocal知识概括和相关应用场景)------慢慢积累,厚积薄发(要学的东西还好多,加油!))(知识和实践的结合)
每个线程获取到的信息可能都是不一样的,前面执行的方法保存了信息后,后续方法可以通过ThreadLocal 直接获取到,避免了传参,类似于全局变量的概念。比如说我们是一个用户系统,那么当一个请求进来的时候,一个线程会负责执行这个请求,然后这个请求就会依次调用service-1()、service-2()、service-3()、service-4(),这4个方法可能是分布在不同的类中的。这么多对象的创建是有开销的,并且在使用完之后的销毁同样是有开销的,同时存在在内存中也是一种内存的浪费。原创 2023-10-26 16:57:41 · 76 阅读 · 0 评论 -
工作日常的点点滴滴记录(Java基础知识之Java锁)------好记性不如烂笔头--慢慢积累,厚积薄发
Java锁是一种多线程同步的机制,用于控制多个线程对共享资源的并发访问。Java锁的作用是保证线程间的互斥性,即同一时刻只有一个线程可以访问共享资源,从而避免多线程间的竞态条件和其他并发问题。Java锁可以分为两大类:隐式锁(Implicit Locks)和显式锁(Explicit Locks)。隐式锁,称为内置锁或synchronized锁;通过在方法或代码块中使用synchronized关键字,Java编译器和JVM会自动在对象或类上添加锁,以实现对共享资源的同步访问。原创 2023-10-23 22:35:20 · 176 阅读 · 0 评论 -
工作日常的点点滴滴记录(Java应用内存泄漏相关开发规范+JVM参数调优)------好记性不如烂笔头--慢慢积累,厚积薄发
行动+执行力原创 2023-10-23 12:49:30 · 107 阅读 · 0 评论 -
工作日常的点点滴滴记录(实习过程中遇到的常用注解@RequestMapping)------慢慢积累,厚积薄发(要学的东西还好多,加油!))(知识和实践的结合)
注解原创 2023-10-30 16:52:11 · 59 阅读 · 0 评论 -
工作日常的点点滴滴记录(Spring Boot的核心注解)------慢慢积累,厚积薄发(要学的东西还好多,加油!))(知识和实践的结合)
用来代替配置文件中的component-scan配置,开启组件扫描,自动扫描包路径下的@Component注解进行注册bean实例放到context(容器)中。它其实是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解的组合。**@SpringBootApplication:**这是Spring Boot最核心的注解,用于开启Spring Boot的各项能力。这个注解用来定义条件,当满足某个条件时,才可开启配置。原创 2023-10-30 19:05:06 · 601 阅读 · 0 评论 -
工作记录--(海量数据如何判重?)--每天都要保持学习状态和专注的状态啊!!!
沉淀,专注,记录时间原创 2023-11-03 19:00:00 · 275 阅读 · 0 评论 -
工作记录---(Explain执行计划详解--基于HS)--每天都要保持学习状态和专注的状态啊!!!
Using where Using index:查询的列被索引覆盖,并且where筛选条件是索引列之一但不是索引的前导列,意味着无法直接通过索引查找来查询到符合条件的数据,Using index代表select用到了覆盖索引。NULL:查询的列未被索引覆盖,并且where筛选条件是索引的前导列,意味着用到了索引,但是部分字段未被索引覆盖,必须通过“回表”来实现,不是纯粹地用到了索引,也不是完全没用到索引。这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名。原创 2023-11-07 11:52:13 · 69 阅读 · 0 评论