自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AI 论文工具分享

生成大纲/生成论文,每篇49元。

2024-02-26 11:19:58 354

原创 网络安全相关

1.3 我们发现仍然不能解决这个问题,可能怀疑攻击者掌握了上w肉机,这种方案可能行不通了,可能是被Ddos,可以想到的做一个前置校验,在用户登陆时候,做一个真人验证,但是短时间是行不通了。方案2 ,购买阿里云抗D服务,太贵了5k一个月,方案3:聘请一个安全专家,搭建CDN服务器,将流量引入CDN,在CDN层面去过滤这些流量。由于项目初期,没有对短信进行校验,导致大家可以一直发短信,(增加1分钟内只能发一次,一天只能发10次)(3)利用代码漏洞,跳过时间检查,提前去下单。很多用户反应,网络比较卡,进不去。

2023-08-14 14:36:59 61

原创 从0到1的NFT项目及落地

工作安排:每周项目进行一次迭代,大部分协作时间都是在晚上,与客户以及老板开会讨论即将要做的内容,将内容按照轻重缓解分给不同的人,每晚进行工作汇报。基于NFT数字藏品交易系统一个面向C端的H5的小程序,即用户可以在该交易系统中抢购官方发布的数字藏品,以及在二级市场中出售和购买相关的数字藏品。本人作为项目技术负责人,项目的技术架构设计,后端架构设计,数据库表设计,以及产品功能设计。项目成员:技术负责人,1个前端,1个区块链工程师,2-3个后端开发。一 项目介绍(2022年,6月中到2022年11月)

2023-08-09 14:10:33 104

原创 申请注册一个网站

(2)后端springboot。(1)前端 vue uni等。(2)https证书的申请。(4)支付宝地址和私钥申请。(5)微信支付私钥地址申请。(3)服务器ECS购买。(1)网站域名的申请。(9)第三方支付申请。(1)nginx安装。(2)mysql安装。(4)redis安装。三 代码基础框架搭建。

2023-06-13 17:41:41 80 1

原创 java 中继承案例

通过几个例子来描述下java中的继承:案例1:public class A { private String name="A"; public String getName(){ return name; }}class B extends A{private String name="B"; public String getName(){ return name; } public static ...

2022-05-04 10:37:25 1087

原创 JAVA中的继承

通过几个例子来描述下java中的继承:案例1:public class A { private String name="A"; public String getName(){ return name; }}class B extends A{private String name="B"; public String getName(){ return name; } public static...

2022-05-04 10:07:54 1108

原创 mybatis-plus支持联合主键

背景:由于在项目中是需要使用联合主键,但是mp本身对联合主键支持非常不友好,现开发一个联合主键(1)注解定义在需要使用的实体上加上@MutiId,其中ids表示联合主键的数组@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})public @interface MultiId { String[] ids() default {};}(2)查询的

2022-03-29 10:36:03 7762 2

原创 mybatis-plus支持批量插入批量更新

一 背景:由于项目引入mybatis-plus,但是mp是不支持数据的批量写入与批量更新的,故针对批量接口,做统一的持久层封装二 mybatis-plus的扩展点:sql注入器这是mp自身封装的,这也是mp的一个特点public class DefaultSqlInjector extends AbstractSqlInjector { @Override public List<AbstractMethod> getMethodList(Class<?

2022-03-29 10:24:44 3705 2

原创 PaaS云平台

一 基本架构云计算基础:二IaaS基础设施:OS部署管理 基础设施存储 基础设施网络 硬件管理CaaS:容器即服务:

2022-02-14 15:31:58 211

原创 java项目堆内存的分配

2022-02-10 14:13:32 344

原创 缓存数据库一致性

2022-02-09 08:58:39 357

原创 TransmittableThreadLocal错误排查

一 问题背景 数据写入丢失二 疑点以及日志分析(1)关键日志分析:收到了相关的kafka消息,并且打印了日志,针对该kafka消息,处理并提交了。针对链路的处理,是通过handler链处理的,查看nodeStore的链,发现写入只用了0ms,这个可能性不大,说明可能没有执行数据库操作。21/10/1817:46:40,563[DEBUG][bgp-ls-node-process-batch-commit]-Handlerlistwithhandler:NodeSto...

2022-02-07 10:37:44 1024

原创 基于生产者消费者的BatchProcessor

一 背景主要用于批量处理:二 基本架构三 代码package com.xuyu.batch;import lombok.extern.slf4j.Slf4j;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;/** * 数据库批量处理器.

2022-02-07 09:51:00 346

原创 数据库批量多表更新优化

在项目中遇到两表关联更新的问题,将A表的a字段更新到B表的b字段,A表和B表都有相同的元素列。遇到这个题目想的最简单的方式就是 updateA set a=B.b from where A.id=B.id。下面详细介绍本次优化过程一 update set from 语句updateopenans_ncc_topo_default_ltpsetrelated_ltp_id=openans_ncc_topo_default_layer.underlayfromopenans_n...

2022-02-05 19:04:54 885

原创 mysql高级

文章转载自:https://www.cnblogs.com/alimayun/p/11073663.html

2022-02-05 18:58:45 48

原创 PG与Mysql

2022-01-28 15:46:53 557

原创 dw整合mybatis-plus

一 背景介绍 本文主要是将dw-框架引入mybatis-plus。二 依赖引入 这里采用Druid数据库连接池(可更换)<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.3.2</version></dependency&g...

2022-01-21 17:36:31 502

原创 程序员日常-------无法创建线程故障排查

背景: 最近在工作中查了一个问题,消费者队列里面的消息无法没有成功消费。问题描述: 这里生产者会将消息放入队列中,由消费者消费消息。startLoop是一个消费者。在生产环境中发现依然有生产者往队列里面发送消息,但是就是没有消费。 private AtomicBoolean isLooping = new AtomicBoolean(false); private BlockingQueue<T> queue = new LinkedBlo...

2021-12-04 09:44:18 767

原创 缓存的设计

背景:设计一个缓存,如果在N秒内访问了M次,则为热点数据,针对热点数据,直接去访问缓存,否则去访问数据库。设计:利用一个Map<String,Node>hotMap去维护热点的key。其中Node的设计为:其中arr为当前缓存的一个数组,用于记录访问次数preQuery 记录上一次访问时间preIndex记录上一次的index。 static class Node { int[] a...

2021-10-28 09:33:09 98

原创 PG分区表

一 建立附表,即对外的逻辑表PG传统的分区表是通过继承的方式实现的,即首先定义一个父表如下:CREATETABLEpublic.openans_ncc_topo_default_risk_base_link( link_idvarchar(512)NOTNULL, status_indexint4NOTNULL, down_timevarchar(256)NULL, up_timevarchar(256)NULL, cur_timetimestampNOT...

2021-07-08 11:16:41 716

原创 用于n个字符串的最长公共子字符串的Java实现

public static String identifyCommonSubStrOfNStr(String [] strArr){ String commonStr=""; String smallStr =""; //identify smallest String for (String s :strArr) { if(smallStr.length()< s.length()){ smal.

2021-05-08 15:58:17 168

原创 同一个类中,方法A,方法B是一组 ,方法C和方法D为一组,组内方法不互斥,组间方法互斥

public void fa() { } public void fb() { } public void fc() { } public void fd() { }如上图所示,一个类里面有4个方法,方法fa,fb,fc,fd fa与fb为同一组,fa ,fb方法不互斥,方法fa,与fc互斥。这个可以想到的方法有两组读写锁,两组信号量。方法一:感谢南航苏春阳提供思路:p...

2021-04-15 09:52:59 122

原创 MJ

1 spring事务以及传播,注解定义,同一个方法内事务2 计算机网络7层模型应用层 访问网络的服务接口 例如FTTP FTP表示层 数据格式转化以及表示,数据加密解密 ,表示成人能够识别的会话层 建立连接并访问会话管理 登陆验证等传输层 TCP UDP网络层 IP地址的封装和解析数据链路层 mac地址的解析和封装物理层 定义物理设备标准 比特流TCP面向连接的稳定的UDP面向非连接的不稳定的TCP三次握手和四次挥手三次握手:...

2021-04-08 21:29:36 94

原创 记录

1 springMVC 前端输入url如何实现的 前端发送请求,先到达DispatcherSelvelt ,通过URL解析,去HandlMaping中找对应的handler 找到handler后,进行处理,得到处理的结果,将结果返回给到前端控制器,然后再进行模型的渲染,返回给前端2@Control注解是单例还是多例 单例的,但是会线程不安全,所有不要在有成员变量,有成员变量的话,加@prototype注解,变成原型的。3 HTTP的特点 是有序的嘛简单快速 灵活 无...

2021-04-08 20:57:02 37

原创 Redis入门

一 启动edis-cli -h 127.0.0.1 -p 6379 -a xxredis-server /usr/local/redis/etc/redis.conf二 停止pkill redis

2021-03-29 21:15:31 31

原创 java中的锁

2021-03-22 10:25:21 22

原创 synchronized锁升级的过程

(1)synchronized锁的升级首先Object objetc= new Obeject() 此时objetc中的对象头中记录的是无所状态当加了偏向锁后,当前线程会把线程ID存入对象头中,直到有线程来竞争这把锁,不然不会释放的当未加偏向锁,有线程竞争,就会直接升级为轻量级锁偏向锁->轻量级锁:多个线程加锁,CAS 轻度竞争偏向锁->重量级锁:调用wait方法轻量级锁->重量级锁:CAS自旋不成功,且锁的竞争严重。...

2021-03-21 22:04:12 93

原创 性能优化实战

项目背景:在SDN控制器中,本团队作为的数据的中心,负责将物理层和IP层得到数据进行汇总,建立数据之间的联系,然后将数据持久化。数据之间的关联关系建立以及数据合法性校验和快速入库成为了主要任务。当数据量特别大情况下,控制器也需要能够快速响应业务。对于本次优化主要针对系统在首次部署的时候,千万级数据的情况下,部署快,消耗内存少作为主要目标。前期准备(1)做性能优化首先需要工具,目前主流的阿里开源的arthars ,以及jdk自带的命令,还有收费版的jprofile,不得不说,jprofile是

2021-03-19 22:43:03 127 1

原创 数据库性能优化

在大数据量场景下,数据的入库性能成为了重中之重,记录下数据库性能优化的点1 索引层面索引是为了方便查询的,但是索引的建立需要额外的性能开销。在测试中发现,500w数据场景下,建立一个单列索引需要3min左右。如果还有其他索引可能带来的影响更大。索引的建立必须是在业务场景下使用频繁,能够带来较大的查询收益的。(1)首先需要整理业务中的查询逻辑,各场景下的查询条件,得到最为频繁的查询条件。(2)针对查询条件建立索引,索引最好能够复用。且满足常见索引的建立原则。(3)去除没有使用的索引

2021-03-08 10:34:45 94 1

原创 Mybatis 中动态SQL

一 常用用法和标签1 where 和if标签的使用使用if 和where标签 通过OGNL表达式判断内容是否为空 如果表达式为true 则框架会自动拼接if语句中的内容,否则则会忽略 <select id="getUserByEntity" parameterType="int" resultType="com.mybatis.pojo.User"> select <include refid="userAllField"></

2021-02-27 21:55:16 66

原创 Reactor线程模型

常用的Reactor线程模型有三种NIO主要职责: 作为NIO服务端,接受客户端TCP连接 作为NIO客户端,向服务端发起TCP连接 读取请求和应答消息 发送请求和应答消息(1)Reactor单线程模型 适用于并发业务少场景Acceptor :负责接受客户端TCP连接,建链Dispatcher:将对应的ByteBuffer转发给指定的handler进行编解码 (2)Reactor...

2021-02-25 14:10:05 71

原创 Redis做分布式锁

解决分布式锁大概的方案有 mysql (主键) redis zk ,本文主要介绍Redis做分布式锁各种问题以及解决办法一 场景1 redis如何使用setnx key value业务处理delete key二 场景2 如果业务处理过程中jvm挂了,可以通过设置过期时间setnx key values expire key 10三 如果10s中没有完咋办jvm另启一个线程,程序未完成,继续加时四 删除了别人的锁服务A 拿到了锁,设置过期时间10s,...

2021-02-24 23:15:20 56

原创 java对象布局

java 中对象布局引入依赖,可以查看对象布局 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version> </dependency>一 Object o..

2021-02-24 20:58:03 40

原创 基于Netty手写Tomcat

Tomcat 底层是一个Servlet容器,管理了很多的servlet分为以下内容1 对请求和响应进行封装2 提供一个NIOsocket3 进行请求的转发一 封装请求和响应package com.tomcat.http;import io.netty.channel.ChannelHandlerContext;import io.netty.handler.codec.http.HttpRequest;import io.netty.handler.codec.http.Q

2021-02-24 20:48:17 68

原创 NIO三件套

一 Buffer1 基本操作 allocate()创建并分配大小 put()放数据 get() 取数据import java.nio.IntBuffer;public class IntBufferDemo { public static void main(String[] args) { IntBuffer intBuffer = IntBuffer.allocate(8); ...

2021-02-23 10:27:52 53

原创 springcloud基本概念

2021-01-30 15:39:00 35

原创 状态模式

一 状态模式下有几个重要的内容(1)状态 表示当前系统处于那种状态下(2)事件 有哪些事件会导致状态的转变(3)状态转变 当前状态下,发生了某个事件 这时候状态会转变成什么样二 整体设计(1)对于状态,首先定义上层状态State接口,且有一个方法process然后定义一个具体的状态,针对每一个状态,会实现process,即该状态下会做什么动作。这里定义了四个状态AgingState:老化状态----老化数据public class AgingState imple...

2021-01-27 18:37:00 125

原创 阻塞队列BlockingQueue

一 上层接口BlockingQueueadd(e):添加一个元素,队列满了,则抛出异常element :返回队头元素,队列空了,抛异常offer 添加一个元素并返回true ,队列满了返回falsepeek 返回对头元素 ,空---返回nullpoll 移除并返回对头元素 空---返回nullput 添加一个元素 如果队列满则阻塞remove 移除并返回对头元素 空------抛异常take 移除并返回对头元素 空----阻塞二 ArrayBlocki...

2021-01-22 10:07:42 32

原创 Mybatis缓存

mybatis一 mybatis结构二 一级缓存命中运行时参数(1)sql和参数(2)statementid (3) 同一个会话(4)返回行范围必须相同操作跟配置(1)未手动清空 selSession.clearCache(2)未调用flushCache=ture(3)未执行update(4)缓存作用域不是statement缓存localCacheScope=statement二级缓存----应用级缓存缓存命中中(1)提交会话(2)slq相同,参数...

2021-01-13 20:57:44 39

原创 Mycat实现单库分表

一 mycat的配置(1)如下所示:重点关注table name 这一行:primaryKey 指定主键subTables;指定子表rule:指定分片算法<schema name="xuyu" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1"> <!-- auto sharding by id (long) --> <!--splitTableNames 启用<table

2021-01-13 15:53:56 350

空空如也

空空如也

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

TA关注的人

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