自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Silentic

岂能尽如人意,但求无愧我心

  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 分布式技术

分布式锁单机多线程可以通过Java内置的锁来保证线程安全,但无法解决多机器的并发问题。数据库分布式锁维护一张具有方法名字段唯一索引的表,想要执行某方法时,需要向表中插入记录,成功则获取锁,方法执行完毕后删除记录。问题:1.锁不可重入。需要记录获取锁的线程信息,允许同一线程重复获取锁2.锁失效。插入成功后数据库宕机,记录没有删除。可以设置一个失效时间,定期删除过期记录。Redis分布式锁获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的

2022-01-14 18:41:21 391

原创 ZooKeeper

介绍ZooKeeper是一个分布式协调服务,其设计目标是将复杂的分布式一致性服务封装成高效的原语集,以简单的接口提供给用户使用。应用场景命名服务:通过指定的名字获取资源或访服务的地址。如RPC框架的服务地址列表配置管理:分布式部署的配置文件集群管理:通过实时监控znode节点变化来管理集群机器数据模型采用多叉树作为数据结构,每个节点都可以存储数据,并拥有唯一的路径标识。znodeZK的最小数据单元,由节点状态信息stat和节点存放的数据data两部分组成,可分为四类:· 持久(PE

2022-01-13 01:30:16 568

原创 Spring

IoC控制反转是一种设计思想,将原本在程序中创建对象的控制权,交由IoC容器来管理。目的是简化开发,从复杂的依赖关系中解放。Spring通过依赖注入的方式,由IoC容器动态地将对象注入到需要它的组件中。AOP面向切面编程能够将那些与业务无关,但被多个业务模块共同调用的逻辑(事务处理、日志管理、权限控制等)封装起来,从而减少重复代码,降低模块间的耦合度。Spring AOP基于动态代理实现。...

2022-01-09 00:57:12 101

原创 Redis

简介Redis是一个使用C语言开发的数据库,数据存在内存中,读写非常快,被广泛应用于缓存、分布式锁甚至消息队列。数据结构string既可保存文本,也可保存二进制,不会造成缓冲区溢出。适合需要计数的场景,如访问次数、点赞量等。list双向链表。适合消息队列场景。hash类似JDK1.8前的HashMap,维护一个string类型的field和value的映射表。特别适合存储对象数据set类似HashSet,无序集合。适合需要存储不能重复的数据以及需要获取交集、并集、差集的场景(如

2022-01-06 01:14:40 481

原创 MySQL

存储引擎MySQL5.5引入InnoDB作为默认引擎,支持事务和行级锁。使用redo log保证事务的持久性使用undo log保证事务的原子性通过锁机制、MVCC保证事务的隔离性保证了事务的持久性、原子性、隔离性后,一致性才能得到保证。并发事务的问题脏读:一个事务正在访问数据并进行修改,而这个修改还没提交,但另一个事务访问到了修改后的数据(dirty data)。丢失修改:两个事务同时修改一个数据,前者的修改内容被丢失。不可重复读:在一个事务内多次访问同一数据,由于其他事务的修改,

2022-01-05 00:58:44 457

原创 Java容器

Java集合框架Java集合主要由两大接口派生而来:一是collection,用于存放单一元素;二是map,用于存放键值对。ListArrayList基于动态数组实现,支持随机访问。扩容机制// minCapacity为最小需要容量private void grow(int minCapacity) { // oldCapacity为当前容量,初始默认容量为10 int oldCapacity = elementData.length; // 新容量更新为旧容量的1.5倍, int

2022-01-02 17:41:53 420

原创 Java并发基础

进程与线程的定义进程是操作系统进行资源分配的最小单位,线程是进行运算调度的最小单位。一个进程在执行过程中可产生多个线程,这些线程共享进程的堆和方法区资源。Java创建线程的方式继承Thread类实现Runnable接口实现Callable接口(线程返回值通过FutureTask封装)线程的生命周期wait()和sleep()的区别两者都暂停了线程的执行,但wait()释放了锁,而sleep()没有。wait()的线程不会主动苏醒,需要其他线程调用同一对象的notify()或者not

2021-12-30 23:59:33 221

原创 Java类的加载

类的生命周期加载通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口其他步骤暂略类加载器BootstrapClassLoader(启动类加载器) :最顶层的加载类,由 C++实现,负责加载 %JAVA_HOME%/lib 目录下的 jar 包和类或者被 -Xbootclasspath参数指定的路径中的所有类。ExtensionClassLoader(扩展类加载器) :主要

2021-12-29 23:31:48 321

原创 垃圾回收机制

堆内存的分配与回收由于目前收集器都采用分代算法,因此Java堆可以分为新生代和老年代。分代回收原理:对象首先被分配在新生代,经历过垃圾回收后若仍存活,则移到老年代。但这样老年代很快会被填满,导致触发Major GC,性能受影响。于是将新生代分为Eden区和Survivor区,Eden满时触发Minor GC,将存活的对线移至Survivor区。这样直到对象经历过一定次数的回收仍存活时,才将其移到老年代,这样就减少了Major GC(可视为Full GC)。那为什么要设置俩Survivor区?答案是

2021-12-29 22:52:35 350

原创 Java内存区域

运行时数据区域Java虚拟机在运行程序时将其管理的内存分为若干数据区域:程序计数器记录当前线程执行的字节码指令的地址。Java虚拟机栈调用方法时会创建一个栈帧存储局部变量表等信息。可以通过-Xss这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:该区域可能抛出以下异常:当线程请求的栈深度超过最大值,会抛出 StackOverflowError 异常;栈进行动态扩展时如果无法申请到足够内存,会抛出 OutOfMemoryError 异常。本地方法栈和虚拟机栈类似,但只为

2021-12-28 22:42:44 483

原创 Spring中的设计模式

工厂模式由工厂类根据传入的参数,动态决定应该创建哪一个产品类的对象,实现“创建与使用相分离”。简单工厂模式只有一个工厂类,使用静态方法来创建产品对象。单一工厂类负责所有产品的创建,职责过重,违背高聚合原则;增加新产品必须修改工厂方法逻辑,违背开闭原则Spring读取xml配置文件,将<bean>元素转化成BeanDefinition对象,通过BeanDefinitionRegistry将这些bean注入到BeanFactory中,保存在其ConcurrentHashMap里。这

2021-12-28 14:02:32 188

原创 Vue Axios 跨域 未携带cookie

通常的解决办法【前端】在axios请求的参数中,写入对象属性withCredentials:true(也可以全局配置Axios.defaults.withCredentials = true)【后端】响应头消息中的Access-Control-Allow-Origin不能设置为 ’ * ’ 号,需改成具体的地址。【后端】响应头消息中必须设置 Access-Control-Allow-Cr...

2019-08-16 13:57:40 1737

原创 团队项目选题-移动端模拟经营类游戏

团队项目选题模拟经营类(SIM)游戏:玩家模拟经营一家软件公司,平台初步定为Android。NABCDNeed 需求市场 iiMediaResearch数据显示,2016年中国手游用户规模达5.23亿人,市场规模783.2亿元。下面这张数据图来自TestBird发布的《2017上半年手游测试白皮书》。 可以看到,虽然目前市场上的主流手游是角色扮演、卡牌和动作格斗游戏,但策略经营类游戏也存

2017-10-10 14:28:08 1672

原创 结对项目-数独程序扩展

项目地址https://github.com/si1entic/Sudoku-2.git看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的。(5’)   在OO课程中,我们学习面向对象程序的需求分析和设计原则时,提到过5个经典的设计原则检查(SOLID)。其

2017-10-04 10:05:01 437

原创 数独 生成及求解

项目地址https://github.com/si1entic/sudoku需求分析生成终局 格式:sudoku.exe -c n 1)不重复 2)1<=n<=1000000,能处理非法参数 3)左上角数字固定为(4+4)% 9 + 1 = 9 4)n在1000以内时,要求程序在 60 s 内给出结果 5)输出生成的数独终盘至sudoku.txt求解数独 格式:sudoku.

2017-09-19 16:17:07 6409

原创 IntelliJ IDEA相关

打包成jar右键需要打包的项目 –> Open Module Settings (快捷键F4)Artifacts –> + –> JAR –> From modules with dependencies…选择主类,其他默认即可Build –> Build Artifacts… –> XXX.jar –> Build项目/out/artifacts/里即为打好的jar包 注意:项目所用资

2017-08-12 01:14:21 223

原创 Eclipse 配置

汉化在http://www.eclipse.org/babel/downloads.php里找到对应版本的语言包地址在Eclipse-Help-Install-work with里输入网址 http://download.eclipse.org/technology/babel/update-site/R0.14.1/neon 等待Pending完成后,选择simple Chinese即可。主题

2017-04-16 20:37:17 373 1

原创 读者-写者同步问题的写者优先实现

代码int Rcount=0; //“正在读”的进程数,初值是0。int Wcount=0; //“等待写”的进程数,初值是0。semaphore r=1; //信号量,用于Rcount的互斥。semaphore w=1; //信号量,用于Wcount的互斥。semaphore RWmutex =1; //信号量,用于读者写者互斥。semap

2017-04-13 14:26:27 3452

原创 JAVA 多线程 synchronized与ReentrantLock

采用生产者消费者模型来讲解import java.text.SimpleDateFormat; import java.util.Date;public class Producer extends Thread{ private Tray tray; public Producer(Tray tray){ this.tray=tray; }

2017-04-01 00:05:47 233

原创 页面置换策略:OPT、LRU、FIFO的JAVA代码

问题假设有10个页面,n个页框。页面的访问顺序为0, 9, 8, 4, 4, 3, 6, 5, 1, 5, 0, 2, 1, 1, 1, 1, 8, 8, 5, 3, 9, 8, 9, 9, 6, 1, 8, 4, 6, 4, 3, 7, 1, 3, 2, 9, 8, 6, 2, 9, 2, 7, 2, 7, 8, 4, 2, 3, 0, 1, 9, 4, 7, 1, 5, 9, 1, 7, 3,

2017-03-30 16:20:36 5697

Unix教学课件

Unix入门

2016-04-28

计算机学院计划

计算机学院计划

2016-04-28

空空如也

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

TA关注的人

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